Федеральное агентство по образованию Владивостокский государственный университет экономики и сервиса по специальности

реклама
Федеральное агентство по образованию
Владивостокский государственный университет экономики и сервиса
ПРОГРАММИРОВАНИЕ
НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ
МОДУЛЬ 1
Учебная программа дисциплины
по специальности
230201.65 Информационные системы и технологии
Владивосток
Издательство ВГУЭС
2014
ББК **.**
Учебная программа по дисциплине «Программирование на языке
высокого уровня, модуль 1» составлена в соответствии с требованиями ГОС
ВПО.
Предназначена для студентов по специальности 230201.65
Информационные системы и технологии.
Составитель: Гриняк В.М., доцент, кафедра информационных систем и
прикладной информатики
Утверждена на заседании кафедры ИСПИ от 19.03.2014 г., протокол № 9
Утверждена на заседании Учёного совета института ИИБС от 29.04.2014г.,
протокол № 7
©
Издательство Владивостокского
государственного университета
экономики и сервиса, 2014
ВВЕДЕНИЕ
Умение писать программы, пользуясь наиболее популярными
алгоритмическими языками, является основным показателем квалификации
современного специалиста в области информационных технологий. Поэтому
необходимость изучения языков программирования и соответствующих им
приемов
написания
типовых
программ
очевидна
для
любых
информационных специальностей высшей школы.
Язык
программирования
С++
является
основным
языком
программирования, применяемым в профессиональной среде для создания
исполняемых приложений. Он позволяет реализовать как процедурный, так и
объектно-ориентированный подходы к программированию.
Задачи, которые принято решать процедурным программированием,
характеризуются небольшим объемом команд и не требуют дополнительной
внутренней организации. Деление программы на функции и модули является
основой структурного программирования, как способа организации
программ.
Объектно-ориентированный подход к программированию заключается в
моделировании объектов реального мира, интерпретируемых как
совокупность свойств и поведения. Примерами свойств для людей могут
являться цвет глаз или место работы; для машин – мощность двигателя и
количество дверей. В этом смысле свойства объектов равносильны данным в
программах, они имеют определенное значение, например, красный для
цвета глаз или 4 для количества дверей автомобиля. Поведение – это
некоторое действие объекта в ответ на внешнее воздействие. Поведение
сходно с функциями – функция вызывается, чтобы совершить какое-либо
действие. В процедурных языках программирования данные и функции
принципиально разделены, что затрудняет моделирование ими объектов
реального мира. Основополагающей же идеей объектно-ориентированного
подхода является объединение данных и функций, оперирующих этими
данными, в одно целое, которое и называется объектом.
При разработке программы дисциплины «Программирование на языке
высокого уровня, модуль 1» учитывалось современное состояние развития
языков программирования, соответствующих им интегрированных сред
разработчика и технологии программирования.
ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ
1.1 Цели освоения учебной дисциплины
Целью изучения дисциплины «Программирование на языке высокого
уровня, модуль 1» является теоретическая и практическая подготовка
студентов в области разработки программного обеспечения с использованием
современного
языка
программирования
С++,
используемого
профессиональной средой, поддерживающего объектно-ориентированную
модель программирования. Знания, полученные в результате освоения
дисциплины, помогут при разработке системных программных компонентов
современных информационных и расчетных программ, в проектировании и
реализации системных компонентов операционных систем в такой степени,
чтобы студенты могли самостоятельно выбирать средства реализации,
находить необходимые программные и технологические решения для
практически важных системных и предметно-ориентированных задач.
Основные задачи изучения дисциплины:
- приобретение студентами знаний о сущности процедурного и объектноориентированного подхода в программировании;
- ознакомление с технологиями создания новых типов данных в языке
С++;
- приобретение практических навыков по использованию средств
переопределения операций, обработки исключений.
1.2 Перечень компетенций, приобретаемых
при изучении дисциплины
Дисциплина «Программирование на языке высокого уровня, модуль 1»
относится к дисциплинам по выбору общего математического и
естественнонаучного цикла. Данная дисциплина базируется на компетенциях,
полученных при изучении дисциплины «Информатика».
В результате изучения дисциплины «Программирование на языке
высокого уровня, модуль 1» в течение одного семестра студент должен
приобрести следующие компетенции:
- владеть программированием в средах современных информационных
систем;
- уметь использовать информационные технологии для решения
прикладных задач;
- владеть языками объектно-ориентированного программирования;
- уметь адаптировать возможности языков программирования к
современным условиям.
1.3 Основные виды занятий и особенности их проведения
Дисциплина «Программирование на языке высокого уровня, модуль 1»
изучается студентами очной формы обучения специальности 230201.65
«Информационные системы и технологии» в третьем семестре. Общее
количество часов, которое отводится для изучения дисциплины — 142.
Согласно учебному плану выделяется 34 часа лекций, 34 часа практических
занятий и 74 часа для самостоятельной работы студента.
В ходе изучения дисциплины студент слушает лекции по теоретическому
материалу, ряд вопросов выносится на самостоятельное изучение. Контроль
усвоения материала проводится по результатам выполнения лабораторных
работ. Для помощи студенту в освоении теоретического материала
лекционных занятий и самостоятельной работы предусматриваются
консультации ведущего преподавателя. Между аудиторной и самостоятельной
работой студентов существует очень тесная взаимосвязь. Студенты, получая
знания на лекционных занятиях должны применить их на практических
занятиях и при выполнении самостоятельных работ.
1.4 Виды контроля и отчетности по дисциплине
Для текущего контроля знаний осуществляется проверка отчетов по
лабораторным работам и выборочный опрос студентов во время проведения
лекционных занятий. Промежуточный контроль знаний студентов проводится
в виде зачета, по результату работы студентов на практических и лекционных
занятиях. Дисциплина включает три основных блока: два блока сдаются
студентами на текущей аттестации и, третий блок на промежуточной аттестации. Оценка по дисциплине выводится на основе следующих
составляющих:
– первая текущая аттестация 40 баллов
– вторая текущая аттестация 40 баллов
– промежуточная аттестация 20 баллов.
ИТОГО 100 баллов.
1.5. Техническое и программное обеспечение дисциплины
Для проведения лекционных и лабораторных занятий по дисциплине
необходимо:
а) программное обеспечение: MS Office, компиляторы языков
программирования C++ (С++ Builder, Turbo C++ Explorer, devcpp)
б) техническое и лабораторное обеспечение – компьютерный класс,
аудитория с презентационным оборудованием.
2. СТРУКТУРА И СОДЕРЖАНИЕ УЧЕБНОЙ ДИСЦИПЛИНЫ
2.1 Темы лекций
Тема 1. Основные принципы и понятия языка С++ (2 часа)
Процесс построения программы на языке С++. Создание консольного
приложения. Основные встроенные типы данных. Переменные,
типизированные константы. Представление вещественных переменных в
памяти машины. Массивы, консольный ввод и вывод.
Тема 2. Основные операции языка С++ (2 часа)
Арифметические операции. Операции приведения типа. Операции
инкремента и декремента. Условный оператор. Оператор выбора. Оператор
перехода. Цикл с предусловием, цикл с постусловием, цикл повторений.
Операторы прерывания циклов.
Тема 3. Функции в языке С++ (2 часа)
Тело функции, прототип функции. Вызов функции, расположенной в
другом модуле с помощью заголовочного файла. Перегруженные функции.
Область действия переменных и связанные с ней понятия. Создание
программы из нескольких модулей. Условная компиляция кода, директивы
условной компиляции.
Тема 4. Указатели и динамическая память (2 часа)
Понятие указателя. Операции взятия адреса и разыменования указателя.
Выделение и освобождение динамической памяти и размещение в ней
переменных. Указатели и массивы. Размещение массивов в памяти
динамически. Передача параметров функций по ссылке и по указателю.
Тема 5. Работа с текстовыми и двоичными файлами средствами языка
С++. Типы данных, определяемые программистом (2 часа)
Понятие файла, тип данных, обеспечивающий доступ к файлам.
Открытие файла на чтение и запись в двоичном и текстовом режиме. Чтение
и запись текстовых файлов, чтение и запись двоичных файлов. Типы данных,
определяемые программистом: переименованные типы, перечислимые типы,
структуры, объединения.
Тема 6. Визуальные приложения. Реакция приложений на события мыши
и клавиатуры (2 часа)
Процессы и потоки, многозадачность. Сообщения и события. Окна.
Положение размеры и оформление визуальных компонентов. Основные
события мыши, основные события клавиатуры.
Тема 7. Разработка приложений со стандартными элементами оконного
интерфейса (2 часа)
Компоненты меню. Компоненты редактирования текста. Диалоговые
окна. Компоненты-переключатели. Компоненты скроллинга. Тип дата-время.
Работа с таймером.
Тема 8. Графический инструментарий (2 часа)
Свойства и методы графических классов. Классы пера, кисти и шрифта,
класс канвы. Функции, осуществляющие прорисовку основных
геометрических фигур. Задание цвета. Операции над растровыми
графическими объектами. Формирование растровых изображений в памяти.
Тема
9.
Инструменты
межпрограммного
обмена
данными.
Многопоточные приложения (2 часа)
Свойства монитора. Формирование изображения на принтере. Буфер
обмена. Динамическое создание визуальных компонентов. Инструменты
межпрограммного обмена данными – динамический обмен данными и пайпы.
Основные приему создания многопоточных приложений, синхронизация
потоков.
Тема
10.
Сущность
объектно-ориентированного
подхода
в
программировании (2 часа)
Классы, объекты, инкапсуляция, наследование, полиморфизм. Команды
языка С++ для ввода и вывода. Структуры, перечисления, классы.
Тема 11. Классы и объекты (2 часа)
Понятие класса и объекта. Инкапсуляция данных и функций классов.
Доступ к данным и функциям объектов. Статические и константные функции
и данные классов. Конструкторы и деструкторы.
Тема 12. Перегрузка операций, преобразование типов (2 часа)
Сущность перегрузки операций, правила перегрузки операций. Операции,
являющиеся и не являющиеся членами классов. Перегрузка унарных и
бинарный операций. Особенности перегрузки операций инкремента,
декремента и индексации. Операции преобразования типов. Возможности
преобразования типов конструктором преобразования и перегрузкой
операции присваивания.
Тема 13. Наследование (2 часа)
Мотив механизма наследования. Простое и сложное наследование. Ключ
доступа при наследовании. Неопределенность при сложном наследовании.
Особенности наследования конструкторов.
Тема 14. Виртуальные и дружественные функции (2 часа)
Виртуальные функции, их отличие от обычных. Мотив использования
виртуальных функций. Чистые виртуальные функции, абстрактные классы.
Дружественные функции, дружественные классы.
Тема 15. Шаблоны функций и классов, исключения (2 часа)
Шаблоны
функций,
их
применение
в
типичных
задачах
программирования. Распространение функций с помощью шаблонов.
Правила генерации кода компилятором из шаблона функции. Шаблон класса.
Типы классов, удобные к реализации с помощью шаблонов. Управление
исключениями. Исключения с параметрами.
Тема 16. Стандарты и хорошие практики кодирования на языках
высокого уровня (2 часа)
Стандарты кодирования и их назначение. Основные правила и
рекомендации по кодированию на языке С++. Запреты, требования,
рекомендации.
2.2 Перечень тем лабораторных/практических занятий
Тема 1. Ввод и вывод в С++, основные операции языка (2 часа)
Разработка
программы,
реализующей
консольный
диалог
с
пользователем, арифметические операции с данными.
Тема 2. Циклы и условные операторы (2 часа)
Разработка
программы,
реализующей
консольный
диалог
с
пользователем, обработку данных в циклах, ветвление программы в
зависимости от данных, веденных пользователем.
Тема 3. Функции и модули (4 часа)
Разработка
программы,
реализующей
консольный
диалог
с
пользователем, состоящей из нескольких модулей и функций.
Тема 4. Работа с динамической памятью (2 часа)
Разработка
программы,
реализующей
консольный
диалог
с
пользователем, выделение динамической памяти, размещение в ней данных,
освобождение динамической памяти.
Тема 5. Чтение и запись файлов (2 часа)
Разработка
программы,
реализующей
консольный
диалог
с
пользователем, операции открытия файла на чтение и запись, операции
чтения данных из файла, записи данных в файл.
Тема 6. Простое визуальное приложение (2 часа)
Разработка
программы,
реализующей
визуальный
диалог
с
пользователем, реакцию на события мыши и клавиатуры.
Тема 7. Стандартные компоненты оконного интерфейса (4 часа)
Разработка
программы,
реализующей
визуальный
диалог
с
пользователем, скроллинг, одиночный и множественный выбор.
Тема 8. Работа с графическим инструментарием (4 часа)
Разработка
программы,
реализующей
визуальный
диалог
с
пользователем, отрисовку и копирование изображений.
Тема 9. Межпрограммный обмен данными (2 часа)
Разработка программы, реализующей консольный или визуальный диалог
с пользователем, обмен данными между процессами.
Тема 10. Многопоточные приложения (2 часа)
Разработка
программы,
реализующей
визуальный
диалог
с
пользователем, запуск и остановку потоков команд в рамках одного процесса.
Тема 11. Разработка новых типов данных (2 часа)
Разработка программы, иллюстрирующей работу с классами, имеющими
элементы-данные и элементы-функции.
Тема 12. Перегрузка операций (2 часа)
Разработка
программы,
реализующей
перегрузку
операций
(арифметических, индексации, преобразования типа).
Тема 13. Шаблоны функций (2 часа)
Разработка программы, содержащей шаблон функции, реализующий
типовые задачи программирования, демонстрация работы шаблона функции
на данных различных типов.
3. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИЗУЧЕНИЮ КУРСА
3.1.
Перечень и тематика самостоятельных работ студентов по
дисциплине
1. Разработать класс для отрисовки графиков функций одной переменной.
В качестве базового класса взять стандартный класс TImage. Добавить к нему
необходимые методы и поля, чтобы имелась возможность задавать масштаб,
размеры и цвет графика. Должны быть видны оси координат и подписи с
обозначением единичных отрезков.
2. Разработать класс для отрисовки одномерных последовательностей
числовых величин (массивов) в виде «столбиков». В качестве базового класса
взять стандартный класс TImage. Добавить к нему необходимые методы и
поля, чтобы имелась возможность задавать масштаб, размеры и цвет графика.
3. Разработать класс для отрисовки двумерных последовательностей
числовых величин (массивов) в виде «столбиков». В качестве базового класса
взять стандартный класс TImage. Добавить к нему необходимые методы и
поля, чтобы имелась возможность задавать масштаб, размеры и цвет графика.
4. Разработать класс, представляющий собой визуальный компонент
«Часы» в виде циферблата со стрелками. Определить для него не-обходимые
методы и поля, чтобы имелась возможность задавать раз-меры и цвет часов.
5. Разработать класс, представляющий собой визуальный компонент
«Часы» в виде текстовой строки 05:25:36. Определить для него не-обходимые
методы и поля, чтобы имелась возможность задавать раз-меры и цвет часов.
6. Разработать класс, представляющий собой визуальный компонент для
размещения на экране сменяющихся изображений. Определить для него
необходимые методы и поля, чтобы имелась возможность задавать размеры,
число изображений, загружать изображения из файлов, определять частоту их
изменения и, возможно, стиль изменения.
7. Разработать класс, представляющий собой визуальный компонент типа
«бьющееся сердце» в виде пульсирующего сердечка. Определить для него
необходимые методы и поля, чтобы имелась возможность задавать размеры,
цвет и частоту биения сердечка.
3.2.
Методические рекомендации по организации СРС
Для студентов в качестве самостоятельной работы предполагается
подготовка докладов и сообщений, выполнения домашних заданий,
групповая работа над задачами по программированию.
3.3.
Рекомендации по работе с литературой
В процессе изучения дисциплины «Программирование на языке высокого
уровня», для того чтобы представлять основные понятия, сущность и сферу
применения языка программирования С++ необходимо воспользоваться
учебником Р. Лафоре «Объектно-ориентированное программирование С++».
Остальная рекомендуемая литература поможет студентам выполнять
задания самостоятельной работы.
3.4. Контрольные вопросы для самостоятельной оценки качества
освоения дисциплины
1. Как называется защита данных класса от несанкционированного
доступа другими функциями?
2. Как называется возможность выполнения оператором или функцией
различных действий в зависимости от типа операндов?
3. Операция, выполняющая заданные действия не только над встроенным,
но и над пользовательским типом данных называется:
а) полиморфической;
б) инкапсулированной;
в) классифицированной;
г) перегруженной.
Структура объединяет:
а) данные одного типа;
б) логически связанные данные;
в) целые именованные значения;
г) переменные.
4. Какой заголовочный файл нужно включить в исходный текст, чтобы
использовать объекты cin и cout.
5. Напишите оператор, который получает с клавиатуры числовое значение
и присваивает его переменной temp.
6. Опишите структуру, содержащую три переменные типа int с
названиями hrs, mins и secs. Назовите структуру именем time.
7. Истинно ли следующее утверждение: при определении структуры
выделяется память под переменную?
8. Напишите оператор, присваивающий полю hrs структурной переменной
time2 значение, равное 11.
9. Сколько байтов памяти займут три структурные переменные типа time,
если структура time содержит три поля типа int.
10. Истинно ли следующее утверждение: вы можете присвоить значение
одной структурной переменной другой структурной переменной того же
типа?
11. Перечисление объединяет
а) данные различных типов;
б) логически связанные переменные;
в) именованные целые числа;
г) константные значения.
12. Напишите оператор, описывающий перечисление с именем players и
набором значений B1, B2, SS, B3, RF, CF, LF, P, C.
13. Считая, что перечисление players задано так. Как в предыдущем
вопросе, определите переменные joe и tom типа players и присвойте им
значения LF и P соответственно.
14. Первые три константы перечисляемого типа обычно представляются
числами __, __, и __.
15. Напишите оператор, в котором объявляется перечисляемый тип speeds
с константами obsolete, single и album. Присвойте этим константам целые
значения 78, 45, 33.
16. Объясните, почему объявление в языке С++
enum isWord {NO, YES};
более удачно, чем
enum isWord {YES, NO};
17. В определении класса члены класса с ключевым словом private
доступны:
а) любой функции программы;
б) в случае, если известен пароль;
в) методам этого класса;
г) только открытым членам класса.
18. Напишите определение класса studentgroup, включающего одно
закрытое поле типа int с именем number и одним открытым методом с
прототипом void add().
19. Истинно ли следующее утверждение: поля класса должны быть
закрытыми.
20. Для чего при работе с объектами применяется операция «точка»?
21. Для чего при работе с объектами применяется операция «стрелка»?
22. Что такое конструктор?
23. Как задается имя конструктора?
24. Может ли класс иметь более одного конструктора?
25. Методу класса всегда доступны данные
а) объекта, членом которого он является;
б) класса, членом которого он является;
в) любого объекта класса, членом которого он является.
26. Что является единственным формальным различием между
структурами и классами в С++?
27. Пусть определены три объекта класса. Сколько копий полей класса
содержится в памяти? Сколько копий методов класса?
28. Константный метод, вызываемый для объекта класса
а) может изменить как константные, так и неконстантные поля;
б) может изменить только неконстантные поля;
в) может изменять только константные поля;
г) не может изменять никакие поля.
29. Для чего нужно объявление поля класса со словом mutable
30. Что такое деструктор
31. Какие свойства приобретает поле данных класса, объявленное как
static
32. В чем состоит преимущество определения конструктора со списком
инициализации элементов?
33. Для чего необходимо переопределять операции new и delete.
34. Какие свойства приобретает элемент-функция класса, если она
объявлена как статическая
35. Что такое указатель this?
36. Для чего в С++ применяется перегрузка операций?
37. Истинно ли следующее утверждение: операция >= может быть
перегружена?
38. Сколько аргументов требуется для определения перегруженной
унарной операции?
39. Сколько аргументов требуется для определения перегруженной
бинарной операции?
40. Чем отличается действие операции ++ в префиксной форме от её
действия в постфиксной форме?
41. Истинно ли следующее утверждение: перегруженная операция всегда
требует на один аргумент меньше, чем количество операндов?
42. Когда перегружается операция арифметического присваивания, то
результат
передается объекту справа от операции;
передается объекту слева от операции;
передается объекту, вызвавшему операцию;
должен быть возвращен.
43. Какой механизм преобразования от определенного пользователем
класса к встроенному типу может быть использован в языке С++?
44. Какой механизм преобразования от встроенного типа данных к
определенному пользователем может быть использован в языке С++?
45. Истинно ли следующее утверждение: компилятор не выдаст
сообщение об ошибке, если вы перегрузите операцию * для выполнения
деления?
46. Если объект objA принадлежит классу A, объект objB принадлежит
классу B, и требуется записать objA = objB, поместив при этом функцию
преобразования в класс A, то какую разновидность процедуры
преобразования типа можно использовать?
47. Существуют ли операции, которые нельзя перегружать?
48. Что такое конструктор преобразования?
49. Для чего используется ключевое слово explicit?
50. В чем состоит назначение наследования?
51. Когда программисту-разработчику целесообразно прибегнуть к
наследованию?
52. Напишите первую строку описания класса Child, который является
public-производным от класса Parent.
53. Верно ли утверждение: создание производного класса требует
коренных изменений в базовом классе?
54. Члены базового класса, для доступа к ним методов производного
класса должны быть объявлены как public или ________.
55. Пусть базовый класс содержит метод basefunc(), а производный класс
не имеет такого метода. Может ли объект производного класса иметь доступ
к методу basefunc().
56.
Истинно ли следующее утверждение: если конструктор производного класса не определен, то объекты этого класса будут использо-вать
конструкторы базового класса?
57.
Как используется оператор разрешения области действия для
разрешения неопределенностей?
58.
Истинно ли следующее утверждение: иногда полезно создать
класс, объектов которого никогда не будет создано?
59.
Пусть класс Derv является дочерним от класса Base. Пусть
определена переменная типа Derv, расположенная в функции main(). Через
эту переменную можно получить доступ к
а) членам класса Derv, объявленным как public;
б) членам класса Derv, объявленным как protected;
в) членам класса Derv, объявленным как private;
г) членам класса Base, объявленным как public;
д) членам класса Base, объявленным как protected;
е) членам класса Base, объявленным как private.
60.
Пусть существует класс Derv, производный от класса Base.
Напишите объявление конструктора производного класса, принимаю-щего
один аргумент и передающего его в конструктор базового класса.
61.
Истинно ли следующее утверждение: невозможно сделать объект одного класса членом другого класса?
62.
Какие возможности перед программистом открывают виртуальные функции?
63.
Истинно ли утверждение о том, что указатель на базовый класс
может ссылаться на объекты порожденного класса?
64.
Пусть указатель p ссылается на объекты базового класса и содержит адрес объекта порожденного класса. Пусть в обоих этих клас-сах
имеется невиртуальный метод ding(). Тогда выражение p->ding() вызовет
метод ding() из ……… класса.
65.
Напишите описание для виртуальной функции dang(), возвращающей результат void и имеющей аргумент типа int.
66.
Пусть указатель p ссылается на объекты базового класса и содержит адрес объекта порожденного класса. Пусть в обоих этих клас-сах
имеется виртуальный метод ding(). Тогда выражение p->ding() вызо-вет метод
ding() из ……… класса.
67.
Напишите описание для чистой виртуальной функции aragorn(),
не возвращающей значений и не имеющей аргументов.
68.
Чистая виртуальная функция, это виртуальная функция, кото-рая:
а) делает свой класс абстрактным;
б) не возвращает результата;
в) используется в базовом классе;
г) не имеет аргументов.
69. Напишите определение массива parr, содержащего 10 указателей на
объекты класса dong.
70. Абстрактный класс используется тогда, когда
а) не планируется создавать порожденные классы;
б) есть несколько связей между двумя порожденными классами
в) необходимо запретить создавать объекты класса
71. Истинно ли утверждение о том, что дружественная функция имеет
доступ к скрытым данным класса, даже не являясь его методом?
72. Напишите описание дружественной функции harry(), возвращающей
результат типа void и имеющей один аргумент класса george.
73. Ключевое слово friend появляется в:
а) классе, разрешающем доступ к другому классу;
б) классе, требующем доступа к другому классу;
в) разделе скрытых компонентов класса;
г) разделе общедоступных компонентов класса.
74. Шаблоны позволяют удобным способом создать семейство
а) переменных;
б) функций;
в) классов;
г) программ.
75. Истинно ли утверждение, что шаблоны автоматически создают разные
версии класса в зависимости от введенных пользователем данных?
76. Напишите шаблон функции, всегда возвращающей свой аргумент,
умноженный на 2.
77. Шаблонный класс:
а) работает с разными типами данных;
б) генерирует идентичные объекты;
в) генерирует классы с различным числом методов.
78. Истинно ли утверждение, что шаблон может иметь несколько
аргументов?
79. Реальный код шаблонной функции генерируется при:
а) объявлении функции в исходном коде;
б) вызове функции в исходном коде;
в) запуске функции во время работы программы.
80. В каких случаях целесообразно прибегать к шаблонным классам?
81. При работе с механизмом исключений в С++ используются
следующие ключевые слова: ____, ______, ____.
82. Напишите выражение, генерирующее исключение, используя класс
BoundsError.
83. Исключения передаются
а) из блока-ловушки в блок повторных попыток;
б) из выражения, создавшего исключительную ситуацию, в блок
повторных попыток;
в) из точки, где возникла ошибка, в блок-ловушку.
84. Истинно ли утверждение о том, что программа может продолжить
свое выполнение после возникновения исключительной ситуации?
4. СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
4.1 Основная литература
Иванова Г.С. Объектно-ориентированное программирование: учебник для
студ. вузов / Г.С. Иванова, Т.Н. Ничушкина, Е.К. Пугачев; под ред. Г.С.
Ивановой. – 3-е изд., стереотип. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2008.
Лаптев В.В. С++. Объектно-ориентированное программирование. Задачи
и упражнения / В.В. Лаптев, А.В. Морозов, А.В. Бокова. – СПб.: Питер, 2007.
Лафоре Р. Объектно-ориентированное программирование в С++ /
Р. Лафоре. – 4-е изд. – СПб.: Питер, 2010.
Павловская Т.А. Объектно-ориентированное программирование: практикум / Т.А. Павловская, Ю.А. Щупак. – СПб.: Питер, 2007.
Хорев П.Б. Технологии объектно-ориентированного программирования /
П.Б. Хорев. – 2-е изд. – М., 2009.
4.2 Дополнительная литература
Ловейн П. Объектно-ориентированное программирование на PHP 5 /
Питер Ловейн. – М.: НТ Пресс, 2007.
Пышкин Е.В. Теория и технология программирования. Основные
концепции и механизмы объектно-ориентированного программирова-ния:
учеб. пособие для студ. вузов / Е.В. Пышкин. – СПб.: БХВ-Пе-тербург, 2005.
Скачать