- •1.1.1 Пример программы, выводящей текст на экран (пример 1)
- •1.1.2 Директивы препроцессору (подключение заголовочных файлов)
- •1.1.3 Комментарии
- •1.1.4 Функции
- •1.1.5 Ввод и вывод на экран
- •1.2. Переменные и их объявление
- •1.2.1 Пример программы cложения целых чисел (пример 2)
- •1.2.2 Переменные и их объявление
- •1.3. Арифметические операторы
- •1.3.1 Примеры арифметических операций (пример 3)
- •1.3.2 Группировка подвыражений с помощью скобок
- •1.4. Логические выражения и оператор if
- •1.4.1 Условные конструкции. Пример условных конструкций (пример 4)
- •1.4.2 Логические выражения. Логические операции и, или, не (пример 5)
- •1.4.3 Типичные ошибки
- •1.4.4 Вложенные условия
- •1.5. Арифметический логический оператор (пример 6)
- •1.6. Селективные конструкции
- •1.6.1 Селективные конструкции. Пример определения оценки в зависимости от количества баллов (пример 6)
- •1.6.2 Оператор Switch. Пример меню с выбором действия (пример 7)
- •1.7. Циклы while и do…while
- •1.7.1 Цикл с предусловием while. Пример возведения в степень в цикле (пример 8)
- •1.7.2 Цикл с постусловием do...While
- •1.8. Пошаговый цикл for
- •1.8.1 Пример работы оператора for - вычисление суммы чисел (пример 9)
- •1.8.2 Пошаговый цикл for
- •1.8.3 Операторы break и continue
- •1.8.4 Пример вычисление факториала (пример 10)
- •1.9. Функции
- •1.9.1 Использование функций библиотеки stl (пример 11)
- •1.9.2 Определение новых функций
- •1.9.3 Пример функции (пример 12)
- •1.10. Размещение программ и данных в памяти
- •1.11. Ссылки и указатели
- •1.11.1. Ссылки
- •1.11.2. Указатели
- •1.11.3. Передача параметров в функцию по ссылке и указателю
- •2.2 Организация ввода/вывода
- •2.3 Строковые переменные и константы
- •2.4 Математические функции
- •3.1. Массивы
- •3.1.1. Одномерный массив
- •3.1.2. Динамическое размещение одномерного массива
- •3.1.3. Передача массива в функцию (пример 3.1)
- •3.1.4. Двумерный массив
- •3.1.5. Динамическое размещение двумерного массива (пример 3.2)
- •3.2 Контейнеры
- •3.3. Вектор vector (пример 3.3)
- •4.4. Список list
- •3.4.1. Списки
- •3.4.2. Итераторы
- •3.4.3. Пример работы со списком с использованием итераторов (пример 3.4)
- •3.5. Очереди и стек
- •3.5.1. Двусторонняя очередь deque (пример 3.5)
- •3.5.2. Стек stack
- •3.5.3. Очередь queue
- •3.6. Ассоциативные контейнеры
- •3.6.1. Контейнер map (пример 3.7)
- •3.6.2. Контейнер set (пример 3.8)
- •3.7. Алгоритмы
- •4.1 Структуры
- •4.1.1. Пример 4.1. Структура для работы с компонентами цвета
- •4.1.2. Передача абстрактных типов в функцию
- •4.1.3. Создание функций-членов для абстрактного типа данных. Пример 4.2. Структура для работы с компонентами цвета со встроенной функцией.
- •4.2. Классы
- •4.2.1. Пример 4.3. Класс Линза
- •4.2.2. Директивы препроцессору # if ! defined, # endif (проверка на повторное подключение)
- •4.2.3. Тип доступа к членам класса
- •4.2.4. Принципы объектно-ориентированного проектирования
- •4.2.5. Типы функций-членов класса
- •4.3 Конструкторы и деструкторы класса
- •4.3.1. Конструкторы
- •4.3.2. Деструктор (пример 4.4. Конструктор и деструктор класса Матрица)
- •4.3.3. Проверка правильности параметров. Исключительные ситуации
- •4.4. Модификаторы, селекторы и другие члены классов
- •4.4.1. Модификаторы и селекторы
- •4.4.2. Ключевые слова const и inline
- •4.4.3. Функции-утилиты
- •4.4.4. Сохраняемость
- •5.1. Типы наследования. Видимость членов классов
- •5.1.1. Наследование
- •5.1.2. Пример 5.1. Линза и зеркало как оптические детали
- •5.1.3. Последовательность вызова конструкторов
- •5.1.4. Типы наследования. Видимость членов классов
- •5.1.5. Множественное наследование
- •5.2. Виртуальные функции. Абстрактные классы
- •5.2.1. Виртуальные функции
- •5.2.2. Абстрактные классы
- •6. Полиморфизм
- •6.1. Перегрузка функций
- •6.1.1. Перегрузка функций
- •6.1.2. Преобразование типов
- •6.1.3. Параметры функций по умолчанию
- •6.2. Перегрузка операторов
- •6.2.1. Пример 6.1 (класс Complex (комплексное число))
- •6.2.6. Перегрузка операторов с присваиванием
- •6.2.7. Перегрузка преобразования типов
- •6.2.8. Перегрузка оператора доступа по индексу
- •6.2.9. Перегрузка операторов ввода/вывода
- •6.2.10. Неперегружаемые операторы
- •6.3. Шаблоны функций и классов
- •6.3.1. Шаблоны функций. Пример 6.2 (шаблон функции)
- •6.3.2. Шаблоны функций с несколькими параметрами. Пример 6.3 (шаблон функции с несколькими параметрами)
- •6.3.3. Шаблоны классов. Пример 6.4 (шаблон класса Комплексное число)
- •6.4. Объекты-функции. Предикаты
- •6.4.1. Объекты-функции. Пример 6.5 (использование объектов-функций)
- •6.4.2. Предикаты. Пример 6.6 (использование предикатов)
1.7. Циклы while и do…while
1.7.1 Цикл с предусловием while. Пример возведения в степень в цикле (пример 8)
Оператор цикла позволяет программисту определить действие, которое должно повторяться, пока некоторое условие остается истинным.
В качестве примера цикла while рассмотрим программу, вычисляющие степени двойки, не превышающие 100:
/////////////////////////////////////////////////////////////////////////////
// Прикладное программирование
// Пример 8. Пример работы оператора while - возведение в степень
//
// Кафедра Прикладной и компьютерной оптики, http://aco.ifmo.ru
// СПб НИУ ИТМО
/////////////////////////////////////////////////////////////////////////////
// подключение библиотеки ввод-вывода
#include <iostream>
// подключение стандартного пространства имен для использования библиотек
using namespace std;
/////////////////////////////////////////////////////////////////////////////
// функция main начинает исполнение программы
void main()
{
// описание переменных
int product = 2;
// оператор цикла с предусловием
while(product <= 100)
{
product = product * 2;
cout<<"product="<<product<<endl;
}
}
/////////////////////////////////////////////////////////////////////////////
Когда оператор while начинает выполняться, значение переменной product равно 2. Каждое повторение цикла умножает product на 2, так что переменная принимает последовательные значения 4, 8, 16, 32, 64, 128. Когда product становится равной 128, условие оператора while (product <= 100) оказывается ложным. Это завершает повторение, так что окончательным значением product будет 128. Программа продолжает работу со следующего оператора после while.
Если не предусмотреть в теле оператора while действия, которое в конце концов делает условие в while ложным, получается бесконечный цикл, в котором повторение никогда не заканчивается.
1.7.2 Цикл с постусловием do...While
Оператор повторения do...while похож на оператор while. В операторе while условие продолжения цикла проверяется в начале цикла, перед выполнением тела оператора. В операторе do...while проверка условия продолжения производится после того, как тело цикла выполнено; следовательно, тело цикла будет исполняться, по крайней мере, один раз.
Когда do...while завершается, выполнение программы продолжается с оператора, следующего за предложением while.
Предыдущий пример можно записать с использованием цикла do...while.
/////////////////////////////////////////////////////////////////////////////
// функция main начинает исполнение программы
void main()
{
// описание переменных
int product = 2;
// оператор цикла с предусловием
do
{
product = product * 2;
cout<<"product="<<product<<endl;
}while(product <= 100);
}
/////////////////////////////////////////////////////////////////////////////
Результат выполнения этого пример будет точно такой же, как и предыдущего. Программа выведет на экран 4, 8, 16, 32, 64, 128. Чтобы увидеть разницу между циклом с предусловием и постусловием, изменим примеры следующим образом:
цикл с предусловием |
цикл с постусловием |
// описание переменных int product = 128;
// оператор цикла с предусловием while(product <= 100) { product = product * 2; cout<<"product="<<product<<endl; } cout<<"result product="<<product<<endl; |
// описание переменных int product = 128;
// оператор цикла с предусловием do { product = product * 2; cout<<"product="<<product<<endl; }while(product <= 100); cout<<"result product="<<product<<endl; |
результат: result product=128 |
результат: 256 result product=256 |
В цикле с предусловием вначале происходит проверка условия, и поскольку 128>100, цикл ни разу не выполниться. В цикле с постусловием вначале произойдет выполнение одного шага цикла, и только потом произойдет проверка (256>100).
цикл с предусловием |
цикл с постусловием |
while( условие ) { блок операторов; } |
do { блок операторов; }while( условие ); |
|
|
