Існує багато способів написання програми для вирішення одного і того ж завдання. Тож, спробуймо інший варіант перетворювача температур.
#include <stdio.h>
/* виводить таблицю Фаренгейт-Цельсій */
main()
{
int fahr;
for (fahr = 0; fahr <= 300; fahr = fahr + 20)
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
}
Це спричиняє ті самі відповіді, але, без сумніву, виглядає інакше. Одна з основних перемін — це видалення більшості змінних; залишилась тільки fahr, і ми оголосили її як int. Верхня й нижня межа та крок представлені як константи у твердженні for, — нової для нас конструкції. Вираз, що обчислює температуру за Цельсієм, з'являється як третій аргумент printf, замість окремого виразу присвоєння.
Ця остання зміна є прикладом загального правила — у будь-якому контексті, де вживається значення певного типу, ви можете використати складніший вираз того самого типу. Оскільки третім аргументом printf має бути число з рухомою точкою, щоб зійтися з %6.1f, то будь-який вираз, що повертає число з рухомою точкою, може зайняти це місце.
Твердження for також є циклом — узагальненим випадком while. Якщо ви порівняєте його з попереднім while, то робота for стане зрозумілою. Всередині дужок існують три частини, розділені крапкою з комою. Перша частина, ініціалізація
fahr = 0
відбувається один раз, ще до того, як увійти до циклу. Друга частина — це перевірка умови, яка контролює цикл:
fahr <= 300
Ця умова обчислюється; якщо вона істинна, буде виконано корпус циклу (в цьому випадку один вираз printf). Після цього виконується стадія приросту
fahr = fahr + 20
і умова оцінюється знову. Цикл завершиться тільки тоді, коли умова виявиться хибною. Так само як і з while, корпус циклу може містити одне твердження або групу тверджень, включених у фігурні дужки. Ініціалізацією, умовою та приростом може служити будь-який вираз.
Вибір між while і for є довільним і може залежати тільки від того, який з них здається зрозумілішим. for, як правило, підходить для циклів, в яких ініціалізація та приріст складаються з одного виразу кожен, і вони логічно пов'язані між собою. Це компактніше за while, і зберігає вирази, які контролюють цикл, разом, в одному місці.
Вправа 1-5. Змініть програму перетворення температур, щоб вона виводила таблицю у зворотній послідовності, тобто від 300 градусів до 0.