[an error occurred while processing this directive]

60

------------------------------------------------

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

------------------------------------------------

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

Введите

debug

и на экране появится такое же сообщение об ошибке. Чтобы исправить программу мы должны поместить обратно указание NEXT. Сейчас мы можем открыть еще одну свойство Комала.

Чтобы закончить указание NEXT, введите

 40 next

Вы заметили, что мы не написали переменную go в конце указания?

Просмотрите программу.

Переменная цикла go была вставлена в строку 40. Если компьютер может сказать, что структура программы неправильная, то он сам может установить какая переменная должна идти за NEXT и вставить ее.

----------------------------------------------

Нет необходимости помещать переменную цикла в конце указания. Компьтер сам определит эту переменную и автоматически ее вставит.

----------------------------------------------

Введите

debug

и сообщения об ошибке не будет.

----------------------------------------------

DEBUG сообщает о структурных ошибках в программе. Если нет ошибок, нет и сообщения.

----------------------------------------------

7.4 Табуляция вниз по экрану

Дайте прямую команду CLS

и введите

print tab(10,15);"Here"

****************************************************************

61

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

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

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

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

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

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

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

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

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

****************************************************************

176

?? куска нет ??

23.3 ZONE

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

23.4

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

Введите

PRINT ~ZONE

23.5 PRINT USING

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

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

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

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

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

Пример:

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

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

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

****************************************************************

177

Пример:

PRINT USING "1234.123":length

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

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

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

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

Пример:

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

производит

    0.300
   34.500
  345.600
 -345.679

****************************************************************

78

24 WHILE (пока)

---------------------------------------------

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

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

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

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

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

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

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

WHILE ... DO
  Command1
  Command2
END WHILE

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

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

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

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

24.2 Примеры

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

****************************************************************

179

  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

****************************************************************

80

25 CASE

----------------------------------------

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

25.1 OF

За 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.

****************************************************************

181

[an error occurred while processing this directive]