Представим себе такую ситуацию: учитель с каким-то классом закончил прохождение очередного раздела курса информатики. Он подводит итоги своей работы: что-то ему удалось, что-то нет. Но впереди уже новая тема: "Решение задач на компьютере". К ней он хочет подготовиться так, чтобы на уроках не было беспорядка, ученики четко знали свое дело, а задачи не придумывались бы накануне урока. Иначе говоря, ему требуется распланировать свою работу и в смысле содержания уроков, и в смысле их организации. Он и раньше старался это делать, но сейчас удобный момент для новой попытки. Учитель верит со свойственной человеку надеждой на лучшее: что не сбылось вчера, должно случиться завтра, - и справедливо полагает, что залог успеха в тщательной подготовке.
Прежде всего ему надо определить, какие задачи и в какой форме будут рассмотрены. В этой ситуации есть два пути. Можно самому подбирать весь необходимый материал, основываясь на своем опыте либо использовать имеющиеся методические рекомендации (Информатика. Теория, методика, задачи/Сост. Н.Д.Угринович. МИПКРО, 1991 г.).
Выберем второй вариант. В указанной методичке рассматриваются шестнадцать задач, с решениями в виде программ на Бейсике. Все они разделены на четыре группы. Это математические и информационно-логические задачи, моделирование динамических процессов и имитация сложных систем.
Когда список задач определен, учителю следует подумать о способе организации занятий. Часть задач будет представлена ученикам для самостоятельной работы, а часть - в виде готовых программ, подлежащих совместному с учителем разбору. При этом возникает целый ряд проблем. Где будут храниться файлы с этими программами и каков будет порядок доступа к ним? Как отслеживать результат деятельности учеников? Возможно ли ускорить процесс написания программ за счет уменьшения времени на рутинную работу?
Решить эти вопросы поможет предлагаемая вниманию читателей газеты специальная программа - оболочка "Меню задач". Она функционирует в среде QBasic для IBM-совместимых компьютеров, но ее идею и реализацию можно перенести и на другую технику, поскольку в тексте почти не содержится специфических операторов. В частности, оболочка давно уже опробована автором в работе на компьютере Агат.
"Меню задач" выполняет следующие действия:
- выводит на экран монитора заставку со списком задач;
- позволяет с помощью клавиш-стрелок выбирать из этого списка нужную;
- запускает в работу программу для выбранной задачи;
- сообщает об отсутствии таковой, если она еще не написана;
- выдает на экран заготовку-шаблон для написания новой программы.
При его работе экран монитора выглядит следующим образом:
МЕНЮ ТИПОВ ЗАДАЧ
blank.bas- заготовка для новой программы
аlfa.bas - математические задачи
beta.bas - моделирование динамических процессов
gamma.bas - имитация сложных систем
delta.bas - информационно-логические задачи
Выбор - стрелки ВВЕРХ/ВНИЗ
Запуск - ENTER Выход - ESC
Для выбора предложены пять файлов - четыре подменю отдельных типов задач и заготовка-шаблон для новой программы. Если ученик захочет просмотреть список математических задач, он переведет указатель на третью строку и, нажав Enter, попадет в соответствующее подменю, из которого можно будет обратиться к конкретной задаче либо вернуться обратно в меню типов задач. Если же он собирается писать новую программу, то, оставаясь в первой строке, нажмет Enter и получит чистый бланк для работы.
Рассмотрим подробнее, как используется оболочка в классе. Для каждого ученика отводится своя область во внешней памяти компьютера, будь то отдельная дискета или отдельный каталог на винчестере, сетевом или автономном. В этой области находятся все файлы оболочки: это главное меню menu.bas, затем четыре файла подменю аlfa.bas, beta.bas, gamma.bas, delta.bas, и, наконец, файл с шаблоном blank.bas.
В этом же каталоге ученик будет сохранять и файлы со своими вновь написанными программами. Первоначально в каталоге имеются только перечисленные файлы оболочки, но по мере изучения темы в нем будут накапливаться все ученические упражнения.
Файлы подменю одинаковы по структуре с файлом главного меню и обслуживают соответственно четыре вышеупомянутые группы задач. Вид экрана во время работы подменю, например, математических задач (файл аlfa.bas) будет таким:
МАТЕМАТИЧЕСКИЕ ЗАДАЧИ (alfa)
menu.bas - возврат в главное меню
graph.bas - построение графика функции
half.bas - метод половинного деления
tangent.bas - метод касательных
integral.bas - численное интегрирование
monte.bas - метод Монте-Карло
Выбор - стрелки ВВЕРХ/ВНИЗ
Запуск - ENTER Выход - ESC
За каждой из задач закрепляется определенное название. Список всех запланированных задач, их количество и имена дисковых файлов, где будут храниться соответствующие им программы, легко могут быть изменены учителем, поскольку вся эта информация компактно расположена в блоке операторов data подменю. Тем самым оболочка может быть оперативно подстроена под конкретный класс и даже под конкретного ученика.
На очередном уроке ученику не требуется помнить, какие задачи он уже решил, а какие нет, а также в каких файлах хранятся его программы. Ему достаточно лишь запустить в работу оболочку, после чего все переходы от меню к подменю, а от него к конкретной задаче будут совершаться автоматически. Так, в рассматриваемом примере, когда будет выбрано численное интегрирование, то произойдет запуск соответствующей программы, при условии, что файл с указанным именем integral.bas присутствует на диске, либо в данном пункте подменю появится мигающая надпись "Этой программы еще нет!"
Если задача integral.bas уже решена и ее программа запущена в действие, с ней можно поступать по всем правилам среды программирования QBasic - остановить, просмотреть ее текст, отредактировать его, снова запустить в работу, отладить и т.д. и, наконец, выйти обратно в меню.
Если же файла integral.bas нет на диске (в данном каталоге) и появилась упомянутая выше мигающая надпись, то ученик может перейти к другому пункту или, вернувшись в главное меню, заказать себе чистый бланк-заготовку для написания новой программы (файл blank.bas). Получив бланк, он заполняет его своим текстом, запускает в действие, отлаживает, корректирует, снова запускает и вообще работает как обычно в среде QBasic. Когда работа будет закончена, готовая программа записывается учеником в текущий каталог под именем integral.bas и тем самым интегрируется в оболочку. Вся система будет наращиваться по мере увеличения числа наполняющих ее элементов. Для того чтобы можно было запускать оболочку в работу не из среды программирования QBasic, а прямо из Norton Commander следует настроить его на обработку файлов с расширением bas.
Для тех, кто не умеет этого делать, приводим рецепт - надо найти в каталоге NC текстовый файл nc.ext или создать его, если такового там нет, и вписать в него следующую строчку:
bas:c:\dos\qbasic.exe/run !.!
Заготовка-шаблон представляет собой чистый бланк, куда однако, уже вписаны операторы Бейсика, которые обычно требуются для стандартного действия в каждой задаче. К числу этих действий относятся:
- подготовка пользовательского экрана (screen, color, cls);
- структурирование текста посредством подпрограмм (gosub, return);
- внесение комментариев (rem);
- выход обратно в меню задач по окончании работы.
Шаблон является каркасом, который ученику нужно будет "оживить", заполнив пустые места в нем своим текстом, так, чтобы получилась полноценная программа, решающая выбранную задачу.
Заполнение происходит следующим образом. В тексте шаблона зарезервированы несколько операторов gosub с указанием меток (номеров строк). В соответствующих местах, т.е. в подпрограммах ничего не содержится - присутствует только лишь оператор возврата return - "заглушка". От ученика требуется вписать последовательность операторов, выполняющих нужные действия. Программа при этом получается структурированной, что облегчает учителю процесс ее разбора и оценки.
Написав и отладив программу, ученик записывает ее на диск под заранее оговоренным именем, при этом новая задача автоматически интегрируется в среду оболочки.
Использование шаблона позволяет весьма существенно ускорить процесс написания программ за счет того, что освобождает учеников от большого количества однообразных действий. В содержательном же плане шаблон очень полезен тем, что позволяет привить ученикам некоторый стиль написания программ (который, конечно, определяется автором шаблона). Тексты становятся легко читаемыми и структурированными.
Подводя итог, можно сказать, что оболочка "Меню задач" дает учителю удобное средство организации учебного процесса по одному из разделов школьного курса информатики. Более того, сам принцип сведения Бейсик-программ в меню-оболочку может быть использован и при изучении других тем курса, связанных с программированием на этом языке.
В качестве приложения ниже приводятся программные тексты двух файлов: главного меню (menu.bas) - чтобы учитель мог представить себе, как можно настраивать меню на другие списки задач посредством редактирования блока операторов data, и шаблона-заготовки (blank.bas) - для демонстрации предложенного стиля программирования.
' Основная программа "Меню типов задач"
GOSUB 200 ` Подпрограмма ввода исходных данных о типах задач
GOSUB 300 ` Подпрограмма рисования заставки с указателем
100 : GOSUB 400 ` Подпрограмма определения кода нажатой клавиши
GOSUB 500 ` Подпрограмма перехода в выбранное подменю
GOSUB 600 ` Подпрограмма перемещения указателя
GOTO 100 ` Повторный выбор
END ` Конец основной программы
200 : ` Ввод данных о типах задач
n = 4: m = 1 `n - количество типов задач
FOR i = 1 TO n + 2: READ name$(i): NEXT `заголовки типов
FOR i = 1 TO n + 2: READ y(i): NEXT `места на экране
FOR i = 1 TO n + 2: READ file$(i): NEXT `файлы подменю
`заголовки типов (всего n+2 заголовка)
DATA blank.bas - заготовка для новой программы
DATA _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
DATA alfa.bas - математические задачи
DATA beta.bas - моделирование динамических процессов
DATA gamma.bas - имитация сложных систем
DATA delta.bas - информационно-логические задачи
`расположение заголовков на экране
DATA 6,8,10,12,14,16
`имена файлов с подменю для каждого типа задач
DATA BLANK,,ALFA,BETA,GAMMA,DELTA
RETURN
300 : ` Рисование заставки
SCREEN 0: COLOR 11, 5: CLS
LOCATE 3, 21: COLOR 15, 2: PRINT " М Е Н Ю Т И П О В З А Д А Ч "
COLOR 11, 5: FOR i = 1 TO n + 2: LOCATE y(i), 20: PRINT name$(i): NEXT
LOCATE y(m), 16: PRINT "==>"
LOCATE 23, 5: PRINT "Выбор - стрелки "; : COLOR 15, 2: PRINT " вверх ";
COLOR 11, 5: PRINT " / "; : COLOR 15, 2: PRINT " вниз ";
LOCATE 23, 41: COLOR 11, 5: PRINT "Запуск - ";
COLOR 15, 2: PRINT " ENTER ": COLOR 11, 5
LOCATE 23, 60: PRINT "Выход - "; : COLOR 15, 2: PRINT " ESC ": COLOR 11, 5
RETURN
400 : ` Определение кода нажатой клавиши
k$ = "": WHILE k$ = "": k$ = INKEY$: WEND
IF LEN(k$) > 1 THEN k = ASC(RIGHT$(k$, 1)) + 300 ELSE k = ASC(k$)
IF NOT (k = 372 OR k = 380 OR k = 13 OR k = 27) THEN GOTO 400
RETURN
500 : Переход в выбранное подменю
IF k = 27 THEN COLOR 7, 0: CLS : SYSTEM `выход из меню по Esc
IF k = 13 THEN RUN file$(m) + ".bas" `переход по Enter
RETURN
600 : ` Перемещение указателя
SELECT CASE k
CASE 372
m = m - 1: IF m = 2 OR m < 1 THEN m = 1
CASE 380
m = m + 1: IF m = 2 THEN m = 3
IF m > n + 2 THEN m = n + 2
END SELECT
FOR i = 1 TO n + 2: LOCATE y(i), 16: PRINT " ": NEXT
LOCATE y(m), 16: PRINT "==>"
RETURN
' Главная программа " Чистый бланк "
GOSUB 200 'Подпрограмма начальных установок
GOSUB 300 'Подпрограмма
GOSUB 400 'Подпрограмма
GOSUB 500 'Подпрограмма
GOSUB 600 'Подпрограмма
GOSUB 700 'Подпрограмма
GOSUB 800 'Подпрограмма
GOTO 900 'Выбор режима работы с бланком
END ' Конец основной программы
200 : ' Начальные установки
SCREEN 0: COLOR 7, 0: CLS
RETURN
300 : '
RETURN
400 : '
RETURN
500 : '
RETURN
600 : '
RETURN
700 : '
RETURN
800 : '
RETURN
900 : 'Выбор режима работы
SCREEN 0: WIDTH 80: COLOR 7, 0: CLS
LOCATE 23, 5: PRINT "Новая программа - ";
COLOR 15, 2: PRINT " ПРОБЕЛ ": COLOR 7, 0
LOCATE 23, 33: PRINT "Возврат в меню - ";
COLOR 15, 2: PRINT " ENTER ": COLOR 7, 0
LOCATE 23, 60: PRINT "Выход - ";
COLOR 15, 2: PRINT " ESC ": COLOR 7, 0
DO: k$ = "": WHILE k$ = "": k$ = INKEY$: WEND: k = ASC(k$)
IF k = 32 THEN END
IF k = 27 THEN CLS : SYSTEM
IF k = 13 THEN RUN "menu.bas"
LOOP