SlideShare uma empresa Scribd logo
1 de 23
Aula 2 Funções e listas em pseudocódigo Utilizações típicas de variáveis 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 1
Da aula anterior… Programação como arte de resolver problemas Algoritmo como sequência finita de instruções que resolvem um dado problema Descrição de algoritmos em pseudocódigo  Variáveis Instruções de selecção Iterações e ciclos Instruções de leitura/escrita 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 2 2
Função Conjunto de instruções com entradas bem definidas e que calcula um determinado valor (a sua saída) Definição Nome (reflecte o que a rotina calcula) Entradas (ou parâmetros) Instruções que executam o cálculo Instruções que reportam (ou devolvem) o resultado 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 3
Pseudocódigo: definição de função 	Função nome(parâmetro1, parâmetro2, …) variável1 ← 0. variável2 ← 0. 		… 		… Devolvervariável1. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 4 Entradas ou parâmetros. Corpo da função. Variáveis locais. Acessíveis apenas dentro da função. Reportar ou devolver o valor calculado. Introdução à Programação
Pseudocódigo: invocação de função variável1 ← 0. variável2 ← 1. … resultado ← nome(expressão1, expressão2, …). 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 5 Argumentos. Um argumento por cada parâmetro. Introdução à Programação
Função que calcula o mdc Função mdc(m, n) 	Se m < n, então  mdc← m, 	senão, mdc← n. 	Enquanto m ÷ mdc≠ 0 V n ÷ mdc ≠ 0, fazer mdc← mdc - 1. 	Devolver mdc. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 6 Entradas. Cálculo do mínimo.  Pode transformar-se em função. Passos: Saída. Algoritmo simplório.
Função que calcula o mdc Função mínimoDe(m, n) 	Se m < n, então   devolver m, 	senão,  devolver n. Função mdc(m, n) mdc← mínimoDe(m, n). 	Enquanto m ÷ mdc≠ 0 V n ÷ mdc ≠ 0, fazer mdc← mdc - 1. 	Devolver mdc. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 7
Função que calcula o mdc Função mdc(m, n) 	Enquanto m≠ 0, fazer temporária← m, m← n ÷ m,  n← temporária. 	Devolver n. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 8 Algoritmo de Euclides.
Função que calcula o mdc Função mdc(m, n) 	Se m= 0, fazer 		devolver n, 	senão, 		devolver mdc(n ÷ m, m). 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 9 Algoritmo de Euclides na sua forma recursiva.
Funções: boas práticas Funções devem limitar-se a cálculo em causa Funções não devem ter efeitos laterais Ler do teclado e escrever no ecrã são efeitos laterais Funções não devem ler do teclado ou escrever no ecrã! 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 10
Funções: vantagens 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 11 Modularização Código colocado em módulo com função bem definida Facilita reutilização: define-se uma vez, usa-se muitas Encapsulamento Implementação irrelevante para quem usa a função Reduz complexidade Favorece abstracção Aumenta clareza
Lista (ou vector) Variável que guarda sequência de itens Ordem dos itens relevante Identificação de valores usando índices Índice do primeiro valor: zero Exemplo 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 12 Lista lista. 8 4 2 0 1 1 0 7 0 1 2 3 4 5 6 7 lista Valores. Índices.
Pseudocódigo: listas lista(tamanho,valor) – Lista com tamanho itens, todos com valor valor. 	lista1 ← lista(5, 0) lista{valor1, valor2, …} – Lista com valores indicados entre chavetas 	lista2 ← lista{2, 0, 5, 8} 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 13 0 0 0 0 0 2 0 5 8 0 1 2 3 4 0 1 2 3 lista1 lista2
Pseudocódigo: listas tamanhoDe(lista)– devolve tamanho de lista lista[i] – Item de lista com índice i Exemplos: tamanhoDe(lista1) – Devolve 5 lista2[2] – Terceiro item de lista2, com valor 5 lista2[2] ← 7 – Atribui 7 ao terceiro item de lista2 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 14 0 0 0 0 0 2 0 5 8 0 1 2 3 4 0 1 2 3 lista1 lista2
Utilizações típicas de variáveis Iteração Contagem Acumulação Memória temporária Etc. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 15
Iteração Variável com valores sucessivos correspondentes a contagem, índices de lista, etc. Exemplo i ← 0. 	Enquanto i ≠ 10, fazer 		... i ← i + 1. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 16 Variável para iteração.
Contagem Variável guardando valor de contagem Exemplo 	Função ocorrências(lista, valor) ocorrências ← 0. i ← 0. 		Enquanto i ≠ tamanhoDe(lista), fazer 			se lista[i] = valor, então ocorrências ← ocorrências + 1; i ← i + 1. 		Devolver ocorrências. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 17 Variável para contagem.
Acumulação Variável guardando acumulação de operação Exemplo 	Função somaDe(lista) soma ← 0. i ← 0. 		Enquanto i ≠ tamanhoDe(lista), fazer soma ← soma + lista[i]; 			i ← i + 1. 		Devolver soma. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 18 Variável para acumulação da soma.
Acumulação: caso especial Variável guardando acumulação de operação Exemplo 	Função máximoDe(lista) máximo ← -∞. i ← 0. 		Enquanto i ≠ tamanhoDe(lista), fazer 			se máximo < lista[i], então máximo ← lista[i]; 			i ← i + 1. 		Devolver máximo. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 19 Variável para “acumulação” do máximo.
Memória temporária Variável para guardar valor temporariamente Exemplo 	Função mdc(m, n) 		Enquanto m≠ 0, fazer temporária← m, m← n ÷ m,  n← temporária. 		Devolver n. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 20 Variável para memória temporária.
A reter Pseudocódigo Funções Listas (ou vectores) Utilizações típicas de variáveis Iteração Contagem Acumulação (casos especiais) Memória temporária 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 21 21
2010/2011 22 A ler... Capítulos 1 e 2 do livro: Y. Daniel Liang, Introduction to Java Programming, 8.ª edição, Prentice-Hall, 2010. ISBN: 978-0-13-213080-6 Introdução à Programação - DCTI - ISCTE-IUL 22
Sumário Funções e listas em pseudocódigo Utilizações típicas de variáveis 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 23

Mais conteúdo relacionado

Mais procurados

Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Helder da Rocha
 
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores AritméticosAula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores AritméticosMessias Batista
 
Aula 1 aed - lógica de programação
Aula 1   aed - lógica de programaçãoAula 1   aed - lógica de programação
Aula 1 aed - lógica de programaçãoElaine Cecília Gatto
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação12anogolega
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Gercélia Ramos
 
Padrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - BrokerPadrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - BrokerEduardo Nicola F. Zagari
 
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Fernando Passold
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
Análise de mérito de projetos de ppp no brasil
Análise de mérito de projetos de ppp no brasilAnálise de mérito de projetos de ppp no brasil
Análise de mérito de projetos de ppp no brasiljldepaulaneto
 
Excel Avançado - Aulas
Excel Avançado - AulasExcel Avançado - Aulas
Excel Avançado - AulasGustavo Sousa
 

Mais procurados (20)

Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)
 
6 estruturas de dados heterogêneas
6  estruturas de dados heterogêneas6  estruturas de dados heterogêneas
6 estruturas de dados heterogêneas
 
Aula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e PseudocódigoAula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e Pseudocódigo
 
Circuitos Digitais - Revisão
Circuitos Digitais - RevisãoCircuitos Digitais - Revisão
Circuitos Digitais - Revisão
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores AritméticosAula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
 
Superlogo
SuperlogoSuperlogo
Superlogo
 
Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
 
Aula 1 aed - lógica de programação
Aula 1   aed - lógica de programaçãoAula 1   aed - lógica de programação
Aula 1 aed - lógica de programação
 
Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
 
Algoritmos - Vetores
Algoritmos - VetoresAlgoritmos - Vetores
Algoritmos - Vetores
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
 
Padrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - BrokerPadrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - Broker
 
Design de Interface - Diretrizes
Design de Interface - DiretrizesDesign de Interface - Diretrizes
Design de Interface - Diretrizes
 
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
IDE Falcon C++
IDE Falcon C++IDE Falcon C++
IDE Falcon C++
 
Análise de mérito de projetos de ppp no brasil
Análise de mérito de projetos de ppp no brasilAnálise de mérito de projetos de ppp no brasil
Análise de mérito de projetos de ppp no brasil
 
Excel Avançado - Aulas
Excel Avançado - AulasExcel Avançado - Aulas
Excel Avançado - Aulas
 

Semelhante a Semana 2: Funções e listas, variáveis

Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...Manuel Menezes de Sequeira
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java Manuel Menezes de Sequeira
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasManuel Menezes de Sequeira
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
Clp allen bralley aula 04
Clp allen bralley aula 04Clp allen bralley aula 04
Clp allen bralley aula 04MAKILL
 
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Filipe Chagas Ferraz
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteresManuel Menezes de Sequeira
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlabblogmaxima
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação FuncionalTales Andrade
 
Aula01
Aula01Aula01
Aula01vdlos
 
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfMC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfLuanaBatista74
 
Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4guestd521d1f
 
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxAula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxaronoliveira3
 

Semelhante a Semana 2: Funções e listas, variáveis (20)

Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Rs logix 5000
Rs logix 5000Rs logix 5000
Rs logix 5000
 
Aula04
Aula04Aula04
Aula04
 
Clp allen bralley aula 04
Clp allen bralley aula 04Clp allen bralley aula 04
Clp allen bralley aula 04
 
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteres
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlab
 
NBI.pptx
NBI.pptxNBI.pptx
NBI.pptx
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação Funcional
 
Aula01
Aula01Aula01
Aula01
 
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfMC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
 
Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4
 
Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4
 
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxAula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
 
Programas recursivos de dominio finito
Programas recursivos de dominio finitoProgramas recursivos de dominio finito
Programas recursivos de dominio finito
 
Curso Básico de R
Curso Básico de RCurso Básico de R
Curso Básico de R
 

Mais de Manuel Menezes de Sequeira

14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...Manuel Menezes de Sequeira
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...Manuel Menezes de Sequeira
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...Manuel Menezes de Sequeira
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...Manuel Menezes de Sequeira
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...Manuel Menezes de Sequeira
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...Manuel Menezes de Sequeira
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...Manuel Menezes de Sequeira
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...Manuel Menezes de Sequeira
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...Manuel Menezes de Sequeira
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...Manuel Menezes de Sequeira
 
Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, ScannerManuel Menezes de Sequeira
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemasManuel Menezes de Sequeira
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaManuel Menezes de Sequeira
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacoteManuel Menezes de Sequeira
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...Manuel Menezes de Sequeira
 
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Manuel Menezes de Sequeira
 

Mais de Manuel Menezes de Sequeira (20)

14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
 
Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, Scanner
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
 
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
 

Semana 2: Funções e listas, variáveis

  • 1. Aula 2 Funções e listas em pseudocódigo Utilizações típicas de variáveis 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 1
  • 2. Da aula anterior… Programação como arte de resolver problemas Algoritmo como sequência finita de instruções que resolvem um dado problema Descrição de algoritmos em pseudocódigo Variáveis Instruções de selecção Iterações e ciclos Instruções de leitura/escrita 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 2 2
  • 3. Função Conjunto de instruções com entradas bem definidas e que calcula um determinado valor (a sua saída) Definição Nome (reflecte o que a rotina calcula) Entradas (ou parâmetros) Instruções que executam o cálculo Instruções que reportam (ou devolvem) o resultado 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 3
  • 4. Pseudocódigo: definição de função Função nome(parâmetro1, parâmetro2, …) variável1 ← 0. variável2 ← 0. … … Devolvervariável1. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 4 Entradas ou parâmetros. Corpo da função. Variáveis locais. Acessíveis apenas dentro da função. Reportar ou devolver o valor calculado. Introdução à Programação
  • 5. Pseudocódigo: invocação de função variável1 ← 0. variável2 ← 1. … resultado ← nome(expressão1, expressão2, …). 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 5 Argumentos. Um argumento por cada parâmetro. Introdução à Programação
  • 6. Função que calcula o mdc Função mdc(m, n) Se m < n, então mdc← m, senão, mdc← n. Enquanto m ÷ mdc≠ 0 V n ÷ mdc ≠ 0, fazer mdc← mdc - 1. Devolver mdc. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 6 Entradas. Cálculo do mínimo. Pode transformar-se em função. Passos: Saída. Algoritmo simplório.
  • 7. Função que calcula o mdc Função mínimoDe(m, n) Se m < n, então devolver m, senão, devolver n. Função mdc(m, n) mdc← mínimoDe(m, n). Enquanto m ÷ mdc≠ 0 V n ÷ mdc ≠ 0, fazer mdc← mdc - 1. Devolver mdc. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 7
  • 8. Função que calcula o mdc Função mdc(m, n) Enquanto m≠ 0, fazer temporária← m, m← n ÷ m, n← temporária. Devolver n. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 8 Algoritmo de Euclides.
  • 9. Função que calcula o mdc Função mdc(m, n) Se m= 0, fazer devolver n, senão, devolver mdc(n ÷ m, m). 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 9 Algoritmo de Euclides na sua forma recursiva.
  • 10. Funções: boas práticas Funções devem limitar-se a cálculo em causa Funções não devem ter efeitos laterais Ler do teclado e escrever no ecrã são efeitos laterais Funções não devem ler do teclado ou escrever no ecrã! 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 10
  • 11. Funções: vantagens 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 11 Modularização Código colocado em módulo com função bem definida Facilita reutilização: define-se uma vez, usa-se muitas Encapsulamento Implementação irrelevante para quem usa a função Reduz complexidade Favorece abstracção Aumenta clareza
  • 12. Lista (ou vector) Variável que guarda sequência de itens Ordem dos itens relevante Identificação de valores usando índices Índice do primeiro valor: zero Exemplo 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 12 Lista lista. 8 4 2 0 1 1 0 7 0 1 2 3 4 5 6 7 lista Valores. Índices.
  • 13. Pseudocódigo: listas lista(tamanho,valor) – Lista com tamanho itens, todos com valor valor. lista1 ← lista(5, 0) lista{valor1, valor2, …} – Lista com valores indicados entre chavetas lista2 ← lista{2, 0, 5, 8} 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 13 0 0 0 0 0 2 0 5 8 0 1 2 3 4 0 1 2 3 lista1 lista2
  • 14. Pseudocódigo: listas tamanhoDe(lista)– devolve tamanho de lista lista[i] – Item de lista com índice i Exemplos: tamanhoDe(lista1) – Devolve 5 lista2[2] – Terceiro item de lista2, com valor 5 lista2[2] ← 7 – Atribui 7 ao terceiro item de lista2 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 14 0 0 0 0 0 2 0 5 8 0 1 2 3 4 0 1 2 3 lista1 lista2
  • 15. Utilizações típicas de variáveis Iteração Contagem Acumulação Memória temporária Etc. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 15
  • 16. Iteração Variável com valores sucessivos correspondentes a contagem, índices de lista, etc. Exemplo i ← 0. Enquanto i ≠ 10, fazer ... i ← i + 1. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 16 Variável para iteração.
  • 17. Contagem Variável guardando valor de contagem Exemplo Função ocorrências(lista, valor) ocorrências ← 0. i ← 0. Enquanto i ≠ tamanhoDe(lista), fazer se lista[i] = valor, então ocorrências ← ocorrências + 1; i ← i + 1. Devolver ocorrências. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 17 Variável para contagem.
  • 18. Acumulação Variável guardando acumulação de operação Exemplo Função somaDe(lista) soma ← 0. i ← 0. Enquanto i ≠ tamanhoDe(lista), fazer soma ← soma + lista[i]; i ← i + 1. Devolver soma. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 18 Variável para acumulação da soma.
  • 19. Acumulação: caso especial Variável guardando acumulação de operação Exemplo Função máximoDe(lista) máximo ← -∞. i ← 0. Enquanto i ≠ tamanhoDe(lista), fazer se máximo < lista[i], então máximo ← lista[i]; i ← i + 1. Devolver máximo. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 19 Variável para “acumulação” do máximo.
  • 20. Memória temporária Variável para guardar valor temporariamente Exemplo Função mdc(m, n) Enquanto m≠ 0, fazer temporária← m, m← n ÷ m, n← temporária. Devolver n. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 20 Variável para memória temporária.
  • 21. A reter Pseudocódigo Funções Listas (ou vectores) Utilizações típicas de variáveis Iteração Contagem Acumulação (casos especiais) Memória temporária 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 21 21
  • 22. 2010/2011 22 A ler... Capítulos 1 e 2 do livro: Y. Daniel Liang, Introduction to Java Programming, 8.ª edição, Prentice-Hall, 2010. ISBN: 978-0-13-213080-6 Introdução à Programação - DCTI - ISCTE-IUL 22
  • 23. Sumário Funções e listas em pseudocódigo Utilizações típicas de variáveis 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 23