![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Оператор присвоювання. Служить для обчислення виразів і присвоювання їхніх значень змінним. Загальний вид: А:= У, де знак ":=" означає команду замінити колишнє значення змінної, що стоїть в лівій частині, на обчислене значення виразу, що стоїть в правій частині.
Наприклад,
a:=(b+c)*sin(Pi/4); i:=i+1.
Для введення і виведення даних використовують команди
введення імена змінних
виведення імена змінних, вирази, тексти.
Для розгалуження застосовують команди якщо і вибір, для організації циклів — команди для і поки.
Приклад запису алгоритму
алг Сума квадратів (арг цілий n, рез цілий S)
дано | n > 0
треба | S = 1*1 + 2*2 + 3*3 +... + n*n
поч цілий i
введення n; S:=0
пц для i від 1 до n
S:=S+i*i
кц
виведення "S = ", S
кін
Базові алгоритмічні структури
Алгоритми можна записувати як деякі структури, що складаються з окремих базових (тобто основних) елементів. Природно, що при такому підході до алгоритмів вивчення основних принципів їхнього конструювання повинно починатися з вивчення цих базових елементів. Для їхнього опису будемо використовувати мову схем алгоритмів.
Логічна структура будь-якого алгоритму може бути представлена комбінацією трьох базових структур: проходження, розгалуження, цикл.
Характерною рисою базових структур є наявність у них одного входу й одного виходу.
1. Базова структура проходження. Утворюється з послідовності дій, які виконуються одна за одною:
Псевдокод | Мова блок-схем |
дія 1 дія 2......... дія n | ![]() |
2. Базова структура розгалуження. Забезпечує, в залежності від результату перевірки умови (так чи ні), вибір одного з альтернативних шляхів роботи алгоритму. Кожен із шляхів веде до загального виходу так, що робота алгоритму буде продовжуватися незалежно від того, який шлях буде обраний.
Структура розгалуження існує в чотирьох основних варіантах:
якщо-то;
якщо-то інакше;
вибір;
вибір - інакше.
Псевдокод | Мова блок-схем |
1. якщо-то | |
якщо умова то дія все | ![]() |
2. якщо-то інакше | |
якщо умова то дія 1 інакше дія 2 все | ![]() |
3. вибір | |
вибір при умова 1: дії 1 при умова 2: дії 2 .......... при умова N: дії N все | ![]() |
4. вибір інакше | |
вибір при умова 1: дії 1 при умова 2: дії 2 .......... при умова N: дії N інакше дії N+1 все | ![]() |
Приклади команди якщо
Псевдокод | Мова блок-схем |
якщо x > 0 то y:= sin(x) все | ![]() |
якщо a > b то a:= 2*a; b:= 1 інакше b:= 2*b все | ![]() |
вибір при n = 1 y:= sin(x) при n = 2 y:= cos(x) при n = 3 y:= 0 все | ![]() |
вибір при a > 5: i:= i+1 при a = 0: j:= j-1 інакше i:= 10; j:=0 все | ![]() |
3. Базова структура цикл. Забезпечує багаторазове виконання деякої сукупності дій, що називається тілом циклу. Основні різновиди циклів наведені в таблиці:
Псевдокод | Мова блок-схем |
Цикл типу поки. Наказує виконувати тіло циклу доти, поки виконується умова, яка записана після слова поки. | |
пц поки умова тіло циклу(послідовність дій) кц | ![]() |
Цикл типу для. Наказує виконувати тіло циклу для всіх значень деякої змінної (параметра циклу) у заданому діапазоні. | |
пц для i від i1 до i2 тіло циклу(послідовність дій) кц | ![]() |
Приклади команд поки і для
Псевдокод | Мова блок-схем |
пц поки i <= 5 S:= S+A[i] i:= i+1 кц | ![]() |
пц для i від 1 до 5 X[i]:= i*i*i Y[i]:= X[i]/2 кц | ![]() |
Ітераційні цикли
Особливістю ітераційного циклу є те, що число повторень операторів тіла циклу заздалегідь невідомо. Для його організації використовується цикл типу поки. Вихід з ітераційного циклу здійснюється у випадку виконання заданої умови.
На кожнім кроці обчислень відбувається послідовне наближення і перевірка умови досягнення шуканого результату.
Приклад. Скласти алгоритм обчислення суми ряду
з заданою точністю ε (для даного статечного ряду необхідна точність буде досягнута, коли черговий доданок стане по абсолютній величині менше ε).
Обчислення сум — типова циклічна задача. Особливістю ж нашої конкретної задачі є те, що число, яке обраховується (а, отже, і число повторень тіла циклу) заздалегідь невідомо. Тому виконання циклу повинно завершитися в момент досягнення необхідної точності.
При складанні алгоритму потрібно врахувати, що знаки доданків чергуються і ступінь числа х у чисельниках доданків зростає.
Вирішуючи цю задачу "в лоб" шляхом обчислення на кожному i -ому кроці часткової суми
S:=S+(-1)**(і-1)*x**i/i,
ми одержимо дуже неефективний алгоритм, що вимагає виконання великого числа операцій. Набагато краще організувати обчислення в такий спосіб: якщо позначити чисельник якого-небудь доданка літерою Р, то у наступного чисельника, що складається, буде дорівнювати - Р * Х (знак мінус забезпечує черегування знаків доданків), а сам доданок m буде дорівнювати p/І, де І - номер доданка.
Порівняєте ці два підходи за числом операцій.
Псевдокод | Блок-схема алгоритму |
алг Сума (арг дійсне x, Eps, рез дійсне S) дано | 0 < x < 1 треба | S = x - x**2/2 + x**3/3 -... поч ціле i, дійсне m, p введення x, Eps S:=0; i:=1 | початкові значення m:=1; p:=-1 пц поки abs(m) > Eps p:=-p*x | p - чисельник | чергового доданка m:=p/i | m - черговий доданок S:=S+m | S - часткова сума i:=i+1 | i - номер чергового доданка кц виведення S кін | ![]() |
Алгоритм, до складу якого входить ітераційний цикл, називається ітераційним алгоритмом. Ітераційні алгоритми використовуються при реалізації ітераційних чисельних методів.
В ітераційних алгоритмах необхідно забезпечити обов'язкове досягнення умови виходу з циклу (збіжність ітераційного процесу). У протилежному випадку відбудеться зациклення алгоритму, тобто не буде виконуватися основна властивість алгоритму —результативність.
Дата публикования: 2014-12-28; Прочитано: 310 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!