Цикл з постумовою. Оператор do while 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Цикл з постумовою. Оператор do while



Синтаксис оператора такий:

 

do

оператор

while (вираз);

 

Оператор – це довільний оператор мови програмування С++, в тому числі блок операторів, який формує тіло циклу. Вираз – довільний вираз, що задає умову виконання циклу. В цьому операторі спочатку виконується тіло циклу, після цього здійснюється перевірка умови продовження циклу. Блок – схема роботи оператора і приклад його використання наведені на мал. 6.4.

 

Мал. 6.4. Блок схема і приклад використання оператора do while

 

Приклад програми. Користувач вводить послідовність цілих чисел. Кількість чисел заздалегідь не відома, ознакою кінця вводу чисел є нуль. Знайти суму чисел.

 

#include <iostream>

using namespace std;

int main() {

int t, s = 0;

do {

     cin >> t;

     s += t;

} while (t!= 0);

cout << s << endl;

}

Знайти перше нульове значення функції  для значень х більше нуля. Будемо шукати перше значення функції, яке знаходиться «на відстані» допустимої помилки від нуля, тобто .

 

#include <iostream>

using namespace std;

int main() {

double f;    // Значення функції

double d = 1e-5; // Крок зміни х

double x = 0.; // Поточне значення х

double e = 1e-5; // Допустима помилка розрахунків

do {

     f = sin(pow(x, 2.)) + pow(cos(x), 2.);

     x += d;

} while (f < -e || f > e);

cout << "x = " << x << endl; // 1.78519

cout << "f = " << f << endl; // 1.02908e-006

}

 

Знайти перше нульове значення функції  для значень х більше нуля. Будемо знаходити два значення функції – для поточного і наступного значень х. Якщо знак цих двох значень функції буде різним, тобто перше додатне, друге – від’ємне, або навпаки, то між цими двома значеннями х функція переходе через нуль.

 

#include <iostream>

using namespace std;

int main() {

double f1, f2;    // Значення функції для x i x+d

double d = 1e-5; // Крок зміни х

double x = 0.; // Поточне значення х

do {

     f1 = sin(pow(x, 2.)) + pow(cos(x), 2.);

     f2 = sin(pow(x + d, 2.)) + pow(cos(x + d), 2.);

     x += d;

} while ((f1 > 0 && f2 > 0) || (f1 < 0 && f2 < 0));

cout << "x = " << x << endl; //  1.78519

cout << "f1 = " << f1 << endl; //  1.02908e-006

cout << "f2 = " << f2 << endl; // -3.04804e-005

}

 

Оператори переходу

В мові С++ реалізовано чотири оператори переходу: goto, break, continue, return. Всі вони змінюють послідовний порядок виконання операторів і передають управління не наступному, а певному встановленому оператору програми.

Оператор goto передає управління іншому оператору програми, позначеному заданою міткою. Його синтаксис такий:

 

goto мітка;

/* оператори програми */

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

 

Міткою у мові С++ може бути довільний ідентифікатор, який не збігається з іншими ідентифікаторами програми. Мітка відокремлюється від оператора, який вона позначає, двокрапкою.

Оператор goto використовують рідко. Вважається, що він заплутує програму і робить її незрозумілою. Перехід можна виконувати як у напрямку кінця програми, так і у напрямку її початку, тому відповідну мітку в програмі знайти не легко. Єдина заборона – не можна переходити з однієї функції в іншу.

Знайдемо машинний нуль, тобто числове значення, менше якого неможливо задати точність алгоритму.

 

#include <iostream>

using namespace std;

int main() {

double b = 1.;

M: b /= 2;

if (b + 1 > 1) goto M;

cout << b << endl;        // 1.11022e-16

}

 

Оператор break призначений для переривання роботи оператору switch і всіх трьох операторів циклу for, while i do while. При виконанні оператора break всередині оператора switch управління буде передано оператору, наступному за оператором вибору. При виконанні оператора break всередині оператора циклу, виконання оператора циклу припиняється без перевірки умови завершення циклу, управління передається до оператора, наступного за оператором циклу.

Оператор переходу continue може виконуватися тільки в тілі операторів циклу. Його призначення – перервати поточне виконання операторів тіла циклу і перейти до нової ітерації циклу. При цьому всі оператори тіла циклу, записані після оператора continue, пропускаються. Якщо continue виконується в операторі for, то відразу після нього обчислюється вираз ітерації, а потім перевіряється умова виконання циклу. Якщо continue виконується всередині циклів while i do while, то відразу відбувається перехід на наступну перевірку умови виконання циклу.

Знайдемо кількість чисел, які діляться без залишку на 7 в інтервалі від 1 до 100.

 

#include <iostream>

using namespace std;

int main() {

int i, n;

for (i = 1, n = 0; i <= 100; ++i) {

     if (i % 7) continue;

     n++;

}

cout << n << endl;

}

 

Оператор return завершує роботу функції, ф якій він виконується. Керування програмою повертається до оператора, з якого була викликана функція. Оператор має дві форми запису:

 

return;    // без повернення значення

return вираз; // зі значенням, що буде повернене

 

Перша форма застосовується в функціях, які не повертають значення – такі функції мають тип void. Друга форма запису застосовується, коли функція повинна повернути значення певного типу. В цьому випадку вираз задає значення, яке повертає функція. Отримане значення передається в точку виклику функції.

Функція main починає і закінчує роботу всієї програми. Тому виконання оператора return всередині функції main призводить до завершення роботи програми.



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 49; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.153.38 (0.01 с.)