Семинар 4. Дружественные функции. Перегрузка операторов. Динамическое распределение памяти.

Save this PDF as:
 WORD  PNG  TXT  JPG

Размер: px
Начинать показ со страницы:

Download "Семинар 4. Дружественные функции. Перегрузка операторов. Динамическое распределение памяти."

Транскрипт

1 Семинар 4. Дружественные функции. Перегрузка операторов. Динамическое распределение памяти. 1. Дружественные функции Дружественные функции обладает такими же правами доступа к данным класса, как и его методы (функции-элементы класса). Пример. Функция сравнения длин двух векторов. const Vector & comp2(const Vector & v1, const Vector & v2) if (v1.x*v1.x + v1.y*v1.y > v2.x*v2.x + v2.y*v2.y ) return v1; else return v2; void main() Vector v1(1.,1.); Vector v2(2.,2.); Vector v3 = comp2(v1,v2); v3.show(); Функция comp2 не принадлежит классу (нет модификатора Vector::) и, соответственно, не является методом этого класса. Может ли она, тем не менее, иметь доступ к данным класса? Может, если ее объявить в этом классе дружественной: class Vector public: friend const Vector & comp2(const Vector &, const Vector &); (Упражнение С4_1) 2. Перегрузка операторов Для сложения двух векторов можно написать метод sum, например: Vector Vector::sum(const Vector v) const return Vector(x + v.x, y + v.y); и сложение будет выглядеть так: Vector v3 = v1.sum(v2); Между тем, сложить две целочисленные переменные a и b или переменные любого другого базового типа можно довольно просто, используя оператор + : c = a + b; Нельзя ли этот оператор приспособить (перегрузить) для сложения новых типов данных, которыми являются классы? Можно. В Си++ можно перегрузить почти все стандартные операторы (кроме.,.*, ::,?:, sizeof). Для этого нужно написать специальную

2 (операторную) функцию, которая будет вызвана при перегрузке соответствующего оператора. Для примера перегрузим оператор + так, чтобы при его использовании с двумя векторами результатом был третий вектор, равный сумме двух исходных. Операторная функция имеет вид: operatorоп (список_аргументов). Добавляем в класс прототип этой функции: class Vector public: Vector operator+(const Vector) const; и пишем саму функцию: Vector Vector::operator+(const Vector v) const return Vector(x + v.x, y + v.y); Фактически, мы просто заменили имя функции-элемента sum на operator+. По-прежнему, использование модификаторов const гарантирует неизменность исходных векторов. Теперь складывать вектора можно следующим образом: Vector v1(5.,1.); Vector v2(2.,2.); Vector v3 = v1+v2; (*) Примечание. Порядок следования операндов, в общем случае, важен для операторной функции. К первому операнду (v1) операторная функция-элемент имеет неявный доступ, как к объекту, для которого она вызвана, и обращение к данным происходит напрямую. Ко второму операнду (v2) доступ организован явным образом, как к формальному параметру функции. Это хорошо видно, если выражение (*) записать в эквивалентном функциональном виде: Vector v3 = v1.operator+(v2); 3. Дружественная операторная функция Оператор может быть перегружен не только с помощью операторной функции-элемента, но и с помощью дружественной операторной функции. В последнем случае, перегрузка того же оператора + для двух векторов может быть выполнена так: Vector operator+(const Vector v1, const Vector v2) return Vector(v1.x + v2.x, v1.y + v2.y); при одновременном объявлении в классе Vector этой функции дружественной: friend Vector operator+(const Vector, const Vector); Примечание. Следующие операторы могут быть перегружены только с помощью функции-элемента: =, (), [],->. (Упражнения С4_2, С4_3, С4_4) 2

3 4. Перегрузка оператора вывода в поток << Для удобства вывода значений координат вектора желательно иметь возможность делать это стандартным образом с помощью оператора <<. У оператора вывода в поток << два операнда. Первый (cout) - это объект класса ostream, второй операнд будет объектом класса Vector. Операторная функция может иметь вид: void operator<<(ostream & os, const Vector & v) os << "x = " << v.x << ", y = " << v.y ; В классе Vector её следует объявить дружественной. Однако такая перегрузка не позволит использовать выражения с цепочкой операторов вывода << вида: cout << v1 << endl; Чтобы реализовать такую возможность нужно, чтобы перегруженный оператор << возвращал объект класса ostream. Улучшенный вариант операторной функции имеет вид: ostream & operator<<(ostream & os, const Vector & v) os << "x = " << v.x << ", y = " << v.y ; return os; (Упражнение С4_5) 5. Приведение к типу класса Базовые типы могут быть преобразованы друг в друга явным образом, например: int i = 10; double d = (double) i; или double d = double (i); или неявным: double d = i; Аналогичное приведение типа для класса осуществляется путем вызова конструктора с одним параметром. Неявное приведение типа в выражении Vector v = 10; (**) эквивалентно выражению (явное преобразование) Vector v = Vector(10); Примечание. Неявное преобразование (**) можно запретить, если при объявлении прототипа конструктора с одним параметром указать модификатор explicit. 6. Функции преобразования Обратное преобразование из типа класса осуществляется с помощью специальной формы операторной функции - функции преобразования: operator имя_типа(); Функция преобразования должна быть методом класса без аргументов и не иметь явного возвращаемого типа, но, тем не менее, возвращать указанный (имя_типа) тип. Например, функция преобразования в тип double должна иметь следующий прототип: operator double(); 3

4 7. Конструктор копирования и оператор присваивания Vector v1; //вызывается конструктор по умолчанию для создания объекта v1. Vector v2 = v1; //для создания объекта v2 вызывается конструктор копирования. v2 = v1; // оператор присваивания (вызывается операторная функция присваивания). По умолчанию, как конструктор копирования, так и оператор присваивания осуществляют поэлементное копирование всех элементов данных одного объекта в другой. Это работает даже, если элемент данных является массивом, структурой или объектом другого класса. Например, если в класс Vector добавить элемент данных в виде массива: class Vector private: double x; double y; char c[100]; то данные объекта v2 из приведенного выше примера будут иметь такие же значения, как у объекта v1, включая одинаковые значения всех элементов массива c[20]. Каждый класс снабжается конструктором копирования по умолчанию. Его имя (как и имя любого другого конструктора) совпадает с именем класса, при этом он имеет один параметр константную ссылку на объект того же класса. Например, для класса Vector конструктор копирования имеет следующий прототип: Vector(const Vector &); 8. Динамическое распределение памяти в классе Предположим мы хотим добавить в класс Vector элемент данных для хранения имени вектора. В принципе, для этого подошло бы поле char c[100]. Однако хранить в каждом новом объекте массив из 100 элементов довольно расточительно, если в большинстве случаев длина имени гораздо меньше. Возможно, лучшим решением будет динамическое выделение необходимой памяти при создании объекта. При этом в классе объявляется указатель: class Vector private: double x; double y; char *c; Непосредственно память удобно выделить объекту с помощью оператора new[] в момент его создания, т.е. при вызове конструктора. Например, класс Vector можно снабдить конструктором с тремя параметрами, последним из которых будет указатель на строку с именем вектора: Vector::Vector(double xx, double yy, const char *str) x = xx; y = yy; int len = strlen (str)+1; cp = new char[len]; strncpy(cp, str, len); 4

5 Для освобождения выделенной оператором new [] объекту дополнительной памяти следует использовать деструктор: Vector::~Vector() delete [] cp; Проблемы при таком подходе могут возникнуть с конструктором копирования и оператором присваивания по умолчанию. При их использовании будет скопировано значение указателя cp, но не сама дополнительная память. Это приведет к тому, что два объекта будут иметь два разных (у каждого свой) указателя, которые указывают на одну и туже область памяти. Это является источником потенциальных ошибок. Например, при удалении одного объекта, указатель в другом объекте будет указывать на уже несуществующую область памяти. Чтобы этого избежать, при копировании (и присваивании) нужно копировать не указатели, а сами данные (эта процедура называется «глубоким копированием»), выделяя новую область памяти для их хранения. Для этого нужно перегрузить конструктор копирования класса: Vector::Vector(const Vector & v2) x = v2.x; y = v2.y; int len = strlen (v2.cp)+1; cp = new char[len]; strncpy(cp, v2.cp, len); В нем обычные элементы данных по-прежнему просто копируются, а для динамических данных вначале выделяется новое место, куда и происходит затем копирование. По этой же причине следует переопределить и оператор присваивания, который должен вначале удалить выделенную ранее область памяти, затем выделить новую область необходимого размера и скопировать туда значения динамических элементов данных: Vector::Vector & operator=(const Vector & v) if (this == &v) return *this; delete [] cp; x = v.x; y = v.y; int len = strlen(v.cp)+1; cp = new char[len]; strncpy(cp, v.cp, len); return *this; Условный оператор здесь использован для обработки случая, когда присваивание происходит самому себе: v = v. Такой подход предполагает, что при создании объекта в каждом конструкторе выделяется динамическая память. При этом даже если достаточно выделить только один байт, он выделяется с помощью оператора new [], т.к. в деструкторе используется оператор delete []. Например, в конструкторе по умолчанию можно задать в качестве имени пустую строку следующим образом: 5

6 Vector2::Vector2() x = 1.; y = 0.; cp = new char[1]; cp[0] = '\0'; Альтернативный подход заключается в присвоении указателю специального нулевого значения cp = NULL, если реальной необходимости хранения имени данного объекта нет. Литература. Стивен Прата. "Язык программирования Си++. Лекции и упражнения. Учебник: Пер. С англ." - ООО ДиаСофтЮП, Главs Упражнение С4_1. 1. Создайте подобный классу Vector из задания С3_1 класс Vector2. Элементы данных нового класса пусть полностью совпадают с данными класса Vector, а из методов достаточно реализовать только конструкторы. Напишите функцию, которая в качестве входных параметров принимает две константные ссылки: на объект класса Vector и объект класса Vector2. Эта функция должна выводить на экран больший из элементов x двух объектов и больший из элементов y. 2. Напишите программу, в которой создайте вектор класса Vector и вектор класса Vector2. С помощью вашей функции выведите на экран большие по значению элементы этих векторов. Примечание. Не забывайте перед использованием имени некоторого класса дать его определение или «упреждающую» (до собственно определения класса) декларацию, например, class Vector2; Упражнение С4_2. 1. Перегрузите оператор - для использования как с двумя векторами класса Vector (вычитание двух векторов), так и с одним (поворот вектора на ). В первом случае для перегрузки используйте дружественную функцию, во втором функцию-элемент класса (метод). 2. Напишите программу, в которой продемонстрируйте использование перегруженных операторов. Упражнение С4_3. 1. Перегрузите оператор * для умножения вектора на число и числа на вектор (растяжение вектора). В первом случае для перегрузки используйте операторный метод, во втором - дружественную функцию. 2. Напишите программу, в которой продемонстрируйте использование перегруженного оператора. 6

7 Упражнение С4_4. 1. Перегрузите операторы += и -= для сложения и вычитания векторов. 2. Перегрузите операторы отношения < и > для сравнения двух объектов класса Vector. При сравнении считать большим тот вектор, у которого больше его модуль. 3. Продемонстрируйте использование перегруженных операторов. Упражнение С4_5. 1. Перегрузите оператор << для вывода на экран объекта класса MyTime из упражнения C3_2. Упражнение С4_6. 1. Напишите функцию преобразования объектов класса Vector в тип double. Возвращаемое значение должно быть равным модулю вектора. Указание. Для вычисления модуля используйте ранее написанный соответствующий метод класса Vector. Упражнение С4_7*. 1. Разработайте класс комплексных чисел Complex с двумя конструкторами с двумя параметрами (действительная и мнимая части числа) и одним параметром (действительная часть). 2. Включите в класс публичные методы, возвращающие Действительную часть числа Мнимую часть числа Модуль комплексного числа Комплексно-сопряженное число 3. Перегрузите оператор << для вывода в поток комплексного числа в виде (x, y), где x и y действительная и мнимая части. 4. Перегрузите следующие операторы для использования с объектами класса Complex, Сomplex и double, double и Complex: +, -, *, / - сложение, вычитание, умножение и деление. 5. Перегрузите следующие операторы для использования с объектами класса Complex: - - унарный минус, <, >, == - операторы сравнения. 6. Предусмотрите функцию преобразования объектов класса Complex в тип double Упражнение С4_8. 1. Измените ваш класс Vector, предусмотрев выделение динамической памяти для хранения текстового имени вектора. Измените соответствующим образом конструкторы и деструктор класса, включая конструктор копирования. Перегрузите оператор присваивания. 2. Перегрузите оператор сложения векторов + так, чтобы суммарный вектор не только был суммой векторов в геометрическом смысле, но и приобретал имя, являющееся объединением имен складываемых векторов. 7

8 Упражнение С4_9* 1. Создайте класс рациональное число с двумя защищенными целочисленными элементами данных, соответствующих числителю и знаменателю. Напишите конструктор класса с двумя параметрами и значением знаменателя по умолчанию равным 1. Напишите конструктор копирования и деструктор. 2. Перегрузите для этого класса операторы +, -, *, /, +=, -=, *=, /=, операторы присваивания, ввода и вывода. 3. Напишите операторную функцию преобразования к типу int. 4. Объявите публичные методы, возвращающие числитель, знаменатель и меняющий местами числитель и знаменатель. 5. Для демонстрации возможности вашего класса напишите программу «калькулятор», которая после ввода с клавиатуры двух рациональных чисел r1, r2 и арифметической операции op выполняет эту операцию и выдает результат r3 на экран с помощью перегруженного оператора вывода. 8

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы.

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. 1. Статическая (static) переменная класса Добавим в определение класса статическую переменную: private: // double x;

Подробнее

С.А. Шленов, А.А. Лукашёв. Язык программирования Cи++ Учебно-методическое пособие по дисциплине «Программирование и информатика»

С.А. Шленов, А.А. Лукашёв. Язык программирования Cи++ Учебно-методическое пособие по дисциплине «Программирование и информатика» С.А. Шленов, А.А. Лукашёв Язык программирования Cи++ Учебно-методическое пособие по дисциплине «Программирование и информатика» Москва Физический факультет МГУ имени М.В. Ломоносова 2016 Шленов Святослав

Подробнее

Семинар 6. Наследование. Включение объектов и закрытое наследование. Множественное наследование. Шаблоны классов.

Семинар 6. Наследование. Включение объектов и закрытое наследование. Множественное наследование. Шаблоны классов. Семинар 6. Наследование. Включение объектов и закрытое наследование. Множественное наследование. Шаблоны классов. 1. Наследование и динамическое распределение памяти Пусть в базовом классе осуществляется

Подробнее

Перегрузка операторов

Перегрузка операторов Перегрузка операторов На самом деле: определение действий операторов для пользовательских типов путём определения функций-операторов Это произведение доступно по лицензии Creative Commons Attribution-ShareAlike

Подробнее

Язык программирования Си++ Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки.

Язык программирования Си++ Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки. Язык программирования Си++ Иванов А.П., Князева О.С. Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки. 1. Массивы объектов Встроенное в язык Си++ понятие

Подробнее

Язык программирования Си++ Семинар 3. Наследование и полиморфизм

Язык программирования Си++ Семинар 3. Наследование и полиморфизм Язык программирования Си++ Иванов А.П., Князева О.С. Семинар 3. Наследование и полиморфизм Для эффективной разработки программ удобно использовать иерархическое упорядочение понятий и объектов. Такое упорядочение

Подробнее

Иногда возникает потребность описывать и применять к созданным программистом типам данных операции, по смыслу эквивалентные уже имеющимся в языке

Иногда возникает потребность описывать и применять к созданным программистом типам данных операции, по смыслу эквивалентные уже имеющимся в языке 2013 Иногда возникает потребность описывать и применять к созданным программистом типам данных операции, по смыслу эквивалентные уже имеющимся в языке 2 Перегрузка операций предполагает введение в язык

Подробнее

Концепция перемещений (move) (C++11)

Концепция перемещений (move) (C++11) Концепция перемещений (move) (C++11) В стандарт C++11 введены перемещающие конструктор и оператор присваивания, для более оптимального управления объектами Пример I: функция обмена для двух стеков void

Подробнее

Язык программирования Си++ Семинар 1. Классы, конструкторы, деструктор, перегрузка операторов.

Язык программирования Си++ Семинар 1. Классы, конструкторы, деструктор, перегрузка операторов. Литература: Язык программирования Си++ Иванов А.П., Князева О.С. 1. В.В. Подбельский. «Стандартный Си++» Москва, Финансы и статистика, 2008, 688 с. 2. Б. Страуструп. «Язык программирования Си++. Специальное

Подробнее

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы ООП. С++. Вопросы для проверки и закрепления знаний. 1. Проанализируйте ранее разработанные Вами программы и ответьте на вопрос: в каких из них наблюдается слабая связь между структурой данных и функционированием

Подробнее

ЛАБОРАТОРНАЯ РАБОТА 1. Работа с проектами в среде Borland С.

ЛАБОРАТОРНАЯ РАБОТА 1. Работа с проектами в среде Borland С. ЛАБОРАТОРНАЯ РАБОТА 1 Работа с проектами в среде Borland С. Изучить среду программирования, освоить навыки работы с проектами. Восстановить навыки работы со структурами, освоить приемы использования функций

Подробнее

Теория и технология программирования Основы программирования на языках C и C++

Теория и технология программирования Основы программирования на языках C и C++ Теория и технология программирования Основы программирования на Лекция 11. Проектирование классов. Числовые объекты, перегрузка операций. Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Числовые

Подробнее

Друзья класса. Друг класса это функция, не являющаяся членом этого класса, но имеющая доступ к его private и protected членам.

Друзья класса. Друг класса это функция, не являющаяся членом этого класса, но имеющая доступ к его private и protected членам. Друзья класса Друг класса это функция, не являющаяся членом этого класса, но имеющая доступ к его private и protected членам. Своих друзей класс объявляет сам в любой зоне описания класса с помощью служебного

Подробнее

Введение в С++11 (стандарт ISO/IEC 14882:2011 Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами:

Введение в С++11 (стандарт ISO/IEC 14882:2011 Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами: (стандарт ISO/IEC 14882:2011 ) Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами: ведение понятий лямбда-функций и выражений, внешние шаблоны, альтернативный синтаксис шаблонных

Подробнее

Язык C++ С++ позволяет справиться с возрастающей сложностью программ (в отличие от С). Стандарты (комитета по стандартизации ANSI) 1998, 2011.

Язык C++ С++ позволяет справиться с возрастающей сложностью программ (в отличие от С). Стандарты (комитета по стандартизации ANSI) 1998, 2011. Язык C++ С++ позволяет справиться с возрастающей сложностью программ (в отличие от С). Автор Бьёрн Страуструп. Стандарты (комитета по стандартизации ANSI) 1998, 2011. С++: лучше С, поддерживает абстракции

Подробнее

Введение в ООП на C++: классы, объекты, поля, методы, операторы

Введение в ООП на C++: классы, объекты, поля, методы, операторы Введение в ООП на C++: классы, объекты, поля, методы, операторы А. Г. Фенстер, fenster@fenster.name 17 сентября 2010 г. Конспект семинара 1 по объектно-ориентированному программированию. Пожалуйста, не

Подробнее

Язык программирования Си++ Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания.

Язык программирования Си++ Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания. Язык программирования Си++ Иванов А.П., Князева О.С. Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания. Зачет проводится в практикуме и состоит из двух частей: теоретической

Подробнее

Лекция 3. Операции и функции свободной памяти

Лекция 3. Операции и функции свободной памяти Название Лекция 3. и функции свободной памяти Проектирование ПО на C ++ 25 сентября 2010 г. Лекция 3 1 / 33 Объявления функций, использующих исключения Реализация функций выделения памяти Реализация обработчика

Подробнее

Перегрузка функций и операторов. Виртуальные функции. Концепция полиморфизма.

Перегрузка функций и операторов. Виртуальные функции. Концепция полиморфизма. Студенческая лаборатория МФТИ-Intel Перегрузка функций и операторов. Виртуальные функции. Концепция полиморфизма. Максим Кузнецов maks.kuznetsov@gmail.com 22-23.03.2013 http://ilab.mipt.ru Содержание лекции

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 8

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 8 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017 Лекция 8 1 Указатели & - операция адресации * - операция разыменования int a = 1; int *p; p = &a; *p = 2; printf ("Значение переменной a = %d\n",

Подробнее

Перегрузка операций. Московский авиационный институт. (технический исследовательский университет) Электронно-вычислительные средства и информатика

Перегрузка операций. Московский авиационный институт. (технический исследовательский университет) Электронно-вычислительные средства и информатика С сайта www.malshakov.ru Московский авиационный институт (технический исследовательский университет) Кафедра 403 Электронно-вычислительные средства и информатика Перегрузка операций студент 1-го курса

Подробнее

4.13. Строки. 10 символов char string[11]; "строка в кавычках" Строковая константа - char str[ ] = Counted by compiler! ;

4.13. Строки. 10 символов char string[11]; строка в кавычках Строковая константа - char str[ ] = Counted by compiler! ; -одномерные массивы типа char, заканчивающийся нулевым байтом - '\0 или '\x0 10 символов char string[11]; 4.13. Строки Строковая константа - "строка в кавычках" добавляется '\0 char str[ ] = Counted by

Подробнее

Лекция 3. Использование динамической памяти

Лекция 3. Использование динамической памяти Название Виды памяти Лекция 3. Использование динамической памяти Метапрограммирование в C ++ 17 февраля 2017 г. Лекция 3 1 / 30 Название Виды памяти Виды памяти в программе на C ++ Название Хранимые объекты

Подробнее

Языки и методы программирования. Электронные тесты промежуточного контроля знаний

Языки и методы программирования. Электронные тесты промежуточного контроля знаний МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ имени академика

Подробнее

Тема 1.3 Операции в С

Тема 1.3 Операции в С Тема 1.3 Операции в С Преобразование типов явное и неявное. Операции арифметического типа. Преобразование типа в операции присвоения. Операции логического типа. Одноместные и двуместные операции. Адресные

Подробнее

C++ MFC / STL / CLI.NET Visual Studio

C++ MFC / STL / CLI.NET Visual Studio C++ MFC / STL / CLI.NET Visual Studio Популярность языков (по данным tiobe.com (янв-2014) Язык программирования 2014 2009 2004 1999 1994 1989 C 1 2 2 1 1 1 Java 2 1 1 16 - - Objective-C 3 42 48 - - - C++

Подробнее

Теория и технология программирования Основы программирования на языках C и C++

Теория и технология программирования Основы программирования на языках C и C++ Теория и технология программирования Основы программирования на языках Лекция 17. Стандарты и реализации Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Основные стандарты и реализации Язык

Подробнее

Перегрузка функций. Перегрузка операторов

Перегрузка функций. Перегрузка операторов Лабораторная работа 3 Перегрузка функций. Перегрузка операторов Цель работы: 1) изучить возможности программирования классов на языке С++; 2) получить основные навыки программирования. Теоретические сведения

Подробнее

Шаблоны (параметризованные типы)

Шаблоны (параметризованные типы) Лабораторная работа 2 Шаблоны (параметризованные типы) Цель работы: изучить представление и правила работы с шаблонами в С++. Теоретические сведения Использование шаблонов призвано, облегчить процесс написания

Подробнее

Ключевые слова языка С#

Ключевые слова языка С# 1 abstract, см. также 11, 55 2 as, см. также 37 Ключевые слова языка С# Модификатор abstract используется при объявлении класса, метода или свойства. Использование модификатора abstract в объявлении класса

Подробнее

Программирование в C++ Преподаватель Колотова Людмила Павловна

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 9-го занятия по практике Указатели. Адреса и указатели. Указатель на void Указатели и массивы. Указатели и строки Диаграммы UML

Подробнее

Перегрузка функций. О перегрузке можно говорить только для функций из одной области описания

Перегрузка функций. О перегрузке можно говорить только для функций из одной области описания Перегрузка функций О перегрузке можно говорить только для функций из одной области описания Перегрузка: struct A { int f (int x); // две функции с одинаковым именем в одной области int f (char x); // описания;

Подробнее

Лекции по курсу Алгоритмы и алгоритмические языки, 1 курс, 1 поток, 2010/2011 уч.год.

Лекции по курсу Алгоритмы и алгоритмические языки, 1 курс, 1 поток, 2010/2011 уч.год. Лекция 8 Массивы и указатели 8.1. Указатели 8.1.1. Организация памяти в компьютере массив последовательно пронумерованных (адресуемых) ячеек, которые можно обрабатывать по отдельности, либо группами. Указатель

Подробнее

«Утверждаю» Заведующий кафедрой /О.И.Наранович/ «29»_ г. Пр. 7

«Утверждаю» Заведующий кафедрой /О.И.Наранович/ «29»_ г. Пр. 7 «Утверждаю» Заведующий кафедрой /О.И.Наранович/ «29»_08 2016 г. Пр. 7 Вопросы к экзамену по дисциплине «Объектно-ориентированное программирование» по специальности «Информационные системы и технологии»

Подробнее

Программирование в C++ Преподаватель Колотова Людмила Павловна

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 6-го занятия по практике Объекты и классы. Простой класс. Определение класса. Вызов методов класса Объекты программы и объекты

Подробнее

1. Подобъекты. Отношения включения между объектами

1. Подобъекты. Отношения включения между объектами 1. Подобъекты. Отношения включения между объектами Пусть определен такой класс: A a; Говорят, что a включает b и c, или a состоит из b и c, или b и c являются частью a. (?) В какой момент вызываются конструкторы

Подробнее

УЧЕБНЫЙ ПРИМЕР РЕАЛИЗАЦИИ КЛАССА "МНОГОЧЛЕН" НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ C++

УЧЕБНЫЙ ПРИМЕР РЕАЛИЗАЦИИ КЛАССА МНОГОЧЛЕН НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ C++ NovaInfo.Ru - 29, 2014 г. Технические науки 1 УЧЕБНЫЙ ПРИМЕР РЕАЛИЗАЦИИ КЛАССА "МНОГОЧЛЕН" НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ C++ Дмитриев Владислав Леонидович Около сорока лет назад большая часть программирования

Подробнее

Комплект учебно-программной документации. «Технология ООП и основы программирования на С++»

Комплект учебно-программной документации. «Технология ООП и основы программирования на С++» Комплект учебно-программной документации «Технология ООП и основы программирования на С++» УЧЕБНАЯ ПРОГРАММА «Технология ООП и основы программирования на С++» Цель курса: Ознакомить слушателей с основами

Подробнее

Язык программирования Си. Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания.

Язык программирования Си. Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания. Язык программирования Си Бикулов Д.А., Иваницкая Н.В., Иванов А.П. Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания. Зачет проводится в практикуме и состоит из двух частей:

Подробнее

Занятие 7 Динамические массивы и указатели. Рекурсивные функции. Строки

Занятие 7 Динамические массивы и указатели. Рекурсивные функции. Строки Занятие 7 Динамические массивы и указатели. Рекурсивные функции. Строки Программирование, численные методы и информатика А. В. Позднеев Кафедра автоматизации научных исследований Факультет вычислительной

Подробнее

int *p, c; char *strdup(char *ptr); int *aptr[20]; p = &c;

int *p, c; char *strdup(char *ptr); int *aptr[20]; p = &c; 1 Занятие 5 1.1 Указатели Рассмотрим важнейший производный тип указательный. Если base это некоторый базовый тип, то тип указателя на тип base имеет своим множеством значений всевозможные адреса памяти,

Подробнее

Программирование в C++ Преподаватель Колотова Людмила Павловна

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 5-го занятия по практике Структуры. Простая структура. Доступ к полям структуры Структура параметр функции Структура значение

Подробнее

Инкапсуляция и сокрытие данных Наследование Полиморфизм. Основа ООП - абстрагирование, создание типов, определенных пользователем

Инкапсуляция и сокрытие данных Наследование Полиморфизм. Основа ООП - абстрагирование, создание типов, определенных пользователем Инкапсуляция и сокрытие данных Наследование Полиморфизм Основа ООП - абстрагирование, создание типов, определенных пользователем Следствие введения классов расширение возможностей повторного использования

Подробнее

Шаблоны C++ Абстрактное программирование

Шаблоны C++ Абстрактное программирование Абстрактное программирование Это произведение доступно по лицензии Creative Commons Attribution-ShareAlike ( Атрибуция На тех же условиях ) 3.0 Непортированная. http://creativecommons.org/licenses/by-sa/3.0/deed.ru

Подробнее

Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы

Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы Программирование, численные методы и информатика Александр Валерьевич Позднеев Кафедра автоматизации

Подробнее

Лабораторная работа 2 Разработка и отладка алгоритмов и программ с использованием указателей

Лабораторная работа 2 Разработка и отладка алгоритмов и программ с использованием указателей Лабораторная работа 2 Разработка и отладка алгоритмов и программ с использованием указателей 1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков работы с указателями. 2. ОСНОВНЫЕ ПОНЯТИЯ Указатель это переменная,

Подробнее

Теория и технология программирования Основы программирования на языках C и C++

Теория и технология программирования Основы программирования на языках C и C++ Теория и технология программирования Основы программирования на языках C и C++ Лекция 12. Проектирование классов. Объекты-контейнеры Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Пример:

Подробнее

1

1 www.vasilev.kiev.ua 1 Перегрузка операторов Что бы мы делали без науки? Подумать страшно. из к/ф "31 июня" 2 operator* operator operator+ 3 static public 4 + - * / % & ^ > + -! ~ ++ -- true false ==!=

Подробнее

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ. Наследование в языке C++

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ. Наследование в языке C++ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Наследование в языке C++ НАСЛЕДОВАНИЕ 2 3 НАСЛЕДОВАНИЕ Наследование упорядочивает и ранжирует классы Механизм наследования классов позволяет строить иерархии,

Подробнее

Функции ref out определении вызове Main()

Функции ref out определении вызове Main() Функции Функции представляют собой блоки кода, позволяющие выполнять одни и те же операции над различными значениями данных. Функции определяются один раз и могут вызываться из любой точки приложения.

Подробнее

Права доступа. Права доступа. открытый (public)

Права доступа. Права доступа. открытый (public) Права доступа В C++ существует механизм ограничения доступа к полям и методам структурных типов данных. В связи с этим существуют два (на самом деле три, но об этом позже когда речь пойдет о наследовании)

Подробнее

Язык программирования Си. Семинар 8. Пользовательские типы данных (enum, struct, union). Побитовые операторы.

Язык программирования Си. Семинар 8. Пользовательские типы данных (enum, struct, union). Побитовые операторы. Язык программирования Си Бикулов Д.А., Иваницкая Н.В., Иванов А.П. Семинар 8. Пользовательские типы данных (enum, struct, union). Побитовые операторы. 1 Структуры Структура это объединение нескольких переменных

Подробнее

Лабораторная работа 1

Лабораторная работа 1 Лабораторная работа 1 Объектно-ориентированное программирование ХАРЬКОВСКИЙ НАЦИОНАЛЬНЫЙ АВТОМОБИЛЬНО-ДОРОЖНЫЙ УНИВЕРСИТЕТ ФАКУ ЛЬТЕТ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ И МЕХАТРОНИКИ Кафедра информационных технологий

Подробнее

Программирование на языке С++ 1 Учебная программа. УЧЕБНАЯ ПРОГРАММА по дисциплине "ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ C++"

Программирование на языке С++ 1 Учебная программа. УЧЕБНАЯ ПРОГРАММА по дисциплине ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ C++ Программирование на языке С++ 1 Учебная программа УЧЕБНАЯ ПРОГРАММА по дисциплине "ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ C++" А.А.Быков boombook@yandex.ru Данный курс предназначен для студентов первого и второго годов

Подробнее

Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы

Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы Программирование, численные методы и информатика Александр Валерьевич Позднеев Кафедра автоматизации

Подробнее

Курс «Язык С++» Симуни Михаил Лазаревич. msimuni.wikidot.com/cpp группа курс "Язык С++" (мат-мех 17)

Курс «Язык С++» Симуни Михаил Лазаревич. msimuni.wikidot.com/cpp группа курс Язык С++ (мат-мех 17) Язык С++ 1 Курс «Язык С++» Симуни Михаил Лазаревич msimuni.wikidot.com/cpp группа курс "Язык С++" (мат-мех 17) simuni@mail.ru 2 Какие темы будут в курсе? Простые вещи указатели, функции, классы, наследование,

Подробнее

Лабораторная работа 7

Лабораторная работа 7 Лабораторная работа 7 Шаблоны классов 1. Цель задания: 1) Создание консольного приложения, состоящего из нескольких файлов в системе программирования Visual Studio. 2) Реализация шаблона класса-контейнера.

Подробнее

ЛАБОРАТОРНАЯ РАБОТА 29 Создание приложения с разветвленным меню. Динамические массивы

ЛАБОРАТОРНАЯ РАБОТА 29 Создание приложения с разветвленным меню. Динамические массивы ЛАБОРАТОРНАЯ РАБОТА 29 Создание приложения с разветвленным меню. Динамические массивы Цели: научиться применять указатели; научиться работать с динамическими массивами; закрепить умение по обработке ошибок;

Подробнее

Лекция 12. Шаблоны, часть вторая

Лекция 12. Шаблоны, часть вторая http://compscicenter.ru 1/10 Александр Смаль CS центр 18 ноября 2015 Санкт-Петербург http://compscicenter.ru 2/10 Полная специализация шаблонов: классы struct Array {... T * data_ ; ; template struct

Подробнее

Теоретические вопросы

Теоретические вопросы МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД «ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ» Спеціальність 6.040301 Прикладна математика Дисципліна «Програмування» Модульна контрольна робота

Подробнее

Объектно-ориентированное программирование. Лекция 13

Объектно-ориентированное программирование. Лекция 13 Объектно-ориентированное программирование Лекция 13 Основные термины Предметная область это набор понятий, представляющих важные аспекты решаемой задачи Объект это конструкция программы, использующая термины

Подробнее

Лекция 2. Как выполняются программы на C++

Лекция 2. Как выполняются программы на C++ http://compscicenter.ru 1/21 Лекция 2. Как выполняются программы на C++ Александр Смаль CS центр 15 сентября 2016 Санкт-Петербург http://compscicenter.ru 2/21 Типы данных Целочисленные: 1. char (символьный

Подробнее

1.1. Ввод данных Выделение текста с помощью рамочки Резюме 32 Упражнения 34

1.1. Ввод данных Выделение текста с помощью рамочки Резюме 32 Упражнения 34 СОДЕРЖАНИЕ ВВЕДЕНИЕ 15 Новый подход к программированию на C++ 15 Наша книга полезна как для новичков, так и для опытных программистов 15 Абстракция 16 Охват материала 16 Несколько слов для опытных C- и

Подробнее

Урок 2. Курс: «Разработка приложений под мобильные устройства на основе Android» Тема: Переменные, типы данных, операторы

Урок 2. Курс: «Разработка приложений под мобильные устройства на основе Android» Тема: Переменные, типы данных, операторы ! Урок 2 Курс: «Разработка приложений под мобильные устройства на основе Android» Тема: Переменные, типы данных, операторы План 1. Типы данных 2. Переменные. Константы и литералы 3. Операторы 1. Понятие

Подробнее

YART Studio. Язык программирования C-YART

YART Studio. Язык программирования C-YART YART Studio Язык программирования C-YART Санкт-Петербург 2018 Оглавление C-YART... 3 Типы данных... 3 Комментарии к коду... 3 Структура кода... 3 Переменные, константы и массивы... 4 Математические операторы...

Подробнее

1 Связные списки. struct Node { int d; // элемент данных Node *n; // указатель на следующий узел Node(int dd, Node *nn = nullptr): d(dd), n(nn) {} };

1 Связные списки. struct Node { int d; // элемент данных Node *n; // указатель на следующий узел Node(int dd, Node *nn = nullptr): d(dd), n(nn) {} }; 1 Связные списки Ранее мы уже познакомились с массивами средством объединения нескольких однотипных переменных, доступных по номеру, который может быть результатом выражения. Как мы знаем, этот способ

Подробнее

ЛЕКЦИЯ 5 ДИНАМИЧЕСКИЕ МАССИВЫ И ПРИМЕРЫ РАБОТЫ С УКАЗАТЕЛЯМИ

ЛЕКЦИЯ 5 ДИНАМИЧЕСКИЕ МАССИВЫ И ПРИМЕРЫ РАБОТЫ С УКАЗАТЕЛЯМИ ЛЕКЦИЯ 5 ДИНАМИЧЕСКИЕ МАССИВЫ И ПРИМЕРЫ РАБОТЫ С УКАЗАТЕЛЯМИ 1. Функция суммирования элементов массива 1.1. Реализация функции суммирования без использования указателей Имеется массив a из 5 элементов.

Подробнее

Содержание. Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20

Содержание. Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20 Содержание Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20 Что такое язык программирования?...20 В чем различие между C и C++?.........................................21 Обязательно

Подробнее

Лекция 14. Полиморфизм

Лекция 14. Полиморфизм Название Полиморфизм Лекция 14. Полиморфизм Объектно-ориентированное программирование на C ++ 13 декабря 2009 г. Лекция 14 1 / 37 Полиморфизм Название Полиморфизм Пример struct C1 void f() cout

Подробнее

Лекция 4. Динамическая память

Лекция 4. Динамическая память http://compscicenter.ru 1/21 Александр Смаль CS центр 1 октября 2014 Санкт-Петербург http://compscicenter.ru 2/21 Зачем нужна динамическая память? Стек программы ограничен. Он не предназначен для хранения

Подробнее

Основы платформы Microsoft.NET

Основы платформы Microsoft.NET Основы платформы Microsoft.NET Тема: Управление памятью Переменные величины и ссылки...1 Выделение памяти...2 Удаление объектов из памяти...4 Дефрагментация кучи...4 Поколения объектов...5 Деструкторы...7

Подробнее

Лекция 2. Основные типы данных

Лекция 2. Основные типы данных Лекция 2 Рыбалка С.А., Шкатова Г.И. Лекции по C++ Основные типы данных Основным средством хранения данных, обрабатываемых программой, являются ячейки памяти. Вся память компьютера является однородной и

Подробнее

Динамическое выделение памяти и исключения в С++

Динамическое выделение памяти и исключения в С++ Лабораторная работа 4 Динамическое выделение памяти и исключения в С++ Цель работы: 1) изучить менеджер памяти С++ 2) изучить различные способы обработки исключений; 3) получить практические навыки программирования

Подробнее

Функции. Функция поименнованная часть программы, которая может вызываться из других частей программы неограниченное число раз.

Функции. Функция поименнованная часть программы, которая может вызываться из других частей программы неограниченное число раз. Функции Функция поименнованная часть программы, которая может вызываться из других частей программы неограниченное число раз. Это отдельная подпрограмма, управляемая входами и возвращающая что-то на выходе.

Подробнее

Лекция 8. Объектно-ориентированное программирование.

Лекция 8. Объектно-ориентированное программирование. http://compscicenter.ru 1/17 Лекция 8. Объектно-ориентированное программирование. Александр Смаль CS центр 5 ноября 2014 Санкт-Петербург http://compscicenter.ru 2/17 Ещё раз об ООП Объектно-ориентированное

Подробнее

Язык программирования Си++ Семинар 8. Пространства имен. Обработка исключений. Оператор преобразования типа и explicit-конструктор.

Язык программирования Си++ Семинар 8. Пространства имен. Обработка исключений. Оператор преобразования типа и explicit-конструктор. Язык программирования Си++ Иванов А.П., Князева О.С. Семинар 8. Пространства имен. Обработка Оператор преобразования типа и explicit-конструктор. 1. Пространства имен Си++ При создании программ коллективами

Подробнее

Типы данных и управляющие структуры Java

Типы данных и управляющие структуры Java Типы данных и управляющие структуры Java Евгений Беркунский, НУК eugeny.berkunsky@gmail.com http://berkut.homelinux.com Что такое тип данных? Тип данных: Спектр значений Набор допустимых операций Программа

Подробнее

Лабораторная работа 6. Функции в С++

Лабораторная работа 6. Функции в С++ Лабораторная работа 6 Функции в С++ 1. Цель работы: 1) Получить практические навыки работы с функциями; 2) получить практические навыки работы с шаблонами функций; 3) получить практические навыки работы

Подробнее

Задание 1. Ваша программа должна выполнять следующие действия:

Задание 1. Ваша программа должна выполнять следующие действия: Задание 1. Цель: Конструирование пользовательского типа данных структур, создание массива структур в динамической памяти, ввод исходных данных из файла, запись результатов работы в файл. Задание: Создать

Подробнее

ИНСТРУМЕНТЫ И СРЕДСТВА ПРОГРАММИРОВАНИЯ

ИНСТРУМЕНТЫ И СРЕДСТВА ПРОГРАММИРОВАНИЯ Министерство образования Республики Беларусь Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники» Кафедра информатики А.А. Волосевич ИНСТРУМЕНТЫ И СРЕДСТВА ПРОГРАММИРОВАНИЯ

Подробнее

1 Структурные типы данных

1 Структурные типы данных 1 Структурные типы данных Одним из центральных понятий современных языков программирования является понятие абстракции данных. Оно позволяет программисту решать поставленную перед ним задачу в терминах

Подробнее

Лабораторная работа 1

Лабораторная работа 1 Лабораторная работа 1 Цель работы: Научиться работать с основными синтаксическими конструкциями языка Си. Уметь организовывать циклы, выполнять вычисления. 1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 1.1. Переменные и их типы

Подробнее

Перегрузка операторов

Перегрузка операторов 192 В.Л. Тарасов Лекции по программированию на C++ Лекция 12. Перегрузка операторов 12.1. Функции-операторы В языке C++ можно определять функции, имена которых совпадают с именами встроенных операторов:

Подробнее

Лабораторная работа 5

Лабораторная работа 5 Лабораторная работа 5 Наследование. Виртуальные функции. Полиморфизм. 1. Цель задания: 1) Создание консольного приложения, состоящего из нескольких файлов в системе программирования Visual Studio. 2) Создание

Подробнее

Содержание ВВЕДЕНИЕ... 3 ЛАБОРАТОРНАЯ РАБОТА 1. НАЧАЛЬНЫЕ СВЕДЕНИЯ ОБ ИНТЕГРИРОВАННЫХ

Содержание ВВЕДЕНИЕ... 3 ЛАБОРАТОРНАЯ РАБОТА 1. НАЧАЛЬНЫЕ СВЕДЕНИЯ ОБ ИНТЕГРИРОВАННЫХ Содержание ВВЕДЕНИЕ... 3 ЛАБОРАТОРНАЯ РАБОТА 1. НАЧАЛЬНЫЕ СВЕДЕНИЯ ОБ ИНТЕГРИРОВАННЫХ СРЕДАХ РАЗРАБОТКИ ПРОГРАММ... 5 Работа в интегрированной среде разработки программ MS Visual Studio 2008, работающей

Подробнее

enum traffic_light { green, yellow, red }; enum traffic_light light = red; enum a { c1, c2 }; enum b { c3 }; enum a a; int f() { enum a b = c1;

enum traffic_light { green, yellow, red }; enum traffic_light light = red; enum a { c1, c2 }; enum b { c3 }; enum a a; int f() { enum a b = c1; 1 Занятие 5 1.1 Перечислимые типы Язык Си имеет средства для определения перечислимых типов. В общем виде объявление перечислимых типов выглядит следующим образом: например, enum {

Подробнее

Работа с табличным процессором Microsoft Excel

Работа с табличным процессором Microsoft Excel Работа с табличным процессором Microsoft Excel Краткие теоретические сведения Приложение Windows Excel позволяет формировать и выводить на печать документы, представленные в табличном виде, выполнять расчеты

Подробнее

В.Л. Тарасов Лекции по программированию на C++

В.Л. Тарасов Лекции по программированию на C++ 60 В.Л. Тарасов Лекции по программированию на C++ Лекция 4 Массивы и вектора Массив представляет собой набор последовательно пронумерованных элементов одного типа. Все элементы массива имеют одно имя,

Подробнее

MATHCAD ЭКСПРЕСС-КУРС

MATHCAD ЭКСПРЕСС-КУРС MATHCAD ЭКСПРЕСС-КУРС Mathcad программный пакет для выполнения разнообразных математических и технических расчетов 1 Начало работы в пакете Mathcad Окно программы выглядит так: Рисунок 1 Оно программы

Подробнее

1 ОБЩИЕ ПОЛОЖЕНИЯ ПО ПРОВЕДЕНИЮ ВСТУПИТЕЛЬНЫХ ИСПЫТАНИЙ ПО ПРИЕМУ В МАГИСТРАТУРУ НА НАПРАВЛЕНИЕ «Программная инженерия»

1 ОБЩИЕ ПОЛОЖЕНИЯ ПО ПРОВЕДЕНИЮ ВСТУПИТЕЛЬНЫХ ИСПЫТАНИЙ ПО ПРИЕМУ В МАГИСТРАТУРУ НА НАПРАВЛЕНИЕ «Программная инженерия» 3 1 ОБЩИЕ ПОЛОЖЕНИЯ ПО ПРОВЕДЕНИЮ ВСТУПИТЕЛЬНЫХ ИСПЫТАНИЙ ПО ПРИЕМУ В МАГИСТРАТУРУ НА НАПРАВЛЕНИЕ 09.04.04 «Программная инженерия» 1.1 Настоящая Программа, составленная в соответствии с федеральным государственным

Подробнее

Тема 2.1 Пакетирование, наследование и полиморфизм

Тема 2.1 Пакетирование, наследование и полиморфизм Тема 2.1 Пакетирование, наследование и полиморфизм Наследование в C++ Наследование классов мощная возможность в объектноориентированном программировании. Оно позволяет создавать производные классы (классы

Подробнее

Программирование в C++ Преподаватель Колотова Людмила Павловна

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 4-го занятия по практике Работа с функциями. Простые и библиотечные функции Передача аргументов в функцию Значение, возвращаемое

Подробнее

Лекция 9. Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных

Лекция 9. Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных Технологии программирования Зима-Весна Лекция 9 Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных сетей Вопросы, рассматриваемые на лекции 1. Частные (private) элементы

Подробнее

Контрольная работа. Конструирование простейшего класса

Контрольная работа. Конструирование простейшего класса Контрольная работа Конструирование простейшего класса При выполнении контрольной работы студент должен продемонстрировать умение сконструировать класс с заданным набором данных, создать объекты на основе

Подробнее

Перегрузка функций. О перегрузке можно говорить только для функций из одной области описания

Перегрузка функций. О перегрузке можно говорить только для функций из одной области описания Перегрузка функций О перегрузке можно говорить только для функций из одной области описания Перегрузка: struct A { int f (int x); // две функции с одинаковым именем в одной области int f (char x); // описания;

Подробнее

Проектирование больших систем на C++

Проектирование больших систем на C++ Проектирование больших систем на C++ Коноводов В. А. кафедра математической кибернетики ВМК Лекция 6 13.10.2017 Операторы new и delete Зачем они нужны? #include class C { public: int arr[100];

Подробнее

Какие типы вы бы использовали?

Какие типы вы бы использовали? C++ - занятие 2 1 Какие типы вы бы использовали? age // возраст salary // зарплата за месяц (в рублях) grade // средний балл char short long int unsigned long long float double Я бы написал так: int age;

Подробнее

struct circle { double x, y, r; int c; }; struct circle c1; struct foo { struct bar { double x; }; int y; struct bar z; }; struct bar t;

struct circle { double x, y, r; int c; }; struct circle c1; struct foo { struct bar { double x; }; int y; struct bar z; }; struct bar t; 1 Занятие 6 1.1 Структуры Ранее мы рассмотрели методы определения и работы с массивами и перечислимыми типами. Теперь рассмотрим определение и использование структур. Структура в языке Си это объединение

Подробнее