60 15
80 26
100 37
120 48
140 60
160 71
180 82
200 93
220 104
240 115
260 126
280 137
300 148
Как и предыдущая, эта программа состоит из определения одной-единственной функции main
. Она длиннее программы, печатающей "здравствуй, мир", но по сути не сложнее. На ней мы продемонстрируем несколько новых возможностей, включая комментарий, объявления, переменные, арифметические выражения, циклы и форматный вывод.#include ‹stdio.h›
/* печать таблицы температур по Фаренгейту
и Цельсию для fahr = 0, 20,…, 300 */
main
{
int fahr, celsius;
int lower, upper, step;
lower = 0; /* нижняя граница таблицы температур */
upper = 300; /* верхняя граница */
step = 20; /* шаг */
fahr = lower;
while (fahr ‹= upper) {
celsius = 5 * (fahr-32) / 9;
printf("%d\t%d\n", fahr, celsius);
fahr = fahr + step;
}
}
Две строки:
/* печать таблицы температур по Фаренгейту
и Цельсию для fahr = 0, 20,… 300 */
являются комментарием
, который в данном случае кратко объясняет, что делает программа. Все символы, помещенные между /* и */, игнорируются компилятором, и этим можно свободно пользоваться, чтобы сделать программу более понятной. Комментарий можно располагать в любом месте, где могут стоять символы пробела, табуляции или символ новой строки.В Си любая переменная должна быть объявлена раньше, чем она будет использована; обычно все переменные объявляются в начале функции перед первой исполняемой инструкцией. В объявлении
описываются свойства переменных. Оно состоит из названия типа и списка переменных, например:int fahr, celsius;
int lower, upper, step;
Тип int
означает, что значения перечисленных переменных есть целые, в отличие от него тип float указывает на значения с плавающей точкой, т. е. на числа, которые могут иметь дробную часть. Диапазоны значений обоих типов зависят от используемой машины.Числа типа int
бывают как 16-разрядные (лежат в диапазоне от -32768 до 32767), так и 32-разрядные. Числа типа float обычно представляются 32-разрядными словами, имеющими по крайней мере 6 десятичных значащих цифр (лежат приблизительно в диапазоне от 10-38 до 10+38.Помимо int
и float в Си имеется еще несколько базовых типов для данных, это:char
- символ-единичный байт;short
- короткое целое;long
- длинное целое;double
- с плавающей точкой с двойной точностью.Размеры объектов указанных типов также зависят от машины. Из базовых типов можно создавать: массивы, структуры
и объединения, указатели на объекты базовых типов и функции, возвращающие значения этих типов в качестве результата. Обо всем этом мы расскажем позже.Вычисления в программе преобразования температур начинаются с инструкций присваивания
.lower = 0;
upper = 300;
step = 20;
fahr = lower;
которые устанавливают указанные в них переменные в начальные значения. Любая инструкция заканчивается точкой с запятой.
Все строки таблицы вычисляются одним и тем же способом, поэтому мы воспользуемся циклом, повторяющим это вычисление для каждой строки. Необходимые действия выполнит цикл while
:while(fahr ‹= upper) {
…
}
Он работает следующим образом. Проверяется условие в скобках. Если оно истинно (значение fahr
меньше или равно значению upper), то выполняется тело цикла (три инструкции, заключенные в фигурные скобки). Затем опять проверяется условие, и если оно истинно, то тело цикла выполняется снова. Когда условие становится ложным (fahr превысило upper), цикл завершается, и вычисления продолжаются с инструкции, следующей за циклом. Поскольку никаких инструкций за циклом нет, программа завершает работу.Телом цикла while
может быть одна или несколько инструкций, заключенных в фигурные скобки, как в программе преобразования температур, или одна-единственная инструкция без скобок, как в цикле(while i ‹ j)
i = 2 * i;