
- •Лекція 2.Програмування лінійних програм. Абетка мови pascal. Ідентифікатори. Стандартні функції. Побудова лінійної pascal-програми. Абетка та лексика мови Pascal.
- •Структура Pascalпрограми.
- •Оператори мови Pascal.
- •Оператор присвоювання.
- •Математичні вирази.
- •664444Організація введення - виведення інформації.
- •Лінійні алгоритми.
- •Лінійні програми.
Оператор присвоювання.
Це найпростіший та найбільш поширений оператор мови. Він призначений для задання нового значення деякої змінної. Загальний вид оператора присвоювання такий:
A := B;
ідентифікатор змінної, яка одержує нове значення;
стала, або ідентифікатор змінної або вираз.
Працює цей оператор таким чином. Спочатку обчислюється вираз в правій частині оператора присвоювання. Далі отримане значення записується в клітинку пам’яті, що позначена вказаним зліва в операторі ідентифікатором. Обов’язково треба пам’ятати про наступне правило: тип величини В повинен співпадати з типом змінної А.
Увага! Змінній А, яка має дійсний тип, можна присвоювати ціле значення, але навпаки неможливо.
Приклади операторів присвоювання:
f:=4;
g:= f;
l:= sin(x-g) +exp(2*x);
y:=-7;
Треба звернути увагу на різницю між записом рівності у математиці та оператором присвоювання. В математиці вираз a=min та min=a означає, що обидві величини однакові. Для нас з вами це логічний вираз, який використовується для запису логічной величини. Оператор a:=min означає, що в комірчину a записуэться значення, що зберігається в комірчині min, а оператор min:=a означає, що саме в комірчину min записується значення величини a.
Увага! Оператор присвоювання є командою компютеру для запису значень у комірчину памяті.
Математичні вирази.
Для того, щоб описувати будь-який вид оператора присвоювання треба вміти записувати математичні вирази мовою Pascal. Адже дуже часто в програмах треба вести математичні обчислення. Для цього складають математичний вираз. В склад математичного виразу входять математичні та інші операції, математичні функції.
Спочатку розберемося з знаками та особливостями виконання математичних операцій над числовими величинами. Як уже було вказано раніше, над величинами можна виконувати тільки ті операції, які дозволені для вибраного типу. Тому зверніть увагу на наступну таблицю.
Таблиця 3.4. Дозволені операції над величинами в мові Pascal.
Позначення операції у мові Pascal |
операція |
тип операндів |
тип результату |
+ |
додавання |
цілі або дійсні |
цілий, якщо обидва оператори цілі або дійсний |
- |
віднімання |
цілі або дійсні |
цілий якщо обидва оператори цілі або дійсний |
* |
множення |
цілі або дійсні |
цілий якщо обидва оператори цілі або дійсний |
/ |
ділення |
цілі або дійсні |
дійсний |
div |
ділення без остачі |
цілі |
цілий |
mod |
залишок від ділення без остачі |
цілі |
цілий |
Тепер можна записувати найпростіші математичні вирази. Відміна математичного виразу від математичної формули у наступному:
математичний вираз записується лінійно (у рядок);
порядок дій однозначно визначений в запису математичного виразу;
з усіх видів дужок використовуються тільки круглі;
забороняється ставити підряд два знаки арифметичних операцій;
обов’язково треба записувати знак множення між множниками.
При записі математичного виразу треба брати до уваги типи величин, які використовують у математичному записі. Це означає наступне. Якщо треба виконати такі дії:a+d*c–g, то величини a,d,c,gможуть бути:
всі цілими, тоді результат буде також цілий;
всі дійсними, тоді результат буде також дійсний;
деякі цілі, деякі дійсні, тоді результат буде дійсним, тому що перед виконанням операції цілі числа переформатовуються у дійсні.
Якщо треба виконати наступні дії: a-d/f, то, не залежно від того, який є тип даних, результат буде дійсний, тому що виконується операція ділення.
Для виконання дій amodcтаadivc використовуються тільки цілі величини і результат буде також цілий.
Останні операції дуже часто використовуються при складанні Pascal-програм. Розглянемо декілька прикладів:
-
Операція
Результат
7 mod 3
1
7 div 3
2
4 mod 2
0
5 mod 2
1
Останні два приклади демонструють властивості парного та непарного числа. Таким чином можна записати умову парності числа:
A mod 2 = 0,
умова непарності числа:
A mod 2 <> 0.
В математичних виразах дуже часто використовуються математичні функції. Мова Turbo Pascal має відповідний інструмент для опису математичних функцій. Існує набір стандартних функцій, які підключаються автоматично при запуску програми. Всі математичні функції зосереджені в стандартному модулі Turbo Pascal – SYSTEM.TPU. Ніякої активної дії програмістів для їх підключення з боку програмістів не передбачається. Цей модуль підключається автоматично. Ось перелік найпоширеніших математичних функцій:
Таблиця 3.5.. Стандартні математичні функції.
математичний запис |
стандартна функція |
тип аргументу |
тип результату |
x |
ABS ( x ) |
REAL або INTEGER |
REAL або INTEGER |
x2 |
SQR ( x ) |
REAL або INTEGER |
REAL або INTEGER |
sin x |
SIN ( x ) |
REAL або INTEGER |
REAL |
cos x |
COS ( x ) |
REAL або INTEGER |
REAL |
ex |
EXP ( x ) |
REAL або INTEGER |
REAL |
lnx |
LN ( x ) |
REAL або INTEGER |
REAL |
|
SQRT ( x ) |
REAL або INTEGER |
REAL |
arctg x |
ARCTAN ( x ) |
REAL або INTEGER |
REAL |
За допомогою вказаних стандартних функцій можна записувати будь-які математичні вирази. Наприклад
sqrt((sqr(x)-sin(x))/(a*x-c))
У мові TurboPascalвідсутня стандартна операція піднесеня число до степеня, крім квадрату числа та кореня квадратного з числа. На допомогу приходить математика. Тому запамятайте загальну формулу піднесеня числа х до степеня з показником y:
exp(y*ln(x))
Увага! Не забувайте математику. Число х може бути тільки додатнім!
sin(x)/cos(x)-
exp(y*ln(x))
exp(1/3*ln(x))
Дуже цікавою є фунція отримання випадкового числа
random(n)
Результатом буде будь-яке число з диапазону [0..n].Число n можна не вказувати. В такому випадку отрмаємо число з діапазону[0..1].Для того, щоб не повторювалися числа, спочатку використовують установку-процедуру
randomize;
Наприклад:
randomize;
random(100);
В результаті отримаємо число від 0 до 100.
Іноді треба перетворити тип змінної з дійсного в цілий та навпаки. Для цього використовують наступні стандартні функції:
Таблиця 3.6. Стандартні функції перетворення типу.
Зміст функції |
стандартна функція |
тип аргументу |
тип функції |
Виділення цілої частини дійсного числа |
trunc(x) |
real |
longint |
округлення дійсного числа до найближчого цілого |
round(x) |
real |
longint |
виділення дробної частини дійсного числа |
frac(x) |
real |
real |
виділення цілої частини дійсного числа без перетворення типу |
int(x) |
real |
real |
перетворення ASCII- коду в символ |
chr(x) |
integer |
char |
Наприклад:
round(-3.3) дорівнює -3; trunc(-3.3) дорівнює -3; frac(-3.3) дорівнює -0.3
round(-3.6) дорівнює -4; trunc(-3.6) дорівнює -3;
round(3.3) дорівнює 3; trunc(3.3) дорівнює 3;
round(3.6) дорівнює 4; trunc(3.6) дорівнює 3; frac(3.6) дорівнює 0.6
Скалярні типи даних відрізняються тим, що вони впорядковані по зростанню. Таким чином для кожної величини скалярного типу можна знайти попередній елемент та наступний елемент. Для цілого 5 попереднім буде 4, а наступним – 6. Для символу ‘d’попереднім буде символ‘c’ , а наступним – символ‘e’ . Значення false та true також впорядковані. Тому існує набір функцій для отримання такої інформації. Розгляньте наступну таблицю.
Таблиця 3.7 Стандартні функції для роботи з скалярними даними.
Зміст функції |
стандартна функція |
тип аргументу |
тип функції | |
перетворення будь-якого порядкового типу в цілий тип (номер значення х в послідовності) |
ord(x) |
будь-який простий, крім дійсного |
цілий | |
визначення попереднього значення величини х |
pred(x) |
будь-який простий, крім дійсного |
будь-який простий, крім дійсного | |
визначення наступного значення величини х |
succ(x) |
будь-який простий, крім дійсного |
будь-який простий, крім дійсного |
Крім стандартних функцій, для скалярного типу існують також оператори процедур, які визначають попереднє та наступне значення:
inc(x);- одержання наступного значення х (те саме, що x:=x+1;)
dec(x); - одержання попереднього значення х (те саме, що x:=x-1;)