[an error occurred while processing this directive]

В этом случае проверьте что вы ввели и попытайтесь еще раз, пока ввод не будет принят

Компьютер запомнил оператор и ждет следующих.

.шп14

 5.3  RUN

.шп0

Введите

run

.шп1

Чтобы компьютер выполнил команды, которые он запомнил, мы должны подать прямую команду RUN.

.шп0

Не имеет никакого значения напечатаны ли команды в верхнем регистре, или в нижнем.

Введите

2 print "I am"

.шп14

 5.4  LIST

.шп1

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

.шп0

Введите

list

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

Введите

run

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

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

.шп14

 5.5  RENUMBER (изменение нумерации)

.шп0

Введите

renumber

и

list

.шп1

Команда RENUMBER производит перенумерацию строк в следующей последовательности: 10, 20, 30, 40,...

.шп0

Теперь мы можем добавить дополнительные програмные строки между уже существующими.

Введите

15 print "therefore"

и

renumber

Если мы хотим, мы можем просмотреть только одну строку.

Введите

list 20

list и run (просмотрите и запустите) программу.

.шп14

 5.6  Очередность выполнения

.шп0

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

.шп1

Компьютер следует последовательности нумерации строк программы, если ему не даны другие указания (повторить некоторые строки или выполнить только выбранные).

.шп0

Введите

40 print "intelligent"

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

Если мы хотим просмотреть только некоторые строки, напр. с 20 до 40, то мы можем указать пределы строк.

Введите

list 20,40

.шп14

 5.7  Редактирование

Иногда нам нужно удалить одну из строк из программы.

.шп1

Чтобы удалить какую-либо строку из прогрммы, нужно напечатать строчный номер и нажать на клавишу ВВОД.

.шп0

Напечатайте

20

и нажмите ВВОД.

Затем просмотрите, была ли удалена строка 20.

Запустите программу, но не перенумеровывайте ее.

.шп1

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

.шп0

Введите

40 print "here"

и подайте команду list, чтобы просмотреть новую строку 40.

.шп2

Курсор копирования

.шп0

Если мы хотим сделать маленькое изменение в существующей строке, то мы можем использовать средство редактирования. Справа находятся четыре клавиши со стрелками , а в нижней правой части функциональной клавиатуры - клавиша с маркировкой '=' (КОПИЯ).

Нажмите один раз клавишу со стрелкой, направленной вверх.

В том месте где был курсор останется маркерный блок.

С помощью клавиши со стрелкой переведите курсор вверх (или вниз, если необходимо) пока он не займет место перед строкой 10, как показано ниже.

 _ 10 PRINT "I think"

А теперь, используя клавишу со стрелкой, направленной вправо (или влево, если необходимо), переместите курсор под цифру 1 числа 10.

   10 PRINT "I think"
   _

Нажмите один раз на клавишу КОПИЯ и посмотрите, что произошло.

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

С помощью клавиши КОПИЯ скопируйте строку до первых кавычек включительно, но не нажимайте клавишу ВВОД.

]10 PRINT "

Напечатайте с помощью клавиатуры

I know"

не забудьте закрывающие кавычки и нажмите ВВОД.

Вся строка

   10 PRINT "I know"

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

С помощью команд LIST и RUN проверьте программу.

Затем введите NEW и просмотрите программу.

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

.шп14

 5.8  Old (старый)

.шп0

Если вы передумали и хотите вернуть предыдущую программу, вам нужно ввести OLD.

Введите

old

и

list

.шп1

Прямая команда OLD может восстановить предыдущую программу, при условии, что новая программа все еще не была запущена и не было введено новых переменных. OLD можно также использовать после того, как была нажата клавиша УПР+СБР. Если программа не была запорчена, ее можно просмотреть и запустить.

.шп14

 5.9  Сокращения

.шп0

Введите

   20 p."that"

и

list

В строке 20 р. станет PRINT.

.шп1

Сокращение р. можно использовать вместо PRINT.

Сокращение для LIST - просто точка.

.шп0

Введите

.

и вы должны получить построчный показ программы. Это сокращение действительно увеличивает скорость. Почти все ключевые слова имеют краткие формы. Сокращения приведены в Части 3.

.шп14

 5.10 Уничтожение нескольких строк

.шп0

Если мы хотим удалить несколько строк программы, мы используем ключевое слово DEL.

Введите

del 10,30

и напечатайте команду LIST (или введите '.')

Строки от 10 до 30 включительно будут уничтожены

.шп1

Используя команду DEL, можно удалить из программы последовательный ряд строк. Например: DEL 80,120 уничтожит строки от 80 до 120 включительно. Можно уничтожить и одну строку, напр. DEL 80.

.шп0

Введите

new

.шп14

 5.11 AUTO

.шп0

Введите

auto

получим

]auto

   10 _

Компьютер показывает нам номер строки

Введите

h := 3

и мы видем, что появился новый номер строки.

]auto
   10 x := 3
   20 _

.шп1

AUTO - прямая команда для плучения последовательных номеров строк 10, 20, 30, ...

.шп0

Введите

y := 4

и ряд номеров продолжается. Как остановиться?

.шп2

РЕД

.шп0

Вверху справа на клавиатуре вы найдете клавишу РЕД. Нажмите ее.

.шп1

Чтобы выйти из режима автонумерации, нажмите на клавишу РЕД.

.шп0

Не забывайте оставлять пробел после ключевого слова AUTO

введите

auto 100,5

получаем

   100 _

Автоматическое присваивание номеров возобновляется с 100 и будет продолжаться с интервалом 5. Закончите строку вводом

print x*x + y*y

.шп14

 5.12 Комментарии

.шп0

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

.шп1

Все в строке программы после символа // игнорируется.

.шп0

Завершите строку 105 вводом

//sum of squares

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

Введите

   110 print x + y //sum of values

Нажмите на клавишу РЕД, чтобы выйти из автоматического присваивания номеров, просмотрите и запустите программу.

.шп14

 5.13 Модифицировани программы

.шп0

Введите

new

и

auto 100

что начнет присвоение номеров от 100 десятками.

Введите следующие строки программы:

   100 first := 99
   110 print first
   120 second := 88
   130 print second
   140 print "Total"
   150 print first + second
   160 end

Клавишей РЕД прекратите присваивание номеров.

.шп1

END (конец) - ключевое слово, которое обычно показывает физический конец программы. После использования этого слова не выполняются никакие прогрмные строки.

.шп0

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

Уберите строку 140 вводом

DEL 140

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

С помощью клавиш со стрелками и КОПИЯ измените строку 100.

Скопируйте

   100 first

а затем напечатайте

¤ := "ACORNSOFT"

и нажмите ВВОД

получаем

   100 first¤ := "ACORNSOFT"

Клавишей КОПИЯ измените:

строку 110 на

   110 PRINT first¤

строку 120 на

   120 second¤ := "COMAL"

строку 130 на

   130 PRINT second¤

строку 150 отредактировать немного труднее.

Скопируйте, чтобы получить

   150 PRINT first

затем напечатайте

¤

и нажмите на клавишу ВВОД, получаем

   150 PRINT first

затем скопируйте

+ second

получаем

   150 PRINT first¤ + second

затем напечатайте

¤

и нажмите клавишу ВВОД, получаем

   150 PRINT first¤ + second¤

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

и запустите ее.

Сейчас введите

renumber 200,20

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

Команда RENUMBER вызвала перенумерацию программы, начиная с 200 с интервалом 20

Введите

renumber 200

и просмотрите; номера строк возрастают на 10.

.шп14

 5.14 Просмотр переменных

.шп0

Переменные пользователя, т.е. переменные, введенные пользователем компьютера, всегда просматриваются в нижнем регистре.

.шп1

Переменные пользователя всегда предъявляются в строчных буквах.

.шп14

 5.15 Итоговые упражнения

.шп0

Запишите ваши ответы и сверьте их с ответами в главе 43.

1. Какая команда даст вам автоматическое присваивание номеров строк, начиная с 200 с интервалом 5?

2. Как выйти из автоматического присваивания номеров?

3. Какая команда изменяет номера строк программы с 100 с интервалом 10?

4. Какая команда предшествует набору новой программы?

5. Используйте програмные строки , которые присваивают a¤ := "SUPER", b¤ := "CALI", c¤ := "FRAGI", d¤ := "LISTIC" и попытайтесь составить программу, чтобы получить следующее:

SUPER    CALI    FRAGI    LISTIC
SUPER    CALI    FRAGILISTIC
SUPER    SALIFRAGILISTIC
SUPERCALIFRAGILISTIC
SUPER
CALI
FRAGI
LISTIC

7. Используя строку программы, присвойте величину 111 переменой x, а затем напечатайте значения x, ее квадрат и ее куб в зонах по всему экрану.

.шп14

 5.16 Вводы

.шп0

1. Программа представляет собой хранимый набор указаний, который выполняется после ввода прямой команды RUN.

2. Каждая строка программы состоит из целого числа и оператора или комментария.

3. AUTO - это прямая команда для показа номеров строк в последовательности 10, 20, 30, 40, ...; после показа номера компьютер ожидает сообщения и нажатия на клавишу ВВОД, прежде чем показать следующий номер. AUTO 200 начинает присваивание номеров, начиная с 200 с интервалом 10. AUTO 100,5 производит последовательность 100, 105, 110, 115 и т.д.

4. РЕД обеспечивает выход из AUTO.

5. LIST - это прямая команда для показа программы в последовательности номеров ее строк. Можно также показать и отдельную строку программы, напр. 80. Для этого вводят LIST 80. Непрерывную последовательность строк, напр. с 80 до 120, можно показать командой LIST 80,120.

6. При показе программы на Комале ключевые слова выводятся в верхнем регистре, переменные пользовтеля - в нижнем. Сокращение для LIST - точка.

7. P. - сокращение для PRINT.

8. // показывает, что все, что следует за этим символом, не является указанием для выполнения компьютером. После символа // можно помещать комментарии и заметки.

9. RENUMBER - это прямая командадля перенумерации строк программы, существующей в памяти, в последовательности 10, 20, 30, 40 и т.д. RENUMBER 200,5 начнет перенумерацию с 200 с интервалом 5.

10. Строку прогарммы можно убрать, напечатав ее номер и нажав клавишу ВВОД, или вводом DEL и номера строки.

11. Непрерывную последовательность строк программы, напр. от 50 до 100, можно убрать с помощью DEL 50,100.

12. Прямая команда NEW готовит ввод новой программы.

13. Предыдущую программу можно вернуть прямой командой OLD при условии, что новую прогрмму еще не запускали, а новые переменные еще не присваивали.

14. END используют для обозначения физического конца программы. После END не выполняется ни одна строка программы.

.сс

.шп6

 6 ПРОСТЫЕ ЦИКЛЫ

.шп0

В этой секции мы узнаем как повторять набор операторов с помощью ключевых слов FOR и NEXT.

.шп14

 6.1  Повторение операторов

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

Введите

new

и

auto

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

   10 print "Start here"
   20 for number := 1 to 5 do
   30 print "***************"
   40 print "At line 40"
   50 print "***************"
   60 next number
   70 print "All done"
   80 end

и нажмите клавишу РЕД, чтобы выйти из auto последовательности.

Запустите программу

а затем просмотрите ее.

.шп2

Выделение циклов.

.шп1

Когда программа выведена для просмотра, операторы между строками, содержащими FOR и NEXT выделяются двумя позициями. Это те операторы, которые повторяются.

.шп14

 6.2  Управление строкой

.шп0

Обратите внимание на то, что переменная number - в нижнем регистре, тогда как FOR и NEXT - в верхнем.

В строке 20 величина 1 присвоена переменной number, затем выполняются строки 30, 40, и 50.

Когда программа доходит до строки 60, NEXT number прибавляет 1 к переменной number и делает ее равной 2.

Так как 2 находится между 1 и 5 (как дано в строке 20), то строки 30, 40 и 50 выполняются снова.

Следующее указание NEXT number равно 3 и цикл повторяется; все это подолжается пока number не становится равным 5, что является пределом. Эта величина разрешается и указания печати выполняются в пятый раз.

Следующее указание NEXT number устанавливает number на 6, который находится уже за пределами от 1 до 6, поэтому цикл заканчивается и компьютер переходит к строке 70.

Подтвердите это вводом прямой команды

print number

.шп1

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

.шп2

Переменные цикла

.шп0

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

Мы можем использовать переменную цикла внутри цикла.

Введите

    40 print "This is loop ";number

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

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

.шп14

6.3 Полезные дополнения

.шп0

Введите

new

и

auto 100

и добавьте линии

   100 for number = 10 to 20
   110 print ;number
   120 next number

РЕД и просмотрите программу.

Посмотрите внимательно на строку 100.

.шп1

Если : или DO не были включены в указание FOR ..., они будут вставлены автоматически.

.шп0

Технически они нормальные части указания Комала FOR....

Запустите программу, а затем просмотрите ее.

Клавишами со стрелками и копировальным курсором скопируйте всю строку 100 за исключением DO, но прежде чем нажать клавишу ВВОД, сделайте пробел, напечатайте step 2 и нажмите клавишу ВВОД.

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

.шп14

 6.4  Step (шаг)

.шп0

Используя КОПИЯ и клавиши со стрелками, измените строку 100 на

   100 FOR number := 10 TO 14 STEP 0.5

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

Если в конце указания FOR ... нет слова STEP, то размер шага принимается равным 1. (Это известно как величина, принимаемая по умолчанию - величина, которую она принимает, если не дана какая-либо другая.)

.шп2

Отрицательный шаг

.шп1

Мы можем произвести уменьшающиеся серии чисел с помощью минуса или отрицатаельного шага.

.шп0

Измените строку 100 на

   100 FOR number := 10 TO 1 STEP -2

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

Величина не печатается. Серия идет от 2, которая печатается, до 0, который приводит к концу цикла.

.шп14

 6.5  Невыполнимые циклы

.шп1

Невыполнимый для FOR... NEXT ... цикл игнорируется.

.шп0

Измените строку 100 на

   100 FOR number := 10 TO 100 STEP -1

Затем введите

   90 print "Start"

и

   130 print "Finish"

Просмотрите программу и сравните ее со следующей:

   90 PRTNT "Start"
  100 FOR number := 10 TO 100 STEP -1
  110 PRINT ;number
  120 NEXT number
  130 PRINT finish

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

Ни одна часть цикла FOR... NEXT... не была выполнена. Будто строки от 90 до 130 не существуют. Если все же мы начали бы с 10 и продвигались бы с шагом -1 через 9,8,7,6,..., то мы никогда не достигли бы 100.

.шп1

В Комале комьютер обходит любой цикл FOR... NEXT... , который не может быть выполнен надлежащим образом и будет проджать выполнять программу.

.шп14

 6.6  Сначала объявляйте переменные

.шп0

Введите new, а затем новую программу

    10 total := 0
    20 for number := 1 to 5
    30 print number
    40 total := total + number
    50 next number
    60 print "The total  iz ";total
    70 end

и запустите ее.

В строке 40 нам необходимо знать величину total прежде чем мы сможем прибавлять к величине number, а затем опять присваивать к величине total. Вот почему нам будет нужна строка 10: она присваивает величину к total прежде чем мы начинаем цикл.

.шп1

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

.шп14

 6.7  Обозначение :+

.шп0

Строка 40 немного избыточна! Она говорит: возьмите total и прибавьте к number и присвойте новую величину обратно к total. Фактически мы хотим прибавить number k total. Об этом можно сказать более коротким путем. Будьте внимательны и при вводе не оставляйте пробела между : и +.

   40 total :+ number

Мы можем прочитать это как total, увеличенный на number.

Запустите программу, чтобы увидеть, что результат тот же.

.шп1

:+ является сокращенной формой присваивания, которое прибавляет какое-либо количество к прежней величине переменной слева от :+.

.шп2

Строчное использование обозначения :+

.шп1

Обозначение :+ может быть использовано и со строками.

.шп0

Введите new, а затем следующую программу:

   10 basic¤ := "That"
   20 print basic¤
   30 extra¤ := " and this" // note space
   40 for go = 1 to 3
   50 basic¤ :+ extra¤
   60 print basic¤
   70 next go
   80 end

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

Строка 50 имеет такой же эффект, что и basic¤ := basic¤ + extra¤, но значительно короче.

.шп14

 6.8  Обозначение :-

.шп0

Такую команду как

money := money - cost

тоже можно сделать короче

money :- cost

.шп1

:- является сокращенным присваиванием, которое снимает определенное количество с прежней величины переменой слева от :- .

.шп14

 6.9  Удваивание

Введите new, auto и следующее:

   10 dim star¤ of 130 // srace needed
   20 star¤ := "*"
   30 print star¤'
   40 for go := 1 to 7
   50 star¤ :+ star¤
   60 print star¤'
   70 next go
   80 end

Нажмите клавишу РЕД, просмотрите, но не запускайте программу.

В строках 30 и 60 знак ' будет иметь эффект перехода на дополнительную строку перед выполнением следующего указания print.

Внимательно просмотрите программу и попытайтесь установить, что она будет делать, а затем запустите ее.

Так как строка 50 прибавляет star¤ k star¤, ее длина каждый раз удваивается.

Каждое новое присваивание star¤ изменяет длину star¤. Сейчас вам понятно, зачем нам нужно было, чтобы строка 10 назначила столько позиций для star¤.

А сейчас сделайте итоговые упражнения.

 6.10  Итоговые упражнения

Запишите ваши ответы и сверьте их с ответами в главе 43.

Какая программа даст следующие наборы цифр?

  1.  21   2.  10  3.  1
      22       20      3
      23       30      5
      24       40      7
      25       50      9
      26       60     11
      27       70     13
      28       80     15
      29       90     17
      30      100     19
 
  4.   2   5.  99  6.  2
       4       88      2.5
       6       77      3
       8       66      3.5
      10       55      4
      12       44      4.5
      14       33      5
      16       22      5.5
      18       11      6
      20        0      

Какая программа произведет следующее:

7. *
   *!
   *!!
   *!!!
   *!!!!
   *!!!!!
   *!!!!!!
   *!!!!!!!

8. ABAD
   ABADABAD
   ABADABADABADABAD
   ABADABADABADABADABADABADABADABAD

.шп14

6.11 Выводы.

.шп0

1. Цикл FOR... NEXT... позволяет повторить набор операторов точное количество раз.

2. Когда программа выведена для просмотра, опреаторы в цикле FOR... NEXT... имеют отступ в две позиции.

3. STEP (шаг) полезен, если приращение в цикле FOR... NEXT... не 1.

4. Невыполняемый цикл FOR... NEXT... игнорируется и программа его обходит.

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

6. :+ является сокращением прибавления к существующей переменной.

Пример: а¤ := b¤ - краткая запись a¤ := a¤ + b¤

x :+ y сокращенная форма записи для x := x + y.

7. :- является сокращением для вычитания из существующей числовой переменной.

Пример: x:- y сокращение для x := x - y

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

8. После прогона программы переменные сохраняются и их можно напечатать.

.сс

.шп6

 7 Еще о PRINT

.шп0

В этой секции мы научимся печатать в разных местах экрана.

.шп14

 7.1  Очистка экрана

.шп0

Приятно выводить наши результаты на чистый экран.

Введите прямую команду CLS.

.шп1

CLS - это команда очистить экран (от CLear Scren).

.шп0

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

Введите new и следующую короткую программу:

   10 cls
   20 for go := 1 to 16
   30 print "*"
   40 next go

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

До сих пор мы пользовались только простой версией указания PRINT. Есть несколько интересных способов упраавления печатью на экране.

.шп14

 7.2  Табуляция

.шп0

Клавишей КОПИЯ измените строку 30 на

   30 PRINT tab(15);"*"

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

Выведите программу для просмотра и обратите внимание, что между ТАВ( и 15 появился пробел. Этот пробел всегда появляется при просмотре.

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

Измените строку 30 на

   30 PRINT TAB( 30);"*"

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

На нашем зкране в данный момент имеется место для 64 символов в каждом ряду. Позиции нумеруются от 0 до 63.

PRINT TAB( 15); говорит компьютеру перейти в позицию 15 и начать там печатать. Так как ряд начинается с номера 0, это означает, что необходимо пройти 15 позиций (пронумерованных от 0 до 14) перед тем, как начать печатать. Таким же образом TAB( 30); означает, что нужно пройти 30 позиций (от 0 до 29) и начать печать в позиции 30.

.шп1

PRINT TAB( a); - это указание начать печать в позиции "а" данного ряда. Если позиция для печати уже больше чем "а", то печать произойдет в следующей имеющейся позиции.

.шп2

Переменные при табуляции

.шп1

Используя переменные циклов внутри команды TAB ( ), мы можем получить различные узоры.

Измените строку 30 на

   30 PRINT TAB( go);"*"

Запустите и просмотрите программу. Внимательно просмотрите прогрмму и подумайте, почему звездочки появились по диагональной линии.

Измените строку 20

   20 FOR go := 16 TO 1 STEP -1

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

.шп14

 7.3  Структурные ошибки

.шп0

Уничтожьте строку 40, напечатав 40 и нажав ВВОД, затем попытайтесь запустить программу.

Когда мы пишем программу, нам очень помогают сообщения об ошибках, такие как: Unclosed at END (не зкрыто в конце). Перед запуском программы комьютер проверил нет ли в ней явных ошибок. Одна из таких проверок или тестов смотрит есть ли для указания FOR... соответствующее NEXT....Компьютер просмотрел до конца программы и не нашел NEXT go. Следовательно - ошибка.

.ст комал5

[an error occurred while processing this directive]