Розділ опису типу в цілому має такий вид:
TYPE <ім’я типу>=<опис типу>;
<ім’я типу – це ім’я, яке буде присвоєно новому типу; <опис типу – визначення нового типу.
До типів, що потребують попереднього визначення належать перерахований тип та тип-діапазон.
Перерахованийтип визначає множину ідентифікаторів, що задають усі можливі значення змінних цього типу. Уводиться, щоб спростити роботу з даними, зробити код програми більш зрозумілим, оскільки надає можливість мати справу не з абстрактними числами, а з осмисленими значеннями.
Опис перерахованого типу має вигляд: TYPE T = (a1, a2 .,an); де Т – ім'я типу; a1, a2 ., an – значення, які може приймати дане цього типу.
Тип-діапазон – це підмножина свого базового типу, в якості якого може виступати різний порядковий тип (крім типу-діапазону, звичайно). Типдіапазон задається межами своїх значень усередині базового типу.
Опис типу «діапазон» має вигляд:
TYPE T = an .. ak; де T – ім'я типу;
an, ak – початкове і кінцеве значення. Вони мають бути одного
порядкового типу.
Приклади:
TYPE T1=(PLUS,MINUS,MULTY,DIVIDE); TYPE T2=2..10;
TYPE T3=’b’..’z’;
Порядок опису решти типів буде наведений нижче.
Константи можуть бути цілого, дійсного, символьного типу та типу рядок. Тип константи однозначно визначається її значенням і явно не описується.
У зображенні цілихконстант присутній лише знак (необов'язковий) і цифри: 121; +457; -2287.
Дійсні константи записуються в двох формах: основній і напівлогарифмічній (з порядком). Замість коми ставиться десяткова крапка. Замість основи степеня 10 ставиться буква Е, що дозволяє чітко відділити мантису від показника степеня і записати всі символи числа в одному рядку. Незначущий нуль перед десятковою крапкою може бути відкинутий. Знак "+" може бути опущений.
Приклади запису дійсних чисел:
Число | Запис в Pascal |
2,87 | 2.87 |
-0,315 | -0.315 або -.315 |
210000,0 | 2.1E+5, 2.1E5, 21E4, 210000. |
-0,00045 | -0.00045, -.00045, -45E-5, -.45E-3 |
Символьна константа – це будь-який символ, що взятий в апострофи, а рядкова константа – послідовність будь-яких символів (не більше 255), взятих в апострофи:
’a’; ’відповідь:’; ’значення=’;
Можливе двояке використовування констант:
безпосереднє використовування значення константи (літерали); використовування ідентифікатора константи.Визначення констант ідентифікаторами здійснюється в розділі опису констант:
CONST < Ім'я константи > = <Значення>;
Приклад:
CONST PI=31.592;
TT=’S’;
A=7; В=’відповідь’;
Тут визначені константи: дійсного (РТ), символьного (ТТ), цілого (А) і рядкового (В) типів.
У Pascal за умовчанням визначені спеціальні константи:
PI=3.14159265.; MAXINT – найбільше ціле число, рівне 32767.
Змінні описуються в розділі опису змінних, який починається з ключового слова VAR, після якого перелічуються імена ідентифікаторів змінних і їх типи. Загальний вигляд:
VAR < Ім’я змінної . < ім'я змінної > : < тип >;
< Тип > – є ідентифікатором (ім'я) типу – стандартного або визначеного раніше користувачем (в розділі TYPE). Допускається замість ідентифікатора типу наводити безпосередній опис типу.
Приклад:
VAR TOP: INTEGER; X, У : REAL;
А: ARRAY[1..10] INTEGER;
B : ARRAY[1..5,1..7] REAL;
У підпрограмах можуть використовуватися змінні, описані в заголовку підпрограми – формальні параметри (див. п. 3.7.3).
У процесі вирішення задач часто виникає необхідність в обчисленні елементарних функцій. Для звернення до функції необхідно у виразі записати ідентифікатор функції і в круглих дужках – аргумент. Аргументами функції можуть бути константи, змінні, функції або вирази. Для тригонометричних функцій кут слід задавати у радіанах. Деякі стандартні функції для роботи з числовими даними перелічені в таблиці 4.
Тип результату функцій ABS(X) і SQR(X) визначається типом аргументу: цілий або дійсний. Результат функцій RANDOM(Х), TRUNC(X) і ROUND(X) має цілий тип. Решта функцій дає дійсний результат.
Для обчислення інших функцій слід використовувати відповідну математичну залежність, наприклад:
xaealn(x)arcsin(x)
arccos(x)
arcctg(x) tg(x)До даних порядкового типу можна також застосовувати такі функції:
Ord(x) – повертає порядковий номер значення х. Для цілих значень ця функція повертає саме значення х, тобто Ord(x) = x. Для даних логічного типу ця функція повертає 0 (false) або 1 (true), для символьних даних функція повертає значення від 0 до 255 – код символу.
Pred(x) – повертає попереднє значення, тобто значення, що відповідає порядковому номеру Ord(x)-1.
Succ(x)– повертає наступне значення, тобто значення, що відповідає порядковому номеру Ord(x)+1.
Для роботи з рядками (даними типу String) можна застосовувати
функції, наведені в таблиці 5.
Таблиця 5 - Функції для роботи з рядками
Функція | Призначення |
Concat(S1,S2, …, Sn) | Функція типу String. Повертає рядок, що являє собою зчеплення (конкатенацію) всіх рядків S1,S2...Sn: Якщо отриманий рядок містить більше 255 символів, вона усікається (обривається) після 255-го символу |
Copy(St,IndX,k) | Функція типу String. Створює підрядок: копіює з рядка Stk символів, починаючи із символу з |
номером IndX; якщо IndX більше довжини рядка St, повертається порожній рядок | |
Pos(Subst,St) | Функція типу Integer. Знаходить у рядку St перше входження підрядка Subst і повертає номер позиції, з якої вона починається: якщо підрядок не знайдений, повертається нульове значення |
Delete(St,IndX,k) | Процедура. Видаляє з рядка St підрядок в k символів, починаючи із символу IndX. |
Insert(Subst,St,IndX) | Процедура. Вставляє підрядок Subst у рядок St, починаючи із символу з номером IndХ. Якщо отриманий рядок містить більше 255 символів, усі символи після 255-го відкидаються |
Length(St) | Функція типу Integer. Повертає поточну довжину рядка St. |
Str(x,St) | Процедура. Перетворить число х у строкову змінну, результат заноситься у рядок St. |
Val(St,x,R) | Процедура. Перетворить символьну величину типу String з рядка в її чисельне подання й результат перешкодить у змінну х. Якщо рядок записаний з помилкою, то індекс (позиція) невірного символу заноситься до змінної R; у противному випадку R дорівнює нулю |
Вирази формуються відповідно до низки правил з констант, змінних, функцій (як стандартних, так і визначених в програмі), знаків операцій і круглих дужок. Дужки використовуються для зміни пріоритетів операцій.
Розрізняються вирази арифметичні, рядкові та логічні.
В арифметичному виразі можуть використовуватися операнди (змінні, константи і функції) тільки арифметичного типу: цілі або дійсні.
Знаки арифметичних операцій:
"+" (додавання)
"–" (віднімання)
"*" (множення)
"/" (ділення),
DIV (цілочислове ділення),
MOD (залишок від ділення).
Дії виконуються зліва направо з дотриманням наступного старшинства (пріоритету):
а) мультиплікативні операції (* /, DIV, MOD);
в) адитивні операції ( + , – ).
Тип результату виразу залежить від типів операндів, а також операцій:
якщо хоча б один операнд дійсний або використовується операція ділення (/), – вираз має дійсний тип (Real), інакше – цілий (Integer).
Результат операцій DIV і MOD завжди типу INTEGER (цілий).
Аргументи цих операцій теж мають бути цілого типу. Перша з цих операцій повертає цілу частину від ділення, а друга – залишок. Так 7 div 3=2, а 7 mod 3=1.
Приклади.
Математичний запис:
1 +ln 1,3x cos A T ) ;а)
2x cos Bx -3x sin Bx
б) .
Запис на Pascal:
а) SQRT( 1+LN ( 1.3 * X ) + COS ( А - T ));
б) EXP( X * LN ( 2 ))* COS(B * X ) - EXP( X *LN (3))* SIN (B * X ).
Рядковий вираз утворюється з операндів рядкового (STRING) і символьного (CHAR) типів, над якими допускається тільки одна операція – конкатенація (зчеплення). Ця операція позначається символом ”+”. Результат завжди має тип STRING (рядок).
Приклад:
А:=’TURBO’;
B:=’PASCAL’;
K1:=A+’-’+B;
У результаті змінна K1 отримає значення: ’TURBO-PASCAL’
Логічний вираз часто називають умовою. Для його побудови використовуються операнди логічного типу: змінні або функції логічного (BOOLEAN) типа або відношення.
Відношення призначені для порівняння двох величин (вони мають бути порівнянних типів). Результат порівняння має логічний тип. Допустимі 6 операцій відношення: