Управление исполнителями. § 29. Алгоритмы и исполнители

Содержание

Слайд 2

Управление исполнителями § 29. Алгоритмы и исполнители

Управление исполнителями

§ 29. Алгоритмы и исполнители

Слайд 3

Что такое алгоритм? Алгоритм — это точное описание порядка действий некоторого

Что такое алгоритм?

Алгоритм — это точное описание порядка действий некоторого исполнителя.

Исполнитель

– это устройство или одушевлённое существо (человек), способное понять и выполнить команды, составляющие алгоритм.

Формальные исполнители: не понимают (и не могут понять) смысл команд.

Алгоритм – это порядок выполнения действий.

Слайд 4

Исполнитель Робот стенка Система команд исполнителя (СКИ): вверх вниз вправо влево

Исполнитель Робот

стенка

Система команд исполнителя (СКИ):

вверх
вниз

вправо
влево

Состояние исполнителя:

Среда — это обстановка, в

которой работает исполнитель.
Слайд 5

Свойства алгоритма Дискретность — алгоритм состоит из отдельных команд, каждая из

Свойства алгоритма

Дискретность — алгоритм состоит из отдельных команд, каждая из которых

выполняется ограниченное (не бесконечное) время.
Понятность — алгоритм содержит только команды, входящие в систему команд исполнителя.
Определённость — при каждом выполнении алгоритма с одними и теми же исходными данными должен быть получен один и тот же результат.
Слайд 6

Необязательные свойства алгоритма ? Конечность (результативность) — для корректного набора данных

Необязательные свойства алгоритма

? Конечность (результативность) — для корректного набора данных алгоритм

должен заканчиваться с некоторым результатом (не зацикливаться).
? Корректность — для допустимых исходных данных алгоритм должен приводить к правильному результату.
? Массовость — алгоритм можно использовать для решения множества однотипных задач с различными исходными данными (решение «в буквах»).
Слайд 7

Одна задача – много алгоритмов Задача. Вычислите S = 1 +

Одна задача – много алгоритмов

Задача. Вычислите
S = 1 + 2 +

3 + 4 + 5 + … + 99 + 100

Решение К.Ф. Гаусса:
1 + 100 = 2 + 99 = 3 + 98 = …
= 50 + 51 = 101
S = 50 · 101 = 5050

Слайд 8

Управление исполнителями Ручное (непосредственное, «с пульта»): Программное (по готовой программе): бортовой

Управление исполнителями

Ручное (непосредственное, «с пульта»):

Программное (по готовой программе):

бортовой компьютер

Программа — это

алгоритм, записанный на языке, понятном компьютеру.
Слайд 9

Управление исполнителями § 30. Способы записи алгоритмов

Управление исполнителями

§ 30. Способы записи алгоритмов

Слайд 10

Алгоритм «О» Словесная форма: Даны два натуральных числа. Пока первое число

Алгоритм «О»

Словесная форма:
Даны два натуральных числа. Пока первое число не меньше

второго, заменять его на разность первого и второго. Результат работы алгоритма — полученное первое число.

3

1

2

2

неоднозначность естественных языков

Слайд 11

Алгоритм «О» По шагам: Вход: два натуральных числа, a и b.

Алгоритм «О»

По шагам:
Вход: два натуральных числа, a и b.
Шаг 1. Если

a < b, перейти к шагу 4.
Шаг 2. Заменить a на a – b.
Шаг 3. Перейти к шагу 1.
Шаг 4. Стоп.
Результат: значение a.

не все знают русский язык

Слайд 12

Алгоритм «О» Блок-схема: начало и конец алгоритма ввод и вывод данных

Алгоритм «О»

Блок-схема:

начало и конец алгоритма

ввод и вывод данных

условие (выбор)

операции с данными

начало

конец

a

< b?

a ← a – b

a, b

a

да

нет

Условные обозначения

присвоить a значение a – b

Слайд 13

Ручная прокрутка (трассировка) Вход: два натуральных числа, a и b. Шаг

Ручная прокрутка (трассировка)

Вход: два натуральных числа, a и b.
Шаг 1. Если

a < b, перейти к шагу 4.
Шаг 2. Заменить a на a – b.
Шаг 3. Перейти к шагу 1.
Шаг 4. Стоп.
Результат: значение a.

4

Слайд 14

Переменные Переменная — это величина, значение которой можно изменять во время

Переменные

Переменная — это величина, значение которой можно изменять во время работы

алгоритма.

Вход: два натуральных числа, a и b.
Шаг 1. Если a < b, перейти к шагу 4.
Шаг 2. Заменить a на a – b.
Шаг 3. Перейти к шагу 1.
Шаг 4. Стоп.
Результат: значение a.

a ← a – b
или
a := a – b

присваивание значения

Слайд 15

Языки программирования Программа — это алгоритм, записанный на языке, понятном компьютеру.

Языки программирования

Программа — это алгоритм, записанный на языке, понятном компьютеру.

101110000000111100000000
101110110000010000000000
0011101111000011
0111110000000100
0010101111000011
1110101111111000
1100110100100000

Алгоритм «О»:

сложно

писать и понимать программы
Слайд 16

Язык ассемблера 101110000000111100000000 101110110000010000000000 0011101111000011 0111110000000100 0010101111000011 1110101111111000 1100110100100000 mov ax,

Язык ассемблера

101110000000111100000000
101110110000010000000000
0011101111000011
0111110000000100
0010101111000011
1110101111111000
1100110100100000

mov ax, 15
mov bx, 4
m: cmp ax, bx

jl end
sub ax, bx
jmp m
end: int 20h

Машинные коды:

Язык ассемблера:

Ассемблер — это программа, которая переводит символьную запись команд в машинные коды.

зависят от процессора!

непереносимость программ

Слайд 17

Языки высокого уровня 1) легко понимаются человеком 2) не «привязаны» к

Языки высокого уровня

1) легко понимаются человеком
2) не «привязаны» к командам конкретного

процессора

Школьный алгоритмический язык:

цел a, b
a:=15
b:=4
нц пока a>=b
a:=a-b
кц

Слайд 18

Языки высокого уровня 1957: FORTRAN = FORmula TRANslator для решения научных

Языки высокого уровня

1957: FORTRAN = FORmula TRANslator
для решения научных задач


1972: С (Д. Ритчи, К. Томпсон)

С++, C#, Java, JavaScript, …

1991: Python (Г. ван Россум)

Для программирования сайтов:
PHP, JavaScript

Логическое программирование:
Prolog

Учебные языки:
BASIC, Паскаль, Школьный алгоритмический язык

Слайд 19

Управление исполнителями § 31. Примеры исполнителей

Управление исполнителями

§ 31. Примеры исполнителей

Слайд 20

Формальный исполнитель Формальный исполнитель — это исполнитель, который одну и ту

Формальный исполнитель

Формальный исполнитель — это исполнитель, который одну и ту же

команду всегда понимает однозначно и выполняет одинаково.

23321

→ А

443

2114

2334

21

Слайд 21

Исполнитель Черепаха вперед 30 вправо 90 вперед 30 вправо 90 вперед

Исполнитель Черепаха

вперед 30
вправо 90
вперед 30
вправо 90
вперед 30
вправо 90
вперед 30
вправо 90

градусов

повтори 4

[ вперед 30 вправо 90 ]

число сторон

повтори 12 [ вперед 50 вправо 45 ]

повтори 10 [ вперед 50 вправо 60 ]

шагов

Слайд 22

Исполнитель Черепаха повтори 4 [ вперед 30 вправо 45 ] незамкнутая

Исполнитель Черепаха

повтори 4 [ вперед 30 вправо 45 ]

незамкнутая ломаная

повтори 45

[ вперед 30 вправо 45
вправо 45]

повтори 12 [ вправо 15 вперед 30
вправо 45 ]

повтори 5 [ вправо 15 вперед 30
вправо 15 ]

повтори 15 [ вправо 80 вперед 30
влево 35 ]

Слайд 23

Исполнитель Шифровальщик Если цепочка символов начинается с гласной буквы, Шифровальщик переставляет

Исполнитель Шифровальщик

Если цепочка символов начинается с гласной буквы, Шифровальщик переставляет последнюю

букву в начало слова, а если с согласной, то меняет местами первую и вторую буквы.
Этот алгоритм применили к слову КОТИК. Какое слово получилось?

Этот алгоритм дважды применили к слову КОТИК. Какое слово получилось?

КОТИК → ОКТИК

КОТИК → ОКТИК → КОКТИ

Слайд 24

Исполнитель Шифровальщик Если в цепочке символов чётное количество букв, Шифровальщик добавляет

Исполнитель Шифровальщик

Если в цепочке символов чётное количество букв, Шифровальщик добавляет в

середину слова букву Я, а если нечётное – удваивает среднюю букву.
Этот алгоритм применили к слову КОТИК. Какое слово получилось?

Этот алгоритм дважды применили к слову КОТИК. Какое слово получилось?

КОТИК → КОТТИК

КОТИК → КОТТИК → КОТЯТИК

Слайд 25

Исполнитель Шифровальщик АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ ПРИВЕТ ВАСЯ А→Б П→Р РСКГЁУ ГБТА Б→В Я→А

Исполнитель Шифровальщик

АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

ПРИВЕТ ВАСЯ

А→Б

П→Р

РСКГЁУ ГБТА

Б→В

Я→А

Р→С

Шифр Цезаря

АВМПЛП

Расшифруйте:

НПСЛПГЭ

ЛМАЛТБ

← ЯБЛОКО

← МОРКОВЬ

← КЛЯКСА

Слайд 26

Исполнитель Удвоитель Работает с одним числом и умеет выполнять с ним

Исполнитель Удвоитель

Работает с одним числом и умеет выполнять с ним две

операции (команды):
1. прибавь 1
2. умножь на 2

Программа – это последовательность номеров команд, которые нужно выполнить.

Программа 12211

2

начальное число

3

6

12

13

14

1

2

2

1

1

результат

Слайд 27

Исполнитель Удвоитель прибавь 1 умножь на 2 Какие числа можно получить?

Исполнитель Удвоитель

прибавь 1
умножь на 2

Какие числа можно получить?
при целом x ≥

0
x, x+1, x+2, …
при целом x < 0
любые целые

Программа 1212

x

x+1

1

2(x+1)

2

2x+3

1

4x+6

2

а 34?

Слайд 28

Управление исполнителями § 32. Оптимальные программы

Управление исполнителями

§ 32. Оптимальные программы

Слайд 29

Что такое оптимальная программа? Оптимальная программа — это самая лучшая программа

Что такое оптимальная программа?

Оптимальная программа — это самая лучшая программа по

какому-то показателю.

Напишите две программы для Удвоителя:
3 → … → 7

Слайд 30

Составление программы Используя команды: 1. прибавь 1 2. умножь на 2

Составление программы

Используя команды:
1. прибавь 1
2. умножь на 2
написать самую

короткую программу, которая из 6 получает 28.

Ответ: 122

6

7

25

1

дерево вариантов

12

8

14

13

24

9

16

15

28

14

26

48

2

1

1

1

1

1

2

2

2

2

2

1

1

2

2

2

Слайд 31

Составление программы (с конца) 28 27 14 26 13 7 1

Составление программы (с конца)

28

27

14

26

13

7

1

1

1

2

2

2

2

Ответ: 122

25

13

1

2

12

6

1

1

1

нельзя делить на 2!

дерево вариантов

Слайд 32

Управление исполнителями § 33. Линейные алгоритмы

Управление исполнителями

§ 33. Линейные алгоритмы

Слайд 33

Что такое линейный алгоритм? В линейном алгоритме команды выполняются в том

Что такое линейный алгоритм?

В линейном алгоритме команды выполняются в том порядке,

в котором они записаны.

нужно закрасить

СКИ Робота:

закрасить

использовать Робот
алг Переход
нач
вниз
закрасить
влево
закрасить
кон

подключить исполнителя

Слайд 34

Ошибки в программах Синтаксические: исполнитель не понимает команду, так как она

Ошибки в программах

Синтаксические: исполнитель не понимает команду, так как она неверно

записана.

закрась
налево

закрасить
влево

Логические: исполнитель понимает и выполняет команды, но делает не то, что нужно.

закрасить
влево
закрасить

Слайд 35

Ошибки в программах вниз закрасить вправо закрасить вправо столкновение со стенкой

Ошибки в программах

вниз
закрасить
вправо
закрасить

вправо

столкновение со стенкой

При вычислениях: деление на 0.

Отладка – это

поиск и исправление ошибок в программе.

F8 – выполнение по шагам.

Слайд 36

Вычислительные задачи Задача. Сколько километров проехал автомобиль за 2 часа, если

Вычислительные задачи

Задача. Сколько километров проехал автомобиль за 2 часа, если его

средняя скорость равна 60 км/ч?

Массовость: решаем « в буквах».

время – t, скорость – v, расстояние – S

Вход: v, t.
Шаг 1. S ← v ⋅ t.
Результат: значение S.

Слайд 37

Вычислительные задачи алг Путь нач вещ v, t, S вывод "Введите

Вычислительные задачи

алг Путь
нач
вещ v, t, S
вывод "Введите скорость:

"
ввод v
вывод "Введите время: "
ввод t
S:=v*t
вывод "Расстояние: ", S
кон

переменные

вещественные – могут быть с дробной частью!

Слайд 38

Управление исполнителями § 34. Вспомогательные алгоритмы

Управление исполнителями

§ 34. Вспомогательные алгоритмы

Слайд 39

Зачем это нужно? алг Два сапога нач Сапог вправо; вправо вправо

Зачем это нужно?

алг Два сапога
нач
Сапог
вправо; вправо
вправо
Сапог
кон

алг Сапог
нач

вниз; закрасить
вниз; закрасить
вправо; закрасить
влево; вверх; вверх
кон

вспомогательный алгоритм (процедура)

вызов

вызов

Слайд 40

Вспомогательные алгоритмы Вспомогательный алгоритм решает отдельную задачу и может быть использован

Вспомогательные алгоритмы

Вспомогательный алгоритм решает отдельную задачу и может быть использован при

решении более сложных задач.

чтобы он выполнился, его нужно вызвать:

Сапог

возврат: после завершения его работы управление передаётся следующей команде вызывающего алгоритма

Сапог
вправо

алг Сапог
нач
...
кон

F7 – по шагам c входом в процедуры.

Слайд 41

Два метода составления программ 1. Последовательное уточнение («сверху вниз») алг Два

Два метода составления программ

1. Последовательное уточнение
(«сверху вниз»)

алг Два сапога
нач

Сапог
вправо; вправо
вправо
Сапог
кон

сначала:

выделили части задачи, для которых будем писать процедуру

потом:

алг Сапог
нач
...
кон

Слайд 42

Два метода составления программ 2. «Снизу вверх» – сначала составить процедуры,

Два метода составления программ

2. «Снизу вверх» – сначала составить процедуры, потом

собрать основную программу.

процедура:



Б

алг Пара
нач
вправо
закрасить
влево; вверх
вправо
закрасить
вверх; вправо
вниз; вниз
кон

Слайд 43

Проектирование «снизу вверх» Сборка основной программы: ∙ ∙ ∙ ∙ ∙

Проектирование «снизу вверх»

Сборка основной программы:







А

Б

В

Г

алг ТриПары
нач
влево; влево
вверх; вправо
Пара

Пара
Пара
кон

привести в удобную начальную точку

Слайд 44

Управление исполнителями § 35. Циклические алгоритмы

Управление исполнителями

§ 35. Циклические алгоритмы

Слайд 45

Что такое циклический алгоритм? Цикл – это многократное выполнение некоторой последовательности

Что такое циклический алгоритм?

Цикл – это многократное выполнение некоторой последовательности действий.


нц 6 раз
вправо
закрасить
кц

начало цикла

конец цикла

вправо закрасить

тело цикла

Слайд 46

Блок-схема циклического алгоритма тело цикла цикл – возврат к предыдущей команде loop – петля

Блок-схема циклического алгоритма

тело цикла

цикл – возврат к предыдущей команде

loop – петля


Слайд 47

Выбор начального положения нц 6 раз вправо закрасить кц в клетку

Выбор начального положения

нц 6 раз
вправо
закрасить
кц

в клетку Г

нц 6

раз
закрасить
вправо
кц

в клетку Д

Слайд 48

Вложенные циклы нц 4 раз | закрасить ряд | к следующему

Вложенные циклы

нц 4 раз
| закрасить ряд
| к следующему ряду
кц

комментарии

– пояснения для человека

| закрасить ряд
нц 6 раз
вправо
закрасить
кц

| к следующему ряду
вниз
нц 6 раз
влево
кц

Слайд 49

Вложенные циклы нц 4 раз | закрасить ряд нц 6 раз

Вложенные циклы

нц 4 раз
| закрасить ряд
нц 6 раз
вправо

закрасить
кц
| к следующему ряду
вниз
нц 6 раз
влево
кц
кц

нц 6 раз
вправо
закрасить
кц

нц 6 раз
влево
кц

Слайд 50

Управление исполнителями § 36. Переменные

Управление исполнителями

§ 36. Переменные

Слайд 51

Зачем нужны переменные? длина ряда – величина переменная N нц N

Зачем нужны переменные?

длина ряда – величина переменная

N

нц N раз
вправо
закрасить
кц
вниз
нц

N раз
влево
кц

N:=2

N:=N+1

начальное значение

изменение с каждым шагом

Слайд 52

Использование переменных цел N нц 4 раз N:=2 нц N раз

Использование переменных

цел N
нц 4 раз
N:=2
нц N раз
вправо
закрасить

кц
вниз
нц N раз
влево
кц
N:=N+1
кц

объявление переменной

тип переменной:
цел – целая
вещ – вещественная
лог – логическая
лит – строка символов
допустимые операции
сколько места выделить в памяти

следующий ряд на 1 клетку длиннее

N:=2
нц 4 раз

Слайд 53

Процедуры с параметрами алг Ряд(цел N) нач нц 4 раз вверх

Процедуры с параметрами

алг Ряд(цел N)
нач
нц 4 раз
вверх
закрасить

кц
кон

Если все ряды одинаковые (4 клетки):

меняется!

параметр

Использование:

алг Трапеция
нач
Ряд(5) | при N = 5
Ряд(4) | при N = 4
Ряд(3) | при N = 3
кон

Слайд 54

Управление исполнителями § 37. Циклы с условием

Управление исполнителями

§ 37. Циклы с условием

Слайд 55

Что такое цикл с условием? Вход: два натуральных числа, a и

Что такое цикл с условием?

Вход: два натуральных числа, a и b.
Шаг

1. Если a < b, перейти к шагу 4.
Шаг 2. Заменить a на a – b.
Шаг 3. Перейти к шагу 1.
Шаг 4. Стоп.
Результат: значение a.

a < b

a ≥ b

Слайд 56

Логические команды Подойти к стене: Логическая команда — это запрос, на

Логические команды

Подойти к стене:

Логическая команда — это запрос, на который исполнитель

отвечает «да» или «нет».

логическое значение

сверху стена
справа стена
снизу стена
слева стена

сверху свободно
справа свободно
снизу свободно
слева свободно

Обратная связь — это данные, которые передаются от датчиков к управляющему устройству.

Слайд 57

Цикл с условием Подойти к стене: алг До стены нач нц

Цикл с условием

Подойти к стене:

алг До стены
нач
нц пока слева свободно

влево
кц
кон

слева свободно

цикл выполняется, пока условие истинно

Зацикливание — это ситуация, когда цикл выполняется бесконечно.

Слайд 58

закрасить Вложенные циклы 4 ряда неизвестной длины: нц 4 раз |

закрасить

Вложенные циклы

4 ряда неизвестной длины:

нц 4 раз
| подзадача 1
|

подзадача 2
кц

Закрасить ряд:

Перейти к следующему:

нц пока справа свободно
вправо
закрасить
кц

вниз
нц пока слева свободно
влево
кц

нц пока слева свободно
влево
кц
вниз

Слайд 59

Управление исполнителями § 38. Разветвляющиеся алгоритмы

Управление исполнителями

§ 38. Разветвляющиеся алгоритмы

Слайд 60

Что такое разветвляющийся алгоритм? Привести Робота в клетку Б влево вниз

Что такое разветвляющийся алгоритм?

Привести Робота в клетку Б

влево
вниз

вправо
вниз

если слева свободно то


влево
вниз
иначе
вправо
вниз
все

условие

влево
вниз

вправо
вниз

выполняется, если условие истинно

выполняется, если условие ложно

Слайд 61

Разветвляющийся алгоритм если слева свободно то влево вниз иначе вправо вниз

Разветвляющийся алгоритм

если слева свободно то
влево
вниз
иначе
вправо


вниз
все

вниз

вниз

если слева свободно то
влево
иначе
вправо
все
вниз

вниз

Слайд 62

Ветвление в неполной форме вниз влево вниз если слева свободно то

Ветвление в неполной форме

вниз

влево
вниз

если слева свободно то
влево
все
вниз

иначе ничего

делать не нужно!

пусто!

Слайд 63

Вложенное ветвление вверх вниз влево вниз если сверху свободно то а) если снизу свободно то б)

Вложенное ветвление

вверх

вниз

влево
вниз

если сверху свободно то а)

если снизу свободно то б)

Слайд 64

Вложенное ветвление если сверху свободно то | работаем с задачей а

Вложенное ветвление

если сверху свободно то
| работаем с задачей а


иначе
если снизу свободно то
| работаем с задачей б
иначе
| работаем с задачей в
все
все

если снизу свободно то
| работаем с задачей б
иначе
| работаем с задачей в
все

вложенное ветвление!

Слайд 65

Управление исполнителями § 39. Ветвления и циклы

Управление исполнителями

§ 39. Ветвления и циклы

Слайд 66

Пример задачи нц пока снизу свободно если справа свободно то вправо

Пример задачи

нц пока снизу свободно
если справа свободно то
вправо

иначе
вверх; вправо; вниз
все
закрасить
кц
Слайд 67

Базовые алгоритмические конструкции Алгоритм решения любой задачи можно составить с помощью

Базовые алгоритмические конструкции

Алгоритм решения любой задачи можно составить с помощью трёх

базовых конструкций — следования, ветвления и цикла.
Слайд 68

Цикл с постусловием Пример: ввести число, которое обязательно должно быть положительным.

Цикл с постусловием

Пример: ввести число, которое обязательно должно быть положительным.

Слайд 69

Анализ алгоритмов для Раздвоителя нц пока N не ноль вычти 1

Анализ алгоритмов для Раздвоителя

нц пока N не ноль
вычти 1
кц

вычти 1
раздели

на 2

только для чётных!

Алгоритм 1:

Алгоритм 2:

нц пока N не ноль
если N - чётное то
раздели на 2
иначе
вычти 1
все
кц

N → 0

по длине?
по скорости?

Слайд 70

Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ №

Конец фильма

ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
kpolyakov@mail.ru

ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
eremin@pspu.ac.ru