- •I. ПРОЦЕДУРНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
- •Лабораторная работа № 1 Линейные алгоритмы
- •Лабораторная работа № 2 Циклы и ветвления
- •Лабораторная работа № 3 Одномерные массивы и строки
- •Лабораторная работа № 4 Двумерные массивы и матрицы
- •Лабораторная работа № 5 Функции
- •Лабораторная работа № 6 Определение типов данных. Перечисляемый тип. Структуры
- •II. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
- •Лабораторная работа № 1 Понятие класса. Инкапсуляция
- •Лабораторная работа № 2 Организация и обработка списков
- •Лабораторная работа № 3 Наследование. Полиморфизм
- •Лабораторная работа № 4 Перегрузка функций и операций
- •Лабораторная работа № 5 Файловые функции. Работа с файлами
- •III. ВИЗУАЛЬНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
- •Лабораторная работа № 1 Современный С++
- •Лабораторная работа № 2 Стандартная библиотека шаблонов С++
- •Лабораторная работа № 3 Визуальная библиотека VCL
- •Лабораторная работа № 4 Графические средства
- •Лабораторная работа № 5 Доступ к базам данных
- •Лабораторная работа № 6 Модульное программирование
- •IV. Оформление отчётов
- •Структура отчёта по лабораторной работе
- •Требования к структурным элементам отчёта
- •Правила оформления отчёта
- •ЛИТЕРАТУРА
III. ВИЗУАЛЬНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
Лабораторная работа № 1 Современный С++
Лабораторная работа посвящена таким особенностям современного программирования на языке С++, как исключительные ситуации, пространства имён и множественное наследование. Кроме этого уделено внимание сравнению процедурного и объектноориентированного подходов.
244
ОБРАЗЕЦ ОТЧЁТА ПО ЛАБОРАТОРНОЙ РАБОТЕ
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
Задачи
1.Реализуйте набор основных функций для работы со строками. Инкапсулируйте полученные функции в класс. На основе полученного кода проведите сравнительный анализ процедурного и объектноориентированного подходов, обосновав критерии сравнения (быстродействие, лаконичность, надёжность и т.п.)
2.Реализуйте набор основных функций для работы с одномерными массивами целых чисел. Инкапсулируйте полученные функции в класс. На основе полученного кода проведите сравнительный анализ процедурного и объектно-ориентированного подходов, обосновав критерии сравнения (быстродействие, лаконичность, надёжность и т.п.)
3.Реализуйте набор основных функций для работы с одномерными массивами целых чисел. Инкапсулируйте полученные функции в класс. На основе полученного кода проведите сравнительный анализ процедурного и объектно-ориентированного подходов, обосновав критерии сравнения (быстродействие, лаконичность, надёжность и т.п.)
4.Реализуйте набор основных функций для работы с битовыми последовательностями произвольной длины. Инкапсулируйте полученные функции в класс. На основе полученного кода проведите сравнительный анализ процедурного и объектно-ориентированного подходов, обосновав критерии сравнения (быстродействие, лаконичность, надёжность и т.п.)
5.Реализуйте набор основных функций для работы с двумерными массивами целых чисел. Инкапсулируйте полученные функции в класс. На основе полученного кода проведите сравнительный анализ процедурного и объектно-ориентированного подходов, обосновав критерии сравнения (быстродействие, лаконичность, надёжность и т.п.)
6.Реализуйте набор основных функций для работы с комплексными числами. Инкапсулируйте полученные функции в класс. На основе
263
полученного кода проведите сравнительный анализ процедурного и объектно-ориентированного подходов, обосновав критерии сравнения (быстродействие, лаконичность, надёжность и т.п.)
7.Реализуйте набор основных функций для работы с файлами (открытие, закрытие, чтение из файла). Инкапсулируйте полученные функции в класс. На основе полученного кода проведите сравнительный анализ процедурного и объектно-ориентированного подходов, обосновав критерии сравнения (быстродействие, лаконичность, надёжность и т.п.)
8.Реализуйте набор основных функций для работы с оперативной памятью (выделить фрагмент заданного размера, освободить выделенный фрагмент). Инкапсулируйте полученные функции в класс. На основе полученного кода проведите сравнительный анализ процедурного и объектно-ориентированного подходов, обосновав критерии сравнения (быстродействие, лаконичность, надёжность и т.п.)
9.Реализуйте набор основных функций для работы с системными часами ЭВМ (установить время, считать время). Инкапсулируйте полученные функции в класс. На основе полученного кода проведите сравнительный анализ процедурного и объектно-ориентированного подходов, обосновав критерии сравнения (быстродействие, лаконичность, надёжность и т.п.)
10.Реализуйте набор основных функций для работы со стеками целых чисел. Инкапсулируйте полученные функции в класс. На основе полученного кода проведите сравнительный анализ процедурного и объектно-ориентированного подходов, обосновав критерии сравнения (быстродействие, лаконичность, надёжность и т.п.)
11.В рамках предметной области определены понятия:
-А. Пушкин;
-Н. Гоголь;
-Н. Лесков;
-Л. Толстой;
264
-М. Лермонтов;
-А. Скрябин;
-Ф. Сологуб;
-В. Маяковский;
-М. Лермонтов.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
12.В рамках предметной области определены понятия:
-Linux;
-UNIX;
-PalmOS;
-BSD;
-QNX;
-OC2000;
-JavaOS;
-Inferno;
-Symbian.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
13.В рамках предметной области определены понятия: - Бородино;
265
-Курская дуга;
-Куликово поле;
-Косово поле;
-Измаил;
-Байконур;
-Цусима;
-Геттисбург;
-Нюрнберг.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
14.В рамках предметной области определены понятия:
-мама;
-папа;
-сын;
-дочь;
-брат;
-сестра;
-шурин;
-золовка;
-племянник.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного
266
наследования обязательно.
15.В рамках предметной области определены понятия:
-«Урал»;
-«Агат»;
-МЭСМ;
-«Эльбрус»;
-МИР-1;
-МИР-2;
-ЕС-1840;
-«Сетунь-70»;
-«Электроника МК-85».
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
16.В рамках предметной области определены понятия:
-«Тихий Дон»;
-«Обломов»;
-«Арап Петра Великого»;
-«Обыкновенная история»;
-«Театральный роман»;
-«Мелкий бес»;
-«Они сражались за Родину»;
-«Таис Афинская»;
-«Обрыв».
Обоснуйте не менее трёх классификационных признаков, определяющих
267
отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
17.В рамках предметной области определены понятия:
-жираф;
-осёл;
-зебра;
-гепард;
-тигр;
-обезьяна;
-белый медведь;
-бурый медведь;
-слон.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
18.В рамках предметной области определены понятия:
-радиоприёмник;
-радиопередатчик;
-мобильный телефон;
-видеокамера;
-телевизор;
-видеопроигрыватель;
-ПК;
-КПК;
268
- дизельный генератор.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
19.В рамках предметной области определены понятия:
-велосипед;
-мотоцикл;
-роликовые коньки;
-трактор;
-комбайн;
-автобус;
-грузовик;
-легковое такси;
-грузовое такси;
-маршрутное такси.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
20.В рамках предметной области определены понятия:
-В.И. Ленин;
-И.В. Сталин;
-Н.С. Хрущёв;
-М. Цзедун;
269
-А.Ф. Петен;
-Ш. де Голль;
-Э. Ре́зерфорд;
-Д.И. Менделеев;
-К. Маркс.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
21.В рамках предметной области определены понятия:
-городки;
-хоккей с мячом;
-гандбол;
-регби;
-конное поло;
-водное поло;
-кёрлинг;
-хоккей с шайбой;
-мотокросс.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
22.В рамках предметной области определены понятия: - Святослав Игоревич;
270
-Рюрик;
-Аскольд;
-Юрий Владимирович;
-Владимир Всеволодович;
-Ольга;
-Гостомысл;
-Дмитрий Иванович;
-Ярослав Владимирович.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
23.В рамках предметной области определены понятия:
-В.И. Чуйков;
-Г.К. Жуков;
-А.В. Суворов;
-Святослав Игоревич;
-Евпатий Коловрат;
-А.П. Ермолов;
-М.Д. Скобелев;
-М.Е. Катуков;
-М.И Кутузов.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного
271
наследования обязательно.
24.В рамках предметной области определены понятия:
-Скалозуб;
-Спартак;
-Эрг Hoop;
-Швабрин;
-Анна Снегина;
-Передонов;
-Том Сойер;
-Смердяков;
-Герда.
Обоснуйте не менее трёх классификационных признаков, определяющих отношения между этими понятиями. На основе этих признаков реализуйте не менее трёх различных иерархий классов, описывающих эти понятия и связи между ними. Использование множественного наследования обязательно.
25.Реализуйте функцию открытия файла на чтение. Обоснуйте и реализуйте для этой функции не менее трёх различных стратегий обработки возможных ошибок времени исполнения.
26.Реализуйте функцию ввода вещественных чисел с консоли. Обоснуйте и реализуйте для этой функции не менее трёх различных стратегий обработки возможных ошибок времени исполнения.
27.Реализуйте функцию ввода целых чисел с консоли. Обоснуйте и реализуйте для этой функции не менее трёх различных стратегий обработки возможных ошибок времени исполнения.
28.Реализуйте функцию открытия файла на запись. Обоснуйте и реализуйте для этой функции не менее трёх различных стратегий обработки возможных ошибок времени исполнения.
272
29.Реализуйте функцию ввода строк с консоли. Обоснуйте и реализуйте для этой функции не менее трёх различных стратегий обработки возможных ошибок времени исполнения.
30.Реализуйте функцию деления одного вещественного числа на другое. Обоснуйте и реализуйте для этой функции не менее трёх различных стратегий обработки возможных ошибок времени исполнения.
31.Реализуйте функцию ввода комплексных чисел с консоли. Обоснуйте и реализуйте для этой функции не менее трёх различных стратегий обработки возможных ошибок времени исполнения.
32.Реализуйте функцию сложения двух целых чисел. Обоснуйте и реализуйте для этой функции не менее трёх различных стратегий обработки возможных ошибок времени исполнения.
33.Реализуйте функцию выделения фрагмента оперативной памяти заданного объёма. Обоснуйте и реализуйте для этой функции не менее трёх различных стратегий обработки возможных ошибок времени исполнения.
34.Реализуйте функцию автоматического создания текста класса C++ по заданным параметрам:
-имя класса;
-имена родительских классов;
-тип наследования для каждого из родительских классов;
-имена, типы и доступность методов;
-имена, типы и доступность полей.
Текст должен сохраняться в указанных пользователем файл.
35.Реализуйте функцию замены в произвольном тексте на C++ цикла for на цикл while. В простейшем случае достаточно ограничиться заменой лишь циклов вида:
for(int переменная=выражение1; переменная<выражение2; операция)
273