Upload
bruno-lino
View
35
Download
2
Embed Size (px)
Citation preview
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;}}
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)
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...
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.
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 ??