SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
JavaScript: Subalgoritmos
Carlos Santos
LabMM 3 - NTC - DeCA - UA
Aula 10, 18-10-2013
Subalgoritmos
• Porque não devemos repetir o mesmo algoritmo/código em diferentes
locais do programa?
• quantidade de código escrito aumenta;
• alterações ao algoritmo implicam uma manutenção mais complexa.
• Porque é uma boa prática centralizar rotinas em subalgoritmos?
• cada algoritmo só é escrito uma vez;
• diminui a dimensão da aplicação;
• facilita operações de alteração e/ou manutenção do código;
• pode minimizar alguns erros de programação.
Subalgoritmos - O que são?
• Subalgoritmos são algoritmos dentro de algoritmos que compreendem um
conjunto de instruções dedicadas à resolução de uma tarefa ou problema.
• são identificados por um nome único que é definido na sua declaração;
• são invocados através do seu nome único;
• Conceptualmente, podem-se distinguir dois tipos de subalgoritmos:
• procedimentos: definem um conjunto de instruções a executar;
• funções: definem um conjunto de instruções a executar e retornam um
valor final.
Subalgoritmos: declaração em Javascript
identificador único
do subalgoritmo/
função

lista de parâmetros necessários
para a execução do subalgoritmo/
função (pode não existir)

function nomeFunção ([arg0, arg1,..., argN])
{
// código a executar
[return valor;]
}
valor a retornar pela
função (opcional)
Subalgoritmos: ordem de execução
Subalgoritmos: caixa preta!

invocação

subalgoritmo
retorno da
execução
Subalgoritmos e estratégias de programação
• Sem recurso a subalgoritmos – Programação convencional linear
• Cada processo é executado após o anterior;
• Não se distinguem alterações à linearidade do fluxo exceto pela utilização
de estruturas de decisão e repetição.

• Com recurso a subalgoritmos – Programação estruturada ou modular
• Programação por módulos baseada na divisão do problema em subproblemas;
• Cada módulo pensado para invocação a partir de múltiplos locais do
programa.
Tipos de subalgoritmos
• Intrínsecos
• nativos da própria linguagem de programação.
• Extrínsecos
• criados pelo programador

• NOTA: as frameworks disponibilizam bibliotecas de funções que permitem
ampliar as funções nativas de uma linguagem de programação.
• NOTA 2: apesar das diferenças conceptuais, a partir deste ponto irei utilizar apenas a designação “função” para
todos os tipos de subalgoritmos.
Funções: exemplo 1
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Funções: Exemplo 1</title>
<script language="javascript" type="application/javascript">
<!-function helloWorld() //Declaração da função
{
alert("Hello World!");
}
//-->
</script>
</head>
<body>
<script language="javascript" type="application/javascript">
helloWorld(); //Invocação da função
</script>
</body>
</html>
Como invocar
• Uma instrução direta no código
• helloWorld();

• Associar a um evento
• onload="iniciarQuadroJogo()”; //evento de sistema
• onclick="clicarObjeto()”; //eventos de ações do utilizador
• timerID = setInterval(“limparQuadroJogo()”, 2000); //eventos periódicos gerados
por timers
• clearInterval(timerID); //para terminar com um timer específico

• Callback
• uma função é invocada assincronamente quando uma determinada
operação terminar...
Parâmetros de uma função
• Parâmetros de entrada
• definem o “protocolo” de comunicação com uma função, ou seja,
explicitam os dados que a função precisa para que possa atingir o seu
objetivo;
• não há um limite formal ao número de parâmetros de uma função;
• na declaração são separados por vírgula;
• podem ser de qualquer tipo de dados.
• Parâmetro de saída
• é o valor devolvido pela função no final da sua execução;
• return valorDevolvido;
• após um return, o código seguinte da função não é executado!
Funções: exemplo 2
<head>
<script language="javascript" type="application/javascript">
function helloWorld() //Declaração da função
{
return true; //Qual o resultado da execução desta função?
alert("Hello World!");
}
</script>
</head>
<body>
<script language="javascript" type="application/javascript">
helloWorld();
</script>
</body>
Funções: exemplo 3
<head>
<script language="javascript" type="application/javascript">
function helloPeople(name) //Declaração da função
{
alert(name);
}
</script>
</head>
<body>
<script language="javascript" type="application/javascript">
helloPeople(“Manel”);
</script>
</body>
Parâmetros: como funcionam?
// Na invocação das funções temos valores,
// ou seja, a lista dos valores que queremos passar para a função
nomeFunção (valor0, valor1,..., valorN);

// Na declaração da função definimos os parâmetros.
// Na sua execução, os parâmetros são transformados em variáveis da função.
// Cada parâmetro é inicializado com o valor passado na respetiva posição.
function nomeFunção(param0, param1,..., paramN)
{
// código da função
// por exemplo, aqui, “param0” é uma variável cujo valor inicial é “valor0”
}
Funções: exemplo 3 - passagem de parâmetros
<head>
<script language="javascript" type="application/javascript">
function helloPeople(name) //Declaração da função
{
alert(name);
}
nesta invocação da função, ao parâmetro
</script>
“name” é atribuído o valor inicial “Manel”
</head>
<body>
<script language="javascript" type="application/javascript">
helloPeople(“Manel”);
</script>
</body>
Funções: exemplo 4
<head>
<script language="javascript" type="application/javascript">
function helloPeople(name) //Declaração da função
{
alert(name);
}
</script>
</head>
<body>
<script language="javascript" type="application/javascript">
helloPeople(“Manel”);
helloPeople(“Maria”);
</script>
</body>
Funções: exemplo 5 - qual o resultado?
<head>
<script language="javascript" type="application/javascript">
function incValores(x, y) //Declaração da função
{
x++;
y++;
alert(x + “ “ + y); // ??
}
</script>
</head>
<body>
<script language="javascript" type="application/javascript">
var a = 4;
var b = 8;
alert(a + “ “ + b); // ??
incValores(a, b);
alert(a + “ “ + b); // ??
</script>
</body>
Funções: exemplo 6 - qual o resultado?
<head>
<script language="javascript" type="application/javascript">
function incValores(a, b) //Declaração da função
{
a++;
b++;
alert(a + “ “ + b); // ??
}
</script>
</head>
<body>
<script language="javascript" type="application/javascript">
var a = 4;
var b = 8;
alert(a + “ “ + b); // ??
incValores(a, b);
alert(a + “ “ + b); // ??
</script>
</body>

Mais conteúdo relacionado

Mais procurados

Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
joaocarlobarros
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
Sérgio Souza Costa
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
Eduardo Mendes
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
Francisco Santos
 

Mais procurados (20)

Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Testes Unitarios Com PostgreSQL
Testes Unitarios Com PostgreSQLTestes Unitarios Com PostgreSQL
Testes Unitarios Com PostgreSQL
 
JSPs Introdução Parte 1
JSPs Introdução Parte 1JSPs Introdução Parte 1
JSPs Introdução Parte 1
 
DevTalk Zoox 04/2016
DevTalk Zoox 04/2016DevTalk Zoox 04/2016
DevTalk Zoox 04/2016
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Zephir
ZephirZephir
Zephir
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
 
Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Capitulo 5
Capitulo 5Capitulo 5
Capitulo 5
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
PHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e QuerystringPHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e Querystring
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Template method pattern
Template method patternTemplate method pattern
Template method pattern
 
Aula02 - JavaScript
Aula02 - JavaScriptAula02 - JavaScript
Aula02 - JavaScript
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 

Semelhante a T10_LM3: Subalgoritmos/funções (2013-2014)

LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
Carlos Santos
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
Carlos Santos
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
Carlos Santos
 

Semelhante a T10_LM3: Subalgoritmos/funções (2013-2014) (20)

LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1
 
Manual robotec
Manual robotecManual robotec
Manual robotec
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Java script
Java scriptJava script
Java script
 
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdfAula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
 
Aula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxAula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptx
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 
Palestra
PalestraPalestra
Palestra
 
Aula 4 | Funções
Aula 4 | Funções Aula 4 | Funções
Aula 4 | Funções
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
Aula2
Aula2Aula2
Aula2
 
Testando Rails apps com RSpec
Testando Rails apps com RSpecTestando Rails apps com RSpec
Testando Rails apps com RSpec
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Liferay Kaleo Workflow com atribuição por categorias
Liferay Kaleo Workflow com atribuição por categoriasLiferay Kaleo Workflow com atribuição por categorias
Liferay Kaleo Workflow com atribuição por categorias
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 

Mais de Carlos Santos

AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunos
Carlos Santos
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativo
Carlos Santos
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e Scoreoid
Carlos Santos
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificação
Carlos Santos
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
Carlos Santos
 

Mais de Carlos Santos (20)

Is AI the Spice of our future?
Is AI the Spice of our future?Is AI the Spice of our future?
Is AI the Spice of our future?
 
Mentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesMentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantes
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEdu
 
Tecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialTecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicial
 
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosAVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
 
AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunos
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
 
Tecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoTecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho prático
 
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
SAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentSAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning Environment
 
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusRepensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
 
A technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectA technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus project
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativo
 
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCARepensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e Scoreoid
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificação
 
T18_LM3: Ajax
T18_LM3: AjaxT18_LM3: Ajax
T18_LM3: Ajax
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
 

Último

8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 

Último (20)

Poesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPoesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Renascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDFRenascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDF
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdf
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 

T10_LM3: Subalgoritmos/funções (2013-2014)

  • 1. JavaScript: Subalgoritmos Carlos Santos LabMM 3 - NTC - DeCA - UA Aula 10, 18-10-2013
  • 2. Subalgoritmos • Porque não devemos repetir o mesmo algoritmo/código em diferentes locais do programa? • quantidade de código escrito aumenta; • alterações ao algoritmo implicam uma manutenção mais complexa. • Porque é uma boa prática centralizar rotinas em subalgoritmos? • cada algoritmo só é escrito uma vez; • diminui a dimensão da aplicação; • facilita operações de alteração e/ou manutenção do código; • pode minimizar alguns erros de programação.
  • 3. Subalgoritmos - O que são? • Subalgoritmos são algoritmos dentro de algoritmos que compreendem um conjunto de instruções dedicadas à resolução de uma tarefa ou problema. • são identificados por um nome único que é definido na sua declaração; • são invocados através do seu nome único; • Conceptualmente, podem-se distinguir dois tipos de subalgoritmos: • procedimentos: definem um conjunto de instruções a executar; • funções: definem um conjunto de instruções a executar e retornam um valor final.
  • 4. Subalgoritmos: declaração em Javascript identificador único do subalgoritmo/ função lista de parâmetros necessários para a execução do subalgoritmo/ função (pode não existir) function nomeFunção ([arg0, arg1,..., argN]) { // código a executar [return valor;] } valor a retornar pela função (opcional)
  • 7. Subalgoritmos e estratégias de programação • Sem recurso a subalgoritmos – Programação convencional linear • Cada processo é executado após o anterior; • Não se distinguem alterações à linearidade do fluxo exceto pela utilização de estruturas de decisão e repetição. • Com recurso a subalgoritmos – Programação estruturada ou modular • Programação por módulos baseada na divisão do problema em subproblemas; • Cada módulo pensado para invocação a partir de múltiplos locais do programa.
  • 8. Tipos de subalgoritmos • Intrínsecos • nativos da própria linguagem de programação. • Extrínsecos • criados pelo programador • NOTA: as frameworks disponibilizam bibliotecas de funções que permitem ampliar as funções nativas de uma linguagem de programação. • NOTA 2: apesar das diferenças conceptuais, a partir deste ponto irei utilizar apenas a designação “função” para todos os tipos de subalgoritmos.
  • 9. Funções: exemplo 1 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Funções: Exemplo 1</title> <script language="javascript" type="application/javascript"> <!-function helloWorld() //Declaração da função { alert("Hello World!"); } //--> </script> </head> <body> <script language="javascript" type="application/javascript"> helloWorld(); //Invocação da função </script> </body> </html>
  • 10. Como invocar • Uma instrução direta no código • helloWorld(); • Associar a um evento • onload="iniciarQuadroJogo()”; //evento de sistema • onclick="clicarObjeto()”; //eventos de ações do utilizador • timerID = setInterval(“limparQuadroJogo()”, 2000); //eventos periódicos gerados por timers • clearInterval(timerID); //para terminar com um timer específico • Callback • uma função é invocada assincronamente quando uma determinada operação terminar...
  • 11. Parâmetros de uma função • Parâmetros de entrada • definem o “protocolo” de comunicação com uma função, ou seja, explicitam os dados que a função precisa para que possa atingir o seu objetivo; • não há um limite formal ao número de parâmetros de uma função; • na declaração são separados por vírgula; • podem ser de qualquer tipo de dados. • Parâmetro de saída • é o valor devolvido pela função no final da sua execução; • return valorDevolvido; • após um return, o código seguinte da função não é executado!
  • 12. Funções: exemplo 2 <head> <script language="javascript" type="application/javascript"> function helloWorld() //Declaração da função { return true; //Qual o resultado da execução desta função? alert("Hello World!"); } </script> </head> <body> <script language="javascript" type="application/javascript"> helloWorld(); </script> </body>
  • 13. Funções: exemplo 3 <head> <script language="javascript" type="application/javascript"> function helloPeople(name) //Declaração da função { alert(name); } </script> </head> <body> <script language="javascript" type="application/javascript"> helloPeople(“Manel”); </script> </body>
  • 14. Parâmetros: como funcionam? // Na invocação das funções temos valores, // ou seja, a lista dos valores que queremos passar para a função nomeFunção (valor0, valor1,..., valorN); // Na declaração da função definimos os parâmetros. // Na sua execução, os parâmetros são transformados em variáveis da função. // Cada parâmetro é inicializado com o valor passado na respetiva posição. function nomeFunção(param0, param1,..., paramN) { // código da função // por exemplo, aqui, “param0” é uma variável cujo valor inicial é “valor0” }
  • 15. Funções: exemplo 3 - passagem de parâmetros <head> <script language="javascript" type="application/javascript"> function helloPeople(name) //Declaração da função { alert(name); } nesta invocação da função, ao parâmetro </script> “name” é atribuído o valor inicial “Manel” </head> <body> <script language="javascript" type="application/javascript"> helloPeople(“Manel”); </script> </body>
  • 16. Funções: exemplo 4 <head> <script language="javascript" type="application/javascript"> function helloPeople(name) //Declaração da função { alert(name); } </script> </head> <body> <script language="javascript" type="application/javascript"> helloPeople(“Manel”); helloPeople(“Maria”); </script> </body>
  • 17. Funções: exemplo 5 - qual o resultado? <head> <script language="javascript" type="application/javascript"> function incValores(x, y) //Declaração da função { x++; y++; alert(x + “ “ + y); // ?? } </script> </head> <body> <script language="javascript" type="application/javascript"> var a = 4; var b = 8; alert(a + “ “ + b); // ?? incValores(a, b); alert(a + “ “ + b); // ?? </script> </body>
  • 18. Funções: exemplo 6 - qual o resultado? <head> <script language="javascript" type="application/javascript"> function incValores(a, b) //Declaração da função { a++; b++; alert(a + “ “ + b); // ?? } </script> </head> <body> <script language="javascript" type="application/javascript"> var a = 4; var b = 8; alert(a + “ “ + b); // ?? incValores(a, b); alert(a + “ “ + b); // ?? </script> </body>