- •Введение
- •1. Этапы и проблемы решения задач с использованием компьютера
- •Алфавит языка
- •Ключевые слова
- •Идентификаторы
- •Знаки операций
- •Константы
- •Комментарии
- •2.3. Структура и основные элементы программы
- •2.4. Трансляция программ и их выполнение
- •3. Стандартные (базовые) типы данных, операции и выражения
- •3.1. Типы данных, переменные и константы Понятие типов данных
- •Классификация простых предопределенных типов данных
- •Переменные, константы
- •3.2. Целочисленные типы данных
- •3.3. Вещественные типы данных
- •3.4. Логический тип данных
- •3.5. Символьный тип данных
- •3.6. Операции и выражения
- •Преобразования типов данных
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные (битовые) операции
- •Операции составного присваивания
- •Условная операция
- •Операция sizeof
- •Приоритеты рассмотренных операций
- •3.7. Ввод и вывод простых типов данных
- •Вывод текстовых строк
- •Ввод/вывод арифметических типов данных
- •Форматирование ввода / вывода
- •4.1. Идеи структурного программирования
- •Условная инструкция (if)
- •Инструкция множественного выбора (switch)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Итерационный цикл (for)
- •Инструкции перехода
- •5. Приемы программирования циклов
- •5.1. Рекуррентные вычисления
- •5.2. Инвариант цикла
- •6. Массивы
- •6.1. Понятие массива
- •6.2. Объявление массивов Объявление одномерных массивов
- •Объявление многомерных массивов
- •6.3. Ввод-вывод массивов
- •Вывод массивов
- •Ввод массивов
- •6.4. Текстовые строки как массивы символов
- •Определение текстовой строки
- •Ввод текстовых строк с клавиатуры
- •Обработка текстовых строк
- •Массивы текстовых строк
- •7. Разработка программ при работе с массивами
Цикл с постусловием (do while)
Формат записи этой инструкции:
Или, если тело цикла представляет собой одиночную инструкцию:
И тому и другому варианту соответствует следующая схема алгоритма:
Так же, как и в предыдущем цикле, выражение в этой инструкции может быть любого типа, значения которого можно трактовать как значения логического типа данных (bool). Это выражение определяет условие продолжения выполнения тела цикла, то есть, если значение этого выражения истинно (trueили не равно0), то тело цикла выполняется вновь, если же ложно (falseили0), то цикл заканчивается и управление передается следующей за циклом инструкции.
Принципиальным отличием этого цикла от предыдущего состоит в том, что тело цикла в этой инструкции обязательно будет выполнено хотя бы один раз.
Использование этого цикла проиллюстрировано следующим примером:
Пример 1.Необходимо в виде строки вывести на экран цифры от 0 до 9.
int k = 0; // На экран выведеноkцифр
do
{
cout << k;
++k;
}
while (k <= 9); // Здесь используется логическое выражение
// На экран выведеноk= 10 цифр: 0123456789
Все остальное сказанное о предыдущем цикле, можно практически однозначно применить и к циклу с постусловием.
Итерационный цикл (for)
Формат записи этой инструкции:
Или, если тело цикла представляет собой одиночную инструкцию:
И тому и другому варианту соответствует следующая схема алгоритма:
При запуске цикла однократно выполняется Инициализацияпараметра (параметров) цикла, после чего осуществляется проверкаУсловия, определяющего необходимость выполнения тела цикла. После окончания выполнения инструкций тела цикла, на каждой итерации выполняетсяМодификацияпараметра (параметров) цикла и снова проверяетсяУсловие. Так продолжается до тех пор, покаУсловиене станет ложным (false).
Разделы Инициализации,УсловияиМодификациив заголовке цикла разделяются символом ‘;’.
Пример записи (пример из предыдущего параграфа):
int k;
for (k = 0; k <= 9; ++k)
cout << k;
Если параметр kцикла используется только внутри цикла (после выхода из цикла переменнаяk больше не нужна), эту переменную можно (и лучше) определить непосредственно в разделеИнициализациицикла:
for (int k = 0; k <= 9; ++k)
cout << k;
В разделах ИнициализациииМодификацииможно управлять сразу несколькими параметрами цикла:
for (int k = 1, n = 10; k <= 10; ++k, --n)
cout << k << “ * ” << n << “ = ” << k * n << endl;
На экран будет выведено:
1 * 10 = 10
2 * 9 = 18
3 * 8 = 24
4 * 7 = 28
5 * 6 = 30
6 * 5 = 30
7 * 4 = 28
8 * 3 = 24
9 * 2 = 18
10 * 1 = 10
Отдельные элементы разделов ИнициализациииМодификацииотделяются друг от друга символом ‘,’.
Любой раздел заголовка цикла может отсутствовать. Раздел Инициализации, например, может отсутствовать, когда начальные значения параметров цикла устанавливаются вне цикла, перед его началом.Модификациязначений параметров цикла может осуществляться внутри тела цикла, а не в его заголовке. При отсутствииУсловияпродолжения выполнения цикла, цикл становится бесконечным и для выхода из него придется использовать инструкциюbreak. Однако, какой бы из разделов ни отсутствовал, соответствующие разделительные символы ‘;’ в заголовке цикла должны обязательно присутствовать:
#include <conio.h>
……..
cout << “Для продолжения работы нажмите любую клавишу…” << endl;
for ( ; ! kbhit(); );
……..
В этом примере цикл, в заголовке которого отсутствуют разделы ИнициализациииМодификации, используется для приостановки выполнения программы до нажатия на клавиатуре любой клавиши (функцияkbhit()возвращает значениеfalse, если на клавиатуре не нажата никакая клавиша, и значениеtrue, если клавиша была нажата – для использования этой функции необходимо включить заголовочный файлconio.h).
Замечание. Приостановку работы программы значительно проще (без использования циклов) можно выполнить с помощью функцииgetch(), которая ожидает нажатия клавиши на клавиатуре и возвращает символ этой клавиши без отображения этого символа на экране (необходим заголовочный файлconio.h):
#include <conio.h>
……..
cout << “Для продолжения работы нажмите любую клавишу…” << endl;
getch();
……..
Принудительный выход из цикла forосуществляется с помощью инструкцииbreak, а принудительный переход к следующей итерации (шагу цикла) – с помощью инструкцииcontinue.
Тела циклов могут содержать любые инструкции языка C++, в том числе и другие циклы. Подобные конструкции называются вложенными циклами. Использование вложенных циклов является весьма распространенным приемом программирования при решении очень многих задач.