- •3) Логические операции и операции отношения
- •5) Разновидности условного оператора if. Привести примеры.
- •6) Оператор цикла while. Привести примеры.
- •7) Выражения. Привести примеры выражений
- •8) Разновидности операторов цикла
- •9) Получение случайного числа. Привести пример.
- •10) Одномерные массивы. Объявление массивов. Инициализация
- •12) Вычисление размерности данных и массивов в байтах
- •13) Оператор выбора. Привести примеры
- •14) Операция вычисления размерности данных. Привести примеры.
- •17.Инструкции присваивания.
- •18.Выражения.
- •20. Оператор цикла for. Привести примеры.
- •21. Встроенная операция sizeof. Привести примеры.
- •22. Возможности использования оператора цикла for.
- •23. Операторы циклы while и do while.
- •24. Приоритет операций.
- •25. Понятие идентификатора, переменной.
- •26. Задание констант в программе.
- •28. Инструкция Return.
- •29. Простой и составной оператор.
22. Возможности использования оператора цикла for.
Оператор for реализует фундаментальный принцип вычислений в программировании – итерацию. Тело цикла повторяется для разных, в данном случае последовательных, значений переменной i. Повторение иногда называется итерацией. Мы как бы проходим по последовательности значений переменной i, выполняя с текущим значением одно и то же действие, тем самым постепенно вычисляя нужное значение. С каждой итерацией мы подходим к нему все ближе и ближе. С другим принципом вычислений в программировании – рекурсией – мы познакомимся в разделе, описывающем функции.
Любое из трех выражений в заголовке цикла может быть опущено (в том числе и все три). То же самое можно записать следующим образом:
int sum = 0;
int i = 1;
for (; i <= 100; ) {
sum = sum + i;
i = i + 1;
}
Заметим, что вместо одного оператора цикла мы записали несколько операторов, заключенных в фигурные скобки – блок. Другой вариант:
int sum = 0;
int i = 1;
for (; ;) {
if (i > 100)
break;
sum = sum + i;
i = i + 1;
}
В последнем примере мы опять встречаем оператор break. Оператор break завершает выполнение цикла. Еще одним вспомогательным оператором при выполнении циклов служит оператор продолжения continue. Оператор continue заставляет пропустить остаток тела цикла и перейти к следующей итерации (повторению). Например, если мы хотим найти сумму всех целых чисел от 0 до 100, которые не делятся на 7, можно записать это так:
int sum = 0;
for (int i = 1; i <= 100; i = i+1) {
if ( i % 7 == 0)
continue;
sum = sum + i;
}
23. Операторы циклы while и do while.
Цикл while в C++
Оператор цикла while или цикл while - цикл, повторяющий одно и то же действие, пока условие продолжения цикла while остаётся истинным.
// форма записи цикла while
while (/*условие продолжения цикла while*/)
{
/*блок операторов*/;
/*управление условием*/;
}
Условие продолжения цикла должно быть истинно "true", как только условие стало ложным, выполняется выход из цикла. Также как и в условных операторах выбора, фигурные скобочки могут опускаться в том случае, если тело цикла - это один оператор. Но как правило в цикле выполняется несколько операторов, так как кроме выполнения полезного действия необходимо делать условие цикла while ложным, иначе цикл будет бесконечным, а это, в свою очередь, приведет к зависанию программы.
Рассмотрим применение цикла while на примере движения автомобиля. На псевдокоде, то это будет так:
// Пока скорость движения автомобиля меньше 60 км/ч, продолжать наращивать скорость.
Истинным условием цикла, в данном случае, является скорость автомобиля меньше 60 км/ч, а ложным - скорость автомобиля больше или равно 60 км/ч. Повторение цикла будет продолжаться до тех пор пока скорость автомобиля не станет больше или равно 60 км/ч, после наступления этого момента условие цикла станет ложным, и программа выйдет из цикла. Рассмотрим фрагмент кода на C++ с циклом while решающим поставленную задачу.
int speed = 5; // начальная скорость автомобиля
while ( spped < 60 ) // заголовок цикла while
speed += 10; // тело цикла
Для начала в строке 1 была объявлена и инициализирована переменная speed. В строке 2 программа проверяет условие цикла while, 5 < 60 = true. Программа входит в цикл и выполняет оператор в строке 3. Теперь уже speed = 15. Опять выполняется проверка 15 < 60 = true. Условие истинно, значение в переменной изменяется, speed = 25. Таким образом, выполняются последовательные повторения цикла, переменная speed ещё принимает такие значения: 35, 45, 55, 65. Последнее изменение переменной speed приводит к тому, что условие в цикле while становится ложным 65 < 60 = false, и производится выход из цикла while. Таким образом, выполнилось 6 повторений, при этом speed = 65; - с таким значением переменной закончилась работа цикла while. Давайте запрограммируем эту задачу, и убедимся в достоверности всего выше сказанного.
// while.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int speed = 5, count = 1;
while ( speed < 60 )
{
speed += 10; // приращение скорости
cout << count <<"-speed = " << speed << endl;
count++; // подсчёт повторений цикла
}
system("pause");
return 0;
}
Итак, в строке 14 добавил переменную-счётчик, для подсчёта прохождений цикла. Тело цикла увеличилось, поэтому пришлось поставить фигурные скобочки.
Цикл do while в C++
Цикл do while отличается от цикла while тем, что в цикле do while сначала выполняется тело цикла, а затем проверяется условие продолжения цикла. Из-за такой особенности цикл do while называют циклом с постусловием. Таким образом, если условие цикла do while заведомо ложное, то хотя бы один раз блок операторов в теле цикла do while выполнится. В итоге цикл do while отличается от цикла while структурой. Если в цикле while сначала выполняется проверка условия продолжения цикла, и если условие истинно, то только тогда выполняется тело цикла. Цикл do while работает с точностью да наоборот, сначала выполняется тело цикла, а потом проверяется условие, вот почему тело цикла do while, хотя бы раз, выполнится.
// форма записи оператора цикла do while:
do // начало цикла do while
{
/*блок операторов*/;
}
while (/*условие выполнения цикла*/); // конец цикла do while
В начале цикла do while пишется зарезервированное слово do, после идут фигурные скобочки, которые можно опускать, в случае использования одного оператора в теле цикла do while. После закрывающей фигурной скобочки, обозначающей конец тела цикла do while, стоит условие цикла do while, после которого обязательно нужно ставить точку с запятой. Рассмотрим программу на С++ с циклом do while, которая выполняет некоторые транзакции с денежным счётом в банке.
// do_while.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int main(int argc, char* argv[])
{
srand(time(0));
int balance = 8; // баланс
do // начало цикла do while
{
cout << "balance = " << balance << endl; // показать баланс
int removal = rand() % 3; // переменная, для хранения вычитаемого значения
cout << "removal = " << removal << endl; // показать вычитаемое значение
balance -= removal; // управление условием
}
while ( balance > 0 ); // конец цикла do while
system("pause");
return 0;
}
строке 11 объявлена переменная balance, она отвечает за остаток денежных средств на счету. С 12-й по 19-ю строки записан цикл do while. В цикле do while выполняются все транзакции со счётом balance, а именно - перевод денежных средств на какой-то другой счёт, строка 17. Строка 14 показывает остаток денежных средств на счету balance. В строке 15 объявлена переменная, в которой хранится вычитаемое значение, причём это значение генерируется случайно в интервале [0;2]. Переменная removal один раз объявляется в теле цикла do while, и каждый раз при повторении цикла эта переменная не переобъявляется. А вот её значение меняется, в зависимости от того, какое число сгенерировалось. В строке 19 записано условие цикла do while, как только условие станет ложным, программа передаст управление следующему оператору, после цикла do while, строка 20.