Краткое описание языка программ пользователя — КиберПедия 

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

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Краткое описание языка программ пользователя

2020-11-03 163
Краткое описание языка программ пользователя 0.00 из 5.00 0 оценок
Заказать работу

 

Особенности языка

Язык UserProgram  представляет собой интерпретатор Паскаль- подобного языка. Основные отличия его от стандартного Паскаля следующие:

 

Поддерживается два типа данных - числа (extended) и строки. Специального булевого типа нет, логические операции работают с числами, при этом считается что 0 = FALSE, любое число отличное от нуля значит TRUE.

Все логические операторы в качестве TRUE возвращают 1.

Также нет необходимости в специальном типе для даты и времени, так как в тип TDateTime совместим с extended.

 

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

Символам строки можно присваивать числовые значения в диапазоне 0..255 или символы (строки длиной 1).

 

 - В выражениях поддерживаются следующие операции:

арифметические: +, -, *, /, ^ (возведение в степень), SHL, SHR

операции с битами: BITOR,BITAND,BITXOR,BITNOT

логические: >, <, >=, <=, =, <>, AND, OR, NOT, константы TRUE и FALSE.

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

 

 - В интерпретаторе поддерживаются операторы:

BEGIN... END

IF... THEN... ELSE

CASE

FOR... TO/DOWNTO... DO

WHILE... DO

REPEAT... UNTIL

CONTINUE

BREAK

GOTO

EXIT

USES

INCLUDE

 

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

 

Поддерживаются многомерные массивы, которые хранятся как набор переменных. Имена таких переменных состоят из имени массива и индексов в квадратных скобках. Имя массива должно быть уникальным, не допускается одновременное существование обычной переменной и переменной массива с тем же именем (например, переменная с именем MyArr и элемент массива MyArr[1]). Так как элементы массивов хранятся как обычные переменные, на них распространяются все правила применимые к обычным переменным.

 

Массивы не надо объявлять, элементы одного массива могут хранить как строки так и числа. Для диапазона индексов массивов нет никаких ограничений. Непрерывность элементов массива также не обязательна. Чтобы создать непрерывную последовательность элементов массива им надо просто присвоить (например, в цикле) какие - либо значения. Кроме того, к символам строк можно обращаться как к массиву символов. Так, например, MyArr[1][2] значит обращение ко 2-му символу 1-й строки массива MyArr. Запись MyArr[1] может значить либо первый символ обычной строковой переменной MyArr, либо первый элемент массива. Но так как элемент массива и переменная с таким же именем одновременно существовать не могут, неоднозначность не возникает.

 

Поддерживаются процедуры и функции на языке интерпретатора. В списке параметров процедур и функций необходимо только перечислить имена формальных параметров. Типы параметров и способ передачи указывать не надо, также в объявлении функций не надо указывать тип возвращаемого значения. Для возврата значения функции используется переменная "result". Если в качестве параметра функции или процедуры передается глобальная переменная интерпретатора, этот параметр для данного вызова считается VAR-параметром и его изменение внутри функции изменит значение глобальной переменной. В то же время все глобальные переменные интерпретатора внутри функции или процедуры ведут себя, как локальные переменные, которым присвоены начальные значения совпадающие со значениями одноименных глобальных переменных. Их значения доступны в процедурах и функциях, их можно изменить, но после выхода из процедуры или функции значение глобальной переменной не изменится. Все новые переменные, созданные внутри процедур и функций являются локальными, и после выхода из процедуры/функции исчезнут. Таким образом, в процедурах и функциях можно использовать любые имена для локальных переменных, не опасаясь что они совпадут с именами глобальных переменных.

 

Для реализации библиотек процедур можно использовать операторы USES и INCLUDE.

Их синтаксис: USES 'имя файла';

               INCLUDE 'имя файла';

 

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

 

Режимы работы программ

Можно выделить два режима работы программы:

по неявному циклу, когда цикл по глубине организуется автоматически,

по явному циклу, когда цикл задан в программе.

В неявном цикле возможно также использование явного цикла.

 

Неявный цикл всегда возникает, если заданы входные (и выходные) кривые (колонки), т.е. в программе встречаются разделы IN и OUT. В этом случае возможны два варианта изменения глубины внутри цикла: непрерывный и попластовый. В непрерывном варианте шаг квантования (Step) отличен от нуля. Хотя входные данные могут иметь разные шаги квантования, система автоматически организует их правильное использование с одним заданным шагом квантования.

           

Входные данные

Входные кривые и колонки задаются в разделе IN. Для задания колонки стратиграфии перед ее именем ставится знак «$». Например,

IN

$СТРАТИГРАФИЯ;

Апс;

ДТП;

Для задания других попластовых колонок перед ее именем ставится восклицательный знак «!». Знаки не ставятся как для непрерывных, так и для попластовых кривых.

Имена, как и операторы языка, разделяются символом «;»-точка с запятой. Поэтому в одной строке может быть несколько имен или операторов. Например,

IN $СТРАТИГРАФИЯ; Апс; ДТП;

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

 

Выходные данные

Выходные кривые и колонки задаются в разделе OUT. Для задания попластовых колонок перед их именем ставится знак «!», для попластовых кривых - знак «#».Например,

OUT

!КОЛ;

Апс;

#ДТП;

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

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

Для попластовых результатов (как для колонок, так и для кривых), автоматически выполняются две операции: 1) объединение маломощных пропластков и 2) приведение глубин к кратности с 10 см. Минимальная толщина пропластка задается в параметре MinH.

Все выходные данные вставляются в планшет по шаблону, если они там предусмотрены. 

 

Зарезервированные имена переменных:

 

Start – кровля (начальная глубина) обработки неявного цикла (м),

Stop - подошва (конечная глубина) обработки неявного цикла (м),

Step – шаг обработки неявного цикла (м), может быть равен 0, если в обработке участвуют только попластовые данные (попластовый режим),

MinH – минимальная толщина пропластка для результирующих попластовых данных (м),

 

Null – отсутствующее значение, (только для чтения),

Index – номер текущей точки (начинается с 0); (только для чтения),

Н – текущая глубина (м), (только для чтения),

НР – предыдущая глубина (м), (только для чтения),

 


Поделиться с друзьями:

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

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

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.014 с.