5. АЛГОРИТМИ ТА ПРОГРАМИ ЦИКЛІЧНОЇ СТРУКТУРИ 5. 1. Цикл з лічильником. 5. 2. Використання циклу з лічильником для накопичування сум та добутків.
5. 1. Цикл з лічильником Цей тип циклічного алгоритму використовується, коли відомі початкове та кінцеве значення параметру циклу. For <параметр>: =<початкове значення> to <кінцеве значення> do <оператор>; <Значення параметру> ≤ <кінцеве значення> (1) Параметр – це змінна, що називається параметром циклу або керуючою змінною циклу, будь-якого скалярного типу: цілого, символьного, булевого.
For <параметр>: =<початкове значення> to <кінцеве значення> do <оператор>; 1. При виконанні цього оператора спочатку параметр набуває початкового значення та обчислюється оператор (тіло циклу). 2. Далі значення параметру збільшується на 1 та перевіряється умова (1): <Значення параметру> ≤ <кінцеве значення> 3. Якщо умова істина, виконується оператор (тіло циклу) та перехід на п. 2. Якщо умова (1) хибна, то тіло циклу – оператор не виконується. Відбувається вихід з циклу.
Цикл з лічильником For <параметр> : = <початкове значення> downto <кінцеве значення> do <оператор>; <Значення параметру> ≥ <кінцеве значення>. ! Зауваження. У тілі циклу for слід уникати операторів, що змінюють значення параметру циклу.
Приклад 5. 1. 1. Задача табулювання функції Скласти таблицю значень функції y(х), якщо відомо, що аргумент х змінюється від початкового значення хп до кінцевого значення хк з кроком 1. Вхідні дані: хп, хк. Вихідні дані: х, у.
Початок Введенн я Хп, Хк Виведення заголовка таблиці Х=Хп, Хк y=2 sinx/x 2 x, y Кінець
Program c 1; Var X, Xp, Xk: integer; y: real; BEGIN writeln(‘vvedite Xp, Xk'); readln(Xp, Xk); writeln('────────────'); writeln('x': 5, ‘y': 10); writeln('────────────'); for x: =Xp to Xk do Begin y: =2*sin(x)/sqr(x); writeln(x: 5, y: 10: 2); End; Readln End.
Приклад 5. 1. 2. Обчислити значення функції y(x) та вивести у таблицю на проміжку: 1 ≤ х ≤ 3, ∆х=0, 2. x+3, якщо x≤ 2 Y= x-3, якщо x>2 Оскільки крок, з яким змінюється х: ∆х=0, 2 – не цілий, то змінна х не може бути змінною циклу, оскільки вона не ціла. Тоді потрібно обчислити кількість виконань циклу (кількість ітерацій) і задати параметр циклу – лічильник циклу. • Позначимо як k – кількість виконання циклу – ціле значення і – змінна циклу – лічильник: і =1, …, k.
Початок 1 Введення Хп, Хк, ∆Х 2 3 4 і=1, k Х: =Хп k= (xk-xn)/∆х+1 3 ні 6 так 5 x≤ 2 7 y=x-3 8 4 y=x+3 x, y 9 x=x+Δx кінець
Program cycle 2; uses crt; Var Xр, Xk, d. X, x, y: real; k, i: integer; BEGIN clrscr; writeln(‘vved Xр, Xk, d. X'); readln(Xр, Xk, d. X); x: =Xр; k: = Trunc((Xk-Xр)/d. X+1); for i: =1 to k do Begin if x<=2 then y: =x+3 else y: =x-3; writeln('x= ', x: 3: 1, ' y=', y: 4: 1); x: =x+d. X; End; writeln(‘vved "ENTER"'); readln END.
5. 2. Накопичування сум та добутків Приклад 5. 2. 1. Обчислити суму: де n – довільне ціле додатне значення, х – довільне дійсне значення. Вхідні дані: n, x. Вихідні дані: S.
Початок 1 Введення x, n 2 S=0 3 і=1, n 4 y=sinxi/(i+1) 5 6 S S=S+y кінець
Program sum; uses crt var i, n: integer; y, S, x: real; BEGIN clrscr; writeln(‘vvedite x: '); readln(x); writeln(‘vvedite n: '); readln(n); S: =0; for i: =1 to n do Begin y: =sin(exp(i*ln(x))/(i+1)); S: =S+y End; writeln('S= ', S); writeln(‘natisnit ENTER'); readln END.
Обчислення добутку Приклад 5. 2. 2. Обчислити добуток k!=1∙ 2∙ 3∙ 4∙…∙k Вхідні дані: k. Вихідні дані: Р. Зауваження: початкове значення добутку: Р=1.
Початок 1 Введення k 2 P=1 3 i=2, k 4 P=P*i 5 P Кінець
Program fact; uses crt; var k, Р, i: integer; BEGIN writeln(‘vvedit k'); readln(k); P: =1; for i: =1 to k do P: =P*i; writeln('P= ', P); writeln(‘natisnit ENTER'); readln END.