
- •Базовые понятия информатики. Понятие «Информатика» и «Информация»
- •Информация
- •Информационные технологии
- •Понятие алгоритма. Свойства и классы алгоритмов. Формы представления алгоритмов
- •Понятие алгоритма. Базовые алгоритмические структуры
- •Представление данных в памяти персонального компьютера.
- •Принципы обработки программных кодов
- •Компиляторы
- •Интерпретатор
- •Язык с. История развития. Основные свойства языка
- •Отличительные особенности языкаC
- •Элементы языка c
- •Константы
- •Базовые типы данных
- •Директива #include
- •Использование void
- •Инструкция return
- •Описание переменных
- •Обработка данных. Операторы
- •Арифметические операторы
- •Приоритет операторов и порядок вычислений
- •Используемые алгоритмы обработки данных
- •Аккумуляторы
- •Преобразования типов данных
- •Декларации и дефиниции функций
- •Формальные и фактические параметры. Вызов функций
- •Возврат функцией значений
- •Переменные в функциях
- •Автоматические (локальные) переменные
- •Внешние (глобальные) переменные
- •Статические переменные
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Значения параметров по умолчанию
- •Перегрузка функций
- •Рекурсия
- •Встроенные функции
- •Обработка символьных данных
- •Функция puts()
- •Функция putchar()
- •Функция printf()
- •Выбор правильных средств вывода информации
- •Функция gets()
- •Функция getchar()
- •Функция scanf()
- •Выбор соответствующих средств ввода данных
- •Управляющие структуры Структуры выбора (if / else)
- •Структуры выбора (switch/case/default)
- •Структуры повторения (циклы)
- •Использование цикла for
- •Использование цикла do...While (постусловие)
- •Использование цикла while (предусловие)
- •Операторы передачи управления Оператор безусловного перехода goto
- •Оператор break
- •Оператор continue
- •Препроцессор языка Си
- •Массивы Объявление переменной массива
- •Использование индексной переменной
- •Инициализация массива при объявлении
- •Передача массивов в функции
- •Использование констант при объявлении массивов
- •Символьные строки
- •Массивы строк
- •Алгоритмы сортировки массива
- •Поиск заданного элемента в массиве
- •Указатели
- •Объявление указателя
- •Указатели на массивы
- •Операции над указателями
- •Указатели на строку
- •Указатели на функцию
- •Функции, возвращающие указатель
- •Указатели на многомерные массивы
- •Массивы указателей
- •Динамическое распределение памяти
- •Структуры данных
- •Реализация одних структур на базе других
- •Очередь
- •Операции над очередями
- •Операции над стеками
- •Ссылочные реализации структур данных
- •Операции над списками
Структуры повторения (циклы)
Программа начинает и заканчивает свою работу, но это не значит, что каждая инструкция в программе должна выполняться только однажды. Вы можете решить провести несколько циклов обработки данных или выполнить несколько различных вычислений. Вы можете также попросить пользователя вводить данные до тех пор, пока он не сделает это надлежащим образом.
Язык Си и Си++ имеет три структуры, известные под названием циклов, которые используются для управления повторами:
цикл for;
цикл do...while;
цикл while.
Любой из этих циклов может быть применен для повторения инструкции, группы инструкций или даже целой программы.
Использование цикла for
Цикл for используется в том случае, когда известно точное количество повторов, которое нужно выполнить.
for (инициализация цикла (начальное значение); выражение-условие (повторять, пока выполняется условие); список выражений (приращение значения))
{
тело_цикла
}
В приведенной ниже программе цикл for используется для того, чтобы вывести на экран монитора числа от 1 до 10, расположенные друг под другом.
main()
{
int repeat;
for (repeat = 1; repeat <= 10; repeat++)
printf("%d\n", repeat);
}
Этот цикл управляется переменной repeat, которая называется индексом*. Индексу можно присвоить любое имя, но значение переменной обязательно должно быть целым числом. Выражение в круглых скобках после for делится на три составляющие:
repeat=1 |
инициализация переменной repeatпутем присваивания ей начального значения |
repeat <= 10 |
задает условие повтора цикла до тех пор, пока значение переменной repeatостается меньше или равно 10 |
repeat++ |
приращение значения переменной repeatпосле каждого повтора цикла |
Когда программа начнет выполнение цикла, она присвоит переменной repeat начальное значение, равное 1. Затем будет проверено, является ли истинным условие, что значение переменной меньше или равно 10. Если условие истинное, начнется выполнение инструкции, связанной с циклом, то есть вывод на экран значения переменной.
После выполнения инструкции произойдет увеличение значения переменной на единицу и снова будет проведена проверка истинности условия. Так как условие все еще является истинным, цикл будет выполнен во второй раз, отображая на дисплее текущее значение переменной. Этот процесс будет повторяться до тех пор, пока значение переменной не вырастет до 11. Как только это произойдет, условие repeat <= 10 уже не будет истинным, так что выполнение инструкции прекратится и цикл завершится.
Если один цикл for выполняется внутри другого, принято говорить, что мы имеем дело с вложенным циклом. Внутренний цикл целиком выполняется во время каждого повторения внешнего цикла. Вложенные циклы for можно представить себе как двухмерные, а единичный— как одномерный.
Использование цикла do...While (постусловие)
Цикл do...while используется в тех случаях, когда вы не знаете точного количества повторов, но в то же время вам известно, что цикл необходимо выполнить, по меньшей мере, один раз.
do {
операция_1;
операция_2;
……………
операция_n;
} while (тестовое_условие);
Выполнение инструкций, заключенных в фигурные скобки, повторяется до тех пор, пока является истинным условие, указанное в while. Правильность условия проверяется только в конце цикла, так что, даже если условие с самого начала не было истинным, цикл будет выполнен, по меньшей мере, один раз.
Используя цикл do...while, следует указывать условие так, чтобы выполнение его не оказалось бесконечным.
Цикл do...while часто используется для того, чтобы повторять программу до тех пор, пока пользователь не решит закончить ввод:
main()
{
int temp;
float celsius;
char repeat;
do
{
printf("Введите значение температуры: ");
scanf("%d", &temp);
celsius = (5.0 / 9.0) * (temp - 32);
printf("%d градусов по
Фаренгейту соответствует %6.2f по Цельсию\n",
temp, celsius);
printf("Желаете ввести еще значение?");
repeat = getchar();
putchar('\n');
}
while (repeat == 'y' || repeat == 'Y');
}
В этом примере практически весь текст программы, исключая определение переменных, входит в большой блок do...while. Цикл будет повторяться до тех пор, пока в ответ на запрос будет вводиться символ Y или y. Обратите внимание, что инструкция, выводящая на экран запрос о продолжении работы, является последней инструкцией в блоке.
Вложенные циклы do...while можно использовать для того, чтобы обеспечить несколько уровней повторов.