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

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

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

Ответ:

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

 (2) синтаксически псевдокод – это специальный вид комментария 

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

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


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

Ответ:

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

 (2) программа может быть скомпилирована, но не может быть выполнена 

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

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

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


Номер 3
Базисное правило разработчика программы говорит:

Ответ:

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

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

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

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


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

Ответ:

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

 (2) сущность всегда связана с некоторым объектом 

 (3) сущность в момент ее объявления с объектом еще не связана. Сущность представляет объект только после ее присоединения к объекту 

 (4) если сущность связывается с объектом, то эта связь нерасторжима 


Номер 2
В тексте класса LINE_BUILDING объявлен атрибут fancy_line класса LINE. Какие утверждения справедливы для fancy_line?

Ответ:

 (1) это сущность 

 (2) в момент объявления сущности fancy_line создается объект, задающий линию метро (объект класса LINE), и сущность связывается с этим объектом 

 (3) значением сущности fancy_line является ссылка 

 (4) в момент объявления fancy_line ее ссылка получает значение void, - это означает, что сущность не присоединена к объекту 

 (5) в процессе выполнения fancy_line может быть присоединена к объекту класса LINE и ее ссылка будет указывать на этот объект 


Номер 3
В тексте класса LINE_BUILDING дано объявление fancy_line: LINE, задающее воображаемую линию метро. Предположим, что задано еще одно объявление - real_line: LINE. Какие утверждения справедливы для этих двух сущностей?

Ответ:

 (1) нельзя объявлять две сущности одного и того же типа (класса) 

 (2) в момент объявления эти сущности связываются с одним и тем же объектом 

 (3) в момент объявления эти сущности не связаны ни с каким объектом 

 (4) в момент выполнения эти сущности могут быть связаны с одним и тем же объектом 

 (5) в момент выполнения эти сущности должны быть связаны с разными объектами 

 (6) в момент выполнения эти сущности могут быть связаны с разными объектами 


Упражнение 3:
Номер 1
Рассмотрим вызов компонента x.f. Какие утверждения справедливы для этого вызова?

Ответ:

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

 (2) возможен Void-вызов, когда сущность x не присоединена к объекту 

 (3) при вызове x.f вызывается компонент f, принадлежащий классу, определяемому объектом, присоединенным к цели вызова x. Компонент f применяется к данным этого объекта 

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

 (5) при Void-вызове возникнет ошибка 


Номер 2
Какие утверждения являются корректными для связанных понятий – вызова, сущности, объекта, ссылки, void?

Ответ:

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

 (2) при объявлении сущности всегда указывается ее значение 

 (3) при объявлении сущности, значением которой есть ссылка, эта ссылка получает значение void 

 (4) void-вызовом называется вызов x.f, когда сущность x не присоединена ни к какому объекту и ее ссылка имеет значение void 


Номер 3
Какие утверждения являются корректными для связанных понятий – вызова, сущности, объекта, ссылки, void ?

Ответ:

 (1) Void-вызовом называется вызов x.f, вызывающий объект Void 

 (2) Void-вызовом называется вызов x.f, в котором цель вызова x имеет значение void и не присоединена ни к какому объекту 

 (3) если сущность присоединена к некоторому объекту, то ее ссылка не может быть значением void 

 (4) сущность может быть присоединена или не присоединена к объекту 

 (5) тип объекта, к которому может быть присоединена сущность, определяется типом сущности, заданным при ее объявлении 


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

Ответ:

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

 (2) если у элемента списка атрибут Next получает значение void, то это приводит к ошибке, аналогично тому, как это происходит при Void-вызовах 

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

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

 (5) минимальное число элементов в кольцевом списке равно 3 

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


Номер 2
Укажите высказывания корректные по отношению к понятию "процедура создания"?

Ответ:

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

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

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

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


Номер 3
Какие утверждения корректно определяют задание процедур создания:

Ответ:

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

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

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

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


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

Ответ:

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

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

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

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

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

 (6) если в классе С объявлена одна процедура создания, например с именем my_make_create, то создавать объекты можно, вызывая как процедуру my_make_create, так и процедуру создания по умолчанию, у которой есть имя default_create 


Номер 2
В классе POINT в предложении create заданы имена двух процедур создания – make_cartesian и make_polar, каждая из которых имеет два аргумента, позволяющие создать точку, задав декартовы или полярные ее координаты. Пусть объявлены три точки – point_A, point_B, point_C: POINT. Какие операторы, создающие точки, являются синтаксически корректными?

Ответ:

 (1) create point_A. make_cartesian(5, 10) 

 (2) create point_C. make_cartesian 

 (3) create point_B. make_polar(5, 10) 

 (4) create point_A(5, 10) 

 (5) create point_B.default_create(5, 10) 

 (6) create point_A 


Номер 3
Если у класса есть хотя бы один нетривиальный инвариант, то класс обязан задать нетривиальную процедуру создания класса и не может использовать процедуру создания по умолчанию. Нетривиальность в данном контексте означает, что поля создаваемого объекта должны быть инициализированы значениями, отличными от значений, задаваемых по умолчанию. Укажите корректное объяснение этого требования?

Ответ:

 (1) если инвариант нетривиален, то и все в классе должно быть нетривиально 

 (2) это чисто синтаксическое ограничение языка Eiffel, содержательного смысла в нем нет 

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

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


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

Ответ:

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

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

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

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

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


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

Ответ:

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

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

 (3) непосредственно после выполнения процедуры создания, вызванной целью x, имеет место x /= Void  

 (4) непосредственно после выполнения процедуры создания выполняется постусловие процедуры создания, если оно задано 

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


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

Ответ:

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

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

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

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


Упражнение 7:
Номер 1
Укажите корректное определение квалифицированного вызова:

Ответ:

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

 (2) вызов x.f называется квалифицированным, если цель вызова x является квалифицированным объектом 

 (3) вызов называется квалифицированным, если он имеет форму x.f с явным указанием целевого объекта x 

 (4) вызов называется квалифицированным, если цель вызова явно не указана и ею является текущий объект 


Номер 2
Укажите корректное определение неквалифицированного вызова:

Ответ:

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

 (2) вызов x.f называется неквалифицированным, если цель вызова x является неквалифицированным объектом 

 (3) вызов называется неквалифицированным, если он имеет форму x.f с явным указанием целевого объекта x 

 (4) вызов называется неквалифицированным, если цель вызова явно не указана и ею является текущий объект 


Номер 3
Пусть определен метод Plus, задающий сложение целых. Пусть также определен знак операции +, как псевдоним (alias) метода Plus. Какая форма записи сложения целых является синтаксически некорректной:

Ответ:

 (1) a.Plus(b) 

 (2) a+b+c 

 (3) b+a 

 (4) b.Plus(a) 

 (5) a.Plus(b)Plus(c) 

 (6) (a.Plus(b)).Plus(c) 


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

Ответ:

 (1) ссылка либо присоединена к объекту, либо имеет значение void 

 (2) синтаксически оператор создания имеет вид create x, или, используя процедуру создания Q, специфицированную в классе, - create x.Q(arguments) 

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

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

 (5) вызов может быть квалифицированным, примененный к явно указанной цели, или неквалифицированный, примененный к текущему объекту 


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

Ответ:

 (1) вызов x.f(…) будет выполняться должным образом, только если x присоединен к объекту 

 (2) если ссылка получила значение void, то изменить это значение уже невозможно 

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

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

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


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

Ответ:

 (1) текущий объект Current может иметь значение Void 

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

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

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




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