5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação 9099 : Bioengenharia 10135 : Ciências Biomédicas Cap. 4 Algoritmos e Estruturada Module Introduction
Algoritmos e Estruturada Objectivos:
Algoritmos e Estruturada Problemas e Algoritmos
Noção de Problema Exemplo: como fazer um bolo? Algoritmos e Estruturada Farinha de Trigo Ovos Açúcar Fermento Leite Manteiga receita
Algoritmos e Estruturada Noção de Algoritmo Farinha de Trigo Ovos Açúcar Fermento Leite Manteiga algoritmo
Desenho ou Concepção de Algoritmos para a Resolução de Problemas Algoritmos e Estruturada PROBLEMA ALGORITMO PROGRAMA
Algoritmos e Estruturada Passos na Concepção e Construção de Algoritmos
Algoritmos e Estruturada Método Cartesiano de Dividir-para-Conquistar
5375, 6619, 9099, 10135 Algoritmos e Estruturada 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 Estruturada 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 Estruturada 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 Estruturada Codificação em Fluxograma (2) Início Ler X Ler Y M=(X+Y)/2 Escreve M Fim
Algoritmos e Estruturada 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 Estruturada 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 Estruturada Visual com Fluxogramas início e fim de fluxograma teste e decisão entrada e saída de dados outras acções/instruções conector na mesma página conector para outra página inicialização teste e actualização
Estruturas Lógicas de (estruturas de controlo) Algoritmos e Estruturada 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
Sequência Algoritmos e Estruturada { } entrance exit
Selecção de 2-vias Algoritmos e Estruturada if-else 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. false? true 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.
Algoritmos e Estruturada Exemplo em C: if-else #include <stdio.h> 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;
Selecção de 1-via Algoritmos e Estruturada if 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. false? true Em C, uma estrutura de selecção com 1 via é a instrução if.
Algoritmos e Estruturada Exemplo em C: if #include <stdio.h> 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;
Selecção de n-vias Algoritmos e Estruturada switch 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....
Algoritmos e Estruturada Exemplo em C: switch #include <stdio.h> 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;
Algoritmos e Estruturada 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. false? true 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.
Algoritmos e Estruturada Exemplo em C: while #include <stdio.h> int main() { 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;
Algoritmos e Estruturada 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 Estruturada Exemplo em C: do-while #include <stdio.h> 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;
Repetição com Nº Pré-definido de Ciclos Algoritmos e Estruturada 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. false? true
Algoritmos e Estruturada Exemplo em C: for inicialização teste de paragem actualização #include <stdio.h> int main() { int soma, n=1; soma = 0; for (n=1; n<=100; n++) soma = soma + n; // inicialização da variável soma // actualização da variável soma } printf("o valor da soma = %d\n", soma); return 0;
Algoritmos e Estruturada Estruturada
Algoritmos e Estruturada Sumário: FIM