Você está na página 1de 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
Algoritmos e Programação Estruturada

Programação

Objectivos:

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

Problemas e Algoritmos

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

Noção de Problema
Exemplo: como fazer um bolo?

Farinha de Trigo

Ovos
Açúcar

Fermento
Leite
receita

Manteiga

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

Noção de Algoritmo

Farinha de Trigo

Ovos
Açúcar

Fermento
Leite
algoritmo

Manteiga

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

Desenho ou Concepção de Algoritmos
para a Resolução de Problemas

PROBLEMA ALGORITMO PROGRAMA


5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

Passos na Concepção e Construção de Algoritmos



5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

Método Cartesiano de Dividir-para-Conquistar



5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

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..

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

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.

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

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

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

Codificação em Fluxograma (2)


Início

Ler X

Ler Y

M=(X+Y)/2

Escreve M

Fim

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

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

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

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);
}
5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

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

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

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

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

{…}
Sequência

entrance

exit

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

if-else
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 false
true

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.

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

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
Algoritmos e Programação Estruturada

Programação

if
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.

false
true

•  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.

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

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
Algoritmos e Programação Estruturada

Programação

switch
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.

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

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;
}
5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

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).
true
?
•  O teste (da expressão lógica) precede a
acção. Diz-se, por isso, que o teste é à false
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.

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

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;
}
5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

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 true
?
tipo é a instrução do-while.

false
5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

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;
}
5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

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
true
efectuados, i.e. o número de vezes que a ?
acção será processada.

false
•  Em C, uma estrutura de repetição deste
tipo é a instrução for.

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

Exemplo em C: for

inicialização
teste de paragem
actualização

#include <stdio.h>
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;
}
5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

Programação Estruturada

5375, 6619, 9099, 10135
Algoritmos e Programação Estruturada

Programação

Sumário:

FIM

Você também pode gostar