Главная / Программирование /
Основы информатики и программирования / Тест 8
Основы информатики и программирования - тест 8
Упражнение 1:
Номер 1
Теоремой, на которой базируется схема проектирования цикла при помощи инварианта, является утверждение, которое:
Ответ:
 (1) необходимо доказывать 
 (2) не существует 
 (3) принимается без доказательства 
Номер 2
Истинность утверждения на котором базируется схема проектирования цикла при помощи инварианта может быть выведена из:
Ответ:
 (1) свойств преобразователя предикатов wp
 
 (2) определения оператора конкатенации 
 (3) определения оператора сцепления 
 (4) определения оператора цикла 
Номер 3
Свойствами преобразователя предикатов wp
или определением оператора цикла являются:
Ответ:
 (1) {Q}"S0;"{I}
 
 (2) {I^e}"S;"{I}
 
 (3) {I^e}"h1=h;S;"{h<h1}
 
 (4) {Q}"S0;"
 
Упражнение 2:
Номер 1
Какую функцию надо взять в качестве ограничивающей, чтобы правильность данной программы:public class Gcd {
public static void main(String[] args) throws Exception {
int x = Xterm.inputInt("x -> ");
int y = Xterm.inputInt("y -> ");
Xterm.print("gcd(" + x + "," + y + ") =");
while ( (x != 0) && (y != 0) ) {
if (x >= y) x -= y;
else y -= x;
}
Xterm.println(" " + (x+y));
}
}легко могла быть доказана:
Ответ:
 (1) h = y * y
 
 (2) h = x * x
 
 (3) h = x * y
 
 (4) h = x * 1
 
Номер 2
В данном случае:public class Gcd {
public static void main(String[] args) throws Exception {
int x = Xterm.inputInt("x -> ");
int y = Xterm.inputInt("y -> ");
Xterm.print("gcd(" + x + "," + y + ") =");
while ( (x != 0) && (y != 0) ) {
if (x >= y) x -= y;
else y -= x;
}
Xterm.println(" " + (x+y));
}
}сохранение инварианта после выполнения тела цикла следует из:
Ответ:
 (1) T
-инвариантности gcd(x,y)
 
 (2) T
-инвариантности gcd(x,0)
 
 (3) T
-инвариантности gcd(y,y)
 
 (4) T
-инвариантности gcd(x,x)
 
Номер 3
На практике постановка задачи:
Ответ:
 (1) не включает в себя инвариант 
 (2) включает в себя инвариант 
 (3) должна включать в себе инвариант 
Упражнение 3:
Номер 1
Любая корректная постановка задачи содержит:
Ответ:
 (1) ее предусловие 
 (2) ее постусловие 
 (3) ее инкремент 
 (4) ее декремент 
Номер 2
Предусловие и постусловие, которые содержатся в постановке задачи должны послужить основой для построения:
Ответ:
 (1) инкремента 
 (2) инварианта 
 (3) декремента 
 (4) конкатенации 
Номер 3
Что соответствует отсутствию ограничений на начальные условия, в которых должна правильно работать программа:
Ответ:
 (1) То, что предусловие Q
достаточно часто имеет вид T
 
 (2) То, что предусловие Q
достаточно часто имеет вид R
 
 (3) То, что предусловие T
достаточно часто имеет вид Q
 
 (4) То, что предусловие T
достаточно часто имеет вид R
 
 (5) То, что предусловие T
достаточно часто имеет вид N
 
 (6) То, что предусловие Q
достаточно часто имеет вид N
 
Упражнение 4:
Номер 1
Если предусловие Q
имеет вид T
, то в этом случае инвариант можно строить только исходя из:
Ответ:
 (1) постусловия T
 
 (2) постусловия N
 
 (3) постусловия S
 
 (4) постусловия R
 
Номер 2
Программирование называют:
Ответ:
 (1) целенаправленной деятельностью 
 (2) хаотической деятельностью 
 (3) не направленной деятельностью 
 (4) не подконтрольной деятельностью 
Номер 3
Описание того, что происходит с множеством переменных программы в процессе выполнения цикла называется:
Ответ:
 (1) теорией сферы 
 (2) теорией воздушного шарика 
 (3) теорией квадрата 
 (4) теорией гипербарического параболоида 
Упражнение 5:
Номер 1
Основным методом построения инварианта является:
Ответ:
 (1) ослабление постусловия оператора цикла 
 (2) ослабление предусловия оператора цикла 
 (3) усиление постусловия оператора цикла 
 (4) усиление предусловия оператора цикла 
Номер 2
При использовании основного метода построения инварианта часто удается получить:
Ответ:
 (1) тип цикла 
 (2) условие продолжения цикла 
 (3) условие окончания цикла 
 (4) условие начала цикла 
Номер 3
При использовании основного метода построения инварианта и получении условия продолжения цикла в его качестве берется:
Ответ:
 (1) отрицание того предиката, которым ослабляется постусловие 
 (2) отрицание того предиката, которым усиливается постусловие 
 (3) отрицание того предиката, которым ослабляется предусловие 
 (4) отрицание того предиката, которым усиливается предусловие 
Упражнение 6:
Номер 1
Сколько применяется реально методов построения инварианта:
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 4 
Номер 2
Методами построения инварианта являются:
Ответ:
 (1) устранение конъюнктивного члена 
 (2) расширение области значений переменной 
 (3) замена константы переменной 
 (4) добавление дизъюнктивного члена 
Номер 3
Предикат A^B^C
можно ослабить до:
Ответ:
 (1) A^C
 
 (2) A^B
 
 (3) B^C
 
 (4) C^B
 
 (5) B^A
 
Упражнение 7:
Номер 1
При ослаблении предиката A^B^C
до A^C
имеет место:
Ответ:
 (1) устранение конъюнктивного члена 
 (2) добавление дизъюнктивного члена 
 (3) импликация 
 (4) конкатенация 
Номер 2
Предикат 5i<10
можно ослабить до:
Ответ:
 (1) 10i=10
 
 (2) 0i<10
 
 (3) 5i=10
 
 (4) 5i>10
 
Номер 3
При ослаблении предиката 5<i<10
до 0<i<10
имеет место:
Ответ:
 (1) расширение области значений переменной 
 (2) замена константы переменной 
 (3) замена константой переменной 
 (4) сужение области значений переменной 
Упражнение 8:
Номер 1
В чем причина того, что метод добавления дизъюнктивного члена не применяется:
Ответ:
 (1) он не содержит никаких рекомендаций по поводу того, как именно выбрать предикат A
 
 (2) он не содержит никаких рекомендаций по поводу того, как именно выбрать предикат B
 
 (3) он не содержит никаких рекомендаций по поводу того, как именно выбрать предикат C
 
 (4) он не содержит никаких рекомендаций по поводу того, как именно выбрать предикат D
 
Номер 2
При построении инварианта с помощью метода устранения конъюнктивного члена в качестве условия продолжения цикла e
может быть взято:
Ответ:
 (1) отрицание удаленного дизъюнктивного члена 
 (2) отрицание добавленного дизъюнктивного члена 
 (3) отрицание добавленного конъюнктивного члена 
 (4) отрицание удаленного конъюнктивного члена 
Номер 3
При построении инварианта с помощью метода устранения конъюнктивного члена истинность инварианта перед началом выполнения цикла легко устанавливается присваиванием:
Ответ:
 (1) "a=1;"
 
 (2) "a=b;"
 
 (3) "a<-1;"
 
 (4) "a>-1;"
 
 (5) "a=0;"
 
 (6) "a>0;"
 
Упражнение 9:
Номер 1
Для того чтобы при построении инварианта с помощью метода устранения конъюнктивного члена цикл завершился, величина a
должна:
Ответ:
 (1) увеличиваться 
 (2) уменьшаться 
 (3) не изменяться 
Номер 2
Простейший способ увеличения величины a
, при построении инварианта с помощью метода устранения конъюнктивного члена, - это:
Ответ:
 (1) увеличивать a
на единицу на каждой итерации цикла 
 (2) увеличивать a
на единицу на каждой рекурсии цикла 
 (3) увеличивать a
на единицу на каждой конкатенации цикла 
Номер 3
При построении инварианта с помощью метода устранения конъюнктивного члена увеличение величины a
на единицу на каждой итерации цикла:
Ответ:
 (1) не сохраняет инвариант 
 (2) сохраняет рекурсию 
 (3) не сохраняет рекурсию 
 (4) сохраняет инвариант 
Упражнение 10:
Номер 1
Данную программу:public class Sqrt {
public static void main(String[] args) throws Exception {
int n = Xterm.inputInt("n -> ");
int a = 0;
while ( n >= (a+1)*(a+1) )
a += 1;
Xterm.println("sqrt(" + n + ") = " + a);
}
}можно переписать в следующем компактном виде:
Ответ:
 (1) int a, n = Xterm.inputInt("n -> ");
Xterm.println("sqrt(" + n + ") = " + a); 
 (2) Xterm.inputInt("n -> ");
for (a=0; n >= (a+1)*(a+1); a++ a--);
Xterm.println("sqrt("" + n + """) = " + a); 
 (3) int a, n = Xterm.inputInt("n -> ");
for (a=0; n >= (a+1)*(a+1); a++);
Xterm.println("sqrt(" + n + ") = " + a); 
 (4) int a, n = Xterm.inputInt("n -> ");
for (a=0; n >= (a+1)*(a+1); a++); 
Номер 2
При написании программы, определяющей первое вхождение заданного целого числа x
в заданный массив b[0..m-1]
целых чисел (m>0)
, если известно, что x
находится в массиве b
, в качестве ограничивающей функции можно попробовать взять:
Ответ:
 (1) h=m+i
 
 (2) h=m-i
 
 (3) m=h+1
 
 (4) i=m+h
 
Номер 3
В качестве примера использования метода замены константы переменной можно рассматривать:
Ответ:
 (1) простую задачу суммирования элементов массива 
 (2) простую задачу вычитания массивов 
 (3) задачу деления элементов массива 
 (4) задачу умножения элементов массива 
Упражнение 11:
Номер 1
Программу, находящая сумму s
элементов заданного целочисленного массива b[0..n-1]
, элементы которого и величину n
изменять нельзя будет иметь вид:
Ответ:
 (1) "i=0;s=0;while(i<n)S;++S;"
 
 (2) "i=0;s=0;whileS;"
 
 (3) "i=0;s=0;while(i<n)S;"
 
 (4) "i=0;s=0;while(i<n)"
 
Номер 2
В данном случае:"i=0;s=0;while(i<n)S;"
уменьшить h
можно:
Ответ:
 (1) увеличивая i
на единицу на каждой итерации цикла 
 (2) уменьшая i
на единицу на каждой итерации цикла 
 (3) если не изменять i
 
Номер 3
Данная программа:public class Sqrt3 {
public static void main(String[] args) throws Exception {
int a, b, n;
n = Xterm.inputInt("n -> ");
a = 0;
b = n+1;
while (a+1 != b) {
int c = (a+b)/2;
if (c*c <= n) a = c;
else b = c;
}
Xterm.println("sqrt(" + n + ") = " + a);
}
}находит приближенное значение квадратного корня:
Ответ:
 (1) из заданного неотрицательного целого числа b
 
 (2) из заданного неотрицательного целого числа a
 
 (3) из заданного отрицательного целого числа n
 
 (4) из заданного неотрицательного целого числа n
 
 (5) из заданного отрицательного целого числа a
 
 (6) из заданного отрицательного целого числа b
 
Упражнение 12:
Номер 1
Какой метод в значительной мере подобен методу расширения области значения переменной:
Ответ:
 (1) добавление дизъюнктивного члена 
 (2) замена константы переменной 
 (3) устранение конъюнктивного члена 
 (4) замена константой переменной 
Номер 2
При нахождении минимального числа, содержащегося в каждом из трех упорядоченных по возрастанию массивов целых чисел, в предположении, что таковое существует, в качестве действий, которые будут приближать цикл к завершению можно использовать следующие операторы:
Ответ:
 (1) "i++;"
 
 (2) "j++;"
 
 (3) "k++;"
 
Номер 3
Данная программа:public class Arr3 {
public static void main(String[] args){
int a[] = { 1, 2, 4, 8,16,32,64,128};
int b[] = {10,12,14,16,18,20,22, 24};
int c[] = { 9,12,13,16,17,20,21, 24};
int i = 0, j = 0, k = 0;
while (true) {
if (a[i] < b[j]) {
i++; continue;
}
if (b[j] < c[k]) {
j++; continue;
}
if (c[k] < a[i]) {
k++; continue;
}
Xterm.println("Минимальное общее число=" + a[i]);
return;
}
}
}реализует алгоритм нахождения минимальное число, содержащееся в каждом из трех упорядоченных:
Ответ:
 (1) по возрастанию массивов целых чисел 
 (2) по убыванию массивов целых чисел 
 (3) по возрастанию массивов вещественных чисел 
 (4) по убыванию массивов вещественных чисел