- •I. ПРОЦЕДУРНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
- •Лабораторная работа № 1 Линейные алгоритмы
- •Лабораторная работа № 2 Циклы и ветвления
- •Лабораторная работа № 3 Одномерные массивы и строки
- •Лабораторная работа № 4 Двумерные массивы и матрицы
- •Лабораторная работа № 5 Функции
- •Лабораторная работа № 6 Определение типов данных. Перечисляемый тип. Структуры
- •II. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
- •Лабораторная работа № 1 Понятие класса. Инкапсуляция
- •Лабораторная работа № 2 Организация и обработка списков
- •Лабораторная работа № 3 Наследование. Полиморфизм
- •Лабораторная работа № 4 Перегрузка функций и операций
- •Лабораторная работа № 5 Файловые функции. Работа с файлами
- •III. ВИЗУАЛЬНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
- •Лабораторная работа № 1 Современный С++
- •Лабораторная работа № 2 Стандартная библиотека шаблонов С++
- •Лабораторная работа № 3 Визуальная библиотека VCL
- •Лабораторная работа № 4 Графические средства
- •Лабораторная работа № 5 Доступ к базам данных
- •Лабораторная работа № 6 Модульное программирование
- •IV. Оформление отчётов
- •Структура отчёта по лабораторной работе
- •Требования к структурным элементам отчёта
- •Правила оформления отчёта
- •ЛИТЕРАТУРА
II. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
Лабораторная работа № 1 Понятие класса. Инкапсуляция
Лабораторная работа посвящена понятию класса, как средству объединения данных и алгоритмов их обработки. Рассматриваются следующие понятия: поле, метод, конструктор, деструктор, объект, публичная и приватная области видимости, разделение интерфейса и реализации, инкапсуляция.
110
ОБРАЗЕЦ ОТЧЁТА ПО ЛАБОРАТОРНОЙ РАБОТЕ
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
Задачи
1.Составить описание класса для представления комплексных чисел с возможностью задания вещественной и мнимой частей как числами типов double, так и целыми числами. Обеспечить выполнение операций сложения, вычитания и умножения комплексных чисел.
2.Построить систему классов для описания плоских геометрических фигур: круг, квадрат, прямоугольник. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров и поворота на заданный угол.
3.Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников.
4.Составить описание класса для объектов - векторов, задаваемых координатами концов в трёхмерном пространстве. Обеспечить операции сложения и вычитания векторов с получением нового вектора (суммы или разности), вычисления скалярного произведения двух векторов, длины вектора, косинуса угла между векторами.
5.Составить описание класса для работы со списками строк (строки произвольной длины), с операциями включения в список, удаления из списка элемента с заданным значением данного, удаления всего списка или конца списка, начиная с заданного элемента.
6.Построить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть возможность раздельного изменения составных частей адреса, создания и уничтожения объектов этого класса.
7.Составить описание класса для определения одномерных массивов
132
целых чисел (векторов). Предусмотреть возможность обращения к отдельному элементу массива с контролем выхода за пределы индексов, возможность задания произвольных границ индексов при создании объекта и выполнения операций поэлементного сложения и вычитания массивов с одинаковыми границами индексов, умножения и деления всех элементов массива на скаляр, печати (вывода на экран) элементов массива по индексам и всего массива.
8.Составить описание класса для определения одномерных массивов строк фиксированной длины. Предусмотреть возможность обращения к отдельным строкам массива по индексам, контроль выхода за пределы индексов, выполнения операций поэлементного сцепления двух массивов с образованием нового массива, слияния двух массивов с исключением повторяющихся элементов, печать (вывод на экран) элементов массива и всего массива.
9.Составить описание объекта, обеспечивающего размещение матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого размера и всей матрицы.
10.Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов. Предусмотреть методы для вычисления значения многочлена для заданного аргумента, операции сложения, вычитания и умножения многочленов с получением нового объекта - многочлена, печать (вывод на экран) описания многочлена.
11.Создать класс типа «циклическая последовательность». Функции-члены получают элемент и помещают его в последовательность. Предусмотреть функцию вывода последовательности на экран. Для хранения последовательности использовать динамический массив.
12.Создать класс типа «дата с полями»: день (1-31), месяц (1-12), год (целое число). Класс имеет конструктор. Функции-члены: установки дня,
133
месяца и года, функции-члены получения дня, месяца и года, а также две функции-члены печати: печать по шаблону: «5 января 1997 года» и «05.01.1997». Функции-члены установки полей класса должны проверять корректность задаваемых параметров.
13.Создать класс типа «время с полями»: час (0-23), минуты (0-59), секунды (0-59). Класс имеет конструктор. Функции-члены установки времени, функции-члены получения часа, минуты и секунды, а также две функции-члены печати: печать по шаблону: «16 часов 18 минут 3 секунды» и «4 p.m. 18 минут 3 секунды». Функции-члены установки полей класса должны проверять корректность задаваемых параметров.
14.Составить описание класса для работы с квадратной целочисленной матрицей. Обязательные функции-члены класса для ввода/вывода матрицы, вычисления следа матрицы и её определителя.
15.Составить описание класса для работы со стеком вещественных чисел. Обязательные функции-члены класса для добавления/удаления элемента, проверки присутствия указанного элемента, вывода текущих элементов стека. Для реализации стека использовать динамический массив.
16.Составить описание класса для работы с символом на экране (в текстовом режиме). Для этого должны быть предоставлены возможности: высветить символ на экране в определённом месте, определённым цветом; определить видимость символа в данный момент; получить координаты точки после поворота отрезка, соединяющего этот символ с началом координат на заданный угол.
17.Создать класс типа «матрица». Данный класс содержит указатель на double, размер строк и столбцов и состояние ошибки. Определить конструктор без параметров, конструктор с одним параметром и конструктор с двумя параметрами, деструктор. Определить методы доступа, возвращать значение элемента (i, j) и адрес этого элемента. Определить функцию печати. Определить функции сложения и
134
вычитания (матрицы с матрицей), умножения матрицы на матрицу. Определить умножение матрицы на число. Проверить работу этого класса. В случае нехватки оперативной памяти, несоответствия размерностей, выхода за пределы индексов матрицы и т.д. устанавливать код ошибки.
18.Создать класс типа «прямоугольник». Поля - высота и ширина. Функции-члены вычисляют площадь, периметр, устанавливают поля и возвращают значения. Функции-члены установки полей класса должны проверять корректность задаваемых параметров и обеспечивать отображение информации на экране дисплея в текстовом или
графическом режиме.
19.Создать класс типа «одномерный массив» и класс типа «массив одномерных массивов». Обеспечить возможность обращения к элементам по индексу с контролем выхода за границы.
20.Создать класс типа «окружность». Поля – координаты центра и радиус. Функции-члены вычисляют площадь, длину окружности, устанавливают значения полей и возвращают значения. Функции-члены установки полей класса должны проверять корректность задаваемых параметров. Функция печати.
21.Создать класс типа «игра в крестики-нолики». Поле класса - массив 3х3. Обеспечить возможность заполнения только свободных «клеток» в массиве.
22.Создать класс типа «квадрат». Поля – координаты сторон квадрата. Функции-члены вычисляют площадь, периметр, устанавливают поля и возвращают значения. Функции-члены установки полей класса должны проверять корректность задаваемых параметров. Функция печати.
23.Составить описание класса одномерных массивов строк, каждая строка задается длиной и указателем на выделенную для неё память. Предусмотреть возможность обращения к отдельным строкам массива
135
по индексам, контроль выхода за пределы индексов, выполнения операций поэлементного сцепления двух массивов с образованием нового массива, слияния двух массивов с исключением повторяющихся элементов, печать (вывод на экран) отдельных элементов массива и всего массива.
24.Создать класс, который считывал бы строку, содержащую произвольный текст на английском и/или русском языках. Переводил бы все строчные буквы в заглавные (не меняя остальных символов) и записывал всё в стандартный поток вывода.
25.Создать класс, который позволяет проверить, удовлетворяет ли введённый текст, состоящий из букв, цифр, пробелов и табуляторов, введённому регулярному выражению. Регулярное выражение имеет следующий синтаксис:
? – любой символ;
* – любое количество любых символов; + – любое ненулевое количество любых символов;
(..)* – элементы, удовлетворяющие регулярному выражению в скобках, могут повторяться любое количество раз; (..)+ – элементы, удовлетворяющие регулярному выражению в скобках,
могут повторяться любое ненулевое количество раз; (..)_ – элементы, удовлетворяющие регулярному выражению в скобках,
могут либо присутствовать (один раз), либо отсутствовать.
26.Создать класс, который содержит массив A целого типа из произвольного количества элементов, присвоить всем элементам случайные значения в диапазоне [-134, 142]. Создать функции-члены класса, которые позволяют:
1)найти наибольший по абсолютной величине элемент;
2)найти такую пару элементов, у которой разность между вторым и первым наибольшая;
136
3)найти такую тройку элементов, для которой выражение
A[i]*A[i+1]+A[i+2] наибольшее.
27.Создать класс, который считывает десятичное число и печатает его двоичный, восьмеричный и шестнадцатеричный эквиваленты.
28.Создать класс, который содержит две переменные с разными значениями. В рамках класса создать функцию-член, которая обменивает значения переменных, не используя дополнительных переменных и не выделяя для этих целей динамической памяти.
29.Создать класс, который выводит на экран сумму цифр целого положительного числа.
30.Создать класс «страны мира». Информация о странах должна содержаться в записях со следующими полями: название, территория, население, выход к морю. Массив должен содержать не менее 10 записей. Организовать ввод информации о странах с клавиатуры. Реализовать функцию-член класса, которая определит страну с наибольшей территорией, имеющую выход к морю и/или океану.
31.Создать класс, который определял бы, сколько раз каждая буква встречается в заданном файле, и печатал результат на экране монитора.
32.Создать класс, который по массиву с данными строит круговую диаграмму и отображает её на экране монитора.
33.Создать класс, который по заданному массиву строит гистограмму и отображает её на экране монитора.
34.Имеется текстовый файл. Создать класс, который создал бы новый файл, в котором каждая строка исходного файла читалась бы наоборот, т.е.
1-ый символ в исходной строке стал бы последним, 2-ой - предпоследним и т.д. Количество строк в файле произвольно.
35.Создать класс, который использует массив из 40 элементов для хранения целых чисел вплоть до больших целых, содержащих по 40 цифр. Функции-члены должны вводить, выводить, складывать и вычитать эти большие, целые. Сравнение больших целых чисел. Деление и умножение
137
целых больших чисел.
138