ЯЗЫК ПРОГРАММИРОВАНИЯ МИКРОКАЛЬКУЛЯТОРОВ "ПРАЛ"

(описание стандарта 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. ОПЕРАТОРЫ УПРАВЛЕНИЯ

  1. Оператор безусловного перехода
    {abc}

    где: a - номер таблицы, b - символ строки, c - символ столбца клетки, на которую требуется перейти, т.е. "abc" - адрес клетки (ячейки). Заключается в фигурные скобки.


  2. Оператор присвоения знака
    sign

    После этого оператора ставится имя переменной, знак которой необходимо присвоить числу на индикаторе (клавишей "смена знака"). К моменту выполнения оператора значение этой переменной должно быть известно и записано на бумаге (signX = "+" при X>=0; signX = "-" при X<0).


  3. Оператор обращения к подпрограмме
    {abc#def}

    где "abc" - адрес первой ячейки подпрограммы, "def" - адрес последней ячейки.

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


  4. Оператор выбора
    {[abc]}

    Обозначает свободу дальнейших вычислений, т.е. либо переход на ячейку "abc", либо продолжение вычислений подряд (на усмотрение вычислителя).


  5. Оператор условного перехода
    вариант 1: [abc]
    вариант 2: [~#abc]

    Если к моменту выполнения оператора варианта 1 МК находится в рабочем режиме, то вычисления продолжаются с ячейки после оператора. Если же МК накходится в режиме "некорректная операция", то вычисления продолжаются с указанной в операторе ячейки "abc".

    В варианте 2 символ "~" заменяется конкретным условием сравнения с нулем из возможных ">=", "<", "=", "<>". При этом с нулем сравнивается число на индикаторе. Если условие выполнилось, то вычисления продолжаются с ячейки после оператора, если же это условие не выполнилось, то вычисления продолжаются с ячейки "abc", указанной в операторе.


  6. Циклические вычисления

    Осуществляются либо с помощью оператора условного перехода, либо с помощью оператора цикла.
    Оператор цикла имеет вид:
    вариант 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.


  7. Вычисления по программе прекращаются в следеющих случаях:
    1. по команде STOP;
    2. при переходе МК в режим "переполнение";
    3. при переходе МК в режим "некорректная операция", если не предусмотрен условный переход;
    4. если в тексте программы обнаружена ошибка;
    5. по усмотрению вычислителя.

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 - интеллектуальный).




Rambler's Top100
nick ErichWare