Exit
Поняття виразу
Виразом вінформатиці вважається
одна або декілька величин або функцій,
сполучених між собою знаками дій та
знаками послідовності дій - дужками.
Приклади:
a+b
cos(y)-sin(x)*(x+y)
Зверніть увагу!
Навіть одну величину можна
вважати виразом.
3.
Exit
Види виразів уПаскалі
Вираз створюють для отримання значення іі
Вираз створюють для отримання значення
подальшого його присвоювання змінній
подальшого його присвоювання змінній
величині або передачі у процедуру
величині або передачі у процедуру
(пригадайте вираз як аргумент процедури
(пригадайте вираз як аргумент процедури
виведення WriteLn(a+b).
виведення WriteLn(a+b).
Результатом виразу може бути
значення одного із допустимих в
Паскалі – ціле число, дійсне число,
символ, рядок або логічна величина.
Звідси і три види виразів:
числові – результат виразу - число
рядкові – результат виразу – рядок символів
логічні – результат виразу – логічна величина
4.
Exit
Числові вирази
Числові виразискладають для
отримання числового результату.
Вони можуть містити:
величини числових типів (змінні або сталі)
функції, що дають числовий результат
знаки арифметичних операцій
круглі дужки
Приклад:
(a+b)*c/234-sin(2*x-1)
5.
Exit
Арифметичні операції вчислових
виразах Паскаля
З математики відомо, що існує чотири основних
арифметичних дії:
додавання – позначається знаком + (“плюс”)
віднімання – позначається знаком - (“мінус”)
множення – позначається знаком * (“помножити”)
ділення – позначається знаком / (“розділити”)
6.
Exit
Додаткові арифметичні операції
Якщоми очікуємо числовий результат цілого типу
(Integer), то не можна використовувати операцію
ділення (/), так як у цьому випадку результат
виразу буде дійсного типу (Real).
Для цілочислових виразів використовуються спеціальні
арифметичні операції:
div - частка від ділення націло двох цілих величин;
mod - остача від ділення націло двох цілих величин.
Приклад:
9 div 4 має значення 2
9 mod 4 має значення 1
7.
Exit
Арифметичні операції divта mod
Операції div та mod виконуються над
величинами тільки цілого типу. Результатом
виконання цих дій є також цілі числа.
10 div 3 = 3 - тобто в результаті
одержимо відповідь на запитання,
скільки разів число 3 входить у 10.
10 mod 3 = 1 - тобто в результаті такої дії одержимо
відповідь на запитання, скільки залишиться від числа
10, якщо вилучити з неї всі трійки.
8.
Exit
Відповідність арифметичних
операцій типам
Операціїdiv та mod виконуються тільки над
величинами цілого типу.
Операції "*", "/", "+", "-" виконуються над
величинами як цілого, так і дійсного типу.
Питання лише в аналізі типу результату.
Зверніть увагу!
Якщо операції "*", "+", "-" виконуються над величинами, що мають
цілі значення, то і отриманий результат буде цілим числом.
Якщо ж хоча б одна з величин, над якими виконується дія, буде
мати дійсний тип, то і результат буде дійсного типу.
Виняток складає операція ділення "/". Якого б типу не були
величини, над якими вона виконується, результат завжди матиме
дійсний тип.
9.
Exit
Пріоритет арифметичних
операцій
У програмуваннітак само, як і у математиці, визначений пріоритет
виконання арифметичних дій, тобто визначається, яким діям надається
перевага перед іншими під час обчислення значення арифметичного
виразу.
Наведемо арифметичні операції Паскалю саме в порядку зменшення їх
пріоритетності:
*, /
множення та ділення;
div
частка від ділення націло двох цілих чисел;
mod
остача від ділення націло двох цілих чисел;
+,додавання та віднімання.
Зверніть увагу!
У Паскалі відсутня операція піднесення до степеня.
Це на перший погляд здається дуже незручним. З часом до
такого недоліку швидко звикають і виявляється, що без цієї
операції можна обійтися.
10.
Exit
Запис арифметичних виразіву
Паскалі
Арифметичні вирази, як і всі інші конструкції мов програмування,
вводяться з клавіатури підряд, в один рядок. Тому розглянемо деякі цікаві
приклади відповідності математичних записів записам на мові
програмування (зверніть увагу на використання дужок та їх значення):
a+b
c+d
a+b/c+d
a+b
c⋅d
(a+b)/(c+d)
b
a+ +d
c
(a+b)/(c*d)
Синім кольором позначені вирази Паскаля.
Чорним – математичні вирази.
a+b/c*d
b
a + ⋅d
c
Зверніть увагу!
Починаючі програмісти часто роблять
помилки у подібних виразах.
За правило слід взяти те, що в
математиці знак дробу має найнижчий
пріоритет, тобто дробове ділення
виконується останнім.
В програмуванні дробового ділення не
має – є лише звичайне з пріоритетом
рівня множення.
11.
Exit
Функції у виразах
Якбуло сказано раніше, до
складу виразу можуть входити
функції.
Функція - вид зв'язку між
величинами, коли зміна однієї з
них призводить до зміни іншої.
Деякі з з функцій вам відомі з
математики: sin x, cos x, tg x ,
тощо.
Зверніть увагу!
Пріоритетність обчислення
функцій найвища.
Паскаль має власні стандартні
(закладені в нього авторами)
функції та дозволяє створити
та використовувати функції
користувача.
12.
Exit
Вимога до записуаргументів
функції
Зверніть увагу!
У мовах програмування аргументи
функції вказуються у дужках.
Тобто в математиці ви пишете sin x, а
у Паскалі треба вказувати sin(x)
13.
Exit
Математичні функції
До математичнихвідносять наступні функції:
sin(x) - синус
cos(x) - косинус
arctan(x) - арктангенс
(аргументи тригонометричних функцій задаються в радіанах)
ехр(х)
еx(експонента)
Іn(х)
Іnх (логарифм натуральний)
abs(x)
|х| (модуль)
sqrt(x)
x
sqr(x)
x2
Зверніть увагу!
Для функцій від sin(x) до ln(x) аргументами можуть бути цілі або дійсні значення, а
результати завжди дійсні.
Для решти функцій тип результату співпадає з типом аргументу.
14.
Exit
Допоміжні математичні функції
trunc(x)- ціла частина х, тобто відкидається дробова
частина; х -дійсне, результат - цілий.
Наприклад, trunc(-7.3)= -7
trunc(-7.5)= -7
round(x) - заокруглення до цілого значення; х дійсне, результат - цілий.
Наприклад, round(4.2)=4, round(4.5)=5
Pi - повертає значення числа π (тобто
3.141592…) аргументів немає.
15.
Exit
Функції перетворення
chr(k) –виробляє значення символу, порядковий номер якого
в таблиці ASCII-кодів рівний k;
k – величина цілого числового типу ,
результат – величина типу Char
Наприклад, chr(70)= 'F'
ord(c) – виробляє ціле числове значення, що відповідає коду
символу в таблиці ASCII-кодів;
с – символ із таблиці ASCII-кодів,
результат – ціла числова величина.
Наприклад, ord(‘F')=70
chr(ord('F'))= 'F'
16.
Exit
Спеціальні функції для
перерахованихтипів
pred(k) - попередній для k елемент у перерахованому типі
(Integer, Char, Boolean)
В якості прикладів наведемо такі: pred('B')='A', pred(10)=9
Для першого елемента типу результат невизначений.
succ(k) - наступний для k елемент.
Наприклад, succ('B')='C', succ(false)=true.
Для останнього елемента множини результат невизначений.
Exit
Формула піднесення достепеня
За допомогою наведеної формули можна
піднести будь-яке число до будь-якого
степеня:
x =e
y
ln x ⋅ y
В Паскалі ця формула матиме вигляд:
ехр(ln(х)*у)
19.
Exit
Вказівка надання значення.
Операторприсвоювання
Ясна річ, якщо у програмі буде обчислене
значення арифметичного виразу, то його
необхідно десь запам'ятати для
подальшого використання.
Для цього існує оператор присвоювання.
Загальний вигляд оператора:
Приклади:
<ім'я змінної> := <вираз>
a:=7;
b:=a+3;
c:=a;
20.
Exit
Знак присвоювання
Знак "="слід відрізняти від знака ":=".
Перший означає порівняння, умову, яку
можна перевірити.
Логічно використовувати його із знаком
запитання: "n=m?".
Другий знак ":=" означає дію, яку потрібно
виконати.
21.
Exit
Робота оператора присвоювання
Привиконанні оператора присвоювання спочатку за заданою
формулою в правій частині виконуються обчислення при
поточних значеннях змінних, що входять у неї, а потім отриманим
результатом замінюється попереднє значення змінної, що
вказана зліва.
Розглянемо приклад:
a:=2;
b:=3;
Опираючись
на
принцип
виконання
оператора
b:=b+a;
Перша вказівка присваює змінній a значення 2,
друга – змінній b значення 3, у третій вказівці
спочатку розраховується значення виразу b+a, яке
дорівнюватиме 5, а потім це значення присваюється
змінній b. Попереднє значення змінної b
втрачається.
присвоювання, зрозуміло, чому
зліва може стояти лише ім'я
змінної
величини:
адже
отримане значення записується
у ту частину оперативної пам'яті
комп'ютера, яка виділена для цієї
змінної.
22.
Exit
Відповідність типів увказівки
присвоювання
В операторі присвоювання тип змінної,
якій присвоюється значення повинен
бути таким як і тип результату виразу,
що записаний праворуч від знака
присвоювання.
Наприклад, у наведеній нижче вказівці
присвоювання тип змінної a повинен
бути Real, бо вираз sin(x)+sin(y) після
обчислення отримає значення типу
Real.
a:= sin(x)+sin(y);
23.
Exit
Відповідність типів увказівки
присвоювання
Вирази, що беруть участь в операторі
присвоювання, можуть бути не лише
арифметичними.
Наприклад, правомірні і такі присвоювання:
ch:='a';
Іехі:='алгоритм';
flag:=true
Перший приклад присвоює змінній значення типу
char, другий - string, третій - boolean.
Пізніше ми будемо розглядати питання
обчислення виразів типу boolean.
24.
Exit
Операція зміни значення
величинитипу a:=a+1
Операція збільшення а на 1 позначається таким чином:
а:=а+1
Її слід читати так: "а замінити на а+1".
Хай, спочатку в області пам'яті, яка відведена змінній а,
знаходилося поточне значення 4.
Тоді виконання оператора а:=а+1 відбувалося поетапно таким
чином:
при обчисленні виразу справа було взято поточне значення
змінної а (число 4) і до нього додалося число 1;
одержане значення 5 було поміщене, в ту область пам'яті, що
відведена змінній а. При цьому попереднє значення змінної а
втрачається.
При повторному виконанні оператора а:=а+1 змінна а отримає
вже значення 6.
25.
Exit
Особливості виконання групи
операційприсвоювання
Цікаво розглянути такі дві послідовності операторів
присвоювання:
1) m:=n, n:=k;
2) n:=k, m:=n;
Ці послідовності операторів присвоювання різні стосовно
збереження значення змінної n. В першому випадку значення
змінної n було збережене у змінній m. В другому випадку
значення змінної n було втрачено перш, ніж його можна було
використовувати для заміщення змінної m.
Таким чином остання послідовність операторів присвоювання
фактично аналогічна такій: n:=k, m:=k
26.
Exit
Питання для самоконтролю:
1.Що називають арифметичними виразами у
Паскалі?
2. Назвіть арифметичні операції Паскаля в
порядку їх пріоритетності.
3. Над якими величинами можна виконувати
операції div та mod?
4. Які правила запису арифметичних виразів у
Паскалі?
5. Як на машинному рівні виконується оператор
присвоювання?