игра брюс 2048
Главная / Программирование / Инструменты, алгоритмы и структуры данных / Тест 3

Инструменты, алгоритмы и структуры данных - тест 3

Упражнение 1:
Номер 1
Для поддержки процесса проектирования, как промышленных изделий, так и программных продуктов, создается специальный инструментарий - мощные программные системы. Какой инструментарий в первую очередь следует выбрать программисту, создающему прикладное ПО на языке Eiffel?

Ответ:

 (1) CADCAM 

 (2) VisualStudio 

 (3) EiffelStudio 

 (4) CASE 


Номер 2
Для поддержки процесса проектирования, как промышленных изделий, так и программных продуктов, создается специальный инструментарий - мощные программные системы. Какой инструментарий в первую очередь следует выбрать программисту, создающему прикладное ПО на языке C#?

Ответ:

 (1) CADCAM 

 (2) VisualStudio 

 (3) EiffelStudio 

 (4) CASE 


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

Ответ:

 (1) CADCAM 

 (2) VisualStudio 

 (3) EiffelStudio 

 (4) CASE 


Упражнение 2:
Номер 1
За 55 лет, прошедших с момента появления первого языка программирования, создано большое число языков, точного числа которых никто не знает. Языки программирования могут отличаться по многим критериям. Укажите критерий, который не применяется при сравнении языков программирования?

Ответ:

 (1) область применения - общецелевой или проблемно-ориентированный язык 

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

 (3) энергоемкость - уровень потребляемой энергии 

 (4) учет жизненного цикла - возможность использования на этапах спецификации проекта, проектирования и реализации 


Номер 2
За 55 лет, прошедших с момента появления первого языка программирования, создано большое число языков, точного числа которых никто не знает. Языки программирования могут отличаться по многим критериям. Укажите критерии, которые применяются при сравнении языков программирования?

Ответ:

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

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

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

 (4) верифицируемость - ориентация на обнаружение ошибок на этапе трансляции или на этапе выполнения 


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

Ответ:

 (1) С 

 (2) C# 

 (3) Eiffel 

 (4) LISP 

 (5) Java 

 (6) Prolog 

 (7) Assembler 


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

Ответ:

 (1) основан на использовании понятия "состояние" 

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

 (3) декларативный (аппликативный) стиль программ 

 (4) императивный стиль программ 

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


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

Ответ:

 (1) являются строго функциональными языками 

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

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

 (4) современные ОО языки в минимальной степени используют свойства функциональных языков 

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


Номер 3
Укажите свойства, характерные для функционального стиля программирования?

Ответ:

 (1) стиль основан на использовании понятия "состояние" 

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

 (3) декларативный (аппликативный) стиль программ 

 (4) императивный стиль программ 

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


Упражнение 4:
Номер 1
Какие утверждения, подтверждаемые примером обращения списка, справедливы для современного функционального языка программирования Haskell?

Ответ:

 (1) основной структурой данных является список, как в языке LISP 

 (2) вызовы функции позволяют не использовать оператор присваивания 

 (3) рекурсивные вызовы позволяют не использовать оператор цикла 

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


Номер 2
Историю программирования и людей, делающих эту историю, следует знать. Укажите авторов первого объектно-ориентированного языка Симула?

Ответ:

 (1) Джон Бэкус 

 (2) Фил Вадлер 

 (3) Уле Дал 

 (4) Кристин Нигард 

 (5) Алан Кей 


Номер 3
Какие языки относятся к ОО языкам?

Ответ:

 (1) Симула 

 (2) С 

 (3) С++ 

 (4) LISP 

 (5) Eiffel 

 (6) Haskell 

 (7) C# 

 (8) Java 


Упражнение 5:
Номер 1
Сравнивая компиляцию и интерпретацию программы, укажите, какие свойства характерны для процесса компиляции:

Ответ:

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

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

 (3) возможна глобальная оптимизация выполняемой программы 

 (4) эффективная скорость выполнения 

 (5) возможно внесение изменений с практически мгновенной реакцией на эти изменения 

 (6) эффективная скорость отладки 


Номер 2
Сравнивая компиляцию и интерпретацию программы, укажите, какие свойства характерны для процесса интерпретации:

Ответ:

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

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

 (3) возможна глобальная оптимизация выполняемой программы 

 (4) эффективная скорость выполнения 

 (5) возможно внесение изменений с практически мгновенной реакцией на эти изменения 

 (6) эффективная скорость отладки 


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

Ответ:

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

 (2) когда строится интерпретатор, то он не содержит элементов компиляции 

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

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

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


Упражнение 6:
Номер 1
Какие утверждения справедливы для JIT(Just In Time) - компилятора?

Ответ:

 (1) JIT-компилятор - это компилятор с языка JIT в код целевой машины 

 (2) JIT-компилятор - это компилятор с языка Java в код целевой машины 

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

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


Номер 2
Никлас Вирт впервые применил двухэтапную компиляцию при построении транслятора с языка Паскаль, транслируя код программы на Паскале в P-код, который затем транслировался в машинный код для компьютеров с разной архитектурой. Эта схема получила второе рождение с появлением языка Java. Какие утверждения справедливы для виртуальной машины Java и байт-кода?

Ответ:

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

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

 (3) байт-код - это код виртуальной машины Java 

 (4) байт-код - это универсальный код любой виртуальной машины 


Номер 3
Какие преимущества дает схема двухэтапной компиляции?

Ответ:

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

 (2) два компилятора строить проще, чем один 

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

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

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

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


Упражнение 7:
Номер 1
Укажите, на каких этапах работы компилятора идет работа с абстрактным или конкретным синтаксическим деревом?

Ответ:

 (1) лексический анализ 

 (2) синтаксический анализ 

 (3) проверка правильности 

 (4) семантический анализ 

 (5) генерация кода 


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

Ответ:

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

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

 (3) в результате работы парсера строится АСТ - абстрактное синтаксическое дерево 

 (4) лексер распознает идентификаторы 

 (5) идентификаторы распознает парсер 

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


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

Ответ:

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

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

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

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


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

Ответ:

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

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

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

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

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

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


Номер 2
Скомпонованной, загруженной на выполнение программе требуется инструментальная поддержка и в период выполнения. Поэтому над операционной системой создается специальная надстройка, называемая исполняемой средой или системой времени выполнения (runtime system). Какие функции выполняет эта система?

Ответ:

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

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

 (3) выполняет оптимизацию кода 

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


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

Ответ:

 (1) задавать точки останова 

 (2) пошаговое выполнение программ 

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

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

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

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




Главная / Программирование / Инструменты, алгоритмы и структуры данных / Тест 3