32
Програмування ТЕМА 2. РОЗГАЛУЖЕНІ ПРОГРАМИ 09.09.2018 КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА, КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ 1

ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

ПрограмуванняТЕМА 2. РОЗГАЛУЖЕНІ ПРОГРАМИ

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ1

Page 2: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Висловлювання. Область істинностіОбластю істинності B2 назвемо множину, яка складається з двохвеличин

B2 ={False, True}◦ False – хибність

◦ True - істина

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ2

Page 3: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Визначення бульовихопераційВизначимо три бульових операції:

◦ а) диз’юнкція p or q

◦ b) кон’юнкция p and q

◦ c) заперечення not p

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ3

p q p or q p and q p not p

False False False False False True

False True True False True False

True False True False

True True True True

Page 4: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Визначення висловлюваньВисловлювання - це булів вираз, який визначається індуктивно:

◦ 1. Якщо b - бульова константа або змінна, то b - висловлювання;

◦ 2. Якщо b і c висловлювання, то (b or c), (b and c), (not b) -висловлювання.

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ4

Page 5: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Приклади висловлюваньTrue

p

p or q

p and q or r

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ5

Page 6: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Властивості висловлюваньа) комутативність диз’юнкції і кон’юнкції◦ р or q ≡ q or р, р and q ≡ q and р;

b) асоціативність диз’юнкції і кон’юнкції◦ (р or q) or r ≡ р or (q or r), (р and q) and r ≡ р and (q and r);

c) дистрибутивність кон’юнкції відносно диз’юнкції◦ р and (q or r) ≡ р and q or р and r,

дистрибутивність диз’юнкції відносно кон’юнкції◦ р or q and r ≡ (р or q) and (р or r);

d) властивості бульових констант

р or True ≡ True, р or False ≡ р,

р and True ≡ р, р and False ≡ False;

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ6

Page 7: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Властивості висловлювань. 2e) ідемпотентність (поглинання)

◦ р or р ≡ р, р and р ≡ р;

f) подвійне заперечення◦ not(not p) ≡ p;

g) правила де Моргана ◦ not(p or q) ≡ not p and not q,

◦ not(p and q) ≡ not p or not q;

h) закон виключення третього◦ р or not р ≡ True;

i) закон протиріччя◦ р and not р ≡ False.

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ7

Page 8: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

ВідношенняВідношення дає одне бульове значення за одною або декільком (частіше за все двом) арифметичним величинам.

Утворимо стандартний набір відношень:◦ х рівне у, або х == у;

◦ х не рівне у, або х != у;

◦ х менше, ніж у, або х < у;

◦ х більше, ніж у, або х > у;

◦ х менше або рівне у, або х <= у;

◦ х більше або рівне у, або х >= у.

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ8

Page 9: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Визначення відношеньВизначимо множину Rel = { ==, !=, <, >, <=, >= }.

Тоді відношення – це ◦ e1 r e2

◦ де r ϵ Rel, e1, e2 – вирази,

або

◦ e1 r1 e2 r2 e3

◦ де r1, r2 ϵ Rel, e1, e2, e3 – вирази

При цьому◦ e1 r1 e2 r2 e3 ≡ e1 r1 e2 and e2 r2 e3

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ9

Page 10: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Приклади відношеньa > 1

x > 0 and y > 0

4 < 6

0 == 1

0 <= x < 10

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ10

Page 11: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Властивості відношень◦ a) x != y ≡ not(x == y) ≡ x < y or x > y;

◦ b) x <= y ≡ not(x > y) ≡ x < y or x == y;

◦ c) x >= y ≡ not(x < y) ≡ x > y or x == y.

Окрім значень з B2 (True, False) відношення можуть також бути невизначеними. Наприклад, відношення

1/x > 0

невизначене при x == 0.

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ11

Page 12: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

УмовиУмовою F будемо називати булів вираз, побудований індуктивно заправилом:

◦ 1. Якщо F висловлювання, то F - умова;

◦ 2. Якщо F відношення, то F - умова;

◦ 3. Якщо F арифметичний вираз, то F – умова;

◦ 4. Якщо F, F1, F2 – умови, то F1, or F2, F1, and F2, not F – умови.

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ12

Page 13: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Пріоритет операцій

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ13

Операції

**

*, /, //, %

+, -

==, !=, >, <, >=, <=

not

and

or

Page 14: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Приклади умовp and q or r

x > 0 and y > 0

a > 1 and p

(b + 1) * d

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ14

Page 15: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Бульове присвоєнняБульове присвоєння

q = F◦ де q – змінна, F – умова.

Приклад:

p = 0 <= a <= 1

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ15

Page 16: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

ПрикладПеревірити належність точки з координатами (x,y) другому квадранту

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ16

Page 17: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Умовний виразСинтаксис:

e1 if F else e2

◦ де F - умова, e1, e2 - вирази

Якщо умова F істинна, то значення умовного виразу – це e1, інакше значенням є e2

Приклади:

x if x >= 0 else -x

a if a >= b else b

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ17

Page 18: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

РозгалуженняСинтаксис:

if F :

P

else:

Q◦ де F – умова, P, Q – ланцюг команд.

Правило розгалуження:Виконання розгалуження здійснюється у два кроки.

1. Python обчислює значення F0 умови F.

2. 2. Python виконує інструкцію Р, якщо F0 = True, або інструкцію Q, якщо F0 = False.

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ18

Page 19: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Захищена командаСинтаксис:

if F :

P◦ де F – умова, P – ланцюг команд.

Правило виконання

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ19

if F:

P

≡ if F:

P

else:

pass

Page 20: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Каскадне розгалуженняСинтаксис:

if F1:

P1

elif F2:

P2

...

elif Fn:

Pn

else:

Q◦ де F1, F2, …, Fn – умови, P1, P2, …, Pn, Q – ланцюги команд.

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ20

Page 21: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Правило виконаннякаскадного розгалуженняif F1:

P1

elif F2:

P2

...

elif Fn:

Pn

else:

Q

≡ if F1:

P1

else:

if F2:

P2

...

else:

if Fn:

Pn

else:

Q

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ21

Page 22: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Властивості розгалуженьa)

b)

c)

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ22

if True:

P

≡ P

if False:

P

≡ pass

if True:

P

else:

Q

≡ P

Page 23: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Властивості розгалужень. 2d)

e)

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ23

if False:

P

else:

Q

≡ Q

if not F:

P

else:

Q

≡ if F:

Q

else:

P

Page 24: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Властивості розгалужень. 3f) Якщо інструкція R не змінює умову F, то

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ24

if F:

R

P

else:

R

Q

≡ R

if F:

P

else:

Q

Page 25: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Властивості розгалужень. 4g)

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ25

if F:

P

R

else:

Q

R

≡ if F:

P

else:

Q

R

Page 26: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Приклади розгалуженьif a > b:

max2 = a

else:

max2 = b

if x < 0:

x = -x

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ26

Page 27: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Приклади розгалужень.2if x < 0:

y = -1

elif x < 2:

y = x - 1

else:

y = 1

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ27

Page 28: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Розгалужені програмиРозгалужена програма – це програма яка є ланцюгом команд введення, виведення, присвоєння або тотожної команди, а також розгалуження.

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ28

Page 29: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Приклад: обчисленнямаксимуму з 3 чиселОбчислити m3=max{a, b, c}

Спочатку обчислимо m2=max{a, b}

Тоді

| c, якщо c > m2

m3 = {

| m2, якщо c <= m2

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ29

Page 30: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Приклад: Розв’язання рівнянняax2 + bx + c = 0Позначимо кількість дійсних розв’язків рівняння через k.

Розглянемо випадки:

I) a=b=c=0 => k=∞

II) a=b=0, c≠0 => k=0

III) a=0, b ≠0 => k=1

IV) a ≠0. Обчислимо d=b2 – 4ac◦ a) d>=0 => k=2

◦ b) d<0 => k=0

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ30

Page 31: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

РезюмеМи розглянули:

1. Алгебру висловлювань, бульові операції, їх властивості

2. Відношення та їх властивості

3. Умови

4. Умовний вираз

5. Розгалуження (звичайне розгалуження, захищена команда, каскадне розгалуження)

6. Розгалужені програми

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ31

Page 32: ТЕМА 2. РОЗГАЛУЖЕНІ · 2018-09-13 · Де прочитати 1. ОбвінцевО.В. Інформатика та програмування. Курс на основі

Де прочитати1. Обвінцев О.В. Інформатика та програмування. Курс на основі

Python. Матеріали лекцій. – К., Основа, 2017

2. A Byte of Python (Russian) Версия 2.01 Swaroop C H (Translated by Vladimir Smolyar), http://wombat.org.ua/AByteOfPython/AByteofPythonRussian-2.01.pdf

3. Бублик В.В., Личман В.В., Обвінцев О.В.. Інформатика тапрограмування. Електронний конспект лекцій, 2003 р., http://www.matfiz.univ.kiev.ua/books

4. Марк Лутц, Изучаем Python, 4-е издание, 2010, Символ-Плюс

5. Самоучитель Python. http://pythonworld.ru/samouchitel-python

6. С. Шапошникова. Python. Введение в программирование https://younglinux.info/python.php

7. Python 3.4.3 documentation

09.09.2018КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА,

КАФЕДРА МАТЕМАТИЧНОЇ ФІЗИКИ. О.В. ОБВІНЦЕВ32