Материал: Sb97282

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

МИНОБРНАУКИ РОССИИ

–––––––—————––––––––––––—————––––––––––––

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В. И. Ульянова (Ленина)

——————————————————––––——

ОСНОВЫ ПРОГРАММИРОВАНИЯ НА С++

Учебно-методическое пособие

Санкт-Петербург Издательство СПбГЭТУ «ЛЭТИ»

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