Главная / Базы данных /
Модели и смыслы данных в Cache и Oracle / Тест 3
Модели и смыслы данных в Cache и Oracle - тест 3
Упражнение 1:
Номер 1
Выберите верные высказывания о командных строках языка Cache ObjectScript
Ответ:
 (1) в командной строке S x=1 W:x=2 "x=",x
печать не будет выполняться 
 (2) командная строка K S a=10, b=a+10 W ?a,"X", ?b,"Y"
распечатает букву X
в позиции 11, и букву Y
в позиции 21 
 (3) команда W 5+5/2
выдаст результат 7.5 
 (4) командная строка R W “введите значение X”, X W X
не содержит ошибок, но не удобна в использовании 
Номер 2
Выберите верные высказывания о командных строках языка Cache ObjectScript
Ответ:
 (1) в командной строке S x=1 W:x "x=",x
печать не будет выполняться 
 (2) командная строка K S a=10, b=a-10 W ?a,"X", ?b,"Y"
распечатает букву X
в позиции 11, и букву Y
в позиции 1 
 (3) команда W 5+5*2
выдаст результат 5 
 (4) командная строка R X#4:8 W X
содержит ошибку 
Номер 3
Выберите верные высказывания о командных строках языка Cache ObjectScript
Ответ:
 (1) в командной строке K S x=1 W:x "x=",x
допущена ошибка 
 (2) при исполнении командной строки K S a=10, b=200 W ?a,"X", ?b,"Y"
появится сообщение об ошибке 
 (3) команда W 5+5#2
выдаст результат 0 
 (4) командная строка S a=-1 R:a "Введите X: " X#2 W X
содержит ошибку 
Упражнение 2:
Номер 1
Выберите верные высказывания о логических операторах языка Cache ObjectScript
Ответ:
 (1) командная строка S X=0 W "X=",X," 'X=",'X
определит отрицание X
как 1 
 (2) командные строки K b S a=0 W a&b
и K b S a=0 W a&&b
дают одинаковые результаты 
 (3) оператор ”содержит”, обозначаемый [
, в командной строке S a="строка", b="ока" W a[b
вернёт значение 1 
 (4) оператор ”сортируется за”, обозначаемый ]]
, в командной строке W 20]]2,!, "ром"]]"роль",!,"спорт"]]"спортивный"
 
 (5) вернёт три одинаковых значения 
Номер 2
Выберите верные высказывания о логических операторах языка Cache ObjectScript
Ответ:
 (1) команда W 2>11
вернёт 0, а команда W 2'>11
выдаст 1 
 (2) командная строка S a=0, b=1 W a'&b,!,'(a&b)
вернёт два разных значения 
 (3) оператор ”следует”, обозначаемый ]
, в командной строке S a="ром", b="роль", c="спортивный", d="спорт" W "a]b=",a]b,!,"c]d=",c]d
вернёт два разных значения 
 (4) оператор ”сортируется за”, обозначаемый ]]
, в командной строке W 20]]2,!, "р"_"ом"]]"роль",!,"спортивный"']]"спорт"
вернёт три одинаковых значения 
Номер 3
Выберите верные высказывания о логических операторах языка Cache ObjectScript
Ответ:
 (1) командная строка S x=77, y=0 W (x=1)!(y=0)
вернёт 0 
 (2) командная строка S a=0, b=1 W "a!b=",a!b,!,"a||b=",a||b
вернёт два одинаковых значения 
 (3) оператор сравнения с шаблоном обозначаемый ? определит несоответствие шаблону в строке S x="+7(111)222222" W x ? 1"+"1N1"("3N1")"7N
 
 (4) оператор ”сортируется за”, обозначаемый ]]
, в командной строке W 2]]"qwe",!, "ром"]]"роль",!,"спортивный"]]"спорт"
вернёт три одинаковых значения 
Упражнение 3:
Номер 1
Выберите команды или командные строки, содержащие разветвления без синтаксических и семантических ошибок
Ответ:
 (1) передача управления GOTO
может использовать разветвления, созданные с помощью постусловий к самой команде и к её аргументам, например, G:x=1 МЕТКА1:x=2, МЕТКА2:x=3, МЕТКА3
 
 (2) S x=1 I x=1 {W "x=",x} ELSE {W x+1, $TEST}
 
 (3) IF a < 1 DO ^P1(t1) ELSE DO ^P2(t1)
 
 (4) x=0,y=44 IF (x=1) {W "x=",x} ELSEIF (y=44) {W y} ELSEIF {W x, " ", y}
 
Номер 2
Выберите команды или командные строки, содержащие разветвления без синтаксических и семантических ошибок
Ответ:
 (1) для передачи управления с помощью GOTO
в другую программу перед именем метки следует помещать знак ^
, например, G ^P2
 
 (2) S $TEST=0 ELSE W $TEST
 
 (3) S x=1 I x=1 W "x=",x ELSE W x+1, $TEST
 
 (4) S x=0,y=44 IF (x=1) {W "x=",x} ELSEIF (y=44) {W y} ELSE {W x, " ", y}
 
Номер 3
Выберите команды или командные строки, содержащие разветвления без синтаксических и семантических ошибок
Ответ:
 (1) при исполнении строки G Label W Label
произойдёт передача управления по метке, затем выполнится печать 
 (2) S x=1 I x=1 W "x=",x, $TEST
 
 (3) SET $TEST=2 W $TEST // Ожидается печать 2
 
 (4) S x=0,y=44 IF (x=1) (W "x=",x) ELSEIF (y=44) (W y) ELSE (W x, " ", y)
 
Упражнение 4:
Номер 1
Какие значения будут выданы в результате исполнения следующих циклов?
Ответ:
 (1) программная строка FOR i=1:-1:-5, i+2 {} W i
вернёт значение -3 
 (2) программная строка S i=0 WHILE i<3 {W i S i=i+1}
вернёт три цифры распечатанные без пробелов 
 (3) в программной строке K i DO {W i S i=i+2} WHILE i<2
цикл будет повторен два раза 
 (4) программная строка FOR i=1:-1:-5 {DO {W i, " " S i=i-1} WHILE i<3}
зациклится 
Номер 2
Какие значения будут выданы в результате исполнения следующих циклов?
Ответ:
 (1) программная строка FOR i=1:1:5 {W j FOR j=1:1:3 {S i=6 }}
не вернёт ни одного значения  
 (2) программная строка WHILE i<3 {S i=i+1 W i}
распечатает 23 
 (3) программная строка S j=-1 DO {S j=j+1 W j, ” ”} WHILE i<2
выдаст три значения 
 (4) программная строка S i=2 DO {FOR j=1:1:3 {W i, " "} S i=i+1} WHILE i<5
будут повторять каждый выдаваемый результат трижды 
Номер 3
Какие значения будут выданы в результате исполнения следующих циклов?
Ответ:
 (1) программная строка FOR i=1:1:5 { FOR i=1:1:3 {W i }}
вернёт 15 значений 
 (2) программная строка K WHILE i<3 {W i S i=i+1}
распечатает три цифры 
 (3) программная строка S j=-1 DO {S j=j+1 W j} WHILE j<2
выдаст три цифры 
 (4) программная строка S i=2 DO {FOR j=1:1:3 {W i, !} S i=i+1} WHILE i<-5
выдаст три повторяющиеся строки 
Упражнение 5:
Номер 1
Какие константы или команды создаются с помощью разных видов косвенности и команды XECUTE
?
Ответ:
 (1) в командной строке S a="b", b="c", c="a" W @@@@
a косвенное имя @@@@a заменяется ”с”
 
 (2) в командной строке S x="i=1:1:3" F @x W i
косвенный аргумент @x
заменяется на i=1:1:3
 
 (3) в командной строке S x="a(1)", a="2", b=3, @x@(@a,@3)=123 W a(1,2,3)
индексная косвенность формирует команду S a(1,2,3)=123
 
 (4) команда XECUTE
в строке S a="F i=1:1:2", b="{W i,!}" X a_b
формирует и исполняет команду F i=1:1:2 {W i,!}
 
Номер 2
Какие команды создаются с помощью разных видов косвенности и команды XECUTE
?
Ответ:
 (1) в командной строке S a="b", b="c", c="d", d="e" W @@@@a
косвенное имя @@@@a
заменяется на “e”
 
 (2) в командной строке K a, b, c S x= "a=22, b=7, c=a+b", @x W a,!,b,!,c
косвенный аргумент @x
заменяется на
"a=22, b=7, c=a+b" и формируется присваивание S a=22, b=7, c=a+b
 
 (3) в командной строке S x="a(1)", @x@(2,3)=123 W a(1,2,3)
индексная косвенность формирует команду S a(1,2,3)=123
 
 (4) команда XECUTE
в строке S a="F i=1:1:2", b="{W i,!}" X a_b
формирует и исполняет команду F i=1:1:2 {W i,!}
 
Номер 3
Какие команды создаются с помощью разных видов косвенности и команды XECUTE
?
Ответ:
 (1) в командной строке S a="b", b="c", c="77", "77"="e" W @@@@a
косвенное имя @@@@a
заменяется на ”e”
 
 (2) в командной строке S x="(a,b,c)" K @x
косвенный аргумент формирует команду K (a,b,c)
 
 (3) в командной строке x="a(1)", @x@(2,3)@(4)=1234 W a(1,2,3,4)
индексная косвенность формирует команду S a(1,2,3,4)=123
 
 (4) команда XECUTE
в строке S a="F i=1:1", b="{W i,!}", c=":2" X a_c_b
формирует и исполняет команду F i=1:1:2 {W i,!}
 
Упражнение 6:
Номер 1
Какие действия выполняют функции для работы со строками?
Ответ:
 (1) функции для работы со строками записанные в левой части присваивания, например, S a="QWERTY" S $E(a,1,2)=" B" W a
, возвращают ошибку 
 (2) функция $FIND
возвращает номер позиции в которой находится найденная подстрока 
 (3) в трёхаргументном варианте функции $TRANSLATE
из строки определённой первым параметром удаляются все символы строки определённой вторым параметром 
 (4) командная строка W $TR($TR(" Это что-то", "ч", "к")," ","Э")
вернёт строку "ЭЭЭто кто-то"
 
Номер 2
Какие действия выполняют функции для работы со строками?
Ответ:
 (1) если третий аргумент функции $EXTRACT
превышает длину строки, появится сообщение об ошибке 
 (2) в трёхаргументном варианте функции $FIND
третий аргумент задаёт номер позиции в исходной строке, с которой начинается поиск 
 (3) функция $TRANSLATE("Это e-mail", "maile-", "мыло")
вернёт строку "Это мыло"
 
 (4) присваивание $E("QWERTY",1,44)="BB"
вернёт строку
"BBBBBB" 
Номер 3
Какие действия выполняют функции для работы со строками?
Ответ:
 (1) дробные значения в функции $EXTRACT
не допускаются, например, W $E(“QWERTY”, 0.5,3.7)
 
 (2) функция $F("01234567123", "1")
вернёт значение 3, а для поиска следующего вхождения "1" следует использовать $F("01234567123", "1",3)
 
 (3) функция $TRANSLATE("Это что-то", "чабвгд", "к")
вернёт строку
"Это кто-то" 
 (4) командная строка S a="QWE",$E(a,0,0)="ABRAKADABRA" W a
вернёт строку "ABRAKADABRAQWE"
 
Упражнение 7:
Номер 1
Какие действия выполняют функции для работы со строками с разделителями?
Ответ:
 (1) функция $LENGTH("AB^CDE^F","^")
вернёт значение 3, а функция $LENGTH("AB^CDE^F","")
вернёт 0 
 (2) функция $PIECE("AB^C+DE^F","^",2)
вернёт "C+DE"
, а функция $PIECE("AB^C+DE^F",")",2)
вернёт пустое значение 
 (3) в командной строке S a="AB^C+DE^F" W $FIND(a,"^",5)
функция $FIND
вернёт значение 3 
 (4) командная строка S a="AB^C+DE^F" W $FIND(a,+1,-7)
не содержит синтаксических ошибок, но бессмысленна 
Номер 2
Какие действия выполняют функции для работы со строками с разделителями?
Ответ:
 (1) функция для работы со строками записанные в левой части присваивания, например, в строке S a="QW^ERT^Y" S $E(a,1,5)=" B" W a
, возвращают ошибку 
 (2) функция $PIECE($PIECE("AB^C+DE^F","^",2),"+",1)
вернёт значение "C"
 
 (3) в командной строке S a="AB^C+DE^F" W $FIND(a,"^",5)
функция $FIND
вернёт значение 9 
 (4) строка S a="AB^CDE^F", $PIECE(a,"^",6)="CCC" W
a вставит в строку a два пустых поля 
Номер 3
Какие действия выполняют функции для работы со строками с разделителями?
Ответ:
 (1) функция $LENGTH
в строке W $LENGTH("AB^C+DE^F","^")," ", $LENGTH("AB^C+DE^F","+")
вернёт значения длин 3 и 2 
 (2) командная строка S a="AB^C+DE^F", $PIECE(a,"^",2)="CCC" W
a выдаст значение "AB^CCC^F"
 
 (3) в командной строке S a="AB^C+DE^F" W $FIND(a,"^",5)
функция $FIND
вернёт значение 3 
 (4) командная строка S a="AB^C+DE^F" W $FIND($FIND(a,"^"),"+",1)
бессмысленна, но синтаксических ошибок не содержит 
Упражнение 8:
Номер 1
Какие действия выполняют функции для работы со списками?
Ответ:
 (1) функция $LISTBUILD
строит список из указанного набора элементов, а команда ZZDUMP
выдаёт его структуру, указывая коды элементов списка и разделителей 
 (2) проверка с помощью функции $LISTVALID
покажет правильность как списков всех структур a,b,c,d,e
сформированных командной строкой S a=7, b="7", c="", d=$LB("A","B"),e="A^B"
 
 (3) результаты работы двухаргументных функций $LISTGET
и $LIST
для списков не всегда совпадают 
 (4) функция $LISTSAME
позволяет различать списки одинаковые по составу, но с разным порядком элементов 
Номер 2
Какие действия выполняют функции для работы со списками?
Ответ:
 (1) командная строка S a=$LB(), b=$LB("") ZZDUMP a,b
показывает, что пустой список и список из единственного пустого элемента – одно и то же 
 (2) список созданный из строки с разделителями с помощью функции $LISTFROMSTRING("a^b^c","^")
, это правильный список 
 (3) функция $LISTGET
с тремя аргументами позволяет обнаруживать пустые элементы 
 (4) функция $LISTLENGTH
при определении длины списка не учитывает неопределённые элементы, но учитывает элементы вложенных списков 
Номер 3
Какие действия выполняют функции для работы со списками?
Ответ:
 (1) командная строка K x S a=$LB("A ",x,6) F i=1:1:3 W "i=",i, ?5,$LG(a,i),!
показывает, что неопределённые значения можно вставлять в список 
 (2) командная строка S v=$LB("1 4","6"),w=$LISTTOSTRING(v," ") W $LL(v), ?5,$LENGTH(w," ") ZZDUMP v
показывает, что функция $LISTTOSTRING
не проверяет наличия внутри исходного списка элемента, который будет использован в полученной строке как разделитель 
 (3) командная строка S a=$LB("A",,"B") F i=1:1:3 W i,?5,$LG(a,i,"null"),!
показывает, что функция $LISTGET
не позволяет обнаруживать в списках пустые элементы 
 (4) подключение пустого элемента в голову или хвост списка увеличивает его длину 
Упражнение 9:
Номер 1
Назовите особенности организации программ в Cache ObjectScript
Ответ:
 (1) программа содержит метки, командные строки, однострочные комментарии начинающиеся символами ”;” или “//”,однострочные комментарии, сохраняемые при компиляции, которые начинаются с ”;;” и многострочные комментарии вида /* … */  
 (2) используется четыре типа файлов программ с расширениями .mac, .inc, .int, .obj 
 (3) текст создаваемой программы необходимо архивировать, иначе его невозможно восстановить 
 (4) программа не может изменять себя и другие программы 
Номер 2
Назовите особенности организации программ в Cache ObjectScript
Ответ:
 (1) метки программы могут быть общедоступными (public) и локальными (private);  
 (2) промежуточный код программы, представляемый файлом с расширением .int, хранится в глобале ^ROUTINE
в ветви со значением первого индекса равным “имя_программы”, вторым индексом равным нулю 
 (3) текст программы невозможно читать из самой программы  
 (4) время исполнения программы или её фрагментов можно измерить с точностью до микросекунд с помощью функции $zh
 
Номер 3
Назовите особенности организации программ в Cache ObjectScript
Ответ:
 (1) точек входа в программу может быть столько, сколько в ней меток, не начинающих текст программы, плюс одна 
 (2) последние версии программ имеют расширения .int.1, .mac.1, предыдущие расширения .int.2, .mac.2 
 (3) для чтения строк текста программы без непосредственного обращения к глобалу ^ROUTINE
можно использовать функцию $TEXT
 
 (4) имя переменной вызываемой по ссылке отмечается точкой перед именем 
Упражнение 10:
Номер 1
Назовите особенности организации деревьев (разреженных массивов) и функций для работы с ними в Cache ObjectScript
Ответ:
 (1) с помощью функции $DATA
можно построить выражения, позволяющие выяснить, существует ли узел, имеются ли у него значения и потомки, будет ли узел виртуальным 
 (2) полное имя узла имеет формат ^| “имя_области_имён” | имя_узла (индексы)
 
 (3) функция $QSUBSCRIPT(имя, -1)
возвращает имя, а функция $QSUBSCRIPT(имя, 0)
возвращает окружение 
 (4) функция $QLENGTH(“узел”)
просматривает только текст своего аргумента и возвращает количество индексов в имени узла 
Номер 2
Назовите особенности организации деревьев (разреженных массивов) и функций для работы с ними в Cache ObjectScript
Ответ:
 (1) без использования виртуальных узлов невозможно представить деревом разреженный массив 
 (2) неполная глобальная ссылка имеет формат ^(индексы)
, причём индексы должны быть добавлены к указателю, называемому индикатором неполной глобальной ссылки 
 (3) функция $QLENGTH(“узел”)
ищет узел и возвращает количество индексов в имени узла 
 (4) командная строка K S a="",a(1)=1,a(1,1,2)= 112 W $D(a),?5,$D(a(1,1))
позволяет сделать вывод, что узел a
– корень, а узел a(1,1)
существует  
Номер 3
Назовите особенности организации деревьев (разреженных массивов) и функций для работы с ними в Cache ObjectScript
Ответ:
 (1) значениями узлов могут быть константы, простые переменные, строки с разделителями, списки и значения узлов другого разреженного массива 
 (2) функция $GET(имя_узла)
позволяет определить значение узла, если его нет, вернётся значение null 
 (3) функция $QSUBSCRIPT(имя, n)
, где n>0
, возвращает значение n-го индекса 
 (4) функция $DATA
не позволяет выявить несуществующие узлы 
Упражнение 11:
Номер 1
Выберите истинные утверждения о работе с разреженными массивами с помощью функций $ORDER, $QUERY
и MERGE
?
Ответ:
 (1) можно считать, что цепочка индексов каждого горизонтального подуровня дерева замыкается на пустой индекс  
 (2) если задан глобал S ^H="", ^H(-5)=-5, ^H(2)=2, ^H("E")="E"
то функция $ORDER(^H(“”),1)
вернёт крайнее левое значение на глубине 1 дерева, а функция $ORDER(^H(“”),-1)
крайнее правое значение 
 (3) при выполнении командной строки K S ^H="", ^H(-5)=-5, ^H(2)=2, ^H("E")="E", a(1)=1, a(3,3)=33 MERGE ^H(5)=a
образуется узлы ^H(5,1)=1 и ^H(5,3,3)=33
 
 (4) при поиске в глубину с помощью функции $QUERY
движение начинается с попытки перемещения вправо по горизонтали 
Номер 2
Выберите истинные утверждения о работе с разреженными массивами с помощью функций $ORDER, $QUERY
и MERGE
Ответ:
 (1) неканонические числа, содержащие избыточные нули и знак + расположены перед каноническими числами, а слова в кириллице перед словами в латинице 
 (2) функция $ORDER
возвращает значение индекса следующего по порядку сортировки элемента, а $QUERY
возвращает имя следующего узла 
 (3) при выполнении командной строки K S ^H="", ^H(-5)=-5, ^H(2)=2, ^H("E")="E", a(1)=1, a(3,3)=33 MERGE a(1)=^H(-5)
образуется узел a(1,3,3)=-5
 
 (4) при поиске в глубину с помощью функции $QUERY
движение начинается с попытки перемещения по крайней левой ветви вниз, если это невозможно, смещаемся на узел справа на этом же уровне, если же и это невозможно, перемещаемся вверх 
Номер 3
Выберите истинные утверждения о работе с разреженными массивами с помощью функций $ORDER, $QUERY
и MERGE
Ответ:
 (1) правда ли, что пара командных строк
F i=1:1:255 S a($CHAR(i))= $CHAR(i)
S x="" F {S x = $O(a(x)) Q:x="" W !,x,?20,a(x)}
позволяет просмотреть порядок сортировки одиночных символов 
 (2) командная строка S ^H="", ^H(-5)=-5, ^H(2)=2, ^H("E")="E" W $O(^H(5)),?10,$O(^H(E))
вернёт значение индекса E
и пустое значение  
 (3) . при выполнении командной строки K S ^H="", ^H(-5)=-5, ^H(2)=2, ^H("E")="E", a(1)=1, a(3,3)=33 MERGE a(1)=^H(-5)
образуются узлы a(1)=-5
и a(3,3)=33
 
 (4) попав на виртуальный узел, функция $QUERY
сообщает об этом и прекращает перемещение