- •Основи програмування мовою Паскаль
- •Часть 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. Рекомендована література
5. Структура простої програми на Паскалі
Програма на Паскалі не просто складається з операторів – порядок проходження цих операторів не випадковий і утворює певну структуру. Структуру найпростішої програми опишемо наступною схемою:
Назва розділу Оператори розділу
Заголовок програми – необов'язковий program ИмяПрограммы;
Розділ описів – необов'язковий, але, const список констант;
як правило, є присутнім var список змінних;
Тіло програми – обов'язковий, містить begin
властиво оператори оператори;
end.
Пари операторів beginіendназиваєтьсяоператорними дужками, вони служать для того, щоб об'єднати групу операторів, виконуваних разом, наприклад, у циклі або за умовою.beginіendслід розглядати як єдиний оператор, тому післяbeginкрапка з коми не ставиться, кількість ключових слівbeginіendу програмі завжди однаково. Таким чином, тіло програми укладене в операторні дужки, що поєднують усі її оператори.
Тільки останній оператор програми завершується крапкою: end., усі інші;
Зрозуміло, якщо в програмі немає констант, у ній буде відсутній розділ const, якщо немає й змінних – розділvar.
При написанні тексту програми слід дотримуватися нескладні правил, що полегшують його наступні читання й модифікацію:
усередині ключових слів або ідентифікаторів не повинне бути пробілів і інших роздільників, таких як табуляція або переклад рядка; у всіх інших випадках не заборонено розривати оператор, однак, робити це випливає лише тоді, коли написання оператора в один рядок утрудняє сприйняття тексту програми;
на кожному рядку звичайно пишеться один оператор (це полегшує й налагодження програми);
оператори одного рівня вкладеності пишуться з однаковим відступом ліворуч; наприклад, гарним тоном уважається після початку кожного блоку (begin) відступати на наступному рядку на символ або кілька символів вправо, а закривати блок так, щоб відповіднийend;перебував під своїмbegin. Приведемо приклад неправильного й правильного структурування:
program p1; var
a,b,c:real; begin
writeln ('Уведіть значення A і B:'); read (a,b);
c:=a+b; writeln ('A+B=',c); c:=a-b;
writeln ('A-B=',c); end.
Текст цієї програми структурований явно невдало, набагато краще він сприймається так:
program p1;
var a,b,c:real;
begin
writeln ('Уведіть значення A і B:');
read (a,b);
c:=a+b;
writeln ('A+B=',c);
c:=a-b;
writeln ('A-B=',c);
end.
основні дії програми коментуються:коментарему Паскалі вважається будь-який текст, обмежений фігурними дужками{ . . . }або символами(* . . . *)Кількість коментарів у програмі ніяк не впливає на обсяг машинного коду, що генерується, вони покликані, насамперед, полегшити наступне читання й модифікацію вихідного тексту програми.
Як приклад приведемо програму на Паскалі, що обчислює дійсне коріння довільного квадратного рівняння.
program Equation;
var a,b,c,d,x1,x2:real; begin
writeln;
writeln ('Уведіть коефіцієнти a,b,c:');
read (a,b,c);
d:=sqr(b)-4*a*c;
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln ('Коріння рівняння');
writeln (x1:10:2,x2:10:2);
readln; readln;
end.
У розділі описів програми всім змінним, необхідним для розв'язку завдання, привласнений тип real, і цей вибір цілком очевидний – коефіцієнтиa,bіз– не обов'язково цілі значення. "Зайвий" операторwriteln;перед запрошенням до введення – гарантія того, що запрошення буде надруковано з початку порожнього рядка – адже ми поки не вміємо очищати екран, і, можливо, при запуску нашої програми курсор перебуває не на початку рядка. Після обчислення дискримінанта й коріньx1,x2(умоваd≥0ми поки не перевіряємо), на екран друкується інформаційне повідомлення "Коріння рівняння", а потім з нового рядка виводяться значенняx1іx2з дотриманням зазначених ширини й точності виведення. Нарешті, два операториreadln;наприкінці програми дозволяють їй дочекатися, поки користувач не натисне клавішу Enter. "Подвоєння" оператора тут пов'язане з тим, що один раз ми вже натискали Enter після введення даних, і 1-йreadln;прочитає саме це натискання, а 2-й буде чекати ще одного. Будь введення даних у виглядіa:=1; b:=2; c:=0;абоreadln(a,b,c);, нам вистачило б і одногоreadln;. Однак, операторreadln(a,b,c); зажадав би від користувача ввести всі 3 числа в одному рядку, а завдання фіксованих значеньa, b, cзменшило б до нуля її корисність. Надалі ми довідаємося більш гнучкі способи програмування реакції програми на дії користувача.