Bilim.techО проекте

Алгоритм и блок-схема

Как записать решение механика так, чтобы его выполнил компьютер? Проходи готовые алгоритмы по шагам: блок-схема и код подсвечиваются вместе, а свои блоки можно добавить кнопками.

01 Что это такое

Алгоритм это точный порядок действий, который приводит к ответу. Блок-схема рисует этот порядок фигурами и стрелками, чтобы его понял и человек, и компьютер.

Механик, который решает, менять ли масло, тоже идет по алгоритму: смотрит моточасы, читает анализ масла, сравнивает с нормой и выбирает действие. Если записать эти шаги так, чтобы не осталось ни одного «по ситуации», получится алгоритм. В блок-схеме у каждого шага своя фигура: прямоугольник это действие, ромб это вопрос с ответом «да» или «нет», параллелограмм это ввод и вывод данных. Фигуры по ГОСТ 19.701 одинаковы во всех инструкциях и программах, поэтому схему поймет любой инженер. А программа на языке это та же схема, записанная строчками.

НачалоНачало, конецчасы = часы + 1Действие (процесс)ввод: моточасыВвод и вывод данныхFe > 80?Решениедля i от 1 до 5Граница цикларасход(N, g)Готовая процедура
Стрелки идут сверху вниз и слева направо. Из ромба всегда два выхода: «да» и «нет». Цикл помечают границами с одинаковым именем в начале и в конце.
▭
Следование. Действия выполняются по очереди, сверху вниз. Как пункты в карте смазки: слить, заменить фильтр, залить.
◇
Ветвление. Вопрос с ответом «да» или «нет» выбирает, какой путь пройти. В коде это «если … иначе».
↻
Цикл. Одни и те же действия повторяются, пока выполняется условие или пока не пройден весь список.
02 Опыт
Выбери алгоритм. Иди по шагам. Добавь свой блок. БЛОК-СХЕМА
АЛГОРИТМ

Схема и код идут шаг в шаг

Рис. 12.1
ГОТОВЫЕ АЛГОРИТМЫ
Сейчас выполняется
Пройдено блоков
Ответ алгоритма
03 Код по строкам

Три конструкции, из которых собран любой алгоритм

Как в формуле у каждой буквы свой смысл, так и в коде у каждого слова своя работа. Значения ниже берутся из опыта: пройди алгоритм по шагам и смотри, как они меняются.

Как положить число в ячейку?

часы = часы + 1

Это не равенство из математики, а команда: посчитай правую часть и положи результат в ячейку с именем слева. Старое значение пропадает.

часы
имя переменной: подписанная ячейка памяти
=
«положить в». Читается справа налево
часы + 1
выражение: берется старое значение, к нему прибавляется 1

Как выбрать путь?

если A:
    …
иначе:
    …

Это ромб блок-схемы. Условие A дает «истина» или «ложь». Строки с отступом под «если» выполнятся только при «истине», под «иначе» только при «лжи».

если
начало развилки, вход в ромб
A
условие со знаками >, <, >=, <=, == (равно), != (не равно)
:
двоеточие: дальше идет блок с отступом в 4 пробела
иначе
выход «нет». Его можно не писать, тогда при «лжи» ничего не делаем

Как повторить?

пока A:
    …

Тот же ромб, но после блока стрелка возвращается назад, к условию. Цикл крутится, пока A истинно. Внутри обязательно что-то должно менять A, иначе цикл не кончится.

пока
цикл с условием: проверка перед каждым кругом
для i от 1 до n
цикл со счетчиком: i сам растет от 1 до n
для x в список
цикл по списку: x по очереди равен каждому элементу

Тот же алгоритм на настоящем Python

Учебный язык устроен как Python, только слова русские. Справа текущий код опыта, переведенный на Python: «если» стало if, «иначе если» стало elif, «пока» стало while, «вывести» стало print. Отступы и двоеточия те же самые, поэтому такую программу можно запустить на компьютере или в телефоне, где установлен Python.

Цикл «для i от 1 до 10» в Python пишут через range(1, 11): правая граница в range не входит, поэтому к ней прибавляют единицу. Вместо ввести(...) в настоящей программе стоял бы input() или чтение файла с данными машины.

Подробнее о том, как работают переменные, условия и циклы, рассказано в следующей теме «Переменные, условия и циклы», а функции разобраны в теме «Функции и расчет по формуле».

Перевод делается автоматически из кода в опыте. Поменяй код, и Python поменяется тоже.
04 Где и зачем это применяют

Алгоритм нужен везде, где ошибиться дорого

Допущения модели+

Схема строится по коду автоматически, по правилам структурного программирования: следование, ветвление и цикл вложены друг в друга, стрелки не перескакивают. Фигуры взяты из ГОСТ 19.701-90 в упрощенном виде, без соединителей между листами и комментариев. Учебный язык похож на Python, но умеет не все: нет словарей, классов, файлов и ввода с клавиатуры, вместо ввода значения берутся с ползунков через ввести(...). Пороги в готовых алгоритмах (500 моточасов, 80 ppm железа, подача насоса) правдоподобные, но учебные: настоящие нормы берут из руководства завода и программы анализа масла.

Еще в направлении «Инженерия»

Все темы направления «Инженерия» →