Министерство образования и науки Российской федерации Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» МЕТОДИЧЕСКИЕ УКАЗАНИЯ для студентов 2 курса вечернего отделения механико-математического факультета по курсу ЯЗЫКИ ПРОГРАММИРОВАНИЯ И МЕТОДЫ ТРАНСЛЯЦИИ ЗАДАНИЯ ПО УЧЕБНОЙ ПРАКТИКЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Ростов-на-Дону 2006 Методические указания разработаны сотрудниками кафедры прикладной математики и программирования: доцентом Я.М. Русановой, старшим преподавателем Н.И. Амелиной, старшим преподавателем Л.Г. Пасечным Ответственный редактор ст. преподаватель Н.И. Амелина Компьютерный набор и верстка ст. лаборанта И.В. Евдокимовой Печатается в соответствии с решение кафедры прикладной математики и программирования механико-математического факультета РГУ, протокол №9 от 18 мая 2006 г. 2 СОДЕРЖАНИЕ ЗАДАНИЕ 1. ОПРЕДЕЛЕНИЕ КЛАССА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Класс Дробь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Класс Комплексное число. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Класс Комплексное число. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4. Класс Вектор 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 5. Класс Вектор 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 6. Класс Матрица 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7. Класс Время . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8. Класс Дата . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9. Класс Вектор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10. Класс Полином . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 11. Класс Матрица целых чисел . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 12. Класс Вещественная матрица . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 13. Класс Строка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 14. Класс Список . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 15. Класс Двусвязный список . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 16. Класс Стек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 17. Класс Очередь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 18. Класс Дерево . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 ЗАДАНИЕ 2. ПЕРЕГРУЗКА ОПЕРАЦИЙ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 ЗАДАНИЕ 3. ШАБЛОНЫ КЛАССОВ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 ЗАДАНИЕ 4. НАСЛЕДОВАНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 ЛИТЕРАТУРА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3 ЗАДАНИЕ 1. ОПРЕДЕЛЕНИЕ КЛАССА Составить описание класса. Определить конструктор по умолчанию, конструктор инициализации (конструктор с параметрами), деструктор и обязательные функции – члены класса (методы) из списка методов класса. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса. 1. Класс Дробь Класс для работы с рациональными дробями (вида m/n). Методы класса: а) ввод дроби; б) вывод дроби в виде m/n (например, 1/3 или -2/5); в) приведение дроби к несократимому виду; г) сложение двух дробей; д) вычитание двух дробей; е) умножение двух дробей; ж) деление двух дробей; з) сравнение двух дробей (первая меньше второй); и) сравнение двух дробей (первая больше второй); к) сравнение двух дробей (первая равна второй). Указание к решению Для приведения дроби к несократимому виду следует: – в случае равенства числителя и знаменателя положить их равными единице; – в случае неравенства найти наибольший общий делитель (nod) числителя и знаменателя и разделить на nod числитель и знаменатель. Для нахождения nod двух чисел можно использовать либо «Алгоритм Евклида», либо его вариант, основанный на вычитании чисел [3]. 4 2. Класс Комплексное число Комплексное число задается своей вещественной и мнимой частями (a+bi). Методы класса: а) ввод числа (например, число 5+3i задается парой чисел 5 и 3); б) вывод числа в виде a+bi; в) сложение двух чисел; г) вычитание двух чисел; д) умножение двух чисел; е) деление чисел. Указания к решению Суммой двух комплексных чисел a1+b1i и a2+b2i называют комплексное число (a1+a2)+(b1+b2)i. Разностью двух комплексных чисел a1+b1i и a2+b2i называют комплексное число (a1-a2)+(b1-b2)i. Произведением двух комплексных чисел a1+b1i и a2+b2i называют комплексное число (a1·a2-b1·b2)+(a1·b2+b1·a2)i. Частным от деления комплексного числа a1+b1i (делимого) на комплексное число a2+b2i (делитель) является (если делитель не равен нулю) комплексное число x+yi: x a1 a 2 b1 b 2 , a 2 2 b 2 2 y b1 a 2 a1 b 2 a 2 2 b 2 2 3. Класс Комплексное число Комплексное число задается своим модулем r и аргументом (углом) . Методы класса: а) ввод числа; б) вывод числа в виде rcos i sin ; 5 в) умножение двух чисел; г) деление чисел; д) возведение числа в целую степень; е) извлечение квадратного корня. Указания к решению При умножении комплексных чисел, заданных модулем r и аргументом (углом) , их модули перемножаются, а аргументы складываются: r1 r 2 cos 1 2 i sin 1 2 При делении комплексных чисел их модули делятся, а аргументы вычитаются: r1 cos1 2 i sin 1 2 , r2 r2 0 . При возведении комплексного числа в целую степень модуль возводится в ту же степень, а аргумент умножается на показатель степени (формула Муавра): r n cos n i sin n . Корень n-ой степени (n – натуральное) из комплексного числа имеет n различных значений: n 2k 2k r cos i sin , n n k 0,1, 2, ..., n 1. 4. Класс Вектор 2 Вектор в двумерном евклидовом координатами x и y . Методы класса: а) ввод вектора; б) вывод вектора; 6 пространстве задается своими в) сложение двух векторов; г) вычитание двух векторов; д) скалярное произведение двух векторов; е) умножение вектора на число; ж) деление вектора на число; з) определение длины вектора. 5. Класс Вектор 3 Вектор в трехмерном евклидовом пространстве задается своими координатами x, y, z . Методы класса: а) ввод вектора; б) вывод вектора; в) сложение двух векторов; г) вычитание двух векторов; д) скалярное произведение двух векторов; е) умножение вектора на число; ж) деление вектора на число; з) определение длины вектора. 6. Класс Матрица 2 Квадратная целочисленная матрица второго порядка задается своими элементами: a11, a12, a 21, a 22 . Методы класса: а) ввод матрицы; б) вывод матрицы; в) вычисление следа матрицы; г) вычисление определителя матрицы; 7 д) вычисление нормы матрицы ( max aij ); е) сложение двух матриц; ж) вычитание двух матриц; з) умножение матрицы на число; и) умножение двух матриц; к) поэлементное сравнение двух матриц; л) сравнение двух матриц по норме; м) транспонирование матрицы; н) определение обратной матрицы. 7. Класс Время Время задается в формате час.минута.секунда. Методы класса: а) ввод момента времени; б) вывод момента времени в заданном формате; в) добавление ко времени заданного количества минут; г) добавление ко времени заданного количества секунд; д) вычитание из времени заданного количества минут; е) вычитание из времени заданного количества секунд; ж) сложение двух моментов времени; з) вычитание из одного момента времени другого; и) сравнение двух моментов времени (первый раньше второго); к) сравнение двух моментов времени (первый позднее второго); л) сравнение двух моментов времени (первый равен второму); м) подсчет числа секунд между двумя моментами времени. Указание к решению Для методов в) – е) следует учесть переход через 24 часа. Для методов и) – м) моменты времени находятся в пределах одних суток. 8 8. Класс Дата Дата задается в формате число.месяц.год. Методы класса: а) ввод даты; б) вывод даты в заданном формате; в) сложение даты и заданного количества дней; г) вычитание из даты заданного количества дней; д) вычисление числа дней, прошедших между двумя датами; е) сравнение двух дат (первая раньше второй); ж) сравнение двух дат (первая позже второй); з) сравнение двух дат (первая равна второй). Указание к решению Для методов в) – д) следует учесть високосные года. Пусть x – две старшие цифры года, y – две младшие цифры года. Год считается високосным по григорианскому календарю, если y 0 и делится на 4 или y 0 и x делится на 4. Например, 2000 и 20004 годы – високосные, 1900 и 2006 годы нет. 9. Класс Вектор Описывается одномерный массив целых чисел (вектор). Массив может быть размещен в памяти: – с помощью оператора описания (статически), – с помощью операций выделения памяти (динамически). Методы класса: а) ввод вектора; б) вывод вектора; 9 в) поэлементное сложение двух векторов (размер векторов может быть различным); г) поэлементное вычитание двух векторов (размер векторов может быть различным); д) скалярное произведение двух векторов; е) умножение вектора на число; ж) определение длины вектора; з) доступ к заданному элементу вектора; и) вывод элемента вектора по заданному индексу. Указание к решению Предусмотреть контроль выхода за границу массива. 10. Класс Полином Класс многочленов от одной переменной задается степенью многочлена и массивом коэффициентов: a0 x n a1 x n 1 a n 1x an Методы класса: а) создание полинома по заданной степени и коэффициентам; б) вывод полинома; в) сложение двух полиномов; г) вычитание двух полиномов; д) умножение полинома на число; е) вычисление значения полинома для заданного значения аргумента; ж) дифференцирование полинома (получение нового объекта-многочлена – производной заданного многочлена); з) сравнение на равенство двух полиномов. 10 11. Класс Матрица целых чисел Описывается квадратная целочисленная матрица произвольного порядка. Матрица может быть размещена в памяти: – с помощью оператора описания (статически), – с помощью операций выделения памяти (динамически). Методы класса: а) ввод матрицы; б) вывод матрицы; в) вычисление следа матрицы; г) вычисление нормы матрицы ( max aij ); д) сложение двух матриц; е) вычитание двух матриц; ж) умножение матрицы на число; з) умножение двух матриц; и) поэлементное сравнение двух матриц на равенство; к) сравнение двух матриц по норме; л) транспонирование матрицы; м) проверка типа матрицы: – нулевая, – единичная, – диагональная, – верхняя треугольная, – нижняя треугольная, – мономиальная (если в каждой ее строке и в каждом столбце имеется лишь один элемент, отличный от нуля). Указания к решению Предусмотреть контроль выхода за границы массива. Для методов д) – е) и з) – к) обеспечить проверку равенства размерностей. 11 12. Класс Вещественная Матрица Описывается вещественная матрица размера m n . Матрица может быть размещена в памяти: – с помощью оператора описания (статически), – с помощью операций выделения памяти (динамически). Методы класса: а) ввод матрицы; б) вывод матрицы; в) сложение двух матриц; г) вычитание двух матрицы; д) умножение матрицы на число; е) деление матрицы на число; ж) умножение двух матриц; з) поэлементное сравнение двух матриц; и) вычисление нормы матрицы max aij ; к) сравнение двух матриц по норме; л) транспонирование матрицы; м) проверка типа матрицы, если m n : – нулевая, – единичная, – диагональная, – верхняя треугольная, – нижняя треугольная, – мономиальная (если в каждой ее строке и в каждом столбце имеется лишь один элемент, отличный от нуля). Указания к решению Предусмотреть контроль выхода за границы массива. Для методов в) – г) и ж) – з) обеспечить проверку равенства размерностей. 12 13. Класс Строка Строка задается длиной и указателем на выделенную для нее память. Методы класса: а) ввод строки; б) вывод строки; в) слияние строк (конкатенация); г) сравнение строк; д) удаление из строки заданного символа; е) удаление из строки всех символов, равных заданному; ж) вставка в строку заданного символа после первого вхождения другого заданного символа; з) вставка в строку заданного символа после каждого вхождения другого заданного символа; и) переворот строки. Указание к решению Строка представляет собой массив, завершающийся нуль-символом ‘\0’, поэтому при задании длины строки, необходимо его учитывать. 14. Класс Список Описать класс, реализующий линейный однонаправленный список целых чисел. Методы класса: а) создание списка добавлением нового элемента в начало списка; б) создание списка добавлением нового элемента в конец списка; в) вывод списка; г) добавление элемента в начало списка; д) добавление элемента в конец списка; 13 е) поиск элемента с заданным значением (возвращает указатель на элемент или 0, если такого элемента в списке нет); ж) удаление элемента с заданным значением; з) удаление всех элементов с заданным значением; и) вставка нового элемента после элемента с заданным значением; к) сравнение на равенство двух списков; л) выбор элемента списка с заданным номером; м) сравнение длин двух списков (первый короче второго); н) сравнение длин двух списков (первый длиннее второго); о) сравнение длин двух списков (длины равны). 15. Класс Двусвязный список Описать класс, реализующий двусвязный линейный список целых чисел. Методы класса: а) создание списка; б) вывод списка; в) добавление элемента в начало списка; г) добавление элемента в конец списка; д) поиск элемента с заданным значением (возвращает указатель на элемент или), если такого элемента в списке нет); е) удаление элемента с заданным значением; ж) удаление всех элементов с заданным значением; з) вставка нового элемента после элемента с заданным значением; и) сравнение на равенство двух списков; к) выбор элемента списка с заданным номером; л) сравнение длин двух списков (первый короче второго); м) сравнение длин двух списков (первый длиннее второго); н) сравнение длин двух списков (длины равны). 14 16. Класс Стек Описать класс, реализующий стек целых чисел. Методы класса: а) создание стека; б) добавление элемента в стек; в) выбор элемента из стека, удаляя его из стека; г) получение значения вершины стека (без удаления элемента из стека); д) проверка наличия элементов в стеке. 17. Класс Очередь Описать класс, реализующий очередь целых чисел. Методы класса: а) создание очереди; б) добавление элемента в очередь; в) удаление элемента из очереди; г) проверка наличия элементов в очереди; д) просмотр элементов очереди. 18. Класс Дерево Описать класс, реализующий дерево поиска (значения узлов дерева – целые числа). Методы класса: а) создание дерева поиска; б) обход дерева сверху вниз (префиксный обход); в) обход дерева снизу вверх (постфиксный обход); г) обход дерева слева направо (инфиксный обход); д) вывод значений узлов дерева на экран с выделением уровней [6] (обход справа налево); 15 е) добавление узла в дерево; ж) удаление узла с заданным значением; з) поиск по дереву (возвращает указатель на найденный элемент или 0, если элемент с заданным значением не найден); и) поиск по дереву с включением (возвращает указатель на найденный элемент или включает элемент в соответствующее место и возвращает указатель на него); к) подсчет количества листьев дерева; л) подсчет внутренних узлов дерева; м) сравнение на равенство двух деревьев. 16 ЗАДАНИЕ 2. ПЕРЕГРУЗКА ОПЕРАЦИЙ Перегрузка операций позволяет переопределить для классов (новых типов данных) операции, определенные для встроенных (стандартных) типов данных, например, + , < , = = и т.д. Для классов, описанных в задании 1, перегрузить (переопределить) операции. Перегрузку операций осуществить с помощью – методов класса, – дружественных функций. 1. Для класса Дробь переопределить следующие операции: а) ввод дроби (операция >>); б) вывод дроби в виде m n (операция <<); в) сложение двух дробей; г) вычитание двух дробей; д) умножение двух дробей; е) деление двух дробей; ж) сравнение двух дробей (операция <); з) сравнение двух дробей (операция >); и) сравнение двух дробей (операция = =). 2. Для класса Комплексное число переопределить следующие операции: а) ввод числа (операция >>); б) вывод числа в виде a bi (операция <<); в) сложение двух чисел; г) вычитание двух чисел; д) умножение двух чисел; е) деление двух чисел. 17 3. Для класса Комплексное число переопределить следующие операции: а) ввод числа (операция >>); б) вывод числа в виде r cos i sin (операция <<); в) умножение двух чисел; г) деление двух чисел; д) возведение числа в целую степень (операция ^). 4. Для класса Вектор 2 переопределить следующие операции: а) ввод вектора (операция >>); б) вывод вектора (операция <<); в) сложение двух векторов; г) вычитание двух векторов; д) скалярное произведение двух векторов; е) умножение вектора на число; ж) деление вектора на число. 5. Для класса Вектор 3 переопределить следующие операции: а) ввод вектора (операция >>); б) вывод вектора (операция <<); в) сложение двух векторов; г) вычитание двух векторов; д) скалярное произведение двух векторов; е) умножение вектора на число; ж) деление вектора на число. 18 6. Для класса Матрица 2 переопределить следующие операции: а) ввод матрицы (операция >>); б) вывод матрицы (операция <<); в) сложение двух матриц; г) вычитание двух матриц; д) умножение матрицы на число; е) умножение двух матриц; ж) поэлементное сравнение двух матриц (операция = =). 7. Для класса Время переопределить следующие операции: а) ввод момента времени (операция >>); б) вывод момента времени в формате час.минута.секунда (операция <<); в) добавление ко времени заданного количества секунд; г) вычитание из времени заданного количества секунд; д) сложение двух моментов времени; е) вычитание из одного момента времени другого. ж) подсчет числа секунд между двумя моментами времени (операция %); з) сравнение двух моментов времени (операция <); и) сравнение двух моментов времени (операция >); к) сравнение двух моментов времени (операция = =); 8. Для класса Дата переопределить следующие операции: а) ввод даты (операция >>); б) вывод даты в формате число.месяц.год (операция <<); в) сложение даты и заданного количества дней; г) вычитание из даты заданного количества дней; д) вычисление числа дней, прошедших между двумя датами (операция %); е) сравнение двух дат (операция <); ж) сравнение двух дат (операция >); з) сравнение двух дат (операция = =). 19 9. Для класса Вектор переопределить следующие операции: а) ввод вектора (операция >>); б) вывод вектора (операция >>); в) сложение двух векторов; г) вычитание двух векторов; д) скалярное произведение двух векторов; е) умножение вектора на число; ж) деление вектора на число; з) доступ к заданному элементу вектора (операция [ ]). 10. Для класса Полином переопределить следующие операции: а) ввод полинома (операция >>) – создание полинома по заданной степени и коэффициентам; б) вывод полинома (операция <<); в) сложение двух полиномов; г) вычитание двух полиномов; д) умножение полинома на число; е) вычисление значения полинома для заданного значения аргумента (операция ); ж) дифференцирование полинома (операция !); з) сравнение двух полиномов (операция = =). 11. Для класса Матрица целых чисел переопределить следующие операции: а) ввод матрицы (операция >>); б) вывод матрицы (операция <<); в) сложение двух матриц; г) вычитание двух матриц; 20 д) умножение матрицы на число; е) умножение двух матриц; ж) поэлементное сравнение двух матриц (операция = =); з) доступ к заданному элементу матрицы (операция [ ] [ ]). 12. Для класса Вещественная матрица переопределить следующие операции: а) ввод матрицы (операция >>); б) вывод матрицы (операция <<); в) сложение двух матриц; г) вычитание двух матриц; д) умножение матрицы на число; е) деление матрицы на число; ж) умножение двух матриц; з) поэлементное сравнение двух матриц (операция = =); и) доступ к заданному элементу матрицы (операция [ ] [ ]). 13. Для класса Строка переопределить операции: а) копирование строки (операция =); б) слияние строк (операция +); в) сравнение строк (операция = =); г) удаление из строки заданного символа (операция –); д) удаление из строки всех символов, равных заданному (операция – =); е) переворот строки (операция ~). 14. Для класса Список переопределить операции: а) создание списка (операция >>); б) вывод списка (операция <<); в) добавление элемента в начало списка (операция +); г) добавление элемента в конец списка (операция + =); 21 д) удаление элемента с заданным значением (операция –); е) удаление всех элементов с заданным значением (операция – =); ж) сравнение на равенство двух списков (операция = =); з) выбор элемента списка с заданным номером (операция [ ]); и) сравнение длин двух списков (операция <); к) сравнение длин двух списков (операция >); л) сравнение длин двух списков (операция =); м) слияние двух упорядоченных списков в один, не упорядоченности (операция *). 15. Для класса Двусвязный список переопределить операции: а) создание списка (операция >>); б) вывод списка (операция <<); в) добавление элемента в начало списка (операция +); г) добавление элемента в конец списка (операция + =); д) удаление элемента с заданным значением (операция –); е) удаление всех элементов с заданным значением (операция – =); ж) сравнение на равенство двух списков (операция = =); з) выбор элемента списка с заданным номером (операция [ ]); и) сравнение длин двух списков (операция <); к) сравнение длин двух списков (операция >); л) сравнение длин двух списков (операция =). 16. Для класса Стек переопределить операции: а) создание стека (операция >>); б) добавление элемента в стек (операция +); в) выбор элемента из стека (операция –); г) получение значения вершины стека (операция – =); д) просмотр элементов стека (операция <<); 22 нарушая 17. Для класса Очередь переопределить операции: а) создание очереди (операция >>); б) добавление элемента в очередь (операция +); в) удаление элемента из очереди (операция –); г) выбор элемента очереди с заданным номером (операция [ ]); д) удаление элемента из очереди с заданным значением (операция – –); е) удаление элемента из очереди по заданному номеру (операция – =); ж) сравнение на равенство двух очередей (операция = =); з) сравнение длин двух очередей (операция <); и) сравнение длин двух очередей (операция >); к) сравнение длин двух очередей (операция =); л) просмотр элементов очереди (операция <<). 18. Для класса Дерево переопределить операции: а) создание дерева поиска (операция >>); б) вывод значений узлов дерева на экран с выделение уровней [6] (операция <<); в) добавление узла в дерево (операция +); г) удаление узла с заданным значением (операция –); д) поиск по дереву с включением (операция + =); е) сравнение на равенство двух деревьев (операция = =); ж) копирование дерева (операция =). 23 ЗАДАНИЕ 3. ШАБЛОНЫ КЛАССОВ Шаблон – это обобщенное описание семейства классов, имеющих общую структуру и операции, но использующих различные типы и константы. Построить шаблон класса: 1) Вектор произвольных элементов; 2) Матрица произвольных элементов; 3) Список произвольных элементов; 4) Двусвязный список произвольных элементов; 5) Стек произвольных элементов; 6) Очередь произвольных элементов; 7) Дерево произвольных элементов. Продемонстрировать использование созданного шаблонного класса для различных типов элементов 24 ЗАДАНИЕ 4. НАСЛЕДОВАНИЕ Наследование – это возможность создания иерархии классов, когда потомки (производные классы) наследуют свойства своих предков (базовых классов), могут их изменять и добавлять новые. Создать базовый класс; на его основе создать производные классы. Написать программу, демонстрирующую работу с объектами этих классов. 1. Точка: Окружность: Круг. 2. Точка: Окружность: Цилиндр. 3. Точка: Отрезок, Треугольник. 4. Точка: Квадрат, Прямоугольник (стороны параллельны осям координат). 5. Точка: Произвольный полигон (n-угольник). 6. Список: Двусвязный список. 7. Список: Стек. 8. Список: Очередь. 9. Список: Дерево. 10. Человек: Студент, Преподаватель. 11. Человек: Ребенок, Работник, Пенсионер. 12. Млекопитающее: Животное, Человек. 25 ЛИТЕРАТУРА 1. Амелина Н.И. Задачи по программированию. / Н.И. Амелина, Я.М. Демяненко, Е.Н. Лебединская, Л.Г. Пасечный, И.Г. Спивак, А.Б. Усов. – М.: Вузовская книга, 2000. – 104 с. – ISBN 5-89522-109-2. 2. Крячков А.В., Сухинина И.В., Томшин В.К. Программирование на C и C++. Практикум. –М.: Горячая линия –Телеком, 2000.–344 с.–ISBN5-93517-014-0. 3. Минакова Н.И. Методы программирования. Учебное пособие / Н.И.Минакова, Е.С. Невская, Г.А. Угольницкий, А.А. Чекулаева, М.И. Чердынцева. – М.: Вузовская книга, 2000. –280 с. – ISBN 5-89522-038-X. 4. Павловская Т.А., Щупак Ю.А. С++. Объектно-ориентированное программирование: Практикум. –СПб.: Питер, 2004.–265 с. –ISBN 5-94723-842-X. 5. Скляров В.А. Программирование на языках Си и Си++: Практ. пособие. – М.: Высш.шк., 1996. – 240 с. – ISBN 5-06-002685-X. 6. Амелина Н.И., Чердынцева М.И. Структуры данных. Деревья. Методические указания по курсу «Алгоритмические языки и методы трансляции» для студентов механико-математического факультета дневного и вечернего отделения. – Ростов-на-Дону, УПЛ РГУ, 1998. 7. Невская Е.С., Чердынцева М.И. Программирование на языке С++ (объектно-ориентированное программирование). Методические указания для студентов 1 и 2 курсов (дневного и вечернего отделения) механикоматематического факультета. – Ростов-на-Дону, УПЛ РГУ, 2005. 8. Чекулаева А.А., Спивак И.Г. Динамические структуры данных. Методические указания для студентов вечернего отделения механикоматематического факультета. – Ростов-на-Дону, УПЛ РГУ, 1998. 26