ЯЗЫК ПРОГРАММИРОВАНИЯ МИКРОКАЛЬКУЛЯТОРОВ "ПРАЛ"
(описание стандарта 1984 года, модификация для компьютерного представления)
(С) Гаузер Э.Г., Баку, 1984-2008, erichware.com
1. ОБЩИЕ СВЕДЕНИЯ
ПРАЛ (ПРограммы АЛфавитные) предназначен для составления программ на простейших, инженерных и программируемых микрокалькуляторах в ручном режиме. Каждая ПРАЛ-программа пишется для определенной модели МК и может быть непосредственно реализована только на этой модели. ПРАЛ-программы отражают не алгоритм решения задачи, а конкретный способ ее решения на конкретной модели МК.
Символами языка являются буквы русского, латинского и греческого алфавитов; арабские цифры; символы, нанесенные на клавиши и клавишную панель того МК, для которого составлена данная программа; а также специальные символы: "[", "]", "{", "}", "<", ">", "=", "=", "#", "◙", "/", "\", "*", ",", ".".
2. СИНТАКСИЧЕСКИЕ ПРАВИЛА
В записи программ умножение обозначается звездочкой "*", в десятичных дробях для разделения целой и дробной части числа используется точка ".", скобки любого уровня обозначаются: "/" - открывающая и "\" - закрывающая.
Символ пробела "#" может находиться в любом месте программы и в любом количестве. Пробел обычно используется для улучшения читаемости программ и в других случаях. Клавиша очистки индикатора "С" в программе указывается символом "◙" (точка в кружке). В тексте программ необходимо указывать, где требуется, клавиши совмещения. Любая клавиша может быть указана символом, нанесенным на нее непосредственно, или над(под)клавишным символом.
Постоянные величины обозначаются соответствующими цифрами с использованием клавиш ввода десятичной точки, порядка и смены знака. Имя переменной должно начинаться с буквы, состоять может только из букв и цифр общей длиной не более 3 символов и не должно содержать буквы "i" и "j" (см. далее). Для обозначения переменных запрещается использовать в отдельности и в любых сочетаниях буквы, похожие на цифры ("з", "ч", "о" и т.д.) и буквы, имеющиеся на клавиатуре того МК, для которого пишется данная программа ("F", "K" и т.д.), но букву "С" использовать разрешается.
Положение переключателя режимов обозначается начальной буквой в кружке ("®"), а если возможно разночтение, то любой буквой с оговоркой в комментарии к программе. Обозначение режима может стоять в любом месте программы до своего использования.
В качестве индексных используются переменные i и j. Они могут иметь самостоятельное значение или служить индексом: Xi, Aj и т.д. В этих случаях (обычно при циклических вычислениях, работе с массивами) индексные переменные указывают номер: обозначение Aj при j=2 равносильно переменной А2, Xi при i=35 равносильно Х35 и т.д. Индексные переменные могут принимать только целые значения в диапазоне от 0 до 99.
3. ОФОРМЛЕНИЕ ПРОГРАММ
ПРАЛ-программы записываются в виде таблиц, расчерченных на клетки (на клетчатой бумаге), размер таблиц 30*Y, где "30" - постоянное число столбцов, а "Y" - число строк, зависящее от длины программы, но не превышающее 40 (длинные программы могут занимать несколько таблиц). В левом верхнем углу таблицы римскими цифрами обозначается ее номер для данной программы.
Для обозначения строк используются следующие символы в такой же последовательности: А, Б, В, Г, Д, Е, Ж, З, И, К, Л, М, Н, О, П, Р, С, Т, У, Ф, Х, Z, Ч, Ш, h, Ъ, Ы, Э, Ю, Я, α, ε, π, σ, χ, ω, 2, 5, 8, 9. Для обозначения столбцов - первые 30 (от А до Я). В каждой клетке таблицы должен стоять один символ, пустые клетки оставлять запрещается.
В случае, если обозначение клавиши или имя переменной содержит несколько символов, каждый символ должен стоять в отдельной клетке: "arc", "sin", "X35", RX1 и т.д. Клавиши типа 10x, ex и аналогичные им по написанию должны занимать одну клетку.
Переменные, которые трубуется выписать на бумагу, берутся в рамку A, X2i. При этом им присваивается значение, находящееся на индикаторе в данный момент. В случае индексированной переменной (например, Ai) это значение присваивается переменной A1, A2, A3 и т.д. в зависимости от текущего значения переменной i.
Перед программой следует выписать имена всех промежуточных переменных, которые будут в ходе вычислений выписаны на бумагу, в порядке их следования под знаком З (запись):
З: A, H6, Xi(K)
где К - число переменных Xi (работа с массивами).
Перед З необходимо указать, какие величины являются конечными, т.е. требуемым ответом. В список З они не включаются. При необходимости после таблицы программы можно поместить текстовый комментарий, а перед З и списком ответов - список исходных данных.
Запрещается переносить со строки на строку обозначения клавиш и имена переменных, но разрешается переносить операторы управления.
4. ОПЕРАТОРЫ УПРАВЛЕНИЯ
-
Оператор безусловного перехода
{abc}
где: a - номер таблицы, b - символ строки, c - символ столбца клетки, на которую требуется перейти, т.е. "abc" - адрес клетки (ячейки). Заключается в фигурные скобки.
-
Оператор присвоения знака
sign
После этого оператора ставится имя переменной, знак которой необходимо присвоить числу на индикаторе (клавишей "смена знака"). К моменту выполнения оператора значение этой переменной должно быть известно и записано на бумаге (signX = "+" при X>=0; signX = "-" при X<0).
-
Оператор обращения к подпрограмме
{abc#def}
где "abc" - адрес первой ячейки подпрограммы, "def" - адрес последней ячейки.
После выполнения подпрограммы происходит возврат к ячейке, следующей за оператором обращения, и вычисления продолжаются с нее. Глубина обращения к подпрограмме не больше 3. Подпрограммой может быть отдельно написанная совокупность символов или любой участок основной программы.
-
Оператор выбора
{[abc]}
Обозначает свободу дальнейших вычислений, т.е. либо переход на ячейку "abc", либо продолжение вычислений подряд (на усмотрение вычислителя).
-
Оператор условного перехода
вариант 1: [abc]
вариант 2: [~#abc]
Если к моменту выполнения оператора варианта 1 МК находится в рабочем режиме, то вычисления продолжаются с ячейки после оператора. Если же МК накходится в режиме "некорректная операция", то вычисления продолжаются с указанной в операторе ячейки "abc".
В варианте 2 символ "~" заменяется конкретным условием сравнения с нулем из возможных ">=", "<", "=", "<>". При этом с нулем сравнивается число на индикаторе. Если условие выполнилось, то вычисления продолжаются с ячейки после оператора, если же это условие не выполнилось, то вычисления продолжаются с ячейки "abc", указанной в операторе.
-
Циклические вычисления
Осуществляются либо с помощью оператора условного перехода, либо с помощью оператора цикла.
Оператор цикла имеет вид:
вариант 1: [i=n-k-m#abc]
вариант 2: [i=p,q,s#abc]
где все переменные целые и находятся в диапазоне от 0 до 99. Допускается совмещение в одном операторе обоих вариантов: [i=n-k-m,p,q,s#abc], i - переменная цикла, может быть самостоятельной переменной или служить индексом переменной.
Вариант 1 предусматривает перебор значений i от n до m с шагом k. Вариант 2 предусматривает использование переменной i только определенных значений i=p, i=q, i=s и т.д., при этом запятая, разделяющая значения переменной цикла, отдельную позицию НЕ занимает.
Область цикла начинается оператором цикла и кончается ячейкой "abc", указанной в операторе. После перебора всех значений i вычисления продолжаются со следующей после "abc" ячейки. Последней ячейкой цикла (на адресе "abc") всегда должен быть пробел "#".
В операторе разрешается указывать как численные значения (константы), так и имена переменных. Внутри цикла может находиться условный оператор, который прерывает цикл. При этом текущее значение переменной цикла сохраняется и может использоваться в дальнейших вычислениях.
Если шаг изменения переменной цикла равен 1, то его можно не указывать: [i=n-m#abc]. При необходимости придать индексу или переменной i определенное значение m на данном участке программы, ставится оператор [i=m]. Данный оператор запрещается помещать в область цикла с переменной i.
Наравне с переменной цикла i разрешается использовать переменную j. Независимые циклы с переменными i и j могут быть вложены один в другой. Разрешается применять двумерные массивы: Rij, Xji и т.д. В этом случает значения i и j должны быть в диапазоне от 0 до 9.
-
Вычисления по программе прекращаются в следеющих случаях:
- по команде STOP;
- при переходе МК в режим "переполнение";
- при переходе МК в режим "некорректная операция", если не предусмотрен условный переход;
- если в тексте программы обнаружена ошибка;
- по усмотрению вычислителя.
5. ПРИМЕР ПРОГРАММЫ
Биоритмы. ПРАЛ БЗ-35Исходные данные: Hi(n), Mi(n), Ni(n), n, H0, M0, N0, T1=23, T2=28, T3=33
Ответ: Ri(n), B, Фij(3n)
H0, M0, N0 - год, месяц и число рождения,
n - количество обрабатываемых дат, B - день недели рождения (0 - суббота...),
Ri - число прожитых дней на данную дату i,
Фij - амплитуда соответствующего биоритма на данную дату i
(j=1 - физический, 2 - эмоциональный, 3 - интеллектуальный).