Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №3 / Лабораторная работа №3.doc
Скачиваний:
28
Добавлен:
09.05.2015
Размер:
705.54 Кб
Скачать

20

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

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

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

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

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

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

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

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

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

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

Главное меню

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

Область

проекта

Область

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

Область

инспектора

Область информации

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

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

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

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

For <for parameter> {code}

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

Интересной особенностью команды «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}

и

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

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

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

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

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

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

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

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

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

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

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

Массив разряжённый; это означает, что исходя из наличия узла массива y(2,7) нельзя автоматически предполагать наличие какого-либо другого узла, например y(2,4).

При помощи одно единственного знака циркумфлекса, или знака глобала ^ - локальная переменная превращается в хранимую (глобальную) переменную. При этом база данных на основе глобалов воспринимается не как отдельная сущность, а как логическое расширение концепции локальных переменных. Например:

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