игра брюс 2048
Главная / Программирование / Основы программирования на 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) files 

 (2) files 

 (3) files 

 (4) k >= 0  

 (5) S= A[k]  


Номер 3
Для программы, вычисляющей сумму первых n элементов массива S=A[0]; k=0; while(k !=(n-1)) { k++; S+=A[k];} подходящими инвариантами цикла являются

Ответ:

 (1) files 

 (2) files 

 (3) files 

 (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) из истинности инварианта цикла всегда следует истинность предусловия цикла 




Главная / Программирование / Основы программирования на C# / Тест 10