Передовица » Макулатура » ИиО » Использование памяти ПЭВМ Агат для оптимизации программ

Использование памяти ПЭВМ Агат для оптимизации программ (N2/1998)

Л. Ф. Церцек, преподаватель программирования УВК N16, Москва. Группа сайта просит вас связаться с нами! (ЗАЧЕМ ЭТО?)

В УВК-16 обучение школьников программированию ведётся на ПЭВМ «Агат», которая имеет небольшой объём памяти (64 Кб). В XI классе учащиеся обычно выполняют выпускной проект, поэтому приходится использовать всевозможные способы, чтобы программа большого объёма поместилась в памяти ПЭВМ. Для этого программа делится на несколько отдельных файлов так, чтобы каждый из них умещался в памяти компьютера. Каждый такой файл имеет своё имя и хранится на дискете.

В конце каждого файла записывается специальная команда

PRINT CHR$(4);"RUN <имя файла>",

которая осуществляет считывание указанного файла с дискеты и передаёт ему управление без вмешательства пользователя. Выполнение программы при этом не прерывается, а только приостанавливается на время загрузки файла в память.

Вся программа выглядит следующим образом:

При работе программы дискета с файлами должна находиться в дисководе, так как всё время производится считывание файлов в память ЭВМ.

Такой способ организации программы даёт возможность дорабатывать, изменять файлы, что облегчает отладку программы большого размера.

Пример. Пусть в каталоге имеются файлы программ: ДРАКОН, СПИРАЛЬ, ПАДАЮЩ. БУКВЫ, СМЕНА ЦВЕТА. Они могут работать самостоятельно, как отдельные программы. И пусть в файлах ДРАКОН1, СПИРАЛЬ1, ПАДАЮЩ. БУКВЫ1 добавлена команда, вызывающая выполнение следующей программы. Так, в файле ДРАКОН1 вызывается программа ПАДАЮЩ. БУКВЫ1, в ней, в свою очередь, вызывается программа СПИРАЛЬ1, а в файле СПИРАЛЬ1 вызывается программа СМЕНА ЦВЕТА. Таким образом, после запуска файла ДРАКОН1 на выполнение будут по очереди работать остальные программы одна за другой без вмешательства программиста.

Другой аспект работы с памятью ПЭВМ «Агат» состоит в записи, хранении и воспроизведении графических копий экрана. Когда в графическом режиме учащиеся рисуют средствами Бейсика какую-либо картинку, она часто занимает большой объём памяти и долго отрисовывается на экране. С целью экономии памяти и времени рекомендуется переписать созданную картинку из видеопамяти в двоичный файл. Для этого, после того как программа в графическом режиме завершит свою работу, картинка записывается в файл с помощью команды

BSAVE <имя файла>,A$<начальный адрес видеопамяти>, L$1FFF.

В каталоге он будет обозначен как файл типа B.

Для режима MGR=1, 2, 3, 4 и т. д. реализовано следующее распределение ячеек видеопамяти:

MGR=1: 2000...3FFF,
MGR=2: 4000...5FFF,
MGR=3: 6000...7FFF, и т.д., где 2000, 4000, 6000 - начальные адреса страниц видеопамяти.

Для загрузки этой картинки на экран в программе записываются следующие команды:

MGR=<тот номер режима, в котором строилась картинка>
PRINT CHR$(4);"BLOAD <имя файла>"

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

Рисунки, которые учащиеся выполняют с помощью графического редактора, можно записывать в двоичный файл теми же командами. Если в графическом редакторе по какой-либо клавише запрограммировать вызов предыдущего (незаконченного) рисунка, то его можно завершить на следующем уроке.

Просмотр рисунков осуществляется в программе КИНО, где вызываются файлы типа B.

10 REM КАРТИНКА
20 INVERSE: RIBBON=2: НОМЕ
30 НТАВ 10: VTAB 20
40 PRINT "смотрите кино"
45 FOR I = 1 ТО 3000: NEXT I
50 MGR=2
60 PRINT CHR$ (4);"BLOAD RAVE"
70 FOR I = 1 TO 2000: NEXT I
80 PRINT CHR$ (4);"BLOAD KAIPSO"
85 FOR I = 1 TO 2000: NEXT I
90 PRINT CHR$ (4);"BLOAD открытка1"
110 FOR I = 1 TO 2000: NEXT I
130 FOR I = 1 TO 2000: NEXT I
140 PRINT CHR$ (4);"BLOAD BLACKNIGER"
145 FOR I = 1 TO 2000: NEXT I
147 PRINT CHR$ (4);"BLOAD свеча"
150 FOR I = 1 TO 2000: NEXT I
170 FOR I = 1 TO 2000: NEXT I
180 PRINT CHR$ (4);"BLOAD муха"
190 FOR I = 1 TO 2000: NEXT I
200 PRINT CHR$ (4);"BLOAD RI"
210 FOR I = 1 TO 2000: NEXT I
220 PRINT CHR$ (4);"BLOAD снег"
230 FOR I = 1 TO 2000: NEXT I
240 PRINT CHR$ (4);"BLOAD SNEG"
250 FOR I = 1 TO 2000: NEXT I
260 PRINT CHR$ (4);"BLOAD картина"

Особо следует отметить, что в программах указанные команды в некоторых случаях могут не выполняться с выдачей на экран надписи: «ОШИБКА ОБМЕНА». Чтобы избежать этого, рекомендуется перед ними вставить 5 и более команд PRINT. После этого команды загрузки выполняются без особых проблем.

* * *

Использование материалов проекта agatcomp без получения предварительного письменного разрешения agatcomp запрещено.


Почта для обратной связи: mail@agatcomp.ru


Живое общение по теме Агата: Telegram группа Agatcomp.


Накопленные знания и проекты: тематический ФОРУМ.


© 2004-2024 agatcomp.su / agatcomp.ru

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *