- •Тема 2. Условный оператор if 10
- •Тема 2. Условный оператор if
- •Тема 3. Циклы for и while
- •Тема 4. Циклы с неизвестным числом повторений. Вычисление суммы ряда с заданной точностью
- •Тема 5. Цикл do…while. Случайные числа
- •Тема 6. Использование массивов
- •Тема 7. Работа со строками
- •Тема 8. Функции
- •Тема 9. Работа с файлами
- •Тема 10. Использование структур
Тема 3. Циклы for и while
В третьей теме представлены циклы while и for и некоторые операции (присваивания, инкремента).
/* Нахождение суммы целых чисел от 1 до 100 (ответ 5050)
Вариант с циклом while
*/
#include <iostream>
using namespace std;
int main()
{
intsum= 0;
inti= 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выполняется один раз перед входом в сам цикл (инициализация). Вторая частьi <= 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)