Primeiros Passos na Linguagem C/C++ Prof. Marcelo Cohen flash@inf inf.pucrs.br Algoritmos x Programação Algoritmo é um conjunto finito de regras, bem definidas, para a solução de um problema em um tempo finito (Orth,, 2001). Programa é um algoritmo codificado (escrito) em uma linguagem de programação (C/C++) Como traduzir um algoritmo? Exemplo: algoritmo que lê 3 valores, calcula a média e escreve o resultado na tela Para traduzi-lo lo,, será necessário conhecer a sintaxe da linguagem C, isto é, como escrever corretamente o programa de forma que o compilador entenda. Algoritmo original INÍCIO INTEIRO x, y, z REAL média LER x LER y LER z média = (x+y+z)/3 ESCREVER média FIM Programa equivalente em C/C++ INÍCIO INTEIRO x, y, z REAL média LER x LER y LER z média = (x+y+z)/3 ESCREVER média FIM 1
Indica uso da biblioteca para entrada e saída padrão (iostream) Corresponde ao INÍCIO do algoritmo (main principal em inglês) 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! z Note que no final da cada comando é necessária a presença de um ponto-e-vírgula! 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! 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) 2
Calcula a média dos 3 números e armazena o resultado na variável media Finalmente, ESCREVE na tela o valor da variável media, calculado na linha anterior Problema do programa? A chave final equivale ao FIM do algoritmo O programa não informa nada ao usuário: irá esperar a digitação dos 3 valores, calcular a média e exibi-la na tela. Porém, o usuário não tem a menor idéia do que o programa faz, a não ser que consulte o código-fonte. Para resolver o problema, temos que exibir mensagens que orientem o usuário: isso é essencial em qualquer programa, por menor que seja! Tornando o programa mais amigável cout << Digite 3 valores: ; cout << A média é: << 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 3
Programa do Terreno e Casa float larg_terr terr, alt_terr terr, larg_casa, alt_casa; float area_terr terr, area_casa, area_livre; cout << Digite as medidas do terreno: ; cin >> larg_terr cin >> alt_terr cout << Digite as medidas da casa: ; cin >> larg_casa; cin >> alt_casa; continua Programa do Terreno e Casa area_terr = larg_terr * alt_terr area_casa = larg_casa * alt_casa; area_livre = area_terr area_casa; cout << Percentual de área livre: ; cout << area_livre / area_terr * 100 << %\n ; Programa do Terreno e Casa area_terr = larg_terr * alt_terr area_casa = larg_casa * alt_casa; area_livre = area_terr area_casa; cout << Percentual de área livre: ; cout << area_livre / area_terr * 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: Escrever um algoritmo que lê os coeficientes de uma equação de 2 o grau. A seguir, calcula e exibe as raízes (através da fórmula de Baskara). Ao codificarmos esse algoritmo, surgirão alguns problemas Programa das Raízes x1 = (-b + sqrt(delta)) / (2*a); Programa das Raízes x1 = (-b + sqrt(delta)) / (2*a); Inclusão da biblioteca matemática (math.h) para que seja possível usar funções matemáticas, como raiz quadrada, potência, etc. 4
Programa das Raízes x1 = (-b + sqrt(delta) (delta))) / (2*a); Função raiz quadrada: sqrt (square root) O que pode dar errado? Programas devem prever erros do usuário! No caso do programa das raízes: Valor de A pode ser negativo? Delta pode dar negativo? O que acontece? 5