≡ Передовица » Макулатура » ИиО » Использование экранных страниц для активной работы с большими объёмами информации
Использование экранных страниц для активной работы с большими объёмами информации (N1/1993)
Здесь речь идет даже не о графике, а, например, о выводе медленно вычисляемых таблиц, полностью вывести которые на одну экранную страницу невозможно.
М.Степанов. Группа сайта просит вас связаться с нами! (ЗАЧЕМ ЭТО?) На ПЭВМ "Агат" оперативная память разбита на области, называемые экранными страницами, каждая из которых может отображаться на экран в виде символьной или графической информации. Наличие экранных страниц даёт возможность сразу заполнить их информацией, а затем переключать с помощью простого программного блока. Опишем несколько случаев, в которых переключение страниц является достаточно эффективным. 1. Распечатайте таблицу значений функции с большим количеством строк и организуйте просмотр этой таблицы по желанию пользователя. Решение. Будем печатать значения функции через строку для лучшего восприятия информации. Как только очередная страница заполнится числовой информацией, производится переход на следующую страницу, которая предварительно очищается. После того как таблица напечатана, начинает действовать та часть программы, которая представляет собой блок управления отображением страниц на экран. Нажатие на клавишу "стрелка вниз" вызывает переход к следующей странице, на клавишу "стрелка вверх" - к предыдущей, ‹BK› - окончание программы. Страницы замкнуты в кольцо, т.е. за последней страницей следует первая, а первой предшествует последняя. 10 REM ПЕЧАТЬ ТАБЛИЦЫ 20 K=1: NS=12: TEXT=12: HOME 30 FOR X=0 TO 6.28 STEP 6.28/60 40 HTAB 0: VTAB K 50 RIBBON=1: PRINT X;: HTAB 16 60 RIBBON=6: PRINT SIN(X) 70 K=K+2: IF K>29 AND NS<15 THEN GOSUB 1000 80 NEXT X 90 REM УПРАВЛЕНИЕ СТРАНИЦАМИ 100 GOSUB 2000 110 TEXT=0: HOME 120 END 1000 REM ПЕРЕХОД НА НОВУЮ СТРАНИЦУ 1010 K=1: NS=NS+1 1020 TEXT=NS 1030 HOME 1040 RETURN 2000 REM БЛОК УПРАВЛЕНИЯ 2010 NS=12 2020 TEXT=NS 2030 GET S$: KD=ASC(S$) 2040 IF KD=26 THEN NS=NS+1: IF NS>15 THEN NS=12 2050 IF KD=25 THEN NS=NS-1: IF NS>12 THEN NS=15 2060 IF KD=13 THEN RETURN 2070 GOTO 2020 2. Организуйте меню с большим числом предлагаемых вариантов. Перемещение указателя по меню осуществляйте клавишами-стрелками, а выбор варианта - нажатием на ‹BK›. Решение. Расположите текст меню на нескольких экранных страницах. Перемещение указателя после нажатия на вертикальные стрелки должно приводить либо к переходу на новый пункт меню, либо к переходу на новую страницу. 3. Расположите связный текст на нескольких текстовых страницах, перемежая его иллюстрациями, расположенными на графических страницах. Решение. Для переключения графических страниц следует использовать оператор POKE, что позволяет избежать очистки этих страниц. 10 REM ИНФОРМАЦИЯ О ПОРЯДКЕ СЛЕДОВАНИЯ СТРАНИЦ 20 DATA T,8 30 DATA T,9 40 DATA G,10 50 DATA T,11 60 DATA M,3 70 DIM TP$(4),NM(4) 80 FOR I=0 TO 4 90 READ TP$(I),NM(I) 100 NEXT I 110 REM ЗАПОЛНЕНИЕ СТРАНИЦ 120 FOR I=0 TO 4 130 IF TP$(I)="T" THEN GOSUB 1000 140 IF TP$(I)="G" THEN GOSUB 1500 150 IF TP$(I)="M" THEN GOSUB 2000 160 NEXT I 170 REM БЛОК УПРАВЛЕНИЯ ПЕРЕКЛЮЧЕНИЕМ СТРАНИЦ 180 GOSUB 2500 190 TEXT=0: HOME: END 1000 TEXT=NM(I): HOME 1010 FOR K=1 TO 29 STEP 2 1020 VTAB K: PRINT "ОЧЕНЬ СВЯЗНЫЙ ТЕКСТ НА СТР. ";NM(I) 1030 NEXT K 1040 RETURN 1500 GR=NM(I): COLOR=1 1510 FOR X=0 TO 62 STEP 2 1520 PLOT X,0 TO X,63 1530 NEXT X 1540 RETURN 2000 MGR=NM(I): COLOR=5 2010 FOR X=0 TO 126 STEP 2 2020 PLOT X,0 TO X,127 2030 NEXT X 2040 RETURN 2500 I=0 2510 IF TP$(I)="T" THEN TEXT=NM(I) 2520 IF TP$(I)="G" THEN POKE $C700+NM(I)*4,0 2530 IF TP$(I)="M" THEN POKE $C701+NM(I)*16,0 2540 GET S$: KD=ASC(S$) 2550 IF KD=13 THEN RETURN 2560 IF KD=25 THEN I=I-1: GOTO 2590 2570 IF KD=26 THEN I=I+1: GOTO 2590 2580 GOTO 2540 2590 IF I<0 THEN I=4 2600 IF I>4 THEN I=0 2610 GOTO 2510 * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |