КаталогИндекс раздела
НазадОглавлениеВперед


Работа с переменными и арифметическими выражениями

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

Переменная Часть данных, которой присвоено уникальное имя
Значение Содержание переменной
Операторы     Символы, используемые для арифметических функций
Сложение + оператор
Вычитание - оператор
Умножение * оператор
Деление /, //, % операторы

Переменные

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

При выборе имени переменной имейте в виду, что первым символом может быть один из следующих:

 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.

Вычитание - Оператором вычитания - это знак минус (-). Инструкция вычитания двух чисел выглядит следующим образом:

  SAY 8 - 3

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

Умножение - Оператор умножения - это звездочка (*). Инструкция умножения двух чисел выглядит следующим образом:

  SAY 2 * 2

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

Деление - Для операции деления можно использовать несколько операторов в зависимости от того, каким Вы хотите видеть результат: в виде полного числа, либо в виде какой-то его части. Например, для обычной операции деления используется символ наклонной черты (/). Инструкция деления двух чисел выглядит следующим образом:

  SAY 7 / 2

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

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

Для просмотра примеров, демонстрирующих выполнение описанных выше арифметических действий, выберите => Примеры.

Вычисляемые выражения - Обычно выражения вычисляются слева направо. Выражение, приведенное ниже, иллюстрирует это правило. До сих пор Вы имели дело с выражениями, содержащими один оператор и два элемента, например, 4 + 2. Предположим, что имеется следующее выражение:

  9 - 5 + 4 =

Сначала вычисляется выражение 9 - 5. К значению выражения 4 добавляется 4 и в конечном итоге получится 8.

Однако некоторые операции имеют приоритет перед другими. В общем случае к выражениям применимы правила алгебры. Например, в выражении, приведенном ниже, операция деления выполняется раньше операции сложения:

  10 + 8 / 2 =

Результатом этого выражения будет число 14.

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

  (10 + 8) / 2 =

Результатом данного выражения будет число 9.


Написание арифметических процедур REXX

Ниже дано упражнение, позволяющее повторить некоторые правила, используемые в предыдущих примерах. Вам нужно написать процедуру, выполняющую операцию сложения двух чисел. Имя процедуры - ADD.CMD.

В своей процедуре Вам придется выполнить следующие действия:

  1. Идентифицировать и описать процедуру REXX.
  2. Предложить пользователю ввести числа.
  3. Прочитать введенные числа и поместить их в память системы.
  4. Сложить два числа и вывести результат на экран.
  5. Завершить выполнение процедуры.

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

  1. Первым делом, что идентифицирует процедуру REXX? Если Вы считаете, что это комментарий, то Вы правы.
  2. Далее, нужно предложить пользователю ввести число. С помощью инструкции SAY можно вывести это предложение на экран.
  3. Когда число введено, его нужно поместить в память компьютера. Инструкция PULL получает ответ и помещает его в память.
  4. Инструкция, которая запрашивает ввод второго числа, может выглядеть подобно первой; второе число также должно быть помещено в память.
  5. Следующая инструкция похожа на инструкцию в процедуре MATH. В одном операторе языка REXX можно приказать интерпретатору сложить два значения в памяти и вывести результат на экран. Для этого используйте одну инструкцию, которая содержит строку и операцию сложения.
  6. В заключение, для завершения выполнения процедуры используйте инструкцию EXIT.
  7. Если Вы хотите проверить работу этой процедуры, то наберите и сохраните текст, приведенный ниже.
       /* Эта процедура складывает два числа */
       SAY "Введите первое число."
       PULL num1
       SAY "Введите второе число."
       PULL num2
       SAY "Сумма двух чисел равна" num1 + num2
       EXIT

Чтобы выполнить процедуру ADD.CMD, введите ADD в командном режиме OS/2, а затем введите два любых числа. Ниже приведен протокол работы этой процедуры, если Вы ввели числа 3 и 12.

  [C:\]ADD
  Введите первое число.
  3
  Введите второе число.
  12
  Сумма двух чисел равна 15
  [C:\]


КаталогИндекс раздела
НазадОглавлениеВперед