Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Языки программирования (пособие).doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
964.61 Кб
Скачать

2.1.5Контрольные вопросы

  1. Объясните идею работы оператора goto.

  2. Как поставить метку?

  3. Как реализовать консольное меню с использованием операторов switch-case и goto?

  4. Почему оператор goto не рекомендуется использовать?

  5. Как реализовать цикл на базе операторов goto и if?

  6. Реализуйте консольное меню из пяти каких-либо пунктов, используя операторы switch-case и goto. Меню должно работать до тех пор, пока пользователь не выберет пункт, соответствующий выходу из программы.

  7. Реализуйте игру «Угадай число!» так, чтобы программа сообщала, с какой попытки пользователь угадал число.

  8. Выведите на экран целые числа от 1 до N, используя циклическую конструкцию на базе операторов if и goto.

  9. Выведите на экран N случайных чисел, используя циклическую конструкцию на базе операторов if и goto.

  10. Вычислите сумму 1/1+1/2+…+1/N с использованием циклической конструкции на базе операторов if и goto.

Тема 2.2. Циклы while и do-while

В предыдущей теме циклическая конструкция на базе операторов if и goto была рассмотрена исключительно в учебных целях. В программировании для реализации циклов существуют специальные операторы. В языке C++ существуют три типа циклов: for, while и do-while. Каждый из них может быть переписан с помощью другого, но удобное и лаконичное решение конкретной задачи обычно можно получить только с помощью одного из них. Тем не менее, для учебных целей мы будем решать одни и те же задачи разными способами, используя разные циклы.

2.2.1Назначение циклов и базовые понятия

Рассмотрим задачу вывода на экран десяти чисел. Для этого можно написать следующий код:

cout << "0 1 2 3 4 5 6 7 8 9";

Можно также вызвать cout десять раз:

cout << "0 "; cout << "1 ";

cout << "2 "; cout << "3 ";

cout << "4 "; cout << "5 ";

cout << "6 "; cout << "7 ";

cout << "8 "; cout << "9 ";

Но что делать, если понадобится вывести 1000 чисел? Вызывать cout 1000 раз? А что делать, если количество требуемых чисел вводит пользователь, и, значит, при написании программы это количество неизвестно? Подобные проблемы решаются с использованием циклов.

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

2.2.2Цикл while

Изучение циклов мы начнем с цикла while, синтаксис которого напоминает синтаксис оператора if, а его суть – циклическую конструкцию на базе операторов if и goto. При использовании цикла while необходимо указать команды, требующие повторения (тело цикла), и задать условие, при котором цикл должен осуществлять эти повторения. Синтаксис цикла while следующий:

while (<условие работы>) {

<тело цикла>;

}

Этот цикл напоминает оператор if, только if при истинном проверяемом условии выполняет команды из своего тела только один раз, а цикл while выполняет их до тех пор, пока условие не станет ложным. Этот цикл совмещает в себе функционал условного оператора и оператора goto, обеспечивая переход к проверяемому условию каждый раз после выполнения команд, требующих повторения. Для иллюстрации применения этого цикла рассмотрим задачу вывода на экран 100 звездочек. Псеводкод программы выглядит так:

while (<пока не выведены 100 звездочек>) {

<вывести одну звездочку>;

}

Вывести одну звездочку довольно просто:

cout << "*";

Для вывода 100 звездочек нужно использовать стандартный прием – переменную-счетчик. Следует инициализировать это переменную нулем перед циклом, а после вывода звездочки на экран увеличивать ее на единицу. Цикл продолжается до тех пор, пока эта переменная не станет равной 100.

#include <iostream>

using namespace std;

int main() {

int i=0;

while (i<100) {

cout << "*";

i++;

}

system("pause");

return 0;

}

Обратите внимание на важность операции инкрементирования переменной i. Если ее убрать, то эта переменная всегда будет равна 0 и условие i<100 всегда будет истинно, значит, цикл будет выполняться бесконечное число раз. Переменная i является счетчиком итераций: после первой итерации она равна 1, после второй – 2 и т.д. Пока что она использовалать только при проверке условия работы цикла, однако ее можно использовать и в теле цикла, например, вывести на экран.

#include <iostream>

using namespace std;

int main() {

int i=0;

while (i<100) {

cout << i << " ";

i++;

}

system("pause");

return 0;

}