da.coolreferat.com.ua страница 1
скачать файл



УРОК №22.

ТЕМА: Алгоритмічна конструкція розгалуження та її графічне подання. Оператори розгалуження.

Тема: Алгоритмічна конструкція розгалуження та її графічне подання. Оператори розгалуження.

Мета: Актуалізувати знання учнів про форми запису логічних операцій та операцій порівняння на мові програмування Delphi. Подати новий навчальний матеріал про алгоритмічну конструкцію розгалуження та її графічне подання, про оператори розгалуження. Закріпити даний матеріал під час виконання практичних завдань.

Тип уроку: Комбінований урок.
План уроку:

Актуалізація опорних знань учнів.

Вивчення нового навчального матеріалу.


  1. Алгоритми з розгалуженням.

  2. Розгалуження в Delphi.

Практичні завдання.

Домашнє завдання.


Актуалізація опорних знань:

1. Розповісти про запис логічних операцій мовою Delphi.

2. Які операції порівняння ви знаєте?
Вивчення нового навчального матеріалу:

1. Алгоритми з розгалуженням.

На попередніх уроках було розглянуто кілька лінійних алгоритмів, зокрема, алгоритми для розв’язування задач на обчислення значень арифметичного виразу для виконавця, який вміє виконувати арифметичні операції. Розглянемо приклад задачі, алгоритм розв’язування якої не є лінійним.



Задача 1. Обчислити значення виразу (a – b) / (c – d), де a, b, c, d – дійсні числа.

Звернемо увагу на те, що значення цього виразу можна обчислити не для будь-якого набору значень змінних a, b, c, d. Адже цей вираз містить дію ділення на вираз зі змінними, значення якого може дорівнювати нулю. Тобто якщо значення різниці c d дорівнює нулю, то значення виразу (a – b) / (c – d) обчислити не можна, а якщо не дорівнює, то можна.

Це означає, що система команд виконавця повинна містити команду порівняння двох чисел, наприклад таку: «s = t?», де s і t – або числа, або змінні чи вирази, які мають певні числові значення. Така команда є прикладом команди перевірки умови. Результатом виконання команди перевірки умови може бути або істина (умова виконується), або хиба (умова не виконується).

З іншого боку, ви вже знаєте, що порівняння «s = t?» можна розглядати як висловлення або як простий логічний вираз, який набуватиме значення true або false залежно від конкретних значень змінних s і t. І тоді команду перевірки умови можна інтерпретувати як команду обчислення значення логічного виразу.

Алгоритм розв’язування задачі 1 виглядатиме так:

1. Увести значення змінних a, b, c, d.

2. х := c – d.

3. Обчислити значення логічного виразу х = 0.

4. Якщо обчислене значення логічного виразу true, то вивести повідомлення «Вираз значення не має: ділення на нуль», після чого виконати команду 8, якщо false, то виконати команду 5.

5. у := a – b.

6. z := у/х.

7. Вивести значення змінної z.

8. Закінчити виконання алгоритму.

Команди 1–3 наведеного алгоритму виконуватимуться при будь-якому наборі значень змінних a, b, c, d. Подальше виконання цього алгоритму залежатиме від значення логічного виразу, обчисленого в команді 3. Якщо це значення false, то виконуватимуться команди 5–8, а якщо true, то виконуватимуться команда виведення повідомлення: «Вираз значення не має: ділення на нуль» і команда 8.

У блок-схемі алгоритму команди перевірки умови або обчислення значення логічного виразу позначаються блоком Рішення . Оскільки результатом виконання цих команд може бути або true, або false, то з цього блока є два виходи. Вихід Так означає, що результатом перевірки умови є true, а вихід Ні – результатом перевірки умови є false.

Наведемо блок-схему розглянутого вище алгоритму розв’язування задачі 1 (рис.).

Розглянемо фрагмент алгоритму на рисунку від блока Рішення до блока Термінатор (не включаючи цей блок).

Характерною рисою цього фрагмента алгоритму є те, що при кожному його виконанні деякі команди будуть виконуватися, причому кожна по одному разу, а деякі – виконуватися не будуть.

Це залежить від результату виконання команди перевірки умови (команди обчислення значення логічного виразу).

Такий фрагмент алгоритму називається розгалуженням.

Виконаємо наведений алгоритм для двох наборів даних. Ці набори підберемо так, щоб проілюструвати хід виконання алгоритму для кожного з двох можливих результатів обчислення значення логічного виразу.



Зверніть увагу: наведений алгоритм містить як розгалуження, так і лінійні фрагменти; у розгалуженнях можна використовувати як прості логічні вирази, так і складені.

В алгоритмах використовують розгалуження двох видів: повне розгалуження (рис.) і неповне розгалуження (рис.).



Виконання повного розгалуження відбувається так: виконавець виконує команду перевірки умови (команду обчислення значення логічного виразу); якщо результат виконання цієї команди true, то виконавець виконує послідовність команд 1, після чого переходить до виконання першої команди наступного фрагмента алгоритму; якщо ж результат виконання цієї команди false, то виконавець виконує послідовність команд 2, після чого також переходить до виконання першої команди наступного фрагмента алгоритму.

Виконання неповного розгалуження відрізняється від виконання повного розгалуження тим, що при результаті виконання команди перевірки умови false виконавець одразу переходить до виконання першої команди наступного фрагмента алгоритму.

Усередині розгалуження можуть знаходитися як лінійні фрагменти алгоритму, так і інші розгалуження. Наведемо приклад алгоритму із розгалуженням у розгалуженні.



Задача 2. Дано два числа. Визначити, чи рівні вони. Якщо ні, то яке з них більше?

Блок-схема алгоритму розв’язування цієї задачі представлена на рисунку.

Наведемо приклад ще однієї задачі, алгоритм розв’язування якої містить розгалуження.

Задача 3. Є дев’ять однакових на вигляд монет, одна з яких фальшива і легша за інші. Двома зважуваннями на терезах без важків визначити фальшиву монету.

Складемо алгоритм для виконавця з такою системою команд:

1. Узяти вказану купку монет.

2. Розділити вказану купку монет на три рівні купки.

3. Покласти на терези вказані купки монет.

4. Перевірити умову «Терези в рівновазі?».

5. Визначити при зважуванні, яка з купок монет легша.

6. Повідомити результат.

Для виконавця з такою системою команд алгоритм розв’язування задачі 3 такий:

1. Узяти дану купку з дев’яти монет.

2. Розділити взяту купку монет на три рівні купки.

3. Покласти на терези першу і другу купки монет.

4. Перевірити умову «Терези в рівновазі?».

5. Якщо істина, то взяти третю купку монет, якщо хиба, то взяти легшу купку.

6. Розділити взяту купку монет на три рівні купки.

7. Покласти на терези першу і другу купки монет.

8. Перевірити умову «Терези в рівновазі?».

9. Якщо істина, то повідомити: «Фальшивою є монета, що залишилася не покладеною на терези», якщо хиба, повідомити: «Фальшивою є легша монета».



Зверніть увагу: в алгоритмі розв’язування задачі 3 виконання або невиконання тих чи інших команд алгоритму залежить від того, в яку купку попаде фальшива монета. Наприклад, якщо під час першого зважування терези будуть не в рівновазі, то команда «Узяти третю купку монет» не буде виконана. Але якщо монети розподілити на купки по іншому, то може статися так, що при першому зважуванні терези будуть у рівновазі, і тоді не буде виконана команда «Узяти легшу купку монет».
2. Розгалуження в Delphi.

Команда повного розгалуження в Delphi має такий загальний вигляд:



If <логічний вираз>

Then begin

< послідовність команд 1>

end

Else begin

< послідовність команд 2>

end;

(англ. if – якщо, then – тоді, else – інакше).

Є в Delphi й команда неповного розгалуження:

If <логічний вираз>

Then begin

<послідовність команд>

end;

Виконання команди повного розгалуження відбувається так: обчислюється значення логічного виразу; якщо це значення true, то виконується послідовність команд 1 і після цього виконується команда, наступна за командою розгалуження; якщо це значення false, то виконується послідовність команд 2 і після цього виконується команда, наступна за командою розгалуження.

Виконання команди неповного розгалуження відбувається так: обчислюється значення логічного виразу; якщо це значення true, то виконується послідовність команд і після цього виконується команда, наступна за командою розгалуження; якщо це значення false, одразу виконується команда, наступна за командою розгалуження.

Звернітьтувагу: якщо після ключових слів Then і Else слідують тільки по одній команді, то операторні дужки begin і end можна не ставити; перед Else ставити крапку з комою не можна.

Якщо записати в Delphi фрагмент програми розв’язування задачі 1 (блок-схема відповідного алгоритму наведена на рис.), то він виглядатиме так:



a := StrToFloat (Edit1.Text);

b := StrToFloat (Edit2.Text);

c := StrToFloat (Edit3.Text);

d := StrToFloat (Edit4.Text);

x := c–d;

If x = 0

Then Label1.Caption := 'Вираз значення не має: ділення на нуль'

Else begin

y := a–b;

z := y/x;

Label1.Caption := FloatToStr (z);

end;

Зверніть увагу: обчислення значення виразу можна було б записати не двома командами, а однією: z := (a–b)/x.

Логічний вираз у команді розгалуження може бути простим або складеним. Складені логічні вирази утворюються з простих шляхом використання розглянутих у попередньому пункті операцій кон’юнкції (and), диз’юнкції (or), заперечення (not). Порядок виконання цих операцій в Delphi такий самий, як і в математичній логіці.

Наведемо приклад задачі з використанням складених логічних виразів.

Задача 4. Обчислити значення заданої функції

Фрагмент програми для розв’язування цієї задачі виглядатиме так:



x : StrToFloat (Edit1.Text);

If (x > –3) and (x < 5)

Then y := 2*x – 12

Else y := 7 – 8*x;

Label1.Caption := FloatToStr (y);

Команда розгалуження в Delphi може містити в собі іншу команду розгалуження. Ось як виглядатиме команда розгалуження для алгоритму, наведеного на рисунку:



If x = у

Then Label1.Caption := 'Числа рівні'

Else If x > у

Then Label1.Caption := 'Перше число більше'

Else Label1.Caption := 'Друге число більше';
Практичні завдання:

1. Складіть блок-схему алгоритму обчислення значення виразу (a + b) – c : a.

Виконайте його при різних значеннях a, b, c. Підберіть числа так, щоб кожного разу виконання алгоритму відбувалося по-різному.



2. Складіть блок-схему алгоритму обчислення значення виразу (a + b) – c : (a – 2b). Виконайте його при різних значеннях a, b, c. Підберіть числа так, щоб кожного разу виконання алгоритму відбувалося по-різному.

3. Складіть блок-схему алгоритму знаходження x з рівняння ax = b. Виконайте його при: а) a = 2, b = –8; б) a = 20, b = 0; в) a = 0, b = 12; г) a = 0, b = 0.

4*. Складіть блок-схему алгоритму розв’язування квадратного рівняння.

Виконайте його при різних значеннях коефіцієнтів рівняння.



5*. Є деяка кількість однакових на вигляд монет. Відомо, що серед них є одна фальшива і вона важча за справжню. Складіть алгоритм виявлення фальшивої монети найменшою кількістю зважувань на шалькових терезах без важків, якщо кількість монет дорівнює: а) 3; б) 9; в) 27; г) 30.

6. Створіть проект, який визначає менше з двох довільних дійсних чисел або виводить повідомлення, що числа рівні. Створіть у власній папці папку Проект 22.1 і збережіть у ній проект.

7*. Створіть проект, який визначає найменше число серед трьох різних чисел. Створіть у власній папці папку Проект 22.2 і збережіть у ній проект.

8*. Створіть проект, який за градусною мірою двох кутів трикутника обчислює градусну міру третього кута і визначає вид цього трикутника за його кутами (гострокутний, прямокутний або тупокутний). Створіть у власній папці папку Проект 22.3 і збережіть у ній проект.

9*. Створіть проект, в якому кнопка переміщуватиметься на 20 пікселів вправо при наведенні на неї вказівника. Після того як кнопка зникне за правою межею вікна, вона повинна з’явитися біля лівої його межі. Створіть у власній папці папку Проект 2.8.9 і збережіть у ній проект.

10. Створіть проект, в якому можна обчислити значення функції

Створіть у власній папці папку Проект 22.4 і збережіть у ній проект.


Домашнє завдання:

  1. Вивчити конспект.

  2. Опрацювати матеріал підручника на ст. 73-79. (Й.Я. Ривкінд, Т.І. Лисенко, Л.А. Чернікова, В.В. Шакотько).

  3. Завершити виконання практичних завдань.
скачать файл



Смотрите также:
Тема: Алгоритмічна конструкція розгалуження та її графічне подання. Оператори розгалуження
100.05kb.
Алгоритмічна конструкція повторення та її графічне подання
48.2kb.
Урок №68 Практична робота №23 Тема уроку: Побудова алгоритмів структури розгалуження
27.29kb.
Оператори циклів
68.99kb.
Тема. Базові структури алгоритмів: слідування, розгалуження, повторення. Графічні схеми базових структур алгоритмів. Конструювання алгоритмів за методом „зверху донизу
29.04kb.
Урок №11 Тема уроку: Оператор вибору case. Правила запису та виконання оператора вибору. Керуюча змінна, діапазон її значень. Практична робота №17 «Розв'язок та перевірка задач з використанням оператора вибору та розгалуження»
39.07kb.
Тема: Подання даних в еом та двійкова арифметика
129.19kb.
Урок № Тема : Статистичнi данi. Способи подання даних. Характеристики варiацiйних рядiв. Середнi величини. Мода, медiана вибiрки Мета
52.4kb.
Лекція №7 Тема: Синтаксис реляційної алгебри, традиційні операції План Реляційні оператори
51.23kb.
Статистичні дані. Способи подання даних
105.41kb.
Згідно з гост 12 032-78 конструкція робочого місця І взаємне розташування всіх його елементів повинне відповідати гігієнічним, антропометричним, фізіологічним І психологічним вимогам
89.32kb.
Лекція №12 Оператори
66.23kb.