[an error occurred while processing this directive]

.шп14

 3.5  Совмещение сообщений и чисел

.шп0

Мы можем печатать смесь сообщений и чисел, однако делать это надо в соответствии с оперделенными правилами. Не пропускайте кавычки и ';'.

Введите

print "The value is ";c

Благодаря символу ';', значение 'c' печатается сразу после сообщения.

.шп14

 3.6  Еще о переменных

.шп0

Мы можем использовать любую букву в алфавите, как имя переменной. Фактически мы можем использовать целые слова, такие как 'price' и 'total', позволяя выполнять вычисления типа:

price := total + vat

.шп2

Ошибки

.шп0

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

print := 7

Компьютер пытается выполнить указание print. Но не может совладать со знаком ":", потому что этот знак не является числом, переменной или чем-либо еще позволенным.

Syntax error
print :=7
      ^

.шп1

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

.шп0

Попытайтесь опустить закрывающие кавычки сообщения.

Введите

print "Testing

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

Введите

print (3 + 4 * (5 - 2)

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

.шп2

Приемлемые переменные

.шп1

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

.шп0

Любое из следующих слов и сочетаний символов может быть полноценной переменной: superman, k9, rocky1, rocky2, rocky3, r2d2, с3ро. Сочетания, начинающиеся с цифр, не могут быть использованы как переменные: 3d, 2001, 9lives.

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

.шп1

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

.шп0

Например

printer :=2

sprint :=99

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

Например, price, cost, amount, (цена, стоимость, количество)

.шп1

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

.шп0

Введите

number := 42

а затем введите неправильную команду без пробела после слова print.

printnumber

Сообщение об ошибке будет выглядеть следующим образом:

Not found (не найдено)
EXEC printnumber
     ^

]

EXEC - это команда, которую мы еще не встречали. Эта команда предусмотрена для выполнения процедур. (Процедуры описываются в последующих секциях.)

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

Введите print и number с пробелом между ними

print number

и все должно быть хорошо.

.шп2

Более длинные переменные

.шп0

Есть еще один символ, который мы можем использовать как часть имен переменной. Это символ подчеркивания "_", который находится рядом со стрелкой, направленной вверх. Этот символ длиннее знака минус "-".

.шп1

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

number_on_dice := 6 или moves_made := 23

.шп0

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

Попытайтесь ввести

number on dice := 6

затем введите

number_on_dice :=6

.шп14

 3.7  Маленькие и большие

.шп0

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

.шп1

При вводе чисел запятые не используются. Например: не ставьте запятых в таких числах, как 1000 или 1000000.

.шп0

Введите

print 1000 * 1000

затем

million := 1000000

и

print million * million

Результат - удивительный, так же как и способ компьютера показывать очень большие числа. 1Е12 означает:

1 на 10^12 или 1 на 1000000000000

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

.шп1

5.39Е15 означает 5.39 на 10^15 или 5390000000000000.

.шп0

Ну, а маленькие числа?

Введите

print 1 / million

Результат дается в том же формате.

1Е-6 означает 1 разделить на 10^6 или 0.000001

.шп1

5.34Е-8 означает 5.34 разделить на 10^8 или 0.0000000534.

.шп14

 3.8  Точность

.шп0

Числа печатаются в Комале с точность до девятого знака. Числа можно хранить в памяти так же, как мы только что видели: как две части - число от 1 до 10 со степенью 10.

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

.шп14

 3.9  Целые числа и действительные

.шп0

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

Чтобы обозначить целое число, необходимо использовать определенный символ. В Комале мы используем символ # , который находится на клавише 3. Символ # обычно читается как "решетка" и ставится после названия переменной без пробела.

.шп1

Переменная целого числа маркируется знаком # в конце имени.

.шп0

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

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

Введите

five# := 5

Введите

print five#

затем

print five# / 2

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

Введите

five# := 5.899

и

print five#

Часть после десятичной точки убирается и five# берет только целую часть числа. Этот процесс называется "усечение, отбрасывание".

Введите

ten# := 10

затем

print ten# / 3

что дает число 9.

Введите

number# := ten# / 3

и

print number#

.шп1

Если нецелое число присваивается целой переменной, то берется только целая часть.

Целые переменные занимают меньше памяти, чем действительные.

.шп2

Резидентные целые переменные

.шп0

Введите

print a#

Для нас выводится число, хотя мы и не присвоили ему имя а#. Целые переменные от а# до z# всегда находятся в компьютере, резидентны. При желании мы можем присвоить им величины.

.шп14

 3.10 Функции

.шп0

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

.шп14

 3.11 INT

.шп0

INT - это пример функции.

Введите

number = 5.678

и

print int(number)

number - это аргумент и число 5 возвращено

Введите

print int(-number)

затем

print int(number*10)

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

.шп1

INT (number - число) - это функция, которое возвращает целое внизу или число, равное величине аргумента.

.шп14

 3.12 Системные функции и FREE (свободно)

.шп0

Системная функция не нуждается в аргументе. Она возвращает величину, которая зависит от состояния памяти компьютера. Например, По мере того, как мы вводим все новые переменные, мы занимаем все больше памяти компьютера. Мы можем узнать сколько осталось памяти при помощи ввода специальной команды.

print free

free (свободно) - это системная функция, но мы не можем присваивать ей величины. Мы не можем дать нашему компьютеру немного памяти, используя FREE. Если мы присваиваем новую переменную, мы должны видеть, что FREE дает нам другую величину.

Введите

d := 123456789

и

print free

.шп1

FREE - это системная функция, которая возвращает остающийся объем имеющейся памяти.

.шп14

 3.13 PI (пи)

.шп0

PI- это константа, которая используется в математических вычислениях, например при вычислении площади круга, или объема шара. Она обычно обозначается греческим символом '. Чтобы узнать какое значение дано PI, ведите

print pi

PI имеет постоянную величину и ей всегда можно пользоваться, если есть необходимость. Это не переменная, и ей невозможно присвоить новое значение. Компьтер имеет эту величину точностью до десятой цифры. Обычно он печатает величину с точностью до девятой цифры.

Введите

radius := 7

circumference := 2 * pi * radius

print "Circumference of circul is ";circumference

и

area := pi * radius * radius

print "Area of circul is ";area

затем

volume := 4/3 *pi * radius ^ 3

print "Volume of spere is ";volume

.шп1

PI - это постоянная, равная 3.141592653.

.шп14

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

.шп0

Сейчас попытайтесь ответить на следующие вопросы, которые помогут вам увидеть усвоили ли вы материал этой главы. Запишите ваши ответы и сверьте их с данными в главе 43.

1. Которые из следующих сочетаний не могут быть именами переменных?

u, u2, 2u, account_number, tax raid, print, free, pint

2. Которое число из следующих представляет 9000000000?

1Е9, 1Е10, 9Е9, 9Е10?

3. Которое число из следующих представляет 0.00876?

8.76Е-2, 8.76Е-3, 8.76Е-4, 8.76Е-5

4. Если мы имеем out := 3, то какое из следующих выражений даст на экране 3?

printout, print out, PRINTout, PRINT OUT, printOUT

5. Если lower := 3, то какова величина LOWER?

6. Если number# := 9, то какова величина number#/2?

7. Какова величина int(7/2)?

8. Какова величина int(pi)?

.шп14

 3.15 Выводы.

.шп0

 1. Не имеет значения печатаете ли вы название переменной буквами верхнего или нижнего ряда. Между six :=6 и SIX :=6 нет никакого различия.

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

 3. Символ подчеркивания _ может использываться в имени переменной, напр. price_of_fish (но не на первой позиции).

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

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

 6. Присваиваемая переменная должн быть слева от :=

 7. Нельзя использовать запятые при вводе чисел.

 8. 7.5Е9 означает 7 умноженное на 10^9, т.е. 750000000

7.5Е-9 означает 7.5 деленное на 10^9, т.е. 0.0000000075

 9. Целые переменные обозначаются знаком #.

10. FREE - системная функция, кооторая показывает величину объема имеющейся свободной памяти компьютера.

11. INT (х) возвращает целое, которое меньше или равно х.

12. Целые переменные от а# до z# всегда находятся в компьютере, даже если они и не были присвоены.

13. PI - системная функция, которая возвращает величину 3.141592653.

.сс

.шп6

4 Строки и CLEAR

.шп0

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

.шп14

 4.1  Строки символов

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

Чтобы указать, что символы принадлежат строке, используют знак ¤, который помещают в конце имени переменной (также как и # после целой переменной).

Знак ¤ - символ верхнего регистра клавиши 4. Примеры:

letter¤, reply2¤, day_of_week¤.

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

any_old¤ := "ABCDEFG"

Кавычки необходимы для обозначения начала и конца строки.

Введите

print any_old¤

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

Введите

any_old¤ := "xyz123*"

и

print any_old¤

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

Она может содержать ключевое слово как часть имени. Например, printout¤ - приемлема, а print¤ - нет.

.шп1

Строчная переменная обозначается символом ¤ в конце названия переменной. Цепочке можно присвоить набор символов с помощью кавычек.

.шп2

Верхний и нижний регистр

.шп0

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

.шп14

 4.2  Какова длина строки?

.шп0

На этот вопрос легко ответить, если использовать новое ключевое слово, которое является абревиатурой слова LENGTH (длина).

Введите

this¤ := "pqrst"

и

print len(this¤)

Мы должны получить величину 5. Нетрудно догадаться, что LEN( ) обозначает длину ( сокращенное LENGTH (длина)).

.шп1

LEN(а¤) - функция, которая возвращает количество символов в а¤.

.шп0

Что случится, если внутри цепочки мы оставим пробелы?

Введите

try¤ = "1 2 3 4 5 "

и

print len(try¤)

.шп1

Пробел в цепочке считается символом, как любая буква или цифра.

.шп2

Нулевая строка

.шп0

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

Введите

blank¤ = ""

и

print len(blank¤)

Компьютер может обращаться со строками, внутри которых нет символов. Такие строки называются нулевыми строками.

.шп1

Нулевая строка не имеет символов внутри

.шп14

 4.3  IN

Немного практики в печатании.

.шп0

Введите

alpha¤ = "abcdfghijklmnopqrstuvwxyz"

Удостоверьтесь, что после print имеется пробел, кавычки поставлены и оставлен пробел после in:

введите

print "c" in alfa¤

и

print "z" in alfa¤

Введите

test¤ = "m"

и

print test¤ in "lmn"

.шп1

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

.шп0

Введите

print "+" in alfa¤

Если часть, которая находится в кавычах, не в строке, то величина 0 возвращется.

Введите

print "cdef" in alfa¤

и

print "cdefgh" in alfa¤

.шп14

 4.4  Двоичные операторы

.шп0

IN является примером двоичного оператора.

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

Арифметические символы +, -, *, / и ^ являются примерами двоичных операторов, напр. 5 * 2 возвращает 10.

.шп14

 4.5  Установка размера строки (DIMensionig)

.шп0

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

.шп2

Длинные строки

.шп0

Если мы хотим использовать больше символов (разрешается использовать до 253 позиций), тогда нам необходимо иметь способ резервирования большего пространства. Этот процесс называется установкой разммера.

.шп1

DIM является ключевым словом для резервировния необходимого пространства для строки. (от DIMENSION - размер)

.шп0

Введите

dim long¤ of 200

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

А сейчас присвойте long¤, используя

long¤ := "..........................................................."

Покажите, что long¤ имеет длину больше 40, введите

print len(long¤)

.шп2

Короткие строки

.шп0

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

Введите

dim short¤ of 5

и

short¤ := "exact"

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

Введите

short¤ := "bigger"

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

.шп1

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

.шп0

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

Введите

dim short¤ of 10

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

.шп14

 4.6  Очистка памяти (от CLEAR - чистить)

.шп0

Мы можем дать компьютеру команду забыть строки, которые мы присвоили (а также все числовые переменные, кроме резидентных целых переменных от а# до z#), используя ключевое слово CLEAR.

Введите

clear

и теперь мы должны увидеть, что компьютер уже не узнает short¤.

Введите

print short¤

и получаем сообщение Not found - не найдено.

Введите

print a#

и величина печатается, потому что резидентные целые переменные от а# до z# не очищаются.

Введите

dim short¤ of 10

После использования CLEAR можно заново устанавливать размеры строки (до 253).

.шп14

 4.7  Форматы печати

.шп0

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

a¤ = "TOM"

b¤ = "DICK"

и

c¤ = "HARRY"

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

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

.шп2

Использование запятой

.шп0

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

Введите

print a¤, b¤, c¤

После того, как мы напечатали a¤, запятая становится элементом синтаксиса, который говорит компьютеру перейти в следующую зону ипродолжать печать там. Затем в крайнем левом возможном положении зоны печатается b¤. Следующая запятая показывает, что и следующий пункт, c¤, должен появиться в следующей зоне.

.шп1

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

.шп0

Используя точку с запятой,

введите

print a¤;b¤;c¤

Точка с запятой действует на цепочки также, как и на числа.

Объект, который следует за ней, печатается в крайне левой возможной позиции. В данном случае DICK следует за TOM без промежутка. Аналогично HARRY следует за DICK.

.шп1

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

.шп0

Мы можем совместить использование запятых и точек с запятой.

Введите

print a¤,b¤;c¤

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

.шп1

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

.шп2

Использование апострофа

.шп0

Найдите символ апострофа ' , это верхний регистр на клавише 7.

Введите

print a¤'b¤'c¤

.шп1

В команде print апостроф ' вызывает переход позиции для печати на начало следующей строки.

.шп0

Введите

print a¤,b¤'c¤;

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

Посмотрите, где мигают подсказка и курсор. Точка с запятой после с¤ дает указание выполнить следующую печать в следующей имеющейся позиции для печати (т.е. рядом с с¤). И следующее, что там будет напечатано - это подсказка и курсор. Если подсказка и курсор нужны вам на следующей линии, нажмите на клавишу ВВОД.

.шп2

Пробелы

.шп0

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

Введите

print a¤;" ";b¤;" ";c¤

.шп14

4.8 Сложение строк

.шп0

Строки можно объединять с помощью знака сложения.

Введите

print a¤ + a¤ + a¤

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

.шп1

Знак + можно использовать для сложения строк.

.шп14

4.9 Использование пробелов внутри строк

.шп0

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

Введите

d¤ = a¤ + " " + b¤ + " " + c¤

и

print d¤

получим очень интересный эффект.

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

Введите

a¤ := "TOM "
b¤ := "DICK "
c¤ := "HARRY "

Теперь введите

print a¤;b¤;c¤

и

print a¤ + b¤ + c¤

В вычислении всегда имеется много способов достижения одного и того же результата. И не обязательно считать какой-либо способ правильным или неправильным.

.шп14

4.10 Кавычки внутри строки

.шп0

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

Попытайтесь ввести

quote¤ := "this quote " doesn't work"

.шп1

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

.шп0

Введите

quote¤ := "this quote "" does work"

и

print quote¤

.шп14

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

.шп0

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

Предположите, что в следующих вопросах были сделаны такие присваивания: a¤ := "ACORN", b¤ := "Micro", c¤ := "computer"

Какие нужны команды, чтобы напечатать

1. ACORN     Micro     computer

2. ACORN Microcomputer

3. ACORN
   Micro
   computer

4  Micro Micro Micro

В следующих вопросах reply¤ := "y"

Какой будет результат следующих команд?

5. print reply¤ IN "YyNn"

6. print reply¤ IN "In"

7. print reply¤ in "RGYMCW"

8. print reply¤ in "YYYYYY"

9. print LEN(reply¤)

Какие размерные сообщения необходимо сделать, чтобы зарезервировать

10. 100 позиций для ton¤?

11. 40 позиций для test¤?

12. 10 позиций для ten¤?

.шп14

 4.12 Выводы

.шп0

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

2. Символ ¤ помещается в конце имени переменной, чтобы указывать, что это строка.

3. LEN(a¤) - функция, возвращающая длину a¤.

4. IN - двоичный оператор, который вычисляет позицию, на которойначинается строка, находящаяся в другой строке, напр. "АВ" IN "abcABC" = 4.

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

6. Чтобы зарезервировать пространство в 100 знаков для k¤, необходимо дать сообщение DIM k¤ OF 100.

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

8. Команда CLEAR является ключевым словом для очистки памяти от всех строк и числовых переменных, за исключением резидентных целых переменных от а# до z#.

9. Символы , ; ' используются соответственно для форматирования печати в начале следующей имеющейся зоны, в крайней левой возможной позиции и на следующей строке 10. Строки могут быть соединены друг с другом (конкатенированы) с помощью знака + .

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

.сс

.шп6

 5 ПРОГРАММЫ

.шп0

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

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

Серии команд хранятся как програмные сообщения.

.шп14

 5.1  Подготовка к программированию

.шп0

Перед тем, как начать создвать программу, надо подготовить компьюте.

Введите

new

.шп1

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

.шп14

 5.2  Строки программы

.шп0

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

.шп1

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

    1 print "I think"

Ничего не должно случиться, если только вы не сделали ошибку при печати.

.ст комал4

[an error occurred while processing this directive]