игра брюс 2048
Главная / Программирование / Основы программирования / Тест 8

Основы программирования - тест 8

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

Ответ:

 (1) сократить длину программы 

 (2) сократить время разработки 

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

 (4) сократить стоимость разработки 


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

Ответ:

 (1) последовательность 

 (2) выбор 

 (3) цикл 

 (4) подпрограмма (процедура или функция) 


Номер 3
Укажите подходы, применяемые при выделении подзадач в большой задаче:

Ответ:

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

 (2) когда программист приступает к решению большой проблемы, то представить ее решение во всех деталях может быть невозможно по причине сложности проблемы. Выход состоит в том, чтобы выделить более простые подзадачи. Процесс разбиения может продолжаться пока подзадачи не станут достаточно простыми. Такой подход называется проектированием "сверху – вниз" 

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

 (4) когда программист приступает к решению большой проблемы, то он может составить список подзадач, которые требуется решить, и приступить к решению задач из списка, начиная с конца списка. Такой подход называется проектированием "справа – налево" 


Упражнение 2:
Номер 1
Какие утверждения справедливы для компонентов класса в языке Eiffel?

Ответ:

 (1) для всех компонентов используется единый термин - feature 

 (2) компонент может представлять команду или запрос 

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

 (4) запрос всегда реализуется как атрибут – объект некоторого класса 

 (5) запрос может быть функцией 

 (6) запрос может быть атрибутом – объектом некоторого класса 


Номер 2
Какое утверждение не является справедливым для метода класса?

Ответ:

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

 (2) метод класса может быть реализован в форме функции 

 (3) метод имеет объявление, задаваемое в тексте класса в разделе feature 

 (4) метод имеет интерфейс, задающий ту часть описания метода, которая необходима клиентам для работы с методом 

 (5) если задан интерфейс метода, то объявление метода можно не задавать 

 (6) интерфейс метода задается в контрактном облике класса 


Номер 3
Какие утверждения справедливы относительно понятий "объявление метода" и "интерфейс метода"?

Ответ:

 (1) объявление метода задает реализацию 

 (2) интерфейс метода задает реализацию 

 (3) объявление метода однозначно определяет интерфейс 

 (4) интерфейс метода однозначно определяет объявление метода 

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


Упражнение 3:
Номер 1
Какие части объявления метода задают контракт метода?

Ответ:

 (1) заголовок метода 

 (2) заголовочный комментарий 

 (3) предложение require, задающее предусловие 

 (4) предложение ensure, задающее постусловие 

 (5) тело метода 


Номер 2
Какая не влияющая на выполнение часть объявления метода является обязательной согласно правилам стиля программирования?

Ответ:

 (1) заголовок метода 

 (2) заголовочный комментарий 

 (3) предложение require, задающее предусловие 

 (4) предложение ensure, задающее постусловие 

 (5) тело метода 


Номер 3
Какие части объявления метода являются синтаксически обязательными?

Ответ:

 (1) заголовок метода 

 (2) заголовочный комментарий 

 (3) предложение require, задающее предусловие 

 (4) предложение ensure, задающее постусловие 

 (5) тело метода 


Упражнение 4:
Номер 1
Какие утверждения справедливы для понятия "сигнатура метода"?

Ответ:

 (1) сигнатура метода однозначно определяется заголовком метода 

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

 (3) изменение имен формальных аргументов изменяет сигнатуру метода 

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

 (5) у всех методов, не имеющих аргументов, одна и та же сигнатура 


Номер 2
Чтобы некоторый метод M, объявленный в классе C, начал работать, он должен быть вызван. Укажите некорректное высказывание, связанное с вызовом метода:

Ответ:

 (1) вызов может иметь форму квалифицированного вызова x.M(...) или неквалифицированного вызова M(…) 

 (2) если объект, задающий цель (x или Current), принадлежит классу С, то будет вызываться метод M из класса C 

 (3) метод, в котором содержится вызов, называется вызывающим методом – вызывателем M 

 (4) если в классе A есть метод, являющийся вызывателем метода M из класса C, то класс A является клиентом класса C 

 (5) класс не может быть своим собственным клиентом 


Номер 3
Метод класса может иметь аргументы. Аргументы, указанные при объявлении метода называются формальными. При вызове метода задаются фактические аргументы. Какие утверждения корректны относительно формальных и фактических аргументов и их соответствия?

Ответ:

 (1) формальный аргумент это имя с указанием типа 

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

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

 (4) число формальных аргументов может не совпадать с числом фактических аргументов 


Упражнение 5:
Номер 1
Что означает и в каких целях выполняется "скрытие информации", применяемое при разработке программной системы?

Ответ:

 (1) скрытие информации – это вредное явление, когда программисты скрывают друг от друга информацию о программном коде созданных ими методов 

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

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

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


Номер 2
Укажите, что из метода отображается в контрактном облике?

Ответ:

 (1) сигнатура метода 

 (2) тело метода 

 (3) заголовочный комментарий 

 (4) контракт метода 


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

Ответ:

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

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

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

 (4) изменение реализации метода класса всегда приводит к изменению интерфейса метода 


Упражнение 6:
Номер 1
Какое высказывание является некорректным для процедур?

Ответ:

 (1) процедура – это частный случай метода класса 

 (2) процедура – это метод, реализующий команду и, следовательно, изменяющий состояние 

 (3) вызов процедуры – это оператор 

 (4) вызов процедуры возможен в выражениях 

 (5) процедура может иметь аргументы 

 (6) процедура может не иметь аргументов 


Номер 2
Какое высказывание является некорректным для функций?

Ответ:

 (1) функция – это частный случай метода класса 

 (2) функция – это метод, реализующий запрос и, следовательно, возвращает результат, не изменяя состояние 

 (3) вызов функции – это оператор 

 (4) функция вызывается в выражениях 

 (5) функция может иметь аргументы 

 (6) функция может не иметь аргументов 


Номер 3
Метод клиента, вызывающий метод М, возможно должен быть перекомпилирован, если в методе М изменения внесены только в:

Ответ:

 (1) сигнатуру 

 (2) предусловие 

 (3) постусловие 

 (4) реализацию – тело метода 


Упражнение 7:
Номер 1
Какие утверждения корректны о завершении программ?

Ответ:

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

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

 (3) вариант цикла – это механизм, позволяющий доказывать завершаемость 

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


Номер 2
Какие утверждения являются корректными по отношению к понятию "абстракция":

Ответ:

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

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

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

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

 (5) абстрактный класс – это класс, не являющийся моделью понятия физического мира 


Номер 3
Какое утверждение является некорректным по отношению к проектированию программы?

Ответ:

 (1) когда в клиентском классе появляется вызов метода, а сам метод еще не реализован, то это соответствует разработке "сверху – вниз" 

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

 (3) при разработке программных систем применяются оба подхода - "сверху – вниз" и "снизу - вверх" 

 (4) при разработке программных систем если применятся подход - "сверху – вниз", то поход "снизу - вверх" неприменим. Справедливо и обратное 


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

Ответ:

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

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

 (3) предусловие и постусловие не входят в интерфейс метода 

 (4) в подходе "снизу – вверх" уже созданный метод может повторно использоваться в разных программных системах 


Номер 2
Какое утверждение является некорректным?

Ответ:

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

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

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

 (4) методы не поддерживают функциональную абстракцию 


Номер 3
Какие утверждения являются корректными?

Ответ:

 (1) в Eiffel метод является компонентом класса (feature

 (2) в Eiffel методы не могут иметь аргументов 

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

 (4) имя метода, его сигнатура и контракт определяют интерфейс метода, доступный авторам клиентских модулей 




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