Você está na página 1de 5

Algoritmos x Programao

Primeiros Passos na Algoritmo um conjunto finito de


Linguagem C/C++ regras, bem definidas, para a soluo
de um problema em um tempo finito
(Orth,
Orth, 2001).

Prof. Marcelo Cohen Programa um algoritmo codificado


flash@inf
flash@inf..pucrs.
pucrs.br (escrito) em uma linguagem de
programao (C/C++)

Como traduzir um
Algoritmo original
algoritmo ?
INCIO
Exemplo: algoritmo que l 3 valores, INTEIRO x, y, z
calcula a mdia e escreve o resultado
na tela REAL mdia
LER x
Para traduzi-lo
traduzi-lo,, ser necessrio LER y
conhecer a sintaxe da linguagem C, LER z
isto , como escrever corretamente o mdia = (x+y+z)/3
programa de forma que o compilador
entenda. ESCREVER mdia
FIM

Programa equivalente em C/C++ Olhando o programa de perto


INCIO #include <iostream.h>
iostream.h> #include <iostream.h>
iostream.h>
INTEIRO x, y, z main()
main() main()
main()
REAL mdia { {
LER x int x, y, z; int x, y, z;
LER y float media; float media;
LER z cin >> x; cin >> x;
mdia = (x+y+z)/3 cin >> y; cin >> y;
ESCREVER mdia cin >> z; cin >> z;
FIM media = (x+y+z)/3; media = (x+y+z)/3;
cout << media; cout << media;
} }

1
Olhando o programa de perto Olhando o programa de perto
#include <iostream.h>
iostream.h> #include <iostream.h>
iostream.h>
main()
main() main()
main()
Corresponde ao INCIO do
{ Indica uso da biblioteca para { algoritmo (main principal em
int x, y, z; entrada e sada padro (iostream) int x, y, z; ingls)
float media; float media;
cin >> x; cin >> x;
cin >> y; cin >> y;
cin >> z; cin >> z;
media = (x+y+z)/3; media = (x+y+z)/3;
cout << media; cout << media;
} }

Olhando o programa de perto Olhando o programa de perto


#include <iostream.h>
iostream.h> #include <iostream.h>
iostream.h>
main()
main() main()
main()
Note que no final da cada
{ {
comando necessria a presena
int x, y, z; int x, y, z;
z; de um ponto-e-vrgula!
float media; Declarao de 3 variveis do float media;
tipo inteiro (int) x, y e z
cin >> x; cin >> x;
cin >> y; Observe que TODAS AS cin >> y;
cin >> z; VARIVEIS devem ser cin >> z;
media = (x+y+z)/3; declaradas antes de serem media = (x+y+z)/3;
cout << media; usadas! cout << media;
} }

Olhando o programa de perto Olhando o programa de perto


#include <iostream.h>
iostream.h> #include <iostream.h>
iostream.h>
main()
main() main()
main()
{ Declarao da varivel media, { Equivale ao LER: espera a digitao
int x, y, z; cujo tipo real (float) int x, y, z; de um valor inteiro e armazena
float media; float media; na varivel x
Ateno! Repare que os nomes das
cin >> x; cin >> x;
variveis no podem ter acentuao! (Idem para as variveis y e z)
cin >> y; cin >> y;
cin >> z; cin >> z;
media = (x+y+z)/3; media = (x+y+z)/3;
cout << media; cout << media;
} }

2
Olhando o programa de perto Olhando o programa de perto
#include <iostream.h>
iostream.h> #include <iostream.h>
iostream.h>
main()
main() main()
main()
{ {
int x, y, z; int x, y, z;
float media; Calcula a mdia dos 3 nmeros float media;
e armazena o resultado na
cin >> x; cin >> x;
varivel media
cin >> y; cin >> y;
cin >> z; cin >> z;
Finalmente, ESCREVE na
media = (x+y+z)/3; media = (x+y+z)/3; tela o valor da varivel
cout << media; cout << media; media, calculado na linha
} } anterior

Olhando o programa de perto Problema do programa ?


#include <iostream.h>
iostream.h> O programa no informa nada ao usurio: ir
main()
main() esperar a digitao dos 3 valores, calcular a
mdia e exibi-la
exibi-la na tela.
{
int x, y, z;
Porm, o usurio no tem a menor idia do
float media; que o programa faz, a no ser que consulte o
cin >> x; cdigo-fonte.
cin >> y;
cin >> z; Para resolver o problema, temos que exibir
mensagens que orientem o usurio: isso
media = (x+y+z)/3; essencial em qualquer programa, por menor
cout << media; que seja!
A chave final equivale ao
}
FIM do algoritmo

Tornando o programa mais


amigvel Outro exemplo:
#include <iostream.h>
iostream.h>
main()
main()
{ Escrever um algoritmo que l as
int x, y, z; medidas de um terreno retangular e de
float media; uma casa sobre este terreno.
cout << Digite 3 valores: ; A seguir, calcula e exibe o percentual
cin >> x; de rea livre no terreno.
cin >> y; Algoritmo j resolvido em aula!
cin >> z; Codificaremos diretamente em C...
media = (x+y+z)/3;
cout << A mdia : << media;
}

3
Programa do Terreno e Casa Programa do Terreno e Casa
#include <iostream.h>
iostream.h> ...
area_
area_terr = larg_
larg_terr * alt_
alt_terr;
terr;
main()
main() area_casa
area_casa = larg_casa
larg_casa * alt_casa;
alt_casa;
{ area_livre
area_livre = area_
area_terr area_casa;
area_casa;
float larg_
larg_terr,
terr, alt_
alt_terr,
terr, larg_casa,
larg_casa, alt_casa;
alt_casa; cout << Percentual de rea livre: ;
float area_
area_terr,
terr, area_casa,
area_casa, area_livre;
area_livre; cout << area_livre
area_livre / area_
area_terr * 100 << %\n;
cout << Digite as medidas do terreno: ; }
cin >> larg_
larg_terr;
terr;
cin >> alt_
alt_terr;
terr;
cout << Digite as medidas da casa: ;
cin >> larg_casa;
larg_casa;
cin >> alt_casa;
alt_casa;
...
continua
...

Programa do Terreno e Casa


... Outro exemplo:
area_
area_terr = larg_
larg_terr * alt_
alt_terr;
terr;
area_casa
area_casa = larg_casa
larg_casa * alt_casa;
alt_casa;
area_livre
area_livre = area_
area_terr area_casa;
area_casa;
cout << Percentual de rea livre: ; Escrever um algoritmo que l os
cout << area_livre
area_livre / area_
area_terr * 100 << %\n
%\n;
; coeficientes de uma equao de 2o
}
grau.
A seguir, calcula e exibe as razes

O caractere \n significa ir para a linha seguinte, isto (atravs da frmula de Baskara).


Baskara).
, faz com que a prxima mensagem seja exibida na Ao codificarmos esse algoritmo,
prxima linha da tela.
surgiro alguns problemas...
Observe que o resultado ser exibido na mesma linha
do texto Percentual de rea livre

Programa das Razes Programa das Razes Incluso da biblioteca


matemtica (math.h)
#include <iostream.h>
iostream.h> #include <iostream.h>
iostream.h> para que seja possvel
#include <math.h>
math.h> #include <math.h>
math.h> usar funes
main()
main() main()
main() matemticas, como
{ { raiz quadrada,
float a,b,c; float a,b,c; potncia, etc.
float delta,x1,x2; float delta,x1,x2;
cout << Digite os 3 coeficientes: ; cout << Digite os 3 coeficientes: ;
cin >> a; cin >> a;
cin >> b; cin >> b;
cin >> c; cin >> c;
delta = b*b 4 * a * c; delta = b*b 4 * a * c;
x1 = (-b + sqrt(delta))
sqrt(delta)) / (2*a); x1 = (-b + sqrt(delta))
sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta))
sqrt(delta)) / (2*a); x2 = (-b - sqrt(delta))
sqrt(delta)) / (2*a);
cout << As razes so: ; cout << As razes so: ;
cout << x1 << e << x2 << \n; cout << x1 << e << x2 << \n;
} }

4
Programa das Razes
#include <iostream.h>
iostream.h>
#include <math.h>
math.h>
O que pode dar errado ?
main()
main()
{
Programas devem prever erros do
float a,b,c; usurio!
usurio!
float delta,x1,x2;
cout << Digite os 3 coeficientes: ;
cin >> a; No caso do programa das razes:
razes:
cin >> b; Valor de A pode ser negativo ?
cin >> c; Funo raiz quadrada: Delta pode dar negativo ?
delta = b*b 4 * a * c; sqrt (square root)
x1 = (-b + sqrt(delta)
sqrt(delta))) / (2*a);
x2 = (-b - sqrt(delta))
sqrt(delta)) / (2*a); O que acontece ?
cout << As razes so: ;
cout << x1 << e << x2 << \n;
}

Você também pode gostar