forked from freeduke33/rerap2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspecification.txt
4968 lines (4533 loc) · 378 KB
/
specification.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
АННОТАЦИЯ
Этот документ предназначен для пользователей, участвующих в опытной
эксплуатации системы "ШКОЛЬНИЦА", и содержит описание ее входного
языка (РАПИРА) и основных инструментально-сервисных средств.
Предполагается, что читатель знаком с каким-либо языком
программирования массового применения и имеет в своем распоряжении
персональную ЭВМ АГАТ, оснащенную системой "ШКОЛЬНИЦА".
СОДЕРЖАНИЕ
1. Назначение и условия применения 7
1.1. Назначение и структура системы 7
1.2. Версии системы 8
1.3. Условия применения 8
2. Характеристики программы 10
2.1. Технические характеристики 10
2.2. Характеристики РАПИРА-интерпретатора 10
2.3. Количественные ограничения в РАПИРЕ 11
3. Обращение к системе 12
3.1. Загрузка системы 12
3.2. Копирование дисков 14
3.3. Вызов РАПИРА-интерпретатора 14
3.4. Режимы работы РАПИРА-интерпретатора 16
3.5. Управление диалогом с клавиатуры 17
4. Входные и выходные данные 20
5. Работа с интерпретатором языка РАПИРА 21
5.1. Простые вычисления на РАПИРЕ 21
5.1.1. Вычисление простых выражений 21
5.1.2. Правила записи предписаний в вводимой строке 22
5.1.3. Некоторые дополнительные возможности 24
5.1.4. Диагностика ошибок и их исправление 25
5.2. Структуры данных и операции над ними 226
5.2.1. Объекты языка. Имена и их значения.Присваивание 26
5.2.2. Защита имен 29
5.2.3. Тексты и операции над ними 30
5.2.4. Составные объекты и их формирование 34
5.2.5. Операции над кортежами 36
5.2.6. Операции над множествами 38
5.2.7. Операции над записями 39
5.2.8. Процедуры и функции. Вызов 39
5.2.9. Файлы 40
5.3. Управляющие конструкции 41
5.3.1. Структура программы 41
5.3.2. Общая структура предписания 42
5.3.3. Лексемы 42
5.3.4. Уточненное имя. Присваивание 44
5.3.5. Выражения. Приоритеты операций 45
5.3.6. Условия 47
5.3.7. Условные предписания 49
5.3.8. Циклы 52
5.3.9. Вывод 58
5.3.10. Форматы вывода различных объектов 59
5.3.11. Ввод текстов и данных с клавиатуры 64
5.4. Подготовка и хранение программ 67
5.4.1. Подготовка рабочих дисков 67
5.4.2. Редактирование программных текстов 69
5.4.3. Порядок запуска программ 75
5.4.4. Просмотр каталога диска ээ 76
5.5. Процедуры и функции 77
5.5.1. Основные черты процедурного блока 77
5.5.2. Порядок описания и редактирования процедур 78
5.5.3. Процедуры,как объекты языка 80
5.5.4. Блочная структура программы. Локализация имен 81
5.5.5. Параметры процедур и функций. Способы передачи
параметров. Рекурсия 83
5.5.6. Порядок выполнения процедур 86
5.5.7. Ограничение побочных эффектов в РАПИРЕ 87
5.6. Отладка программ.Отладочные средства РАПИРЫ 89
5.6.1. РАПИРА-интерпретатор, как система программи-
рования 89
5.6.2. Управление системой.Приостанов программы.
Директивы режимов останова 90
5.6.3. Языковые средства отладки. Прокрутка и след 94
5.7. Файлы и обмен. Работа с внешней памятью 96
5.7.1. Внешняя память. Библиотеки файлов 96
5.7.2. Текстовые файлы произвольного доступа 98
5.7.3. Открытие и закрытие файла 99
5.7.4. Действия с файлами 102
5.7.5. Переключение ДЗУ 106
5.8. Организация ввода-вывода 106
5.8.1. Потоки информации и устройства ввода-вывода 106
5.8.2. Переключение потоков 108
5.9. Графика и организация диалога 110
5.9.1. Графические возможности ЭВМ "Агат" 110
5.9.2. Управление графикой и диалогом в РАПИРЕ 112
5.9.3. Стандартные графические процедуры 115
5.9.4. Работа с текстовой страницей 119
5.10. Модули и исполнителИ 120
5.10.1. Расширение аппарата процедур в РАПИРЕ 120
5.10.2. Модули 120
5.10.3. Описание модуля 122
5.10.4. Включение и выключение модуля 123
5.10.5. Доступ к именам модуля 125
5.10.6. Маскировка остановов 125
5.10.7. Описание исполнителей с помощью модулей 127
5.10.8. Описание синтаксиса исполнителя 128
6. Сообщения системы 130
6.1. Лексические и синтаксические ошибки 130
6.2. Ошибки исполнения программы 137
Приложение 1. Синтаксическая сводка РАПИРЫ 149
Приложение 2. Кодировка символов 158
Приложение 3. Стандартные процедуры и функции РАПИРЫ 167
Приложение 4. Комплектующие программы 176
Приложение 5. Отличия версий 188
1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ
1.1. Назначение и структура системы
Система "ШКОЛЬНИЦА" предназначена для оснащения персональных
микроЭВМ, используемых в учебном процессе школ и других вычислительных
кабинетов.
Ядро системы составляют:
- дисковая операционная система (ДОС), обслуживающая библиотеки
файлов на ГМД;
- базовые подпрограммы ввода-вывода, обслуживающие ввод с клавиатуры
и вывод на экран и обеспечивающие принятые в системе правила
ведения диалога.
В состав системы входят следующие модули.
1) РАПИРА-интерпретатор. РАПИРА - это учебно-производственный
диалого-ориентировачный бестиповый язык высокого уровня,
предназначенный для оперативного решения на ЭВМ небольших задач и
для обучения пользователей, в том числе - студентов и школьников;
допускающий разработку прикладных пакетов средней сложности.
Второй входной язык системы, РОБИК, предназначен для обучения
оновам и навыкам программирования младших школьников и
реализуется тем же интерпретатором.
В интерпретатор встроены:
- диалоговый экранный Редактор программных текстов (5.4.2);
- графическая подсистема, управляемая из языка набором
графических процедур (5.9);
2) Диалоговый отладочный комплекс (ДОК), позволяющий работать с ЭВМ
на языке машинных команд и включающий в себя:
- диалоговый экранный Редактор;
- ассемблер;
- символьный отладчик.
3) Программа копирования дисков.
Стандартное программное наполнение системы представлено набором
программ на РАПИРЕ (описаны в Приложении 4):
- комплект тригонометрических и других математических функций;
- процедура сбора статистики по допущенным в течение сеанса ошибкам;
- базовый комплект исполнителей для РОБИКА;
- редактор алфавитов символов, используемых в графике;
- программа печати этой инструкции;
- программа генерации музыкальных звуков;
- комплект программ для обслуживания дисков.
Все они могут служить примерами прикладных программ, написанных на
языке РАПИРА.
1.2. Версии системы
В этом руководстве описывается версия системы с индексом А1.3 по
состоянию на 1.1.1987. Различия между ранними версиями А1.2, А1.2' и
А1.3 приведены в Приложении 5.
1.3. Условия применения
Система работает в следующей минимальной конфигурации технических
средств:
- ЭВМ "АГАТ" с объемом ОЗУ не менее 64 Кбайт и ППЗУ не менее 32 Кбайт
(7 исполнение) и дисководом ЕС-5088 для гибких магнитных дисков
диаметром 133 мм;
- цветной телевизионный монитор.
Для расширения возможностей системы могут быть дополнительно
подключены:
- комплект потенциометров;
- печатающее устройство D-100 или СРА-совместимое.
- второй дисковод, подключенный к тому же разъему, что и первый.
2. ХАРАКТЕРИСТИКИ ПРОГРАММЫ
2.1. Технические характеристики
Наименование Ограничение
--------------------------------------------------------
Базовая ЭВМ АГАТ (7 исполнение)
- ОЗУ 48+16 К байт
- ППЗУ 32К байт
- ДЗУ НГМД ЕС-5088
- емкость 140К байт
- количество один или два на одном раз еме
- телемонитор цветной
- печатающее устройство нет, D-100, СРА-80
- потенциометры до 2
Экран
- текстовые режимы: ГЦС: 32х32 цветных символа
ГНС: 64х32 ч/б символа
- графические режимы: ГСР: 128х128 цветных точек
ГВР: 256х256 ч/б точек
ГНР: 64х64 цветных точек
- число различных цветов: 8
2.2. Характеристики РАПИРА-интерпретатора
Наименование Ограничения
--------------------------------------------------------
Об ем интерпретатора 40К байт
Об ем рабоч. памяти 32К байт
Программные стеки 1.25К байт
Рабочая память Редактора 8К байт
Число различных символов 256
Буфер вводимой строки 256 символов
2.3. Количественные ограничения в РАПИРЕ
Наименование Ограничение
--------------------------------------------------------
Макс.длина вводимой лексемы 255 сим.
Макс.целое число (модуль) 2**1016-1
Точность представления дроб.чисел 12 знаков
Порядок дробных чисел -128<х<128
Макс.порядок дроб.числа на вводе 127
Макс.целая часть дроб.числа на
вводе (без незначащих нулей) 127 цифр
Макс.число различных имен
(включая стандартные) 256
Макс.размер кортежей на вводе 255 эл-тов
Макс.мощность множества 255 эл-тов
Макс.число параметров проц.блока 127
Макс.число локальных имен проц.блока 255
Различаемая длина имени файла 30 литер
Число одновременно открытых файлов 7
Размер диска в блоках 560
Макс.наполнение потока вывода 2 файла+экран
или печ.устр.
3 файла
3. ОБРАЩЕНИЕ К СИСТЕМЕ
3.1. Загрузка системы
Загрузка системы производится автоматически после выбора
альтернативы 'РАПИРА' в начальном меню ИКП.
Дополнительные сведения.
1) Если используются два дисковода, загрузочный диск следует
вставлять в дисковод на первом приводе.
2) Если машина уже включена и выдает приглашение какой-либо другой
системы (например, "*", "]", ">"), нужно провести перезагрузку
системы с соответствующего дисковода, вставив в него
предварительно системный диск "Школьницы".
3) Если вы не знаете, как проводится перезагрузка из другой системы,
или если она у вас не получилась, лучше всего выключить машину и
включить ее снова. При этом в дисководе должен находиться диск
ИКП1.
4) Во время загрузки возможны сообщения
- ОШИБКА ОБМЕНА - модуль не читается с диска; ошибка возможна
при незакрытом дисководе, отсутствии диска в дисководе, порче
информации на диске или физической порчи самого диска, а
также при попытке считывания с неразмеченного диска.
- ПРОГРАММА ИСПОРЧЕНА - ошибка контроля правильности кода
загружаемого блока; возникает при порче информации на диске
или при попытке загрузки с другого диска.
- СИСТЕМНЫЙ СБОЙ - другие ошибки в загружаемом блоке, делающие
невозможной его работу. Система перезагружается.
Перезагрузка происходит и при нажатии клавиши "СБРОС".
3.2. Копирование дисков
Модуль копирования дисков вызывается из главного меню выбором
альтернативы 'КОПИРОВАНИЕ'.
Сначала копируется весь диск ИКП1, затем в режиме 'УДАЛЕНИЕ ФАЙЛОВ'
освобождается требуемое количество свободного места на дубликате. Не
рекомендуется удалять с загрузочного диска файл 'ЗАПУСК'.
Для возврата в меню следует вставить в дисковод N1 диск ИКП1 или
полученный дубликат и нажать одновременно клавиши УПР и СБРОС.
3.3. Вызов РАПИРА-интерпретатора
В случае успешной загрузки в верхней, информационной строке
появляется заголовок:
** РАПИРА-АГАТ 1.3 **
после чего выполняется программа ЗАПУСК с загрузочного диска. При
вызове интерпретатора из меню она выдает в средней части экрана:
ЕСЛИ ВЫ НЕ ЗНАКОМЫ С СИСТЕМОЙ,
НАБЕРИТЕ
ЗАПУСК ИНСТР;
Последнее сообщение выдается программой ЗАПУСК, которая
автоматически запускается при вызове системы. Возможно появление
сообщения "ФАЙЛ НЕ НАЙДЕН", если эта программа отсутствует.
В нижнем левом углу появляется приглашение к диалогу: знак # .
Признаком того, что система ожидает ввода с клавиатуры, всегда
служит появление на экране курсора. Курсор отмечает на экране монитора
позицию, начиная с которой будет отображаться вводимая информация. В
системе "ШКОЛЬНИЦА" он имеет вид мигающего подчерка. Если курсор на
экране отсутствует, значит ввод по той или иной причине невозможен
(идет исполнение программы, машина "зависла" и т.п).
Выдача приглашения означает, что система готова к работе, и можно
вводить любое предписание языка РАПИРА.
Чтобы вернуться обратно в системное меню или вызвать другую
систему, необходимо вставить загрузочный диск в дисковод N1, набрать
предписание
ВКЛ МЕНЮ;
и нажать клавишу "перевод строки".
3.4. Режимы работы РАПИРА-интерпретатора
В системе предусмотрено несколько режимов диалога, которые
отличаются набором допустимых возможностей. Установить, в каком режиме
система находится в данный момент, можно по информационной строке
экрана.
1) В основном диалоговом режиме на верхней строке высвечивается
название доступного языка и текущей версии интерпретатора:
** РАПИРА-АГАТ 1.3 **
** РОБИК-АГАТ 1.3 **
В этом режиме допускается использование всех предписаний данного
языка, а также директивы "РАПИРА" и "РОБИК". Они производят
очистку памяти и перевызов интерпретатора без перезагрузки с
диска. При этом оказывается доступен один из указанных языков.
Снова запускается программа ЗАПУСК, выдающая в этом случае:
СИСТЕМА ПЕРЕВЫЗВАНА
Подробнее этот режим описан в 5.3.1 и 5.6.1.
2) В режиме приостанова информационная строка имеет вид:
>> П А У З А <<
Система переходит в этот режим после прекращения исполнения
процедуры, вызванного предписанием СТОП или нажатием клавиши
останова F1. Здесь разрешается исполнение тех же директив, что и
в основном режиме, и дополнительно директив ШАГ, ВЫХОД и ПУСК.
3) В режиме останова по ошибке информационная строка имеет вид:
>> О Ш И Б К А <<
Система переходит в этот режим, когда при исполнении процедуры или
функции возникает ошибка. Кроме директив основного режима здесь
допустима директива ВЫХОД : возврат в основной режим.
Оба режима останова носят отладочный характер и подробнее
описываются в 5.6.2.
4) В режим редактирования пользователь попадает по директивам ПРОЦ и
ФУНК. Здесь можно только набирать и исправлять тексты программ;
все вводимые предписания не исполняются немедленно, а только
запоминаются. При выходе в основной диалоговый режим может быть
проверена корректность набранной программы. Редактирование
ведется с помощью функциональных клавиш или выбором из меню.
Подробнее этот режим описан в 5.4.2.
3.5. Управление диалогом с клавиатуры
Находясь в основном диалоговом режиме (здесь и далее
подразумеваются также оба режима останова, если не оговорено особо),
можно достаточно свободно использовать при наборе весь экран.
Клавиша "РЕД" устанавливает режим свободного перемещения по экрану:
с помощью клавиш-стрелок можно подвести курсор к любой точке экрана,
не вводя при этом в машину ни одного символа. В этом режиме курсор на
экране имеет вид мерцающего знака "^". Нажатие любой другой клавиши
вызывает выход из этого режима.
Клавиши "вверх" и "вниз", нажатые вне этого режима, имеют тот же
смысл.
Клавиша "->" кроме перемещения курсора дописывает в конец вводимой
строки текущий символ с экрана. Пройдя по некоторому тексту на экране
курсором, можно, таким образом, ввести его в машину, не набирая
заново.
Клавиша "<-" кроме перемещения курсора стирает последний символ во
вводимой строке, оставляя его на экране. Стирается не всегда тот
символ, на который указывает курсор. Если, например, в ситуации
ПРИМЕР НЕСООТВЕТСТВИЯ
ТЕКСТА ЭКРАНУ_
нажать клавишу "вверх" и пять раз клавишу "<-", то из вводимой строки
исчезнут буквы "КРАНУ", а не "ЕСООТ", как это будет изображено на
экране.
Клавиша "F2" уничтожает на экране текущий символ, сдвигая при этом
остаток экранной строчки влево. На освободившееся место вставляется
пробел.
Клавиша "F3" освобождает на экране одну позицию перед текущим
символом. Остаток экранной строчки при этом сдвигается вправо, и
последний символ в ней пропадает.
Символ "УПР-L" очищает текстовое окно экрана и устанавливает курсор
в его левый верхний угол.
Функциональные клавиши "1", "2", "3", "4", "5", "6", "7", "0", ".",
"=" и соответствующие им символы управляют цветом вывода символов и
фона на экран (Приложение 2).
Клавиша "9" заполняет пробелами остаток экрана, начиная с текущей
позиции курсора.
Клавиша "8" переключает экран на показ текущей текстовой и текущей
графической страниц в зависимости от того, какая из них показана в
данный момент.
Клавиша перевода строки вызывает анализ машиной очередной набранной
строки.
Клавиша "F1" является универсальной клавишей останова.
Нажатие клавиши "УПР-Х" означает отказ от ввода строки. При этом на
экране появляется символ "\", строчка автоматически переводится, и
выдается приглашение к новому вводу.
Клавиша "УПР-V" позволяет записать во вводимую строку любой
управляющий символ, не выполняя связанных с ним действий. На экране
этот символ высвечивается инверсным желтым цветом. Вставка обычного
символа равносильна вводу самого символа. Нельзя вставить только
символ "перевод строки" (код 141, клавиша "УПР-М").
Часть перечисленных выше клавиш выполняют указанные действия на
выводе, т.е. при выводе на экран соответствующих им символов
(называемых поэтому управляющими). Это дает возможность задавать эти
действия в программе, вставляя управляющие символы в выводимые
сообщения.
4. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ
Данные системы "ШКОЛЬНИЦА" - это объекты ее входных языков,
программы, сообщения системы и ответы на них.
Входные данные:
- программы,
- данные, запрашиваемые из программ предписанием "ВВОД",
- ответы на запросы системы,
- функции, процедуры и модули на внешних носителях.
Выходные данные:
- результаты работы программы, выдаваемые предписанием "ВЫВОД",
- сообщения системы,
- рисунки, выдаваемые на телемонитор и запоминаемые на НГМД,
- звуковые сигналы,
- файлы и программы на НГМД.
В РАПИРА-интерпретаторе допускается управление выводом информации
различного назначения на различные внешние устройства (5.8).
5. РАБОТА С ИНТЕРПРЕТАТОРОМ ЯЗЫКА РАПИРА
5.1. Простые вычисления на РАПИРЕ
5.1.1. Вычисление простых выражений
Элементарные действия, которые можно выполнять непосредственно в
режиме диалога - это вычисление арифметичеких выражений с помощью
простейшей формы предписания вывода. Для этого необходимо, получив
приглашение к вводу (#):
1. Набрать вопросительный знак (?).
2. Набрать нужное арифметическое выражение.
3. набрать точку с запятой (;).
4. Выполнить перевод строки (нажать клавишу с изогнутой стрелкой)
для ввода набранной строки в машину.
Правила записи выражений традиционны для процедурных языков
программирования: для обозначения операций сложения, вычитания,
умножения, деления и возведения в степень используются знаки "+", "-",
"*", "/" и "**", соответственно. Приоритеты операций и правила
расстановки скобок соответствуют общепринятым, причем допускаются
только круглые скобки.
Если предписание набрано верно, то на следующей строке появляется
результат вычислений. Например:
# ?25;
25
# ?5986*1928+961**2-512/256;
12464527
Здесь и далее в примерах диалога знак приглашения # только
указывает на те строки, которые набраны пользователем: писать его
нельзя.
В записи дробных чисел (д7 - здесь и далее так обозначаются номера
диаграмм синтаксического описания языка, приведенного в Приложении 1)
для отделения целой части от дробной используется точка: число 12,41
(двенадцать целых и сорок одна сотая) записывается как 12.41 .
Разрешена запись чисел в формате с плавающей точкой, при этом для
обозначения десятичного порядка числа используется буква "Е",
например, 10,15 х 10 ** 24 записывается как 10.15Е24, а 56 х 10 **
-18 - как 56Е-18 .
Точка в записи дробного числа разделяет цифры: вместо 5. и .25
следует писать 5.0 и 0.25 .
Если в ариметических операциях участвуют и целые, и дробные числа,
результат всегда будет дробным.
5.1.2. Правила записи предписаний во вводимой строке
Все символы, набираемые с момента получения приглашения до перевода
строки образуют вводимую строку. Максимальная ее длина в режиме
диалога - 255 символов. Это больше размеров экранной строчки по
горизонтали, поэтому вводимая строка может занимать несколько экранных
строчек.
За 8 позиций до конца строки каждый вводимый символ сопровождается
звуковым сигналом. Когда же вводимая строка заполняется полностью,
ввод новых символов временно прекращается до нажатия клавиши перевода
строки.
1) Между числами и знаками операций может стоять любое количество
пробелов, но внутри числа пробелы не допускаются. Недопустимы они
и внутри составных знаков операций, например "**".
Так, предписания
?25+16*48;
и
? 25 + 16* 48 ;
эквивалентны, но предписание
?2 5+16*48;
ошибочно, и при его разборе система выдаст сообщение об ошибке.
2) Перевод строки синтаксически равнозначен пробелу, что позволяет
располагать одно предписание на нескольких строках. Никакие знаки
или признаки переноса при этом недопустимы! Также недопустимо
разбивать переводом строки числа и сложные знаки операций.
Например, предписание
# ?512*296;
можно набрать и так:
# ?
> 512
> * 296;
Появление приглашения ">" вместо "#" означает, что предписание еще
не закончено и его следует продолжить.
3) Точка с запятой (;) является признаком конца предписания, позволяя
записывать на одной строке несколько предписаний подряд.
При нажатии клавиши перевода строки исполняются все предписания,
законченные во вводимой строке, например:
# ?5*8; ?3+4; ?15*67;
40
7
1005
5.1.3. Некоторые дополнительные возможности
1) Для вычисления сразу нескольких выражений их можно указать в одном
предписании вывода, разделяя запятой. В этом случае результаты
будут выданы на одной строке. Например:
# ?5.8*8,3+4,15*67;
46.4 7 1005
2) Над целыми числами предусмотрена также операция деления нацело,
обозначаемая "//":
# ? 28//3, -28//3 ;
9 -9
3) Диапазон представления целых чисел: |N|<2**1016 , дробных:
10**-128 < |х| < 10**128 . Точность представления дробных чисел -
12 значащих цифр. Числа, порядок которых меньше -127,
преобразуются в ноль.
Замечания:
а) На вводе допустимы лишь числа не длиннее 255 цифр (длина
вводимой строки).
б) Диапазон представления целых чисел больше, чем диапазон
дробных. Скорость выполнения операций над целыми числами
также больше, чем над дробными примерно вдвое. Поэтому при
решении прикладных задач, требующих высокой точности и
повышенной скорости, выгоднее использовать целую арифметику
(заменяя деление делением нацело и вводя масштабный
множитель).
4) Возведение чисел в дробную степень не реализовано. Для этого
следует воспользоваться функциями из стандартного модуля ФУНКЦИИ
по формуле:
Х**У = ЕХР(У*LN(Х))
5) Операции "унарный плюс" нет. Поэтому выражения +10-5 или 8*(+6)
считаются ошибочными.
5.1.4. Диагностика ошибок и их исправление
Если во вводимой строке содержится несколько предписаний, анализ и
выполнение каждого из них начинается только после выполнения
предыдущего предписания.
При ошибке в записи очередного предписания подается звуковой
сигнал, на экране дублируется часть вводимой строки, причем ошибочное
место выделяется, а затем выдается диагностическое сообщение.
Предписание, в котором обнаружена ошибка, не исполняется, и вся
оставшаяся часть вводимой строки не анализируется.
Все возможные сообщения об ошибках, пояснения, помогающие понять
причины их возникновения, а также способы устранения приведены в 6.
При обнаружении ошибки во время исполнения предписания (например,
при делении на 0) выполняются те же действия, но строка с ошибкой не
выдается.
Если ошибка во вводимой строке замечена до перевода строки, то ее
можно исправить сразу, а если ошибка своевременно не замечена, и
получено диагностическое сообщение, необходимо ввести предписание
заново, исправив ошибку. Для этого можно использовать описанные в 3.5
средства экранного редактирования.
5.2. Структуры данных и операции над ними
5.2.1. Объекты языка. Имена и их значения. Присваивание
РАПИРА-интерпретатор моделирует на ЭВМ операционную обстановку
(программную среду), в которой действует сам пользователь и его
программы. Объекты этой среды образуют набор доступных для обработки
данных, операции и предписания языка определяют способы, а программы -
последовательность их обработки.
Существуют объекты следующих видов:
- целые числа (5.1.1),
- дробные числа (5.1.1),
- тексты (5.2.3),
- множества (5.2.4, 5.2.6),
- кортежи (5.2.4, 5.2.5),
- записи (5.2.4, 5.2.7),
- процедуры (5.2.8, 5.5),
- функции (5.2.8, 5.5),
- файлы (5.2.9, 5.7),
- пусто.
Объекты могут указываться непосредственно в тексте программы,
вводиться в ходе ее исполнения или возникать в результате операций над
другими объектами. Последние уничтожаются после использования их в
предписании или следующей операции. Так, например, пропадают все
промежуточные результаты, возникающие при вычислении выражения.
Чтобы сохранить в памяти для последующего использования некоторый
объект ему необходимо дать имя (присвоить его некоторому имени). Сам
объект называется значением имени.
Форма имени в РАПИРЕ традиционна (д9): оно состоит из букв и цифр,
причем на первом месте должна стоять буква. В связи с отсутствием на
клавиатуре ЭВМ "АГАТ" строчных букв допускается использование только
заглавных букв; подстрочные символы (например, применяемые в
математике индексы) также запрещены. Совпадающие по написанию русские
и латинские буквы не различаются (буквы "У" и "Y" различаются!).
Символы в имени разрешено для удобства чтения разделять одиночными
подчерками.
Примеры имен:
Х
У1
WОRD16А2
ИМЯ_УЧЕНИКА
Примеры ошибочных имен:
6Н3П (имя не может начинаться с цифры)
_СКОРОСТЬ_ (в начале и в конце имени подчерк недопустим)
ВЫСОТА__ГОРЫ (два подчерка не могут стоять подряд)
Счетчик (строчные буквы недопустимы).
Длина имен в РАПИРЕ ограничена только длиной вводимой строки (255
символов). При распознавании имен учитываются все символы, включая
подчерки.
Количество различных по написанию имен, известных в данный момент
системе, не должно превышать 256 (считая стандартные имена, локальные
параметры процедур и функций, имена полей записей, см. 5.2.4, 5.5.3,
5.5.4).
Имена можно использовать в программе без какого-либо
предварительного объявления. Всякому имени (за исключением защищенных,
см. 5.2.2) можно присвоить значение любого вида. Допускается
присваивание одному и тому же имени значений различных видов в
произвольном порядке.
Предписание присваивания в простейшем случае имеет вид:
выражение -> имя ;
Примеры:
# 5->Х;
# Х*28+17**Х->СКОРОСТЬ;
# Х*8->Х;
Для просмотра текущих значений имен удобно использовать простейшую
форму вывода:
# ?Х,СКОРОСТЬ;
40 1419997
Если в выражении или предписании использовано имя, то
подразумевается его значение (объект, запомненный под этим именем):
# ? Х+СКОРОСТЬ/2;
710038.5
Имена, которым не были присвоены значения в программе, имеют по
умолчанию значение "пусто".
Предусмотрено стандартное имя ПИ, имеющее значение 3.14159265359.
Просмотреть список всех имен (кроме стандартных), использованных в
системе с момента загрузки (перевызова) РАПИРЫ и имеющих непустое
значение, можно при помощи предписания
КАТАЛОГ ИМЕН;
Просмотреть список, содержащий и имена с пустыми значениями, можно
так:
# КАТАЛОГ ВСЕХ ИМЕН;
-- КАТАЛОГ ПРОЦЕДУР --
ЗАПУСК.............. ПРОЦ
-- КАТАЛОГ ИМЕН --
СУММА............... ЦЕЛ
(П) ТАБЛИЦА............. КОРТ
РАБ_ИМЯ............. ПУСТ
ПУСТО............... ПУСТ
Здесь после имени указывается вид его значения, а перед - тип
защиты (если она есть).
5.2.2. Защита имен
Этот пункт можно пропустить при первом чтении.
Имена в РАПИРЕ могут иметь защиту от присваивания. Различается 4
уровня защиты: отсутствие ее, частичная, полная и абсолютная
(системная).
Если на имя установлена частичная защита, то его значение может
быть изменено только после дополнительного подтверждения. При попытке
присвоить новое значение такому имени выдается запрос:
имя : ПРИСВАИВАТЬ (Д/Н)?
и только в случае положительного ответа присваивание будет выполнено.
Если на имя установлена полная защита, то попытка присваивания ему
будет рассматриваться как ошибка. Чтобы изменить значение имени, нужно
сначала выключить его защиту.
Абсолютная (системная) защита устанавливается и отменяется системой
и не может быть изменена пользователем. Такую защиту имеют, например,
имена процедур и функций в момент вызова, имена-параметры циклов
перебора, имена важнейших стандартных процедур и функций и т.п. Эта
защита служит для предотвращения побочных эффектов, т.е. действий,
могущих привести к нарушению правил выполнения предписаний (подробнее
см в 5.5.7).
Для включения и выключения полной и частичной защиты используются
предписания ВКЛ и ВЫКЛ (д35). Например, предписания
# ВКЛ ЧАСТ ЗАЩИТУ ИМЕН:А,Б;
# ВКЛ ЗАЩИТУ:В;
устанавливают на имена А и Б частичную защиту, а на имя В - полную;
предписание
# ВЫКЛ ЗАЩИТУ:Б,В;
снимает установленные ранее защиты с имен Б и В.
Включение полной защиты имени отменяет частичную и наоборот. Если
упомянутые в предписании ВЫКЛ имена не имеют никакой защиты, то
никаких действий над ними не производится.
В каталоге имен перед защищенными именами в скобках указывается
первая буква названия защиты.
Механизм защиты имен позволяет избежать случайной потери особо
важной информации из-за неосторожных присваиваний в процессе диалога с
ЭВМ, он способствует соблюдению дисциплины программирования и может
быть полезен при отладке.
5.2.3. Тексты и операции над ними
Текст - это произвольная последовательность символов. При записи в
составе программы тексты заключаются в кавычки (д8), например:
"ТЕКСТ"
"SIМРLЕ ТЕХТ"
"123+45""
Все символы текста, включая пробелы, занумерованы слева направо,
начиная с единицы, например:
"НУМЕРАЦИЯ"
123456789
Кавычки, окаймляющие текст, в его состав не входят.
Тексты, как объекты, могут быть значениями имен, входить в состав
выражений. Над ними определены следующие операции:
1) Определение длины - унарная операция, обозначаемая знаком "#".
Длиной текста называется количество символов в нем. Пример:
# "КРОКОДИЛ"->Т; ?Т,#Т;
КРОКОДИЛ 8
(тексты выводятся без окаймляющих кавычек).
2) Конкатенация (слияние) - бинарная операция, обозначаемая знаком
"+":
# "ВЕЛО"+"СИПЕД"->Т; ?Т;
ВЕЛОСИПЕД
3) Выборка - извлечение одного символа по его номеру в тексте
(индексу). Обозначается квадратными скобками, например:
"ТЕКСТ"[3]
Результат выборки - литера, т.е. текст единичной длины. В качестве
индекса может быть использовано любое выражение с целым
положительным значением, не превосходящим длины текста. Примеры:
# ?"ДИНОЗАВР"[3];
Н
# 5->Х; "КРОКОДИЛ"->Т; ?(Т+Т)[3*Х];
И
4) Вырезка - извлечение участка текста, определяемого индексами
начального и конечного символов. Обозначается так же, как и
выборка, но в скобках указываются два индексных выражения через
двоеточие, например:
Т[3:4] , "БЕГЕМОТ"[N:N+1] .
Дополнительное условие: второй индекс должен быть не меньше
первого. Примеры:
# ?"ВЕЛОСИПЕД"[5:7];
СИП
# "ПРИМУС"->Х;
# Х[4:4]+Х[3]+Х[6]+Х[#Х]+Х[#Х-1]+Х[2:3]->РЕКА;
# ?РЕКА;
МИССУРИ
Операции выборки и вырезки могут стоять как слева, так и справа от
знака присваивания. В последнем случае они позволяют изменять
отдельные символы или участки текстов, являющихся значениями имен.
Например:
# "КРОКОДИЛ"->К; "Я"->К[3]; "УШКА"->К[5:#К]; ?К;
КРЯКУШКА
Такие присваивания не меняют длины текста, поэтому длина текста в
левой части предписания присваивания должна быть в точности равна
длине заменяемого участка.
Если значением имени Д является текст "ТЕКСТ С ОПЕЧТКОЙ", то нельзя
исправить ошибку с помощью присваивания
# "ЧАТ"->Д[#Д-4:#Д-3];
Требуемого результата можно достичь, комбинируя вырезку и
конкатенацию:
# Д[1:#Д-4]+"А"+Д[#Д-3:#Д]->Д;
Дополнительные сведения.
1) Как слева, так и справа от знака присваивания можно использовать
несколько выборок и вырезок подряд, поскольку результат этих
операций - тоже текст, и к нему можно снова применять все
операции над текстами. Например:
# ?"ГИППОПОТАМ"[5:10][3:5][2][1];
А
Подробнее эта конструкция описана в 5.2.5 на примере кортежей,
обрабатываемых аналогично.
2) При вводе текста в составе предписания с клавиатуры на него
распространяются все правила набора лексем. В частности, текст не
может быть разорван переводом строки и продолжен на другой
строке, поэтому его длина на вводе не может превышать 253 литер
(плюс две окаймляющие кавычки - всего 255 символов). Однако длина
текста, получающегося при выполнении операций над другими
текстами, ограничивается только объемом доступной памяти и может
достигать нескольких тысяч литер.
3) При вводе текста с клавиатуры в его состав могут входить
другие символы, в т.ч. управляющие. Управляющий символ попадает
во входную строку только после нажатия клавиши УПР-V и
высвечивается желтым цветом (см. также Приложение 2).
4) Если в состав текста требуется включить кавычку, то ее нужно
повторить дважды:
# ?"ЛЕДОКОЛ ""АЛЬБАТРОС""";
ЛЕДОКОЛ "АЛЬБАТРОС"
5) Допустим пустой текст "". Его длина равна нулю.
6) Есть возможность сформировать текст заданной длины, состоящий из
одинаковых символов (Приложение 3, функция ФТЕКСТ).
5.2.4. Составные объекты и их формирование
Составными объектами в РАПИРЕ являются множества, кортежи и записи.
Множество - это неупорядоченная совокупность произвольных попарно
различных элементов.
Кортеж - это упорядоченная совокупность произвольных элементов.
Запись - это совокупность различных именованных полей, значением
каждого из которых может быть произвольный элемент.
Элементом составного объекта может быть объект любого вида (см.
5.2.1). Таким образом, составные объекты могут быть вложенными:
элементом одного из них, например, могут быть другие множества,
кортежи или записи.
Для образования составных объектов служит операция формирования
(д14). Объединяемые элементы записываются через запятую и заключаются
в скобки, соответствующие виду составного объекта: < > - для кортежей,
<* *>- для множеств, <$ $> - для записей. При формировании записи
перед каждым элементом через двоеточие указывается имя поля. Примеры:
# <5,"МАМА",<1,5>,5>->К;
# <*1,1+1,К,1,<1,5>,2*>->М;
# <$ИМЯ:"ИВАН",ФАМИЛИЯ:"ПЕТРОВ"$>->ЗАП;
Теперь значение имени К - кортеж из четырех элементов: числа 5,
текста "МАМА", кортежа <1,5> и еще одного числа 5.
Значение М - множество из четырех элементов: чисел 1,2, кортежей К
и <1,5>. Одинаковые элемЕнты учитываются в множестве только один раз,
а в кортеже - столько раз, сколько указано: например, кортеж <5,5,5>
состоит из трех элементов, а множество <*5,5,5*> - из одного.
Значение имени ЗАП - запись из двух полей: ИМЯ и ФАМИЛИЯ. Названия
полей записываются по тем же правилам, что и имена.
При формировании в составной объект включаются копии значений
указанных выражений или имен, а не сами эти имена:
# 1->А; <*А*>->В; 10->А; ?В,А;
<*1*> 10
Операция формирования может входить в состав более сложных
выражений с использованием операций над составными объектами,
описанными в следующих параграфах.
Форма вывода составного объекта соответствует записи операции его
формирования. При этом порядок следования элементов в неупорядоченных
множествах и записях может быть произвольным.
Особенности и ограничения.
1) Запись формирователя составного объекта может занимать несколько
строк в программе:
# <1,2,
> 3
> ,4
> ,5>->Х;
2) Допустимы пустые множество <* *> и кортеж < >, но не пустые
записи. Все перечисленные ниже объекты различны:
<* *> , < > , <* ПУСТО *> , < ПУСТО > , ПУСТО .
3) Максимальное число элементов множества и записи, а также число
участвующих в операции формирования кортежа элементов - 256.
Максимальная длина кортежа, получающегося в результате других
операций, и глубина вложенности всех составных объектов зависит
только от объема памяти и размеров системных стеков.
4) Можно сформировать кортеж любой заданной длины, заполненный
одинаковыми элементами (Приложение 3, функция ФКОРТ).
5.2.5. Операции над кортежами
Над кортежами предусмотрены такие же операции, как и над текстами
(5.2.3):
- определение длины (#),
- конкатенация (+),
- выборка ([N]),
- вырезка ([N1:N2]).
Они выполняются так же, как операции над текстами, если вместо
символов рассматривать элементы кортежа.
Примеры:
# <1,5,"ПРОБА",<"А","В","СЛОВО">>->К;
# ?#К;
4
# К+<"НОВОЕ СЛОВО">->К2; ?К2;
<1,5,"ПРОБА",<"А","В","СЛОВО">,"НОВОЕ СЛОВО">
# ?К[3];
ПРОБА
# ?К[2:3];
<5,"ПРОБА">
# ?К[4][3][2];
Л
# "СПОРТ"->К[4]; <1,2>->К2[4:5];
# ?К; ?К2;
<1,5,"ПРОБА","СПОРТ">
<1,5,"ПРОБА",1,2>
Ограничения на допустимые значения индексов те же, что и для
операций над текстами.
Существует единственное, но важное различие между операциями
вырезки и выборки для текстов и кортежей. Для текстов выборка и
вырезка формируют объекты одного вида - тексты. Например, выражения
Т[2] и Т[2:2] равнозначны и выделяют одну литеру. Для кортежей
результатом вырезки всегда будет кортеж, а выборки - элемент любого
вида (в т.ч. и кортеж). Для кортежей равными будут значения выражениЙ
К[2:2] и <К[2]>.
Если выборка или вырезка использованы справа от знака -> , то
выборке можно присваивать любой элемент, а вырезке - только кортеж.
# <1,2,3>->КРТ;
# <4> -> КРТ[2]; ?КРТ;
<1,<4>,3>
# 4 -> КРТ[2]; ?КРТ;
<1,4,3>
В случае использования многократной вырезки и выборки пару скобок
"][" можно заменять запятой. Например, следующие выражения
эквивалентны:
Т[3][2:5][3] и Т[3,2:5,3]
Такая запись удобна, когда вложенные кортежи используются для
моделирования двумерных и многомерных таблиц.
5.2.6. Операции над множествами
Над множествами предусмотрены следующие операции:
- определение мощности (#),
- объединение (+),
- пересечение (*),
- разность (-).
Все они имеют обычный математический смысл.
Примеры:
выражение значение
#<*1,2,1,2,1,1+1*> 2
<*5,8*>+<*7,8,6*> <*5,6,7,8*>
<*1,2,3*>*<*8,1,3*> <*3,1*>
<*8,10,5,6*>-<*7,10,8*> <*6,5*>
С использованием перечисленных операций могут быть построены и
более сложные выражения, например: А+В-А*В (симметрическая разность).
Особенности:
1) В отличие от математической записи в РАПИРЕ пересечение (*) имеет
более высокий приоритет, чем объединение (+) и разность (-).
Изменить порядок вычисления можно с помощью скобок.
2) В отличие от кортежа и записи доступ к отдельному элементу
множества невозможен, поэтому всякое изменеНИа множества,
являющегося значением некоторого имени, возможно лишь путем
присваивания этому имени нового значения.
5.2.7. Операции над записями
Над записями допустима единственная операция - доступ к полю,
которая обозначается точкой. Например:
# <$СКОРОСТЬ:50,ВЫСОТА:200,НАПРАВЛЕНИЕ:"ЮГ"$>->ПОЛЕТ;
# ?ПОЛЕТ.СКОРОСТЬ;
50
Операция доступа к полю также может стоять справа от знака
присваивания, позволяя изменять значение отдельных полей записи:
# 250->ПОЛЕТ.ВЫСОТА; ?ПОЛЕТ;
<$СКОРОСТЬ:50,ВЫСОТА:250,НАПРАВЛЕНИЕ="ЮГ"$>
Никакие другие операции над записями недопустимы. В частности,
невозможно изменить количество полей в записи и их имена.
5.2.8. Процедуры и функции. Вызов
Процедура (а также функция) - это программа или часть программы,
являющаяся самостоятельным объектом. При описании указывается имя
процедуры (функции), которое затем принимает в качестве значения
объект "процедура" ("функция"); см. 5.5.1 и д38,39.
Основная операция над объектами этих видов - вызов, т.е. исполнение
предусмотренных описанием предписаний. При вызове могут указываться
параметры (входные данные). Функции, кроме того, возвращают в качестве
результата объект произвольного вида.
Вызов обозначается круглыми скобками (д15), в которых через запятую
могут указываться значения параметров. Примеры:
РАКЕТА(1,2,"ВВЕРХ")
SIN(90)
ДСЧ()
Основное отличие процедуры от функции - наличие у функции
результата. Поэтому, вызов процедуры - это действие (выполнение
программы): он считается предписанием, а вызов функции - это операция
вычисления результата: он приравнивается к выражению. В частности, он
может стоять внутри другого выражения.
Примеры вызовов процедур:
# КАДР(1,2); ЛИНИЯ(10,20,20,30);
Примеры использования вызовов функции в выражениях:
# ? SIN(ПИ/2);
1.0
# ЦЕЛЧ(10.89) -> А;
# ДСЧ()*13->В;
Более подробно порядок описания процедур и функций, способы
передачи параметров и особенности вызова описаны в 5.5.
Замечание. Хотя процедуры и функции в момент описания становятся
значениями своих имен, их можно, как и другие объекты, присвоить
другим именам и сделать элементами составных объектов.
В системе предусмотрен ряд встроенных (т.е. не требующих описания и
доступных в любой программе) процедур и функций. Они носят в основном
сервисный характер. Описание стандартных процедур и функций приводится
в Приложении 3.
5.2.9. Файлы
В РАПИРЕ есть файлы произвольного доступа, используемые для
хранения во внешней памяти и обработки большой текстовой информации.
Действия и операции с файлами: открытие, закрытие, ввод, вывод,
позиционирование - описываются в 5.7.
5.3. Управляющие конструкции
5.3.1. Структура программы
Понятие программы, как таковой, в РАПИРЕ отсутствует.
Программой считается последовательность управляющих действий,
исполненных в режиме диалога.
Предписания, поступившие в режиме диалога, называются директивами и
исполняются немедленно. Признаком конца очередной директивы является
точка с запятой (;).
Последовательность предписаний может быть объединена в процедурный
блок: процедуру или функцию, а затем исполнена при их вызове.
Процедурные блоки описываются в режиме редактирования по синтакическим
правилам языка (д37-39).
Универсальными называются предписания, которые могут и быть
директивами, и встречаться в процедурном блоке:
- присваивание (5.3.4),
- условные (5.3.7),
- циклы (5.3.8),
- контроль (5.3.7),
- вывод (5.3.9),
- ввод (5.3.11),
- каталог (5.2.1, 5.4.4),
- вызов (5.2.8, 5.5.1),
- включить и выключить (5.2.2, 5.6.3, 5.8.2),
- файловое предписание (5.7),
- пустое.
Пустое предписание не выполняет никаких действий и никак не
обозначяается. Наличие его в языке позволяет:
- ставить точки с запятыми там, где они необязательны;
- ставить несколько точек с запятыми подряд;
- вводить пустые строки.
Системные директивы могут употребляться только в режиме диалога:
- директивы общего режима РОБИК, РАПИРА, ПРОЦ и ФУНК.
- директивы режима приостанова ПУСК, ШАГ, ВЫХОД.
5.3.2. Общая структура предписания
Предписания задают действия над объектами программной среды. Сводка
правил, описывающих синтаксис предписаний языка, приведена в