Тема 2. Основні поняття мови Паскаль. Стандартні типи даних.  Оператори воду-виводу

Лекція 4

 

Загальні відомості про мову Паскаль. Алфавіт мови

Мова програмування Паскаль була створена швейцарським вченим Ніклаусом Віртом в 1968 році. Названа звана на честь видатного французького математика і філософа Блеза Паскаля (1623—1662). Паскаль  розрахований на користувачів, які б могли вирішити свої задачі (мова придатна для створення великих прикладних систем). Для IBM PC машин створено фірмою Borland (США), в 1985 році створено середовище програмування Turbo Pascal.

Мова програмування — це один з способів подачі алгоритму, що розрахований на виконавця комп’ютер. Будь-яка мова програмування характеризується трьома основними складовими: алфавіт, синтаксис і семантика. Сукупність символів, які дозволяється використовувати при побудові опису програм мовою програмування, називають алфавітом цієї мови. Сукупність правил (опису) побудови вказівок алгоритмів деякою мовою програмування називають синтаксисом мови програмування. Правила семантики пояснюють, яке смислове значення має кожний опис і які дії повинен виконати комп’ютер під час виконання кожної команди. У будь-якій мові програмування можна виділити чотири типи елементів, що використовуються під час побудови описів програм: символи, слова, вирази, команди (оператори).

Символи мови — це основні нероздільні знаки, за допомогою яких описуються програми і дані.

Слова мови — структури, що утворені із символів алфавіту мови програмування і мають певний зміст. Слова — це імена змінних та констант, числа, службові слова та ін.

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

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

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

 

 

Алфавіт і словник мови

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

У якості літер використовують великі та малі літери латинського алфавіту:

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 i _(знак підкреслення)

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

У якості десяткових цифр: 1 2 3 4 5 6 7 8 9 0. Шістнадцяткові цифри будуються з десяткових цифр і літер від А до F (або від a до f).

Під час написання програм застосовуються спеціальні символи:

+ плюс

* зірочка (знак множення)

= дорівнює

< менше

$ знак грошової одиниці

() круглі дужки

. крапка

: двокрапка

« апостроф

@ комерційне а

- мінус

/ знак ділення

> більше

# номер

[ ] квадратні дужки

{} фігурні дужки

, кома

; крапка з комою

^тильда

пробіл.

Комбінації спеціальних символів можуть утворювати складені символи:

:= присвоювання

.. діапазон значень

(..) альтернатива [ ]

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

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

(* *) альтернатива {}

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

Неподільні послідовності символів утворюють слова, що несуть певний зміст у програмі. Слова відділяються розділовими символами, у якості яких може використовуватись пробіл, кома, символ кінця рядка, коментар. Слова поділяються на: стандартні, зарезервовані, ідентифікатори користувача.

Зарезервовані слова є складовою частиною мови, мають фіксоване написання і назавжди визначений зміст. Наприклад: begin, else, function, goto, end, program і т.д.

Стандартні слова призначені для заздалегідь визначених розробником мови типів даних, констант, процедур і функцій (наприклад, sin, cos, Pi). Зарезервований ідентифікатор можна перевизначити, але це може призвести до помилки, тому краще цього не робити.

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

1) Ідентифікатор починається тільки з літери або знака підкреслення.

2) Ідентифікатор може складатися з літер, цифр і знака підкреслення.

3) Між двома ідентифікаторами має бути хоча б один розділовий знак.

4) Максимальна довжина ідентифікатора 127 символів, але значущимиє тільки 63 символи.

Під час написання можна використовувати як великі, так і малі літери. Компілятор не визначає різниці між ними.

Правила оформлення програм (пунктуації):

1) Крапка з комою не ставиться після begin і перед end, тому що ціслова є операторними дужками, а не операторами.

2) Крапка з комою розділяє оператори. її відсутність між операторамивикликає помилку компіляції. Наявність між операторами декількох крапок з комою не є помилкою, тому що компілятор сприймає їх як ознаку наявності порожніх операторів.

3) При використанні вкладених структур може виникнути ситуація:

end;

end;

end

Крапку з комою можна ставити як після кожного, так і після останнього end. А наприкінці програми крапка з комою взагалі не ставиться.

4) В операторах циклу крапка з комою не ставиться після while, repeat, do і перед until.

5) В умовних операторах крапка з комою не ставиться після then і перед else.

 

Структура програми. Класифікація операцій та даних.

Програма на мові PASCAL складається з трьох частин: заголовка, описової частини і виконавчої частини.

Заголовок містить службове слово program, ім'я програми і список імен стандартних файлів, що здійснюють логічний зв'язок з пристроями введення і виведення.

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

Директиви ( не обов’язкові ) { $... }.

Uses – специфікація (uses CRT).

Label – оголошення міток. Мітки у програмі позначають оператори, на які повинне передаватися виконання згідно з алгоритмом, якщо потрібно здійснити обхід деякого фрагменту. Мітки використовуються з оператором goto. Використання міток не бажане.

Const – оголошення констант. Константи – величини, значення яких встановлені в описовій частині програми і в процесі виконання програми не змінюються.

CONST < ідентифікатор > = < значення константи>;

Type – оголошення типів. Тип – повна сукупність елементів деякої природи, що володіють спільними для них властивостями.

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

TYPE  <ідентифікатор> = <опис типу>;

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

VAR <ідентифікатори> : <ім’я типу>;

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

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

ПРОЦЕДУРА.

PROCEDURE <імя> ( <список формальних параметрів> );

<оголошення>

<тіло>

ФУНКЦІЯ.

FUNCTION <імя> (<спиток формальних пораметрів>);<тип результату>;

<оголошення>

<тіло>

На цьому завершується розділ оголошень.

Виконавча частина програми починається службовим словом begin (початок) і закінчується ключовим словом end (кінець), за яким стоїть крапка. Між begin і end записується основний текст програми, що складається з інструкцій (операторів), розділених крапкою з комою ";". Структура beginend називається операторними дужками. Для зручності запису програми її розбивають на рядки. Рядок можна починати з декількох пропусків, що дозволяє полегшити читання програми.

Найпростіша програма на мові PASCAL схематично може бути зображена в такий спосіб:

program <ім'я програми>(<зв'язок з оточенням>); <- заголовок

var <список імен змінних>:<тип>; <- описова частина

begin

{текст програми, що виконується}

end.

 

Основні стандартні типи даних. Операції над стандартними типами даних. Стандартні функції

Мову програмування Turbo Pascal відносять до строго типізованих мов. Це означає, що всі елементи програми повинні бути оголошені явним чином. Явне оголошення типу визначає діапазон допустимих значень та допустимими операціями. Компілятор мови здійснює перевірку типів у всіх типів даних.

Мова програмування має розгалужену систему типів. Частина з них є скалярними, інші є структурними або складеними.

Скалярні / прості / стандартні типи даних:

1)    Цілі або цілочисельні типи

В Pascal є 5 типів цілих чисел. Поділ на ці типи пов’язаний із діапазоном допустимих значень і розміром комірок пам’яті.

Тип

Діапазон

розмір в байтах

Byte

0..255

1

Shoting

-128..127

1

Integer

-32768..32767

2

Word

0..65535

2

longint

-2147483648..2147483647

4

 

Над цілими числами виконуються 4 арифметичних операції, які підпорядковані залежності:

ціле + ціле = ціле                         ціле * ціле = ціле

ціле – ціле = ціле                         ціле / ціле = дійсне

Також використовуються 2 операції цілочисельного ділення:

Div (ціла частина), mod (залишок від ділення) – результат цілий.

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

2)    Дійсні типи

B Pascal є 5 типів дійсних чисел. Поділ на ці типи визначається розміром у пам’яті, а отже, діапазоном допустимих значень.

 

Тип

Діапазон

розмір в байтах

Real

2.9*Е-39..1.7*Е38

11

Single

1.5*Е-45..3.4*Е38

7

Double

5.0*Е-324..1.7*Е308

15

Extended

3.4*Е-4932..1.1*Е4932

19

Сomp

-2*Е63..2*Е63-1

19

 

 Над дійсними числами використовують +, -, *, /, операції порівняння. Результат – завжди дійсне число.

У програмі дійсні числа можуть задаватися у двох формах: з фіксованою десятковою крапкою та з плаваючою

У випадку фіксованої крапки запис числа має чотири частини.

[знак] ціле. ціле.

Плаваюча крапка.

[знак] мантиса*Е [знак] порядок.

Мантиса є фактично записом числа з фіксованою крапкою без знака. Положення десяткової крапки визначається порядком в записі числа.

По замовчуванню мантиса числа вибирається в межах 1<=мантиса <10.

3)    Логічні типи

BOOLEAN (булевий тип).

Цей тип має всього два значення:

FALSE (хибна), TRUE (істина).

В пам’яті логічний тип займає 1 байт.

False<True.

Над логічними величинами можна виконувати логічні операції.

NOT(not(a=3) -> a<>3),

AND((a>3)and(a<5)  ->  3<a<5),

OR((a=3)or(a=5)  -> a=3,a=5).

 

X

y

 or  

 and

 xor

True

True

True

True

False

False

False

False

False

False

True

False

True

False

True

False

True

True

False

True

4)    Символьний тип CHAR.

Pascal використовує всі символи стандарту ASCII (American Standard Code for Information Interchange). Всього є 256 символів, що кодуються байтовими значеннями від 0 до 255. Перші 128 символів, що відповідають від 0 до 127 є так званою основною частиною таблиці ASCII. Вона містить 32 командних символи від 0 до 31. Ці символи не мають зображення і використовуються для передачі команд в системі ЕОМ. Вони вводяться за допомогою комбінацій клавіш. Входять: 52 англійські букви, 10 арабських цифр і 34 символи розділових знаків.

Останні 128 символи утворюють альтернативну частину таблиці, яка містить символи національних алфавітів та псевдографіки. Символи в Pascal можуть записуватися або явно, за допомогою пари апострофів (‘a’, ‘G’), або через його код (#64 (A)). Код символа може задаватися в 10-вій і в 16-вій формах.

Над символами можуть виконуватися операції порівняння. Символ вважається більшим за інший, якщо його код більший.

Над символьними типами виконуються операції приведення символів, що дозволяють по коду визначити символ, або навпаки.

CHR (<код>) – визначення символа за кодом;

ORD (<символ>) – визначення коду символа.

5)    Скалярні типи користувача:

а) Перелічувальний тип.

б) Інтервальний тип.

Із шести розглянутих скалярних типів п’ять мають такі спільні властивості:

·         Кількість елементів типу є фіксована і визначена наперед.

·         Всі значення впорядковані за зростанням.

·         За їх природою між двома сусідніми немає жодного проміжного.

Ці властивості характеризують так звані порядкові або дискретні типи – цілі числа, символи, логічні (булеві) величини, перелічувальні, інтервальні типи.

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

·         Інкрементація.

·         Декрементація.

Операція 1 позначається INC. Реалізується стандартною функцією inc і збільшує значення аргументу на 1 одиницю відповідного типу.

Операція 2 – DEC. Реалізується стандартною функцією dec і зменшує значення аргументу на 1 одиницю відповідного типу.

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

 

Арифметичні функції

 

Функція

Призначення

Тип

1

ABS(X)

|X|

Integer, real

2

ARCTAN(X)

Arctg x

Real

3

COS(X)

Cos x

Real

4

EXP(X)

ex

Real

5

LN(X)

Ln x

Real

6

RANDOM(X)

Випадкове число в діапазоні [0;X]

Integer, real

6

SIN(X)

Sin x

Real

7

SQR(X)

X2

Integer, real

7

SQRT(X)

Real

8

EXP(Y*LN(X))

Xy, Х>0

Real

 

Програмування операцій вводу-виводу у мові Паскаль

В мові програмування Turbo Pascal ввід-вивід здійснюється насправді не операторами, а стандартними підпрограмами — процедурами вводу-виводу, якщо вважати виклик підпрограми як оператор виклику підпрограми, то в цьому розумінні можна вважати відповідні процедури операторами. Під пристроєм вводу-виводу розуміється сукупність наступних компонентів ЕОМ: клавіатура, монітор, порти для під єднання цих пристроїв.

а) Оператор вводу. Pascal має дві процедури вводу: READ, READLN. Оператор вводу read здійснює читання даних із буфера обміну пристрою вводу-виводу без переведення біжучого провідника на новий рядок. Процедура readln здійснює читання із переведенням біжучого вказівника на початок нового рядка.

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

При введені даних з клавіатури кількість, порядок та їх тип повинні відповідати кількості, порядку та типу змінних.

Дані відокремлюються хоча б одним пропуском.

б) Оператор виводу. Pascal має дві процедури виводу: WRITE, WRITELN. Процедура write здійснює запис в буфер обміну пристрою вводу-виводу без переведення курсору на новий рядок. Writeln здійснює запис із переведенням курсоруна початок нового рядка.

Для процедур запису в якості параметрів можуть використовуватися ідентифікатори змінних, ідентифікатори констант, вирази.

Дані виводяться послідовно один за одним. Для їх відокремлення можна користуватися або форматним виводом, або використати додаткові параметри виводу, що є послідовністю декількох пропусків.

Форматний вивід застосовується до даних стандартних типів і означає відведення для змінної відповідної кількості позицій.

Для цілих типів через двокрапку після ідентифікатора вказується число позицій при цьому відбувається розміщення результату справа.

Для дійсних чисел задається два числа через двокрапку: перше – загальна кількість позицій, друге – кількість позицій в дробовій частині. Якщо друге не менше першого – це не помилка. Вивід буде здійснюватися при мінімальній кількості позицій.

 

 

Керуючі структури мови Паскаль. Послідовне виконання. Складений оператор

 

Розділ команд містить команди, призначенні  для перетворення данних.

Правила написання команд:

- команди записують одна під одною, роблячи пропуски між словами та відступи від лівого краю для наочності;

- команди відокремлюються символами «;»;

- короткі  команди можна розміщувати в одному рядку;

- одну довгу команду можна записувати в одному рядку, не розриваючи слів;

-  програма закінчується символом (.) — крапка.

Вирази та операції. Вираз – це форма запису, що вказує, які потрібно взяти операнди і які виконати над ними операції, щоб обчислити значення виразу. Як операнди у виразі можуть використовуватися сталі, змінні і функції (наведені у додатку) різних типів, для яких дозволені певні операції. Вирази обчислюються зліва направо за пріоритетом операцій і врахуванням дужок. Серед операцій встановлено такий пріоритет:

·         унарні                                    +, -, not, @;

·         мультиплікативні                *,  /, div, mod, and;

·         адитивні                               +, -, or, xor;

·         відношення                          =, <>, <, >, <=, >=, in.

Команда присвоєння. Призначена для надання  значення змінній. Цю  дію позначають двома символами  «:=». Загальний вигляд команди присвоєння:

«ім’я змінної» := «вираз»

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

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

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

Лінійна структура передбачає послідовність виконання операторів, так щоб кожний з них виконувався рівно один раз.

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

·         складені;

·         умовні;

·         повтору.

Складений оператор – це набір будь-яких операторів, узятих в операторні дужки beginend. Цей набір операторів розглядається як одно ціле.

 

Контрольні запитання:

1. Історія створення мови Паскаль.

2. Алфавіт мови Паскаль.

3. Що таке ідентифікатор.

4. Структура програми на мові Паскаль.

5. Стандартні типи мови Паскаль.

6. Форми задання дійсних чисел.

7. Операції вводу-виводу.

8. Що таке складений оператор.