Программирование >>  Элементы языков с и с++ 

1 ... 7 8 9 [ 10 ] 11 12 13 ... 200


lower достигнет значения переменной upper, которое мы вначале указали равным 300. Поэтому условие окончания цикла в операторе цикла while будет таковым: пока значение fahr не превзойдет значения переменной upper . На языке С это записывается в виде: while (fahr <= upper)

В теле же самого оператора цикла мы записываем на языке С формулу вычисления значения переменной eels (т. е. точки шкалы по Цельсию), функцию printf {) для вывода значений точек по Фаренгейту и Цельсию, переменную fahr для изменения параметров цикла (она добавляет значение шага шкалы по Фаренгейту, что подготавливает переход к вычислению переменной eels для нового значения переменной fahr). Это произойдет, когда программа дойдет до выполнения конца тела оператора while (т. е. до закрывающей фигурной скобки) и перейдет к выполнению выражения, стояшего в заголовочной части while и проверке его на истинность/ложность.

Если истинность выражения-условия не нарушилась, то начнет снова выполняться тело оператора while. Когда же переменная fahr примет значение, большее значения upper, цикл завершится: начнет выполняться код, следующий за телом оператора while. А это и будет функция geteh (), которая потребует ввода символа с клавиатуры, тем самым задерживая закрытие окна, в котором благодаря функции printf о появились результаты работы программы. Как только мы нажмем на любую клавишу, функция geteh () получит то, что ждала, в результате чего она завершится. Затем начнет выполняться закрывающая скобка тела главной функции tmain о. После ее обработки наше приложение закончит свою работу.

Поясним операции, примененные при формировании переменной eels. Это арифметические операции деления (/), у.множения (*), вычитания (-). Операция деления имеет одну особенность: если ее операнды типа int, то и результат - всегда целое число, т. к. в этом случае остаток от деления отбрасывается. И если бы мы в формуле для вычисления переменной eels записали 5/9, то получили бы О, а не 0,55. Чтобы этого не случилось, нам пришлось обмануть операцию деления: мы записали 5.0/9.0. будто операнды в формате плавающей точки (для таких операндов остаток от деления не отбрасывается).

Функция printf () в общем случае имеет такой формат:

printf(Control, argl,arg2,...,argN);

П Control - это строка символов, заключенных в двойные кавычки:

П argl, arg2, argN- имена переменных, значения которых должны быть выведены на устройство вывода.



Оператор for

Кроме оператора while, цикл позволяет организовать и оператор for. Перепишем уже рассмотренную программу расчета температур в несколько ином виде (листинг 1.2).

Листинг 1.2 j

4.срр : Defines the entry point for the console application.

#include stdafx.h

ttinclude <conio.h> для функции getch()

int tmain(int argc, TCHAR* argv[]) i

int fahr;

for(fahr=0; fahr <= 300; fahr= fahr +20) printf( %4d %6.1f\n ,fahr,(5.0/9.0)*(fahr-32.0)); getch();

Строка Control содержит в себе данные двух родов: указания на формат переменных argi, arg2,argN (к какому виду эти переменные должны быть преобразованы, указания на формат расположены точно в том же порядке, что и сами переменные argi, arg2,argN), а также остальные символы, которые выводятся без всякого форматирования (т. е. без преобразования в другую форму). Обозначение формата всегда начинается с символа %, а заканчивается символом типа форматирования: d - для переменных типа int, f - для float, s - для строк символов и т. д.

Между символом % и символом типа форматирования задается ширина поля вывода, количество знаков после точки (для типа f) и т. д. Полное определение форматов можно посмотреть в разделе Help среды разработки. Так как переменные eels и fahr относятся к типу float, то и в функции printf о указан соответствующий формат- f. Значение переменной fahr выводится целым числом в поле шириной 4 байта, а значение переменной eels, имеющее в результате расчетов дробное значение, выводится в поле шириной 6 байтов с одним знаком после точки (формат %б. if).



Символические константы

Задание конкретных чисел в теле программы - не очень хороший стиль программирования, т. к. такой под.\од затрудняет дальнейшую модификацию программы и ее понимание. При создании программы надо стремиться задавать все конкретные данные в начале программы, используя специальный

Здесь для получения того же результата, что и в предыдущем случае, применен оператор цикла for. Тело этого оператора, как и тело оператора while, циклически выполняется (прокручивается). В нашем случае тело for состоит всего из одного оператора - printf (...)поэтому такое тело не берется в фигурные скобки (если бы тело оператора while состояло только из одного оператора, оно тоже не бралось бы в скобки).

Мы видим, что запись программы приобрела более компактный вид. В заголовочной части оператора for расположены три выражения, из которых первые два оканчиваются точкой с запятой, третье - круглой скобкой, обозначающей границу заголовочной части for (компилятор понимает, что третье выражение завершилось). Как говорят, в данном случае цикл идет по переменной fahr : в первом выражении она получает начальное значение, второе выражение- это условие окончания цикла (цикл закончится тогда, когда fahr примет значение, большее 300), а третье выражение изменяет параметр цикла на величину шага цикла.

Работа происходит так: инициализируется переменная цикла (т. е. получает начальное значение), затем проверяется условие продолжения цикла. Если оно истинно, то сначала выполняется тело оператора (в данном случае функция printf о), затем управление передается в заголовочную часть оператора for. После этого вычисляется третье выражение (изменяется параметр цикла) и проверяется значение второго выражения. Если оно истинно, то выполняется тело, затем управление снова передается на вычисление третьего выражения и т. д. Если же второе выражение становится ложным, то выполнение оператора for завершается и начинает выполняться оператор, следующий непосредственно за ним (а это - завершающая фигурная скобка tmain (), означающая прекращение работы функции tmain ()).

В данном примере следует обратить внимание на аргумент функции printf (). Вместо обычной переменной там стоит целое выражение, которое сначала будет вычислено, а потом его значение выведется на устройство вывода. Выражение можно указывать в качестве аргумента функции, исходя из правила языка С: В любом контексте, в котором допускается использование переменной некоторого типа, можно использовать и выражение этого же типа .



1 ... 7 8 9 [ 10 ] 11 12 13 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика