Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція Паскаль(для студентів).docx
Скачиваний:
7
Добавлен:
08.02.2016
Размер:
1.4 Mб
Скачать

Основні поняття мови програмування Pascal

Перш за все, слід пам'ятати, що вивченням мови програмування - це знайомство з формальними правилами запису алгоритмів для їх подальшого виконання комп'ютером. Формальність ця виникає з самих принципів, закладених в архітектуру обчислювальних пристроїв, і жорсткості математичної логіки. Тому слід сприймати всі досить строгі правила як неминучість, налаштувати себе на серйозну, скрупульозну, деколи складну роботу. 

Алгоритм – це чітка послідовність дій, напрямлена на досягнення мети або на розв'язання поставленого завдання.

Компютерна програма – це набір інструкцій, які вказують ЕОМ послідовність дій по вирішенню певної поставленої перед ним задачі.

Для того, щоб комп’ютер “зрозумів” вказівки програміста, він повинен “спілкуватись” із програмістом на спільній мові, яку називають мовою програмування.

Мова програмування — це система позначень, за допомогою яких можна точно описати алго­ритм для виконання його комп'ютером.

Більшість програмістів при складанні програм користуються деякою мовою високого рівня. Для описування алгоритмів такою мовою використовується певний набір символів - алфавіт мови. З цих символів складаються так звані службові слова мови, кожне з яких має певне призначення. Службові слова зв'язуються одне з одним в речення за певними синтаксичними правилами мови і визначають деяку послідовність дій, які мусить виконати комп'ютер.

Використання мов високого рівня надає можливість описувати програми для комп'ютера, використовуючи загальноприйняті позначення операцій і функцій.

Та програми, що написані на мовах програмування високого рівня (алгоритмічних мовах програмування), комп'ютер "не розуміє". Для того, щоб він міг виконати програму, її потрібно перекласти на машинну мову. Для такого перекладу використовують спеціальні програми, що мають назву – транслятори .

Транслятор – це програма, що призначена для перекладу тексту програми з однієї мови програмування на іншу. Процес перекладання називається трансляцією.

Розрізняють два типи трансляторів:

  • компілятори

  • інтерпретатори.

Компілятор - це програма, призначена для перекладу в машинні коди програми, що написана мовою високого рівня. Процес такого перекладання називається компіляцією.

Кінцевим результатом роботи компілятора є програма в машинних кодах, яка потім виконується ЕОМ. Скомпільований варіант програми можна зберігати на дискові. Для повторного виконання програми компілятор вже не потрібен. Досить завантажити з диска в пам'ять комп'ютера скомпільований перед цим варіант і виконати його.

Існує інший спосіб поєднання процесів трансляції та виконання програм. Він називається інтерпретацією.

Інтерпретатор - це програма, що призначена для трансляції та виконання вихідної програми по командах (на відміну від транслятора, який цей процес виконує в цілому). Такий процес називається інтерпретацією.

У процесі трансляції відбувається перевірка програми на відповідність до правил її написання. Якщо в програмі знайдені помилки, транслятор виводить повідомлення про них на екран монітора. Інтерпретатор повідомляє про знайдені помилки після трансляції кожної команди програми, а компілятор - після завершення компіляції всієї програми. Знайти та виправити в цьому випадку помилки значно складніше, ніж при інтерпретації. Через це програми-інтерпретатори розраховані, в основному, на мови, що призначені для навчання програмуванню, і використовуються програмістами-початківцями.

Як правило, програми компілятори та інтерпретатори називаються так само, як і мови, для перекладу з яких вони призначені. Слова Паскаль, Бейсік, Сі можна сприймати і як назви мов, і як назви відповідних програм - трансляторів.

Однією з найпопулярніших мов програмування є мова Паскаль, яку створив в 1968 році швейцарський вчений Ніклаус Вірт.

Мови програмування поділяються: машинні коди, мови асемблеру (Asembler), мови високого рівня (Pascal), візуальне програмування (Delphi).

Як і будь-який алгоритм, що є послідовністю інструкцій, програма на мові Паскаль складається з команд (операторів), записаних в певному порядку і форматі.  Команди дозволяють отримувати, зберігати і обробляти дані різних типів (наприклад, цілі числа, символи, рядки символів, т.д.). Проте окрім команд в записі програми беруть участь ще так звані "службові слова". Це і є елементи формальності, організуючі структуру програми. Їх не так багато, але їх значення важко переоцінити. Службові слова можна використовувати тільки по своєму прямому призначенню. Перевизначати їх не дозволяється.  Основне призначення комп'ютера - полегшити людині роботу з великими об'ємами інформації, тому переважна більшість програм побудована поодинці, досить простому принципу: отримання даних із зовнішнього світу (введення), обробка їх по відповідному алгоритму, зберігання необхідної інформації і вивід в зовнішній (по відношенню до комп'ютера) світ отриманих результатів. Всі ці дії реалізуються через наявні в мовах програмування команди, алгоритмічні структури і структури даних.

1. Алфавіт

 Абетка (алфавіт) — це набір символів, які використовуються для написання програм.

Абетку мови Паскаль складають:

1) Літери A..Z, a..z та символ підкреслювання "_".

2) Цифри від 0 до 9.

3) Спеціальні символи + -*/ = <>(){}[].,:;#$'".

4) Службові слова:

 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 - поки

with - з

 5) Деякі послідовності з двох спеціальних символів:

: = надати значення

>= більше або дорівнює

<= менше або дорівнює

<> не дорівнює

.. роздільник діапазонів

(* або { початок коментарію

*) або } кінець коментарію

Службові слова інтерпретуються як цілі символи, про значення яких ти дізнаєшся у відповідних розділах.

 Програма мовою Паскаль оперує різноманітними об'єктами, що містять або певні дані (константи, змінні, типи, файли), або виконують певні дії (процедури та функції). Кожний об'єкт позначається іменем (ідентифікатором). Іменем може бути будь-яка послідовність латинських літер, цифр, знаку підкреслювання, що починається з літери чи знаку підкреслювання (пробіли в іменах ставити заборонено). Заборонено в якості імен використовувати службові слова. Довжина ідентифікатора не повинна перевищувати 127 символів.

 Великі та малі літери в іменах транслятор не відрізняє. Сполучення цих літер використовується для того, аби зручніше було читати інформацію. Числа можуть бути цілими (тип integer) та дійсними (тип real). Дійсні числа записуються у 2-х формах: натуральній (з фіксованою крапкою) та експоненціальній (з плаваючою крапкою).

 Приклади:

 1) 0; 12; 6; -146 - цілі;

2) 1.2; -0.4; 5.13 - дійсні з фіксованою крапкою;

3) 10.43Е-02; 1е20 - дійсні з плаваючою крапкою.

 Записи останнього прикладу відповідають науковій формі запису чисел. Літера Е (чи е) означає "помножити на 10 в степені". Тому число 1е20 читається так: "одиниця, помножена на 10 в степені 20".

2. Структура програм

 Програма мовою Паскаль складається з заголовка, опису даних та тіла програми, що являє собою блок команд обробки даних, обмежений словами BEGIN (початок) та END (кінець). Закінчується програма крапкою.

 Правила мови Паскаль передбачають єдину для всіх програм форму основної структури:

PROGRAM ім'я;

Var опис даних;

BEGIN

  оператор; { тіло програми }

  ……………

  оператор;

END.

 Приклад програми, що обчислює площу круга та довжину кола:

 Program circle; {заголовок}

  const pi=3.141593; {константа}

  var r,len,s : real; {змінні}

BEGIN

  readln (r); {ввести радіус}

  len:=2 * pi * r; {обчислити довжину кола}

  s:=pi * r * r; {обчислити площу}

  writeln ('Довжина=', len ,' площа=' ,s) {вивести результати}

END.

 У фігурних дужках записуються коментарі (пояснення до програми), які транслятором мови ігноруються. Заголовок програми і кожен опис повинні закінчуватися крапкою з комою. Команди (оператори) у тілі програми повинні відокремлюватися одна від одної крапкою з комою, навіть якщо вони записуються окремими рядками. Окремі змістові блоки програми прийнято записувати з відступом ("сходинками"), що робить програму більш зручною для читання, хоча транслятору це байдуже, навіть якщо б ви записали всю програму одним рядком. Перелік усіх даних із зазначенням їх типів на початку програми не тільки полегшує контроль за їх використанням, але й дозволяє транслятору знаходити та повідомляти вам про помилки, наявні в тілі програми та пов'язані з невірною обробкою даних. 

Правила написання Pascal-програм

1.  Основний текст будь-якої програми починається службовим словом begin і закінчується словом end, після чого слідує крапка. Без крапки програма вважається не закінченою. І навпаки, якщо в програмі знаходиться крапка, то всі команди, що слідують за нею ігноруються (оскільки програма завершена).

2.  В кінці кожної команди ставиться крапка з комою (“;”) - символ, що розділяє команди між собою.

3.  Після команди, яка знаходиться перед end, крапку з комою (“;”) бажано не встановлювати, оскільки буде вважатись, що перед end є ще один порожній оператор.

4.  Команди в Pascal можна записувати в один рядок, хоча для полегшення читабельності програми бажано кожну команду вказувати з нового рядка.

5.  Якщо користувач бажає помістити в текст програми коментарі, то їх необхідно вказувати у фігурних дужках (замість фігурних дужок можна вказувати альтернативний набір символів   - “(*     ,,,    *)” ).

6.  При вказанні в програмі виразів, що містять будь-які дужки потрібно пам’ятати, що кількість закритих та відкритих дужок повинна бути однаковою.

7.  Якщо потрібно використати декілька операторів у якості одного складеного оператора, то їх слід взяти в операторні дужки, що починаються словом begin і закінчуються end. При цьому кількість слів begin у програмі повинна співпадати з кількістю слів end.

8.  Усі змінні, константи та типи даних, що використовуються в програмі, повинні бути описані в розділах const, type та var.

Необов'язкові але бажані правила:

1.  Після команди begin всі наступні команди, аж до відповідного йому end, бажано записувати з відступом (наприклад, на величину слова begin). 

2. Назви всіх команд бажано записувати малими літерами, а змінні - великими.

Коментарі

_displayNameOrEmail_ - _time_ - Видалити

_text_

Стандартні типи даних

 

 Програма оперує різними елементами даних. Кожен елемент може бути визначеного типу. Цей тип задає як множину значень, що може приймати елемент, так і операції, які можуть бути з ним виконані.

 Зараз ми розглянемо лише чотири стандартних типи даних:

 1) INTEGER (цілий). Діапазон значень даних цього типу, що можуть прийматися, зазвичай від -32768 до +32767. Граничні значення діапазону записано в стандартних константах, які мають імена MAXINT та MININT, тобто MININT -32768 та MAXINT=32767. Спроба отримати значення, що виходить за межі діапазону, призводить до помилки транслятора.

 Об'єкти даних — учасники операцій — називаються операндами. Над операндами цілого типу можливі такі операції: + (додавання), - (віднімання), * (множення), DIV (цілочисельне ділення з відсіченням залишку), MOD (залишок від цілочисельного ділення). Ці операції виконуються точно. Порядок виконання звичайний: спочатку множення, ділення та отримання залишку, потім додавання та віднімання. Службові слова DIV і MOD з двох сторін повинні відокремлюватися пробілами.

 Приклади:

 5 div 2 = 2

5 mod 2 = 1

5 div 6 = 0

5 mod 6 = 5

 2) REAL (дійсний). Дані цього типу мають цілу, дробову частини та порядок (степінь числа 10). Цілі числа в операціях із дійсними даними автоматично приводяться до REAL-формату. 

Дійсні числа позначаються дійсними сталимиРозглянемо приклад. Число 1.2345 можна позначити багатьма різними способами, наприклад, 123.45 10-2. Тут воно має цілу частину 123, дробову частину .45 і десятковий порядок -2. Цьому запису відповідає стала мови Паскаль 123.45E-2, у якій 123  ціла частина, .45  дробова, а E-2  порядок. Це ж число можна задати сталою 0.12345E1 або 0.012345E+2, або 1.2345, або 12345e-04. Подання числа сталою, у якій перед десятковою крапкою записано єдину цифру від 1 до 9, називається нормалізованим, наприклад, 9.81 або 1.0E2 (число 0 має нормалізоване подання 0.0).

Дійсні сталі мають обов'язкову цілу частину, за якою записано дробову частину і порядок (можливо, одне з них). Ціла частина – це непорожня послідовність цифр, дробова – непорожня послідовність цифр із крапкою на початку, а порядок  буква "E" або "e", можливо, із знаком "+" або "-", і однією або двома цифрами. Перед сталою може бути знак "-", і тоді вона задає від'ємне число: -12.345E-1.

Абсолютна величина (модуль) дійсних чисел зазвичай знаходиться в діапазоні від 1Е-38 до 1Е+38. Якщо число по модулю менше, ніж 1Е-38, відбувається втрата значущості (перетворення на нуль), а якщо більше 1Е+38, то виникає помилка (переповнення). 

Не уточнюючи множину представних дійсних чисел, скажемо лише, що вона:

  • є скінченною обмеженою підмножиною множини раціональних чисел;

  • містить усі цілі числа, представні в типі integer (і багато інших, але все одно їх скінченна множина!).

Як бачимо, цілі числа задаються як цілими сталими, так і дійсними, наприклад, 2 і 2.0. Проте їм відповідають два цілком різних подання того самого числа, тобто значення двох різних типів. І в машині вони обробляються по-різному.

До дійсних значень застосовні ті ж самі арифметичні операції, що й до цілих, за винятком odd, divmod і деяких інших, про що ми скажемо в розділі 10. Їх можна порівнювати (=, <>, > тощо), і до них, і лише до них, застосовні дві операції round і trunc. Вони задаються у вигляді викликів функцій: round(3.62), trunc(2.71) тощо. Перша породжує ціле значення, найближче до операнда, наприклад, round(4.12)=4, round(3.62)=4, а друга – значення математичної функції "ціла частина", що позначається [x]: trunc(3.62)=3. Останнє твердження, утім, є не зовсім точним, тому що для від'ємного числа x значенням trunc(x) є не [x], а -[-x]: trunc(-3.14)=-3, хоча в математиці [-3.14]=-4.

За числовим значенням x, цілим або дійсним, можна обчислити дійсне значення "математичної функції"

|x|, sinx, cosx, arctgx, ex, lnx та ін.

Вираз із числовим значенням записується як аргумент у виклику функції з ім'ям відповідно

abs, sqrt, sin, cos, arctan, exp, ln або sqr,

наприклад,

abs(-2), sqrt(1-sin(x)), arctan(sin(1)/cos(1)), exp(ln(x)).

Значення аргументу у викликах тригонометричних функцій виражає кількість радіан, а не градусів. Крім того, виклик функції sqr(x) за дійсним значенням x породжує дійсне значення x2, а за цілим – ціле.

У системі Турбо Паскаль означено також нульмісну функцію Pi (її значенням є число, близьке до числа  ) й одномісні функції Frac і Int, застосовні лише до дійсних. Вони задають обчислення дробової частини й дійсного подання цілої частини свого аргументу. Наприклад, sin(pi/2)=1.0, frac(3.1415)=0.1415, int(3.1415)=3.0.

Дійсні значення й операції, застосовні до них, утворюють тип дійсних з ім'ям real.

 3) CHAR (символьний тип). Значенням символьної величини є один символ (літера, цифра і т.ін.). Всі символи занесено в спеціальну таблицю у певному порядку. Порядковий номер символу є кодом цього символу. Всього в таблиці 256 символів (порядкові номери від 0 до 255). Значення символьного типу записується у вигляді символу, взятого в одинарні лапки (апострофи). Для того, щоб представити сам апостроф, його потрібно повторити два рази.

 Приклади:

 ' А '

' Ь '

' 7 '

' ; '

' '' ' – так може бути представлений сам апостроф

 Коди великих та малих літер — різні. Оскільки символи мають порядкові номери (коди), то до них можна застосовувати лише операції порівняння одного з іншим. Наприклад, латинські літери розташовано в таблиці кодів в алфавітному порядку, тобто символ ' А ' має мінімальний код, a ' Z ' — максимальний (в ланцюжку великих латинських літер). Тому можна записати:

 'А' < ' F '

'Y' > 'C'

'E' < > 'G'

4) BOOLEAN (булевий або логічний тип). Величини цього типу приймають одне з двох значень: TRUE (істина) чи FALSE (хибність). Слова TRUE і FALSE є булеві константи. До булевих операндів можна застосовувати такі операції: AND (логічне І), OR (логічне АБО), NOT (логічне НЕ). Якщо А, В, С — булеві змінні, то мовою Паскаль булевими виразами будуть, наприклад:

 A and В

В and (C or A) and A

 Результатом операції AND буде істина (TRUE) тільки у тому випадку, коли обидва операнди мають значення TRUE, інакше результатом буде хибність (FALSE). Результатом операції OR буде Істина (TRUE), якщо хоча б один із операндів мас значення TRUE (АБО один, АБО інший, АБО разом), інакше результатом буде хибність (FALSE). Результатом операції NOT (HE) завжди є протилежна величина (якщо А є TRUE, то NOT А є FALSE). Якщо вираз не має дужок, порядок виконання операцій такий: спочатку NOT, потім AND і, наприкінці, OR. Крім булевих операцій, булеві значення мають операції відношення: =, <>, >, <, > = , <=

 Наприклад:

 3.2<5.1 є TRUE

7=8 є FALSE

'D' > 'A' є TRUE 

Стандартні функції. Вирази.

Стандартні функції

Більшість інших операцій по обробці величин виконують стандартні функції. Функція має ім'я (ідентифікатор), за яким вказано один чи більше аргументів. При зверненні до функції викликається готова вбудована в транслятор програма обробки, якій, в якості вхідних величин, передаються аргументи функції. Результат повертається в головну програму через ім'я функції.

Ось список основних функцій:

abs(x) — абсолютна величина (модуль) х. Аргумент х — цілий або дійсний. Результат — відповідно цілий або дійсний.

sqr(x) — число в квадраті. Аргумент х — цілий або дійсний. Результат — відповідно цілий або дійсний.

sqrt(x) - обчислення кореня квадратного. Аргумент і результат – дійсні; х>=0

trunc(x) — відкидає дробову частину х. Аргумент — дійсний, результат — цілий.

Якщо y := trunc (3.5) то значення змінної y буде дорівнювати 3.

round(x) — округлення х до найближчого цілого. Аргумент — дійсний, результат — цілий.

Якщо y := round (3.5) то значення змінної y буде дорівнювати 4 .

pred(x) — якщо х — ціле, дає попереднє ціле число, якщо х — символ, дає попередній символ, якщо х — нижня границя діапазону, то результат не визначено; х не повинний бути REAL.

Якщо y := pred (3) то значення змінної y буде дорівнювати 2 .

succ(x) — аналогічно дає наступне значення; якщо х — верхня межа, результат не визначено; х не повинний бути REAL.

Якщо y := succ (3) то значення змінної y буде дорівнювати 4 .

sin(x) - x — в радіанах, результат — дійсне число.

cos(x) - x — в радіанах, результат — дійсне число.

arctan(x) - х — дійсне, результат — значення в радіанах.

ln(х) - натуральний логарифм, х>0 , х і результат — дійсні.

ехр(х) — e в степені х. Експонента х — дійсне.

Для піднесення х до будь-якого степеня у (х ^ у) можна користуватися формулою:

x ^ у = ехр(у * ln(х))

ord(x) — дає код символьної величини х.

Приклад:

ord(‘B') = 66

chr(x) - дає символ, код якого дорівнює цілому х.

Приклад:

chr(66)=B

Вирази

Вирази складаються з операцій, припустимих для величин, що використовуються. Послідовність виконання операцій така:

1) операції в круглих дужках;

2) функції;

3) not;

4) *, /, div, mod, and (операції типу множення);

5) +, -, or (операції типу додавання);

6) =, > , <, <=, >= (операції типу відношення).

Правила використання виразів:

  1. Вираз записується в один рядок.

  2. У виразах використовуються тільки круглі дужки, причому кіль­кість дужок, що відкриваються, повинна відповідати кількості дужок, що закриваються.

  3. Не можна записувати підряд два знаки арифметичних операцій.

Операції одного старшинства виконуються послідовно зліва направо. Згідно з цим, вираз (a=b) or (c=d) не еквівалентний a=b or c=d.

Тому, слід дуже уважно стежити за старшинством операцій і необхідним порядком їх виконання. Особливість полягає в тому, що всі вирази записуються одним рядком. Таким чином, складні дроби потрібно записувати так: спочатку обчислюється чисельник (взятий в дужки), потім — знаменник (також взятий в дужки) і, нарешті, сам дріб (записаний за допомогою косої риски, що означає ділення).

Коментарі

_displayNameOrEmail_ - _time_ - Видалити

_text_