
- •Результати операцій над логічними даними:
- •Var ім 'я_масиву:аrrау[t1 ] of t2;
- •Var ім’я_масиву: ім'я_типу;
- •Var ім’я_мас:ім 'я_типу;
- •Процедури.
- •Структура процедури.
- •Параметри-значення та параметри-змінні.
- •Функції.
- •Відмінні особливості функції в порівнянні з процедурами:
- •Рекурсивні структури.
- •If умова then a;
- •If умова then a;
- •If умова then a;
- •Множини.
Label. Оператор Goto проводить передачу управління до оператора, що помічений міткою. Використання оператора безумовного переходу в мові Pascal є необов'язковим та небажаним, так як його присутність порушує цілісність програми та її наглядність. Його треба використовувати тільки у виключних ситуаціях, наприклад, для виходу із складного оператору, при виникненні особливої ситуації в програмі. Нехай програма містить такі оператори:
x:=5; r:=b;
Goto 5;
15: r:=0;
5: у:=х;
writeln(x);
В даному випадку спочатку виконуються дані оператори, а потім
іде перехід до оператора, що помічений міткою 5. Мітка розміщується перед оператором та відокремлюється від нього двокрапкою.
Наприклад: 21:Read(x);
При цьому, мітка не впливає на виконання оператора.
Приклад: Написати програму, яка з’ясовує чи є серед чисел
cos(
)sin(ni)
(і=1..п)
числа<0,0001. Якщо є, то вивести —
"є
такі числа", а
якщо ні —
то
"немає таких чисел ".
Program Pr;
Label 1,2;
Var i,n: Integer;
Begin
Writeln(’Введіть значення п');
Read (n);
For i: =1 to n do
If Cos (Sqr (i)*i)*Sin (n*i) < 0. 0001
Then Goto 1;
Write('Немaє таких чисел') ;
Goto 2;
1: Write ('€ такі числа');
2: End.
Крім
операцій, які ми вже вивчили, в Pascal
є ще 2-і, які позначаються
div
та
mod.
Ці
операції мають по два цілих аргументи.
Якщо значення а та b
невід'ємні і b
0,
то a
div
b
і
a
mod
b
є частка
і остача, що виникають при діленні а на
b
з остачею.
Наприклад:
19 div 3 =6
19 mod 3=1
Дані операції є операції однакового старшинства з операціями множення та ділення. Операцію mod можна використовувати, щоб дізнатися, чи кратне ціле а цілому Ь (а кратне b тоді і тільки тоді, коли а mod b=0).
Приклад: Дано 10 цілих чисел. Визначити, чи є серед них хоч би одне додатне число кратне 5. Якщо так, то вивести перше із цих чисел, а якщо ні, то надрукувати — " не знайдено ".
ProgramPRJ;
Label 21,12;
Var i,n:Integer;
Begin
Writeln(’Введіть числа’);
For і: =1 to 10 do
Begin
Read(n);
If n<=0 Then GOTO 12;
If n mod 5 =0 then
Begin
Write(n);
Goto 11;
End;
12: End;
Writeln('He знайдено');
11: End.
Дані логічного типу.
Логічний тип даних часто називають булевим по імені англійського математика Буля, який створив науку мат. логіку. В мові Pascal є 2-і логічні константи True та False.
Логічна зміна приймає одне із цих значень і має тип Boolean. Логічні дані широко використовуються при перевірці вірності деяких умов та при порівнянні величин. Результат може бути істинним чи хибним. Для порівняння даних існують наступні операції відношень <, >, <=, >=, =, < >. Якщо операцію відношення прикласти до арифметичних даних, то отримаємо логічне значення: відношення істине чи хибне. Наприклад, 7>4 дає істиний результат, а 19>25 - хибний. Над логічними даними можливі такі операції:
OR - логічне додавання; (або)
AND - логічне множення; (і)
NOT — логічне заперечення, (ні)
Логічні операції OR та AND виконуються над 2-а величинами, а NOT над однією.
Логічне додавання дає істиний результат, якщо хоча б одна із логічних величин А та В мають істине значення. Якщо обидві величини А та В мають хибне значення, то результат буде хибним.
Логічне множення дає істиний результат тільки в тому випадку, коли обидві величини істині. Якщо хоч би одна із величин хибна, то результат буде хибним.
Логічне заперечення дає хибний результат, якщо величина має істине значення і навпаки. Логічний тип визначається таким чином, що
False<True.
Результати операцій над логічними даними:
A |
B |
Not A |
A OR B |
A And B |
TRUE TRUE FALSE FALSE |
TRUE FALSE TRUE FALSE
|
FALSE FALSE TRUE TRUE |
TRUE TRUE TRUE FALSE
|
TRUE FALSE FALSE FALSE
|
Логічні дані і операції над ними мають важливе значення, так як дозволяють ввести елементи логіки (в логіці оперують константами 1 - істина, 0- хибна).
Логічні вирази будуються із логічних даних, логічних операцій та операцій відношень. В операціях відношень можуть зустрічатися арифметичні та логічні вирази, а також символьні дані. Результатом логічного виразу є значення True або False.
В логічних виразах прийнятий такий пріоритет операцій:
1. NOT
2. *,/,DIV,MOD,AND
3. +,- OR
4.<,<=, = ,<>, >= ,>
(Операції, що вказані в одному рядку мають однаковий пріоритет).
В логічних виразах допускається використання тільки круглих
дужок. При наявності дужок спочатку виконуються дії в дужках (в першу
чергу в самих внутрішніх), а потім за дужками. В круглі дужки
обов'язково заключаються частини виразів, що знаходяться зліва та
- справа від логічних операцій AND та OR.
Приклад: Визначити результат логічного виразу:
(А>3) AND (B-A+6) OR NOT (C-4)
при А=2,В=8,С=5 (False)
(False) And (True) Or (False) (False) Or (False)
False
Приклад: Записати на Pascal відношення істине при виконанні указаної умови та хибне в протилежному випадку:
a) ціле k ділиться на 7
k mod 7=0
b)
рівняння a
+bx+c=0
не має дійсних коренів
SQR(b) - 4*а*с<0
c) натуральне п є повним квадратом
SQR(round(SQRT (п))) =п
Приклад: Обчислити значення виразів:
a) ((x*y)<>0)and(y>x) npu x=2,y=l (False)
b) ((x*y)<>0)or (y>x) npu x=2,y=l (True)
c) a or (not b) npu a=false, b=true (False)
Приклад: Пояснити помилки в наступних записах:
a) true <0 (операції різних типів)
b) not 2-5 (відношення не взято в дужки)
c) ,x>0 or y =4 (відношення не взято в дужки)
d) not not b or or d (2-а знака операції поряд)
Приклад: Вказати порядок виконання операцій при обчисленні виразів:
a and b or not c and d
(a and b)or((not c) and d)
Приклад: Записати приведені нище висловлювання у вигляді виразів:
a) значення А не належить відрізку (0,3)
(A<=0)OR(A>=3)
b) значення А належить відрізку [-2, 0]
(A>=-2)AND(A<=0)
Приклад: Визначити, чи належить точка з координатами х,у прямокутнику з координатами x1,y1,x2,y2. Координати точки та прямокутника дійсного типу (точка належить прямокутнику, якщо
х> =x1 х< =х2
y>=y1 у<=у2)
Program kl;
Var x, x1, x2, у, y1, y2:Real;
Begin
Writeln (’ Введіть координати x1, y1, x2, y2);
Read(x1, y1 ,x2, y2) ;
Writeln('Bведіть координати х,у');
Read(x,y);
If (x> =x1)and(x< =x2)and(y> =y1)and(y< =y2)then
Write ('Точка належить прямокутнику)
Else write (’Точка не належить прямокутнику);
End.
Змінні типи
До цього часу ми працювали із стандартними типами даних. Змінні типи даних дозволяють створювати нові типи даних крім стандартних. В цю групу входять перелічувальний та обмежений типи. Перелічувальний тип називається так тому, що задається у вигляді переліку в строго визначеному порядку та в строго обмеженій кількості всіх значень, які можуть приймати дані того типу, що розглядаються. Перелічувальний тип може бути заданий користувачем в залежності від того, яку задачу він розв’язує. Перелічувальний тип складається Із списку констант. Змінні цього типу можуть приймати значення будь-якої із даних констант. Перелічувальний тип має такий вигляд:
Туре ім 'я_типу=(список констант);
Var ім'я_змін : ім'я типу;
Під константою тут розуміється особливий вид констант, що задається користувачем. Під списком констант розуміється перелік констант, що розділені комами. Сам список береться в круглі дужки.
Приклад: Туре рік = (зима,весна,літо,осінь);
Var А: рік;
Де рік — ім'я перелічувального типу;
Зима, весна, літо, осінь — константи
А - зміна, що може приймати значення будь-якої константи. В Pascal можливо задавати константи перелічувального типу безпосередньо в розділі змінних без використання Туре.
Наприклад: Var А: (Зима, весна, літо, осінь);
Але хорошим стилем програмування є опис даних з використанням розділу Туре, так як це допомагає скоротити кількість помилок та полегшує відлагодження програми. Кожна із констант має порядковий номер, відлік починається з 0. (Зима - 0 , весна - 1, ...). Впорядкованість констант дозволяє застосовувати до них операції відношення (<, <= , >, >=, 0), а також стандартні функції:
ODD - визначення парності числа;
CHR( і ) - визначення символу із набору символів по порядковому номеру і;
ORD(x) - знаходження порядкового номеру елемента х із переліку
допустимих значень;
PRED(x) - знаходження елемента, який є попереднім для даного в переліку допустимих значень;
SUCC(x) - знаходження елементу, який є наступним для даного в переліку допустимих елементів,
Приклад: Є опис
0 1 2 3
Туре сезон = (зима, весна, літо, осінь);
Var x,y: сезон; Т: (тепло, холодно);
а) чи правильні такі присвоєння:
+ + + - -
х;=весна; у:=х; t:=meплo; y:=t; і:=жарко;
б) обчислити значення виразів:
True true false
весна < літо; зима<літо : осінь<зима; succ (весна) =літо;
True
pred (весна) =зима; ord(веснa)=2; ord(ociHb)+ord(xoлоднo)=4;
Приклад:
Дано type колір = (червоний, білий, зелений);
Var c: колір;
Надрукувати значення змінної с.
Program PR3;
Type vet=(red, white, green);
Var c: vet;
n: Integer;
Begin
Writeln(’Введіть порядковий номер кольора');
Read(n);
Case n of
0: c:=red;
1: c:=white;
2: c:=green;
end;
case c of
red: write ('червоний');
white: write ('зелений');
green: write ('зелений ');
end;
end.
В Pascal не можна безпосередньо вводити та виводити на зовнішні пристрої значення перелічувальних даних. Дуже вигідно використовувати для цього оператор варіанту або оператор присвоєння.
Приклад: Є перелік звірів. Визначити в цьому списку порядковий номер лева та порядковий номер звіра після оленя.
Program RB;
Туре звір=(лисиця, вовк, заєць, тигр, лев, ведмідь, олень, білка);
Var P1,P2:3вip;
N1,N2: integer;
Begin
Р1:=лев;
Р2: =succ (олень);
N1:=ord(p1)+1;
N2:=ord(p2)+2;
Writeln(’порядковий номер лева — ', N1:2);
Writelп(’порядковий номер звіра після оленя = ',N2:2);
End.
(Так як лічба перелічувальних данних починається з 0, а не з 1, то для обчислення порядкового номеру потрібно додавати 1).
Відрізковий тип.
Якщо яка-небудь змінна приймає не всі значення свого типу, а тільки значення, що містяться в деякому відрізковому діапазоні, то її можна розглядати як змінну відрізкового типу.
Наприклад, в розділі опису типів описаний тип місяців року:
Туре місяць=(січень, лютий, березень ,..., грудень);
а задача вирішується тільки з літнім періодом року, тоді вводиться поняття відрізковий тип:
Туре літо= червень..серпень;
який є частиною типа Місяць. В цьому випадку тип Місяць, із якого був видалений тип Літо є базовим відносно типу Літо. При визначенні відрізкового типу задається початкове та кінцеве значення, які може приймати константа базового типу на цьому відрізку, що розділяються двома крапками. Опис відрізкового типу має вигляд:
Туре ім’я_типу=конст1..конст n;
при цьому повинні виконуватися слідуючі правила:
1. обидві граничні константи повинні бути одного типу;
2. в ролі базового типу можна використовувати любий стандартний тип крім дійсного;
Іn=0..25;
Lete='A'. .'Z';
Осінь =Вересень.. Листопад;
3. початкове значення при визначенні відрізкового типу не повинно бути більшим кінцевого значення;
4. змінні відрізкового типу повинні бути описані в розділі змінних за допомогою імен цих типів;
5. змінні відрізкового типу, як і перелічувального, можна описувати не звертаючись до розділу опису типів.
Використання граничних типів дозволяє користувачу більш чітко викласти свою задачу. Вказавши в явному вигляді діапазон зміни змінних, відрізковий тип робить програму більш зрозумілою та доступною.
Приклад: Є опис
Type zir=’0’..'9';
Var d:zir;
К: 0. . 9;
N: integer;
(1. який базовий тип для цього відрізкового типу ? )
2. Чи допустимі присвоєння : d:= '6'; d: = 'a'; d: -7 ?
З.Які значення може приймати змінна k ? Чи допустимі присвоєння ?
k:=4; k:=11; k:=0; k:='5'
Масиви.
В математиці, економіці, інформатиці часто використовують впорядковані набори даних. Наприклад, це - послідовність чисел, таблиці, списки прізвищ. Для обробки наборів даних одного типу вводиться поняття — масив.
Масив - це сукупність кінцевого числа даних одного типу. Масив позначається змінною. Наприклад: -5.0, 3.2, 1.18 - це масив А. Кожний елемент масиву позначається іменем масиву з індексом. В Pascal індекс заключається в [ ] дужки. Для даного прикладу :
А[1] = -5,0;
А[2] = 3.2;
А[3] =1.18
Якщо в програмі використовують масив, то він повинен бути описаний або в розділі змінних Var або в розділі типів Туре.
Форма опису в розділі Var має вигляд: