Apresentação da semana 2 da unidade curricular de Introdução à Programação do DCTI do ISCTE-IUL. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI, incluindo Luís Nunes e André Santos.
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