Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория ответы.doc
Скачиваний:
39
Добавлен:
24.12.2018
Размер:
1.61 Mб
Скачать
  1. Цикл с предусловием while. Управление выполнением цикла. Примеры использования цикла. Зацикливание. Инструкция break.

Цикл while

Инструкция while — еще один способ организации циклов в C++.

Общая форма цикла while имеет такой вид:

while (выражение) инструкция;

Здесь под элементом инструкция понимается либо одиночная инструкция, либо блок инструкций. Работой цикла управляет элемент выражение, который представляет собой любое допустимое С++-выражение. Элемент инструкция выполняется до тех пор, пока условное выражение возвращает значение ИСТИНА. Как только это выражение становится ложным, управление передается инструкции, которая следует за этим циклом.

Использование цикла while демонстрируется на примере следующей небольшой программы. Практически все компиляторы поддерживают расширенный набор символов, который не ограничивается символами ASCII. В расширенный набор часто включаются специальные символы и некоторые буквы из алфавитов иностранных языков. ASCII-символы используют значения, не превышающие число 127, а расширенный набор символов — значения из диапазона 128-255. При выполнении этой программы выводятся все символы, значения которых лежат в диапазоне 32-255 (32 — это код пробела). Выполнив эту программу, вы должны увидеть ряд очень интересных символов.

/* Эта программа выводит все печатаемые символы, включая расширенный набор символов, если таковой существует. */

#include <iostream.h>

int main() {

unsigned char ch;

ch = 32; while(ch) {

cout << ch;

ch++; }

return 0; }

Рассмотрим while-выражение из предыдущей программы. Возможно, вас удивило, что оно состоит всего лишь из одной переменной ch. Но "ларчик" здесь открывается просто. Поскольку переменная ch имеет здесь тип unsigned char, она может содержать значения от 0 до 255. Если ее значение равно 255, то после инкрементирования оно "сбрасывается" в нуль. Следовательно, факт равенства значения переменной ch нулю служит удобным способом завершить while-цикл.

Подобно циклу for, условное выражение проверяется при входе в цикл while, а это значит, что тело цикла (при ложном результате вычисления условного выражения) может не выполниться ни разу. Это свойство цикла устраняет необходимость отдельного тестирования до начала цикла. Следующая программа выводит строку, состоящую из точек. Количество отображаемых точек равно значению, которое вводит пользователь. Программа не позволяет "рисовать" строки, если их длина превышает 80 символов. Проверка на допустимость числа выводимых точек выполняется внутри условного выражения цикла, а не снаружи.

#include <iostream.h>

int main() {

int len;

cout « "Введите длину строки (от 1 до 79): "; cin >> len;

while(len>0 && len<80) { cout « ' . ' ; len--; }

return 0; }

Тело while-цикла может вообще не содержать ни одной инструкции. Вот пример:

while (rand() != 100) ;

Этот цикл выполняется до тех пор, пока случайное число, генерируемое функцией rand (), не окажется равным числу 100.

  1. Цикл с постусловием do. Управление выполнением цикла. Примеры использования. Зацикливание. Инструкция break.

Цикл do-while

Цикл do-while — это единственный цикл, который всегда делает итерацию хотя бы один раз.

В отличие от циклов for и while, в которых условие проверяется при входе, цикл do-while проверяет условие при выходе из цикла. Это значит, что цикл do-while всегда выполняется хотя бы один раз. Его общий формат имеет такой вид.

do {инструкции; : while {выражение) ;

Несмотря на то что фигурные скобки необязательны, если элемент инструкции состоит только из одной инструкции, они часто используются для улучшения читабельности конструкции do-while, не допуская тем самым путаницы с циклом while. Цикл do-while выполняется до тех пор, пока остается истинным элемент выражение, который представляет собой условное выражение.

В следующей программе цикл do-while выполняется до тех пор, пока пользователь не введет число 100.

«include <iostream.h

int main() int num;

do {

cout « "Введите число (100 - для выхода): ";

cin >> num; } while(num != 100);

return 0;

}

Используя цикл do-while, мы можем еще более усовершенствовать программу "Угадай магическое число". На этот раз программа "не выпустит" вас из цикла угадывания, пока вы не угадаете это число.

// Программа "Угадай магическое число": 3-е усовершенствование.

#.include <iostream.h>

#include <cstdlib>

int main()

{

int magic; // магическое число

int guess; // вариант пользователя

magic = rand(); // Получаем случайное число.

do {

cout << "Введите свой вариант магического числа: ";

cin >> guess;

if(guess == magic) {

cout << "** Правильно ** "; cout << magic <<

" и есть то самое магическое число.\п"; } else {

cout << "...Очень жаль, но вы ошиблись.";

if (guess > magic) cout <<

" Ваш вариант превышает магическое число.\n";

else cout <<

" Ваш вариант меньше магического числа.\п"; }

} while(guess != magic);

return 0; }