1. Опис мови. Мову Паскаль створив на початку 70-х років професор Н.Вірт зі Швейцарії. Вона названа на честь французького математика і філософа Блеза Паскаля (1623-1662) — винахідника першої у світі механічної обчислювальної машини. Мова вважається найбільш досконалою порівняно з іншими мовами програмування. Її використовують для розв’язування різноманітних задач.
Програми складаються з синтаксичних конструкцій, які називать командами (операторами, вказівками, реченнями). Команди будуються з лексем — неподільних елементів мови: слів, чисел, символів операцій тощо. Слова поділяються на службові, стандартні імена та імена (ідентифікатори), які користувач дає різним об'єктам. Розглянемо основні службові слова мови. Їх можна записувати як великими, так і малими літерами:
and — і array — масив begin — початок case — вибір const — сталі div — ділення без остачі do — виконати downto — униз до else — інакше end — кінець file — файл for — для function — функція goto — перейти до if — якщо in — в label — позначка | mod — остача nil — нуль not — ні of — з or — або packed — стиснутий procedure — процедура program — програма record — запис repeat — повторювати set — множина then — то to — до type — тип until — доки var — змінні while — доки та інші. |
Стандартні імена. Великий набір слів є проміжним між службовими словами та іменами користувача. Це стандартні імена. Їх є декілька груп:
|
|
1) назви стандартних типів даних: boolean (логічний), char (символьний), integer (цілий), real (дійсний), text (текстовий файл) тощо;
2) назви стандартних сталих: false (хибність), true (істинність), maxint (максимальне ціле), pi(число p) тощо;
3) назви стандартних функцій: abs, arctan, cos, exp, ln, sin тощо;
4) назви стандартних процедур: read, readln, write, writeln тощо.
Стандартні імена користувач може використати для позначення інших об’єктів, однак тоді вони втрачають основне призначення.
Імена, які користувач надає величинам (сталим, змінним), програмі, підпрограмам тощо, мають складатися з латинських літер, цифр, символу “_”. В імені цифра не може бути першим символом. Наприклад, програму можна назвати так: myprogram_1.
Зауваження. У цій книжці службові слова будемо записувати малими літерами і виокремлюватимемо товстим шрифтом.
2. Структура програми. Програма складається із заголовка
program <ім’я програми>; |
розділів описової частини
uses —приєднання бібліотек та модулів; label —оголошення міток (позначок); const — оголошення сталих; type — опис типів; var — оголошення змінних; procedure — оголошення процедур користувача; function —оголошення функцій користувача |
та виконуваної частини
begin <розділ команд> end. |
Заголовок та усі розділи, окрім останнього, є необов’язковими. Розділювачем між конструкціями (командами) програми є символ “; ”. У кінці програми завжди має стояти крапка.
|
|
Заголовок програмі надає програміст. В іменах, які користувач дає своїм програмам та змінним, великі і малі букви рівноправні: імена A та a (або MyName та myname) позначають один і той самий об’єкт.
У програму можуть входити коментарі. Коментар — фрагмент тексту програми, взятий в фігурні дужки або записаний так: (* коментар *). Коментар слугує для пояснення роботи програми і не впливає на виконання команд. Він може бути розташований у довільному місці програми.
Зауваження. Особливим видом коментаря є директива. Директиви призначені для задавання режимів функціонування компілятора. Як і коментар, директиву записують у фігурних дужках, де після відкриваючої дужки зазначають символ $, наприклад, директива {$F+} підтримує так звану far-модель пам’яті для роботи з процедурами та функціями, {$N+} забезпечує застосування математичного співпроцесора тощо (див. § 14).
3. Розділи оголошення сталих і змінних. Усі величини, які входять у програму, повинні бути описані у розділі сталих (констант), якщо вони не мінятимуть значення протягом виконання програми:
const <стала 1>= <значення 1>; … <стала n>= <значення n>; |
або у розділі оголошення змінних, якщо вони обчислюватимуться:
var <список змінних 1>: <тип змінних 1>; … <список змінних n >: <тип змінних n>; |
Елементи списків записують через кому. Кутові дужки <...> —це засіб формалізованого описування конструкцій мови. У конкретних програмах їх не використовують.
4. Перша програма. Програма — це послідовність команд, за допомогою яких записують алгоритм розв’язування задачі. Програми (алгоритми) складають за таким принципом: вводять дані, визначають потрібне, виводять результати. Аналогічно розв’язують задачі з математики та фізики, але тут обчислення вручну виконувати не потрібно — їх виконає комп’ютер.
Розглянемо програму з назвою Trykutnyk для розв’язування задачі обчислення периметра p та площі s трикутника зі сторонами a =5, b =3.6, с =4.2 за формулою Герона. Усі команди, нaведені в програмі, будуть детально розглянуті нижче.
program Trykutnyk;
Uses
Crt; { Приєднуємо модуль Crt}
Const
a=5; b=3.6; с=4.2; { Вводимо довжини сторін }
Var
p, s: real; { Оголошуємо змінні для }
begin { периметра та площі }
clrscr; { Очищуємо екран }
p:=a+b+c; {Обчислюємо периметр}
writeln('p=', p:5:2); {Виводимо значення периметра}
p:=p/2; {Обчислюємо півпериметр}
s:=sqrt(p*(p-a)*(p-b)*(p-c)); {Визначаємо площу}
writeln('s=', s:5:2); {Виводимо значення площі}
writeln('Виконав Савула Ю.');
readln
End.
Символ * позначає операцію множення, / — ділення, а sqrt(х) — це функція обчислення квадратного кореня з х. Два символи:= позначають операцію присвоєння. Команда writeln призначена для виведення результатів. Після виконання програми на екрані отримаємо:
p= 12.80
s= 7.43
Виконав Савула Ю.
Типи даних
1. Стандартні типи даних. Одним з найважливіших понять у програмуванні є змінна. Змінна — це поіменована ділянка оперативної пам'яті комп'ютера, де зберігається значення деякої величини. Змінна має такі властивості: назву (ім’я), значення, тип. Кількість змінних та їхні властивості задає користувач. Тип змінної визначає її допустимі значення, а також операції, які можна над нею виконувати. У програмі Trykutnyk з § 1 змінні p та s оголошені як змінні числового дійсного типу.
Розглянемо стандартні типи даних: числові цілі (табл.1), числові дійсні (табл.2), символьний та логічний. Інші типи вивчатимемо дальше.
Табл.1. Цілочислові типи
Назва типу | Діапазон значень |
byte | 0..255 |
shortint | –128..127 |
word | 0..65535 |
integer (основний тип) | –32768..32767 |
longint | –2147483648..2147483647 |
Розглянемо такі дві змінні: var x: byte; y: integer. Цим змінним можна надати, наприклад, таких значень: x:=65; y:=–5. Зауважимо, що змінна x не може набувати від'ємних значень, оскільки вони не входять до діапазону допустимих значень типу byte.
|
|
Табл.2. Дійсні типи
Назва типу | Діапазон |
single | 1.5·10–45–3.4·1038 |
real (основний тип) | 2.9·10–39–1.7·1038 |
double | 5.0·10–324–1.7·10308 |
extended | 3.4·10–4951–1.1·104932 |
Дійсні числа можна записувати у форматі з фіксованою крапкою, наприклад, 5.04, –12.109, або у форматі з плаваючою крапкою, наприклад, –5.2Е+2 (це є –520.0), 16.1Е–3 (це є 0.0161). Символи n Е+2 означають множення числа n на 10 у степені +2, тобто
n E m = n •10 m . |
Символьний тип (char) — це множина символів кодової таблиці комп'ютера ASCII. Символьна стала — це символ, взятий у лапки, наприклад, ’а’, ’5’, ’%’.
Логічний тип (boolean) характеризується двома значеннями: false (хибність) та true (істинність).
Усі стандартні типи (окрім дійсного) є впорядкованими, тобто для кожного даного визначені наступне та попереднє значення.
2. Нестандартні прості типи. Усі наведені вище типи даних є стандартними. Їх не треба описувати у розділі типів. Користувач може визначити свої власні типи даних у розділі type так:
type <ім’я типу 1>= <опис типу 1>; … <ім’я типу n>= <опис типу n>; |
До простих нестандартних типів належать перерахований, діапазонний та рядковий типи.
Перерахований тип утворюють з ідентифікаторів (імен користувача) шляхом їх об’єднання у список, який записують у круглих дужках:
Type <ім’я типу> = (<значення 1>, <значення 2>,…, <значення n>); |
Приклад. Опишемо два перераховані типи (дні тижня та кольори):
Type
week = (mon, tue, wed, the, fri, sat, sun);
colors = (red, green, yellow, white);
та оголосимо дві змінні — day та mycolor цих типів:
Var
day: week; mycolor: colors;
Цим змінним можна надати, наприклад, такі значення:
day:= fri, mycolor:= green, mycolor:= yellow.
Номер першого елемента списку завжди є 0. Дані перерахованого типу не можна вводити з клавіатури чи виводити. Даними перерахованого типу не можуть бути числові чи символьні значення.
Діапазонний тип — це звуження деякого базового упорядкованого типу. Його описують наступним чином:
|
|
type <ім’я типу> = <значення 1>..<значення 2>; |
Приклад. Розглянемо три типи, які описують усі дні тижня, робочі дні та номери місяців, і оголосимо змінні day1, day2, day3 та month цих типів:
Type
week = (mon, tue, wed, the, fri, sat, sun);
workdays = mon .. fri;
months = 1..12;
Var
day1, day2: week; day3: workdays; month: months;
Рядковий тип даних (string). Значенням змінної рядкового типу може бути довільна послідовність, яка складається не більше, ніж з 255 символів. Змінні рядкового типу можна описати у розділі опису констант, типів, або оголосити у розділі змінних. Наприклад,
Const
s = 'Bye!';
Type
t = string[10];
Var
top: t; w: string.
У квадратних дужках зазначають довжину рядка. Сталі типу рядок використані в програмі Trykutnyk у команді виведення writeln.
3. Типізовані сталі. Окрім звичайних, є ще типізовані сталі. Вони дають змогу оголошувати змінну й відразу надавати їй значення:
Const <ім’я сталої 1>:<тип 1> = <значення 1>; … <ім’я сталої n>:<тип n> = <значення n>; |
На відміну від звичайних, значення типізованих сталих у програмі можна змінювати. Приклади типізованих сталих:
Const
mysymbol: char = 'а';
n: integer = 5;
p: real = 1.73.