You are on page 1of 31

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!

Module Introduction

5375, 6619, 9099, 10135 ! Programação!

Algoritmos e Programação Estruturada!

Objectivos:!

5375, 6619, 9099, 10135 ! Programação!

Algoritmos e Programação Estruturada!

Problemas e Algoritmos!

9099. 6619.5375. 10135 ! Programação! Algoritmos e Programação Estruturada! Noção de Problema" Exemplo: como fazer um bolo? ! Farinha de Trigo! Açúcar! Ovos! Fermento! Leite! Manteiga! receita! .

10135 ! Programação! Algoritmos e Programação Estruturada! Noção de Algoritmo! Farinha de Trigo! Açúcar! Ovos! Fermento! Leite! Manteiga! algoritmo! .5375. 9099. 6619.

5375. 6619. 9099. 10135 ! Programação! Algoritmos e Programação Estruturada! Desenho ou Concepção de Algoritmos" para a Resolução de Problemas! PROBLEMA ALGORITMO PROGRAMA .

6619. 10135 ! Programação! Algoritmos e Programação Estruturada! Passos na Concepção e Construção de Algoritmos! .5375. 9099.

5375. 10135 ! Programação! Algoritmos e Programação Estruturada! Método Cartesiano de Dividir-para-Conquistar! . 6619. 9099.

rapidez.. conforto. etc. podemos escolher diversos ! meios de transportes em função do preço. 6619.5375. 9099. para ir de casa até o trabalho.! .! Por exemplo. 10135 ! Programação! Algoritmos e Programação Estruturada! Características Fundamentais dum Algoritmo! Pode haver mais do que um algoritmo para resolver um problema.

! 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. 9099. 6619.! .5375. 10135 ! Programação! Algoritmos e Programação Estruturada! Representações de Algoritmos! Não existe consenso entre os especialistas sobre qual é a melhor maneira de representar um algoritmo.

5375.! 3.! Início! Ler X.! 4. 9099. 6619.Y! Calcular a média M de X e Y! Escrever M! Fim! .! 2.! 5. 10135 ! Programação! Algoritmos e Programação Estruturada! Codificação em Linguagem Natural (1)! 1.

10135 ! Programação! Algoritmos e Programação Estruturada! Codificação em Fluxograma (2)! Início ! Ler X! Ler Y! M=(X+Y)/2! Escreve M! Fim ! . 6619.5375. 9099.

9099.! 5.! 2. 6619. 10135 ! Programação! Algoritmos e Programação Estruturada! Codificação em Pseudo-código (3)! 1.Y! Calcular a média M=(X+Y)/2! Escrever M! Fim! .! 4.5375.! 3.! Início! Ler X.

&Y). printf(Introduza o valor de X:\n”). 6619. &X).5375. Y. printf(Introduza o valor de Y:\n”). scanf("%f". M. scanf("%f". M=(X+Y)/2. printf(”A media M = %f\n”. 10135 ! Programação! Algoritmos e Programação Estruturada! Codificação em C (4)! #include <stdio. 9099. } .h> main(){ float X.M).

9099.5375. 10135 ! Programação! Algoritmos e Programação Estruturada! Programação 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! inicialização! teste e actualização! conector para outra página! . 6619.

5375.! Em meados da década de 60. 9099. alguns matemáticos provaram que qualquer programa podia ser construído através da combinação de 3 estruturas básicas: sequência. 10135 ! Programação! Algoritmos e Programação Estruturada! Estruturas Lógicas de Programação" (estruturas de controlo)! •! •! Uma estrutura (de controlo) é a unidade básica da lógica de programação. 6619.! entrance! entrance! entrance! exit! exit! exit! SELECÇÃO! REPETIÇÃO! SEQUÊNCIA! . selecção e repetição.

9099. 10135 ! Programação! Algoritmos e Programação Estruturada! {…} Sequência! entrance! exit! .5375. 6619.

! false! true! ?! •! •! . então só uma das acções é realizada ou processada. 9099. o fluxo de processamento segue por 1 das 2 vias.5375. dependendo do valor lógico (verdadeiro ou falso) da expressão avaliada no início da estrutura. 6619. 10135 ! Programação! Algoritmos e Programação Estruturada! if-else Selecção de 2-vias! •! •! Uma estrutura de selecção é também designada por estrutura de decisão.! Neste caso.! Se o fluxo de processamento só passa por 1 via. uma estrutura de selecção com 2 vias é a instrução if-else.! Em C.

printf(”Introduza x e y: \n”).h> int main() { int x. &y). 9099. M. } . 6619. if (x > y) M = x. printf("O valor maior = %d\n". 10135 ! Programação! Algoritmos e Programação Estruturada! Exemplo em C: if-else! #include <stdio. y. &x. scanf("%d%d". else M = y.5375. return 0. M).

nenhuma acção é processada dentro da estrutura de selecção. se a expressão lógica tiver resultado false.5375. 9099.! Em C. daí. 10135 ! Programação! Algoritmos e Programação Estruturada! if Selecção de 1-via! •! Neste caso. uma estrutura de selecção com 1 via é a instrução if. 6619. o nome de selecção com 1 via.! Só é processada uma acção dentro da estrutura de selecção se a expressão lógica for true.! false! ?! true! •! •! .

h> int main() { int x. &x. 10135 ! Programação! Algoritmos e Programação Estruturada! Exemplo em C: if! #include <stdio. M. &y). return 0. if (y > M) M = y.5375. 6619. } . printf(”Introduza x e y: \n”). 9099. M = x. M). scanf("%d%d". printf("O valor maior = %d\n". y.

. 9099. se não usarmos o break. a decisão não é feita com base numa expressão lógica porque há mais do que 2 resultados possíveis.5375. uma estrutura de selecção com n vias é a instrução switch com break.! Em C. há a possibilidade de executar as acções de várias vias.. 6619.! •! •! . . 10135 ! Programação! Algoritmos e Programação Estruturada! switch Selecção de n-vias! •! Neste caso. ! Também só são processadas a acção ou as acções encontradas numa via. No entanto.

switch (operacao) { case ‘+’ : resultado break. &x. case ‘*’ : resultado break. scanf("%d %c %d". &operacao. = x * y.5375. 9099. y. printf(”Introduza x operador y: \n”). char operacao. resultado. printf("O resultado = %d\n". resultado). return 0.y. &y). case ‘/’ : resultado } = x + y. 10135 ! Programação! Algoritmos e Programação Estruturada! Exemplo em C: switch! #include <stdio. case ‘-’ : resultado break. = x / y. } . = x . 6619.h> int main() { int x.

por isso. 6619. Diz-se. 9099.! O teste (da expressão lógica) precede a acção. a mesma acção será executada repetidamente enquanto o resultado da expressão lógica se mantiver verdadeiro (true).! ? false •! true •! •! •! . ! O teste é importante porque funciona como uma condição de paragem (a false) dos ciclos or repetições. também há a necessidade de tomar uma decisão com base no valor lógico duma expressão. que o teste é à cabeça. 10135 ! Programação! Algoritmos e Programação Estruturada! Repetição com Teste à Cabeça! •! Neste caso.! Em C. uma estrutura de repetição deste tipo é a instrução while.! No entanto.5375.

5375. n=1. } // inicialização da variável soma // teste de paragem // actualização da variável soma! // actualização da variável de controlo printf("O valor da soma = %d\n". 10135 ! Programação! Algoritmos e Programação Estruturada! Exemplo em C: while! #include <stdio. return 0. } . 9099. n = n + 1.h> int main() { int soma. soma = 0. while (n <= 100) { soma = soma + n. soma). 6619.

6619.! false ? true •! •! . 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. 9099. por isso. que o teste é à cauda.5375. uma estrutura de repetição deste tipo é a instrução do-while. ! Em C. 10135 ! Programação! Algoritmos e Programação Estruturada! Repetição com Teste à Cauda! •! Esta estrutura de repetição é em tudo idêntica à anterior. Diz-se.

5375. return 0. soma = 0. 9099. n=1. n = n + 1. soma). } while (n <= 100). 6619. do { soma = soma + n. } . // inicialização da variável soma // actualização da variável soma! // actualização da variável de controlo // teste de paragem printf("O valor da soma = %d\n". 10135 ! Programação! Algoritmos e Programação Estruturada! Exemplo em C: do-while! #include <stdio.h> int main() { int soma.

10135 ! Programação! Algoritmos e Programação Estruturada! Repetição com Nº Pré-definido de Ciclos" •! •! •! Esta estrutura de repetição é em tudo idêntica às anteriores. uma estrutura de repetição deste tipo é a instrução for.! Em C. i. o número de vezes que a acção será processada. ! O teste é feito à cabeça. ! A diferença é que à partida se especifica o número de ciclos (ou iterações) que serão efectuados.! false ? true •! . 6619. 9099.e.5375.

10135 ! Programação! Algoritmos e Programação Estruturada! Exemplo em C: for! inicialização ! #include <stdio. } .h> int main() { int soma. n++) soma = soma + n. n<=100. teste de paragem ! actualização ! // inicialização da variável soma // actualização da variável soma! printf("O valor da soma = %d\n". for (n=1. soma). soma = 0. return 0.5375. 9099. n=1. 6619.

9099. 10135 ! Programação! Algoritmos e Programação Estruturada! Programação Estruturada! . 6619.5375.

9099. 6619. 10135 ! Programação! Algoritmos e Programação Estruturada! Sumário:! FIM .5375.