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

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 2011Luís Cobucci
 
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...Rogério Moraes de Carvalho
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Webdiogoa21
 
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 PHPUnitDiego Tremper
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-phpdiogoa21
 
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...Rogério Moraes de Carvalho
 
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.1Thyago Maia
 
Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogWaldir R. Pires Jr
 
Stored Procedures com PostgreSQL: porque usar.
Stored Procedures com PostgreSQL:  porque usar.Stored Procedures com PostgreSQL:  porque usar.
Stored Procedures com PostgreSQL: porque usar.Atmos Maciel
 
Funções em C - Prof. Yandre
Funções em C - Prof. YandreFunções em C - Prof. Yandre
Funções em C - Prof. Yandremarcosnem
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto 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 09Carlos Santos
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scopeCarlos Santos
 
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âmetrosAlex Camargo
 
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âmetrosAlex Camargo
 
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 VariaveisRodrigo Kiyoshi Saito
 
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...Os Fantasmas !
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04Carlos Santos
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Alex Guido
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1Marcio Pinto
 
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 JavascriptMichel Ribeiro
 
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 UVAThiago Cifani
 
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.pptxItamarGoncalves2
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no FrontendHenrique Gogó
 
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 categoriasFernando Fernández
 
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 FrameworkPablo Dall'Oglio
 

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
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.
 
Grails
GrailsGrails
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

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?Carlos Santos
 
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 estudantesCarlos Santos
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEduCarlos Santos
 
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 inicialCarlos Santos
 
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 alunosCarlos 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 alunosCarlos Santos
 
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...Carlos Santos
 
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áticoCarlos Santos
 
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)Carlos Santos
 
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 EnvironmentCarlos Santos
 
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 CampusCarlos Santos
 
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 projectCarlos Santos
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoCarlos Santos
 
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 DeCACarlos Santos
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidCarlos 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çãoCarlos 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

Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasCasa Ciências
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -Aline Santana
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...ArianeLima50
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 

Último (20)

Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de Partículas
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 

(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>