И.Г. Головин - Варианты письменного экзамена (Методическое пособие)
Описание файла
PDF-файл из архива "И.Г. Головин - Варианты письменного экзамена (Методическое пособие)", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
Московский государственныйуниверситет им. М.В. ЛомоносоваФакультет вычислительной математики и кибернетикиИ.Г. ГоловинКурс «Языки программирования»Варианты письменного экзаменаМетодическое пособиеМосква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. Сравните между собой конструкции "uses" в языке Delphi и "use" вязыке Ада (для чего применяются, сходства, отличия).4. В каких из перечисленных ниже языков длина массива являетсятолько статическим атрибутом? Приведите пример массива с динамическиматрибутом - длиной для какого-либо языка.Ада, Си++, Оберон, Модула-2, Java, C#85. Что означают термины "семантика возобновления" и "семантиказавершения" при обработке исключений? Для каждого способа (семантики)приведите пример языка, где этот способ (семантика) используется.6.
Назовите хотя бы один язык, в котором нельзя передаватьподпрограммы как параметры других подпрограмм.7. В каких классах памяти могут размещаться данные в языкахпрограммирования? В каких классах памяти размещаются объекты классовязыка С#?8. Ниже приведена спецификация родового пакета Stacks на языке Ада.Напишите объявление шаблонного класса на языке Си++, предназначенногодля той же роли, что и этот пакет.GENERICTYPE T IS PRIVATE; SIZE : INTEGER;PACKAGE Stacks ISTYPE Stack IS LIMITED PRIVATE;PROCEDURE Push(S: IN OUT Stack; X : IN T);PROCEDURE Pop(S: IN OUT Stack; X : OUT T);FUNCTION IsEmpty(S : IN Stack) RETURN BOOLEAN;FUNCTION IsFull(S : IN Stack) RETURN BOOLEAN;PRIVATETYPE Stack is RECORDBody : ARRAY (1..SIZE) OF T;Top : INTEGER := 1;END RECORD;END Stacks;92.2. Вариант 20041.