Baixe o app para aproveitar ainda mais
Prévia do material em texto
Module Introduction Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação 9099 : Bioengenharia 10135 : Ciências Biomédicas Cap. 4 — Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Objectivos: Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Problemas e Algoritmos Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Noção de Problema��� Exemplo: como fazer um bolo? Farinha de Trigo Ovos Manteiga Açúcar receita Fermento Leite Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Noção de Algoritmo Farinha de Trigo Ovos Manteiga Açúcar algoritmo Fermento Leite Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Desenho ou Concepção de Algoritmos��� para a Resolução de Problemas PROBLEMA ALGORITMO PROGRAMA Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Passos na Concepção e Construção de Algoritmos Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Método Cartesiano de Dividir-para-Conquistar Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Características Fundamentais dum Algoritmo Pode haver mais do que um algoritmo para resolver um problema. Por exemplo, para ir de casa até o trabalho, podemos escolher diversos meios de transportes em função do preço, conforto, rapidez, etc.. Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Representações de Algoritmos Não existe consenso entre os especialistas sobre qual é a melhor maneira de representar um algoritmo. Actualmente a maneira mais comum de representar algoritmos é através de uma pseudo-linguagem ou pseudo-código. Esta forma de representação tem a vantagem de o algoritmo seja escrito de uma forma que está próxima de uma linguagem de programação de computadores. Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Codificação em Linguagem Natural (1) 1. Início 2. Ler X, Y 3. Calcular a média M de X e Y 4. Escrever M 5. Fim Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Codificação em Fluxograma (2) Ler X Ler Y M=(X+Y)/2 Escreve M Início Fim Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Codificação em Pseudo-código (3) 1. Início 2. Ler X, Y 3. Calcular a média M=(X+Y)/2 4. Escrever M 5. Fim Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Codificação em C (4) #include <stdio.h> main(){ float X, Y, M; printf(Introduza o valor de X:\n”); scanf("%f", &X); printf(Introduza o valor de Y:\n”); scanf("%f", &Y); M=(X+Y)/2; printf(”A media M = %f\n”,M); } Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Programação Visual com Fluxogramas início e fim de fluxograma entrada e saída de dados teste e decisão outras acções/instruções conector na mesma página conector para outra página inicialização teste e actualização Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Estruturas Lógicas de Programação ��� (estruturas de controlo) • Uma estrutura (de controlo) é a unidade básica da lógica de programação. • Em meados da década de 60, alguns matemáticos provaram que qualquer programa podia ser construído através da combinação de 3 estruturas básicas: sequência, selecção e repetição. entrance entrance entrance exit exit exit SEQUÊNCIA SELECÇÃO REPETIÇÃO Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Sequência entrance exit {…} Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Selecção de 2-vias • Uma estrutura de selecção é também designada por estrutura de decisão. • Neste caso, o fluxo de processamento segue por 1 das 2 vias, dependendo do valor lógico (verdadeiro ou falso) da expressão avaliada no início da estrutura. • Se o fluxo de processamento só passa por 1 via, então só uma das acções é realizada ou processada. • Em C, uma estrutura de selecção com 2 vias é a instrução if-else. if-else false true ? Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Exemplo em C: if-else int main() { int x, y, M; printf(”Introduza x e y: \n”); scanf("%d%d", &x, &y); if (x > y) M = x; else M = y; printf("O valor maior = %d\n", M); return 0; } #include <stdio.h> Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Selecção de 1-via • Neste caso, se a expressão lógica tiver resultado false, nenhuma acção é processada dentro da estrutura de selecção. • Só é processada uma acção dentro da estrutura de selecção se a expressão lógica for true; daí, o nome de selecção com 1 via. • Em C, uma estrutura de selecção com 1 via é a instrução if. if false true ? Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Exemplo em C: if int main() { int x, y, M; printf(”Introduza x e y: \n”); scanf("%d%d", &x, &y); M = x; if (y > M) M = y; printf("O valor maior = %d\n", M); return 0; } #include <stdio.h> Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Selecção de n-vias • Neste caso, a decisão não é feita com base numa expressão lógica porque há mais do que 2 resultados possíveis. • Também só são processadas a acção ou as acções encontradas numa via. • Em C, uma estrutura de selecção com n vias é a instrução switch com break. No entanto, se não usarmos o break, há a possibilidade de executar as acções de várias vias. switch . . . Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Exemplo em C: switch int main() { int x, y, resultado; char operacao; printf(”Introduza x operador y: \n”); scanf("%d %c %d", &x, &operacao, &y); switch (operacao) { case ‘+’ : resultado = x + y; break; case ‘-’ : resultado = x - y; break; case ‘*’ : resultado = x * y; break; case ‘/’ : resultado = x / y; } printf("O resultado = %d\n", resultado); return 0; } #include <stdio.h> Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Repetição com Teste à Cabeça • Neste caso, também há a necessidade de tomar uma decisão com base no valor lógico duma expressão. • No entanto, a mesma acção será executada repetidamente enquanto o resultado da expressão lógica se mantiver verdadeiro (true). • O teste (da expressão lógica) precede a acção. Diz-se, por isso, que o teste é à cabeça. • O teste é importante porque funciona como uma condição de paragem (a false) dos ciclos or repetições. • Em C, uma estrutura de repetição deste tipo é a instrução while. true false ? Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Exemplo em C: while intmain() { int soma, n=1; soma = 0; // inicialização da variável soma while (n <= 100) // teste de paragem { soma = soma + n; // actualização da variável soma n = n + 1; // actualização da variável de controlo } printf("O valor da soma = %d\n", soma); return 0; } #include <stdio.h> Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Repetição com Teste à Cauda • Esta estrutura de repetição é em tudo idêntica à anterior. A diferença é que o teste é feito após o processamento da acção • O teste (da expressão lógica) sucede a acção. Diz-se, por isso, que o teste é à cauda. • Em C, uma estrutura de repetição deste tipo é a instrução do-while. true false ? Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Exemplo em C: do-while int main() { int soma, n=1; soma = 0; // inicialização da variável soma do { soma = soma + n; // actualização da variável soma n = n + 1; // actualização da variável de controlo } while (n <= 100); // teste de paragem printf("O valor da soma = %d\n", soma); return 0; } #include <stdio.h> Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Repetição com Nº Pré-definido de Ciclos��� • Esta estrutura de repetição é em tudo idêntica às anteriores. • O teste é feito à cabeça. • A diferença é que à partida se especifica o número de ciclos (ou iterações) que serão efectuados, i.e. o número de vezes que a acção será processada. • Em C, uma estrutura de repetição deste tipo é a instrução for. true false ? Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Exemplo em C: for int main() { int soma, n=1; soma = 0; // inicialização da variável soma for (n=1; n<=100; n++) soma = soma + n; // actualização da variável soma printf("O valor da soma = %d\n", soma); return 0; } #include <stdio.h> inicialização teste de paragem actualização Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Programação Estruturada Algoritmos e Programação Estruturada 5375, 6619, 9099, 10135 Programação Sumário: FIM
Compartilhar