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

Теория

Основные понятия

Алгоритм — это точный и понятный план действий, который приводит к решению задачи.
Пример: Рецепт приготовления бутерброда, инструкция по сборке модели.

Исполнитель — объект, который выполняет алгоритм.
Виды исполнителей:

  • Неформальный (человек) — понимает команды, может додумать недостающее.
  • Формальный (робот, программа) — выполняет только строго заданные команды.

Система команд исполнителя (СКИ) — полный набор команд, которые понимает формальный исполнитель.
Пример: СКИ робота-пылесоса: Включись, Двигайся вперед, Поверни налево.

Среда исполнителя — условия, в которых работает исполнитель.
Пример: Для робота-пылесоса среда — это пол квартиры; для программы «Калькулятор» — окно программы.

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

Чтобы алгоритм мог выполнить формальный исполнитель, он должен обладать пятью важными свойствами.

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

Режимы работы исполнителя

Программное управление
Исполнитель получает готовую программу (весь алгоритм) и выполняет её автоматически.
Пример: Вы загружаете в робота-пылесос карту квартиры, и он сам, без вашего участия, убирается, следуя заложенной в него программе.

Непосредственное управление
Исполнитель получает и выполняет команды по одной.
Пример: Управление машинкой с пульта. Нажал кнопку «вперед» — машинка поехала.

Проверь себя, выполни тест по этой теме.