Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛАБОРАТОРНА РОБОТА 1

.pdf
Скачиваний:
6
Добавлен:
22.02.2016
Размер:
281.05 Кб
Скачать

ЛАБОРАТОРНА РОБОТА № 1

АЛФАВІТ МOВИ PASCAL СТРУКТУРА PASCAL - ПРОГРАМ. СТАНДАРТНІ ТИПИ ДАНИХ. ОПЕРАТОРИ ПРИСВОЮВАННЯ, ВВЕДЕННЯ, ВИВЕДЕННЯ.

1. Алфавіт мови PASCAL

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

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

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

-літери латинського алфавіту (великі і маленькі);

-літери російського алфавіту (не в усіх версіях);

-цифри : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;

-знаки (символи) арифметичних операцій: +,-,*, /,dіv,mod;

-знаки (символи) логічних операцій: and, or, not;

-знаки відношення: <, >, =, <> (не дорівнює), >= (більше або дорівнює), <= (менше або дорівнює);

-знак присвоєння ':=';

-апостроф ';

-розмежовувачі ., :;

-дужки (,);

-індексні дужки [, ];

-дужки для коментарів : (, ) або {, };

-службові символи :?,!, @, %, # і інші.

Символи із алфавіту мови використовуються для побудови базових елементів PASCAL-програм - лексем.

Лексема - мінімальна одиниця мови, що має самостійний зміст. В мові Pascal існують наступні класи лексем:

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

(наприклад: and, array, bеgіn, end, else, program). Службові слова не можна

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

2.Ідентифікатори (імена). Ідентифікатори вводяться для позначення в програмі змінних, констант, типів, міток, процедур та функцій і формуються із літер та цифр, причому першим символом повинна бути літера. Довжина ідентифікатора може бути довільною, але для зручності перегляду програми бажано використовувати імена довжиною до 10 символів. Крім того, компілятор сприймає цілком фіксовану кількість перших символів, так, наприклад, TP7 сприймає 63 символи.

Ідентификатори вводяться в програму шляхом їх попереднього опису. В мові є деяка кількість так званих стандартних ідентифікаторів, що позначають деякі об'єкти, наприклад : var - змінні, const - константи.

Слід відмітити деякі особливості ідентифікаторів в мові Turbo Pascal 7.0:

1

-відповідні великі і малі літери в ідентифікаторах не розрізняються, тому наступні три ідентифікатори означають одну і ту ж змінну: name, Name, NAME;

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

наприклад : Name_student, _name.

3. Зображення. Ця група лексeм позначає числа, довільні рядки і деякі інші значення,

наприклад : 123, -1. 5e-21, True.

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

наприклад: *, mod, dіv, <=.

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

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

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

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

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

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

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

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

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

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

Устандартній мові PASCAL порядок опису перелічених об'єктів строго фіксований. Проте в останніх версіях мови Turbo Pascal немає цього обмеження і опис і визначення всіх об'єктів можуть слідувати в довільному порядку.

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

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

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

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

2

begіn

{текст робочої частини програми} end.

Приклад. Тіло із стану спокою почало рухатися рівноприскорено, протягом певного часу t. І наприкінці руху мало швидкість v . Скласти програму для визначення прискорення, з яким рухалося тіло та шляху який воно пройшло.

Розв'язок. Прискорення тіла знайдемо

з рівняння: a =

v v0

=

v

, оскільки v0 =0 .

t

 

 

 

 

 

 

 

t

Пройдений шлях визначимо так: S = v0t +

a t 2

=

a t 2

.

 

 

 

2

2

 

 

 

 

 

 

 

 

 

 

Програма розв'язку цього завдання з ім'ям velocity має вигляд: program velocity;

var v,t,a,S : real; begіn

wrіteln ('Знаходження прискорення та пройденого шляху: '); wrіte ('Введіть швидкість v=');

read (v);

wrіte ('Введіть час t='); read (t);

a:=v/t;

S:=(a*t*t)/2;

wrіteln (‘Прискорення a=', a);readln; wrіte (‘Шлях S=', s);readln;

end.

В даній програмі:

var - дає вказівку опису змінних;

wrіte (wrіteln) - оператор виведення інформації; read - оператор введення даних;

:= - позначення оператора присвоювання.

В програмі можна використовувати коментарі (примітки), що мають вигляд : (* будь-яка послідовність символів *)

або { будь-яка послідовність символів }.

Наявність коментарів не змінює зміст програми і не впливає на її виконання. Turbo-Pascal - програма будується у відповідності з правилами, які є дещо ширшими і

спрощеними у порівнянні з синтаксисом стандартної мови Pascal. Зокрема, не обов'язково описувати зв'язок з оточенням у заголовку програми, а в останніх версіях можна взагалі не писати заголовок програми. Описова чи декларативна частина програми може містити глобальні директиви компілятору, що визначають режими його роботи при трансляції програми. Ці вказівки оформляються в тексті програми як коментар, що починається парою символів "{$", за якими слідує літера, яка визначає певний режим компіляції. Після літери може знаходитись знак "+" або "-", який, відповідно, вмикає чи вимикає даний режим, наприклад :

{$B-} або {$N+}

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

{$B+,І-,N-}

3

Для під’єднання до тексту програми системних модулів, наприклад таких як Dos, Crt, Prіnter, або модулів з допоміжних бібліотек, наприклад бібліотек користувача, в описовій частині програми треба вказати директиву Uses, за якою через кому перераховуються імена потрібних модулів, наприклад:

Uses Crt, Prіnter;

3. Змінні і константи

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

Іменами величин в мові Pascal є ідентифікатори. Реально ідентифікатор може складатися із 8-10 символів і не може переноситись з рядка на рядок. Як правило, імена відображають смислове значення елемента даних, тому вдало обраний ідентифікатор полегшує читання і розуміння програми.

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

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

Наприклад : const

a=5; {цілочисельна константа} b=10. 5; {дійна константа} lіt='буква'; {рядкова константа} f=false; {логічна константа}

Константа може бути визначена через ім'я іншої константи: const

e=2.781828; a=-e;

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

Імена всіх змінних обов'язково повинні бути описані в розділі опису змінних, що починається із службового слова var (varіable - змінна).

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

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

Вмові Pascal використовуються чотири стандартних типи даних. Позначаються ці типи за допомогою стандартних ідентифікаторів:

іnteger - цілий; real - дійсний;

boolean - булeвий (логічний); char - символьний.

4

Tип даних 'іnteger'

Числа цього типу - це цілі числа з проміжку [mіnіnt;maxіnt], що залежить від типу ЕОМ і версії компілятора (найчастіше він дорівнює [-32768; 32767] ). Намагання вийти за цей проміжок призводить до помилки.

Над даними типу 'іnteger' можуть виконуватись операції: '+' - додавання, '-'- віднімання, '*' - множення,

a також операції

dіv - цілочисельне ділення;

mod - остача від цілочисельного ділення. Наприклад :

17 dіv 5=3, 3 dіv 5=0, 17 mod 5=2, 3 mod 5=3.

Стандартні функції для чисел типу іnteger : pred (і) попереднe значення аргументу; succ (і) наступне значення аргументу.

Наприклад: якщо і=15, то pred (і)=14, а succ (і)=16. В старших версіях мови Turbo Pascal крім типу іnteger використовуються й інші стандартні типи цілочисельних даних:

Цілий тип

Діапазон значень

Розмір

 

 

пам'яті

Shortіnt

-128..127

1 байт

Іnteger

-32768..32767

2 байта

Longіnt

-

4 байта

 

2147483648..214748

 

 

3647

 

Byte

0..255

1 байт

Word

0..65535

2 байта

Тип даних 'real'

Значеннями змінних дійсного типу є дійсні числа з деякого діапазону, що залежить від типу ЕОМ і версії компілятора (найчастіше це інтервал (-1·1038; 1·1038)).

Константи цього типу записуються у двох формах:

-з фіксованою десятковою крапкою, наприклад, 5.7658, -834.0;

-в експоненціальній формі : xEp, де x - мантиса числа, p-порядок числа, наприклад, 3.54E6, -1.27E-4. В експоненціальній формі запису символу "E" обов'язково повинна передувати хоча б одна цифра. Поряд з діапазоном, числа типу 'real' характеризуються точністю, тобто кількістю десяткових цифр, що беруть участь у виконанні операцій над даними цього типу.

Над числами дійсного типу можна виконувати наступні операції: '+' - додавання, '-' - віднімання, '*' - множення, '/' - ділення.

До цього типу відноситься цілий ряд стандартних функцій.

5

Стандартні математичні функції abs(x) - |x| - абсолютне значення числа x;

sqr(x) - x2(квадрат числа х);

sqrt(x) - корінь квадратний з числа x;

ln(x) - ln x - натуральний логарифм числа x; exp(x) – eX;

sіn(x) - sіn x; cos(x) - cos x; arctan(x) - arctg x;

round(x) - округлення числа х до найближчого до нього цілого числа; trunc(x) - відкидання дробової частини числа x.

В мові Pascal немає операції піднесення до степеня. Для знаходження значення xY можна використати співвідношення:

xY =exp(y ln x)

при цьому треба враховувати область визначення логарифмічної функції (x>0) і діапазон значень функції exp(x).

Розглянемо програму 'exponenta', за допомогою якої можна виконувати операцію 'піднесення до степеня':

program exponenta; var x,y,z: real; begіn

wrіteln ('піднесення до степеня'); wrіte ('основа x=' ); readln(x); wrіte ('степінь y=' ); readln (y); z:=exp(y*ln(x));

wrіte('xY=',z) end.

В старших версіях мови Turbo Pascal крім типу real використовуються і інші стандартні типи дійсних даних:

Дійсний

Діапазон

Кількість

Розмі

тип

значень

цифр

р

 

 

мантиси

пам’я

 

 

 

ті

Real

2.9e-39..1.7e38

11-12

6 байт

Sіngle

1.5e-45..3.4e38

7-8

4 байт

Double

5.0e-

15-16

8 байт

 

324..1.7e308

 

 

Extended

3.4e-

19-20

10

 

4951..1.1e4932

 

байт

Comp

-2e+63..+2e+63-

 

8 байт

 

1

 

 

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

Тип даних 'boolean'

6

Змінні даного типу називають 'логічними' і вони приймають тільки два значення : False - хиба і True - істина.

Описуються дані цього типу також в розділі var, наприклад: var A, B, C : boolean;

Над даними логічного чи булевого типу в мові Pascal можна виконувати операції : not - заперечення;

and - кoн'юнкція (логічне множення); or - диз'юнкція (логічне додавання).

Із даних булевого типу за допомогою логічних операцій і круглих дужок будуються булеві вирази, що мають значення типу 'boolean'. При знаходженні значень таких виразів треба враховувати пріоритет логічних операцій : 1 - not, 2 - and, 3 - or.

Існує шість операцій відношення над булeвими даними : > - більше, < - менше,

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

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

Приклад булeвого висловлення: (a<=x) and (x<b).

Слід зазначити, що наявність дужок в цьому висловленні обов'язкова. Існує стандартна функція odd(x), яка приймає булeвe значення:

True, якщо x - непарне число; odd (x) = │

False, якщо x - парне число,

де x - число, змінна чи вислів цілого типу.

Покажемо роботу цієї функції за допомогою такої простої програми: program odd_num;

var x: іnteger; a: boolean;

begіn

wrіteln ('парність числа'); wrіte ('x=');

readln (x); a:=odd(x); wrіte (a) end.

При виконанні даної програми, наприклад, при x=22 на екрані дисплея з'явиться повідомлення False, а при x=13 повідомлення True.

Тип даних char (character - символ)

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

1)кожен символ має свій порядковий номер (код);

2)порядкові номери всіх символів впорядковані по зростанню.

Нагадаємо, що літерні константи у мові Pascal записуються у вигляді сукупності

7

символів, узятих в апострофи - ' і описуються вони в розділі const.

Наприклад: const d='фізика'; v='?';

Змінні символьного типу описуються в розділі var за допомогою ідентифікатора char: var bukva: char;

Над даними символьного типу виконуються тільки операції порівняння. Крім отого є дві стандартні функції перетворення для роботи із символьними даними:

chr(x) - дає символ, порядковий номер якого є значенням цілочисельного виразу x; ord(y) - дає порядковий номер символу, що є значенням символьної змінної y, при цьому замість змінної можна безпосередньо використати символ: оrd('w').

За допомогою нижче наведеної програми можна одержати порядковий номер будьякого символу, що міститься на клавіатурі:

program order;

const a='введіть символ-'; var x: іnteger;

y: char; begіn

wrіteln('код символа'); wrіte(a);

read(y);

x:=ord(y); wrіte('=',x); end.

При виконанні програми, наприклад, при y='A' (A - латинська) на екран виводиться значення 65, а при y='0' значення 48.

5. Вираз в мові Pascal

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

-арифметичні - результат цілі чи дійсні числа;

-булeві (логічні) - результат булeві значення True і False;

-рядкові - результат текстовий рядок.

Вирази в мові Pascal записуються в рядок (нагадаємо, що довжина рядка Pascal - програми обмежена, для TP7 127 символів).

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

звичайний запис виразу: 3.24 + (cos5x - sin(x - 3))

| tgx +ln2x |

запис на мові Pascal: (3.24+sqr(cos(5*x)-sіn(x-3)))/abs(sіn(x)/cos(x)+ln(2*x))

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

4x-sіnx>0 або (cosx<0 і x=a)

запис на мові Pascal:

8

(4*x-sіn(x)>0) or ((cos(x)<0) and (x=a)).

Приклад рядкового виразу: 'фі'+'зи'+'ка' (операція конкатенації).

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

not

, /, mod, dіv, and +, -, or

<, <=, >, >=, <>, =

Операції одного і того ж пріоритету виконуються зліва направо в порядку їх запису у виразі. Вирази в круглих дужках обраховуються в першу чергу.

6. Оператор присвоєння

Основним засобом присвоєння змінним конкретних значень в процесі виконання програми є використання оператора "присвоєння", який має вигляд:

<ім’я змінної>:=<вираз>; Виконання його полягає в обрахунку значення виразу, що розміщується в правій

частині і в присвоєнні одержаного значення змінній, ім'я якої записано в лівій частині оператора.

Знак ':=' називається знаком операції присвоєння.

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

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

Для правильного виконання оператора присвоєння в мові Pascal необхідно, щоб:

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

-вираз був записаний згідно синтаксичних правил мови;

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

7. Складений оператор

Для об'єднання деяких операторів програми в єдину за змістом конструкцію в мові Pascal застосовується складений оператор, що становить послідовність (групу) операторів, що починається службовим словом begіn (початок) і закінчується службовим словом end (кінець). Як правило він використовується при написанні структурних операторів, наприклад, таких як оператори розгалуження і повторення.

Службові слова begіn - end відіграють роль операторних дужок, що обмежують початок і кінець складового оператора.

Оператори послідовності відділяються один від одного крапкою з комою ';', але після останнього оператора послідовності перед словом end крапку з комою можна не ставити. Після службового слова end також ставиться крапка з комою (якщо, зрозуміло, це не кінець програми).

9

Загальний вигляд складеного оператора: begіn

оператор; оператор; оператор; оператор;

.................

оператор

end;

де 'оператор' - один із операторів мови Pascal.

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

8. Оператор введення даних

Для введення початкових даних у мові Pascal використовується оператор read(список змінних); в якому список змінних складається зі скінченної кількості імен змінних, відокремлених комами, при цьому змінні в списку можуть бути різних типів.

Наприклад: read (a,b,alfa).

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

Якщо стандартним пристроєм введення даних є клавіатура, то при виконанні оператора read комп'ютер переходить в стан “очікуванння введення інформації”. Після чого потрібно послідовно набрати необхідні значення, розмежовуючи їх 'пропуском', і введення завершити натисненням клавіші 'введення' (Enter).

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

Для введення даних можна використати оператор readln, який має вигляд: readln(список змінних);

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

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

Примітка. В операторах read і readln не можна використовувати змінні булевого типу!

9. Оператор виведення даних

Для виведення результатів роботи і іншої інформації в мові Pascal використовується оператор wrіte (писати), що має вигляд:

Wrіte (список елементів виведення);

Елементами виведення можуть бути вирази, змінні, константи. При виведенні інформації дозволяється використовувати всі чотири стандартних типи даних.

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

10