NEXT: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 7 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''NEXT''' (читается «нэкст») — стандартное слово [[Каллисто]]. Конец цикла со счётчиком.
'''NEXT''' (читается «нэкст») — усовершенствованное слово [[Каллисто]]. Конец цикла со счётчиком.
  NEXT          ( −− )                              Вернуться к FOR, если ещё остались повторения цикла.
  NEXT          ( −− )                              Вернуться к FOR, если ещё остались повторения цикла.
[[Файл:CallistoForNext.png|thumb|right|264px|Пример работы слова NEXT]]
[[Файл:CallistoForNext.png|thumb|right|264px|Пример работы слова NEXT]]
Строка 11: Строка 11:
Слово NEXT не надо путать с точкой NEXT [[Адресный интерпретатор|адресного интерпретатора]].
Слово NEXT не надо путать с точкой NEXT [[Адресный интерпретатор|адресного интерпретатора]].


== Реализация цикла со счётчиком ==
== Реализация ==
В [[Каллисто|Каллисто 1.0]] на этапе компиляции слово NEXT может вызывать [[Авост приложения|авост]] с [[MESSAGE|кодом ошибки]] 19. [[Авост приложения|Авост]] вызывает слово [[?PAIRS]], если не находит слово [[FOR]], которому соответствует данный NEXT .
<pre>
3730 ;#NEXT
3731 ; NEXT          I ( −− )                              Вернуться к FOR, если ещё остались повторения цикла.
3732 LSNEXT:        .DB    84H
3733                .TEXT  "NEXT"                  ; К
3734                .DW    LFOR                    ; Конец цикла со счётчиком.
3735 SNEXT:          .DW CALL, PI,QPAIR, COMP,XNEXTD, LRESOLVE, BRAN,RGRESOLVE
</pre>
 
=== Советская реализация цикла со счётчиком ===
Описание слов LOOP +LOOP и определение цикла DO…LOOP в ядре ФОРТ-ЕС:
Описание слов LOOP +LOOP и определение цикла DO…LOOP в ядре ФОРТ-ЕС:
<pre>
<pre>
Строка 41: Строка 52:
== Ссылки ==
== Ссылки ==
* {{Исходник|NEXT|NEXT}}
* {{Исходник|NEXT|NEXT}}
* См. слова [[FOR]], [[LEAVE]], [[UNLOOP]], [[Слово I|I]], [[Слово J|J]] и [[Слово K|K]]
* [https://en.wikipedia.org/wiki/For_loop For loop в английской Википедии] ''(англ.)''
* [https://en.wikipedia.org/wiki/For_loop For loop в английской Википедии] ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\06.ZIKLITESKIE%20STRUKTURY ЦИКЛИЧЕСКИЕ СТРУКТУРЫ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\06.ZIKLITESKIE%20STRUKTURY ЦИКЛИЧЕСКИЕ СТРУКТУРЫ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
Строка 50: Строка 62:
[[Категория:Слова с признаком IMMEDIATE]]
[[Категория:Слова с признаком IMMEDIATE]]
[[Категория:Структуры управления Каллисто]]
[[Категория:Структуры управления Каллисто]]
[[Категория:Слова, способные вызывать авост приложения]]
[[Категория:Компилирующие слова]]
[[Категория:Фортовские слова]]
[[Категория:Усовершенствованные слова]]

Текущая версия от 01:42, 22 января 2018

NEXT (читается «нэкст») — усовершенствованное слово Каллисто. Конец цикла со счётчиком.

NEXT           ( −− )                               Вернуться к FOR, если ещё остались повторения цикла.
Пример работы слова NEXT

Ввод слова NEXT[править]

В режиме ЛАТ последовательно нажмите четыре клавиши  4   ИП   0   2 

История цикла со счётчиком[править]

Имя NEXT традиционно для цикла FOR. До включения в Каллисто и colorForth оно использовалось в Бейсике.

Слово NEXT не надо путать с точкой NEXT адресного интерпретатора.

Реализация[править]

В Каллисто 1.0 на этапе компиляции слово NEXT может вызывать авост с кодом ошибки 19. Авост вызывает слово ?PAIRS, если не находит слово FOR, которому соответствует данный NEXT .

3730 ;#NEXT
3731 ; NEXT           I ( −− )                               Вернуться к FOR, если ещё остались повторения цикла.
3732 LSNEXT:         .DB     84H
3733                 .TEXT   "NEXT"                  ; К
3734                 .DW     LFOR                    ; Конец цикла со счётчиком.
3735 SNEXT:          .DW CALL, PI,QPAIR, COMP,XNEXTD, LRESOLVE, BRAN,RGRESOLVE

Советская реализация цикла со счётчиком[править]

Описание слов LOOP +LOOP и определение цикла DO…LOOP в ядре ФОРТ-ЕС:

  +LOOP    НК A1,A2,3 -> /КОМПИЛЯЦИЯ/                        КОНЕЦ ЦИКЛА  47
              N ->       /ИСПОЛНЕНИЕ/               "DO +LOOP" С ШАГОМ N

LOOP      HK A1,A2,3-> /КОМПИЛЯЦИЯ/ КОНЕЦ ЦИКЛА "DO LOOP"       47
             -> /ИСПОЛНЕНИЕ/

                      Экран номер 47
 ( 31.03.86   СТАНДАРТНЫЕ СТРУКТУРЫ УПРАВЛЕНИЯ )

 : DO      ?COMP  COMPILE (DO) >MARK <MARK 3 ; IMMEDIATE
 : LOOP    3 ?PAIRS COMPILE (LOOP) <RESOLVE >RESOLVE ; IMMEDIATE
 : +LOOP   3 7PAIRS COMPILE (+LOOP) <RESOLVE >RESOLVE ; IMMEDIATE

Определения цикла DO…LOOP/+LOOP в FORTH ИТЭФ через (DO) и (LOOP)/(+LOOP):

             HEAD    302Q,'D',317Q,$DO,$COL               ; DO
             DW  COMP,XDO,HERE,THREE,SEMI

             HEAD    304Q,'LOO',320Q,LOOP,$COL            ; LOOP
             DW  THREE,QPAIR,COMP,XLOOP,BACK,SEMI

             HEAD    305Q,'+LOO',320Q,PLOOP,$COL          ; +LOOP
             DW  THREE,QPAIR,COMP,XPLOO,BACK,SEMI

Ссылки[править]


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.