Урок №23

Тема уроку: Знайомство з мовою програмування Pascal. Структура програми на мові Pascal. Алфавіт мови. Інтерфейс середовища. Поняття змінної. Типи даних.


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. Назви всіх команд бажано записувати малими літерами, а змінні - великими.
  3. Стандартні типи даних
Програма оперує різними елементами даних. Кожен елемент може бути визначеного типу. Цей тип задає як множину значень, що може приймати елемент, так і операції, які можуть бути з ним виконані.
 Зараз ми розглянемо лише чотири стандартних типи даних:
 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, div, mod і деяких інших, про що ми скажемо в розділі 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 (її значенням є число, близьке до числа p ) й одномісні функції 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="" o:p="" true="">
7=8 є FALSE
'D' > 'A' є TRUE

Немає коментарів:

Дописати коментар