Основні поняття алгоритмічного мови p>
1. О С Н О В Н И Е П О Н С Т В А p>
А Л Г О Р И Т М І Ч Н О Г О Я З И К А p>
СКЛАД МОВИ. Звичайний розмовна мова складається з чотирьох основних елементів: символів, слів, словосполучень і пропозицій. Алгоритми-ний мова містить такі елементи, тільки слова називають елементом тарний конструкціями, словосполучення-виразами, пропозиції-опера-торамі. Символи, елементарні конструкції, вирази й оператори складають ієрархічну структуру, оскільки елементарні конструк-ції утворюються з послідовності символів, вирази-це послідовно-вательность елементарних конструкцій і символів, а оператор-послідовно-вательность виразів, елементарних конструкцій і символів. P>
ОПИС МОВИ є опис чотирьох названих елементів. Опис символів полягає в перерахуванні припустимих символів мови. Під описом елементарних конструкцій розуміють правила їх утворення. P>
Опис виразів-це правила освіти будь-яких висловлювань, які мають сенс у даному мовою. Опис операторів складається з розгляду всіх типів операторів, допустимих в мові. Опис кожного елемента мови задається його синтаксис і семантика. Синтаксичні визначенні-ня встановлюють правила побудови елементів мови. Семантика визна-ділячи глузд і правила використання тих елементів мови, для яких були дані синтаксичні визначення. P>
СИМВОЛИ мови-це основні неподільні знаки, в термінах яких пи-шутся всі тексти на мові. P> < p> ЕЛЕМЕНТАРНОГО КОНСТРУКЦІЇ-це мінімальні одиниці мови, що мають самостійний сенс. Вони утворюються з основних символів мови. P>
Вирази в алгоритмічній мові складається з елементарних конс-трукцій і символів, воно задає правило обчислення деякого значен-ня. P>
ОПЕРАТОР задає повний опис деякої дії, що необ-хідно виконати. Для опису складного дії може знадобитися група операторів. У цьому випадку оператори об'єднуються в складову p>
ОПЕРАТОР або БЛОК. P>
Дії, задані операторами, виконуються над ДАНИМИ. Запропоновано-ня алгоритмічного мови, в яких даються відомості про типи даних, називають опис або неісполняемимі операторами. P>
Об'єднана єдиним алгоритмом сукупність описів і операторів утворює ПРОГРАМУ на алгоритмічній мові. P>
У процесі вивчення алгоритмічного мови необхідно відрізняти ал-горітміческій мову від тієї мови, за допомогою якого здійснюється опис досліджуваного алгоритмічної мови. Звичайно досліджуваний мова на-викликають просто мовою, а мова, в термінах якого дається опис мови, що вивчається - метамови. P>
Синтаксичні визначення можуть бути задані формальними чи не-формальним способами. Існують три формальних способи: p>
-металінгвістіческая символіка, звана Бекуса-Наура формулами; p>
-синтаксичні діаграми; p>
-скобочние конструкції. P>
Ми в подальшому викладі будемо користуватися неформальним спосо-бом. p>
2. О С Н О В Н И Е С И М В О Л И p>
Основні символи мови-букви, цифри та спеціальні символи-склад-ляють його алфавіт. ТУРБО ПАСКАЛЬ включає наступний набір основних символів: p>
1) 26 латинських рядкових і 26 латинських великих літер: p>
ABCDEFGHIJKLMNOPQRSTU VWXYZ abcdefghijklmnopqrstu vwxyz p>
2) _ підкреслення p>
3) 10 цифр: p>
0 1 2 3 4 5 6 7 8 9 p>
4) знаки операцій: p>
+ - */= <> =: = @ p>
5) обмежувачі: p>
. , '() [] (..) () (* *) .. :; P>
6) специфікатор: p>
^ # $ p>
7) службові (зарезервовані) слова: p>
ABSOLUTE EXPORTS LIBRARY SET
ASSEMBLER EXTERNAL MOD SHL p>
AND FAR NAME SHR p>
ARRAY FILE NIL STRING p>
ASM FOR NEAR THEN p>
ASSEMBLER FORWARD NOT TO p>
BEGIN FUNCTION OBJECT TYPE p>
CASE GOTO OF UNIT p>
CONST IF OR UNTIL p>
CONSTRUCTOR IMPLEMENTATION PACKED USES p>
DESTRUCTOR IN PRIVATE VAR p>
DIV INDEX PROCEDURE VIRTUAL p>
DO INHERITED PROGRAM WHILE p>
DOWNTO INLINE PUBLIC WITH p>
ELSE INTERFACE RECORD XOR p>
END INTERRUPT REPEAT p>
EXPORT LABEL RESIDENT p>
Крім перерахованих, в набір основних символів входить пробіл. Про-білі не можна використовувати всередині здвоєних символів і зарезервований-них слів. P>
3. Е Л Е М Е Н Т А Р Н И Е К О Н С Т Р У К Ц І І p>
Елементарні конструкції мови ПАСКАЛЬ містять у собі імена, чис-ла і рядки. P> < p> Імена (ідентифікатори) називають елементи мови - константи, мітки, типи, змінні, процедури, функції, модулі, об'єкти. Ім'я - це пос-ледовательность букв і цифр, що починається з букви. В іменах може іс-користуватися символ _ підкреслення. Ім'я може містити довільну кількість символів, але значущими є 63 символи. P>
Не дозволяється в мові ПАСКАЛЬ використовувати як імена слу-жебние слова і стандартні імена, якими названі стандартні конс-танто, типи, процедури, функції і файли. p>
Для поліпшення наочності програми до неї можуть вставлятися пробі-ли. Принаймні один пробіл потрібно вставити між двома послідовними іменами, числами або службовими і стандартними име-нами. Прогалини не можна використовувати всередині імен та чисел. P>
Приклади імен мови ПАСКАЛЬ: p>
A b12 r1m SIGMA gamma I80_86 p>
Числа в мові ПАСКАЛЬ зазвичай записуються в десятковій системі числення . Вони можуть бути цілими і дійсними. Позитивний знак числа може бути опущений. Цілі числа записуються у формі без десяткового дробу, наприклад: p>
217 -45 8954 +483 p>
Дійсні числа записуються у формі з десяткового точкою або у формі з використанням десяткового порядку, який зображується буквою Е: p>
28.6 0.65 -0.018 4.0 5Е12-1.72Е9 73.1Е-16 p>
ПАСКАЛЬ допускає запис цілих чисел і фрагментів дійсних чисел у формі з порядком в шістнадцятковій системі числення: p >
$ 7F $ 40 $ ABC0 p>
Рядки у мові ПАСКАЛЬ - це послідовність символів, записаний-ва між апострофами. Якщо в рядку в якості змістовного сим-вола необхідно вжити сам апостроф, то слід записати два апострофа. Приклади рядків: p>
'РЯДОК' 'STRING' 'ПРОГРАМА' 'АД''ЮТАНТ' p>
4. К О Н Ц Е П Ц І С Т В П А p>
Д Л Я Д А Н Н И Х p>
У математиці прийнято класифікувати змінні відповідно з деякими важливими характеристиками. Проводиться строго розмежувати-ня між речовими, комплексними і логічними змінними, меж-ду змінними, що представляють окремі значення і безліч значен-ний і так далі. P>
При обробці даних на ЕОМ така класифікація ще більш важлива. У будь-якому алгоритмічній мові кожна константа, змінна, вираз чи функція бувають певного типу. P>
У мові ПАСКАЛЬ існує правило: тип явно задається в описі змінної або функції, що передує їх використання. Концепцій типу мови ПАСКАЛЬ має наступні основні властивості: p>
-будь-який тип даних визначає множину значень, до якого при-належить константа, які може приймати змінна або вираз, або виробляти операція або функція; p>
-тип значення, що задається константою, змінною або виразом, можна визначити за їх виду чи опису; p>
-кожна операція або функція вимагає аргументів фіксованого ти-па і видає результат фіксованого типу. p>
Звідси випливає, що транслятор може використовувати інформацію про ти-пах для перевірки вичіслімості і правильності різних конструкцій. p>
Тип визначає: p>
-можливі значення змінних, констант, функцій, виразів , при-належних до даного типу; p>
-внутрішню форму подання даних в ЕОМ; p>
-операції та функції, які можуть виконуватися над величинами, що належать до даного типу. p>
Обов'язкове опис типу призводить до надмірності в тексті прог-Рамм, але така надмірність є важливим допоміжним засоб-твом розробки програм і розглядається як необхідна властивість сучасних алгоритмічних мов високого рівня. У мові ПАСКАЛЬ існують скалярні та структуровані типи даних. P>
До cкалярним типами відносяться стандартні типи і типи, визна-мі користувачем. P>
Стандартні типи включають цілі, дійсні, символьний, логічні та адресний типи. Типи, що визначаються користувачами, - пере-числяться та інтервальний. P>
Структуровані типи мають чотири різновиди: масиви, безліч, записи й файли. P>
Крім перерахованих, TURBO PASCAL включає ще два типу - проце-дурний і об'єктний. p>
З групи скалярних типів можна виділити порядкові типи, які характеризуються такими властивостями: p>
-всі можливі значення порядкового типу являють собою обмежене впорядкована множина; p>
-до будь-якого порядковому типу може бути застосована стандартна функція Ord, що як результат повертає порядку-вий номер конкретного значення в цьому типі; p>
-до будь-якого порядковому типу можуть бути застосовані стандартні функції Pred і Succ, які повертають попереднє і подальші-ний значення відповідно; p>
-до будь-якого порядковому типу можуть бути застосовані стандартні функ-ції Low і High, які повертають найменше та найбільше значення величин даного типу. p>
У мові ПАСКАЛЬ введено поняття еквівалентності і сумісностітипів. p>
Два типу Т1 і Т2 є еквівалентними (ідентичними), якщовиконується одна з двох умов: p>
-Т1 і Т2 є одне і те ж ім'я типу; p>
-тип Т2 описано з використанням типу Т1 за допомогою рівності або послідовності рівності. Наприклад: p>
type p>
T1 = Integer; p>
T2 = T1; p>
T3 = T2; p>
Менш строгі обмеження визначені сумісністю типів. Напри-мер, типи є сумісними, якщо: p>
-вони еквівалентні; p>
-є обидві або цілими, або дійсними; p>
-один тип - інтервальний, другий - його базовий; p>
-обидва інтервальні із загальним базовим; один тип - рядковий, інший - символьний. p>
У ТУРБО ПАСКАЛЬ обмеження на сумісність типів можна обійти за допомогою приведення типів. Приведення типів дозволяє розглядати одну й ту ж величину в пам'яті ЕОМ як належить різним типам. P>
Для цього використовується конструкція p>
Імя_Тіпа (змінна або значення). P>
напрмер , p>
Integer ( 'Z') p>
являє собою значення коду символу 'Z' в двухбайтном представ-леніі цілого числа, а p>
Byte (534)
дасть значення 22, оскільки ціле число 534 має тип Word і займаючись-і два байти, а тип Byte займає один байт, і в процесі приведення старший байт буде відкинутий. p>
5. С Т А Н Д А Р Т Н И Е Т И П И p>
Д А Н Н И Х p>
До стандартних відносяться цілі, дійсні, логічні, символьний та адресний типи.
ЦІЛІ типи визначають константи, змінні та функції, значення яких реалізуються безліччю цілих чисел, допустимих в даній ЕОМ. p>
тип діапазон значень необхідна пам'ять p>
__________________________________________________________ p >
Shortint -128 .. 127 1 байт p>
Integer -32768 .. 32767 2 байти p>
Longint -2147483648 .. 2147483647 4 байти p>
Byte 0 .. 255 1 байт p>
Word 0 .. 65535 2 байти p>
__________________________________________________________ p>
Над цілими операндами можна виконувати такі арифметичні операції: додавання, віднімання, множення, ділення, отримання залишку від ділення. Знаки цих операцій: p>
+ - * div mod p>
Результат арифметичної операції над цілими операндами є вели-чина цілого типу. Результат виконання операції ділення цілих величин є ціла частина приватного. Результат виконання операції отримання залишку від ділення - залишок від ділення цілих. Наприклад: p>
17 div 2 = 8, 3 div 5 = 0. P>
17 mod 2 = 1, 3 mod 5 = 3. P>
Операції відносини, застосовані до цілих операнда, дають результат логічного типу TRUE або FALSE (істина чи брехня). p>
У мові ПАСКАЛЬ є наступні операції відношення: = рівність, нерівність, більше або дорівнює> =, менше або дорівнює, менше < . p>
До аргументів цілого типу застосовні наступні стандартні (вбудований-ні) функції, результат виконання яких має цілий тип: p>
Abs (X), Sqr (X), Succ (X) , Pred (X), p>
і які визначають відповідно абсолютне значення Х, Х в квад-рапіе, Х 1, Х-1. p>
Наступна група стандартних функцій для аргументу цілого типу да-ет дійсний результат: p>
Sin (X), Cos (X), ArcTan (X), Ln (X), Exp (X), Sqrt (X). p>
Ці функції обчислюють синус, косинус і арктангенс кута, заданого в радіанах, логарифм натуральний, експоненту і корінь квадратний з-відповідально. p>
Результат виконання функції перевірки цілої величини на непарність p>
Odd (X ) має значення істина, якщо аргумент непарний, і значення брехня, якщо аргумент парний: p>
X = 5 Odd (X) = TRUE, X = 4 Odd (X) = FALSE. p>
Для швидкої роботи з цілими числами визначені процедури: p>
Inc (X) X: = X +1 p>
Inc (X, N) X: = X + N p>
Dec (X) X: = X-1 p>
Dec (X, N) X: = XN p>
ДІЙСНІ типи визначає ті дані, які реалізуються підмножиною дійсних чисел, допустимих в даній ЕОМ. p>
Тип Діапазон Кількість цифр Необхідна значень мантиси пам'ять (байт) p>
--------------------- ------------------------------------------ p>
Real 2.9e-39 .. 1.7e +38 11 6 p>
Single 1.5e-45 .. 3.4e +38 7 4 p>
Double 5.0e-324 .. 1.7e +308 15 8 p>
Extended 3.4e-4932 .. 1.1e +4932 19 10 p>
Comp-9.2e +18 .. 9.2e +18 19 8 p>
------------------------------------- -------------------------- p>
Тип Real визначений у стандартному Паскаля і математичним опору-цессора не підтримується. p >
Решта дійсні типи визначені стандартом IEEE 457 і ре-алізовани на всіх сучасних комп'ютерах. p>
Для їх використання за наявності співпроцесора або при роботі на p>
ЕОМ типу 80486 необхідно компілювати програму з ключем ($ N +), а за відсутності співпроцесора - з ключами ($ N-, E +}. p>
Тип Comp хоча і відноситься до дійсних типів, зберігає тільки довгі цілим числом. p>
Над дійсними операндами можна виконувати наступні аріфметі-етичні операції, що дають дійсний результат: p>
складання +, віднімання -, множення *, ділення /. p>
До величин дійсного типу застосовні всі операції відносини , що дають булевський результат. p>
Один з операндів, що беруть участь в цих операціях, може бути цілим. p>
До дійсним аргументів застосовні функції, що дають дійсними-ний результат: p>
Abs (X), Sqr (X), Sin (X), Cos (X), ArcTan (X), Ln (X), Exp (X), p>
Sqrt (X), Frac ( X), Int (X), Pi. p>
Функція Frac (X) повертає дробову частина X, функція Int (X) - цілу частину X. p>
безаргументний функція Pi повертає значення числа Пі дії-ного типу. p>
До аргументів дійсного типу застосовні також функції p>
Trunc (X) і Round (X), p>
дають цілий результат. Перша з них виділяє цілу частина дії-ного аргументу шляхом відсікання дробової частини, другий округлює аргумент до найближчого цілого. P>
логічний тип (Boolean) визначає ті дані, які можуть при-приймати логічні значення TRUE і FALSE.
До Булевського операнда застосовні такі логічні операції: p>
not and or xor. p>
Логічний тип визначений таким чином, що FALSE У ТУРБО ПАСКАЛЬ введені ще різновиди логічного типу: p>
ByteBool, WordBool і LongBool, які займають у пам'яті ЕОМ один, два і чотири байти відповідно. p>
Символьна тип (Char) визначає упорядковану сукупність симво-лов, допустимих в даній ЕОМ. Значення символьної змінної або константи - це один символ з припустимого набору. P>
Символьна константа може записуватися в тексті програми трьома способами: p>
-як один символ, укладений в апострофи, наприклад: p>
'A' 'a' 'Ю' 'ю'; p>
-за допомогою конструкції виду # K, де K - код соответствущего симво-ла, при цьому значення K повинно знаходитися в межах 0 .. 255; p>
-за допомогою конструкції виду ^ C, де C - код соответствущего управ-ляющие символу, при цьому значення C має бути на 64 більше коду керуючого символу. p>
До величинам символьного типу застосовні всі операції ставлення. p>
Для величин символьного типу визначені дві функції перетворення p>
Ord (C) Chr (K). p>
Перша функція визначає порядковий номер символу С в наборі сим-волів, другий визначає за порядковим номером До символ, що стоїть на p>
К-му місці в наборі символів. Порядковий номер має цілий тип. P>
До аргументів символьного типу застосовуються функції, які визна-ляють попередній і подальший символи: p>
Pred (C) Succ (C). Pred ( 'F') = 'E'; Succ ( 'Y') = 'Z'. P>
При відсутності попереднього або наступного символів значення з-ності функцій не визначено. P>
Для літер з інтервалу 'a' .. 'z' застосовна функція UpCase (C), кото-рая переводить ці літери у верхній регістр 'A' .. 'Z'. p>
АДРЕСНАЯ тип (Pointer) визначає змінні, які можуть містити значення адрес даних або фрагментів програми. Для зберігання адреси потрібні два слова (4 байти), одне з них визначає сегмент, друга - зміщення. P>
Робота з адресними змінними (покажчиками) буде розглянута пізніше, зараз зазначимо, що для отримання значення адреси будь-якої змінної введена унарний операція @. p>
6. К О Н С Т А Н Т И p>
Тип констант в мові ПАСКАЛЬ визначається з їхнього вигляду: константи цілого типу - це цілі числа, що не містять десяткового дробу, конс-танто дійсного типу - дійсні числа, логічні конс - Танто - логічні значення TRUE і FALSE, символьні константи - або рядки довжиною в один символ, або конструкції виду # K або ^ K. p>
Мова ПАСКАЛЬ допускає використовувати синоніми для позначення конс-танто, в цьому випадку текст програми містить рау весь зріст опису констант, наприклад: () p>
7. П Е Р Е М Е Н Н И Е. p>
І Н І Ц І А Л И З А Ц І Я П Е Р Е М Е Н Н И Х p>
Тип змінних визначається користувачем в розділі опису пере-сних :{} p>
В даний час у професійному програмуванні прийнято записувати імена змінних з використанням так званої венгерс-кой нотації. p>
Угорська нотація - це угода про найменування змінних і функцій. Угода широко використовується при програмуванні на язи-ках PASCAL, C і в середовищі WINDOWS. P>
Угорська нотація грунтується на наступних принципах: p>
-імена змінних і функцій повинні містити префікс, що описує їх тип ; p>
-імена змінних і функцій записуються повними словами чи сло-восочетаніямі або їх скороченнями, але так, щоб на ім'я можна було зрозуміти призначення змінної або дія, що виконується функцією. p>
Префікси записуються малими літерами, перша буква кожного слова - заголовна, префікси і слова записуються або разом, або через сім-віл _ (підкреслення). p>
Для мови PASCAL можуть бути рекомендовані наступні префікси для скалярних змінних і функцій: p>
Префікс Тип p>
--------------------- by Byte sh Shortint i Integer w Word l Longint r Real si Single d Double e Extended c Comp ch Char b Boolean p Pointer x, у координати символу або точки на екрані p>
Для величин структурованого типу можуть бути використані сліду-ющіе префікси: p>
a Array s String sz Stringz se Set re Record f File t Text p>
Наприклад: p>
rV, arVector [1 .. 20], sName, iCount. p>
У скомпільованій програмі для всіх змінних відведено місце в пам'яті, і всім змінним присвоєно нульові значення. p>
Для завдання початкових значень змінним (ініціалізації змін-них) TURBO PASCAL дозволяє присвоювати початкові значення змінним одночасно з їх описом. Для цього використовується конструкція p>
ім'я змінної: тип = значення; p>
яка повинна бути розміщена в розділі опису констант, наприклад: p>
const rWeight: Real = 0.4; p>
8. В И Р А Ж Е Н Н Я p>
Вираз складається з констант, змінних, покажчиків функцій, знаків операцій та дужок. Вираз задає правило обчислення некот-якого значення. Порядок обчислення визначається старшинство (пріо-тетом) що містяться в ньому операцій. У мові ПАСКАЛЬ прийнятий наступний пріоритет операцій: p>
1. унарний операція not, унарний мінус -, взяття адреси @ p>
2. операції типу множення */div mod and shl shr p>
3. операції типу складання + - or xor p>
4. операції відносини = <> = in p>
() p>
Вирази входять до складу багатьох операторів мови ПАСКАЛЬ, а також можуть бути аргументами вбудованих функцій. p>
9. О П Е Р А Т О Р П Р И С В А І В А Н І Я p>
Тип змінної і тип виразу повинні збігатися крім випадку, ко-ли вираз відноситься до цілого типу, а змінна - до дійсно-му. При цьому відбувається перетворення значення виразу до дійсного типу .{} p>
10. О П Е Р А Т О Р И В В О Д А p>
І В И В О Д А p>
Розглянемо організацію введення і виведення даних з термінального уст-ройства. Термінальне пристрій - це пристрій, з яким працює користувач, зазвичай це екран (дисплей) і клавіатура. P>
Для введення і виведення даних використовуються стандартні процедури введення та виведення Read і Write, оперують стандартними послідовнимифайлами p>
INPUT і OUTPUT. p>
Ці файли розбиваються на рядки змінної довжини, відокремлюються один від одного ознакою кінця рядка. Кінець рядка задається натисканням кла-Віші ENTER. P>
Для введення вихідних даних використовуються оператори процедур введення: p>
Read (A1, A2, ... AK); p>
ReadLn (A1, A2, ... AK); p>
ReadLn; p>
Перший з них реалізує читання До значень вихідних даних і прис-ваіваніе цих значень змінним А1, А2,. .., АК. Другий оператор реалізує читання До значень вихідних даних, пропуск інших значен-ний до початку наступного рядка, надання лічених значень пере-менним А1, А2, ..., АК. Третій оператор реалізує пропуск рядка ис-Ходна даних. P>
При введенні початкових даних відбувається перетворення з зовнішньої форми представлення у внутрішню, що визначається типом змінних. Пе-ремінні, що утворюють список уведення, можуть належати або до цілого, або до дійсного, або до символьному типами. Читання вихідних даних логічного типу в мові ПАСКАЛЬ неприпустимо. P>
Оператори введення при читанні значень змінних цілого і дійсного типу пропускає прогалини, що передують числу. У той же час ці оператори не пропускають прогалин, що передують значен-вам символьних змінних, так як пробіли є рівноправними символами рядків. Приклад запису операторів вводу: p>
var rV, rS: Real; iW, iJ: Integer; chC, chD: Char; p>
............ .... p>
Read (rV, rS, iW, iJ); p>
Read (chC, chD); p>
Значення вихідних даних можуть відділятися один від друга пробілами і натисканням клавіш табуляції і Enter. p>
Для виводу результатів роботи програми на екран використовуються оператори: p>
Write (A1, A2, ... AK); p> < p> WriteLn (A1, A2, ... AK); p>
WriteLn; p>
Перший з цих операторів реалізує висновок значень перемінних А1, p>
А2,. .., АК у рядок екрана. Другий оператор реалізує висновок значень перемінних А1, А2, ..., АК і перехід до початку наступного рядка. Третій оператор реалізує пропуск рядка і перехід до початку наступного рядка. P>
Змінні, що складають список висновку, можуть відноситися до цілого, дійсному, символьному або Булевського типами. Як елементом та списку висновку крім імен перемінних можуть використовуватися вираження і рядки. P>
Висновок кожного значення в рядок екрана відбувається в відповідної з шириною поля виводу, яка визначається конкретною реалізацією мови. P>
Форма представлення значень у полі висновку відповідає типу пе-ремінних і виражень: величини цілого типу виводяться як цілі десять-тичних числа, дійсного типу - як дійсні десяткові числа з десятковим порядком, символьного типу і рядка - у вигляді сим-волів, логічного типу - у вигляді логічних констант TRUE і FALSE. p>
Оператор висновку дозволяє задати ширину поля виводу для кожного елемента списку висновку. У цьому випадку елемент списку висновку має вид А: К, де p>
А - чи вираження рядок, ДО - вираження або константа цілого типу. P>
Якщо виведене значення займає в поле виведення менше позицій , ніж К, то перед цим значенням розташовуються пробіли. Якщо виводиться значен-ня не вміщується в ширину поля К, то для цього значення буде отве-дено необхідну кількість позицій. Для величин дійсного типу елемент списку висновку може мати вид А: К: М, де А - мінлива абовиражений-ня дійсного типу, ДО - ширина поля виводу, М - число цифр дробової частини виведеного значення. К і М - чи вираження константи цілого типу. У цьому випадку дійсні значення виводяться у формі десяткового числа з фіксованою точкою. P>
Приклад запису операторів виводу: p>
. . . . . . . . . . . . var rA, rB: Real; iP, iQ: Integer; bR, bS: Boolean; chT, chV, chU, chW: Char; p>
. . . . . . . . . . . . p>
WriteLn (rA, rB: 10:2); p>
WriteLn (iP, iQ: 8); p>
WriteLn (bR, bS: 8) ; p>
WriteLn (chT, chV, chU, chW); p>
11. С Т Р У К Т У Р А П Р О Г Р А М М И p>
Програма на мові ПАСКАЛЬ складається з заголовка, розділів описів і розділу операторів. P>
Заголовок програми містить ім'я програми, наприклад: p>
Program PRIM; p>
Описи можуть включати в себе розділ підключаються бібліотек (мо-дулею), розділ опису міток, розділ опису констант, розділ опи-Санія типів, розділ опису змінних, розділ опису процедур і функцій. p>
Розділ опису модулів визначається службовим словом USES і з-тримає імена модулів (бібліотек) як що входять до складу системи TURBO PASCAL, так і написаних користувачем. Розділ опису модулів має бути першим серед розділів описів. Імена модулів від-виділяється один від одного комами: p>
uses CRT, Graph; p>
Будь-який оператор в програмі може бути позначений міткою. В якості мітки використовуються довільні цілі без знака, що містять не більше чотирьох цифр, або імена. Позначка ставиться перед оператором і відокремлює-ся від нього двокрапкою. Усі мітки, які використовуються в програмі, повинні бути перераховані в розділі опису міток, наприклад: p>
label 3, 471, 29, Quit; p>
Опис констант дозволяє використовувати імена як синоніми конс-танто , їх необхідно визначити в розділі описів констант: p>
const K = 1024; MAX = 16384; p>
У розділі опису змінних необхідно визначити тип всіх пере-сних, що використовуються в програмі: p>
var P, Q, R: Integer; p>
A, B: Char; p>
F1, F2: Boolean; p>
Опис типів, прцедур і функцій буде розглянуто нижче. Відділ-ні розділи описів можуть бути відсутні, але слід пам'ятати, що у p>
ПАСКАЛЬ - програмі повинні бути обов'язково описані всі компоненти програми. P>
Розділ операторів є складовою оператор, який містить між службовими словами p>
begin ....... end p>
послідовність операторів. Оператори відокремлюються один від одного символом;. P>
Текст програми закінчується символом крапка. P>
Крім описів і операторів ПАСКАЛЬ - програма може містити коментарі, які являють собою довільну послідовник-ність символів, розташовану між відкриває дужкою коментарів p>
(і закриває дужкою коментарів). p>
Текст ПАСКАЛЬ - програми може містити ключі компіляції, кото-рие дозволяють керувати режимом компіляції. Синтаксично ключі ком-піляціі записуються як коментарі. Ключ компіляції містить символ p>
$ і букву-ключ з наступним знаком + (включити режим) або - (виключенні програ-чить режим). Наприклад: p>
($ E +) - емулювати математичний співпроцесор; p>
($ F +) - формувати дальній тип виклику процедур і функцій; p>
($ N +) -- використовувати математичний співпроцесор; p>
($ R +) - перевіряти вихід за межі діапазонів. p>
Деякі ключі компіляції можуть містити параметр, наприклад: p>
($ I назва файлу ) - включити в текст модульна програми названий-ний файл. p>
Приклад запису простий програми: p>
Program TRIANG; var A, B, C, S, P: Real; begin p>
Read (A, B, C); p>
WriteLn (A, B, C); p>
P: = (A + B + C)/2; p>
S: = Sqrt (P * (PA) * (PB) * (PC )); p>
WriteLn ( 'S =', S: 8:3) end.
12. Б І Т О В А Я А Р И Ф М Е Т И К А p>
бітів або порозрядної арифметика введена в TURBO PASCAL для забезпечення можливості роботи з двійковими розрядами (бітами). Опера-ції бітової арифметики можна застосовувати лише до цілих типів. P>
Перша група операцій - логічні операції not, and, or та xor. P>
Операція not є одномісній, вона змінює кожен біт цілого числа на зворотний. p>
Операції and, or та xor - двомісні, операнди цих операцій - цілі величини однакової довжини. Операції виконуються попарно над усіма двійковими розрядами операндів. P>
Друга група операцій - це операції зсуву вліво shl та зсуву вправо shr: p>
I shl N p>
I shr N . p>
Ці операції зрушують двійкову послідовність значення I вліво або вправо на N двійкових розрядів. При цьому біти, що йдуть за межі розрядної сітки, губляться, а що звільнилися двійкові розряди заповнюють-ются нулями. При зсуві вправо негативних значень звільнилися розряди заповнюються одиницями. P>
13. О П Е Р А Т О Р П Е Р Е Х О Д А p>
Зазвичай оператори в програмі виконуються в тому порядку, в якому вони записані. Оператор переходу перериває природний порядок виконан-ня програми і вказує, що дальнйшее виконання триватиме не довше-тулитися, починаючи з оператора, поміченого міткою, зазначеної в операторами ре переходу. Приклад запису оператора переходу: p>
goto 218; p>
14. Е Л Е М Е Н Т И С Т Р У К Т У Р Н О Г О p>
П Р О Г Р А М М И Р О В А Н Н Я p>
Структурізованная програма (або підпрограма) - це програма, складена з фіксованого безлічі базових конструкцій. Пере-Мотрі основні визначення та способи утворення цих конструкцій в схемах алгоритмів. P>
() p>
З операцій, розвилок і злиттів будуються базові конструкції: сле-ментів, розгалуження, цикл. Застосовуючи тільки ці три конструкції, можна реалізувати алгоритм розв'язання будь-якої задачі. P>
Конструкція, що представляє собою послідовне виконання двох або більше операцій, називається наслідуванням. P>
Конструкція, що складається з розвилки, двох операцій і злиття, називаються ється розгалуження. Одна з операцій може бути відсутнім. P>
Конструкція, що має лінії управління, що ведуть до попередніх опера-ціям або розвилки, називається циклом. P>
Конструкції слідування, розгалуження і цикл можна представити як операції, так як вони мають один логін і єдиний вихід. p>
довільній послідовності операцій можна представити як одну операцію. p>
Операція може бути реалізована будь-яким оператором мови ПАСКАЛЬ p>
(простим або складовим), або групою операторів, за винятком опе-ратора переходу GOTO. p>
У мові ПАСКАЛЬ кількість базових конструкцій збільшено до шести, це: p>
-проходження; p>
-розгалуження; p>
-цикл з передумовою; p>
-цикл з постусловіем; p>
-цикл з параметром; p>
-варіант. p>
Далі розглянемо, як ці базові конструкції реалізуються в мові p>
ПАСКАЛЬ. p>
15. П О С Л О В Н И Й О П Е Р А Т О Р p>
() p>
Умовний оператор в короткій формі працює за правилом: якщо бу-левски вираз B істинно, то виконується оператор ОР1, далі ви-виконується оператор, наступний за умовним. Якщо Булевського вираз B помилково, то буде виконуватися оператор, наступний за цим умовним опе-ратора. P>
16. Ц І К Л С П Р О П О С Л О В И Е М () p>
17. Ц І К Л С П О С Т У С Л О В И Е М () p>
18. Ц І К Л С П А Р А М Е Т Р О М () p>
19. О П Е Р А Т О Р И З А В Е Р Ш Е Н Н Я Ц И К Л А p>
Для всіх операторів циклу вихід з циклу здійснюється як внаслідок природного закінчення оператора циклу, так і за допомогою операторів переходу і виходу. p>
У версії ТУРБО ПАСКАЛЬ 7.0 визначені стандартні процедури Break і p>
Continue. Процедура Break виконує безумовний вихід з циклу. Проце-дура Continue забезпечує перехід до початку нової ітерації циклу. P>
20. О П Е Р А Т О Р В А Р І А Н Т А () p>
21. П Е Р Е Л І С Л Я Е М И Й Т И П Д А Н Н И Х p>
перераховуються тип являє собою обмежену упорядковану послідовність скалярних констант, що становлять даний тип. Зна-чення кожної константи задається її ім'ям. Імена окремих констант відокремлюються один від одного комами, а вся сукупність констант, сос-тавляющіх даний перераховуються тип, полягає в круглі дужки. P>
Програміст об'єднує в одну групу у відповідності з яким - або ознакою всю сукупність значень, що складають перераховуються тип. p>
Наприклад, що перераховуються тип Rainbow (РАДУГА) об'єднує скалярнізначення p>
RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET (ЧЕРВОНИЙ, p>
оранжевий, жовтий, зелений, блакитний, синій, фіолетовий). Пе-речісляемий тип Traffic_Light (світлофор) об'єднує скалярні значення RED, YELLOW, GREEN (червоний, жовтий, ЗЕЛЕНИЙ). P>
перераховуються тип описується в розділі опису типів, який починається зі службового слова type, наприклад: p>
type p>
Rainbow = (RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET); p>
Кожне значення є константою свого типу і може принале-жати тільки одному з перелічуваних типів, заданих у програмі. Нап-Рімера, що перераховуються тип Traffic_Light не може бути визначений уодній програмі з типом Rainbow, тому що обидва типи містять однакові конс-танто. p>
Опис змінних, що належать до скалярним типами, які об'єк-явлені в розділі опису типів, здійснюється за допомогою імен типів. p>
Наприклад: p>
type Traffic_Light = (RED, YELLOW, GREEN); var Section: Traffic_Light; p>
Це означає, що змінна Section може приймати значення RED, p>
YELLOW або GREEN. p>
Змінні що перераховується типу можуть бути описані в розділ опису-вання змінних, наприклад: p>
var Section: (RED, YELLOW, GREEN); p >
При цьому імена типів відсутні, а змінні визначаються сово-купностью значень, що складають даний перераховуються тип. p>
До змінних що перераховується типу може бути застосовний оператор присвоєння: p>
Section: = YELLOW; p>
Упорядкована послідовність значень, що складають перераховуючи-емий тип, автоматично нумерується, починаючи з нуля і далі через еди-ніцу. Звідси випливає, що до перераховуваних змінним і констант мо-гут бути застосовані операції відносини і стандартні функції Pred, p>
Succ, Ord. P>
Змінні і константи що перераховується типу не можуть бути елемента-ми списку вводу чи виводу. p>
22. І Н Т Е Р У А Л Ь Н И Й Т И П Д А Н Н И Х p>
Відрізок будь-якого порядкового типу може бути визначений як інтервальний або обмежений тип. Відрізок задається діапазоном від мінімального до максимального значення констант, розділених двома крапками. Як констант мо-гут бути використані константи, що належать до цілого, символьному, логічного і не перераховувати типами. Скалярний тип, на якому будів-ится відрізок, називається базовим типом. P>
Мінімальна і максимальна значення констант називаються нижньою і верхньою межами відрізка, що визначає інтервальний тип. Нижня межа повинна бути менше верхньої. P>
() p>
Над змінними, що відносяться до інтервального типу, можуть вико-няться всі операції і застосовуватися всі стандартні функції, які допустимі для відповідного базового типу. p>
При використанні в програмах інтервальних типів даних можездійснювала-вляться контроль за тим, щоб значення змінних не виходили за межі, введені для пов?? х змінних в описі інтервального типу. p>
23. М А С С И В И p>
Масиви представляють собою обмежену упорядковану сукупність однотипних величин. Кожна окрема величина називається компонентою масиву. Тип компонент може бути будь-яким, прийнятим в мові ПАСКАЛЬ, крім файлового типу. Тип компонент називається базовим типом. P>
Вся сукупність компонент визначається одним ім'ям. Для позначення чення окремих компонент використовується конструкція, звана пере-менной з індексом або з індексами: p>
A [5] S [k +1] B [3,5]. P>
В якості індексу може бути використано вираз. Тип індексів може бути тільки інтервальним або перераховуваних. Дійсний і цілий типи неприпустимі. Індекси інтервального типу, для якого ба-зовим є цілий тип, можуть приймати негативні, нульове і позитивні значення .{} p>
У операторної частини програми один масив може бути присвоєний іншому, якщо їх типи Іден-тично, наприклад : p>
R1: = Z. p>
Для введення або виведення масиву в список введення або виведення поміщається змінна з індексом, а оператори вводу чи виводу виконуються у циклі. p>
() p>
Перший індекс визначає номер рядка, другий - номер стовпчика. p>
Двовимірні масиви зберігаються в пам'яті ЕОМ по рядках. p>
Ініціалізація масивів (привласнення початкових значень всім компо-нентов масивів) здійснюється двома способами. p>
Перший спосіб - з використанням типізованих констант, напри-мер: p>
type Dim10 = Array [1 .. 10] of Real;
const raM10: Dim10 = (0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3); p>
При ініціалізації двовимірних масивів значення компонент кожного з вхідних в нього одновимірних масивів записується в дужках: p>
type Dim3x2 = Array [1 .. 3,1 .. 2] of Integer; p>
const iaM3x2: Dim3x2 = ((1, 2) p>
(3, 4) p>
(5, 6)); p>
Другий спосіб ініціалізації - використання різновиди процеду-ри FillChar: p>
FillChar (var V; NBytes: Word; B: Byte); p>
Ця процедура заповнює ділянку пам'яті однобайтових значенням. Напри-мер, для обнуління масиву A [1 .. 10] of Real можна записати: p>
FillChar (A, 40, 0); p>
або p>
FillChar (A, SizeOf (A), 0); p>
() p>
24. С Т Р О К І p>
Особливе місце в мові ПАСКАЛЬ займають масиви символів. Стандарт-ний ПАСКАЛЬ припускає два способи зберігання символьних масивів в па-мяті ЕОМ: розпакований і упакований. Розпаковані масиви символів зберігаються в пам'яті ЕОМ по одному символу в машинному слові, упаковані p>
- по одному символу в байті. При описі упакованого масиву симво-лов використовують службове слово PACKED, наприклад: p>
var MAS: Packed Array [1 .. 20] of Char; p>
Опис розпакованого масиву символів має вигляд:
var M: Array [1 .. 20] of char; p>
Для перетворення символьного масиву з розпакованої форми в упаковану і навпаки, з упакованої в розпаковані, в мову ПАС- p >
Каль введені дві стандартні функції Pack, UnPack. p>
Упакований масив символів утворює символьну рядок. Символьна рядок може бути або рядковий константою, або рядковий змін-ною. Строкова константа, або рядок, являє собою сукупність символів, укладену в апострофи. Рядок - це елементарна конс-трукція мови ПАСКАЛЬ. Рядкові константи можуть входити до складу ви-раженій. Як і числові