Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ТП Хагги П.А..doc
Скачиваний:
9
Добавлен:
13.11.2019
Размер:
326.14 Кб
Скачать

Тема 3. Циклы for и while

В третьей теме представлены циклы while и for и некоторые операции (присваивания, инкремента).

/* Нахождение суммы целых чисел от 1 до 100 (ответ 5050)

Вариант с циклом while

*/

#include <iostream>

using namespace std;

int main()

{

int sum = 0;

int i = 1;

while (i <= 100) { // сокращенная форма записи для:

sum += i; // sum = sum + i

++i; // i = i + 1

}

cout << "Сумма чисел от 1 до 100 = " << sum;

return 0;

}

Оператор while служит для многократного выполнения некоторых действий в программе и называется цикл «пока». В общем случае цикл «пока» записывается следующим образом:

while (условие) {

действия;

}

Тело цикла, записанное в { } выполняется до тех пор, пока является истинным условие, записанное в ( ) после while. Чтобы конструкция не превратилась в «вечный» цикл, нужно следить, чтобы управляющая переменная, влияющая на завершение цикла, как-то изменялась внутри самого цикла.

Операция присваивания в языке С++ записывается "=", её не следует путать с операцией сравнения, которая обозначается двумя знаками равенства "==". Использование операции присваивания вместо операции сравнения – это одна из распространённых ошибок при переходе с языка Паскаль на С++.

Оператор ++i демонстрирует операцию ++, которая обозначает увеличение на единицу (инкремент). Можно записать i = i + 1, но ++i более кратко и эффективно. Имеется соответствующая операция уменьшения на единицу --. Операции ++ и -- могут быть как префиксные, так и постфиксные. По одной из версий, язык С++, как преемник языка С, получил своё наименование именно благодаря операции инкремента.

Существуют и другие сокращенные формы записи арифметических операций. В общем случае запись вида:

<переменная> <операция>= <выражение>

является сокращенной формой для:

<переменная> = <переменная> <операция> <выражение>

В качестве операции могут выступать арифметические и побитовые логические: –, +, *, /, %, &, |, <<, >> и т.п. Например, выражение prod *= 10 означает, что текущее значение переменной prod надо увеличить в 10 раз.

Переменные могут быть инициализированы во время описания константным выражением, например: int sum = 0. Вообще, давать начальное значение всем переменным – это хорошая практика. В языке С++ переменные, объявленные внутри функции, являются локальными и не инициализируются никаким значением по умолчанию (то есть содержат «мусор»), поэтому перед использованием им обязательно нужно присваивать начальное значение.

/* Нахождение суммы целых чисел от 1 до 100 (ответ 5050)

Вариант с циклом for

*/

#include <iostream>

using namespace std;

int main()

{

int sum = 0;

for (int i = 1; i <= 100; ++i) {

sum += i;

}

cout << "Сумма чисел от 1 до 100 = " << sum;

return 0;

}

Оператор for является более сложным оператором цикла по сравнению с while. Он содержит в заголовке три части, разделенные ";", каждая из которых может быть выражением. Первая часть int i = 1 выполняется один раз перед входом в сам цикл (инициализация). Вторая часть <= 100 является условием, если оно истинно, то выполняется тело цикла. Затем выполняется третья часть ++i (модификация), после чего снова проверяется условие.

Обратите внимание, что переменная i доступна и существует только внутри цикла for, поскольку она объявлена в заголовке цикла. А область действия переменной i, объявленной перед циклом while в предыдущем примере, простирается до конца функции main.

В заголовке оператора for любая из частей может быть опущена, в предельном случае запись for(;;) обозначает "вечный" цикл. Другой общепринятой записью "вечного" цикла является while(true).

Задания к теме 3

Задание 3–1. [Сумма чётных целых чисел от 1 до N]

Ввести с клавиатуры целое положительное число N. Посчитать сумму чётных целых чисел от 1 до N.

Задание 3–2. [Таблица у = sin(x)]

Напечатать таблицу значений функции у = sin(x), где x изменяется от 0 до 180° с шагом 15. Нарисовать разделительные линии и шапку таблицы. Замечание: библиотечная функция sin(x) принимает значение угла в радианах, а не градусах (π радиан = 180°).

Задание 3–3. [Таблица Фаренгейт–Цельсий]

Соответствие между шкалой Цельсия и шкалой Фаренгейта задается формулой: C = 5/9 * (F – 32).

Напечатать таблицу соответствия двух шкал, если градусы Фаренгейта изменяются от 0 до 300 с шагом 20. Нарисовать разделительные линии и шапку таблицы.

Задание 3–4. [Вычисление x^n для целого неотрицательного n]

Написать программу вычисления x^n, где x – вещественное число, а n – целое неотрицательное. Значения x и n ввести с клавиатуры.

*Задание 3–5. [Вычисление x^n]

Написать программу вычисления x^n, где x – вещественное число, а n – произвольное целое число (в том числе и отрицательное). Значения x и n ввести с клавиатуры.

*Задание 3–6. [Цифры числа]

Ввести с клавиатуры целое положительное число. Напечатать его цифры через пробел в прямом порядке (без ведущих нулей).

Задание 3–7. [«Счастливые» билетики]

Подсчитать число «счастливых» шестизначных билетиков в диапазоне от 100000 до 999999. Билет считается «счастливым», если сумма его первых трёх цифр совпадает с суммой последних трёх. (Ответ: 50412)