5
1 Primeiros Passos na Primeiros Passos na Linguagem C/C++ Linguagem C/C++ Prof. Marcelo Cohen Prof. Marcelo Cohen flash@ flash@inf inf. pucrs pucrs.br br Algoritmos x Programação Algoritmos x Programação Algoritmo é Algoritmo é um conjunto finito de um conjunto finito de regras, bem definidas, para a solução regras, bem definidas, para a solução de um problema em um tempo finito de um problema em um tempo finito (Orth Orth, 2001). , 2001). Programa Programa é um algoritmo codificado é um algoritmo codificado (escrito) em uma linguagem de (escrito) em uma linguagem de programação (C/C++) programação (C/C++) Como traduzir um Como traduzir um algoritmo ? algoritmo ? Exemplo: algoritmo que lê 3 valores, Exemplo: algoritmo que lê 3 valores, calcula a média e escreve o resultado calcula a média e escreve o resultado na tela na tela Para traduzi- Para traduzi-lo lo, será necessário , será necessário conhecer a conhecer a sintaxe sintaxe da linguagem C, da linguagem C, isto é, como escrever corretamente o isto é, como escrever corretamente o programa de forma que o compilador programa de forma que o compilador entenda. entenda. Algoritmo original Algoritmo original INÍCIO INÍCIO INTEIRO x, y, z INTEIRO x, y, z REAL média REAL média LER x LER x LER y LER y LER z LER z média = (x+y+z)/3 média = (x+y+z)/3 ESCREVER média ESCREVER média FIM FIM Programa equivalente em C/C++ Programa equivalente em C/C++ INÍCIO INÍCIO INTEIRO x, y, z INTEIRO x, y, z REAL média REAL média LER x LER x LER y LER y LER z LER z média = (x+y+z)/3 média = (x+y+z)/3 ESCREVER média ESCREVER média FIM FIM #include include <iostream iostream.h> .h> main main() () { int int x, y, z; x, y, z; float float media; media; cin cin >> x; >> x; cin cin >> y; >> y; cin cin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; cout cout << media; << media; } Olhando o programa de perto Olhando o programa de perto #include include <iostream iostream.h> .h> main main() () { int int x, y, z; x, y, z; float float media; media; cin cin >> x; >> x; cin cin >> y; >> y; cin cin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; cout cout << media; << media; }

Algoritmo c++

Embed Size (px)

Citation preview

Page 1: Algoritmo c++

1

Primeiros Passos naPrimeiros Passos naLinguagem C/C++Linguagem C/C++

Prof. Marcelo CohenProf. Marcelo Cohenflash@[email protected]

Algoritmos x ProgramaçãoAlgoritmos x Programação❂❂ Algoritmo é Algoritmo é um conjunto finito deum conjunto finito de

regras, bem definidas, para a soluçãoregras, bem definidas, para a soluçãode um problema em um tempo finitode um problema em um tempo finito((OrthOrth, 2001)., 2001).

❂❂ ProgramaPrograma é um algoritmo codificado é um algoritmo codificado(escrito) em uma linguagem de(escrito) em uma linguagem deprogramação (C/C++)programação (C/C++)

Como traduzir umComo traduzir umalgoritmo ?algoritmo ?

❂❂ Exemplo: algoritmo que lê 3 valores,Exemplo: algoritmo que lê 3 valores,calcula a média e escreve o resultadocalcula a média e escreve o resultadona telana tela

❂❂ Para traduzi-Para traduzi-lolo, será necessário, será necessárioconhecer a conhecer a sintaxesintaxe da linguagem C, da linguagem C,isto é, como escrever corretamente oisto é, como escrever corretamente oprograma de forma que o compiladorprograma de forma que o compiladorentenda.entenda.

Algoritmo originalAlgoritmo originalINÍCIOINÍCIO INTEIRO x, y, z INTEIRO x, y, z REAL média REAL média LER x LER x LER y LER y LER z LER z média = (x+y+z)/3 média = (x+y+z)/3 ESCREVER média ESCREVER médiaFIMFIM

Programa equivalente em C/C++Programa equivalente em C/C++

INÍCIOINÍCIO INTEIRO x, y, z INTEIRO x, y, z REAL média REAL média LER x LER x LER y LER y LER z LER z média = (x+y+z)/3 média = (x+y+z)/3 ESCREVER média ESCREVER médiaFIMFIM

##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z; x, y, z; floatfloat media; media; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; coutcout << media; << media;}}

Olhando o programa de pertoOlhando o programa de perto

##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z; x, y, z; floatfloat media; media; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; coutcout << media; << media;}}

Page 2: Algoritmo c++

2

Olhando o programa de pertoOlhando o programa de perto

##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z; x, y, z; floatfloat media; media; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; coutcout << media; << media;}}

Indica uso da biblioteca paraentrada e saída padrão (iostream)

Olhando o programa de pertoOlhando o programa de perto

##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z; x, y, z; floatfloat media; media; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; coutcout << media; << media;}}

Corresponde ao INÍCIO doalgoritmo (main – principal eminglês)

Olhando o programa de pertoOlhando o programa de perto

##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z; x, y, z; floatfloat media; media; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; coutcout << media; << media;}}

Declaração de 3 variáveis dotipo inteiro (int) – x, y e z

Observe que TODAS ASVARIÁVEIS devem serdeclaradas antes de seremusadas!

Olhando o programa de pertoOlhando o programa de perto

##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z x, y, z;; floatfloat media; media; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; coutcout << media; << media;}}

Note que no final da cadacomando é necessária a presençade um ponto-e-vírgula!

Olhando o programa de pertoOlhando o programa de perto

##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z; x, y, z; floatfloat media; media; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; coutcout << media; << media;}}

Declaração da variável media,cujo tipo é real (float)

Atenção! Repare que os nomes dasvariáveis não podem ter acentuação!

Olhando o programa de pertoOlhando o programa de perto

##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z; x, y, z; floatfloat media; media; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; coutcout << media; << media;}}

Equivale ao LER: espera a digitaçãode um valor inteiro e armazenana variável x

(Idem para as variáveis y e z)

Page 3: Algoritmo c++

3

Olhando o programa de pertoOlhando o programa de perto

##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z; x, y, z; floatfloat media; media; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3;media = (x+y+z)/3; coutcout << media; << media;}}

Calcula a média dos 3 númerose armazena o resultado navariável media

Olhando o programa de pertoOlhando o programa de perto

##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z; x, y, z; floatfloat media; media; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; coutcout << media; << media;}}

Finalmente, ESCREVE natela o valor da variávelmedia, calculado na linhaanterior

Olhando o programa de pertoOlhando o programa de perto

##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z; x, y, z; floatfloat media; media; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; coutcout << media; << media;}}

A chave final equivale aoFIM do algoritmo

Problema do programa ?Problema do programa ?❂❂ O programa não informa nada ao usuário: iráO programa não informa nada ao usuário: irá

esperar a digitação dos 3 valores, calcular aesperar a digitação dos 3 valores, calcular amédia e exibi-média e exibi-lala na tela. na tela.

❂❂ Porém, o usuário não tem a menor idéia doPorém, o usuário não tem a menor idéia doque o programa faz, a não ser que consulte oque o programa faz, a não ser que consulte ocódigo-fonte.código-fonte.

❂❂ Para resolver o problema, temos que exibirPara resolver o problema, temos que exibirmensagens que orientem o usuário: isso émensagens que orientem o usuário: isso éessencialessencial em qualquer programa, por menor em qualquer programa, por menorque seja!que seja!

Tornando o programa maisTornando o programa mais“amigável”“amigável”##include include <<iostreamiostream.h>.h>mainmain()(){{ intint x, y, z; x, y, z; floatfloat media; media; cout cout << “Digite 3 valores: “;<< “Digite 3 valores: “; cincin >> x; >> x; cincin >> y; >> y; cincin >> z; >> z; media = (x+y+z)/3; media = (x+y+z)/3; cout cout << “A média é: “ << media;<< “A média é: “ << media;}}

Outro exemplo:Outro exemplo:

❂❂ Escrever um algoritmo que lê asEscrever um algoritmo que lê asmedidas de um terreno retangular e demedidas de um terreno retangular e deuma casa sobre este terreno.uma casa sobre este terreno.

❂❂ A seguir, calcula e exibe o percentualA seguir, calcula e exibe o percentualde área livre no terreno.de área livre no terreno.

❂❂ Algoritmo já resolvido em aula!Algoritmo já resolvido em aula!❂❂ Codificaremos diretamente em C...Codificaremos diretamente em C...

Page 4: Algoritmo c++

4

Programa do Terreno e CasaPrograma do Terreno e Casa

##include include <<iostreamiostream.h>.h>

mainmain()(){{ float largfloat larg__terrterr, , altalt__terrterr, , larglarg_casa, _casa, altalt_casa;_casa; floatfloat areaarea__terrterr, , areaarea_casa, _casa, areaarea_livre;_livre; cout cout << “Digite as medidas do terreno: “;<< “Digite as medidas do terreno: “; cincin >> >> larglarg__terrterr;; cincin >> >> altalt__terrterr;; coutcout << “Digite as medidas da casa: “; << “Digite as medidas da casa: “; cin cin >> >> larglarg_casa;_casa; cin cin >> >> altalt_casa;_casa; ...... continua continua ... ...

Programa do Terreno e CasaPrograma do Terreno e Casa

... ... areaarea__terr terr = = larglarg__terr terr * * altalt__terrterr;; areaarea_casa = _casa = larglarg_casa * _casa * altalt_casa;_casa; areaarea_livre = _livre = areaarea__terr terr – – areaarea_casa;_casa; cout cout << “Percentual de área livre: “;<< “Percentual de área livre: “; cout cout << << areaarea_livre / _livre / areaarea__terr terr * 100 << “%\n”;* 100 << “%\n”;}}

Programa do Terreno e CasaPrograma do Terreno e Casa

... ... areaarea__terr terr = = larglarg__terr terr * * altalt__terrterr;; areaarea_casa = _casa = larglarg_casa * _casa * altalt_casa;_casa; areaarea_livre = _livre = areaarea__terr terr – – areaarea_casa;_casa; cout cout << “Percentual de área livre: “;<< “Percentual de área livre: “; cout cout << << areaarea_livre / _livre / areaarea__terr terr * 100 << “%* 100 << “%\n\n”;”;}}

O caractere \n significa “ir para a linha seguinte”, istoé, faz com que a próxima mensagem seja exibida napróxima linha da tela.

Observe que o resultado será exibido na mesma linhado texto “Percentual de área livre”

Outro exemplo:Outro exemplo:

❂❂ Escrever um algoritmo que lê osEscrever um algoritmo que lê oscoeficientes de uma equação de 2coeficientes de uma equação de 2oo

grau.grau.❂❂ A seguir, calcula e exibe as raízesA seguir, calcula e exibe as raízes

(através da fórmula de (através da fórmula de BaskaraBaskara).).❂❂ Ao codificarmos esse algoritmo,Ao codificarmos esse algoritmo,

surgirão alguns problemas...surgirão alguns problemas...

Programa das RaízesPrograma das Raízes

##include include <<iostreamiostream.h>.h>##include include <<mathmath.h>.h>mainmain()(){{ float float a,b,c;a,b,c; floatfloat delta,x1,x2; delta,x1,x2; cout cout << “Digite os 3 coeficientes: “;<< “Digite os 3 coeficientes: “; cincin >> a; >> a; cincin >> b; >> b; cin cin >> c;>> c; delta = b*b – 4 * a * c; delta = b*b – 4 * a * c; x1 = (-b + x1 = (-b + sqrtsqrt(delta)) / (2*a);(delta)) / (2*a); x2 = (-b - x2 = (-b - sqrtsqrt(delta)) / (2*a);(delta)) / (2*a); cout cout << “As raízes são: “;<< “As raízes são: “; cout cout << x1 << “ e “ << x2 << “\n”;<< x1 << “ e “ << x2 << “\n”;}}

Programa das RaízesPrograma das Raízes

##include include <<iostreamiostream.h>.h>##include include <<mathmath.h>.h>mainmain()(){{ float float a,b,c;a,b,c; floatfloat delta,x1,x2; delta,x1,x2; cout cout << “Digite os 3 coeficientes: “;<< “Digite os 3 coeficientes: “; cincin >> a; >> a; cincin >> b; >> b; cin cin >> c;>> c; delta = b*b – 4 * a * c; delta = b*b – 4 * a * c; x1 = (-b + x1 = (-b + sqrtsqrt(delta)) / (2*a);(delta)) / (2*a); x2 = (-b - x2 = (-b - sqrtsqrt(delta)) / (2*a);(delta)) / (2*a); cout cout << “As raízes são: “;<< “As raízes são: “; cout cout << x1 << “ e “ << x2 << “\n”;<< x1 << “ e “ << x2 << “\n”;}}

Inclusão da bibliotecamatemática (math.h)para que seja possívelusar funçõesmatemáticas, comoraiz quadrada,potência, etc.

Page 5: Algoritmo c++

5

Programa das RaízesPrograma das Raízes

##include include <<iostreamiostream.h>.h>##include include <<mathmath.h>.h>mainmain()(){{ float float a,b,c;a,b,c; floatfloat delta,x1,x2; delta,x1,x2; cout cout << “Digite os 3 coeficientes: “;<< “Digite os 3 coeficientes: “; cincin >> a; >> a; cincin >> b; >> b; cin cin >> c;>> c; delta = b*b – 4 * a * c; delta = b*b – 4 * a * c; x1 = (-b + x1 = (-b + sqrtsqrt(delta)(delta)) / (2*a);) / (2*a); x2 = (-b - x2 = (-b - sqrtsqrt(delta)) / (2*a);(delta)) / (2*a); cout cout << “As raízes são: “;<< “As raízes são: “; cout cout << x1 << “ e “ << x2 << “\n”;<< x1 << “ e “ << x2 << “\n”;}}

Função raiz quadrada:sqrt (square root)

O O que pode dar errado que pode dar errado ??❂❂ ProgramasProgramas devemdevem preverprever erros erros dodo

usuáriousuário!!

❂❂ No No caso caso do do programa das raízesprograma das raízes::•• Valor de A Valor de A pode ser negativo pode ser negativo ??•• Delta Delta pode dar negativo pode dar negativo ??

❂❂ OO que acontece que acontece ??