9. СЛОЖНЫЕ СЦЕНАРИИ

Уже не раз говорилось, что самое простое - это писать электронные учебники. Темы разбиваются на подтемы, подтемы разбиваются далее, внутри раздела материал подается линейно. Минимальные разветвления курса делаются разве что для оживления сценария: вопрос, затем реплика в случае того или иного ответа, а дальше в любом случае одни и те же кадры.

А вот если Вы задумали писать контролирующий курс или тренажер или решили менять логику подачи материала в зависимости от того, знает или не знает обучаемый некую тему... Тогда Вам может быть очень худо: Вы запутаетесь в хитросплетениях переходов с кадра на кадр, перестанете понимать, как работает Ваш курс. Все это с Вами будет, если Вы не прочтете эту главу и не усвоите правила разработки алгоритмов.

Да-да, алгоритмов! Как ни пытались авторы АДОНИСа и других аналогичных систем уйти от программирования, это не удалось полностью. Не пугайтесь: Вам не придется осваивать языки программирования. Программирование - это ведь не столько кодирование алгоритмов на языках (БЕЙСИК, ПАСКАЛЬ и т.д.), сколько разработка алгоритмов.

Итак, главная Ваша задача сейчас - освоить приемы и методы, которые помогут Вам относительно просто и понятно записывать сложные алгоритмы. Если Вы рассчитываете на то, что справитесь без этих знаний, Ваш курс очень скоро превратится в некое подобие тарелки со спагетти, когда ни за что не догадаешься, где какая макаронина начинается, а где кончается, и, если потянешь макаронину в одном месте, неожиданно начинает шевелиться совсем другое.

9.1.Разделяйте и властвуйте

Заметьте: подводная лодка состоит из герметичных отсеков, и пробоина в одном из них еще не означает, что лодка немедленно утонет.

Заметьте: телевизор состоит из блоков, связанных меж собой несколькими проводками, и понять его работу можно, поняв назначение каждого блока и затем разобравшись с каждым блоком в отдельности. Любой программист знает, что самое главное - это разбить программу на максимально независимые модули (подпрограммы). Тогда ее легко понять, легко изменить.

Вы должны разбить Ваш курс на блоки, каждый из которых выполняет четко обозначенную функцию и как можно меньше зависит от других. Каждый из этих блоков должен иметь ровно один вход и ровно один выход. Это означает, что нельзя "перескочить" из любого кадра одного блока в любой кадр другого блока. (Это тогда уже будут не блоки, а те самые макароны). Это означает, что любой блок можно только ВЫЗВАТЬ, то есть перейти на его первый кадр, а после отработки его последнего кадра вернуться обратно.

Пример такого разбиения будет показан несколько позже.

9.2.Используйте графическое представление алгоритмов

Алгоритмы можно записывать по-разному: в виде текста, в виде блок-схем, в виде графов и т.д. Конечно, лучше всего использовать графическое представление: оно нагляднее. Если Вы спрашиваете, как Вам пройти туда-то в незнакомом городе, что для Вас будет лучше : или Вам долго будут объяснять словами, или если нарисуют схему?

Большинство программистов пользуется БЛОК-СХЕМАМИ. Блок-схемы состоят из прямоугольников, ромбов и других аналогичных фигур, соединенных между собой стрелками. Внутри этих фигур и возле стрелок располагают надписи, поясняющие алгоритм. Описание блок-схем Вы можете найти практически в любой "программистской" литературе.

Упражнение. Узнайте, что такое блок-схемы и как ими пользоваться.

А на мой взгляд один из лучших способов представления алгоритмов - это Р -СХЕМЫ (ГОСТ 19.005-85). Это очень простая вещь.

(описание временно пропущено в HTML-версии)


© Алексей Бабий 1992