Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C_LAB_03_Циклы_простые_L15_Metodichka_ukr.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
254 Кб
Скачать
☆

Void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

cout.setf(ios::fixed );

float xn, xk, dx;

float x, y;

cout<<"Введите xn, xk, dx :";

cin>>xn>>xk>>dx;

cout<<"X\tY"<<endl;

for(x=xn; x<=xk; x += dx)

{

y=-x*x+1;

cout<<setprecision(2)<<x<<'\t'<<y<<endl;

}

cout<<endl;

system("pause");

}

Последний пример ВЫПОЛНЯЮТ ТЕ ЖЕ ДЕЙСТВИЯ, что и пример для цикла с предусловием, но записан более компактно и наглядно: все действия, связанные с управлением циклом, локализованы в его заголовке.

Любой цикл while может быть приведен к эквивалентному ему циклу for и наоборот по следующей схеме:

for (b1; b2; b3) операторы;

while (b2)

{

оператор;

b3;

}

Часто встречающиеся ошибки при программировании циклов — использование в теле цикла НЕИНИЦИАЛИЗИРОВАННЫХ переменных и НЕВЕРНАЯ ЗАПИСЬ УСЛОВИЯ ВЫХОДА ИЗ ЦИКЛА.

Чтобы избежать ошибок, рекомендуется:

  • проверить, всем ли переменным, встречающимся в правой части операторов присваивания в теле цикла, присвоены до этого начальные значения (а также возможно ли выполнение других операторов);

  • проверить, изменяется ли в цикле хотя бы одна переменная, входящая в условие выхода из цикла;

  • предусмотреть аварийный выход из цикла по достижению некоторого количества итераций (см. пример в следующем разделе);

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

Оператор for предпочтительнее в большинстве остальных случаев (однозначно - для организации циклов со счетчиками).

Операторы передачи управления

В C++ есть четыре оператора, изменяющих естественный порядок выполнения вычислений:

  • оператор безусловного перехода goto;

  • оператор выхода из цикла break;

  • оператор перехода к следующей итерации цикла continue;

  • оператор возврата из функции return.

Оператор goto

Оператор безусловного перехода goto имеет формат:

goto метка;

В теле той же функции должна присутствовать ровно одна конструкция вида:

метка: оператор;

Оператор goto передает управление на помеченный оператор. Метка — это обычный идентификатор, областью видимости которого является функция, в теле которой он задан.

Использование оператора безусловного перехода оправдано в двух случаях:

  • принудительный выход вниз по тексту программы из нескольких вложенных циклов или переключателей;

  • переход из нескольких мест функции в одно (например, если перед выходом из функции всегда необходимо выполнять какие-либо действия).

В остальных случаях для записи любого алгоритма существуют более подходящие средства, а использование goto приводит только к усложнению структуры программы и затруднению отладки^. Применение goto нарушает принципы структурного и модульного программирования, по которым все блоки, из которых состоит программа, должны иметь только один вход и один выход. В любом случае не следует передавать управление внутрь операторов if, switch и циклов. Нельзя переходить внутрь блоков, содержащих инициализацию переменных, на операторы, расположенные после нее, поскольку в этом случае инициализация не будет выполнена:

int к; ...

goto metka; ...

{

int а = 3, b = 4;

к = а + b;

metka:

int m = к + 1; ...

}

После выполнения этого фрагмента программы значение переменной га не определено.

Оператор break

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

Оператор continue

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

Оператор return

Оператор возврата из функции return завершает выполнение функции и передает управление в точку ее вызова. Вид оператора:

return [ выражение ];

Выражение должно иметь скалярный тип. Если тип возвращаемого функцией значения описан как void, выражение должно отсутствовать.

Приклад розв’язання задачі. Назад

Практична робота

Цикли прості.

Мета|ціль| роботи: отримання практичних навичок в роботі з операторами циклу мови C++.

Завдання|задавання| для виконання

Написати програму, яка виводить таблицю значень функції у = -х2+1 у введеному діапазоні змінній х із заданим кроком.

Вхідні дані:

Початкове значення аргументу: хn|. Дійсне число.

Кінцеве|скінченне| значення аргументу : хk|. Дійсне число.

Крок : dx|. Дійсне число.

Аргумент функції: х; Дійсне число.

Вихідні дані:

Значення функції: у; Дійсне число.

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

cout.setf(ios::fixed );

float xn, xk, dx;

float x, y;

cin>>xn>>xk>>dx;

cout<<"X\tY"<<endl;

for(x=xn; x<=xk; x += dx)

{

y=-x*x+1;

cout<<setprecision(2)<<x<<'\t'<<y<<endl;

}

cout<<endl;

system("pause");

}

Результат

5 8 0.5

X Y

5.00 -24.00

5.50 -29.25

6.00 -35.00

6.50 -41.25

7.00 -48.00

7.50 -55.25

8.00 -63.00