Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №3 / Лабораторная работа №3

.pdf
Скачиваний:
33
Добавлен:
09.05.2015
Размер:
833.55 Кб
Скачать

1

Лабораторная работа №3

Тема: Организация прямого доступа к данным и глобалы. Организация циклов в программах. Функции управления глобалами. Навигация в многомерных массивах. Поиск решения в глубину и ширину.

Цель работы: Освоить основные операции над глобалами.

Теоретические сведения

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

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

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

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

Рисунок 1 – Запуск программы Cache Studio из Cache-куба.

2

Панель мастеров

 

Панель отладки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Главное меню

 

Стандартная панель

 

 

 

 

 

 

 

 

 

Область

 

 

Область

 

Область

 

редактирования

 

 

 

 

инспектора

проекта

 

 

 

 

 

 

 

 

Область

информации

Рисунок 2 – Описание программы Cache Studio.

2. Основные теоретические сведения о циклических алгоритмах

Командные конструкции For, While, Do/While обеспечивают многократное выполнение заданного сегмента кода. Это называется циклом.

Общая форма команды For:

For <for parameter> {code}

Здесь блок {code} выполняется столько раз, сколько задано в параметре команды

<for parameter>. Команды, следующие в той же строке программы после закрывающей скобки, уже не относятся к команде «For» и выполняются только один раз.

3

Интересной особенностью команды «For» в Cache является разнообразие вариантов параметра команды. Здесь возможны:

Список различных выражений

For level=<value> [, <value>…] {code}

Задание числового диапазона

For level=<num value> : <num value> : <num value> {code}

Здесь первое выражение рассматривается как начальное значение, второе как величина инкремента и третье как конечное значение переменной цикла.

Числовой диапазон, как показано выше, но без конечного значения.

For level=<num value> : <num value> {code}

В этом случае в теле цикла наращивается некоторая переменная, а для выхода из цикла служит функция Quit.

Безаргументная форма. В этой форме нет ни переменной цикла, ни начального, ни конечного значений.

For {code} //как минимум два пробела после «For»!

Основные правила циклических выражений:

Начальное значение, инкремент и конечное значение (если оно задано)

вычисляются до первого прохода тела цикла и сохраняются внутри цикла.

Изменение этих значений внутри цикла не влияет на число итераций.

После окончания цикла переменная цикла имеет то значение, которое она имела при выполнении последней итерации.

В конфликтных случаях (например, если конечное значение при положительном инкременте меньше начального) тело цикла не выполняется

ни разу.

Необходимо отметить, что различные формы конструкции «For» могут

свободно комбинироваться.

Общая форма команд While и Do/While

Две управляющие конструкции:

While <value> [, <value>…] {code}

4

и

Do {code} While <value> [, <value>…]

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

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

3.Основные теоретические сведения о глобальных переменных

Cache ObjectScript использует полностью интегрированные в язык

хранимые структуры данных, так называемые глобальные переменные. Эти переменные так же как и временные «локальные», могут существовать в виде простых или индексированных структур. Глобальные переменные, или кратко глобалы, являясь хранимыми данными, создают не только основу для длительного хранения объектов, но и основу для возможного в Cache ObjectScript чрезвычайно эффективного прямого доступа.

Многомерность данных в Cache реализуется через индексы, поэтому в качестве синонима здесь говорят об индексированных переменных.

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

Например:

x(1990,”Август”,23)=”День рождения”

Переменная x имеет заключѐнные в скобки индексы, в данном примере их три. То, что здесь видится таким простым, приобретает в Cache совершенно особое значение благодаря следующим замечаниям:

Нет необходимости в предварительном объявлении размерности массива. Создаются лишь заданные командой Set записи.

5

Это становится возможным благодаря концепции разряжѐнных массивов, когда лишь существующие записи занимают место в памяти

или на диске.

Массив разряжѐнный; это означает, что исходя из наличия узла массива y(2,7)

нельзя автоматически предполагать наличие какого-либо другого узла, например y(2,4).

При помощи одно единственного знака циркумфлекса, или знака глобала ^ -

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

а как логическое расширение концепции локальных переменных. Например:

^OTD.Tovar(123000,50,”Зелѐный киви”)=4

Ход работы

1.Изучить теоретический материал, изложенный выше в данной методичке, а

также в главах 3.2 и 3.3 методических указаний в формате PDF.

2.Из меню Cache-куба открыть Cache Studio, ознакомиться с его интерфейсом и создать новую программу. См. рисунок 3.

Рисунок 3 – Создание новой программы на языке Cache Object Script.

6

3.На примерах, изложенных ниже, изучить основные приѐмы работы с глобалами с использованием циклических структур:

Занести следующие данные о пациентах в глобал ^Medizine:

Таблица 1 – Данные о пациентах.

 

Фамилия

 

 

Возраст

 

 

Пол

 

 

Кровяное

 

 

Температура

 

 

 

 

 

 

 

 

 

пациента

 

 

 

 

 

 

давление

 

 

тела

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Иванов

 

65

 

 

мужской

125/60

 

36,6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сидорова

 

50

 

 

женский

 

Нет данных

 

 

Нет данных

 

 

 

 

 

 

 

 

 

 

 

 

 

Тарасов

 

27

 

 

мужской

110/80

 

38,6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Петров

 

45

 

 

мужской

 

Нет данных

 

36,6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Иваненко

 

34

 

 

женский

115/85

 

 

Нет данных

 

 

 

 

 

 

 

 

 

 

 

 

 

Горбунков

 

60

 

 

мужской

100/80

 

39,3

 

 

 

 

 

 

 

 

 

 

 

 

 

Иващенко

 

71

 

 

мужской

140/60

 

36,9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Турчинов

 

65

 

 

мужской

 

Нет данных

 

 

Нет данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Программа имеет вид, приведѐнный на рисунке ниже:

После набора кода в центральном окне, рисунок 4, программу следует откомпилировать, путѐм нажатии клавиш Ctrl+F7. Перекомпилируйте программу

каждый раз, когда что-то в ней меняете или исправляете ошибки!

После первой компиляции программа попросит сохранение, см. рисунок 5.

7

Рисунок 4 – Работа над собственной программой в Cache Studio.

Рисунок 5 – Сохранение программы на диске.

8

Для выполнения программы используйте программу «Терминал», также вызываемую из меню Cache-куба. См. рисунок 6.

Вызов программы осуществляется с помощью оператора «do», далее пробел, далее знак циркумфлекс «^» и затем полное имя программы, которая тестируется. В конце каждой строки нажимается «Enter».

Рисунок 6 – Выполнение созданной программы в «Терминале».

Убедитесь в том, что все данные сохранены на диске в глобале ^Medizine. Для этого откройте портал управления системой:

9

Рисунок 7 – Просмотр глобалов в области User.

Работа с функцией $Data. Функция $Data (коротко $D) – это функция с именем переменной в качестве аргумента. Эта функция может работать с локальной или с глобальной, скалярной или индексированной переменной.

Значение функции $Data определяет, существует ли заданная в виде аргумента переменная и какая у неѐ структура. Функция возвращает четыре

различных результата:

1.Если еѐ значение равно 0 (10), то переменная не существует;

2.Если еѐ результат 1(11), то переменная существует.

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

пациент на лечении или нет, приведена на рисунке ниже:

Программа имеет вид:

Здесь применѐн оператор косвенности - @, который преобразует в данном случае имя переменной в еѐ значение. В общем случае он предназначен для преобразования строки символов в программный код.

10

Результат еѐ работы может быть следующим:

Рисунок 8 – Результат работы программы.

Работа с функцией $Order. Она является основной функцией, служащей для получения очередного в последовательности сортировки индекса локальной или глобальной индексированной переменной. Применяя цикл, в

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

Пример применения выполним в Терминале:

USER> w $O(^Medizine(65))

71

Получим ответ на следующий вопрос: Пациенты, каких возрастов

присутствуют на лечении? Ответом будет программа: