| Каталог | Индекс раздела |
| Назад | Оглавление | Вперед |
В этом разделе рассказывается о том, как использовать переменные и производить арифметические вычисления, а также как писать комментарии, поясняющие работу процедуры. Этот раздел содержит информацию по следующим темам:
| Переменная | Часть данных, которой присвоено уникальное имя |
| Значение | Содержание переменной |
| Операторы | Символы, используемые для арифметических функций |
| Сложение | + оператор |
| Вычитание | - оператор |
| Умножение | * оператор |
| Деление | /, //, % операторы |
Переменная представляет собой часть данных с изменяющимся значением. Каждой переменной внутри процедуры присваивается уникальное имя, по которому на нее ссылаются в дальнейшем.
При выборе имени переменной имейте в виду, что первым символом может быть один из следующих:
A B C...Z ! ? _
Первым символом имени может быть и строчная буква. Интерпретатор перекодирует ее в прописную.
Остальными символами могут быть все перечисленные символы, а также цифры от 0 до 9.
Значение переменной, в отличие от имени, может изменяться. Когда Вы именуете переменную (придаете ей некоторое значение), то тем самым выполняете присваивание. Например, любой оператор типа
symbol = выражениеявляется оператором присваивания. Таким образом, Вы приказываете интерпретатору вычислить значение выражения и поместить результат в поле переменной symbol. Это эквивалентно следующему: "Присвоить переменной symbol значение результата выражения" или каждый раз, когда переменная symbol появляется в тексте строки инструкции SAY без кавычек, выводить на ее месте значение выражения. Взаимосвязь между переменной и ее значением такая же, как и между почтовым ящиком и его содержимым. Номер почтового ящика всегда один и тот же, а его содержимое может поменяться в любое время. Ниже приведен пример еще одного оператора присваивания:
num1 = 10
Здесь num1 имеет то же смысловое значение, что и слово symbol в предыдущем примере, а значение 10 соответствует слову выражение.
Один из способов изменения значения переменной num1 - добавление некоторого числа или выражения к старому значению с помощью следующего оператора присваивания:
num1 = num1 + 3
Значение num1 теперь изменилось с 10 на 13.
Специальным соглашением в REXX является то, что в качестве первоначального значения переменной, которой не было присвоено значение, является ее имя, выводимое прописными буквами. Например, если Вы напишете в процедуре
list = 2 20 40 SAY listто на экран выведется следующая информация:
2 20 40
Таким образом, переменная list принимает значения, которые были ей присвоены. Однако, если Вы не присвоите переменной list никакого значения и просто напишете:
SAY listто на экран выведется:
LIST
Ниже приведен пример простой процедуры VARIABLE.CMD, которая присваивает значения переменным:
/* Присваивание значений переменным */ a = 'abc' SAY a b = 'def' SAY a b EXIT
Если Вы выполните процедуру VARIABLE, то протокол работы будет выглядеть следующим образом:
[C:\]VARIABLE abc abc def [C:\]
Процесс присваивания значений прост, однако убедитесь в том, что имя, выбранное для переменной, не будет использовано непредумышленно, как показано на примере процедуры MEETING.CMD:
/* Непреднамеренная интерпретация переменной */ the='no' SAY Here is the person I want to meet EXIT
Протокол выполнения процедуры:
[C:\]MEETING HERE IS no PERSON I WANT TO MEET [C:\]
Чтобы предотвратить непреднамеренное замещение слова переменной, заключите предложение в кавычки, как это сделано в процедуре MEETING.CMD, которая теперь уже правильно присваивает значение переменной:
/* Правильная интерпретация переменной the*/ the= 'no' SAY "Here is the person I want to meet" EXIT
Может возникнуть необходимость включить в процедуры REXX арифметические операции сложения, вычитания, умножения и деления. Например, Вам потребуется присвоить числовые значения двум переменным и затем сложить их.
Арифметические операции выполняются обычным образом. Вы можете использовать целые числа и десятичные дроби. Целое число - это любое натуральное число, положительное, отрицательное или ноль, которое не содержит десятичной части (например, 1, 25 или 50). Десятичная дробь содержит десятичную точку (например, 1.45 или 0.6).
Прежде чем продемонстрировать использование этих четырех операций в процедурах, мы приведем примеры написания арифметических выражений и символов, предназначенных для каждой операции. Это будут просто некоторые арифметические операции, используемые в REXX.
| Прим. | Приведенные примеры содержат пробелы между числами и операторами для того, чтобы выражение смотрелось нагляднее, однако эти пробелы необязательны. |
Операторы - Символы, используемые для арифметических операций (+, -, *, /), называются операторами. Они производят действия над соседними элементами. В следующем примере операторы производят действия над числами (элементами) 4 и 2:
SAY 4 + 2 /* выводит "6" */ SAY 4 * 2 /* выводит "8" */ SAY 4 / 2 /* выводит "2" */
Сложение - Оператор сложения - это знак плюс (+). Инструкция сложения двух чисел выглядит следующим образом:
SAY 4 + 2
Результат выполнения инструкции Вы увидите на экране, это будет число 6.
Вычитание - Оператором вычитания - это знак минус (-). Инструкция вычитания двух чисел выглядит
следующим образом:
Результатом выполнения инструкции будет число 5, которое выводится на экран.
Умножение - Оператор умножения - это звездочка (*). Инструкция умножения двух чисел выглядит
следующим образом:
Результатом выполнения инструкции будет число 4, которое выводится на экран.
Деление - Для операции деления можно использовать несколько операторов в зависимости от того, каким Вы
хотите видеть результат: в виде полного числа, либо в виде какой-то его части. Например, для обычной
операции деления используется символ наклонной черты (/). Инструкция деления двух чисел выглядит
следующим образом:
Результатом выполнения инструкции будет число 3.5, которое выводится на экран.
Для того, чтобы получить только остаток от деления, в качестве оператора деления используйте символ,
состоящий из двух наклонных черт (//). Чтобы получить только целую часть без остатка, используйте знак
процента (%).
Для просмотра примеров, демонстрирующих выполнение описанных выше арифметических действий, выберите => Примеры.
Вычисляемые выражения - Обычно выражения вычисляются слева направо. Выражение, приведенное ниже,
иллюстрирует это правило. До сих пор Вы имели дело с выражениями, содержащими один оператор и два
элемента, например, 4 + 2. Предположим, что имеется следующее выражение:
Сначала вычисляется выражение 9 - 5. К значению выражения 4 добавляется 4 и в конечном итоге получится 8.
Однако некоторые операции имеют приоритет перед другими. В общем случае к выражениям применимы
правила алгебры. Например, в выражении, приведенном ниже, операция деления выполняется раньше операции
сложения:
Результатом этого выражения будет число 14.
Если в выражении Вы используете скобки, то интерпретатор сначала вычислит значение выражения в скобках.
Например:
Результатом данного выражения будет число 9.
Ниже дано упражнение, позволяющее повторить некоторые правила, используемые в предыдущих примерах. Вам
нужно написать процедуру, выполняющую операцию сложения двух чисел. Имя процедуры - ADD.CMD.
В своей процедуре Вам придется выполнить следующие действия:
Существует множество способов, позволяющих выполнить поставленную задачу. Чтобы облегчить ее выполнение
в данной процедуре, предложим пользователю ввести каждое число отдельно, а затем сложим эти числа. Далее
приведены размышления, которые помогут Вам при написании процедуры ADD.CMD.
Чтобы выполнить процедуру ADD.CMD, введите ADD в командном режиме OS/2, а затем введите два любых
числа. Ниже приведен протокол работы этой процедуры, если Вы ввели числа 3 и 12.
SAY 8 - 3
SAY 2 * 2
SAY 7 / 2
9 - 5 + 4 =
10 + 8 / 2 =
(10 + 8) / 2 =
Написание арифметических процедур REXX
/* Эта процедура складывает два числа */
SAY "Введите первое число."
PULL num1
SAY "Введите второе число."
PULL num2
SAY "Сумма двух чисел равна" num1 + num2
EXIT
[C:\]ADD
Введите первое число.
3
Введите второе число.
12
Сумма двух чисел равна 15
[C:\]
| Каталог | Индекс раздела |
| Назад | Оглавление | Вперед |