GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Construção de Algoritmo Especificação sequência, desvio e laço Ilmério Reis da Silva [email protected] www.facom.ufu.br/~ilmerio/icc UFU/FACOM/BCC Def. Algoritmo é uma sequência finita de passos que define como uma tarefa pode ser realizada Ou “é um conjunto ordenado de passos executáveis, não ambíguos, que define um processo finalizável” [1] Como escrever um Algoritmo Depende de quem ou o que executará o algoritmo Exemplo de Algoritmo O problema: trocar o pneu furado de um carro Executor: humano Um algoritmo: 1 SE (estepe murcho) CHAMAR o borracheiro 2 SENÃO 2.1 AFROUXAR os parafusos da roda com o pneu furado 2.2 LEVANTAR o carro com o macaco 2.3 RETIRAR os parafusos da roda com o pneu furado 2.4 TROCAR a roda com o pneu furado pela de estepe 2.6 APERTAR ligeiramente os parafusos 2.7 BAIXAR o carro 2.8 APERTAR fortemente os parafusos 2.9 GUARDAR as ferramentas 3 FIM Exemplo de Algoritmo para Computadores O problema: escrever o fatorial de n Executor: um computador (Arquitetura von Neumann) Um Algoritmo: 1. LER n; 2. f ← 1; 3. i ← 2; 4. ENQUANTO (i <= n) { 4.1 f ← f * i; 4.2 i ← i + 1; } 5. ESCREVER “Fatorial de “, n, “ = ”, f; 6. FIM Algoritmo para construir um Algoritmo 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ENTENDA o problema. ESCOLHA uma linguagem para descrever o algoritmo. ESCREVA o algoritmo. SE o algoritmo está correto VÁ_PARA 6. SENÃO, encontre o erro; corrija o erro; VÁ_PARA 4. SE o algoritmo pode ser melhorado SE compensa gastar mais tempo com a melhoria ESCREVA uma nova versão do algoritmo; VÁ_PARA 4. SENÃO, VÁ_PARA 11. SENÃO, VÁ_PARA 11. FIM Linguagens de Algoritmos Várias opções, por exemplo: Portugol uma SL – Structured Language cuja execução é a sequência de instruções a partir do início Fluxograma um grafo dirigido cuja execução é seguir as setas à partir do início executando as instruções em cada nodo Exemplos de Portugol Problema: calcular o MDC entre dois números MDC_ALGORITMO1 MDC_ALGORIMO2 1. LEIA m, n 2. SE n > 0 2.1 x ← n 2.2 n ← m % n 2.3 m ← x 2.4 VÁ_PARA 2 3. FIM_SE 4. IMPRIMA m 5. FIM 1. LEIA m, n 2. ENQUANTO n > 0 2.1 x ← n; 2.2 n ← m % n; 2.3 m ← x; 3. FIM_ENQUANTO 4. IMPRIMA m 5. FIM Exemplo de Fluxograma Problema: calcular o MDC entre dois números M=X Exemplos de Instruções em Portugol Entrada: LEIA Saída: ESCREVA Atribuição: var ← valor var ← var var ← var op var Onde op pode ser: +, -, *, %, /, ==, !=, <, >, <=, >=, &&, ||, ,... Desvio: SE condição ENTÃO comandos SENÃO comandos FIM_SE Laço: ENQUANTO condição comandos FIM_ENQUANTO OBS: comandos é uma sequência com zero ou mais instruções ; Considerações Finais Algoritmo é a alma do programa Boas práticas de programação incluem: Entender bem o problema Escrever um algoritmo usando lápis e papel Implementar somente depois de verificar se algoritmo está correto. Bibliografia [1] BROOKSHEAR, J. Glenn. Ciência da computação: uma visão abrangente, ,tradução da 11a ed [por] Eduardo K Pivete, Porto Alegre, Bookman, 2013. [2] FEDELI, Ricardo Daniel; POLLONI, Enrico Giulio Franco; PERES, Fernando Eduardo. Introdução à ciência da computação. 2. ed. São Paulo: Cengage Learning, 2010. [3] MOKARZEL, Fábio Carneiro. Introdução à ciência da computação. Rio de Janeiro: Elsevier, 2008. [4] Autran Macedo, Maria Adriana, Renato Pimentel e Ilmério Silva, http://www.facom.ufu.br Material de Apoio Capítulo 5 de [1] Capítulo 2 de [3] Exercícios no final dos capítulos acima, por exemplo: – Escrever um Algoritmo, usando portugol e fluxograma, para imprimir os N primeiros números da série de Fibonacci, da seguinte forma: 1, 1, 2, 3, 5, 8, 13, …, FN Onde FN=FN-1 + FN-2 FIM Construção de Algoritmos Especificação sequência, desvio e laço