Склад мови
Звичайна розмовна мова складається з чотирьох основних елементів: символів, слів, словосполучень і речень. Алгоритмічна мова містить подібні елементи, тільки слова називають елементарними конструкціями, словосполучення - виразами, речення - операторами. Символи, елементарні конструкції, вирази й оператори складають ієрархічну структуру, оскільки елементарні конструкції утворюються з послідовності символів, вираз – це послідовність елементарних конструкцій і символів, а оператор – послідовність виразів, елементарних конструкцій і символів.
Опис мови є опис чотирьох названих елементів. Опис символів полягає в перерахуванні допустимих символів мови. Під описом елементарних конструкцій розуміють правила їхнього утворення. Опис виразів - це правила утворення будь-яких виразів, що мають зміст у даній мові. Опис операторів складається з розгляду всіх типів операторів, допустимих у мові. Опис кожного елемента мови задається його синтаксисом і семантикою. Синтаксичні визначення встановлюють правила побудови елементів мови. Семантика визначає зміст і правила використання тих елементів мови, для яких були дані синтаксичні визначення.
Символи мови - це основні неподільні знаки, у термінах яких пишуться всі тексти мовою.
Елементарні конструкції - це мінімальні одиниці мови, що мають самостійний зміст. Вони утворюються з основних символів мови.
Вираз в алгоритмічній мові складається з елементарних конструкцій і символів, він задає правило обчислення деякого значення.
Оператор задає повний опис деякої дії, яку необхідно виконати. Для опису складної дії може знадобитися група операторів. У цьому випадку оператори поєднуються в складенийоператор чи блок.
Дії, задані операторами, виконуються над даними. Речення алгоритмічної мови, у яких даються зведення про типи даних, називаються описами або операторами, що не виконуються.
Об'єднана єдиним алгоритмом сукупність описів і операторів утворює програму на алгоритмічній мові.
У процесі вивчення алгоритмічної мови необхідно відрізняти алгоритмічну мову від тієї мови, за допомогою якої здійснюється опис досліджуваної алгоритмічної мови. Звичайно досліджувану мову називають просто мовою, а мова, у термінах якої дається опис досліджуваної мови - МЕТАМОВОЮ.
Синтаксичні визначення можуть бути задані формальними чи неформальними способами. Існують три формальних способи:
· металінгвістична символіка, яку називають формулами Бекуса-Наура;
· синтаксичні діаграми;
· дужкові конструкції.
2.2 Основні поняття алгоритмічної мови Pascal
2.2.1 Основні символи
Основні символи мови - букви, цифри і спеціальні символи складають її алфавіт. ТУРБО ПАСКАЛЬ включає наступний набір основних символів:
1) 26 латинських рядкових і 26 латинських прописних букв:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
2) _ підкреслення
3) 10 цифр:
0 1 2 3 4 5 6 7 8 9
4) знаки операцій:
+ - * / = <> < > <= >=:= @
5) обмежники:
., ' () [ ] (..) { } (* *)..:;
6) специфікатори:
^ # $
7) службові (зарезервовані) слова:
ABSOLUTE EXPORTS LIBRARY SET
ASSEMBLER EXTERNAL MOD SHL
AND FAR NAME SHR
ARRAY FILE NIL STRING
ASM FOR NEAR THEN
ASSEMBLER FORWARD NOT TO
BEGIN FUNCTION OBJECT TYPE
CASE GOTO OF UNIT
CONST IF OR UNTIL
CONSTRUCTOR IMPLEMENTATION PACKED USES
DESTRUCTOR IN PRIVATE VAR
DIV INDEX PROCEDURE VIRTUAL
DO INHERITED PROGRAM WHILE
DOWNTO INLINE PUBLIC WITH
ELSE INTERFACE RECORD XOR
END INTERRUPT REPEAT
EXPORT LABEL RESIDENT
Крім перерахованих, у набір основних символів входить пробіл. Пробіли не можна використовувати усередині здвоєних символів і зарезервованих слів.
2.2.2 Елементарні конструкції
Елементарні конструкції мови ПАСКАЛЬ містять у собі імена, числа і рядки.
Імена (ідентифікатори) це елементи мови - константи, мітки, типи, змінні, процедури, функції, модулі, об'єкти. Ім'я - це послідовність букв і цифр, що починається з букви. В іменах може використовуватися символ "_" підкреслення. Ім'я може містити довільну кількість символів, але значущими є 63 символи.
У мові ПАСКАЛЬ не дозволяється використовувати як імена службових слів, так і стандартні імена, якими названі стандартні константи, типи, процедури, функції і файли.
Для поліпшення наочності програми в неї можуть вставлятися пробіли. Принаймні один пробіл потрібно вставити між двома послідовними іменами чи числами, службовими і стандартними іменами. Пробіли не можна використовувати усередині імен і чисел.
Приклади імен мови ПАСКАЛЬ:
A b12 r1m SIGMA gamma I80_86
Числа в мові ПАСКАЛЬ звичайно записуються в десятковій системі числення. Вони можуть бути цілими і дійсними. Додатній знак числа може бути опущений. Цілі числа записуються без десяткової крапки, наприклад:
217 -45 8954 +483
Дійсні числа записуються у формі з десятковою крапкою чи з використанням десяткового порядку, що зображується буквою Е:
28.6 0.65 -0.018 4.0 5Е12 -1.72Е9 73.1Е-16
ПАСКАЛЬ допускає запис цілих чисел і фрагментів дійсних чисел у формі з порядком шістнадцяткової системи числення:
$7F $40 $ABC0
Рядок в мові ПАСКАЛЬ - це послідовність символів, яка записана між апострофами. Якщо в рядку як змістовний символ необхідно ужити сам апостроф, то варто записати два апострофи. Приклади рядків:
'РЯДОК' 'STRING' 'ПРОГРАМА' 'М''ЯЧ'
2.2.3 Концепція типу для даних
У математиці прийнято класифікувати змінні відповідно до деяких важливих характеристик. Існує суворе розмежування між речовинними, комплексними і логічними змінними, між змінними, що представляють окремі значення і безліч значень і так далі.
При обробці даних на ЕОМ така класифікація ще більш важлива. У будь-якій алгоритмічній мові кожна константа, змінна, вираз чи функція бувають визначеного типу.
У мові ПАСКАЛЬ існує правило: тип явно задається в описі змінної чи функції, що передує їх використанню. Концепція типу мови ПАСКАЛЬ має наступні основні властивості:
· будь-який тип даних визначає безліч значень, до якого належить константа, що може приймати змінна чи вираз, або виробляти операція чи функція;
· тип значення, що задається константою, змінної чи виразом, можна визначити по їх виду чи опису;
· кожна операція чи функція вимагає аргументів фіксованого типу і видає результат фіксованого типу.
Звідси випливає, що транслятор може використовувати інформацію про типи для перевірки обчислення і правильності різних конструкцій.
Тип визначає:
· можливі значення змінних, констант, функцій, виразів, що належать до даного типу;
· внутрішню форму представлення даних в ЕОМ;
· операції і функції, що можуть виконуватися над величинами, що належать до даного типу.
Обов'язковий опис типу приводить до надлишковості в тексті програм, але така надлишковість є важливим допоміжним засобом розробки програм і розглядається як необхідна властивість сучасних алгоритмічних мов високого рівня. У мові ПАСКАЛЬ існують скалярні і структуровані типи даних.
До скалярних типів відносяться стандартні типи і типи, обумовлені користувачем.
Стандартні типи включають цілий, дійсний, символьний, логічний й адресний типи. Типи, обумовлені користувачем, - що перелічується та інтервальний.
Структуровані типи мають чотири різновиди: масиви, безлічі, записи і файли.
Крім перерахованих, TURBO PASCAL включає ще два типи - процедурний і об'єктний.
З групи скалярних типів можна виділити порядкові типи, що характеризуються наступними властивостями:
· усі можливі значення порядкового типу являють собою обмежену упорядковану множину;
· до будь-якого порядкового типу може бути застосована стандартна функція Ord, що як результат повертає порядковий номер конкретного значення в даному типі;
· до будь-якого порядкового типу можуть бути застосовані стандартні функції Pred і Succ, що повертають попереднє і наступні значення відповідно;
· до будь-якого порядкового типу можуть бути застосовані стандартні функції Low і High, що повертають найменші і найбільші значення величин даного типу.
У мові ПАСКАЛЬ уведені поняття еквівалентності і сумісності типів. Два типи Т1 і Т2 є еквівалентними (ідентичними), якщо виконується одна з двох умов:
· Т1 і Т2 являють собою одне й те саме ім'я типу;
· тип Т2 описаний з використанням типу Т1 за допомогою рівності чи послідовності рівностей. Наприклад:
Type
T1 = Integer;
T2 = T1;
T3 = T2;
Менш строгі обмеження визначені сумісністю типів.
Наприклад, типи є сумісними, якщо:
· вони еквівалентні;
· обидва є або цілими, або дійсними;
· один тип - інтерввальний, інший - його базовий;
· обидва інтервальні з загальним базовим;
· один тип - строковий, інший - символьний.
У мові ТУРБО ПАСКАЛЬ обмеження на сумісність типів можна обійти за допомогою приведення типів. Приведення типів дозволяє розглядати ту саму величину в пам'яті ЕОМ як приналежну різним типам. Для цього використовується конструкція:
Ім'я_Типу(змінна чи значення).
Наприклад, Integer('Z') являє собою значення коду символу 'Z' у двухбайтовому представленні цілого числа, а Byte(534) дасть значення 22, оскільки ціле число 534 має тип Word і займає два байти, а тип Byte займає один байт, і в процесі приведення старший байт буде відкинутий.
2.2.4 Стандартні типи даних
До стандартного відносяться цілий, дійсний, логічний, символьний і адресний типи (таблиця 2.1).
Цілі типи визначають константи, змінні і функції, значення яких реалізуються множиною цілих чисел, припустимих у даної ЕОМ.
Таблиця 2.1 – Типи цілих даних
Тип | Діапазон значень | Необхідна пам'ять |
Shortint | -128.. 127 | 1 байт |
Integer | -32768.. 32767 | 2 байти |
Longint | -2147483648.. 2147483647 | 4 байти |
Byte | 0.. 255 | 1 байт |
Word | 0.. 65535 | 2 байти |
Над цілими операндами можна виконувати наступні арифметичні операції: додавання, різниця, множення, ділення, одержання остачі від ділення. Знаки цих операцій: + - * div mod
Результат арифметичної операції над цілими операндами є величина цілого типу. Результат виконання операції ділення цілих величин є ціла частина частки. Результат виконання операції одержання остачі від ділення - залишок від розподілу цілих. Наприклад:
17 div 2 = 8, 3 div 5 = 0.17 mod 2 = 1, 3 mod 5 = 3.
Операції відношення, застосовані до цілих операндів, дають результат логічного типу TRUE чи FALSE (істина чи неправда).
У мові ПАСКАЛЬ маються наступні операції відношень: рівність =, нерівність <>, більше чи дорівнює >=, менше чи дорівнює <=, більше >,
менше <.
До аргументів цілого типу застосовують наступні стандартні (вбудовані) функції, результат виконання яких має цілий тип:
Abs(X), Sqr(X), Succ(X), Pred(X),
і які визначають відповідно абсолютне значення Х, Х в квадраті, Х+1, Х-1.
Наступна група стандартних функцій для аргументу цілого типу дає дійсний результат: