МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ПРОГРАМИ З РОЗГАЛУЖЕНИМИ ТА ЦИКЛІЧНИМИ АЛГОРИТМАМИ ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 2 З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ” для студентів спеціальності 6.0914 “Комп’ютеризовані системи, автоматика і управління” та 6.1601 “Інформаційна безпека” Затверджено на засiданнi кафедри “Автоматика і телемеханiка”, протокол №___ від __.__.200__ р. Львів – 2006 Програми з розгалуженими та циклічними алгоритмами: інструкція до лабораторної роботи №2 з курсу “Алгоритмічні мови і програмування” для студентів спеціальності 6.0914 “Комп'ютеризовані системи, автоматика і управління” та 6.1601 “Інформаційна безпека” / Укл.: ____________, Б.Д.Будз, О.І.Гарасимчук - Львів: НУЛП, 2006.- 16 с. Укладачі: ______________________________, Б.Д. Будз, асистент, О.І. Гарасимчук, асистент. Відповідальний за випуск: __________________________________. Рецензент: __________________________________. Мета роботи - вивчити оператори мови Турбо-Паскаль та основні процедури введення-виведеиня даних, навчитися складати та відлагоджувати розрахункові пробами з розгалуженими та циклічними алгоритмами. 1. ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ У програмах, написаних мовою Турбо-Паскаль, оператори відокремлюються символом “;”. 1.1. Оператор присвоєння призначений для присвоєння змінній деякого значення. Синтаксис: <змінна>:=<значення>, де <змінна> - ім'я змінної (ідентифікатор); <значення> - значення константи, виразу чи функції, тип якого є сумісним з типом змінної. Складений оператор - це послідовність будь-яких операторів Туроо-Паскаля, обмежена операторними дужками begin та end. Складені оператори можуть бути вкладеними. Кількість зарезервованих слів begin у програмі повинна збігатися із кількістю зарезервованих слів end. Символ “;” перед end ставити не обов'язково. Умовний оператор дає змогу змінити хід виконання програми залежно від результату перевірки значення деякого виразу логічного типу. Синтаксис: if <вираз> then <оператор__1> [else <оператор_2>], Блок-схема:
де if, then, else зарезервовані слова Турбо-Паскаля; <вираз> - вираз логічного типу; <оператор_1> - оператор Турбо-Паскаля, який виконується, якщо значення виразу <вираз> true; символ “;” перед else неприпустимий; <оператор__2> - довільний оператор Турбо-Паскаля, який виконується, якщо значення виразу <вираз> false. Частина умовного оператора обмежена квадратними дужками є необов'язковою. 1.4. Оператор циклу з лічильником дає змогу організувати циклічний алгоритм із заданою кількістю повторень. Існує дві форми цього оператора: з інкрементуючнм лічильником і з декрементуючим лічильником. Перша форма (з інкрементуточим лічильником). Синтаксис: for <парам_ц> := <поч_знач> to <кінц_знач> do <оператор>, Блок-схема:
де for, to, do - зарезервовані слова Турбо-Паскаля; <парам_ц> - параметр циклу, змінна порядкового типу; <поч_знач> - початкове значення параметра циклу, вираз того ж типу, що і <парам_ц>; <кінц_знач> - остаточне значення параметра циклу, вираз того ж типу, що і <парам_ц>; <оператор> - оператор Турбо-Пастсаля, виконання якого повторюється, поки виконується умова <парам__ц> <= <кінц_знач>; кількість повторень становить (<кінц_знач> - <поч_знач> + 1); на кожному кроці значення <парам_ц> збільшується на 1. Друга форма (з декрементуючим лічильником). Синтаксис: for <парам_ц> := <поч_знач> downto <кінц_знач> do <оператор>, Блок-схема:
де downto - зарезервоване слово Турбо-Паскаля. Виконання <оператора> повторюється, поки справджується умова <парам_ц> >= <кінц_знач>; кількість повторень становить (<кіни_знач> -поч_знач> + 1); на кожному кроці значення <парам_ц> зменшується на 1. 1.5. Оператор циклу з передумовою. Синтаксис: while <вираз> do <оператор>, Блок-схема:
де while, do - зарезервовані слова Турбо-Паскаля; <вираз> - вираз логічного типу; <оператор> - оператор Турбо-Паскаля, виконання якого повторюється, поки значення виразу <вираз> - true; <оператор> може не виконатися жодного разу. 1.6. Оператор циклу з післяумовою. Синтаксис: repeat <тіло_циклу> until <вираз>, Блок-схема:
де repeat, until - зарезервовані слова Турбо-Паскаля; <вираз> - вираз логічного типу; <тіло_циклу> - довільна послідовність операторів Турбо-Паскаля, яка виконується хоча б один раз, після чого перевіряється значення виразу <вираз>: якщо false - виконання операторів <тіло_циклу> повторюється, якщо true - оператор циклу припиняє свою роботу. Символ “;” перед словом until ставити не обов'язково. 1.7. Оператор вибору дає змогу вибрати одне з декількох можливих продовжень виконання програми. Синтаксис: case <ключ_вибору> of <список_вибору> [еlse <оператор>] end, Блок-схема:
де case, of, else, end - зарезервовані слова Турбо-Паскаля; <ключ_вибору> - вираз порядкового типу; <список_вибору> - набір конструкцій типу: <константа_вибору>:<оператор>, де <константа_вибору> - константа того ж типу, що і <ключ вибору>; <оператор> - оператор Турбо-Паскаля. Після обчислення значення виразу <ключ_вибору> виконується той <оператор> із <списку_вибору>, який відповідає <константі_вибору>, значення якої збігається із значенням <ключа_вибору>. Якщо такої константи не знайдено, то виконується <оператор>, що стоїть після слова else. Якщо частина else<onepaтop> пропущена. то за відсутності необхідної <константи_вибору> оператор вибору припиняє роботу. 2. ЗАВДАННЯ 2.1. Домашня підготовка до роботи 1. Вивчити синтаксис, призначення., принцип роботи і використання операторів мови Турбо-Паскаль та основних процедур введення-виведення. 2. Скласти блок-схеми алгоритмів та програми мовою Турбо-Паскаль для табулювання функцій. Забезпечити ввід значень інтервалу, кроку і похибки табулювання з клавіатури і вивід результатів на дисплей. Дані для роботи беруться з таблиць 1 і 2 за вказівкою викладача: а) табулювання функції (див. табл.1), що вибирається залежно від значення аргументу, на проміжку [а, b] з кроком табуляці h. Таблиця 1 № п/п Функції Умови для вибору функцій Крок, h Інтервал, [a,b]
1
0.02 [0.5, 0.9]
2
0.2 [2, 4]
3
0.2 [4, 6]
4
0.2 [2, 4]
5
0.05 [0.1, 0.7]
6
0.02 [0.5, 0.8]
7
0.2 [3, 6]
8
0.2 [1.5, 3.5]
9
0.2 [4, 7]
10
0.1 [2, 3]
11
0.2 [3, 6]
12
0.2 [0.5, 2]
13
0.02 [0.2, 0.5]
14
0.02 [0.4, 0.8]
15
0.2 [7.5, 10]
16
0.2 [2, 5]
17
0.05 [0.3, 0.9]
18
0.05 [-0.9, -0.4]
19
0.05 [0.3, 0.9]
20
0.3 [0.3, 3.5]
21
0.3 [3, 6]
22
0.2 [2, 5]
23
0.5 [3, 8]
24
0.2 [2, 5]
25
0.2 [6, 9]
26
0.5 [0,6, 1,2]
27
0.2 [3, 6]
28
0.1 [1.5, 3]
29
0.5 [0, 5]
30
0.3 [3, 9]
31
0.1 [2, 4]
32
0.2 [1, 4]
33
0.05 [0.2, 0.9]
34
0.2 [4, 7]
35
0.3 [3, 9]
б) табулювання функції, представленої рядом (див. табл.2), на інтервалі [a, b] з кроком табуляції h та абсолютною похибкою d. Оцінку похибки здійснювати за значенням модуля чергового члена ряду. Таблиця 2 № п/п Функція Інтервал, [a, b] Крок, h Похибка, d
1
[0.5, 0.7] 0.02 0.001
2
[0.1, 0.6] 0.05 0.001
3
[3, 4] 0.1 0.001
4
[0.2, 0.3] 0.01 10-6
5
[1.1, 2] 0.1 0.001
6
[-1, 1] 0.5 0.001
7
[-1, 1] 0.2 0.001
8
[-1, -0.9] 0.01 0.001
9
[-1, 1] 0.1 0.001
10
[0.1, 1] 0.1 0.001
11
[0, 1] 0.1 0.0001
12
[1, 2] 0.1 0.001
13
[3, 4] 0.1 0.001
14 , m=20 [0.1, 0.5] 0.05 0.001
15 , m=3 [0.1, 0.5] 0.05 0.001
16
[1, 1.2] 0.02 10-6
17
[1, 1.5] 0.05 10-5
18
[1, 1.5] 0.05 10-5
19
[0, 0.5] 0.05 0.001
20
[-0.5, 0] 0.05 0.001
21
[0.5, 0.9] 0.05 0.001
22
[0.5, 0.9] 0.05 0.001
23
[0.1, 0.2] 0.01 0.001
24 , m=20 [0, 0.5] 0.05 0.001
25 , m=9 [0, 0.5] 0.05 0.001
26
[1, 5] 0.5 0.001
27
[0.1, 0.6] 0.05 0.001
28
[-1, 1] 0.2 0.001
29
[0.1, 0.5] 0.05 0.0001
30
[0.5, 1] 0.05 0.00001
31
[1, 2] 0.1 0.0001
32
[2, 6] 0.5 0.00001
33
[0.1, 0.5] 0.05 0.0001
34
[0.2, 0.7] 0.05 10-6
35
[0.1, 0.5] 0.05 0.001
2.2. Робота в лабораторії 1. Ввести в комп'ютер програми, написані мовою Турбо-Паскаль згідно з отриманим завданням. 2. Відлагодити програми. При необхідності скоригувати блок-схеми алгоритмів та програми у відповідності з виявленими логічними та синтаксичними помилками. 3. Остаточні версії блок-схем, програм та отримані результати занести у звіт з лабораторної роботи. 4. Здати звіт з лабораторної роботи. 3. ЗМІСТ ЗВІТУ 1. Номер і назва лабораторної роботи. 2. Повний текст завдання. 3. Остаточні версії блок-схем алгоритмів. 4. Список ідентифікаторів констант, змінних, процедур і функцій, використаних у блок-схемах алгоритмів і програм, та їх пояснення. 5. Остаточні версії програм. 6. Результати роботи програм. 4. КОНТРОЛЬНІ ЗАПИТАННЯ 1. Призначення оператора присвоєння? 2. Поясніть призначення, синтаксис та алгоритм роботи умовного оператора. 3. Поясніть призначення, синтаксис та алгоритм роботи оператора циклу з лічильником. Чим відрізняються перша та друга форми цього оператора? 4. Поясніть призначення, синтаксис та алгоритм роботи операторів циклу з перед- та післяумовою. Яка між ними різниця? 5. Поясніть призначення, синтаксис та алгоритм роботи оператора вибору. 6. Поясніть, як здійснюється введення-виведення даних в Турбо-Паскаль -програмах. СПИСОК ЛІТЕРАТУРИ 1. Фаронов Б.В. Программирование на персональних ЗВМ в среде Турбо-Паскаль.- 2-е изд. - М.: Изд-во МГТУ, 1992. 2. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка.- М.: Финансы и статистика, 1982. 3. Сердюченко В.Я. Розробка алгоритмів та програмування на мові Turbo Pascal: Навчальний посібник для техн. вузів - X.: ВКП «Паритет» ЛТД, 1995. 4. Вирт Н. Алгоритми + структуры данных = программы. - М.: Мир. 1985. 5. Гроного П. Программирование на языке Паскаль. - М.: Мир, 1982 Навчальне видання Програми з розгалуженими та циклічними алгоритмами: Інструкція до лабораторної роботи №2 з курсу “Алгоритмічні мови і програмування” для студентів спеціальності 6.0914 “Комп'ютеризовані системи, автоматика і управління” та 6.1601 “Інформаційна безпека” Укладачі: ______________________________, Б.Д. Будз, асистент, О.І. Гарасимчук, асистент.