Looping: um exemplo real Suponhamos que você queira criar um programa que imprima uma tabela de conversão Fahrenheit para Celsius. Isso pode ser facilmente obtido com um loop for ou loop while:
#include <stdio.h>
int main()
{
int a;
a = 0;
while (a <= 100)
{
printf("%4d graus F = %4d graus C\n",
a, (a - 32) * 5 / 9);
a = a + 10;
}
return 0;
}
Se executar este programa, ele produzirá uma tabela de valores iniciando em 0 graus F e terminando em 100 graus F. O resultado será este:
0 graus F = -17 graus C
10 graus F = -12 graus C
20 graus F = -6 graus C
30 graus F = -1 graus C
40 graus F = 4 graus C
50 graus F = 10 graus C
60 graus F = 15 graus C
70 graus F = 21 graus C
80 graus F = 26 graus C
90 graus F = 32 graus C
100 graus F = 37 graus C
Os valores da tabela estão em incrementos de 10 graus. Observe como é fácil alterar os valores iniciais, finais ou de incremento da tabela que o programa produz.
Para valores mais precisos, você pode usar valores de ponto flutuante:
#include <stdio.h>
int main()
{
float a;
a = 0;
while (a <= 100)
{
printf("%6.2f graus F = %6.2f graus C\n",
a, (a - 32.0) * 5.0 / 9.0);
a = a + 10;
}
return 0;
}
Você pode ver que a declaração de a foi alterada para flutuante, e o símbolo %f substitui o símbolo %d na instrução printf. Além disso, o símbolo %f possui alguma formatação: o valor será impresso com 6 dígitos inteiros e 2 decimais.
Agora vamos supor que queiramos modificar o programa para que a temperatura 98.6 seja inserida na tabela na posição adequada. Isto é, queremos que a tabela aumente a cada 10 graus e que inclua uma linha extra para 98.6 graus F, que é a temperatura corpórea normal do ser humano. O programa seguinte atende essa finalidade:
#include <stdio.h>
int main()
{
float a;
a = 0;
while (a <= 100)
{
if (a > 98.6)
{
printf("%6.2f graus F = %6.2f graus C\n",
98.6, (98.6 - 32.0) * 5.0 / 9.0);
}
printf("%6.2f graus F = %6.2f graus C\n",
a, (a - 32.0) * 5.0 / 9.0);
a = a + 10;
}
return 0;
}
Este programa funciona se o valor final for 100, mas se você alterar o valor final para 200, verá que o programa tem um bug. Ele imprime a linha de 98.6° várias vezes. Este problema pode ser corrigido de várias formas. Eis uma:
#include <stdio.h>
int main()
{
float a, b;
a = 0;
b = -1;
while (a <= 100)
{
if ((a > 98.6) && (b < 98.6))
{
printf("%6.2f graus F = %6.2f graus C\n",
98.6, (98.6 - 32.0) * 5.0 / 9.0);
}
printf("%6.2f graus F = %6.2f graus C\n",
a, (a - 32.0) * 5.0 / 9.0);
b = a;
a = a + 10;
}
return 0;
}
|
|
Nenhum comentário:
Postar um comentário