You are on page 1of 5

Primeiros Passos na Linguagem C/C++

Prof. Marcelo Cohen flash@inf.pucrs.br flash@inf.pucrs.

Algoritmos x Programao

Algoritmo um conjunto finito de regras, bem definidas, para a soluo de um problema em um tempo finito (Orth, 2001). Orth, Programa um algoritmo codificado (escrito) em uma linguagem de programao (C/C++)

Como traduzir um algoritmo ?

Algoritmo original
INCIO INTEIRO x, y, z REAL mdia LER x LER y LER z mdia = (x+y+z)/3 ESCREVER mdia FIM

Exemplo: algoritmo que l 3 valores, calcula a mdia e escreve o resultado na tela Para traduzi-lo, ser necessrio traduzi-lo, conhecer a sintaxe da linguagem C, isto , como escrever corretamente o programa de forma que o compilador entenda.

Programa equivalente em C/C++


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

Olhando o programa de perto


#include <iostream.h> iostream.h> main() main() { int x, y, z; float media; cin >> x; cin >> y; cin >> z; media = (x+y+z)/3; cout << media; }

Olhando o programa de perto


#include <iostream.h> iostream.h> main() main() { Indica uso da biblioteca para entrada e sada padro (iostream) int x, y, z; float media; cin >> x; cin >> y; cin >> z; media = (x+y+z)/3; cout << media; }

Olhando o programa de perto


#include <iostream.h> iostream.h> main() main() Corresponde ao INCIO do { algoritmo (main principal em int x, y, z; ingls) float media; cin >> x; cin >> y; cin >> z; media = (x+y+z)/3; cout << media; }

Olhando o programa de perto


#include <iostream.h> iostream.h> main() main() { int x, y, z; float media; cin >> x; cin >> y; cin >> z; media = (x+y+z)/3; cout << media; }

Olhando o programa de perto


#include <iostream.h> iostream.h> main() main() Note que no final da cada { comando necessria a presena int x, y, z; z; de um ponto-e-vrgula! float media; cin >> x; cin >> y; cin >> z; media = (x+y+z)/3; cout << media; }

Declarao de 3 variveis do tipo inteiro (int) x, y e z Observe que TODAS AS VARIVEIS devem ser declaradas antes de serem usadas!

Olhando o programa de perto


#include <iostream.h> iostream.h> main() main() { Declarao da varivel media, cujo tipo real (float) int x, y, z; float media; Ateno! Repare que os nomes das cin >> x; variveis no podem ter acentuao! cin >> y; cin >> z; media = (x+y+z)/3; cout << media; }

Olhando o programa de perto


#include <iostream.h> iostream.h> main() main() { Equivale ao LER: espera a digitao de um valor inteiro e armazena int x, y, z; na varivel x float media; cin >> x; (Idem para as variveis y e z) cin >> y; cin >> z; media = (x+y+z)/3; cout << media; }

Olhando o programa de perto


#include <iostream.h> iostream.h> main() main() { int x, y, z; Calcula a mdia dos 3 nmeros float media; e armazena o resultado na cin >> x; varivel media cin >> y; cin >> z; media = (x+y+z)/3; cout << media; }

Olhando o programa de perto


#include <iostream.h> iostream.h> main() main() { int x, y, z; float media; cin >> x; cin >> y; cin >> z; media = (x+y+z)/3; cout << media; }

Finalmente, ESCREVE na tela o valor da varivel media, calculado na linha anterior

Olhando o programa de perto


#include <iostream.h> iostream.h> main() main() { int x, y, z; float media; cin >> x; cin >> y; cin >> z; media = (x+y+z)/3; cout << media; }

Problema do programa ?

O programa no informa nada ao usurio: ir esperar a digitao dos 3 valores, calcular a mdia e exibi-la na tela. exibi-la Porm, o usurio no tem a menor idia do que o programa faz, a no ser que consulte o cdigo-fonte. Para resolver o problema, temos que exibir mensagens que orientem o usurio: isso essencial em qualquer programa, por menor que seja!

A chave final equivale ao FIM do algoritmo

Tornando o programa mais amigvel


#include <iostream.h> iostream.h> main() main() { int x, y, z; float media; cout << Digite 3 valores: ; cin >> x; cin >> y; cin >> z; media = (x+y+z)/3; cout << A mdia : << media; }

Outro exemplo:

Escrever um algoritmo que l as medidas de um terreno retangular e de uma casa sobre este terreno. A seguir, calcula e exibe o percentual de rea livre no terreno. Algoritmo j resolvido em aula! Codificaremos diretamente em C...

Programa do Terreno e Casa


#include <iostream.h> iostream.h> main() main() { float larg_terr, alt_terr, larg_casa, alt_casa; larg_ terr, alt_ terr, larg_casa, alt_casa; float area_terr, area_casa, area_livre; area_ terr, area_casa, area_livre; cout << Digite as medidas do terreno: ; cin >> larg_terr; larg_ terr; cin >> alt_terr; alt_ terr; cout << Digite as medidas da casa: ; cin >> larg_casa; larg_casa; cin >> alt_casa; alt_casa; ... continua ...

Programa do Terreno e Casa


... area_terr = larg_terr * alt_terr; area_ larg_ alt_ terr; area_casa = larg_casa * alt_casa; area_casa larg_casa alt_casa; area_livre = area_terr area_casa; area_livre area_ area_casa; cout << Percentual de rea livre: ; cout << area_livre / area_terr * 100 << %\n; area_livre area_ }

Programa do Terreno e Casa


... area_terr = larg_terr * alt_terr; area_ larg_ alt_ terr; area_casa = larg_casa * alt_casa; area_casa larg_casa alt_casa; area_livre = area_terr area_casa; area_livre area_ area_casa; cout << Percentual de rea livre: ; cout << area_livre / area_terr * 100 << %\n; area_livre area_ %\n; }

Outro exemplo:
Escrever

O caractere \n significa ir para a linha seguinte, isto , faz com que a prxima mensagem seja exibida na prxima linha da tela. Observe que o resultado ser exibido na mesma linha do texto Percentual de rea livre

um algoritmo que l os coeficientes de uma equao de 2o grau. A seguir, calcula e exibe as razes (atravs da frmula de Baskara). Baskara). Ao codificarmos esse algoritmo, surgiro alguns problemas...

Programa das Razes


#include <iostream.h> iostream.h> #include <math.h> math.h> main() main() { float a,b,c; float delta,x1,x2; cout << Digite os 3 coeficientes: ; cin >> a; cin >> b; cin >> c; delta = b*b 4 * a * c; x1 = (-b + sqrt(delta)) / (2*a); sqrt(delta)) x2 = (-b - sqrt(delta)) / (2*a); sqrt(delta)) cout << As razes so: ; cout << x1 << e << x2 << \n; }

Programa das Razes

#include <iostream.h> iostream.h> #include <math.h> math.h> main() main() { float a,b,c; float delta,x1,x2; cout << Digite os 3 coeficientes: ; cin >> a; cin >> b; cin >> c; delta = b*b 4 * a * c; x1 = (-b + sqrt(delta)) / (2*a); sqrt(delta)) x2 = (-b - sqrt(delta)) / (2*a); sqrt(delta)) cout << As razes so: ; cout << x1 << e << x2 << \n; }

Incluso da biblioteca matemtica (math.h) para que seja possvel usar funes matemticas, como raiz quadrada, potncia, etc.

Programa das Razes


#include <iostream.h> iostream.h> #include <math.h> math.h> main() main() { float a,b,c; float delta,x1,x2; cout << Digite os 3 coeficientes: ; cin >> a; cin >> b; Funo raiz quadrada: cin >> c; sqrt (square root) delta = b*b 4 * a * c; x1 = (-b + sqrt(delta)) / (2*a); sqrt(delta)) x2 = (-b - sqrt(delta)) / (2*a); sqrt(delta)) cout << As razes so: ; cout << x1 << e << x2 << \n; }

O que pode dar errado ?


Programas

usurio! usurio!

devem prever erros do

No

caso do programa das razes: razes:

Valor de A pode ser negativo ? Delta pode dar negativo ?


O

que acontece ?

You might also like