Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
1 Primeiros Passos naPrimeiros Passos na Linguagem C/C++Linguagem C/C++ Prof. Marcelo CohenProf. Marcelo Cohen flash@flash@infinf..pucrspucrs..brbr 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ção de 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 de programação (C/C++)programação (C/C++) Como traduzir umComo traduzir um algoritmo ?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 resultado na telana tela ❂❂ Para traduzi-Para traduzi-lolo, será necessário, será necessário conhecer a conhecer a sintaxesintaxe da linguagem C, da linguagem C, isto é, como escrever corretamente oisto é, como escrever corretamente o programa de forma que o compiladorprograma de forma que o compilador entenda.entenda. Algoritmo originalAlgoritmo original 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édia FIMFIM 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édia FIMFIM ##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 para entrada 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 do algoritmo (main – principal em inglê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 do tipo inteiro (int) – x, y e z Observe que TODAS AS VARIÁVEIS devem ser declaradas antes de serem usadas! 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 cada comando é necessária a presença de 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 das variá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ção de um valor inteiro e armazena na 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úmeros e armazena o resultado na variá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 na tela o valor da variável media, calculado na linha anterior 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 ao FIM 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 a mé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 do que o programa faz, a não ser que consulte oque o programa faz, a não ser que consulte o código-fonte.código-fonte. ❂❂ Para resolver o problema, temos que exibirPara resolver o problema, temos que exibir mensagens que orientem o usuário: isso émensagens que orientem o usuário: isso é essencialessencial em qualquer programa, por menor em qualquer programa, por menor que 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ê as medidas de um terreno retangular e demedidas de um terreno retangular e de uma casa sobre este terreno.uma casa sobre este terreno. ❂❂ A seguir, calcula e exibe o percentualA seguir, calcula e exibe o percentual de á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 na próxima linha da tela. Observe que o resultado será exibido na mesma linha do texto “Percentual de área livre” Outro exemplo:Outro exemplo: ❂❂ Escrever um algoritmo que lê osEscrever um algoritmo que lê os coeficientes 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 biblioteca matemática (math.h) para que seja possível usar funções matemáticas, como raiz 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 ??