И.Г. Головин - Варианты письменного экзамена (1129118)
Текст из файла
Московский государственныйуниверситет им. М.В. ЛомоносоваФакультет вычислительной математики и кибернетикиИ.Г. ГоловинКурс «Языки программирования»Варианты письменного экзаменаМетодическое пособиеМосква2009УДК 519.68ББКПечатается по решению Редакционно-издательского совета факультетавычислительной математики и кибернетикиМГУ им.
М. В. ЛомоносоваРецензенты:проф., д.ф.-м.н. Машечкин И. В.доцент, к.ф.-м.н. Терехин А.Н.И.Г.ГоловинКурс «Языки программирования». Варианты письменного экзамена:Методическое пособие для студентов III курса. - М.: Издательский отделфакультета ВМиК МГУ им. М.В.Ломоносова (лицензия ИД № 05899 от 24.09.2001),2009 – 32 с.ISBN 978-5-89407-407-8Методическое пособие содержит варианты письменных экзаменов по курсулекций «Языки программирования», читаемого для студентов 3 курса 3 потокафакультета ВМК МГУ.
Цель письменного экзамена по курсу – на основеунифицированного набора задач по различным разделам курса и общих критериевобъективно оценить знания студентов, уровень их подготовки. Вариантывключают задачи различного уровня сложности: наряду с простейшими задачамии вопросами по конкретной теме, имеются задачи, предполагающие знаниематериала нескольких тем и умение владеть этим материалом. В пособииприведены ответы, а также продемонстрированы авторские решения некоторыхзадач, дана программа курса и рекомендуемая литература.Пособие рекомендуется студентам при подготовке к письменному экзамену.УДК 519.68ББКISBN 978-5-89407-407-8© Издательский отдел факультета вычислительнойматематики и кибернетики МГУ им. М.
В. Ломоносова,2009© И.Г. Головин, 20092I. Программа курса «Языки программирования»1. ВведениеОпределение языков программирования (ЯП), ЯП и основныепарадигмы программирования. Исторический очерк развития ЯП. Основныепозиции при рассмотрении ЯП. Схема рассмотрения ЯП: базис, средстваразвития и средства защиты.Основные понятия языков программирования: данные, операции исвязывание.Понятие о виртуальной машине языка.2. Базисные типы данных в языках программирования: простые исоставные типы данных, операции над нимиПростые типы данных.Арифметические типы данных: целые, плавающие, фиксированные.Проблемы представления чисел и способы их решения в ЯП.Символьные и логические типы данных.Порядковые типы: диапазоны и перечисления.
Особенностиреализации перечислений в современных ЯП.Ссылки и указатели. Управление памятью. Автоматическая сборкамусора. Объектно-референциальная модель в современных ЯП.Составные типы данных.Массивы и их особенности в современных ЯП.Записи. Недостатки системы типов в традиционных ЯП. Объединениякак средство преодоления этих недостатков. Проблемы, связанные собъединениями.Ассоциативные массивы и записи.3. Операторный базис языков программирования. Управлениепоследовательностью вычисленийОператоры присваивания.Понятиеоструктурномпрограммировании.Разновидностиуправляющих конструкций в современных языках программирования.Условные операторы и многовариантные развилки.
Циклы. Операторперехода, связанные с им проблемы и способы их решения в современныхЯП.Особенности реализации циклов-итераторов в современных ЯП.34. Процедурные абстракцииПодпрограммы и сопрограммы. Операторы возврата и возобновления.Процедуры и функции в современных ЯП.Передача параметров: семантика и способы реализации.Статический полиморфизм и перегрузка имен подпрограмм.Подпрограммныетипыданных.Проблемы,связанныесподпрограммными типами данных и способы их решения в современных ЯП.5.
Определение новых типов данных. Логические модули. Классы.Концепцияуникальноститипавтрадиционныхязыкахпрограммирования и понятие строгой типизации.Конструкции объявления новых типов данных. Тип данных какмножество значений и множество операций. Походы к определению новыхтипов данных: модули и классы.Понятие логического модуля. Использование модулей для определенияновых типов данных. Особенности понятия модуля в современных ЯП.Импорт и экспорт имен. Видимость имен: непосредственная ипотенциальная. Управление видимостью. Области видимости и пространстваимен.Модульность и технология программирования: проектирование«сверху-вниз» и «снизу-вверх».Понятие класса.
Класс как тип данных. Члены класса: функции,данные. Статические и нестатические члены. Члены - вложенные классы.Статические и нестатические классы. Классы и области видимости.Понятие специальных функций-членов. Проблема инициализацииобъектов и способы ее решения. Конструкторы, деструкторы, операторыusing и try-finally.Преобразование типов и классы. Явные и неявные преобразования.Управление преобразованиями в современных ЯП: проблемы и способы ихрешения.Классы и перегрузка имен. Перегрузка встроенных знаков операций.Итераторы и индексаторы.Классы и стандартные библиотеки.
Встроенные классы стандартнойбиблиотеки.46. Инкапсуляция и абстрактные типы данных.Понятие инкапсуляции. Единицы и атомы защиты. Понятиеабстрактного типа данных (АТД) и его достоинства.Инкапсуляция и логические модули. Управление видимостью.Реализация АТД в модульных языках программирования (Ада, Оберон,Модула).Инкапсуляция и классы. Управление видимостью и управлениедоступом. Пространства имен и инкапсуляция. Реализация АТД с помощьюпонятия класса.Принцип разделения определения, реализации и использования(РОРИ). Эволюция принципа РОРИ в современных ЯП.7.
Модульность и раздельная трансляцияВиды трансляции. Физические модули. Программная и трансляционнаябиблиотеки. Раздельная трансляция: зависимая и независимая. Недостаткинезависимой трансляции и способы их преодоления.Особенности зависимой трансляции в современных ЯП. Одностороняяи двустороняя связь модулей и раздельная трансляция.Раздельная трансляция и пространства имен.8. Исключительные ситуации и обработка ошибокПонятие исключительной ситуации (ИС) и его эволюция. ИС и ошибкив программах.
Четыре аспекта рассмотрения ИС: определение,возникновение, распространение и обработка. Воплощение этих аспектов всовременных ЯП.Два подхода к обработке ИС: семантика возобновления и семантиказавершения. Их сравнение. Семантика завершения и современные ЯП.Свертка стека. Оператор try-finally.Дополнительные особенности ИС: спецификация ИС, проверяемые инепроверяемые ИС.9. Наследование типов и классовКонцепция уникальности типов в традиционных языках и строгаятипизация в объектно-ориентированных языках.
Понятие единичногонаследования. Единичное наследование в современных ЯП. Наследование имодель представления объекта в памяти. Преобразование из производноготипа в базовый. Иерархии типов, статические и динамические типы вобъектно-ориентированных ЯП.5Наследование и области видимости имен. Замещение, перегрузка искрытие имен при наследовании. Наследование и инкапсуляция. Управлениевидимостью и доступом при наследовании.Запрещение наследования для классов и методов.Наследование и специальные функции. Понятие о множественномнаследовании.10.
Динамический полиморфизмСтатическое и динамическое связывание методов. Динамический типданных и динамическое связывание. Замещение функций и динамическоесвязывание. Особенности динамического связывания в современных ЯП.Достоинстваинедостаткидинамическогосвязывания.Снятиединамическогосвязывания.Механизмреализациидинамическогосвязывания на примере языка Си++. Таблица виртуальных методов.Понятие о мультиметодах.11. Абстрактные классы и интерфейсыПонятие абстрактного класса (АК).
Необходимость понятия АК припроектировании иерархий классов. Воплощение концепции АК всовременных ЯП.Абстрактные классы и интерфейсы. Интерфейс как языковаяконструкция. Связь интерфейсов и других языковых конструкций(итераторов, сохраняемых объектов и т.д.). Интерфейсы и иерархии классов.Множественное наследование интерфейсов. Реализация интерфейсов и ееособенности современных ЯП. Явная и неявная реализация интерфейсов.12.
Множественное наследованиеМножественное наследование в языке Си++. Ромбовидноенаследование и его примеры. Проблемы множественного наследования:конфликт имен, реализация динамического связывания. Особенностиреализации множественного наследования при наследовании интерфейсов.13.
Динамическая идентификация типаПонятие о динамической идентификации типа (ДИТ). Достоинства инедостатки использования ДИТ. Особенности ДИТ в современных языкахпрограммирования.614. Понятие о родовых объектах. Обобщенное программированиеПонятие о статической параметризации и родовых объектах.Достоинства статической параметризации. Статическая параметризация иООП.Родовые модули и подпрограммы в языке Ада.Механизм шаблонов в языке Си++. Шаблоны-классы и шаблоныфункции. Параметры шаблонов. Вывод параметров шаблонов. Генерациякода по шаблонам.
Частичная специализация шаблонов. Обобщенноепрограммирование на языке Си++: функторы, свойства, стратегии, шаблонывыражений.Сравнение механизма шаблонов Си++ и родовых объектов Ады.Особенности родовых объектов в языках С# и Java.7II.
Варианты экзаменационных работ2.1. Вариант 20031. Что будет напечатано в результате работы следующей программы наязыке Си++?#include <iostream.h>class A {public:virtual void f() {cout << "A::f\n"; g();}virtual void g() { cout << "A::g\n"; }void h() { cout << "A::h\n"; }};class B : public A {public:void f() { cout << "B::f\n"; }void g() { cout << "B::g\n"; h(); }void h() { cout << "B::h\n"; }};class C : public B {public:void f() { cout << "C::f\n"; }void g() { cout << "C::g\n"; }void h() { cout << "C::h\n"; f(); }};void P(A*pa,B*pb) {pa->f(); pa->g(); pa->h();pb->f(); pb->g(); pb->h();delete pa; delete pb;}int main() {P(new B, new B);cout<<"------------------------------\n";P(new C, new C); return 0;}2. В каких из перечисленных ниже языков есть оператор перехода «gotoметка»?Ада 83, Ада 95, Оберон, Оберон-2, Модула-2, Java, Delphi, C#3.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.