Académique Documents
Professionnel Documents
Culture Documents
Objectivos:
Problemas e Algoritmos
Para resolver um problema atravs dum computador necessrio encontrar em primeiro lugar
uma maneira de descrev-lo de uma forma clara e precisa.
tambm preciso que encontremos uma sequncia de passos que conduzam sua resoluo. Esta
sequncia de passos designada por algoritmo.
A noo de algoritmo central a toda a informtica.
A construo de algoritmos para resolver os problemas uma das maiores dificuldades, mas
tambm um dos maiores desafios para quem programa computadores.
Algoritmos e Programao Estruturada
Noo de Problema
Exemplo: como fazer um bolo?
Farinha de Trigo
Ovos Acar
Fermento Leite receita
Manteiga
Noo de Algoritmo
Compreender o problema
Identificar os dados de entrada
Identificar os dados de sada
Determinar o que preciso para transformar dados de entrada em dados de sada:
usar a estratgia do dividir-para-conquistar
observar regras e limitaes
identificar todas as aces a realizar
eliminar ambiguidades
Construir o algoritmo
Testar (manualmente) o algoritmo
Executar o algoritmo
Algoritmos e Programao Estruturada
Passo-a-passo, significa que cada passo completado antes que o prximo comece.
- Exemplo: impossvel ver telejornal antes de executar por inteiro o passo anterior de ligar a TV
Algoritmos e Programao Estruturada
Representaes de Algoritmos
Linguagem Natural
- Os algoritmos so expressos directamente em linguagem natural (e.g. o portugus como no exemplo do
bolo).
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.
Algoritmos e Programao Estruturada
Problema:
Cculo da mdia aritmtica de dois valores reais?
Entradas:
dois valores reais, X e Y
Sadas:
a mdia M=(X+Y)/2
Algoritmo:
1. Incio
2. Ler X,Y
3. Calcular a mdia M de X e Y
4. Escrever M
5. Fim
Algoritmos e Programao Estruturada
Problema:
Cculo da mdia aritmtica de dois valores reais? Incio
Entradas:
dois valores reais, X e Y Ler X
Sadas:
Ler Y
a mdia M=(X+Y)/2
Algoritmo:
M=(X+Y)/2
Escreve M
Fim
Algoritmos e Programao Estruturada
Problema:
Cculo da mdia aritmtica de dois valores reais?
Entradas:
dois valores reais, X e Y
Sadas:
a mdia M=(X+Y)/2
Algoritmo:
1. Incio
2. Ler X,Y
3. Calcular a mdia M=(X+Y)/2
4. Escrever M
5. Fim
Algoritmos e Programao Estruturada
Codificao em C (4)
Problema:
Cculo da mdia aritmtica de dois valores reais?
Entradas:
dois valores reais, X e Y
Sadas:
a mdia 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 Programao Estruturada
exit
exit
exit
{}
Sequncia
exit
Algoritmos e Programao Estruturada
if-else
Seleco 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;
Sadas: printf(Introduza x e y: \n);
scanf("%d%d", &x, &y);
M
if (x > y)
Programa: M = x;
else
M = y;
if
Seleco de 1-via
Exemplo em C: if
Problema:
Calcular o maior de dois inteiros?
Entradas:
x, y
#include <stdio.h>
Sadas: int main()
{
M int x, y, M;
printf(Introduza x e y: \n);
Programa: scanf("%d%d", &x, &y);
M = x;
if (y > M)
M = y;
switch
Seleco de n-vias
Exemplo em C: switch
#include <stdio.h>
int main()
{
Problema:
int x, y, resultado;
Calculadora aritmtica com as 4 char operacao;
operaes bsicas?
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
Sadas: #include <stdio.h>
int main()
soma {
int soma, n=1;
Programa:
soma = 0; // inicializao da varivel soma
while (n <= 100) // teste de paragem
{
soma = soma + n; // actualizao da varivel soma
n = n + 1; // actualizao da varivel de controlo
}
false
Algoritmos e Programao Estruturada
Exemplo em C: do-while
Problema:
Calcular a soma dos inteiros no intervalo [1,100]?
Entradas:
N/A
Sadas: #include <stdio.h>
int main()
soma {
int soma, n=1;
Programa:
soma = 0; // inicializao da varivel soma
do
{
soma = soma + n; // actualizao da varivel soma
n = n + 1; // actualizao da varivel 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 inicializao teste de paragem actualizao
Programao Estruturada
Sumrio:
FIM