Теория
Основные понятия
Алгоритм — это точный и понятный план действий, который приводит к решению задачи.
Пример: Рецепт приготовления бутерброда, инструкция по сборке модели.
Исполнитель — объект, который выполняет алгоритм.
Виды исполнителей:
- Неформальный (человек) — понимает команды, может додумать недостающее.
- Формальный (робот, программа) — выполняет только строго заданные команды.
Система команд исполнителя (СКИ) — полный набор команд, которые понимает формальный исполнитель.
Пример: СКИ робота-пылесоса: Включись, Двигайся вперед, Поверни налево.
Среда исполнителя — условия, в которых работает исполнитель.
Пример: Для робота-пылесоса среда — это пол квартиры; для программы «Калькулятор» — окно программы.
Свойства алгоритма
Чтобы алгоритм мог выполнить формальный исполнитель, он должен обладать пятью важными свойствами.
- Дискретность (от слова «шаг»)
- Что это значит? Алгоритм должен быть разбит на отдельные, небольшие шаги, которые выполняются последовательно, один за другим.
- Почему это важно? Исполнитель не может выполнить расплывчатую задачу «целиком», ему нужно дать четкие инструкции.
- Пример 1: Алгоритм «Позвонить другу».
- Не дискретно: «Свяжись с другом».
- Дискретно:
- Достать телефон.
- Разблокировать экран.
- Открыть приложение «Контакты».
- Найти имя друга.
- Нажать кнопку вызова.
- Пример 2: Алгоритм «Построить квадрат» для робота-художника состоит из отдельных команд: Провести линию, Повернуть на 90 градусов, и эти команды повторяются 4 раза.
- Понятность
- Что это значит? Каждая команда в алгоритме должна входить в систему команд исполнителя (СКИ). Нельзя давать команды, которых исполнитель не знает.
- Почему это важно? Если исполнитель не понимает команду, он выдаст ошибку и остановится.
- Пример 1: Для исполнителя «Робот-пылесос» команда Помой посуду — непонятна, а команда Включи мотор — понятна.
- Пример 2: В программировании нельзя использовать команду Нарисовать котика, если в языке программирования такой команды нет. Вместо этого нужно использовать базовые команды: Нарисовать круг, Нарисовать линию и т.д.
- Определённость (Точность)
- Что это значит? Результат выполнения каждой команды должен быть однозначным и не допускать различных толкований. При многократном выполнении одного и того же алгоритма с одними и теми же исходными данными результат должен быть одинаковым.
- Почему это важно? Компьютер или робот не может гадать, что вы имели в виду.
- Пример 1: Алгоритм «Приготовь чай».
- Не определенно: «Добавь немного сахара». (Сколько это «немного»?)
- Определенно: «Добавь 2 чайные ложки сахара».
- Пример 2: Команда «Иди туда» — неопределенна для робота. Команда «Сделай 5 шагов вперед» — определенна.
- Массовость
- Что это значит? Алгоритм должен быть разработан для решения не одной конкретной задачи, а целого класса однотипных задач с разными исходными данными.
- Почему это важно? Это экономит время и силы. Не нужно писать новый алгоритм для каждого похожего случая.
- Пример 1: Алгоритм «Сложить два числа» обладает массовостью. Он работает для любой пары чисел: 2+3, 15+47, 100+200 и т.д.
- Пример 2: Алгоритм «Найти площадь прямоугольника» (умножить длину на ширину) является массовым. Он подходит для вычисления площади любого прямоугольника, а не just одного конкретного.
- Результативность
- Что это значит? Алгоритм должен обязательно завершать свою работу и приводить к конкретному результату за конечное число шагов. Алгоритм не может быть бесконечным.
- Почему это важно? Бесконечный алгоритм бесполезен, так как он никогда не даст ответа.
- Пример 1: Алгоритм «Определить, является ли число четным» — результативен. Он всегда даст ответ «да» или «нет».
- Пример 2: Алгоритм «Жди, когда закипит вода» — результативен, так как вода в конечном итоге закипит. А алгоритм «Иди все вперед и вперед» — не результативен, так как у него нет условия остановки.
Режимы работы исполнителя
Программное управление
Исполнитель получает готовую программу (весь алгоритм) и выполняет её автоматически.
Пример: Вы загружаете в робота-пылесос карту квартиры, и он сам, без вашего участия, убирается, следуя заложенной в него программе.
Непосредственное управление
Исполнитель получает и выполняет команды по одной.
Пример: Управление машинкой с пульта. Нажал кнопку «вперед» — машинка поехала.