Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота 3н.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
176.64 Кб
Скачать

Лабораторна робота № 3

Тема: Програмування арифметичних циклів

Мета роботи: Набуття навичок використання мови С++ для програмування арифметичних циклів.

Теоретичні відомості

Цикл з параметром for. Загальний вид даного оператора:

for ( I; V; M ) O;

I - ініціалізація;

V - вираз;

M - модифікація;

O - оператор.

Ініціалізація використовується для оголошення і присвоєння початкових значень величинам, що використовуються в циклі. В частині I можна записувати кілька операторів розділених комою. Наприклад:

for ( int i=0,j=1; ...

int k,m;

for ( k=1,m=1; ...

Область дії змінних, оголошених в частині ініціалізації циклу – даний цикл.

Вираз – логічний вираз визначає умову виконання циклу. true – цикл виконується, в противному випадку (false) цикл не виконується. Цикл з параметром реалізований як цикл з передумовою. Наведемо приклад:

for ( int i=1; i<n; ...

Тут логічний вираз - i<n. Цикл буде виконуватись до тих пір, поки i залишається меншим n.

Модифікація – виконується після кожної ітерації циклу, і служить для зміни параметра циклу. Доповнимо попередній приклад частиною модифікації:

for ( int i=1; i<n; i=i+1) ...

Тут модифікація - вираз i=i+1. Він модифікує, тобто змінює i. У даному випадку в кожному наступному циклі i збільшується на 1. i=i+1 можна замінити на операцію інкремента i++.

В частині модифікації можна записувати кілька операторів через кому. Наприклад:

for ( int i=0,j=0; i<n; i++,j++) ...

Оператор – це тіло циклу. якщо тіло циклу це кілька операторів, то вони заключаються у блок { ...}.

Наведемо приклад обчислення суми чисел від 1 до n:

int s=0;

for ( int i=1; i<=n; i++) s=s+i;

У даному прикладі простий оператор присвоєння s=s+i; можна замінити на складний оператор присвоєння s+=i;.

Будь-яка частина оператора for може бути опущена, але ; потрібно залишити. Так у наведеному прикладі модифікацію, тобто інкремент, можна перенести у оператор. І тоді наведений фрагмент програми буде виглядіти так:

int s=0;

for ( int i=1; i<=n; ) s+=i++;

Таким чином, до оператора складного присвоєння ”причеплений” інкремент, а частина модифікації відсутня. Побудовану конструкцію s+=i++ можна перенести на місце модифікації:

int s=0;

for ( int i=1; i<=n; s+=i++) ;

Тепер у нас відсутній оператор.

Ініціалізацію також можна винести з оператора for наперед, і тоді фрагмент програми буде мати вид:

int s=0,i=1;

for ( ; i<=n; ) s+=i++;

Така зміна не є оптимальною, оскільки опис і ініціалізацію змінної, згідно стилю С++, потрібно по максимуму наближати до місця її використання. Змінна i використовується тільки всередині оператора for, і тому доцільно її всередині оператора for описати та ініціалізувати.

Приклад 1. Обчислити суму чисел від 1 до n:

Остаточний текст програми, фрагмен до якої наводились вище:

#include <iostream>

using namespace std;

Void main()

{

int n;

cout << "n="; cin >> n;

int s=0;

for (int i=1; i<=n; i++) s+=i;

cout << " s=" << s << endl;

}

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

Приклад 2. Обчислити n!

По постановці дана задача подібна до попередньої. Тоді для її розв’язання можна запропонувати наступну програму:

#include <iostream>

using namespace std;