[an error occurred while processing this directive]
25.2 Формат CASE
Между 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
Только один случай удовлетворяется
Случаи рассматриваются последовательно. Когда один сучай удовлетворяется, следующие за ним операторы выполняются и программа перепрыгивает на конец структуры CASE. Всегда выполняется только один ряд операторов.
OTHERWISE (иначе) является общей ловушкой для действия, когда ни одно из условий не удовлетворяется. В структуре CASE не должно быть OTHERWISE, но если не требуется никакого действия, то это можно сделать ясным с помощью оператора NULL.
****************************************************************
82
26 Короткие формы
----------------------------------------------------
Там где нужно выполнить только одно указание, используются однострочные формы циклов FOR... NEXT... и WHILE ... .
Короткие формы не выделяются
26.1 Короткая форма FOR
В однострочных операторах FOR действие устанавливается после величин TO или STEP и команды DO. Пример:
FOR j := 1 TO 100 DO array(j) := RND( 999)
Однострочный вариант цикла FOR может быть задан как прямая команда и нормально не нужно включать DO.
FLR 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 является действительным выражением.
26.2 Короткая форма WHILE
В однострочном операторе WHILE действие устанавливается после условия и ключевого слова DO.
100 WHILE INKEY(-99) = 0 PRINT ".";
Однострочный вариант цикла WHILE может быть задан как прямая команда и включать DO нет необходимости, потому что она будет вставлена автоматически.
WHILE INKEY(-99) = PRINT ".";
****************************************************************
183
Если в команде есть ошибка, то положение DO будет показано в сообщении об ошибке.
При вводе програмного оператора DO тоже можно опустить, ее позиция будет определена и она будет вставлена автоматически.
100 WHILE n <= 0 INPUT "Enter a rositive number":n юудет показано как 100 WHILE n <= 0 DO INRUT "Enter a rositive number":n
26.3 Исключения
Нельзя комбинировать короткие формы операторов FOR, IF или WHILE так, чтобы один являлся результатом другого. Например, следующая команда не разрешается.
IF reply = 5 THEN FOR j := 1 TO 10 DO a(j) :=j
****************************************************************
84
27 Многократные присваивания и размеры
Так как поместить несколько инструкций на одной строке нельзя, имеется возможность помещать на строке программы более одного присваивания или размера.
27.1 Присваивания
Присваивания можно отделять точкой с запятой, например:
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
27.2 Размеры
При размещении нескольких размеров на одной строке их необходимо отделять запятыми, DIM можно ставить только один раз, например: 100 DIM thi¤ OF 5, thai¤ OF 10, other¤ OF 200
100 DIM array(5,4), name¤(10) OF 25, integer#(3,3)
****************************************************************
85
28 ELIF
-------------------------------------------
ELIF - это оператор, который производит такой же эффект, что и ELSE, сединенный с IF. Его можно использовать только внутри структуры IF, чтобы избежать последующие условия, имеющиеся внутри цикла IF.
28.1 Формат для ELIF
Формат для использования ELIF внутри цикла IF выглядит следующим образом
IF ........THEN ......... ......... ELIF ......THEN ......... ......... ELIF ......THEN ......... ......... ELSE ......... END IF
Внутри структуры IF может быть более одного ELSE.
Общую ловушку при использовании ELSE, если требуется, можно избежать, хотя для ясности можно использовать оператор NULL, который указывает действие программы.
Удовлетворение первого теста
Выполняется только один из рядов операторов. Как только тест удовлетворяется, выполняются следующие за ним операторы. Программа затем переходит на строку, следующую за END IF.
28.2 Демонстрационная программа
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
****************************************************************
186
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 достигается, только если не удовлетворяются все предшествующие условия.
.сс