- •Передмова
- •Тема 1: Правила техніки безпеки при роботі з комп’ютером
- •Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази
- •Тема 3: Загальна структура і розділи Pascal-програми
- •Тема 4: Введення і виведення у Pascal-і. Форматоване виведення
- •Тема 5: Прості (скалярні) типи данних
- •Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші
- •Тема 7: Меню опції
- •Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
- •Тема 9: Умовний оператор. Вкладений умовний оператор
- •Тема 10: Оператор вибору
- •Тема 11: Оператори циклу. Оператор циклу з параметром
- •Тема 12: Оператор циклу з перед- і з постумовою
- •Тема 13: Складні типи. Масиви
- •Тема 14: Багатомірні масиви
- •Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування
- •Тема 16: Динамічна пам'ять. Адреси і покажчики
- •Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті
- •Тема 18: Процедури та функції для роботи з динамічною пам’яттю
- •Тема 19: Символьний тип даних. Упаковані масиви
- •Тема 20: Процедури та функції для обробки рядків
- •Тема 21: Структурований тип даних - безліч
- •Тема 22: Структурований тип даних – записи
- •Тема 23: Опис файлових змінних. Обробка типізованих файлів
- •Тема 24: Послідовний та прямий доступ до файлів
- •Тема 25: Обробка не типізованих файлів
- •Тема 26: Робота з текстовими файлами
- •Тема 27: Типізовані константи
- •Тема 28: Поняття та робота з процедурами та функціями
- •Тема 29: Використання модуля crt. Програмування клавіатури
- •Тема 30: Використання модуля crt. Текстове виведення на екран. Програмування звукового генератора
- •Тема 31: Графічні можливості tp 7.0. Використання бібліотеки Graph
- •Тема 32: Бібліотечні модулі користувача
- •Тема 33: Основні принципи ооп. Створення об’єктів. Використання об’єктів
- •Список літератури
- •Додаток а (довідковий) Основні алгоритми обробки масивів
- •Додаток б (довідковий) Питання перевірки знань з теорії
- •Додаток в (довідковий) Поширені коди клавіш
- •Додаток д (довідковий) Коди сканування клавіатури
Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
В математиці вираженням є формула, що відбиває математичні відносини. У мовах програмування замість “формула” говорять “вираження”. У порівнянні з математичними поняттям вираження має свої особливості: воно складається з констант, змінних, функцій і операцій над ними.
Вираження визначають порядок виконання операцій. Операції визначають дії, які треба виконати над операндами.
Часто вираженням є константа, перемінна чи функція.
При складанні виражень необхідно дотримуватись наступних правил.
Вираження записуються в один рядок. Верхні і нижні індекси не допускаються. Наприклад, формула:
повинна бути записана у виді вираження:
У вираженні неможна застосовувати квадратні і фігурні дужки, тому що вони мають інше призначення. Використовуються тільки круглі дужки. Наприклад, математичне вираження:
варто записати у вигляді
Якщо вираження записане правильно, то кількість дужок, що відкриваються, дорівнює числу закриваючих дужок. Зайві правильно поставлені дужки не впливають на результат.
Неможна записувати підряд два знаки операцій. Наприклад, вираження:
a+b/-c записано невірно; його варто записати у видгляі
a+b/(-c).
Складні вираження потрібно розбивати на декілька простих, а повторювані дії обчислювати окремо. Наприклад, вираження:
(a+bx)-2(a+bx)+c(a+bx) варто записати в такий спосіб
x:=a+b*x
z:=y-2*y+c*y
Вираження може бути арифметичним і логічним. При виконанні операції у вираженнях слід дотримуватися пріоритету операцій (табл. 8.1).
Таблиця 8.1. Пріоритет операцій.
Пріоритет |
Тип дій |
Операції або елементи |
1 2 3 4 5 6 |
Обчислення в круглих дужках Обчислення значень функції Унарні операції Мультимедійні операції Аддитивні операції Операції відношень |
( ) Функції @, not, унарні + та - *, /,div, mod, and, shl, shr + , -, or, xor =, <>, <, >, <=, >=, in |
Пріоритет операторів визначаються за наступними правилами:
Операнд, що знаходиться між двома операндами з різними пріоритетами, зв'язується з оператором, що має більш високий пріоритет.
Операнд, що знаходиться між двома операторами з рівними пріоритетами, зв'язується з оператором, що знаходиться ліворуч його.
При наявності дужок спочатку виконується дії в них, при цьому, виконання варто починати з дій у самих внутрішніх дужках.
Операції, зазначені в одному рядку, мають однаковий пріоритет.
Розглянемо приклад. Дано логічне вираження:
(a > 3) and (b = a + 6) or not (c = 4)
Визначити його результат при А = 2, В=8, С=5.
Порядок виконання операцій наступний:
Виконується операція порівняння А>С у перших дужках, її результат False, тому що 2<3;
Виконується дія в других дужках з дотриманням пріоритету – спочатку обчислюється значення А+6, а потім значення В порівнюється зі значенням А+6. Результат – True тому що 8=8;
Виконується операція порівняння С = 4 у третіх дужках, її результат False, тому що 5 не дорівнює 4;
Виконується операція Not (С = 4), її результат True, тому що Not False є True;
Виконується операція And над першими і другими дужками - False And True, результат її True;
Виконується операція Or над вираженням ліворуч і праворуч від неї - False Or True, результат її True;
Отже, остаточний результат логічного вираження – True.
Приклад. Визначення значень логічних змінних У1, У2, У3.
const
t = true; {логічна константа}
var
b1, b2, b3 : boolean; {логічні змінні}
begin
b1 := false;
b2:=t and b1;
b1 := (not b2) or (not b1);
b3 := b1 and b2 and t;
writeln (‘b1=’,b1,’ ’,’b2=’,b2,’ ‘,’b3=’,b3)
end.
Приклад. Визначити значення логічного вираження
(a>b) and (b=a+2) or not (c<>b)
при наступних даних: А=7, У=9, З=5.
var
l : boolean; {логічна змінна}
a, b, c : integer;
begin
writeln (‘Введіть цілі значення a, b, c :’);
read(a, b, c);
l:=(a>b) and (b=a+2) or not (c<>);
writeln (‘Значення логічного вираження = ‘, l)
end.
Стандартні математичні функції і процедури
Розглянемо основні математичні функції і процедури стандартної бібліотеки System Turbo Pascal.
Функції:
Abs(x) – повертає абсолютне значення х.
Наприклад, abs(-2.4)=2.4;
Cos(x) – повертає косинус числа х (х у радіанах )
Наприклад:
var
x : real;
begin
x := -46.78;
writeln(cos(x));
end.
Sin(x)-повертає синус числа х(х у радіанах).
Arctan(x)-повертає арктангенс числа х.
Exp (х)-повертає число рівне E в ступені х.
Наприклад:
var
x : real;
begin
x:=5.36;
writeln(exp(x));
end.
Ln(x) –повертає число рівне натуральному логарифму від числа х.
Наприклад:
var
x : real;
begin
x := 146.78;
writeln(ln(x));
end.
Pi –число Пі.
Наприклад:
var
r : real;
begin
r := 0.873;{радіус кола}
writeln('площа кола=',2*pi*r*r);
end.
Sqr(x) - зводить число х у квадрат.
Sqrt(x) - витягає корінь квадратний з числа х.
Наприклад:
var
x : real;
begin
x := 7.78;
writeln('x у квадраті =',sqr(x));
writeln('квадратний корінь з х=',sqrt(x));
end.
Trunc(x) - повертає число, рівне цілій частинй числа х, відкидаючи його дробову частину.
Наприклад:
var
x : real;
begin
x := -7.98;
writeln(trunc(x));
end.
Frac(x) – повертає число, рівне дробової частини числа х, відкидаючи його цілу частину
Наприклад:
var
x : real;
begin
x:=-7.98;
writeln(frac(x));
end.
Int(x) – повертає ціле число, рівне округленій частині числа х, при цьому округлення виконується убік найближчого меншого цілого числа.
Наприклад:
var
a, b, c, d : real;
begin
a := -0.97; b := -2.8; c := 0.97; d := 2.8;
writeln(‘a=’,int(a):3:1,’; b=’,int(b):3:1,’; c=’,int(c):3:1,’; d=’,int(d):3:1);
end.
Результати: a = 0.0; b = -2.0; c = 0.0; d = 2.0
Round(x) - повертає ціле число, рівне округленій частині числа х, при цьому округлення виконується за правилами математики.
Наприклад:
var a, b, c, d : real;
begin
a :=-2.3; b :=-2.5; c :=2.4; d:=2.5;
writeln(‘a=’,round(a),’b=’,round(b),’c=’,round(c),’d=’,round(d))
end.
Результати: a=-2 b=-3 c=2 d=3
Random(x) – генерує випадкові числа від 0 до х. Якщо аргумент х не заданий, то числа генеруються від 0 до 1.
Наприклад:
var x: integer;
begin
for x:=1 to 10 do
write(random(x):2,’;’);
end.
Результати:0; 0; 2; 0; 1; 4; 2; 1; 3; 4;
Odd(x)-повертає True, якщо число х непарне і Flalse - якщо парне.
Наприклад:
var x:integer;
begin
for x:=1 to 5 do
write(Odd(x),’;’);
end.
Результати: True; False; True; False; True;
Процедури:
Inc(x,y) - збільшує значення числа х на величину y. Якщо y не зазначений, х буде збільшуватися на 1.
Dec(x,y) - зменшує значення числа х на величину y. Якщо y не зазначений, х буде зменшуватися на 1.
Наприклад:
var n: integer;
begin
n := 5; writeln(‘для n=’,n);
inc(n); writeln(‘inc(n)=’,n);
n:=5;
inc(n,2);writeln(‘inc(n,2)=’,n);
n:=5;
dec(n);writeln(‘dec(n)=’,n);
n:=5;
dec(n,4);writen(‘dec(n,4)=’,n)
end.
Результати: для n=5
inc(n)=6
inc(n,2)=7
dec(n)=4
dec(n,4)=1
Randomize- забезпечує розбіжність послідовностей псевдовипадкових чисел, генеруємих функцією Random.
Наприклад:
var x:integer;
begin
randomize;
for x:=1 to 10 do
write(random((x)+1):2,’;’)
end.
Питання для контролю.
-
В чому полягає різниця між формулою в математиці і вираженням у Pascal-і?
-
Що визначають вираження, а що операції?
-
Яких правил потрібно дотримуватися при складанні виражень?
-
Яким маже бути вираження? Перелічте пріоритет операцій при виконанні дій у вираженнях.
-
Назвіть правила визначення пріорітету операторів у вираженні.
-
Назвіть функції що повертають
-
абсолютне значення заданого числа і косинус заданого числа;
-
синус і арктангенс заданого числа;
-
експоненту;
-
число, рівне натуральному логарифму від заданого числа;
-
число Пі.
-
Як звести число Х в квадрат?
-
Як витягти квадратний корінь з числа Х?
-
Як повернути число, рівне цілій частині заданого числа?
-
Як повернути число, рівне дробовій частині заданого числа?
-
Як повернути ціле число, рівне округленій цілій частини заданого числа?
-
Назвіть функцію, що генерує псевдовипадкові числа.
-
Як забезпечити розбіжність генеруємих псевдовипадкових чисел?
-
Дано число Х. Що повертає функція Odd(X)?
-
Назвіть процедури що збільшують і зменшують задане число Х на величину У.