Главная / Программирование /
Основы программирования на C# / Тест 10
Основы программирования на C# - тест 10
Упражнение 1:
Номер 1
Какие программы корректны по отношению к своим спецификациям?
Ответ:
 (1) {n=5}int fact(int n){int f=0; for (int i=0; i< n; i++) f*=i; return(f);}{result = n!}
 
 (2) {n=5}int fact(int n){return(120);}{result = n!}
 
 (3) {false}int fact(int n){int f=0; for (int i=0; i<n; i++) f*=i; return(f);}{result = n!}
 
 (4) {(n целое) & (n>0)}int fact(int n){int f=1; for (int i=2; i<n+1; i++) f*=i; return(f);}{result = n!}
 
Номер 2
Для программы, вычисляющей сумму первых n
элементов массива: S=A[0]; k=0; while(k !=(n-1)) { k++; S+=A[k];}
инвариантом цикла являются
Ответ:
 
(1)  
 
(2)  
 
(3)  
 (4) k >= 0
 
 (5) S= A[k]
 
Номер 3
Для программы, вычисляющей сумму первых n
элементов массива S=A[0]; k=0; while(k !=(n-1)) { k++; S+=A[k];}
подходящими инвариантами цикла являются
Ответ:
 
(1)  
 
(2)  
 
(3)  
 (4) S= A[k]
 
Упражнение 2:
Номер 1
Отметьте истинное высказывание:
Ответ:
 (1) в рекурсивной процедуре должна присутствовать нерекурсивная ветвь 
 (2) многопроцессорный современный компьютер решит задачу "Ханойские башни" в течение суток 
 (3) квадратичные методы сортировки, требующие O(n2) операций всегда работают медленнее, чем сортировки с порядком операций O(n*log(n)) 
 (4) каждый цикл имеет только один инвариант 
Номер 2
Отметьте истинное высказывание:
Ответ:
 (1) незавершающийся метод тотально корректен 
 (2) рекурсивным называется метод, в теле которого содержится вызов другого метода 
 (3) цикл имеет сколь угодно много инвариантов 
Номер 3
Отметьте истинное высказывание:
Ответ:
 (1) если предусловие равно true
, то метод корректен для любого постусловия 
 (2) если предусловие равно false
, то метод корректен для любого постусловия 
 (3) рекурсивный вариант метода всегда следует заменять нерекурсивным аналогом 
 (4) нерекурсивный вариант метода всегда предпочтительнее своего рекурсивного аналога 
Упражнение 3:
Номер 2
Постусловие метода
Ответ:
 (1) может иметь значение true
 
 (2) может иметь значение false
 
 (3) представляет логическое выражение, связывающее входные и выходные аргументы, которое должно быть истинным в момент завершения метода 
 (4) если на некотором входе в момент завершения метода постусловие не выполняется, то это всегда говорит об ошибке в работе метода 
 (5) метод корректен, если для всех входов с истинным предусловием гарантируется истинность постусловия на выходе 
Номер 3
Предусловие метода:
Ответ:
 (1) может иметь значение true
 
 (2) может иметь значение false
 
 (3) представляет логическое выражение, связывающее входные и выходные аргументы, которое должно быть истинным до начала выполнения метода 
 (4) невыполнение предусловия до начала выполнения метода всегда говорит об ошибке в работе метода 
Упражнение 4:
Номер 2
Методы P
и Q
называются взаимно рекурсивными:
Ответ:
 (1) если метод P
вызывает метод Q
 
 (2) если метод Q
вызывает метод P
 
 (3) если метод P
вызывает метод Q
, а метод Q
вызывает метод P
 
Номер 3
Каждое выполнение тела цикла:
Ответ:
 (1) сохраняет инвариант цикла 
 (2) сохраняет вариант цикла 
 (3) сохраняет предусловие цикла 
 (4) сохраняет постусловие цикла 
Упражнение 5:
Номер 1
Правда ли, что:
Ответ:
 (1) корректность программы можно определить, только по отношению к ее спецификациям 
 (2) рекурсивной называется программа с циклами 
 (3) предусловие метода накладывает ограничение на входные данные 
Номер 2
Правда ли, что:
Ответ:
 (1) для того чтобы рекурсия не приводила к зацикливанию, в тело нормального рекурсивного метода всегда встраивается оператор выбора, одна из ветвей которого не содержит рекурсивных вызовов 
 (2) рекурсивную программу можно заменить программой с циклами 
 (3) предусловие и постусловие метода должны проверяться в начале и после завершения метода 
Номер 3
Правда ли, что:
Ответ:
 (1) задание предусловий, постусловий, вариантов и инвариантов циклов является такой же частью процесса разработки корректного метода, как и написание самого кода 
 (2) вариант цикла является выражением булевского типа 
 (3) из истинности инварианта цикла и условия завершения цикла всегда следует истинность постусловия цикла 
 (4) из истинности инварианта цикла всегда следует истинность предусловия цикла