Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Общая структура программы





Программы в Cache

Типы программ

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

Таблица 1. Различные типы программ.

Окончание Тип программы Пояснение
.MAC Макрокод Макрокод может содержать код Cache ObjectScript, макродирективы, макросы, встроенный SQL и встроенный HTML. Он компилируется в промежуточный код, а тот уже в объектный код.
.INC Включаемая макропро-грамма Включаемые макропрограммы могут содержать любой код, разрешенный в .МАС-программах. Они применяются для построения макробиблиотек и могут быть включены в макропрограмму с помощью директивы Include -отсюда и их название.
.INT Промежу-точный код Промежуточный код - это рабочий код Cache ObjectScript. Макросы и встроенный SQL сначала преобразуются в промежуточный код.
.OBJ Объектный код Прежде чем выполнить промежуточный код, необходимо откомпилировать его во внутренний объектный код. Это происходит автоматически при сохранении отредактированной программы. Во время выполнения используется только объектный код; Фирмы-разработчики программного обеспечения тиражируют свои приложения, большей частью, только в объектном коде.

 

Создание программ с помощью Cache Studio

Cache Studio — это одно из приложений, вызываемых из меню Cache-куба. Для разработки программ предлагается графический редактор, позволяющий комфортно создавать классы (включая создание кода методов), CSP-страницы Cache (Cache Server Pages), программы на макроязыке, включаемые файлы и программы на промежуточном коде, а также компилировать их в выполняемый объектный код.

Cache Studio предоставляет программисту такое вспомогательное средство, как автоматический синтаксический контроль; различные элементы языка помечаются разным цветом и в случае нарушения синтаксических правил выводятся сообщения об ошибках.

Cache Studio также содержит встроенный отладчик, который может быть использован для поиска ошибок в приложениях.

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

Основные структуры в программе

Программы в Cache состоят из индивидуальных блоков кода, создаваемых и редактируемых как исходный код, при сохранении автоматически компилируемых в особую объектную форму, не являющуюся машинным кодом и независимую от платформы — это так называемый р-код.

В качестве имени программы допустима любая комбинация буквенно-цифровых символов 7-битного набора ASCII, с тем лишь ограничением, что имя не должно начинаться с цифры, и с тем дополнением, что первым символом может быть знак процента, а также в любой позиции имени кроме первой и последней может использоваться символ точки. Программы, имена которых начинаются с процента, считаются библиотечными программами, эти имена предусмотрены для системных программ Cache, которые могут вызываться из любых областей Cache. В отношении максимальной длины имени каких-либо ограничений нет, однако распознаются лишь символы с первого по 31.



Строение программной строки

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

Строки с метками

Метка отмечает строку внутри программы. Она всегда должна начинаться в первом столбце строки. Соглашения для меток соответствуют соглашениям для имен программ, кроме того, метку можно начинать с цифры. Общая длина не должна превосходить 31 символ. Вслед за меткой в любом случае идет пробел, называемый также признак начала строки. За ним могут (но не обязаны) следовать выполняемые команды Cache.

Строки кода

Они всегда начинаются, по меньшей мере, одним пробелом (то есть признаком начала строки). За ним могут (но не обязаны) следовать выполняемые команды Cache.

Строки комментария

Имеются два различных метода комментирования:

- Комментарий с точкой с запятой (;). Все символы, идущие за точкой с запятой, не выполняются. При компиляции программы в объектный код комментарии удаляются.

- Комментарий с двумя точками с запятой (;;). Некоторые элементы языка (в особенности функция $Text) могут ссылаться на текст программной строки.

Часто комментарии служат для хранения параметров или констант в тексте программы. Чтобы это было возможно и в случае отсутствия исходного кода программы во время выполнения, отделенные двумя точками с запятой комментарии из объектного кода не удаляются, другими словами, при компиляции в отличие от простой точки с запятой они сохраняются.

С-совместимые комментарии

- Два слэша (//), аналогично точке с запятой.

- Комментарий, расположенный на нескольких строках программы начинается с символов /* и заканчивается */.

Между последней командой в строке и началом комментария /* должен присутствовать минимум один пробел (два пробела для команды без аргументов). Эта форма комментария может быть также использована внутри списка аргументов функции, например:

Write $Char(65 /* 65 соответствует букве "А" */)

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

Выражение или команда могут быть расположены в нескольких строках. Очевидно, действует правило, что команда не может быть разделена на командное слово и первый символ аргумента команды.

Set sum = x + у // comment I

+ z , // comment 2

mue = sum /3 // comment 3

В этом примере комментарии расположены в конце каждой «подстроки».

В дополнение к этому надо учитывать, что строка всегда рассматривается как единое целое в строчных формах команд For, If и Else и поэтому не может быть разбита на несколько.

Максимальная длина строки программы 4К.

Блоки в программе

Следующую по размеру структурную единицу представляют собой блоки.

В Cache различают три типа блоков:

1. «Точечные» блоки, вызываемые при помощи команды Do без аргументов.

2. Процедурные блоки, которые заключены в фигурные скобки и поэтому могут располагаться на нескольких строках.

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

«Точечные» блоки

«Точечные» блоки начинаются одной или несколькими точками в каждой строке, поэтому они так и называются. Вызывают их с помощью безаргументной команды Do.

Точечные блоки расширяют область действия программной строки. Инициализация такого блока происходит посредством команды Do без аргумента, при этом ожидается, что этот блок начинается в следующей строке после Do. Эта область должна начинаться с точки (после признака начала строки). При этом аналогично команде Do с аргументом Do-стек увеличивается на единицу (уровень 1). Если в этой области встречается еще одна безаргументная команда DO, следующая строка должна начинаться с двух точек (уровень 2) и так далее.

Отдельные блоки не обязаны, но могут завершаться командой Quit. Они заканчиваются неявно, если вслед за блоком с n-ным количеством точек идет строка, в начале которой содержится отличное от n число точек.

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

В следующем примере поясняются основные структуры блоков.

 

<code> // Эта (основная) область относится к уровню 0,

// который не содержит точек

Do // безаргументная Do

. // Внешний блок, одна точка, уровень 1

. <Code>

. Do // еще безаргументная Do

.. // внутренний блок, две точки, уровень 2

.. <code>

. // вновь блок первого уровня —

. // неявное завершение 2-го уровня блока

. <code>

// Отсутствие точки, основной блок

Quit

В заключение необходимо сделать еще два важных замечания.

Во-первых, каждый уровень блока имеет собственную служебную переменную $Test, другими словами, изменение $Test не передается наружу. (Это существенное отличие от вызова подпрограммы с помощью команды Do с аргументом!).

Во-вторых, как это происходит в нашей программе-примере, точки должны проставляться и у строк комментария с тем, чтобы блок не завершился автоматически.

Общая структура программы

Программа в Caché состоит из индивидуальных блоков, создаваемых и редактируемых как исходный код. Программа состоит из подпрограмм, процедур и функций.

Имя программы – определяется именем MAC-файла, в котором она хранится, это любая комбинация буквенно-цифровых символов ASCII, имя не должно начинаться с цифры. При сохранении программы в файле ее имя не должно содержать символы: _(подчерк), - (минус), ; (точка с запятой).

Имя, включающее эти символы, не является верным.

Вызов программы:

Do ^RoutineName

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

Программа – это контейнер для подпрограмм, методов, процедур и функций. Программы, имена которых начинаются с %(процента), считаются библиотечными программами.

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

Строение программной строки:

[метка] [код команды] [комментарий]

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

Р1 // первая строка программы

Set a=l

Do Р2

Quit

Р2 // первая строка подпрограммы Р2

Set х=2,у=3

Quit

 

Эта программа состоит из двух фрагментов, программы Р1 и вызываемой из Р1 программы Р2. Из совершенно другой программы можно было бы «глобально» вызвать Р1 с помощью команды Do ^P1. Это означает, что программа будет загружена из каталога программ в память и далее последует ее выполнение.

Если циркумфлекс («знак глобала») при вызове Do P2 отсутствует, то ожидается, что метку следует искать в текущей программе. Р2 можно назвать также подпрограммой Р1.

Вход в «глобально» вызываемую программу может совершаться и с определенной метки. К примеру, вызов Do P2^P1 вызывал бы (локальную) подпрограмму Р2 в программе Р1.

Наконец, имеется возможность, используя так называемый синтаксис метка+смещение, войти в n-ную строку (n равно смещению) после метки в вызываемой программе. Так, например, в нашей программе вызов Do Р1+3^Р1 означал бы, что вход в программу совершается через вторую строку после метки Р1, и там начинается обработка. В этом случае строка Set a=1 была бы пропущена. Эта возможность весьма гибка, и применяется в самых разных ситуациях (например, при тестировании программ), но все же требуется соблюдать достаточную осторожность, особенно тогда, когда в программу будут добавляться строки, и таким образом смещение будет изменяться.

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

Invert(xl,x2,x3) // Метка со списком формальных параметров

Метки могут быть public (общедоступными) и private (внутренними), что определяется соответствующим ключевым словом. Если его нет, то по умолчанию они public.

Метки public могут быть вызваны из любой программы, private — только из текущей.

Move(x) Private /* метка private, может быть использована

только внутри этой программы */

Rotate(x) Public /* это метка public, может быть вызвана из

любой программы */

Invert(х) /* аналогично */

Прежде чем закончить рассмотрение меток, давайте остановимся на неявной команде Quit перед меткой с параметрами.

Start //

Write "Hello World",!

// Здесь неявная команда Quit

MySub(a) //

Write a,!

// Здесь неявная команда Quit

MyProc(){

Write "This is my procedure"

// Неявная команда Quit в конце процедуры

}

Неявная команда Quit предотвращает «сквозное продолжение» программы в том случае, если опущена явная команда Quit и следующая строка начинается с метки с параметрами. Это обусловлено тем, что параметры могут быть не определены.

В случае ошибки выполнения программы выдается имя метки+ смещение, где произошла ошибка.

Например:

SAMPLES>do ^badroutine

<UNDEFINED>start+3^badroutine

SAMPLES 2do>quit

SAMPLES>

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

Например:

end quit ; конец









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2018 zdamsam.ru Размещенные материалы защищены законодательством РФ.