Beruflich Dokumente
Kultur Dokumente
Objectivos:
Problemas e Algoritmos
• Para resolver um problema através dum computador é necessário encontrar em primeiro lugar
uma maneira de descrevê-lo de uma forma clara e precisa.
• É também preciso que encontremos uma sequência de passos que conduzam à sua resolução. Esta
sequência de passos é designada por algoritmo.
• A noção de algoritmo é central a toda a informática.
• A construção de algoritmos para resolver os problemas é uma das maiores dificuldades, mas
também um dos maiores desafios para quem programa computadores.
Algoritmos e Programação Estruturada
Noção de Problema
Exemplo: como fazer um bolo?
Farinha de Trigo
Ovos Açúcar
Fermento Leite receita
Manteiga
Noção de Algoritmo
– Assim, os passos ou acções dum algoritmo para confeccionar um bolo são os seguintes:
1. Bater duas claras em castelo;
2. Adicionar duas gemas;
3. Adicionar um xícara de açúcar;
4. Adicionar duas colheres de manteiga;
5. Adicionar uma xícara de leite de coco;
6. Adicionar farinha e fermento;
7. Colocar numa forma e levar ao forno em lume brando.
Algoritmos e Programação Estruturada
• Compreender o problema
• Identificar os dados de entrada
• Identificar os dados de saída
• Determinar o que é preciso para transformar dados de entrada em dados de saída:
– usar a estratégia do dividir-para-conquistar
– observar regras e limitações
– identificar todas as acções a realizar
– eliminar ambiguidades
• Construir o algoritmo
• Testar (manualmente) o algoritmo
• Executar o algoritmo
Algoritmos e Programação Estruturada
• Passo-a-passo, significa que cada passo é completado antes que o próximo comece.
- Exemplo: é impossível “ver telejornal” antes de executar por inteiro o passo anterior de “ligar a TV”
Algoritmos e Programação Estruturada
Representações de Algoritmos
• Linguagem Natural
- Os algoritmos são expressos directamente em linguagem natural (e.g. o português como no exemplo
do bolo).
• Pseudo-linguagem
- Emprega uma linguagem intermediária entre a linguagem natural e uma linguagem de programação para
descrever os 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
• Problema:
– Cáculo da média aritmética de dois valores reais?
• Entradas:
– dois valores reais, X e Y
• Saídas:
– a média M=(X+Y)/2
• Algoritmo:
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
• Problema:
– Cáculo da média aritmética de dois valores reais? Início
• Entradas:
Ler X
– dois valores reais, X e Y
• Saídas:
Ler Y
– a média M=(X+Y)/2
• Algoritmo:
M=(X+Y)/2
Escreve M
Fim
Algoritmos e Programação Estruturada
• Problema:
– Cáculo da média aritmética de dois valores reais?
• Entradas:
– dois valores reais, X e Y
• Saídas:
– a média M=(X+Y)/2
• Algoritmo:
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
Codificação em C (4)
• Problema:
– Cáculo da média aritmética de dois valores reais?
• Entradas:
– dois valores reais, X e Y
• Saídas:
– a média M=(X+Y)/2
• Programa: #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
exit
exit
exit
{…}
Sequência
exit
Algoritmos e Programação Estruturada
if-else
Selecção de 2-vias
Exemplo em C: if-else
• Problema:
– Calcular o maior de dois inteiros?
• Entradas:
#include <stdio.h>
– xey int main()
{
int x, y, M;
• Saídas: printf(”Introduza x e y: \n”);
scanf("%d%d", &x, &y);
– M
if (x > y)
• Programa: M = x;
else
M = y;
if
Selecção de 1-via
Exemplo em C: if
• Problema:
– Calcular o maior de dois inteiros?
• Entradas:
– x, y
#include <stdio.h>
int main()
• Saídas: {
int x, y, M;
– M
printf(”Introduza x e y: \n”);
• Programa: scanf("%d%d", &x, &y);
M = x;
if (y > M)
M = y;
switch
Selecção de n-vias
Exemplo em C: switch
#include <stdio.h>
int main()
{
• Problema:
int x, y, resultado;
char operacao;
– Calculadora aritmética com as 4
operações básicas?
printf(”Introduza x operador y: \n”);
• Entradas: scanf("%d %c %d", &x, &operacao, &y);
Exemplo em C: while
• Problema:
– Calcular a soma dos inteiros no intervalo [1,100]?
• Entradas:
– N/A
• Saídas: #include <stdio.h>
int main()
– soma {
int soma, n=1;
• Programa:
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
}
false
Algoritmos e Programação Estruturada
Exemplo em C: do-while
• Problema:
– Calcular a soma dos inteiros no intervalo [1,100]?
• Entradas:
– N/A
• Saídas: #include <stdio.h>
int main()
– soma {
int soma, n=1;
• Programa:
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
Exemplo em C: for
• Problema:
– Calcular a soma dos inteiros no intervalo [1,100]?
• Entradas:
– N/A inicialização teste de paragem actualização
Programação Estruturada
Sumário:
FIM