SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
JavaScript: Subalgoritmos
Carlos Santos
LabMM 3 - NTC - DeCA - UA
Aula 10, 19-10-2012
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     lista de parâmetros necessários
      do subalgoritmo/     para a execução do subalgoritmo/
           função                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 sub-
   problemas;

 • Cada módulo pensado para invocação a partir de múltiplos locais do
   programa.
Subalgoritmos: mais quais?

 A aplicação dos subalgoritmos é facilitada se adotada a estratégia Top-
 Down.

  • O programador deve:

     • Identificar as principais tarefas do programa;

     • Desenvolver o programa principal e os métodos de controlo das sub-
       rotinas;

     • Desenvolver os algoritmos para as sub-rotinas:

        • Identificar o nível de detalhe e divisão em sub-rotinas (ex. rotinas só para a entrada de dados, ...)

        • Validar a execução;

        • Otimizar para reutilização;


 • Qual a possibilidade de divisão de tarefas entre programadores?
Subalgoritmos: exemplo
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...
JavaScript: Subalgoritmos, parâmetros e
visibilidade
Carlos Santos
LabMM 3 - NTC - DeCA - UA
Aula 10, 19-10-2012
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 - 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>

Mais conteúdo relacionado

Mais procurados

Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E Log
Waldir R. Pires Jr
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
Augusto Pascutti
 

Mais procurados (20)

Aula 05 subprogramas
Aula 05   subprogramasAula 05   subprogramas
Aula 05 subprogramas
 
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
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
 
Zephir
ZephirZephir
Zephir
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
Aula10 -PHP
Aula10 -PHPAula10 -PHP
Aula10 -PHP
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-php
 
Java script aula 05 - funções
Java script   aula 05 - funçõesJava script   aula 05 - funções
Java script aula 05 - funções
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
Funções em C
Funções em CFunções em C
Funções em C
 
Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E Log
 
Stored Procedures com PostgreSQL: porque usar.
Stored Procedures com PostgreSQL:  porque usar.Stored Procedures com PostgreSQL:  porque usar.
Stored Procedures com PostgreSQL: porque usar.
 
Funções em C - Prof. Yandre
Funções em C - Prof. YandreFunções em C - Prof. Yandre
Funções em C - Prof. Yandre
 
PHP 7
PHP 7PHP 7
PHP 7
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
Java script - funções
Java script - funçõesJava script - funções
Java script - funções
 

Semelhante a (A10) LabMM3 - JavaScript - Subalgoritmos

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 (A10) LabMM3 - JavaScript - Subalgoritmos (20)

LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
 
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlgoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
 
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlgoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
 
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
 
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...
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 
Grails
GrailsGrails
Grails
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
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
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
 
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
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 

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

matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
NarlaAquino
 
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
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
LeloIurk1
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
LeloIurk1
 

Último (20)

matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
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
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
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
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 

(A10) LabMM3 - JavaScript - Subalgoritmos

  • 1. JavaScript: Subalgoritmos Carlos Santos LabMM 3 - NTC - DeCA - UA Aula 10, 19-10-2012
  • 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 lista de parâmetros necessários do subalgoritmo/ para a execução do subalgoritmo/ função 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)
  • 6. Subalgoritmos: caixa preta! invocação subalgoritmo retorno da execução
  • 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 sub- problemas; • Cada módulo pensado para invocação a partir de múltiplos locais do programa.
  • 8. Subalgoritmos: mais quais? A aplicação dos subalgoritmos é facilitada se adotada a estratégia Top- Down. • O programador deve: • Identificar as principais tarefas do programa; • Desenvolver o programa principal e os métodos de controlo das sub- rotinas; • Desenvolver os algoritmos para as sub-rotinas: • Identificar o nível de detalhe e divisão em sub-rotinas (ex. rotinas só para a entrada de dados, ...) • Validar a execução; • Otimizar para reutilização; • Qual a possibilidade de divisão de tarefas entre programadores?
  • 10. 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.
  • 11. 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>
  • 12. 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...
  • 13. JavaScript: Subalgoritmos, parâmetros e visibilidade Carlos Santos LabMM 3 - NTC - DeCA - UA Aula 10, 19-10-2012
  • 14. 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!
  • 15. 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>
  • 16. 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>
  • 17. 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” }
  • 18. 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>
  • 19. Funções: exemplo 4 - 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>