Материал: Sb98050

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

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

––––––––––––––––––––––––––––––––––––––––––––––––––––

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

–––––––––––––––––––––––––––––––––––––––––––

М. С. ПЕЛЕВИН

ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ C++ С ПРАКТИЧЕСКИМИ ЗАДАНИЯМИ

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

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

2019

1

УДК 004.43(07) ББК З 973-0.18 П24

Пелевин М. С.

П24 Введение в программирование на языке C++ с практическими заданиями: учеб.-метод. пособие. СПб.: Изд-во СПбГЭТУ «ЛЭТИ», 2019. 30 с.

ISBN 978-5-7629-2454-2

Содержит основные теоретические сведения о языке C++, а также практические задания.

Предназначено для подготовки бакалавров по направлению 09.03.02 «Информационные системы и технологии».

УДК 004.43(07) ББК З 973-0.18

Рецензенты: факультет информационных технологий и программирования Университета ИТМО (канд., техн. наук, доцент Тесля Н. Н.); канд. техн. наук, инженер технического контроля АО СПИИРАН-НТБВТ Гальяно Сизаско Ф. Р.

Утверждено редакционно-издательским советом университета

в качестве учебно-методического пособия

ISBN 978-5-7629-2454-2

© СПбГЭТУ «ЛЭТИ», 2019

2

1.ТИПЫ ДАННЫХ

1.1.Общие понятия

Типом данных в программировании называют совокупность двух множеств: множество значений и множество операций, которые можно выполнять над значениями. Например, к типу данных целых неотрицательных чисел, состоящему из конечного множества натуральных чисел, можно применить операции сложения (+), умножения (*), целочисленного деления (/), нахождения остатка (%) и вычитания (−).

Язык программирования, как правило, имеет набор примитивных типов данных – типы, предоставляемые языком программирования как базовая встроенная единица. В C++ такие типы создатель языка1 называет фундаментальными типами. Фундаментальными типами2 в C++ являются:

логический (bool);

символьный (напр., char);

целый (напр., int);

с плавающей точкой (напр., float);

перечисления (определяется программистом);

void.

Помимо перечисленных типов используются следующие типы:

указательные (напр., int*);

массивы (напр., char[]);

ссылочные (напр., double&);

другие структуры.

Перейдем к понятию литерала (напр., 1, 2.4F, 25e-4, ‘a’ и др.): литерал – запись в исходном коде программы, представляющая собой фиксированное значение. Другими словами, литерал – это отображение объекта (значения) какого-либо типа в исходном коде программы. В C++ есть возможность записи целочисленных значений, значений с плавающей точкой, символьных, булевых, строковых.

Литерал целого типа можно записать в разных системах счисления:

– в 10-й системе счисления: 1205;

1Разработчиком стандарта языка C++ является Бьерн Страуструп.

2Типы, соответствующие базовым принципам организации компьютерной памяти и самым общим способам хранения информации.

3

в 8-й системе счисления в формате 0 + число: 0142;

в 16-й системе счисления в формате 0x + число: 0x2F.

24, 030, 0x18 – это запись одного и того же числа в разных системах счисления. Для записи чисел с плавающей точкой используют запись через точку: 0.1, .5, 4., либо в экспоненциальной записи – 25e-100 (пробелов в такой записи быть не должно).

Имя, с которым мы можем связать значения, называют переменной. Переменная – это поименованная либо адресуемая иным способом область памяти, адрес которой можно использовать для доступа к данным. Данные записываются, переписываются и стираются в памяти определенным образом во время выполнения программы. Переменная позволяет в любой момент времени получить доступ к данным и при необходимости изменить их. Данные, которые можно получить по имени переменной, называют значением переменной.

Для того чтобы использовать в программе переменную, ее обязательно нужно объявить, а при необходимости можно определить (инициализировать). Объявление переменной в тексте программы непременно содержит две обязательные части: базовый тип и декларатор. Помимо них есть спецификатор и инициализатор, которые не являются обязательными:

const int example = 3;

//здесь const – спецификатор

//int – базовый тип

//example – имя переменной

//= 3 – инициализатор.

Имя переменной является последовательностью символов из букв латинского алфавита (строчных и прописных), цифр и/или знака подчеркивания, однако первый символ цифрой быть не может3. Имя переменной следует выбирать таким, чтобы всегда было легко догадаться о том, что она хранит, например, «monthPayment». Имя переменной не может совпадать с зарезервированными в языке словами. Примеры таких слов: if, while, function, goto, switch и др.

Декларатор кроме имени переменной может содержать дополнительные символы:

* – указатель (перед именем);

& – ссылка (перед именем);

[] – массив (после имени);

3 Регулярное выражение для имени выглядит следующим образом: [_A-Za-z][_A-Za-z0-9]*.

4

– () – функция (после имени).

Инициализатор позволяет определить для переменной ее значение сразу после объявления. Инициализатор начинается с литерала равенства (=), и далее происходит процесс задания значения переменной. Вообще, знак равенства в C++ обозначает операцию присваивания, с ее помощью можно задавать и изменять значение переменной.

Спецификатор задает дополнительные ограничения на переменную. Приведенный в примере спецификатор const позволяет запретить последующее изменение значения переменной. Такие неизменяемые переменные называют константными или просто константой.

Объявить константу без инициализации не получится, поскольку значение не может быть изменено в дальнейшем:

const int EMPTY_CONST; // ошибка, не инициализована константная переменная const int EXAMPLE = 2; // константа со значением 2

EXAMPLE = 3; // ошибка, попытка присвоить значение константной переменной

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

1.2.Основные типы данных

1.2.1.Целочисленный тип (char, short (int), int, long (int), long long)

Из названия легко понять, что множество значений состоит из целых чисел. Также множество значений каждого из перечисленных типов может быть знаковым (signed) или беззнаковым (unsigned). Количество элементов, содержащееся в множестве, зависит от размера памяти, которая используется для хранения значения этого типа. Например, для переменной типа char отводится 1 байт памяти, поэтому будет всего 28 * N = 28 * 1 = 256 элементов, где N – размер памяти в байтах для хранения значения. В таком случае диапазоны доступных целых чисел следующие:

[0..255] – для беззнакового char;

[−128..127] – для знакового char.

По умолчанию переменная целого типа считается знаковой. Чтобы указать в коде, что переменная должна быть беззнаковой, к базовому типу слева приписывают признак знаковости, т. е. unsigned:

unsigned long values; // задает целый (длинный) беззнаковый тип

5