Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції на ОП та алг. мови.doc
Скачиваний:
13
Добавлен:
03.11.2018
Размер:
785.92 Кб
Скачать

Алфавіт мови

Текст програми мовою Turbo Pascal повинний міститися в дисковому файлі стандартної для MS-DOS структури. Цей файл може бути сформований будь-яким доступним текстовим редактором (зокрема, убудованим редактором системи Turbo Pascal).

Текст Pascal-програми являє собою послідовність рядків, що складаються із символів, які утворюють алфавіт мови. Рядки програми завершуються спеціальними керуючими символами, що не входять в алфавіт. Максимальна довжина рядка складає 126 символів.

Алфавіт мови складається з наступних символів:

Заголовні і рядкові латинські букви і символ ’підчеркування’:

A,B,C...,X,Y,Z,a,b,c,...,x,y,z,

Зверніть увагу, що в мові Turbo Pascal символ 'підчеркування' вважається буквою.

Букви використовуються для формування ідентифікаторів і службових слів.

Десять арабських цифр від 0 до 9:

0,1,2,3,4,5,6,7,8,9

Цифри використовуються для запису чисел і ідентифікаторів.

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

+ - * / = > < . , ; :

@ ' ( ) [ ] { } # $ ^

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

Службові (зарезервовані) слова.

Це обмежена група слів, побудованих з букв. Кожне службове слово являє собою неподільне утворення, зміст якого фіксований у мові. Службові слова НЕ МОЖНА використовувати як імена, що вводяться програмістом (тобто як ідентифікатори змінних, констант і т.д.).

Усі 55 службових слів мови представлені нижче.

absolute

array

and

asm

assembler

not

begin

object

case

of

const

or

constructor

packed

destructor

private

div

procedure

do

program

downto

record

else

repeat

end

set

external

shl

file

shr

for

string

forward

then

function

to

goto

type

if

unit

implementation

until

in

uses

inline

var

interface

virtual

interrupt

while

label

with

mod

xor

nil

Помітимо, що синтаксис мови Turbo Pascal насправді допускає використання деяких службових слів як ідентифікаторів (до числа таких слів відносяться assembler, external, forward, interrupt, private, virtual). Строго говорячи, ці слова називаються в мові директивами. Однак з метою більшої ясності програм використання директив як ідентифікатори не рекомендується.

Структура програми мови Turbo Pascal

Приведемо найпростіший приклад програми, єдина мета якої – вивести на екран яке-небудь вітання:

program Hello;

begin

writeln('Hello, world!');

readln;

end.

Перший рядок нічого не робить, він просто містить назву програми. Потім, після слова begin починаються власне дії. У нашій програмі їх дві: перша – це виведення рядка «Hello, world» на екран, а друга – чекання натискання клавіші «Enter», воно потрібно для того, щоб можна було побачити результат програми, а потім уже натиснути «Enter» і повернутися в Турбо-Паскаль. І, нарешті, слово end із крапкою в останньому рядку говорить про те, що програма закінчилася. Дії, з яких складається програма, називаються операторами, вони відокремлюються один від одного крапкою з комою.

А тепер приведемо приклад, у якому програма вже не «глуха», тобто може запитувати які-небудь дані в користувача. Нехай потрібно запитати в користувача два числа, після цього вивести на екран їхній добуток:

program AxB;

var a,b: integer;

begin

writeln('Уведіть a і b');

readln(a,b);

writeln('Добуток дорівнює ',a*b);

readln;

end;

У цій програмі перед словом begin з'являється новий рядок, що починається словом var. У ній ми вказуємо, що програмі знадобиться дві змінні (a і b), у яких можна зберігати цілі числа (слово integer).

Про те, що робить перший оператор, нам відомо: він виводить на екран рядок 'Уведіть a і b'. При виконанні другого оператора програма буде чекати, поки користувач не введе числа з клавіатури і не натисне «Enter»; одне число програма запише в змінну a, потім те ж саме робиться для змінної b. Третім оператором виводимо на екран спочатку напис «Добуток дорівнює », а потім значення виразу a*b («*» ( знак множення). Четвертий оператор пояснень не вимагає.

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

РОЗДІЛ ОГОЛОШЕНЬ І УГОД

PROGRAM Заголовок програми;

($ ... ) Глобальні директиви компілятора;

USES бібліотеки (модулі), що підключаються;

LABEL Підрозділ оголошення глобальних міток;

CONST Підрозділ оголошення глобальних констант;

type Підрозділ оголошення глобальних типів;

VAR Підрозділ оголошення глобальних змінних;

РОЗДІЛ ТЕКСТІВ ПРОЦЕДУР І ФУНКЦІЙ

PROCEDURE

(function) Заголовок процедури (функції);

LABEL Підрозділ оголошення локальних міток;

CONST Підрозділ оголошення локальних констант;

type Підрозділ оголошення локальних типів;

VAR Підрозділ оголошення локальних змінних;

begin Основний блок або процедури функції;

END;

РОЗДІЛ ОСНОВНОГО БЛОКУ ПРОГРАМИ

BEGIN Основний блок програми;

END.

Розглянемо найбільш важливі частини вищеописаних блоків. Під заголовком програми розуміється ім'я, що допомагає визначити її призначення. Ім'я, чи ідентифікатор, будується за наступними правилами: воно може починатися з великої чи малої букви латинського алфавіту або знака «_», далі можуть стояти букви, цифри чи знак «_»; усередині ідентифікатора не може стояти пробіл. Після імені програми варто поставити «;», цей знак служить у Паскалі для поділу послідовних інструкцій. Помітимо, що ім'я програми може не збігатися з ім'ям відповідного файлу на диску.

Глобальні директиви компілятора

У цьому розділі програми компілятору можна дати вказівки, що визначають режими його роботи при трансляції програми. Ці вказівки оформляються в тексті програми як коментарі, що починаються парою символів ({$) і закінчуються символом (}). Такі вказівки можуть містити "замовлення" на включення в текст програми фрагментів інших програм (з відповідних файлів), інформацію чи відомості про необхідності використання арифметичного сопроцесора.

Оператор USES

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

Опис міток

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

Після слова const містяться описи сталих, котрі будуть використані в програмі, наприклад:

const Zero = 0;

pi = 3.1415926;

my_const = -1.5;

Hello = 'Привіт !';

Визначення типів

Визначення типів призначене для завдання конкретних множин значень. Зазначені множини позначаються іменами (ідентифікаторами) і надалі можуть служити для опису змінних.

Оголошення глобальних змінних

За словом var розташовують оголошення змінних, котрі знадобляться нам при написанні програми. Змінні Паскаля можуть зберігати дані різної природи: числа, рядки тексту, окремі символи і т.п. Нижче приводиться частина типів змінних, котрі можна застосовувати.

Назва типу

Можливі значення

Приклади значень

integer

цілі: -32768 ... 32767

12, -10000

real

дійсні (по модулі): 2,9x10-39... 1,7x1038

-9.81, 6.02e-23

string[n]

рядок до n символів довжиною, якщо [n] не зазначено, то до 255

‘abcde’, ‘привіт’

char

одиночний символ

‘F’, ‘!’, ’_’,’ю'

Оголошення змінних записуються в наступній формі:

var <змінна> : <тип>;

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

Приклади оголошення:

var Number: integer;

d,l: real;

Name: string[20];

Line: string;

Key1,Key2: char;

Опис процедури або функції

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

Блок основної програми.

Тут, між словами begin і end. розташовуються команди (точніше, оператори), що будуть виконуватися один за іншим при запуску програми. Розглянемо найпростіші типи операторів на наступному прикладі:

program First;

const a2 = 3;

a1 = -2;

a0 = 5;

var x,f: real;

begin

write('Введіть значення х ');

readln(x);

f := a2*x*x+a1*x+a0;

writeln(‘Значення квадратного тричлена: ’,f);

end.

Перший рядок програми виводить на екран напис «Введіть значення х », для цього використовується процедура write написана розроблювачами Турбо Паскаля, тобто набір команд, невидимий для нас, але існуючий реально в надрах системи Турбо Паскаль. Як параметр цієї процедури використовується наш рядок. Параметри завжди записуються в круглих дужках, апострофи означають, що параметр має рядковий тип. Отже, у першому рядку ми бачимо так називаний оператор виклику процедури. Кожен оператор відокремлюється від наступного символом «;». В другому рядку викликається процедура введення readln(x), яка чекає, поки користувач набере значення x із клавіатури і натисне клавішу «Enter», а потім переводить курсор на наступну рядок (ln ( Line ( рядок). У третьому рядку обчислюється значення тричлена і записується в змінну f; цей оператор називається оператором присвоювання, і позначається символом ":=". В останньому рядку на екран виводиться рядок «Значення квадратного тричлена: » і значення змінної f. Нескладно помітити, що тут процедурі writeln передається вже не один, а два параметри, причому вони можуть мати різні типи. Узагалі, процедури введення і виведення (тобто write, writeln, read, readln) можуть мати будь-яке число параметрів різних типів, параметрами можуть бути змінні, числа, рядки, а також вирази. Використовуючи вираз при виведенні, можна замінити два останні рядки нашої програми одним:

writeln('Значення квадратного тричлена: ', a2*x*x+a1*x+a0);

В арифметичних виразах на Паскале використовуються наступні знаки для позначення операцій: +, -, *, /. Для визначення порядку дій використовуються круглі дужки відповідно до загальновизнаних математичних правил.

Зауваження про імена. Для позначення змінних забороняється використання ряду слів, називаних зарезервованими, вони грають у мові особливу роль. Нам уже зустрічався ряд зарезервованих слів: program, begin, end, string, const, var, і т.п.