Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






while (выражение) оператор

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

Пример 4.1. Использование цикла с предусловием

Напишем программу, которая вводит с клавиатуры символы до тех пор, пока не будет введен символ «.». Для контроля введенные символы выводятся на экран.

Так как условие проверяется в начале каждой итерации, перед выполнением цикла переменной sym нужно присвоить значение, отличное от точки (в программе – символ «*»), чтобы цикл выполнился хотя бы один раз

Пример 4.2. Вычисление суммы цифр числа

Напишем программу, которая вычисляет сумму цифр введенного числа.

Обратите внимание на выражение после while. Здесь нет необходимости проверять условие (n! =0). Эффективнее написать просто (n), так как при n> 0 С++ считает, что выражение имеет значение true, при n=0 – значение false.

Пример 4.3. Вычисление наибольшего общего делителя двух чисел с помощью алгоритма Евклида

Оператор цикла с последующим условием

Оператор цикла с последующим условием имеет следующий синтаксис:

do оператор while (выражение);

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

Пример 4.4. Использование оператора цикла с постусловием для вычисления ряда

Напишем программу, которая вычисляет значение ряда с заданной точностью. В качестве примера рассмотрим разложение в ряд функции sin(x):

Чтобы избежать вложенных циклов и сделать вычисления более эффективными, на каждом шаге мы не возводим x в степень 2n+1, а просто умножаем значение предыдущего шага на x2. Аналогично поступаем с вычислением (-1)n: вместо возведения в степень достаточно просто изменять знак слагаемого на противоположный. Для вычисления факториала в знаменателе также не нужен цикл, достаточно предыдущее значение домножить на 2 очередных значения.

Эту программу можно еще улучшить. Запишем наш ряд в виде:

Очевидно, что a0=x. Для остальных an мы получили рекуррентное соотношение, которое позволяет вычислить текущее значение an через предыдущее. Так как значение n нам нужно только для вычисления величины 2n, в программе мы используем переменную i, которая принимает только четные значения (чтобы не делать лишних умножений). Новый вариант программы приведен ниже:

Оператор цикла с параметром

Оператор цикла с параметром используется в тех случаях, когда известно количество итераций цикла. Его синтаксис:

for (выражение1; выражение2; выражение3) оператор;

Выражение1 используется для объявления и присвоения начальных значений величинам, используемым в цикле. Можно написать несколько операторов, разделив их запятой. Инициализация переменных выполняется один раз в начале исполнения цикла.

Выражение2 определяет условие выполнения цикла. Пока значение выражения, приведенное к типу bool, равно true, цикл выполняется.

Выражение3 обычно определяет правило изменения параметров цикла. Выполняется после каждой итерации цикла. Можно написать несколько операторов через запятую.

Ни одно из трех выражений не является обязательным, но точки с запятой должны присутствовать.

Оператор continue

Оператор continue – оператор перехода к следующей итерации цикла. Он пропускает все операторы, оставшиеся до конца тела цикла, и передает управление на начало следующей итерации. Оператор не используется для выхода из цикла.

Оператор break

Оператор break используется внутри операторов цикла, if или switch для перехода в точку программы, находящуюся непосредственно за оператором, внутри которого находится break. С помощью break мы можем досрочно прервать выполнение цикла и продолжить выполнение программы. Например,

for(;;) {…

if (выражение) break;

…}

В данном случае выполняется «бесконечный» цикл. Однако, как только выражение в операторе if станет истинным, цикл завершится.

Пример 4.5. Использование цикла с параметром для печати таблицы

Напишем программу, которая выводит на экран значения функции sin(x) на интервале [-π /2; π /2].

Переменные x и dx можно заранее не объявлять, а объявить их в заголовке цикла. Тогда строка 1 будет не нужна, а заголовок цикла (строка 2) будет иметь вид:

Пример 4.6. Нахождение делителей целого числа

Все делители целого числа выводится на экран через запятую в одну строку.

Задания для самостоятельной работы

1. Проверьте, является ли введенное целое число палиндромом, т.е. числом, которое одинаково читается как слева направо, так и справа налево. Например, число 34543 – палиндром.

2. Смешанная дробь задана тремя числами: a – целая часть, b – числитель, c – знаменатель. Преобразуйте ее в правильную несократимую дробь. Например, при a=1, b=6, c=4 мы должны получить a=2, b=1, c=2. Ответ выдайте в виде строки " 2 1/2".

3. Вычислите значение функции arcsin(x) с погрешностью e=10-3 и определите число требуемых для этого итераций при x=0, 5.

4. Уточнить корень уравнения 0, 1 x 2- x ln(x)=0 на отрезке [1; 2] с точностью e=10-5, используя метод деления отрезка пополам.

5. Вычислить первые 20 членов последовательности 1, , , , … и их сумму. Результат выдать в виде таблицы.

6. Вычислите значение интеграла

    1. по формуле прямоугольников , где h=(b-a)/n, xi=a+ih.
    2. по формуле трапеций , где h=(b-a)/n,, xi=a+ih.

Если вы вычислите значение интеграла для одного n, то по результату нельзя сказать, насколько точное значение было получено. Чтобы рассчитать значение с заданной точностью eps, нужно вычислить его для нескольких возрастающих n, например, каждый раз увеличивая n в 2 раза. Если на очередном шаге суммы отличаются меньше, чем на eps, то вычисления можно остановить, считая, что необходимая точность достигнута.

7. С клавиатуры вводятся n целых чисел. Найти минимальное положительное и максимальное отрицательное числа.

8. С клавиатуры вводится последовательность, состоящая из n целых чисел. Найти наименьшее среди простых чисел последовательности.

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

<== предыдущая лекция | следующая лекция ==>
Семинар 14. Многофайловые проекты | Семинар 5. Массивы




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.