Sei sulla pagina 1di 31

Programao

5374 : Engenharia Informtica 6638 : Tecnologias e Sistemas de Informao 9099 : Bioengenharia 10135 : Cincias Biomdicas

Cap. 4 Algoritmos e Programao Estruturada!

Module Introduction

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Objectivos:!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Problemas e Algoritmos!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Noo de Problema" Exemplo: como fazer um bolo? !

Farinha de Trigo! Acar! Ovos! Fermento! Leite! Manteiga!

receita!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Noo de Algoritmo!
Farinha de Trigo! Acar! Ovos! Fermento! Leite! Manteiga!

algoritmo!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Desenho ou Concepo de Algoritmos" para a Resoluo de Problemas!

PROBLEMA

ALGORITMO

PROGRAMA

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Passos na Concepo e Construo de Algoritmos!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Mtodo Cartesiano de Dividir-para-Conquistar!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Caractersticas 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 funo do preo, conforto, rapidez, etc..!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Representaes de Algoritmos!

No existe consenso entre os especialistas sobre qual a melhor maneira de representar um algoritmo. ! Actualmente a maneira mais comum de representar algoritmos atravs de uma pseudo-linguagem ou pseudo-cdigo. Esta forma de representao tem a vantagem de o algoritmo seja escrito de uma forma que est prxima de uma linguagem de programao de computadores.!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Codicao em Linguagem Natural (1)!

1.! 2.! 3.! 4.! 5.!

Incio! Ler X,Y! Calcular a mdia M de X e Y! Escrever M! Fim!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Codicao em Fluxograma (2)!

Incio

Ler X!

Ler Y!

M=(X+Y)/2!

Escreve M!

Fim

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Codicao em Pseudo-cdigo (3)!

1.! 2.! 3.! 4.! 5.!

Incio! Ler X,Y! Calcular a mdia M=(X+Y)/2! Escrever M! Fim!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Codicao 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); }

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Programao Visual com Fluxogramas!

incio e m de uxograma!

teste e deciso!

entrada e sada de dados!

outras aces/instrues!

conector na mesma pgina! inicializao! teste e actualizao! conector para outra pgina!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Estruturas Lgicas de Programao" (estruturas de controlo)!


! ! Uma estrutura (de controlo) a unidade bsica da lgica de programao.! Em meados da dcada de 60, alguns matemticos provaram que qualquer programa podia ser construdo atravs da combinao de 3 estruturas bsicas: sequncia, seleco e repetio.!
entrance! entrance! entrance!

exit!

exit!

exit! SELECO! REPETIO!

SEQUNCIA!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada! {}

Sequncia!

entrance!

exit!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada! if-else

Seleco de 2-vias!
! ! Uma estrutura de seleco tambm designada por estrutura de deciso.! Neste caso, o uxo de processamento segue por 1 das 2 vias, dependendo do valor lgico (verdadeiro ou falso) da expresso avaliada no incio da estrutura.! Se o uxo de processamento s passa por 1 via, ento s uma das aces realizada ou processada.! Em C, uma estrutura de seleco com 2 vias a instruo if-else.!
false! true!

?!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao 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; }

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada! if

Seleco de 1-via!
! Neste caso, se a expresso lgica tiver resultado false, nenhuma aco processada dentro da estrutura de seleco.! S processada uma aco dentro da estrutura de seleco se a expresso lgica for true; da, o nome de seleco com 1 via.! Em C, uma estrutura de seleco com 1 via a instruo if.!
false! ?! true!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao 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; }

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada! switch

Seleco de n-vias!
! Neste caso, a deciso no feita com base numa expresso lgica porque h mais do que 2 resultados possveis. ! Tambm s so processadas a aco ou as aces encontradas numa via.! Em C, uma estrutura de seleco com n vias a instruo switch com break. No entanto, se no usarmos o break, h a possibilidade de executar as aces de vrias vias.!

! !

...

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao 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 break; case - : resultado break; case * : resultado break; case / : resultado } = x + y; = x - y; = x * y; = x / y;

printf("O resultado = %d\n", resultado); return 0; }

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Repetio com Teste Cabea!


! Neste caso, tambm h a necessidade de tomar uma deciso com base no valor lgico duma expresso.! No entanto, a mesma aco ser executada repetidamente enquanto o resultado da expresso lgica se mantiver verdadeiro (true).! O teste (da expresso lgica) precede a aco. Diz-se, por isso, que o teste cabea. ! O teste importante porque funciona como uma condio de paragem (a false) dos ciclos or repeties.! Em C, uma estrutura de repetio deste tipo a instruo while.!
? false

true

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Exemplo em C: while!

#include <stdio.h> int main() { int soma, n=1; soma = 0; while (n <= 100) { soma = soma + n; n = n + 1; } // inicializao da varivel soma // teste de paragem // actualizao da varivel soma! // actualizao da varivel de controlo

printf("O valor da soma = %d\n", soma); return 0; }

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Repetio com Teste Cauda!


! Esta estrutura de repetio em tudo idntica anterior. A diferena que o teste feito aps o processamento da aco! O teste (da expresso lgica) sucede a aco. Diz-se, por isso, que o teste cauda. ! Em C, uma estrutura de repetio deste tipo a instruo do-while.!
false ? true

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Exemplo em C: do-while!

#include <stdio.h> int main() { int soma, n=1; soma = 0; do { soma = soma + n; n = n + 1; } while (n <= 100); // inicializao da varivel soma // actualizao da varivel soma! // actualizao da varivel de controlo // teste de paragem

printf("O valor da soma = %d\n", soma); return 0; }

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Repetio com N Pr-denido de Ciclos"


! ! ! Esta estrutura de repetio em tudo idntica s anteriores. ! O teste feito cabea. ! A diferena que partida se especica o nmero de ciclos (ou iteraes) que sero efectuados, i.e. o nmero de vezes que a aco ser processada.! Em C, uma estrutura de repetio deste tipo a instruo for.!
false

true

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Exemplo em C: for!

inicializao ! #include <stdio.h> int main() { int soma, n=1; soma = 0; for (n=1; n<=100; n++) soma = soma + n;

teste de paragem !

actualizao !

// inicializao da varivel soma // actualizao da varivel soma!

printf("O valor da soma = %d\n", soma); return 0; }

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Programao Estruturada!

5375, 6619, 9099, 10135 ! Programao!

Algoritmos e Programao Estruturada!

Sumrio:!

FIM

Potrebbero piacerti anche