игра брюс 2048
Главная / Программирование / Объектное программирование в классах на C# 3.0 / Тест 10

Объектное программирование в классах на C# 3.0 - тест 10

Упражнение 1:
Номер 1
 Укажите высказывания, истинные для понятия корректности программы:

Ответ:

 (1) корректная программа - это программа, работающая в точном соответствии со своими спецификациями 

 (2) знание спецификаций программы не обязательно для доказательства корректности программы 

 (3) существуют программы, корректные по отношению ко всем спецификациям 

 (4) каждая работающая программа корректна по отношению к некоторой спецификации 


Номер 2
 Корректность программы  и ее тестирование - это тесно связанные понятия. Укажите высказывания, истинные для связи этих понятий:

Ответ:

 (1) тестирование - это процесс, направленный на достижение корректности программы 

 (2) можно построить универсальную систему тестов, подходящую для любой программы 

 (3) только зная спецификации программы, можно построить подходящую систему тестов 

 (4) тестирование позволяет доказать, что программа не является корректной 

 (5) тестирование позволяет доказать корректность программы 


Номер 3
 Укажите высказывания, истинные для понятия устойчивости программы:

Ответ:

 (1) устойчивость - это способность программы "разумно " работать в условиях, когда нарушаются спецификации 

 (2) понятие устойчивости может быть строго формализовано 

 (3) обработка исключительных ситуаций - процесс, направленный на достижение устойчивости 


Упражнение 2:
Номер 1
 Одним из эффективных средств, позволяющих программисту справиться со сложностью создаваемой им программной системы, является повторное использование компонентов. Какие высказывания справедливы по отношению к повторному использованию:

Ответ:

 (1) повторное использование готовых и надежных компонентов уменьшает сложность разработки 

 (2) повторное использования компонента предполагает наличие спецификации этого компонента 

 (3) повторное использование компонента возможно лишь при условии, что вся система собирается из готовых компонентов 


Номер 2
 Одним из эффективных средств, позволяющих программисту справиться со сложностью создаваемой им программной системы, является использование механизма наследования. Какие высказывания справедливы по отношению к наследованию:

Ответ:

 (1) наследование позволяет уменьшить общий объем программного кода системы, поскольку классы потомки наследуют код родительского класса без его дублирования 

 (2) наследование позволяет не задавать спецификации для классов потомков 

 (3) динамическое связывание и полиморфизм позволяют автоматически включать объекты классов-потомков в уже существующие схемы работы 


Номер 3
 Одним из эффективных средств, позволяющих программисту справиться со сложностью создаваемой им программной системы, является использование механизма универсальных классов. Какие высказывания справедливы по отношению к универсализации классов:

Ответ:

 (1) универсализация позволяет уменьшить общий объем программного кода системы, поскольку конкретизация типов данных возможна без дублирования программного кода, созданного для универсального класса 

 (2) универсализация позволяет задать общие спецификации, остающихся справедливыми при конкретизации типов данных, заданных формальными параметрами универсального класса 

 (3) универсализация требует задания специфических реализаций методов класса для каждой подстановки фактических типовых параметров класса 


Упражнение 3:
Номер 1
 Пусть P(x,z)  - метод P  с входными аргументами x и выходными z , и пусть P(x,z)  корректен (частично, или условно) по отношению к предусловию Pre(x)  и постусловию Post(x,z) . Какие высказывания истинны в этом случае по отношению к условно корректному методу P :

Ответ:

 (1) на входе x , удовлетворяющем предусловию, условно корректный метод P может, как завершить свою работу, так и зациклиться - оба варианта не противоречат условной корректности метода 

 (2) если на входе x , удовлетворяющем предусловию, условно корректный метод P завершит свою работу, то на выходе гарантируется выполнение постусловия 

 (3) если на входе x , удовлетворяющем предусловию, условно корректный метод P завершит свою работу, то выполнение постусловия на выходе не гарантируется 

 (4) если на входе x , удовлетворяющем предусловию, метод P не завершит свою работу (зациклится), то это означает, что метод не является условно корректным 


Номер 2
 Пусть P(x,z)  - метод P  с входными аргументами x и выходными z , и пусть P(x,z)  корректен (полностью, или тотально) по отношению к предусловию Pre(x)  и постусловию Post(x,z) . Какие высказывания истинны по отношению к тотально корректному методу P :

Ответ:

 (1) на входе x , удовлетворяющем предусловию, тотально корректный метод P может завершить свою работу, а может и зациклиться 

 (2) на входе x , удовлетворяющем предусловию, тотально корректный метод P завершит свою работу, и на выходе гарантируется выполнение постусловия 

 (3) на входе x , удовлетворяющем предусловию, тотально корректный метод P завершит свою работу, но на выходе не гарантируется выполнение постусловия 

 (4) если на входе x , удовлетворяющем предусловию, метод P не завершит свою работу (зациклится), то это означает, что метод не является тотально корректным 


Номер 3
 Пусть P(x,z)  - метод P  с входными аргументами x и выходными z , и пусть P(x,z)  корректен (полностью, или тотально) по отношению к предусловию Pre(x)  и постусловию Post(x,z) . Какие высказывания истинны по отношению к тотально корректному методу P :

Ответ:

 (1) если на входе x , предусловие принимает значение false , то на таком входе тотально корректный метод P может вести себя любым образом, оставаясь корректным 

 (2) программисту наиболее сложно обеспечить корректную работу метода P , когда предусловие метода задается константой true , поскольку требуется обеспечить выполнение постусловия на всех входах 

 (3) программисту наиболее сложно обеспечить корректную работу метода P , когда предусловие метода задается константой false  


Упражнение 4:
Номер 1
 Для доказательства корректности цикла, как правило, используется понятие инварианта цикла. Какие утверждения являются справедливыми для этого понятия:

Ответ:

 (1) инвариантом цикла называется предикат, который принимает значение true после выполнения тела цикла 

 (2) инвариантом цикла называется предикат, из истинности которого перед началом выполнения тела цикла, следует его истинность после выполнения тела цикла 

 (3) инвариантом цикла называется предикат, который принимает значение true после завершения цикла 

 (4) инвариантом цикла называется предикат, из истинности которого перед началом выполнения цикла, следует его истинность после завершения цикла 


Номер 2
 Для доказательства корректности цикла, как правило, используется понятие инварианта цикла. Какие утверждения являются справедливыми для этого понятия:

Ответ:

 (1) у каждого цикла существует только один инвариант цикла 

 (2) у каждого цикла существует множество инвариантов цикла 

 (3) каждое тождественное утверждение является инвариантом любого цикла 

 (4) только некоторые инварианты цикла могут использоваться для доказательства корректности работы цикла 


Номер 3
 Рассмотрим цикл типа While - (while(B) S;) , где B  - предикат, задающий условие цикла, а S  - тело цикла. Только некоторые инварианты цикла, называемые подходящими инвариантами цикла, могут использоваться для доказательства корректности цикла. Какие утверждения являются истинными по отношению к подходящему инварианту Inv :

Ответ:

 (1) предикат Inv становится истинным непосредственно перед выполнением оператора цикла 

 (2) предикат Inv является инвариантом цикла while 

 (3) из истинности предиката Inv следует истинность утверждения, доказывающего корректность выполнения цикла 

 (4) из истинности предиката Inv и условия завершения цикла (Inv & !B) следует истинность утверждения, доказывающего корректность выполнения цикла 


Упражнение 5:
Номер 1
 Какие утверждения являются истинными по отношению к корректности класса:

Ответ:

 (1) для корректности класса необходимо, чтобы все его методы были корректными 

 (2) для корректности класса достаточно, чтобы все его методы были корректными 

 (3) для корректности класса необходимо, чтобы все его методы гарантировали сохранность инвариантов класса по завершении своей работы 


Номер 2
 Укажите истинные высказывания:

Ответ:

 (1) тестирование может доказать некорректность программы 

 (2) тестирование может доказать корректность программы 

 (3) если все тесты прошли успешно, то корректность программы гарантируется 


Упражнение 6:
Номер 1
 Частью доказательного стиля программирования, применяемого в программах на языке C# , является вызов метода Assert  в контрольных точках программы. Какие утверждения справедливы для метода Assert :

Ответ:

 (1) метод Assert является статическим методом двух классов - Debug и Trace  

 (2) вызов метода Assert является причиной появления исключительной ситуации 

 (3) если утверждение при вызове методе Assert получает значение true , то программа продолжает выполняться, и вызов метода в этой ситуации не оказывает влияния на естественный ход выполнения программы 

 (4) если утверждение при вызове методе Assert получает значение false , то выполнение программы приостанавливается, в этом случае появляется окно с сообщением, в котором можно указать, что в контрольной точке нарушается условие, требуемое для доказательства корректности работы программы 


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

Ответ:

 (1) причиной исключительной ситуации может быть некорректно работающее оборудование 

 (2) причиной исключительной ситуации может быть некорректно работающая программа 

 (3) причиной исключительной ситуации может быть некорректно работающее программное окружение - компиляторы, операционная система и другие программные средства, обеспечивающие работу программы 

 (4) причиной исключительной ситуации могут быть некорректные действия пользователя 


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

Ответ:

 (1) в языке C# при возникновении исключительной ситуации выполнение программы приостанавливается и создается объект специального класса, описывающий исключение 

 (2) существует единственный встроенный класс Exception , задающий исключения 

 (3) все классы, описывающие исключения, являются встроенными 

 (4) все классы, описывающие исключения, являются потомками класса Exception 

 (5) можно создавать собственные классы исключений 


Упражнение 7:
Номер 1
 Оператор throw позволяет программно вызвать исключительную ситуацию, тип которой задается оператором throw . Какие высказывания, связанные с этим оператором, являются справедливыми:

Ответ:

 (1) исключения при работе программы могут появляться только при выполнении оператора throw 

 (2) профессиональный программист никогда не включает в свой код оператор throw, приводящий к появлению исключительной ситуации 

 (3) оператор throw является полезным механизмом обеспечения устойчивости программных систем и его появление в программном коде свидетельствует о профессиональном стиле разработки программной системы 


Номер 2
 Согласно первому закону в сложных программах могут возникать ситуации, когда нарушаются спецификации, и программа перестает корректно работать, что приводит к появлению исключительных ситуаций. Исключительные ситуации могут возникать и в корректной программе из-за действий пользователя и других внешних причин, не зависящих от программы. Для поддержания устойчивой работы программной системы в таких ситуациях в языке C#  предусмотрен механизм обработки исключительных ситуаций, основанный на try - catch - finally  блоках. Укажите, какие утверждения справедливы для охраняемых try  -блоков:

Ответ:

 (1) любой блок в теле метода может быть сделан охраняемым 

 (2) в охраняемом блоке исключения не могут возникать 

 (3) если в охраняемом блоке возникло исключение, то оно может быть перехвачено одним из catch - блоков 


Номер 3
 Согласно первому закону в сложных программах могут возникать ситуации, когда нарушаются спецификации, и программа перестает корректно работать, что приводит к появлению исключительных ситуаций. Но исключительные ситуации могут возникать и в корректной программе из-за действий пользователя и других внешних причин, не зависящих от программы. Для поддержания устойчивой работы программной системы в таких ситуациях в языке C#  предусмотрен механизм обработки исключительных ситуаций, основанный на try - catch - finally  блоках. Укажите, какие утверждения справедливы для catch - finally  блоков:

Ответ:

 (1) каждый охраняемый try - блок должен сопровождаться catch или finally блоком 

 (2) у одного try - блока может быть несколько catch - блоков 

 (3) каждый из catch - блоков перехватывает исключение определенного класса 

 (4) если в try -блоке возникло исключение, то оно обязательно будет перехвачено одним из catch - блоков 

 (5) блок finally , сопровождающий try - блок, выполняется только в том случае, если в try - блоке возникло исключение 




Главная / Программирование / Объектное программирование в классах на C# 3.0 / Тест 10