МИНОБРНАУКИ РОССИИ
–––––––—————––––––––––––—————––––––––––––
Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В. И. Ульянова (Ленина)
——————————————————––––——
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА С++
Учебно-методическое пособие
Санкт-Петербург Издательство СПбГЭТУ «ЛЭТИ»
2018
УДК 004.43 (07) ББК З 973.2–018.1я7 О75
Авторы: Н. И. Куракина, Е. С. Сулоева, Ф. Я. Беляев, П. Е. Антонюк.
О75 Основы программирования на С++: учеб.-метод. пособие. СПб.: Изд-во СПбГЭТУ «ЛЭТИ», 2018. 40 с.
ISBN 978-5-7629-2349-1
Содержит материал, необходимый для освоения дисциплины «Информатика» и позволяющий студентам получить навыки современного практического программирования. Предметом изучения курса является объектноориентированное программирование на языке С++. В пособии рассмотрены процедурные вопросы языка С, основные типы данных и алгоритмические конструкции, приемы объектно-ориентированного программирования.
На практических занятиях и лабораторных работах вырабатываются навыки программирования на С++ в интегрированной среде разработки
Dev C++ 5.2.
Предназначено для студентов направления «Приборостроение», также может быть использовано преподавателями вузов и аспирантами.
УДК 004.43 (07) ББК З 973.2–018.1я7
Рецензенты: кафедра прикладной математики и информатики Высшей школы технологий и энергетики СПбГУПТД; д-р техн. наук В. М. Пестриков (СПбГИКиТ).
Утверждено редакционно-издательским советом университета
в качестве учебно-методического пособия
ISBN 978-5-7629-2349-1 |
© СПбГЭТУ «ЛЭТИ», 2018 |
ВВЕДЕНИЕ
Использование современных информационных технологий невозможно без владения языками программирования. При этом самые удачные программы были написаны людьми, которые не только имели крепкую хватку в специальной области, но и в совершенстве освоили оборудование компьютера, включая операционную систему и программное обеспечение. Только программист, осуществляющий полный контроль над ними, может писать программы с дружелюбным интерфейсом пользователя, которые эффективно выполняются и дают пользователям большую гибкость.
Предлагаемое учебно-методическое пособие посвящено программированию на языке С++. С – это достаточно выразительный язык программирования, предназначенный для описания широкого круга задач и содержащий современные механизмы управления вычислительным процессом и работы с данными. В то же время язык С++ очень прост: в него введены некоторые средства, характерные скорее для ассемблеров, чем для языков высокого уровня.
Простота языка не требует создания слишком сложных компиляторов и позволяет получать эффективный объектный код. Эти свойства языка особенно важны при написании операционных систем, но они могут быть полезными и при разработке прикладных программ.
Наибольшую популярность язык приобрел у системных программистов. Видимо, этому способствовало успешное написание на языке С переносимой операционной системы UNIX, получившей широкое распространение, а также элегантность и лаконичность языка. Чрезвычайно привлекательной для системных программистов оказалась возможность использования памяти различных типов (в том числе и регистровой), введение указателей, являющихся указателями косвенных адресов, возможность работы со сложными структурами данных, а также применение препроцессора и удобство работы с символьными строками.
Данное пособие предназначено для лиц, имеющих навыки пользовательской работы на персональном компьютере. Излагаемый материал проиллюстрирован многочисленными примерами и задачами, что обеспечит легкость понимания и усвоения предмета.
3
1. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
Объектно-ориентированное программирование – это новый подход (метод) программирования, в основе которого лежит понятие объекта. Объект – это логическая единица, которая содержит данные и правила (методы) обработки этих данных. В С++ в качестве правил выступают функции, таким образом объект – это данные + функции, работающие с этими данными. Внутри объекта данные и функции могут быть частными или закрытыми (private), защищенными (protected) или открытыми (public).
Объектом является переменная определенного пользователем типа, при этом основными характеристиками объектно-ориентированного программирования являются:
–инкапсуляция;
–наследование;
–полиморфизм;
–абстракции типов.
Инкапсуляция – это объединение в единое целое некоторой группы данных и некоторой группы функций. При этом свойства объектов хранятся в структурах данных, поведение объекта реализуется при помощи функций, называемых функциями-членами.
В объекте реализован механизм защиты данных и функций. Полиморфизм – возможность использования одного имени для логиче-
ски связанных, но различных целей. Пример: выполнение одинаковых действий над различными типами данных.
Наследование – механизм, позволяющий одним объектам наследовать свойства других объектов. При помощи наследования реализуется иерархия объектов.
1.1. Понятия класса С++
Класс – это новый тип данных с доступом к данным, разрешенным только определенному множеству функций. Класс, как и структура1, представляет собой набор данных и функций, предназначенных для совместного выполнения определенной задачи.
1Структура – это объединение нескольких переменных возможно разного типа под одним именем. Для ее создания необходимо определить шаблон, т. е. имена и типы данных, входящих в структуру
4
Характерные элементы класса:
1)средства контроля доступа;
2)конструкторы;
3)деструкторы;
4)элементы-данные;
5)функции-члены;
6)специально скрытый указатель this. Основные положения:
1. Класс, как и структура, предварительно должен быть объявлен (при
помощи создания шаблона класса.
2.Доступ к элементам класса может быть разрешен только набору функций, объявленных как часть класса (функциям-членам).
3.Объекты класса создаются и инициализируются специальными функциями, называемыми конструкторами.
4.Можно объявить особую функцию для очистки всякого объекта класса при его уничтожении, называемую деструктором.
Рассмотрим реализацию понятия «данных» с использованием структуры: struct date
{
int day, month, year; };
struct date today;
void set (date *, int, int, int); void next (date *);
void print (date *);
Строка struct date today; отвечает за создание объекта типа struct day. Перечисленные функции не связаны с объектом. Эту связь можно установить, описав функции как члены:
struct date
{
int day, month, year; void set (int, int, int); void next (void); void print (void);
};
5