- •Введение
- •Изучение среды программирования
- •Теоретические сведения
- •Среда программирования
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Переменные и операции над ними
- •Теоретические сведения
- •Основные определения
- •Операции над целыми числами
- •Вещественные числа и операции над ними
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Конструкция выбора, логические и другие операции
- •Теоретические сведения
- •Конструкция выбора и составная инструкция
- •Операторы отношения и логические операторы
- •Остальные операторы
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Конструкции циклов
- •Теоретические сведения
- •Цикл while
- •Цикл for
- •Конструкция в конструкции
- •Задание к работе
- •Свойства массивов
- •Структуры
- •Задание к работе
- •Операции с указателями
- •Указатели и массивы
- •Указатели и структуры
- •Задание к работе
- •Использование указателей для передачи результата и аргумента
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •644046, Г. Омск, пр. Маркса, 35в
-
Цикл for
В программах многие циклы строятся по одинаковой схеме. Сначала, до цикла, нужно проинициализировать переменные, используемые в цикле (например, в примере выше переменной a присваивается значение 1). При каждом выполнении цикла значение некоторой переменной нужно изменить (в примере – увеличение переменной a на 1), сделать шаг цикла.
Для более компактной и наглядной записи таких типичных циклов в языке С имеется управляющая конструкция «for». В общем виде она записывается следующим образом:
for (инициализация; условие; шаг)
инструкция
Эта конструкция эквивалента следующей:
инициализация;
while (условие)
{
инструкция
шаг;
}
Рассмотренный выше пример с помощью конструкции «for» можно записать так:
for (a=1; a*a<100; a++)
printf(“%i в квадрате = %i”, a, a*a);
Для создания циклов в программах на языке С обычно используются «while» и «for». Другие управляющие конструкции языка позволяют записать некоторые типы циклов более компактно, но используются значительно реже, поэтому на данном этапе изучение их не целесообразно.
-
Конструкция в конструкции
Управляющая конструкция, как и любая другая инструкция, может быть записана внутри других управляющих конструкций. Более того, внутри внутренней конструкции также могут встречаться другие конструкции. Глубина вложения конструкций ограничивается лишь возможностями программиста – понять программу, содержащую большое число вложений, очень сложно.
Рассмотрим пример программы, которая печатает таблицу умножения. Для не понадобиться вложенные циклы. Внешний цикл будет печатать по одной все строки. Внутренний цикл будет печатать по одному все столбцы, т.е. печатать одну строку. Код программы приведен на рис
Рис. Пример программы
В строках с 4 по 8 печатается шапка нашей таблицы. В 6 строке после символа процента указано число 2 и лишь после этого числа указан тип переменной. Таким способом можно установить, сколько цифр будет печататься на экране. Не зависимо от того, сколько реально разрядов в числе, на экране оно займет 2 символа. Это позволит получить в таблице ровные колонки.
В 9 строке записана условная конструкция для внешнего цикла. Что и почему записано в полях инициализации, условия и шага цикла можно разобраться самостоятельно. Обратите внимание, как удобно использовать конструкцию «for» если известно число повторений на момент начала цикла. Мы по порядку указываем с чего нужно начать, чем закончить и с каким шагом двигаться в цикле. Поэтому иногда такую конструкцию называют циклом с известным числом повторений.
В 11 строке печатается заголовок строки, а в 12 начинается внутренний цикл. Мы опять используем цикл «for», чтобы «пройтись» по 9 столбцам.
Во внутреннем цикле всего одна инструкция, поэтому нет необходимости набирать фигурные скобки для составного оператора. В 13 строке, внутри внутреннего цикла печатается элемент таблицы умножения.
В 14 строке печатается перевод на новую строку. Эта инструкция относится к внешнему циклу.
Для того, чтобы легче было понять, к какой конструкции относится та или иная инструкция, принято выравнивать инструкции. Выравнивание кода принято делать по следующему правилу: инструкции, находящиеся внутри конструкции, сдвигают относительно конструкции на одну позицию вправо. Сдвиг на одну позицию может пониматься по-разному, это либо сдвиг размер табуляции, либо сдвиг на 3-5 символов.
В примере, в 6 строке записана внутренняя инструкция цикла из 5 строки, и она сдвинута относительно его на 1 позицию. Строки с 11 по 14 являются внутренними инструкциями цикла из 9 строке, и также сдвинуты.
В 13 строке находится инструкция внутреннего цикла. Она сдвинута на 1 позицию относительно внутреннего цикла, и на 2 позиции относительно внешнего цикла. Благодаря этому мы легко можем определить, что инструкция из 13 строки находится во внутреннем цикле, а в 14 строке – во внешнем.
Нужно иметь в виду, что компилятор никак не контролирует, в каких позициях находятся инструкции. Поэтому если мы сдвинем инструкцию в 14 строке на позицию вправо, она все равно будет во внешнем цикле. Выравнивание видно только программисту и должно контролироваться программистом.