- •Основи програмування мовою Паскаль
- •Часть 1. Основы языка Паскаль 2
- •Часть 2. Элементы профессионального программирования на Паскалі 62
- •Частина 1. Основи мови Паскаль
- •1. Алгоритм і програма
- •1.1. Алгоритм
- •1.2. Властивості алгоритму
- •1.3. Форми запису алгоритму
- •1.4. Програма й програмне забезпечення
- •1.5. Етапи розробки програми
- •2. Дані в мові Паскаль
- •2.1 Константи
- •2.2 Змінні й типи змінних
- •3. Арифметичні вирази
- •4. Лінійний обчислювальний процес
- •4.1 Оператор присвоювання
- •4.2 Оператор уведення
- •4.3 Оператор виведення
- •4.4 Керування виводом даних
- •4.5 Вивід на друк
- •5. Структура простої програми на Паскалі
- •6. Компілятор і оболонка Turbo Pascal
- •7. Обчислювальний процес, що розгалужується, і умовний оператор
- •7.4. Короткий умовний оператор
- •If логічний_вираз then оператор1;
- •7.5. Повний умовний оператор
- •If логічний_вираз then оператор1
- •7.7. Вкладені умовні оператори
- •7.9. Приклади програм з умовним оператором
- •8. Директиви компілятора й обробка помилок уведення
- •9. Оператор циклу. Цикли із передумовою і після-умовою
- •10. Цикл із лічильником і дострокове завершення циклів
- •11. Типові алгоритми табулювання функцій, обчислення кількості, суми й добутку
- •11.1 Алгоритм табулювання
- •11.2 Алгоритм організації лічильника
- •11.3 Алгоритми нагромадження суми й добутку
- •12. Типові алгоритми пошуку максимуму й мінімуму
- •13. Розв'язок навчальних завдань на цикли
- •14. Одномірні масиви. Опис, уведення, вивід і обробка масивів на Паскалі
- •15. Розв'язок типових завдань на масиви
- •Частина 2. Елементи професійного програмування на Паскалі
- •16. Кратні цикли
- •16.1 Подвійний цикл і типові завдання на подвійний цикл
- •16.2 Оператор безумовного переходу
- •17. Матриці й типові алгоритми обробки матриць
- •18. Підпрограми
- •18.1 Процедури
- •18.2 Функції
- •18.3 Масиви як параметри підпрограми
- •18.4 Відкриті масиви
- •19. Безлічі й перечислимые типи
- •20. Обробка символьних і строкових даних
- •20.1. Робота із символами
- •20.2 Робота з рядками
- •21. Текстові файли
- •21.1 Загальні операції
- •21.2 Приклади роботи з файлами
- •21.3 Робота з параметрами командного рядка
- •22. Записи. Бінарні файли
- •23. Модулі. Створення модулів
- •23.1. Призначення й структура модулів
- •Implementation
- •23.2. Стандартні модулі Паскаля
- •24. Модуль crt і створення простих інтерфейсів
- •25. Модуль Graph і створення графіки на Паскалі
- •Додаток 1. Таблиці Ascii-Кодів символів для операційних систем dos і Windows
- •Додаток 2. Основні директиви компілятора Паскаля
- •Додаток 3. Основні повідомлення про помилки Паскаля
- •Додаток 4. Додаткові лістинги програм
- •Додаток 5. Розширені коди клавіатури
- •Ascii‑ коди
- •Розширені коди
- •Додаток 6. Правила гарного коду
- •Додаток 7. Рекомендована література
7. Обчислювальний процес, що розгалужується, і умовний оператор
Головне, чого бракує нашим першим програмам – гнучкості й уміння ухвалювати рішення. Адже вже нескладний алгоритм розв'язку квадратного рівняння передбачає два варіанти розрахунків, реальні ж алгоритми можуть видавати результати, що залежать від десятків і сотень умов.
обчислювальний процес, Що розгалужується (РВП) реалізується по одному з декількох напрямків обчислення (галузей алгоритму). Вибір однієї з галузей залежить від істинності або хибності деякої умови (логічного вирази), включеного до складуумовного оператора. Програма повиннавраховувати всіможливі галузі обчислень. Завжди виконуєтьсятільки однаіз усіх можливих галузей.
7.1. Логічні виразибудуються з арифметичних виразів, операцій відношення, логічних операцій і круглих дужок.
Результатом обчислення логічного вирази є одне із двох значень: TRUE або FALSE.
7.2. Операції відношеннямають наступний загальний вид:
арифм.вираз.1 ОО арифм.вираз.2
де ОО – один з наступних знаків операцій:
< <= > >= = <>
Останній знак позначає відношення "не рівно". Звернете також увагу на запис відношення "менше або рівно", "більше або рівно".
У будь-яке логічне вирази повинна входити хоча б 1 операція відношення!
Пр.
d<0вибір галузей обчислень залежить від значення d
sqr(x)+sqr(y)<=sqr(R)результат = TRUE для крапок з коорд. (x,y), що лежать усередині кола радіуса R із центром на початку координат
cos(x)>1результат завжди = FALSE
До дійсних значень операція = ("рівно") у загальному випадку незастосовна через неточну виставу цих значень у пам'яті комп'ютера. Тому для дійсних змінних відношення видуa=bзаміняється наabs(a–b)<E, деЕ– мала величина, що визначає припустиму погрішність.
7.3. Логічні операціїзастосовні тільки в логічних виразих і служать для складання складних умов, що вимагають більш однієї операції відношення. У Паскалі визначено 3 логічних операції:
Математичний запис |
Запис на Паскалі |
Назва |
not |
Заперечення | |
and |
Операція "И" (логічне множення) | |
or |
Операція "АБО" (логічне додавання) | |
xor |
Операція ", що виключає АБО" |
Операція NOT застосовна до одномулогічному вираженню (єунарной). Результат рівний TRUE, якщо вирази неправильне й навпаки.
Пр.NOT (sin(x)>1)результат завжди TRUE
Операція AND зв'язує не менш двілогічні вирази (єбінарною). Результат рівнийTRUE, якщовсівирази дійсні йFALSE, якщо хоча б одне з виразів неправильно.
Пр.Розпишемо виразиТому що операції приналежності в Паскалі ні, використовуємо операціюANDі операції відношення:(x>=a) and (x<=b)
Розпишемо вирази a,b,c>0 (одночасно): (a>0) and (b>0) and (c>0)
Операція ORтакож зв'язує не менш 2 логічних виразів. Результат рівнийTRUE, якщохочаб одневирази дійсне йFALSE, якщо всі вирази неправильні.
Пр.Розпишемо вирази:(x<a) or (x>b)
інший спосіб – not ((x>=a) and (x<=b))
Пр.Розпишемо умову "хоча б одне зі значень a,b,c позитивно":
(a>0) or (b>0) or (c>0)
Пр.Умова "тільки одне зі значень a,b,c позитивно":
(a>0) and (b<=0) and (c<=0) or (a<=0) and (b>0) and (c<=0) or (a<=0) and (b<=0) and (c>0)
Операція XOR, на відміну відOR, дає неправда (false) і в тому випадку, коли всі зв'язані їй логічні вирази дійсні. Щоб краще усвідомити цю відмінність, складемо так званутаблицю істинностіцих двох логічних операцій. Для стислості значенняfalseпозначимо нулем, аtrue– одиницею. Для двох логічних аргументів можливо всього 4 комбінації значень 0 і 1:
Аргумент A |
Аргумент B |
A or B |
A xor B |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
Пр.Умова "тільки одне зі значень a,b позитивно":
(a>0) xor (b>0)
На жаль, записати умова "тільки одне зі значень a,b,c позитивно" у виді, що напрошується (a>0) xor (b>0) xor (c>0)не можна – результат цього вирази буде рівнийtrueі у випадку, коли всі три значення позитивні! Зв'язане це з тим, що при послідовному розрахунках логічних виразів ліворуч праворуч(1 xor 1) xor 1буде рівно0 xor 1 = 1.
За допомогою xorзручно організовувати різного роду перемикачі, які послідовно повинні ухвалювати одне із двох станів:
x := x xor true;
writeln ('x=',x);
x := x xor true;
writeln ('x=',x);
Незалежно від початкового значення логічної змінної x, друге виведене на екран значення буде логічним запереченням першого. У реальній практиці конструкції подібніx := x xor true;не дублюються в коді багаторазово, а застосовуються усередині циклу (див. главу 9).
Пріоритет операцій:1. not. 2. and. 3. or і xor. 4. Відношення.
Оскільки відношення мають найнижчий пріоритет, те їх необхідно брати в круглі дужки.