Налаштування обладнання та програмного забезпечення

Програмування циклічних обчислювальних процесів. Методика табулювання та програмування функцій Цикл з використанням оператора for зручно використовувати, коли потрібна кількість ітерацій заздалегідь відома

У програмуванні ми часто стикаємося із завданнями, в яких зустрічаються повторювані процеси. Тому ми повинні знати та вміти користуватися таким поняттям як « циклічні обчислювальні процеси».

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

Що таке цикл у програмуванні?

Цикл – у програмуванні називається багаторазове повторення одних і тих самих дій чи обчислень, але з одним і ті ж залежностям з різними значеннями змінних.

З поняттям цикл ми зустрічаємося у програмуванні. У багатьох сферах нашого життя існують цикли.

Наприклад - кругообіг води в природі, це природний цикл у нашому житті.

А тепер розглянемо загальні правилаі поняття, що використовуються в обчислювальних циклах.

Етапи циклічного процесу

У загальному випадку цикл має бути реалізований за 4 етапи:
  • 1 етап – підготовка циклу (ініціалізація).
    Встановлення початкового значення параметра та змінної циклу.
    Параметр циклу- Ця величина, яка вважає число кроків циклу (число повторень циклу).
    Змінна циклу- Це величина, яка змінює своє значення на кожному етапі циклу.
    Ініціалізація– це завдання початкових значень параметра та змінної циклу.
  • 2 етап – тіло циклу.
    Це багаторазове повторення дію в циклі або обчислень за одним і тим самим математичним залежностям з різними значеннями змінних.
  • 3 етап – модифікація (зміна) циклу.
  • 4 етап – керування циклом.
    Це перевірка умов на продовження або початок циклу.
У pascal існує 3 оператори циклу, які можуть реалізувати будь-яку алгоритмічно – циклічну структуру :
  1. Оператор циклу з параметром
  2. Оператор циклу з передумовою
  3. Оператор циклу з постумовою
Детально їх ми розглянемо у наступних статтях.

ПРОГРАМУВАННЯ ЦИКЛІЧНИХ ВИЧИСЛЮВАЛЬНИХ ПРОЦЕСІВ

Основні відомості

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

оператор циклу з параметром For – Next , конструкція якого використовується, якщо відомо, скільки разів має повторитися тіло циклу:

For лічильник = початкове_значення Те кінцеве_значення Step крок блок_операторів

Next з чітчик

оператори циклу з передумовоюабо постумовою, що використовуються для організації циклу з невідомим заздалегідь числом повторень тіла циклу:

Конструкція циклу

Конструкція циклу

з передумовою має вигляд:

з постумовою має вигляд:

Do While умова

блок_операторів

блок_операторів

Loop While умова

Do Until умова

блок_операторів

блок_операторів

Loop Until умова

While умова

блок_операторів

Розробимо форму користувача і складемо програму для визначення індексу рентабельності пропонованого інвестиційного проекту оновлення обладнання, якщо сума початкових вкладень (ПВ) становить 10 000 тис. р., ставка дисконтування r = 10 %, а передбачувані грошові потоки:

Грошовий потік (ДПk B), B тис. н.

Нехай користувальницька форма матиме вигляд (рис. 1), а значення величин грошових потоків в 1-му – 5-х роках зчитуються з осередків робочого листа «Приклад 1» (рис. 2).

Властивості об'єктів форми представлені у таблиці 1.

Рис. 1. Форма «Індекс рентабельності

рентабельності

інвестиційного проекту»

розраховується за формулою

∑n

ДПk

ІР =

k = 1 (1+ r )

де n – кількість років, протягом яких надходитимуть грошові надходження.

Рис. 2. Таблиця розподілу грошових потоків

Таблиця 1

Властивість

Властивість

Caption = Індекс рента-

Caption = Розмір первіс-

бельності інвестиційно-

них вкладень

го проекту

Caption = Ставка дисконту-

Caption = Індекс рентабельності

Caption = Очистити

Caption = Вихід

Для обробки події натискання кнопки "Розрахувати" введемо наступний

Private Sub calc_Click()

'завдання типу змінних

Dim pv, dp, i, n As Integer

Dim r, s As Single

'зчитування значень змінних

pv = Val(txtPV.Text)

r = Val(txtSD.Text)/100

n = Val(InputBox("Введіть кількість років, протягом яких будуть

приходити

грошові

надходження ", "Введення даних"))

'зчитування значень грошових потоків

dp = Cells(2, i + 2)

'сумування

txtIR.Text = Round(s / pv, 2) 'округлення та виведення результату

Функція Round (N, k) округляє число N до знаків після коми.

Далі за допомогою елемента Кнопка панелі інструментів Елементи керуванняРозмістимо нижче таблиці кнопку "Відкрити форму" для запуску процедури "ФормаІндексРентабельності" (рис. 3). Код цієї процедури має вигляд:

Private Sub ФормаІндексРентабельності_Click ()

Рис. 3. Визначення індексу рентабельності інвестиційного проекту

За допомогою створеної кнопки «Відкрити форму» запустимо форму та розрахуємо індекс рентабельності інвестиційного проекту (рис. 3).

Розробимо форму користувача і складемо програму для пошуку всіх двозначних чисел, сума квадратів цифр яких ділиться на 13.

Для створення даної форми користувача перейдемо в редактор VB (залишимось у тій же робочій книзі MS Excel, що і в прикладі 1) і додамо ще одну форму (рис. 4).

Властивості об'єктів форми представлені у таблиці 2.

Для обробки подій натискання кнопок

наступний код:

Private Sub calc_Click()

Рис. 4. Форма для прикладу 2

Label2.Caption = ""

'визначення першої цифри двозначного числа

визначення другої цифри двозначного числа

If (i1^2+i2^2) Mod 13=0 Then Label2.Caption = Label2.Caption+Str(i)+" "

Private Sub clean_Click()

Label2.Caption = ""

Private Sub exitForm_Click()

Таблиця 2

Властивість

Caption = Приклад 2

Caption = Двозначні числа, сума

квадратів цифр яких поділяється на 13

TextAlign = 2-fmTextAlignCenter

Caption = “ ”

AutoSize = False

Властивість

Caption = Очистити

Caption = Вихід

На робочому аркуші «Приклад 2» розмістимо

кнопку «Відкрити форму» для виклику форми

«Приклад 2» і запустимо цю форму(Рис.

Розробимо

користувальницький

інтерфейс

і складемо

програму для ви-

суми ряду:

чищення з точністю ε = 10P

k + 2

S = ∑

(− 1)

k = 1

Залишимось у тій самій робочій книзі Excel,

що і в прикладах 1 і 2. За допомогою інстру-

Рис. 5. Двозначні числа, сума квад-

ментів «Напис», «Поле» та «Кнопка» па-

ротів цифр яких ділиться на 13

нілі інструментів

Елементи

управління

розмістимо на робочому аркуші "Приклад 3" відповідні об'єкти (рис. 6).

Властивості об'єктів аркуша "Приклад 3" представлені в таблиці 3.

Таблиця 3

Властивість

Властивість

Caption = Сума ряду

Caption = Очистити

Для обробки подій натискання кнопок «Розрахувати» та «Очистити» введемо в модулі «Лист3(Приклад 3)» наступний програмний код:

eps = Val(InputBox("Задайте точність", "Введення даних"))

a=(-1)^(k+2)/(f*2^k) s=s+a

Loop txtS.Text = s

Private Sub clean_Click() txtS.Text = ""

Тут тіло циклу Do While – Loop буде

виконуватися,

доданок

абсолютної

k + 2

n− 1

k + 2

n+ 2

величині (т.

(− 1)

−∑

(− 1)

(− 1)

) буде

Рис. 6. Обчислення суми

k = 1

k = 1

перевищувати задану точність 10 P

Перевіримо роботу програми (рис. 7).

Розробимо

користувальницьку

складемо програму на вирішення наступного завдання.

При аналізі господарської діяльності перед-

встановлена

наступна

закономірність: у січні 2004 р. прибуток даного

підприємства становила 573 тис. нар. і протягом

наступних 5 років щомісячно збільшувалася на i %,

де i – номер місяця (тобто у лютому – на 2 %, у березні

- на 3% і т. д.), в порівнянні з сумою прибутку в

Рис. 7. Результат обчислення

попередньому місяці.

Визначити отримані перед-

суми ряду

прийняттям суми прибутку за 2004, 2005, …, 2008, а також загальну суму прибутку за ці 5 років.

Для створення даної форми користувача перейдемо в редактор VB (залишимось у тій же робочій книзі MS Excel, що і в прикладах 1–3) і додамо ще одну форму (мал. 8). Виведення обчислених значень прибутку підприємства буде здійснюватися як у полі об'єкта список (ListBox), розміщеного на формі, так і в осередку робочого листа «Приклад 4» (рис. 9).

Рис. 8. Форма "Прибуток підприємства" Мал. 9. Таблиця наприклад 4

Властивості об'єктів форми представлені у таблиці 4.

Таблиця 4

Властивість

Властивість

Caption = Прибуток підприємства

Caption = Очистити

Caption = Вихід

Примітка. Властивість ColumnCount визначає кількість колонок об'єкта ListBox.

Для обробки подій натискання кнопок «Розрахувати», «Очистити» та «Ви-

хід» введемо наступний код:

Private Sub calc_Click() Dim i, j As Integer

Dim PrM, prG, sPr As Single

PrM = Val(InputBox("Введіть прибуток, отриманий у січні 2004 р.", "Введення даних"))

ListBox використовується метод AddItem, призначений для додавання елементів до списку

Ім'яСписка.AddItem Вираз , Індекс

де Вираз – елемент списку, який треба додати; Індекс – порядковий номер елемента списку (нумерація елементів списку починається з 0).

А властивість List (НомерРядки, Номер Стовпця) об'єкта ListBox повертає (привласнює) елемент списку, що стоїть на перетині вказаних рядків та стовпців.

На робочому аркуші «Приклад 4» розмістимо кнопку «Відкрити форму» для виклику форми «Прибуток підприємства» та запустимо цю форму (рис. 10).

Тепер можна додати в робочу книгу MS Excel ще один лист з ім'ям «Зміст», на якому, наприклад, за допомогою інструмента Кнопка панелі інструментів Форми створимо чотири кнопки: «Індекс рентабельності», «Двозначні числа», «Сума ряду», «Прибуток підприємства».

У редакторі VB додамо новий модуль(Insert → Module ), в якому введемо наступний код:

Public Sub ЛистПриклад1()

Worksheets("Приклад 1").Activate

ListPr.AddItem "Рік", 0

'завдання початкових підписів та даних

ListPr.List(0, 1) = "Прибуток, тис. р."

'цикл за роками

цикл по місяцях кожного року

If (i = 4) And (j = 1) Then

PrM = PrM* (1+j/100)

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

"Програмування циклічних обчислювальних процесів"

Мета роботи

Вивчення операторів циклу у мові С++.

Теоретична частина

Цикл- різновид керуючої конструкції у високорівневих мовах програмування, призначений для організації багаторазового виконання набору інструкцій. Також циклом може називатися будь-яка послідовність інструкцій, що багаторазово виконується, організована будь-яким способом.

Набір інструкцій, призначений для багаторазового виконання, називається тілом циклу . Одноразове виконання тіла циклу називається ітерацією . Вираз визначальний, чи буде в черговий раз виконуватися ітерація, чи цикл завершиться, називається умовою виходу або умовою закінчення циклу. Змінна, що зберігає поточний номер ітерації, називається лічильником ітерацій циклу чи просто лічильником циклу. Цикл не обов'язково містить лічильник, лічильник може бути не один - умова виходу з циклу може залежати від кількох змінних циклу змінних.

Виконання будь-якого циклу включає початкову ініціалізацію змінних циклу, перевірку умови виходу, виконання тіла циклу та оновлення змінної циклу на кожній ітерації. Крім того, більшість мов програмування надають засоби для дострокового управління циклом, наприклад, оператори завершення циклу, тобто виходу з циклу незалежно від істинності умови виходу (у мові Сі - break) та оператори пропуску ітерації (у мові Сі - continue).

Розрізняють такі види циклів.


1. Безумовні цикли.Цикли , вихід із яких не передбачений логікою програми. Спеціальних синтаксичних засобів для створення нескінченних циклів, зважаючи на їх нетиповість, мови програмування не передбачають, тому такі цикли створюються за допомогою конструкцій, призначених для створення звичайних (або умовних) циклів. Наприклад, У мові С використовується цикл for(;;)із незаповненими секціями.

2. Умовні цикли.Це цикли, виконання яких управляється деякою умовою, що перевіряється на початку або в кінці тіла циклу. Відповідно, умовні цикли бувають з передумовою та з постумовою. Цикл з передумовою - цикл, який виконується поки що істинно деяка умова, вказана перед його початком. Ця умова перевіряється довиконання тіла циклу, тому тіло може бути не виконано жодного разу (якщо умова від початку помилкова). У більшості процедурних мов програмування реалізується оператором whileЗвідси його друга назва - while-цикл. На мові С++ такий цикл має вигляд:

while(<условие>)

<тело цикла>

Цикл із постумовою -цикл, у якому умова перевіряється післявиконання тіла циклу. Звідси випливає, що цикл завжди виконується хоча б один раз. У мові Паскаль цей цикл реалізує оператор repeat..until, в Сі - do…while, наприклад:

<тело цикла>

while(<условие продолжения цикла>);

У різних мовах у використанні умови циклу з умовою є деякі відмінності. У Паскалі та мовах, що походять від нього, умова такого циклу трактується як умова виходу- цикл завершується, коли умова є істинною. У Сі - як умова продовження(Цикл завершується, коли умова хибно, такі цикли іноді називають «цикл поки»).

Цикл із виходом із середини- Найбільш загальна форма умовного циклу. Синтаксично такий цикл оформляється за допомогою трьох конструкцій: початку циклу, кінця циклу та команди виходу з циклу. Конструкція початку визначає точку програми, де починається тіло циклу, конструкція кінця - точку, де тіло закінчується. Всередині тіла повинна бути команда виходу з циклу, при виконанні якої цикл закінчується і управління передається оператору, що йде за конструкцією кінця циклу. Звичайно, щоб цикл виконався більше одного разу, команда виходу повинна викликатися не безумовно, а лише при виконанні умови виходу з циклу.

Основною особливістю циклу даного типує те, що частина тіла циклу, розташована після початку циклу і до команди виходу, виконується завжди (навіть якщо умова виходу з циклу є істинною при першій ітерації), а частина тіла циклу, що знаходиться після команди виходу, не виконується при останній ітерації. За допомогою циклу з виходом із середини можна легко змоделювати і цикл із передумовою (розмістивши команду виходу на початку тіла циклу), і цикл із постумовою (розмістивши команду виходу в кінці тіла циклу).

Цикл із лічильником - цикл, у якому деяка змінна змінює своє значення від заданого початкового значення до кінцевого значення з деяким кроком, і для кожного значення цієї змінної тіло циклу виконується один раз. У більшості процедурних мов програмування реалізується оператором for, в якому вказується лічильник (так звана "змінна циклу"), необхідна кількість проходів (або граничне значення лічильника) і, можливо, крок, з яким змінюється лічильник.

У деяких мовах, наприклад, Сі та інших, що походять від нього, цикл for, незважаючи на синтаксичну форму циклу зі лічильником, насправді є циклом з передумовою. Тобто в Сі конструкція циклу:


for (i = 0; i< 10; ++i)

Тіло циклу

фактично є іншою формою запису конструкції:

while (i< 10)

Тіло циклу

Тобто в конструкції for спочатку пишеться довільна пропозиція ініціалізації циклу, потім - умова продовження і, нарешті, деяка операція, що виконується після кожного тіла циклу (це не обов'язково має бути зміна лічильника; це може бути правка покажчика або якась зовсім стороння операція). Для мов такого виду вищеописана проблема вирішується дуже просто: змінна-лічильник веде себе цілком передбачувано і після завершення циклу зберігає своє останнє значення.

Організація циклів у мові Сі++

1. Цикл для.

Цикл з використанням оператора for зручно використовувати, коли потрібне число ітерацій заздалегідь відоме. Синтаксис даного оператора має вигляд:

for (дія на початок циклу;

умова продовження циклу;

дії наприкінці кожної ітерації циклу) (

інструкція циклу;

інструкція циклу 2;

інструкція циклу N;

Існує окремий випадок цього запису (з лічильником):

for (лічильник = значення; лічильник< значение; шаг цикла)

тіло циклу;

Спочатку надається початкове значення лічильнику, після чого ставиться крапка з комою. Потім визначається кінцеве значення лічильника циклу. Після того, як значення лічильника досягне вказаної межі, цикл завершиться. Потім задається крок циклу - значення, яке буде збільшуватися або зменшуватися лічильник циклу при кожному проході.

Приклад: підрахунок суми всіх числа від 1 до 1000.

#include

using namespace std;

int i; // лічильник циклу

int sum = 0; // сума чисел від 1 до 1000.

setlocale(0, "");

for (i = 1; i<= 1000; i++) // задаем начальное значение 1, конечное 1000 и задаем шаг цикла - 1.

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

2. Цикл while.

Організацію циклів whileабо do...whileзручно використовувати, коли потрібне число ітерацій заздалегідь невідомо. Синтаксис циклу whileв C++ виглядає так.

while (Умова) (

Тіло циклу;

Цей цикл буде виконуватися, поки умова, вказана в круглих дужках, є істинною. Приклад реалізації підсумовування чисел від 1 до 1000 за допомогою циклу while:

#include

using namespace std;

setlocale(0, "");

while (i< 1000)

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

3. Цикл do while

Цикл do whileвідрізняється від whileтим, що з його виконанні циклу один прохід циклу буде виконано незалежно від умови. Програма для вирішення задачі на пошук суми чисел від 1 до 1000 із застосуванням циклу do while:

#include

using namespace std;

setlocale(0, "");

int i = 0; // Ініціалізуємо лічильник циклу.

int sum = 0; // ініціалізуємо лічильник суми.

do (// виконуємо цикл.

) while (i< 1000); // пока выполняется условие.

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

1. Розробити програму мовою З++ на вирішення завдання, відповідної обраному варианту.

2. Ввести, налагодити та відкомпілювати програму. Перевірити правильність роботи.

1. Блок-схема алгоритму програми.

2. Лістинг програми з коментарями.

3. Результати контрольних прогонів.

Контрольні питання

1. Дайте визначення циклу, тіла циклу, ітерації.

2. Що така умова виходу із циклу, лічильник ітерацій?

3. Які етапи включає виконання будь-якого циклу?

4. Як працює цикл із постумовою?

5. Як працює цикл із передумовою?

6. Як працює цикл із лічильником?

7. Як реалізується цикл за допомогою оператора for?

8. Як реалізується цикл за допомогою оператора while?

9. Як реалізується цикл за допомогою оператора dowhile?

1. Вивести на екран наступну послідовність символів

2. Вводиться послідовність цілих чисел (0 – кінець послідовності), знайти різницю між найменшим серед позитивних та найбільшим серед негативних чисел.

3. Вводиться послідовність з N цілих чисел, знайти різницю між добутком непарних чисел та найбільшим серед негативних чисел.

4. Вводиться послідовність цілих чисел, 0 – кінець послідовності. Визначити, чи послідовність містить хоча б два числа, кратних 3, 5 і 7.

5. Вводиться послідовність N цілих чисел. Визначити найбільше серед кратних 11.

6. Запроваджується послідовність цілих чисел, 0 – кінець послідовності. Визначити, чи містить послідовність хоча б три негативні парні числа.

7. Вводиться послідовність N речовинних чисел. Визначити найменшу кількість, серед чисел більших 20.

8. Вводиться послідовність цілих чисел, 0 – кінець послідовності. Обчислити кількість позитивних чисел, кратних 7 і кратних 5, і суму негативних елементів послідовності.

9. Вводиться послідовність N речовинних чисел. Визначити середнє арифметичне серед елементів послідовності, кратних 7.

10. Вводиться послідовність чисел, 0 – кінець послідовності. Визначити чи є послідовність суворо спадаючою.

12. Вводиться послідовність цілих чисел, 0 – кінець послідовності. Визначити, чи містить послідовність хоча б два позитивних числа, що стоять поруч.

13. Вводиться послідовність N речовинних чисел. Визначити, чи є послідовність знакочередної.

14. Вводиться послідовність N речовинних чисел. Визначити різницю між мінімальним позитивним та максимальним негативним елементами послідовності.

15. Знайти останні три числа кратні чотири в діапазоні від 1 до N. Обчислити суму цих чисел.

16. Вивести на екран наступну послідовність символів

18. Обчислити добуток останніх трьох чисел кратних 5 в діапазоні від N1 до N2.

19. Обчислити середнє арифметичне парних чисел, неразових чотирьом у діапазоні від 1 до K.

Мета роботи:

Вивчити циклічні оператори for, while, do – while, навчитися складати та програмувати циклічні алгоритми.

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

Оператори циклів застосовують, коли треба повторити деякі дії (оператори та операції) кілька разів, і такі ділянки алгоритмів називають циклами.

Оператор циклу for

Основна форма оператора циклу має вигляд

for (вираз_1; вираз_2; вираз_3)

оператор;

де вираз_1- Початкове значення параметра циклу;

вираз_2- Перевірка умови на продовження циклу;

вираз_3- Зміна параметра циклу (корекція);

оператор- Простий або складовий оператор мови С.

Схема роботи оператора наступна: лише один раз спочатку обчислюється вираз_1, потім перевіряється вираз_2, і якщо воно - «істина», то виконується циклічна ділянка програми, потім проводиться корекція параметра, і так доти, поки вираз_2 не набуде значення «брехня».

Наприклад: for (k=1; k<5; k++)

printf(“\n%d”, k);

Внаслідок виконання цього оператора друкуються в стовпчик цифри від 1 до 4.

Як параметр циклу можна використовувати змінну будь-якого базового типу.

Наприклад:

for(ch='a'; ch<=’z’; ch++) // Вывод на экран букв

printf(“%c”,ch); // Латинська абетка

Необхідно ретельно контролювати структуру циклів for у програмі, щоб не вийшов нескінченний цикл (з якого немає виходу).

Наприклад:

for(k=10; k>6;k++)

printf(“нескінченний цикл \n”);

Вийти із циклудостроково можна наступними способами:

За додатковою умовою;

Використовуючи такі оператори:

break;- вихід із циклу, в якому знаходиться break, управління передається на перший після циклу виконуваний оператор;

exit(int Kod);- вихід із програми;

return;- вихід із функції;

За допомогою оператора безумовного переходу goto<метка>;

Дострокове завершення поточного циклічного крокуможливо за допомогою додаткової умови або оператора continue, який перериває виконання поточного етапу циклу, тобто. пропускає оператори частини циклу, що залишилася, і передає управління в головний оператор циклу для корекції параметра та перевірки умови.

Передавати керування ззовні всередину циклу забороняється.

Будь-який вираз циклу for у круглих дужках може бути відсутній, але символ «;» опускати не можна.

Наприклад:

for(; i<3; i++)

puts(“Hello!”);

Циклічні оператори while та do–while

Основна форма циклічного оператора while:

While (умова)

оператор;

де оператор

Цикл виконується до того часу, поки умова набуває значення «істина», тобто. вираз у дужках повертає ненульовий результат. Це цикл із передумовою – спочатку перевіряється умова, потім виконується оператор. Тому цикл while не виконається жодного разу, якщо спочатку результат обчислення умови дорівнюватиме 0.

Основна форма оператора do – while:

оператор;

while (умова);

де оператор– це простий, складовий чи порожній оператор.

Оператор dowhile- Оператор циклу з постумовою, тобто. спочатку виконується оператор, та був перевіряється умова на істинність. Оскільки в циклі do–while умова перевіряється наприкінці циклу, цикл буде виконано хоча б один раз.

У циклах типу while і do–while допустимі самі методи дострокового виходу з циклу і дострокове завершення поточного кроку циклу, як й у операторі for, але у разі на відміну циклу for управління передається на перевірку умови. Для запобігання безкінечному циклу всередині циклів while і do–while потрібно передбачити зміну змінних, що входять до умови.

Наприклад:

for (i=1;i<=300;i++) // Печать целых чисел, кратных 5

if (i%5!=0) continue;

printf("%5d",i);

Приклади нескінченних циклів:

оператор;

2) while (число_не_0) // Завжди істинно!

оператор;

оператор;

while(число_не_0); // Завжди істинно!

Серед операторів циклу обов'язково має бути умова виходу.

Вкладені цикли

У разі вкладених циклів один цикл знаходиться всередині іншого, наприклад:

for(i=nn;i

for(j=mn;j

оператор;

де оператор– це простий, складовий чи порожній оператор. Внутрішній цикл виконуватиметься для кожного значення параметра i, який відповідає умові зовнішнього циклу.

Приклад:

for(i=1;i<10;i++) // Печать таблицы умножения

for(j=1;j<4;j++)

printf(“\n %d*%d=%2d”, i, j, i*j);

printf(“\n”);

Приклад використання оператора for

Обчислити. На друк програма повинна виводити проміжні та остаточні результати.

Текст програми може мати вигляд

#include

#include

puts(“Введіть N”);

scanf(“%d”,&N);

for (s=0, k=1; k<=N; k++) // В заголовке цикла можно выпол-

( // няти і подвійне привласнення

printf("\nk=%ds=%f", k,s);

printf("\n ВІДПОВІДЬ: s=%f, Press any key...",s);

Варіанти індивідуальних завдань

Скласти програму для визначення таблиці значень функції уу довільному діапазоні [ a,b] зміни аргументу хз довільним кроком h. Значення a, b, hвводяться із клавіатури. Таблиця повинна містити такі стовпці: порядковий номер, значення аргументу x, значення функції, повідомлення про зростання або зменшення функції, різниця двох сусідніх значень функції.

Визначити максимальне та мінімальне значення функції.

1. a=-p; b = p; h = 0,4.

2. a=0,7; b = 1,8; h = 0,1.

3. a=-0,5; b = 2,5; h = 0,2.

4. a=-0,9; b = 2,7; h = 0,3.

5. a=-2; b = 0,8; h = 0,2.

6. a=-1,9; b = 2,7; h = 0,3.

7. a = -0,4 p; b = 0,4 p; h = 0,5.

8. a=-0,3p; b = 1,3p; h=p/10.

9. a=-p/2; b = p/2; h=p/10.

10. a=-3; b = 3; h = 0,5.

"Програмування циклічних обчислювальних процесів"

Мета роботи:освоєння методів складання алгоритмів циклічних обчислювальних процесів та організації циклічних програм складної структури.

Теоретична частина

4.1.1. Циклічні алгоритми.

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

Циклічний алгоритм - це алгоритм, який містить один або кілька циклів.

Є 3 види циклів:

Цикл із передумовою;

Цикл із постумовою;

Цикл із лічильником (лічильний цикл).

Якщо виконання циклу пов'язане з будь-якою логічною умовою, то використовуються цикли з передумовою або постумовою.

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

Блок-схеми циклічних алгоритмів виглядають так:

1. Цикл із лічильником.

2. Цикл із передумовою. 3. Цикл із постумовою.

4.1.2 Оператори циклу у мові програмування C++.

C++ для кожного виду циклу є відповідний оператор:

Цикл типу while (з передумовою);

Цикл типу do ... while (з постумовою);

Цикл типу for (лічильний).

1.Оператор циклу типу while

Форма запису:

while (умова) оператор;

де: (Умова) - логічне вираження;

оператор – виконуваний у циклі оператор або тіло циклу.

Якщо тіло циклу є складовим оператором, то його потрібно укласти в операторні дужки (...):

while (умова)

група операторів

Схема роботи такого циклу: доки умова є істинною (true), виконується тіло циклу і знову перевіряється умова тощо. Коли умова стане помилковою (false) цикл завершує роботу.

2. Оператор циклу типу do…while

Форма запису:

оператор;

while (умова);

Схема роботи такого циклу: спочатку виконується оператор, потім перевіряється умова, якщо умова є істинною, виконується оператор і знову перевіряється умова тощо. Коли умова стане хибною, цикл завершує роботу.

Якщо тіло циклу є складовою оператор, то, як і для циклу з передумовою, його потрібно укласти в операторні дужки (...):



група операторів

while (умова);

3. Оператор циклу типу for

Форма запису:

оператор;

A – початковий вираз, який визначає початкові значення параметру циклу і при необхідності початкові значення іншим параметрам. Наприклад:

i=0, x=0.5, p=1, s=0

B - умовний вираз, який перевіряє умову продовження роботи циклу. Наприклад:

C – вираз збільшення, яке задає збільшення параметру циклу і при необхідності іншим параметрам, тоді вони записуються списком. Наприклад: x+=0.1, i++

4.1.3 Приклад складання алгоритму та програми мовою C++ для циклічного обчислювального процесу.

Обчислити значення виразу:

b- Вихідна величина, її значення вводяться з клавіатури і не змінюється;

a- Змінюється в діапазоні з кроком 1;

y– результат, його значення відображаються на екрані.

Виходячи з умови завдання змінна a є цілою, тому може бути використана як лічильник у рахунковому циклі.

Блок-схема алгоритму розв'язання цієї задачі з використанням лічильного циклу виглядає наступним чином:

#include

#include

#include

printf(“Введіть b:”);

scanf("%f",&b);

printf(“a y\n”);

for (a=0;a<=10;a++)

printf("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

Блок-схема алгоритму розв'язання цієї задачі з використанням циклу з передумовою виглядає так:

Текст програми мовою C++, що відповідає даному алгоритму, виглядає так:

#include

#include

#include

printf(“Введіть b:”);

scanf("%f",&b);

printf(“a y\n”);

printf("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

else printf(“y не існує\n”);

Блок-схема алгоритму розв'язання цієї задачі з використанням циклу з постумовою виглядає наступним чином:

Текст програми мовою C++, що відповідає даному алгоритму, виглядає так:

#include

#include

#include

printf(“Введіть b:”);

scanf("%f",&b);

printf(“a y\n”);

printf("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

else printf(“y не існує\n”);

while(a<=10);

Практична частина

4.2.1 Вимоги до виконання роботи:

Виконати завдання з лабораторної роботи № 3 для діапазону значень одного зі змінних. Змінна змінна, діапазон її зміни та крок вказані в таблиці 4. Скласти блок-схеми алгоритмів та програми для двох типів циклів, зазначених в індивідуальному завданні (таблиця 4).

Оформити виведення результатів таким чином, щоб чітко виділялися значення параметра, що змінюється і при кожному його конкретному значенні виводилися значення результату (трьох змінних зі стовпця 2 таблиці 3) у вигляді таблиці.

Порядок виконання.

1. Виконати аналіз завдання, сформулювати постановку завдання.

2. Скласти блок-схеми алгоритмів.

3. Скласти програму мовою C++. Передбачити введення вихідних даних із клавіатури та виведення результатів на екран.

4. Виконати перевірку працездатності програми на різних вихідних даних.

5. Здійснити аналіз отриманих результатів.

Варіанти індивідуальних завдань.

Варіанти індивідуальних завдань вибираються з таблиці 4 відповідно до номера студента у списку групи у журналі викладача.

Таблиця 4. Варіанти індивідуальних завдань

№ п/п Змінна змінна Типи циклів
10 ≤ a ≤ 10,Δ a=1
-4 ≤ d ≤ 4, Δ d = 0.5
-6 ≤ x ≤ 3, Δ x = 0.5
0 ≤ b ≤ 3 0, Δ b = 1.5 1. З передумовою, 2. Рахунковий
-15 ≤ j ≤ 1 0, Δ j = 0.5 1. З передумовою, 2. З передумовою
5 ≤ e ≤ 35,Δ e = 2 1. Рахунковий, 2. З постумовою
-5 ≤ m ≤ 15,Δ m = 1 1. З передумовою, 2. Рахунковий
1 ≤ c ≤ 70,Δ c = 3 1. З передумовою, 2. З передумовою
1.5 ≤ c ≤ 15,Δ c = 0.5 1. Рахунковий, 2. З постумовою
-8 ≤ b ≤ 28,Δ b = 2 1. З передумовою, 2. Рахунковий
-4.5 ≤ x ≤ 11.5,Δ x = 0.5 1. З передумовою, 2. З передумовою
-7 ≤ k ≤ 2,Δ k = 0.3 1. Рахунковий, 2. З постумовою
-1 ≤ m ≤ 21,Δ m = 1 1. З передумовою, 2. Рахунковий
-2 ≤ e ≤ 34,Δ e = 2 1. З передумовою, 2. З передумовою
-11 ≤ c ≤ 23,Δ c = 2 1. Рахунковий, 2. З постумовою
-13 ≤ p ≤ 50,Δ p = 3 1. З передумовою, 2. Рахунковий
3.3 ≤ b ≤ 9.3,Δ b = 0.3 1. З передумовою, 2. З передумовою
3.5 ≤ y ≤ 12.3,Δ y = 0.4 1. Рахунковий, 2. З постумовою
-7.5 ≤ a ≤ 5.7,Δ a = 0.6 1. З передумовою, 2. Рахунковий
-1.5 ≤ h ≤ 1.2,Δ h = 0.1 1. З передумовою, 2. З передумовою
0 ≤ h ≤ 10,Δ h=0.5 1. Рахунковий, 2. З постумовою
-15 ≤ b ≤ 15, Δ b =2 1. З передумовою, 2. Рахунковий
-7 ≤ l ≤ 3, Δ l = 0.5 1. З передумовою, 2. З передумовою
-5.5 ≤ b ≤ 6.5, Δ b = 0.5 1. Рахунковий, 2. З постумовою
1 ≤ k ≤ 9, Δ k = 0.4 1. З передумовою, 2. Рахунковий
0 ≤ b ≤ 6.9,Δ b = 0.3 1. З передумовою, 2. З передумовою
-3 ≤ v ≤ 9,Δ v = 0.6 1. Рахунковий, 2. З постумовою
-2 ≤ p ≤ 2.6,Δ p = 0.2 1. З передумовою, 2. Рахунковий

4.3 Контрольні питання та практичні завдання:

1. Як працює оператор while?

2. Як працює оператор do...while?

3. Як працює оператор for?

4. Підкреслити у програмі оператори, які утворюють цикл.

5. У чому полягає відмінність операторів while та do...while?

6. Замінити у програмі один оператор циклу іншим.

Сподобалась стаття? Поділіться з друзями!
Чи була ця стаття корисною?
Так
Ні
Дякую за ваш відгук!
Щось пішло не так і Ваш голос не було враховано.
Спасибі. Ваше повідомлення відправлено
Знайшли у тексті помилку?
Виділіть її, натисніть Ctrl+Enterі ми все виправимо!