[an error occurred while processing this directive]

.цв

.шп6

Часть II - для более опытного программиста

.ов

22 Краткое изложение Части I

.шп0

Эта глава содержит краткий перечень ключевых слов, введеных в Части I данного руководства. Затем следует общее обсуждение программирования на Комале, за которым следует краткое изложение других моментов Части I. С Главы 23 начинается изложение материала, не затронутого в Части I.

Приводимые ключевые слова были введены в Части I, но здесь приводится и краткое описание их функций. Более Полные объяснения приведены в указанных секциях, а синтаксические диаграммы даны в кратком описании ключевых слов в Части III.

---------------------------------------------------------
Ключевое
 слово        Краткое описание                     Секция
---------------------------------------------------------
ABS (j)       Абсолютная величина j                 18.6
AND           Логический оператор AND в двоич-
              ном представлении, обычно исполь-
              зуемый для проверки удовлетворены
              ли оба условия                        21.2
AUTO          Обеспечивает автоматическую нуме-
              рацию строк                           5.11
CHR¤  (j)     Символ с кодом ASCII  j               7.6
CLEAR         Очищает память от переменных за
              исключением системных/резидент-
              ных переменных                        4.6
CLG           Очищает графическое окно              11.6
CLS           Очищает текстовое окно                7.1
COLOUR 3      Устанавливает цвет текста на 
              номер 3                               8.3
COUNT         Количество напечатанных символов
              после возврата каретки                18.4
DEBUG         Тест на структурные ошибки и
              сообщение об ошибках                  7.3
DEL 30,90     Уничтожить строки от 30 до 90         5.10
DELETE it     Уничтожить файл с именем it           14.7
DIM set (4)   Задать размеры массива с элементами
              set(0) до set(4)                      19.4
DIV           Целое частное                         18.8
DRAW 30,400   Чертит линию до точки 30,400          11.3
EDIT          Показывает программу с невидимыми
              EXEC                                  13.5
ELSE          Альтернативные команды, идущиее за IF 15.6
END IF        Указыват конец структуры IF           15.5

.сс

----------------------------------------------------------
Ключевое
слово         Краткое описание                      Секция
----------------------------------------------------------
END PROC x    Маркирует конец описания процедуры    13.1
EOD           Индикатор конца  DATA                 17.3
EOR           Логический оператор в двоичном
              представлении, используемый для
              проверки удовлетворяется ли одно из
              условий                               21.3
FALSE         0                                     16.3
FOR j:=       Указывает на начало цикла с переменной
              цикла j                               6.1
FREE          Объем свободной памяти                3.12
*FX           Команда для генерации машинных 
              эффектов                              13.2
GET           Код ASCII следующего символа ввода    9.5
GET¤          Строка следующего символа ввода       9.6
GCOL 0,2      Устанавливает цвет графики на 2       11.5
IF            Начало условного оператора            15.3
IN            Позиция строки в другой               4.3
INKEY (n)     Ожидает ввода до n сотых секунды.
              Возвращает код ASCII                  20.1
INKEY¤ (n)    Ожидает ввода до n сотых секунды.
              Возвращает символ строки              20.2
INKEY (-99)   Проверка, была ли нажата клавиша с 
              кодом -99                             20.4
INPUT a¤      Берет строку и присваивает ее a¤      9.1
INT (j)       Целая яасть j                         3.11
LEN (a¤)      Количество символов в a¤              4.2
LIST          Выводит программу для просмотра       5.4
LOAD          Загружает программу из текущей        14.4,
              файловой системы                      14.6
MOD           Целый остаток после деления           18.9
MODE := 6     Выбор режима 6                        8.1
MOVE 10,200   Передвигает графический курсор в 
              точку 10,200                          11.4
NEW           Готовит компьютер к новой программе   5.1
NEXT j        Отмечает конец цикла FOR              6.1
NOT j         Инверсирует двоичные цифры j. Обращает
              TRUE и FALSE                          21.6
OF 5          Указывает длину строки или элементов
              строчного массива                     4.5
OLD           Пытается вернуть последнюю программу  5.8

.сс

---------------------------------------------------------
Ключевое
слово        Краткое описание                       Секция
----------------------------------------------------------
OR           Логический оператор в двоичном 
             представлении, обычно проверяющий
             удовлетворены оба или одно условие     21.1
ORD("A")     Код ASCII для А                        7.5
PI           Постоянная с величиной 3.141592653     3.13
PLOT 69,x,y  Построить точку с координатами x,y     11.9
POINT ( x,y) Номер цвета в позиции x,y              11.10
POS          Горизонтальная позиция курсора         18.1
PRINT a¤,b   Печатает величины a¤ и b               2.4
PROC x       Обозначает начало команд, которые 
             формируют процедуру х                  13.1
READ a¤      Присваивает a¤ следующий элемент DATA  17.2
RENUMBER     Перенумеровывает программу по 10,
             начиная с 10                           5.5
REPEAT       Начало условного цикла                 16.1
RESTORE      Устанавливает указатель на начало DATA 17.4
RESTORE aid: Устанавливает указатель после метки
             aid:                                   17.4
RND ( a,b)   Случайное целое число от а до b        10.1
RUN          Проверяет структуру программы и 
             запускает ее                           5.3
SAVE it      Сохраняет программу с названием it  14.3,14,5
SGN (j)      Знак j (указанный 1, 0, -1)            18.7
STEP         Размер увеличения переменной цикла
             FOR...                                 6.4
STR¤ (5)     Строковый эквивалент числа 5           20.12
TAB ( a)     Устанавливает текстовый курсор на а 
             позиции по горизотали                  7.2
TAB ( a,d)   Устанавливает текстовый курсор на 
             позиции a по горизонтали и d вниз по
             вертикали                              7.4
THEN         маркер для последовательности IF       15.3
TIME         Время после установки в 1/100 сек.     10.5
TRUE         -1                                     16.3
UNTIL        Маркер для конца цикла REPEAT          16.1
VAL          Числовая величина оцениваемой строки   20.11
VDU          Вызов экранного драйвера VDU           11.12
VPOS         Вертикальная позиция курсора           18.1
WIDTH        Символы, напечатанные до возврата 
             каретки и новой строки                 18.5

.шп14

22.1  Среда программирования

.шп0

Комал обладает многими свойствами, которые предназначены для помощи программисту.

1. Каждая строка программы проверяется на синтаксические ошибки по мере того, как она вводится. Если была найдена ошибка, то на позицию ошибки указывает стрелка.

2. Предзапусковая проверка смотрит, есть ли структурные ошибки в программе. Если ошибки найдены, то о них сообщается и программа не запускается.

3. Не разрешаются многооператорные строки. Это делает программы несколко длиннее, но ее намного легче читать, понимать и редактировать.

4. Ключевые слова печатаются в верхнем регистре, а переменные пользователя - в нижнем. Это выделяет действия программы.

5. При выводе программы для просмотра операторы, которые находятся внутри циклов и других структур выделяются. Вся структура программы в этом случае ясно видна.

6. Многие формальные элементы синтаксиса вводятся автоматически.

7. При вводе удаляются позиции начала и конца строки, пробелы после ключевых слов уменьшаются до 1.

8. Процедуры можно вызывать с помощью их названий, не используя EXEC. Процедура определяется между операторами PROC и END PROC, за каждым их которых седует название процедуры.

.шп14

22.2  Объекты, введенные в Части I

.шп2

Ключевые слова

.шп0

Если за ключевым словом не следует какой-либо алфавитно-цифровой символ как " или ), то необходимо печатать пробел. Ключевые слова RND(, TAB( и POINT( включают в себя ( , поэтому не нужно ставить побел перед открывающей скобкой, например: TAB(5), а не TAB (5).

.шп2

Операторы

.шп0

Цикл FOR... NEXT..., при неправильном задании начального и конечного значений переменной цикла (начальное значение больше конечного в случае положительного знаения STEP) игнорируется. Цикл будет обойден.

Нет необходимости в том, чтобы переменная цикла указывалась в операторе NEXT. Переменная будет найдена и вставлена автоматически.

NULL - это указание ничего не делать.

Непрерывная последовательность строк программы может быть уничтожена с помощью команды DEL. Например, DEL 30,90 уберет строки от 30 до 90 включительно. Используя DEL с номером строки (или номер строки и клавишу ВВОД), можно удалить одну строку.

Символ комментария // заставляет игнорировать все, что за ним следует. Это эквивалент REM в Бейсике.

Когда после условия IF необходимо выполнить несколько операторов, то необходимо использовать многострочную структуру. Структура закрывается END IF, между которыми должен быть пробел. Формат иммет следующий вид

IF... THEN
  Команда 1
  Команда 2
  и т.д.
END IF

При вводе в обеих формах IF можно опускать слово THEN. Оно будет вставлено автоматически.

ELSE, которое должно занимать свою собственную строку, указывает на начало альтернативных операторов, выполняемых если условие IF не удовлетворяется. ELSE нельзя использовать с однострочным оператором IF.

.шп2

Константы

.шп0

TRUE имеет величину -1, а FALSE имеет величину 0. При проверке условия любая величина, не равная 0, считается истинной. Необходимо отметить, однако, что действительные величины перед проверкой в условии усекаются.

PI возвращает величину 3.141592653.

.шп2

Переменные

.шп0

Символом присваивания является := и если : опускается, то оно буед автоматически вставлено и при просмотре показано, например 10 number = 2 становится 10 number := 2.

Любая переменная пользователя, появляющаяся справа от :=, должна быть предворительно задана.

Кроме ключевых слов в качестве переменной можно использовать любое другое слово или набор букв, цифр и подстрочных символов, но при условии, что оно начинается с буквы. Переменная может содержать ключевое слово как часть своего названия. Ниже приведены полноценные названия переменных:

k9 r2d2 me_and_u printer_on total cost

Целая переменная обозначается #, напр. integer#.

Когда строка присваивается в первый раз, для нее резервируется 40 позиций памяти, если оператор DIM не задает больший или меньший объем памяти.

OF является ключевым словом, которое используется, когда для строки резервируется определенный объем памяти, например:

DIM my¤ OF 60

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

Попытка присвоить строке больше символов, чем было зарезервировано, произведет сообщение об ошибке.

Внутри строки можно помещать кавычки, но чтобы указать их позицию, нужно использовать двойные кавычки.

MODE является системной переменной, которой можно присваивать величину от 0 до 7. Ее можно использовать как и другие переменные. Например, используемый в данный момент режим можно найти из PRINT MODE и режим можно изменить оператором MODE := 6.

EOD, которое является абревиатурой от Еnd Of Data (конец данных) устанавливается на TRUЕ после того, как прочитавются все данные, иначе EOD устанавливается на FALSE.

Системные переменные могут присваиваться толко прямо, а не, например, с помощью INPUT.

.шп2

Метки

.шп0

Метку можно ставить в программе в любом месте на отдельной строке. Она обозначается двоеточием, поставленным сразу же после любого имени, которое отвечает требованиям названия числовой переменной, например: here: или prices:. При обращении к метке дветочие не используется, например: RESTORE here.

.шп2

Массивы.

.шп0

Действительные, целые и строчные массивы могут иметь до восьми размеров. Размеры массива должны быть заданы до его использования, например:

DIM this¤(3,4,5)

Границы индекса задаются в операторе DIM и могут включать отрицательные величины, например:

DIM this¤(1:3,-4,4:5)

Если нижняя граница не задается, то она принимается равной 0.

Пример: DIM whole#(7) дает whole#(0) до whole#(7).

При задании размеров строчного массива для каждого элемента резервируется 40 позиций, если с помощью OF не было зарезервировано больше или меньше. Например: DIM a¤(3,4) OF 5 создаст строчный массив от a¤(0,,0) до a¤(3,4), для каждого элемента которого зарезервировано 5 позиций.

.шп2

Имена файлов

.шп0

При загрузке, сохранении, уничтожении или запуске имя файла в кавычки не заключается.

.шп2

Данные

.шп0

В операторах данных строки в кавычки не заключаются, исключением являются случаи, когда строка содержит пунктуацию или, когда она должна начать или закончить оператор данных с пробелами.

Указатель данных можно установить на первый элемент данных командой RESTORE.

RESTORE можно использовать с меткой для того, чтобы установить указатель данных на первом элементе данных, который следует за меткой, напр. RESTORE prices.

.шп2

Функции и операторы.

.шп0

IN - это бинарный оператор, который возвращает первую позицию, начиная с которой одна строка присутствует в другой.

ORD - это функция, которая возвращает код ASCII первого символа строки. Это эквивалент ASC( ) в Бейсике, например: PRINT ORD ("A") или PRINT ORD (a¤).

RND (n), где n целое число больше, чем 1, производит случайное целое число от 1 до n.

RND ( a,b), где a и b целые числа, производит случайное целое число от а до b включительно.

RND (1) возвращает случайную десятичную величину между 0 и 1.

VAL возвращает величину, которую произвел бы аргумент, если бы он был числовым выражением.

:+ является командой для приращения переменной слева от знака на такое же количество справа. Например: price_of_fish :+ change имеет такой же эффект, что и более длинный оператор price_of_fish = price_of_fish + change. Она особенно полезна, когда включаются длинные названия переменных.

:+ можно также использовать со строками, напр. если a¤ := "BRAIN", тогда a¤ :+ "STORM" делает a¤ "BRAINSTORM".

:- является инструкцией для отрицательног приращения переменной слева от знака на такое же количество справа. Например, total :- discount имеет такой же эффект, что и более длинный оператор total := total - discount.

:- нельзя использовать со строками.

Системные переменные могут быть переприсвоены с помощью :+ или :-.

Необходимо быть осторожным в отношении эффекта :+ и :-. Смотрите секцию по операторам присваивания в Части III.

.шп2

Синтаксис

.шп0

Операторы печати (,или ' или ;) необходимо ставить между всеми элементами в перечне PRINT.

Например: PRINT TAB(9);"here"

или: PRINT this¤,that#'other

Если в операторе INPUT используется подсказка, то между подсказкой и переменной необходимо ставить двоеточие. Если используется подсказка, то вопросительный знак не выдается.

.сс

.шп6

23 Вывод на принтеры и команда PRINT USING

.шп0

Результаты программы и ее листинг могут быть выведены на экран и, если требуется, на принтер.

Символы можно посылать на принтер двумя способами: последовательно, когда восемь битов, формирующие однобайтовое слово, посылаются один за другим по одному проводу, или параллельно, когда восемь битов посылаются одновременно по восьми проводам.

Модуль последовательного интерфейса, который не входит в стандартную конфигурацию Агата (RS232), обеспечивает последовательный вывод.

.шп14

23.1  SELECT OUTPUT (выбор вывода)

.шп0

Команда SELECT OUTPUT S вызывает выдачу листинга или материала для печати на экране и их передачу через последовательный интерфейс.

Команда SELECT OUTPUT P вызывает выдачу листинга или материала для печати на экране и их предачу через параллельный интерфейс.

Команда SELEKT OUTPUT D вызывает вывод только на экран.

За командой SELECT OUTPUT может следовать любой символ. Вывод определяет начальный символ. Любой другой символ, кроме S или Р направит вывод только на экран.

.шп14

23.2  Форматы печати.

.шп0

Имеется два способа контроля формата числового вывода. Наиболее многосторонний присваивает величину системной переменной ZONE, а самый простой задает требуемый формат как часть команды PRINT USING.

.шп14

23.3  ZONE

.шп0

ZONE обычно присваивается шеснадцатиричная величина, состоящая из трех частей. Например ZONE := &020309 устанавливает печать во втором формате (который имеет фиксированное количество десятичных позиций), 03 указывает на три десятичные позиции и 09 указывает на ширину зоны в девять символов. Знак & указывает на то, что число - шестнадцатиричное.

.шп14

23.4  ~

.шп0

Мы можем найти текущую величину ZONE с помощью указания напечатать эту величину. Сначала найдите символ ~ , это один из регистров клавиши 'Ч'. Этот знак ставится перед числовой переменной, чтобы обратить вывод из десятичного числа в строку, содержащую шестнацетиричное представление.

Введите

PRINT ~ZONE

.шп14

23.5  PRINT USING

.шп0

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

Шаблон, показанный ниже представляет собой формат, в котором будет напечатано число.

PRINT USING "###.##":number

Величина number будет округлена до двух десятичных позиций перед тем, как она будет напечатана с тремя десятичными позициями перед десятичной точкой и двумя после нее.

Строку можно печатать как часть команды PRINT USING.

Пример:

PRINT USING "#####.##":"Price iz ";price

что напечатает величину price с пятью позициями перед десятичной точкой и двумя после нее.

Строка должна содержать только одну десятичную точку, если мы хотим, чтобы формат был правильно определен. Символ # являяется стандартным символом для использования внутри строки, но подойдет и любой другой символ.

Пример:

PRINT USING "1234.123":length

имеет четыре позиции перед десятичной точки и три после нее. Длина строки и позиция десятичной точки являются единственными значительными особенностями.

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

.шп2

Допуск на знак минус.

.шп0

Если предполагается, что величина будет отрицательная, для знака - необходимо оставить позицию. Напимер -99.99 является наибольшим отрицательным числом, которое может быть правильно помещено с помощью PRINT USING "###.##". PRINT USING особенно помогает при печати правильно расставленных колонок цифр.

Пример:

PRINT USING "#####.###": .3'34.5'345.6' -345.6789

производит

    0.300
   34.500
  345.600
 -345.679

.сс

.шп6

24 WHILE (пока)

.шп0

WHILE используется как оператор-введения цикла.

.шп14

24.1 Возможно не цикл

.шп0

Вот циклы, которые мы уже встречали:

- FOR... NEXT..., который выполняется точное количество раз;

- REPEAT UNTIL...,который выполняется по крайней мере один раз, или неопределенное количество раз, что зависит от условия после UNTIL.

Цикл WHILE используется, когда мы хотим выполнять ряд операторов неопределенное количество раз, или по возможности, вообще не выполнять. Перед тем, как перейти к этим операторам, производится тест.

Формат цикла WHILE имеет следующий вид:

WHILE ... DO
  Command1
  Command2
END WHILE

Посе WHILE дается условие. Если это условие удовлетворяется (т.е. имеет истинный результат), то операторы внутри цикла выполняются. Цикл продолжается, пока условие не становится ложным.

При вводе можно опустить ключевое слово DO. Оно будет вставлено автоматически.

Операторы внутри цикла выделяются двумя позициями.

END WHILE должны быть разделены пробелом.

.шп14

24.2 Примеры

.шп0

   10 WHILE NOT EOD
   20   READ text¤
   30   PRINT text¤
   40 END WHILE
   50 PRINT "That'all folks."
   60 DATA What's up Doc?

  210 INPUT "Enter a number of pence ":amount
  220 INPUT "Enter scost of an apple in pence ":cost
  230 number := 0
  240 WHILE amount >= cost DO
  250   amount :- cost
  260   number :+ 1
  270 END WHILE
  280 PRINT "You have enough for";
  290 PRINT ;number;" apples"

  810 space_bar = -99
  820 PRINT "Print Space Bar to Continue"
  830 WHILE NOT INKEY (space_bar) DO
  840   NULL // pause until Space Bar Pressed
  850 END WHILE

  900 DIM a(1:1000)
  910 shift := -1
  920 FOR j := 1 TO 1000
  930   PRINT j,a(j)
  940   WHILE INKEY (shift) DO
  950     NULL // pause if shift pressed
  960   END WHILE
  970 NEXT j

.сс

.шп6

25 CASE

.шп0

CASE - это оператор для принятия решения. Лучше всего его использовать, когда необходимо рассмотреть целую серию вариантов, а использование команды IF будет выглядеть громоздким. В этом случае проверяются различные CASEы и производится соответствующее действие.

.шп14

25.1  OF

.шп0

За CASE должна следовать переменная или выражение, которые могутбыть оценены и, за которыми должно следовать ключевое слово OF. Величина затем сравнивается с рядом вариантов. Формат команды показан в примере. Если при вводе OF опускается, то оно вводится автоматически.

   10 mode := 6
   20 print''"I am thinking of an integer 1-99"
   30 print''"Triy to guess it"''
   40 ACTUAL := rnd( 99)
   50 repeat
   60   input "Your guess > ":GUESS
   70   print tab( 18);
   80   DIFFERENCE := abs(ACTUAL-GUESS)
   90   case DIFFERENCE of // OF need not typed
  100   when 0 // a single value
  110     print "Exactly"
  120   when 1,2 // a list of alternative values
  130     print "White Hot"
  140   when < 5 // condition
  150     print "Red Hot"
  160   when < 10
  170     print "Warm"
  180   when < 20
  190     print "Cool"
  200   when < 40
  210     print "Freezing"
  220   otherwise
  230     print "Get thermal underwear"
  240   end case
  250 until DIFFERENCE = 0

Рассматриваются диапазоны (CASEs OF) величины difference.

.шп14

25.2  Формат CASE

.шп0

Между END и CASE должен быть пробел.

Операторы внутри WHEN (когда) и OTHERWISE (иначе) выделяются двумя позициями.

За WHEN должны следовать:

- Ряд точных величин, разделенных запятыми.
  Пример: WHEN 0,1,2 или WHEN "A","B","C"
- Одиночное выражение. Пример: WHEN 2*x-3
- Условие. Пример: WHEN IN "YyNn"

или

- Комбинация точных величин и условий.
  Пример:
  WHEN 5, < -5

или

  WHEN >5, <-5, 99

.шп2

Только один случай удовлетворяется

.шп0

Случаи рассматриваются последовательно. Когда один случай удовлетворяется, следующие за ним операторы выполняются и программа перепрыгивает на конец структуры CASE. Всегда выполняется только один ряд операторов.

OTHERWISE (иначе) предназначен для действия, когда ни одно из условий не удовлетворяется. В структуре CASE не обязательно должно быть OTHERWISE, но если не требуется никакого действия, то это лучше сделать с помощью оператора NULL.

.сс

.шп6

26 Короткие формы

.шп0

Там где нужно выполнить только одно указание, используются однострочные формы циклов FOR... NEXT... и WHILE ... .

Короткие формы не выделяются

.шп14

26.1  Короткая форма FOR

.шп0

В однострочных операторах FOR действие устанавливается после величин TO или STEP и команды DO. Пример:

FOR j := 1 TO 100 DO array(j) := RND( 999)

Однострочный вариант цикла FOR может быть задан как прямая команда и можно не включать DO.

FOR j := 1 TO 100 array(j) := j

В программе DO тоже можно опускать, его позиция будет определена и он будет вставлен автоматически.

  100 FOR k := 20 TO 15 STEP -1 PRINT k

будет показано как

  100 FOR k := 20 TO 15 STEP -1 DO PRINT k

Единственным исключением является использование ? и !, когда может произойти некоторая путаница. Пример:

FOR i - 1 TO n DO ? NODE(I) = 0

DO в этом случае необходима, потому что n ? node(i) = 0 является выражением.

.шп14

26.2  Короткая форма WHILE

.шп0

В однострочном операторе WHILE действие задается после условия и ключевого слова DO.

  100 WHILE INKEY(-99) = 0 DO PRINT ".";

Однострочный вариант цикла WHILE может быть задан как прямая команда и включать DO нет необходимости, потому что она будет вставлена автоматически.

WHILE INKEY(-99) = 0 PRINT ".";

Если в команде есть ошибка, то положение DO будет показано в сообщении об ошибке.

При вводе оператора в программу DO тоже можно опустить, ее позиция будет определена и она будет вставлена автоматически.

  100 WHILE n <= 0 INPUT "Enter a rositive number":n будет показано как
  100 WHILE n <= 0 DO INRUT "Enter a rositive number":n

.шп14

26.3  Исключения

.шп0

Нельзя комбинировать короткие формы операторов FOR, IF или WHILE так, чтобы один являлся результатом другого. Например, следующая команда не разрешается.

IF reply = 5 THEN FOR j := 1 TO 10 DO a(j) :=j

.сс

.шп6

27 Многократные присваивания и размеры

.шп0

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

.шп14

27.1  Присваивания

.шп0

Присваивания можно отделять точкой с запятой, например:

  100 red := 1; uellow := 2; white := 3 // assign colours
  110 r¤ := "Red"; a¤ := "Amber"; g¤ := "Green"
  120 temp := this; this := that; that := temp // swap

На одной строке можно присваивать и переменные различных типов, например:

  130 a3 := 1; b¤ := "two"; c := 3; MODE := 4

многократное присваивание может также быть результатом команды короткой формы, например:

  140 FOR j := 1 TO 20 DO a(j) := j; b(j) := j*Ъj

.шп14

27.2 Размеры

.шп0

При размещении нескольких размеров на одной строке их необходимо отделять запятыми, DIM можно ставить только один раз, например: 100 DIM this¤ OF 5, that¤ OF 10, other¤ OF 200

  100 DIM array(5,4), name¤(10) OF 25, integer#(3,3)

.сс

.шп6

28 ELIF

.шп0

ELIF - это оператор, который производит такой же эффект, что и ELSE, сединенный с IF. Его можно использовать только внутри структуры IF, чтобы избежать последующие условия, имеющиеся внутри цикла IF.

.шп14

28.1  Формат для ELIF

.шп0

Формат для использования ELIF внутри цикла IF выглядит следующим образом

IF ........THEN
  .........
  .........
ELIF ......THEN
  .........
  .........
ELIF ......THEN
  .........
  .........
ELSE
  .........
END IF

Внутри структуры IF может быть более одного ELSE.

Общую часть при использовании ELSE, если требуется, можно избежать, хотя для ясности можно использовать оператор NULL, который указывает действие программы.

.шп2

Удовлетворение первого условия

.шп0

Выполняется только один из рядов операторов. Как только условие удовлетворяется, выполняются следующие за ним операторы. Программа затем переходит на строку, следующую за END IF.

.шп14

28.2  Демонстрационная программа

.шп0

   10 INPUT "Enter the number of a year > ":year
   20 //
   30 IF year MOD 4 <> 0 THEN
   40    // year doesn't divide by 4
   50    leap := FALSE
   60 ELIF year MOD 100 <> 0 THEN
   70    //year /4, not centuri
   80    leap := TRUE
   90 ELIF year MOD 400 <> 0 THEN
  100    //year/100 not by 400
  110    leap := FALSE
  120 ELSE
  130    leap := TRUE
  140 END IF
  150 //
  160 PRINT year;" is";
  170 IF NOT leap THEN PRINT " not";
  180 PRINT " a leap year"

Каждое условие ELIF достигается, только если не удовлетворяются все предшествующие условия.

.ст комал12

[an error occurred while processing this directive]