Основи алгоритмізації та
програмування

Вирази в Паскалі
Exit

Поняття виразу
Виразом в інформатиці вважається
одна або декілька величин або функцій,
сполучених між собою знаками дій та
знаками послідовності дій - дужками.
Приклади:
a+b
cos(y)-sin(x)*(x+y)
Зверніть увагу!
Навіть одну величину можна
вважати виразом.
Exit

Види виразів у Паскалі
Вираз створюють для отримання значення іі
Вираз створюють для отримання значення
подальшого його присвоювання змінній
подальшого його присвоювання змінній
величині або передачі у процедуру
величині або передачі у процедуру
(пригадайте вираз як аргумент процедури
(пригадайте вираз як аргумент процедури
виведення WriteLn(a+b).
виведення WriteLn(a+b).
Результатом виразу може бути
значення одного із допустимих в
Паскалі – ціле число, дійсне число,
символ, рядок або логічна величина.

Звідси і три види виразів:
числові – результат виразу - число
рядкові – результат виразу – рядок символів
логічні – результат виразу – логічна величина
Exit

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

Приклад:
(a+b)*c/234-sin(2*x-1)
Exit

Арифметичні операції в числових
виразах Паскаля
З математики відомо, що існує чотири основних
арифметичних дії:
додавання – позначається знаком + (“плюс”)
віднімання – позначається знаком - (“мінус”)
множення – позначається знаком * (“помножити”)
ділення – позначається знаком / (“розділити”)
Exit

Додаткові арифметичні операції
Якщо ми очікуємо числовий результат цілого типу
(Integer), то не можна використовувати операцію
ділення (/), так як у цьому випадку результат
виразу буде дійсного типу (Real).
Для цілочислових виразів використовуються спеціальні
арифметичні операції:
div - частка від ділення націло двох цілих величин;
mod - остача від ділення націло двох цілих величин.
Приклад:
9 div 4 має значення 2
9 mod 4 має значення 1
Exit

Арифметичні операції div та mod
Операції div та mod виконуються над
величинами тільки цілого типу. Результатом
виконання цих дій є також цілі числа.
10 div 3 = 3 - тобто в результаті
одержимо відповідь на запитання,
скільки разів число 3 входить у 10.
10 mod 3 = 1 - тобто в результаті такої дії одержимо
відповідь на запитання, скільки залишиться від числа
10, якщо вилучити з неї всі трійки.
Exit

Відповідність арифметичних
операцій типам
Операції div та mod виконуються тільки над
величинами цілого типу.
Операції "*", "/", "+", "-" виконуються над
величинами як цілого, так і дійсного типу.
Питання лише в аналізі типу результату.
Зверніть увагу!
Якщо операції "*", "+", "-" виконуються над величинами, що мають
цілі значення, то і отриманий результат буде цілим числом.
Якщо ж хоча б одна з величин, над якими виконується дія, буде
мати дійсний тип, то і результат буде дійсного типу.
Виняток складає операція ділення "/". Якого б типу не були
величини, над якими вона виконується, результат завжди матиме
дійсний тип.
Exit

Пріоритет арифметичних
операцій
У програмуванні так само, як і у математиці, визначений пріоритет
виконання арифметичних дій, тобто визначається, яким діям надається
перевага перед іншими під час обчислення значення арифметичного
виразу.
Наведемо арифметичні операції Паскалю саме в порядку зменшення їх
пріоритетності:
*, /
множення та ділення;
div
частка від ділення націло двох цілих чисел;
mod
остача від ділення націло двох цілих чисел;
+,додавання та віднімання.
Зверніть увагу!
У Паскалі відсутня операція піднесення до степеня.
Це на перший погляд здається дуже незручним. З часом до
такого недоліку швидко звикають і виявляється, що без цієї
операції можна обійтися.
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

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

Функції у виразах
Як було сказано раніше, до
складу виразу можуть входити
функції.
Функція - вид зв'язку між
величинами, коли зміна однієї з
них призводить до зміни іншої.
Деякі з з функцій вам відомі з
математики: sin x, cos x, tg x ,
тощо.

Зверніть увагу!
Пріоритетність обчислення
функцій найвища.

Паскаль має власні стандартні
(закладені в нього авторами)
функції та дозволяє створити
та використовувати функції
користувача.
Exit

Вимога до запису аргументів
функції
Зверніть увагу!
У мовах програмування аргументи
функції вказуються у дужках.

Тобто в математиці ви пишете sin x, а
у Паскалі треба вказувати sin(x)
Exit

Математичні функції
До математичних відносять наступні функції:
sin(x) - синус
cos(x) - косинус
arctan(x) - арктангенс
(аргументи тригонометричних функцій задаються в радіанах)
ехр(х)
еx(експонента)
Іn(х)
Іnх (логарифм натуральний)
abs(x)
|х| (модуль)
sqrt(x)
x
sqr(x)
x2
Зверніть увагу!
Для функцій від sin(x) до ln(x) аргументами можуть бути цілі або дійсні значення, а
результати завжди дійсні.
Для решти функцій тип результату співпадає з типом аргументу.
Exit

Допоміжні математичні функції
trunc(x) - ціла частина х, тобто відкидається дробова
частина; х -дійсне, результат - цілий.
Наприклад, trunc(-7.3)= -7
trunc(-7.5)= -7
round(x) - заокруглення до цілого значення; х дійсне, результат - цілий.
Наприклад, round(4.2)=4, round(4.5)=5
Pi - повертає значення числа π (тобто
3.141592…) аргументів немає.
Exit

Функції перетворення
chr(k) – виробляє значення символу, порядковий номер якого
в таблиці ASCII-кодів рівний k;
k – величина цілого числового типу ,
результат – величина типу Char
Наприклад, chr(70)= 'F'
ord(c) – виробляє ціле числове значення, що відповідає коду
символу в таблиці ASCII-кодів;
с – символ із таблиці ASCII-кодів,
результат – ціла числова величина.
Наприклад, ord(‘F')=70

chr(ord('F'))= 'F'
Exit

Спеціальні функції для
перерахованих типів
pred(k) - попередній для k елемент у перерахованому типі
(Integer, Char, Boolean)
В якості прикладів наведемо такі: pred('B')='A', pred(10)=9
Для першого елемента типу результат невизначений.

succ(k) - наступний для k елемент.
Наприклад, succ('B')='C', succ(false)=true.
Для останнього елемента множини результат невизначений.
Exit

Функція визначення парності
odd(x) - визначення непарності х;
х - ціле,
результат - true або false.
Наприклад, odd(2)=false, odd(5)=true
Exit

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

x =e
y

ln x ⋅ y

В Паскалі ця формула матиме вигляд:

ехр(ln(х)*у)
Exit

Вказівка надання значення.
Оператор присвоювання
Ясна річ, якщо у програмі буде обчислене
значення арифметичного виразу, то його
необхідно десь запам'ятати для
подальшого використання.
Для цього існує оператор присвоювання.
Загальний вигляд оператора:
Приклади:

<ім'я змінної> := <вираз>

a:=7;
b:=a+3;
c:=a;
Exit

Знак присвоювання
Знак "=" слід відрізняти від знака ":=".
Перший означає порівняння, умову, яку
можна перевірити.
Логічно використовувати його із знаком
запитання: "n=m?".
Другий знак ":=" означає дію, яку потрібно
виконати.
Exit

Робота оператора присвоювання
При виконанні оператора присвоювання спочатку за заданою
формулою в правій частині виконуються обчислення при
поточних значеннях змінних, що входять у неї, а потім отриманим
результатом замінюється попереднє значення змінної, що
вказана зліва.
Розглянемо приклад:
a:=2;
b:=3;
Опираючись
на
принцип
виконання
оператора
b:=b+a;
Перша вказівка присваює змінній a значення 2,
друга – змінній b значення 3, у третій вказівці
спочатку розраховується значення виразу b+a, яке
дорівнюватиме 5, а потім це значення присваюється
змінній b. Попереднє значення змінної b
втрачається.

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

Відповідність типів у вказівки
присвоювання
В операторі присвоювання тип змінної,
якій присвоюється значення повинен
бути таким як і тип результату виразу,
що записаний праворуч від знака
присвоювання.
Наприклад, у наведеній нижче вказівці
присвоювання тип змінної a повинен
бути Real, бо вираз sin(x)+sin(y) після
обчислення отримає значення типу
Real.
a:= sin(x)+sin(y);
Exit

Відповідність типів у вказівки
присвоювання
Вирази, що беруть участь в операторі
присвоювання, можуть бути не лише
арифметичними.
Наприклад, правомірні і такі присвоювання:
ch:='a';
Іехі:='алгоритм';
flag:=true
Перший приклад присвоює змінній значення типу
char, другий - string, третій - boolean.
Пізніше ми будемо розглядати питання
обчислення виразів типу boolean.
Exit

Операція зміни значення
величини типу a:=a+1
Операція збільшення а на 1 позначається таким чином:

а:=а+1
Її слід читати так: "а замінити на а+1".
Хай, спочатку в області пам'яті, яка відведена змінній а,
знаходилося поточне значення 4.
Тоді виконання оператора а:=а+1 відбувалося поетапно таким
чином:
при обчисленні виразу справа було взято поточне значення
змінної а (число 4) і до нього додалося число 1;
одержане значення 5 було поміщене, в ту область пам'яті, що
відведена змінній а. При цьому попереднє значення змінної а
втрачається.
При повторному виконанні оператора а:=а+1 змінна а отримає
вже значення 6.
Exit

Особливості виконання групи
операцій присвоювання
Цікаво розглянути такі дві послідовності операторів
присвоювання:
1) m:=n, n:=k;
2) n:=k, m:=n;
Ці послідовності операторів присвоювання різні стосовно
збереження значення змінної n. В першому випадку значення
змінної n було збережене у змінній m. В другому випадку
значення змінної n було втрачено перш, ніж його можна було
використовувати для заміщення змінної m.
Таким чином остання послідовність операторів присвоювання
фактично аналогічна такій: n:=k, m:=k
Exit

Питання для самоконтролю:
1. Що називають арифметичними виразами у
Паскалі?
2. Назвіть арифметичні операції Паскаля в
порядку їх пріоритетності.
3. Над якими величинами можна виконувати
операції div та mod?
4. Які правила запису арифметичних виразів у
Паскалі?
5. Як на машинному рівні виконується оператор
присвоювання?

урок 12 вирази мова Паскаль

  • 1.
  • 2.
    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. Для останнього елемента множини результат невизначений.
  • 17.
    Exit Функція визначення парності odd(x)- визначення непарності х; х - ціле, результат - true або false. Наприклад, odd(2)=false, odd(5)=true
  • 18.
    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. Як на машинному рівні виконується оператор присвоювання?