Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование основы языка С++. Учебное пособие
.pdf
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Санкт-Петербургский государственный университет промышленных технологий и дизайна»
Высшая школа печати и медиатехнологий
Институт медиатехнологий
ПРОГРАММИРОВАНИЕ:
ОСНОВЫ ЯЗЫКА С++
Учебное пособие
Составитель Т. И. Белая
Для студентов, обучающихся по направлению подготовки
09.03.02 Информационные системы и технологии
Санкт-Петербург
Санкт-Петербургский государственный университет
промышленных технологий и дизайна
2020

УДК 655.1
ББК 32.973
на заседании кафедры Информационных и управляющих систем
Утверждено Редакционно-издательским советом СПбГУПТД
Программирование : Основы языка С++ : учеб. пособие /
Сост. Т. И. Белая – СПб. : СПбГУПТД, 2020. – 172 с.
Учебное издание соответствует содержанию дисциплины Б1.Б.15
Программирование для студентов, обучающихся по направлению подготовки 09.03.02 Информационные системы и технологии профиль
Информационные технологии в дизайне, Информационные технологии в медиаиндустрии.
Учебное электронное издание рекомендовано к публикации
протокол № 1 от 31.08.2019 г.
Составитель Т. И. Белая
УДК 655.1
ББК 32.973
Учебное электронное издание сетевого распространения
зарегистрировано СПбГУПТД ВШПМ
Рег. № 369
© СПбГУПТД, 2020

ОГЛАВЛЕНИЕ
Введение................................................. 6
Раздел 1. Основные парадигмы программирования
1.1 История ........................................... 7
1.2 Разновидности парадигмы ........................... 8
Раздел 2. История появления языка программирования С++.. 24
Раздел 3. Базовые понятия С++
3.1 Состав языка ...................................... 29
3.2 Структура программы на С++ ....................... 29
3.3 Директивы препроцессора .......................... 31
Раздел 4. Фундаментальные типы данных С++ .............. 41
4.1 Объявление переменных............................ 45
4.2 Алфавит языка С++................................ 46
4.3 Лексема .......................................... 46
4.4 Идентификаторы .................................. 47
4.5 Ключевые слова ................................... 47
4.6 Литералы ......................................... 49
4.7 Константы в С++.................................. 51
4.8 Перечислямый тип данных.......................... 52
4.9 Преобразование типов ............................. 54
4.10 Контрольные вопросы............................. 60
4.11 Задачи для самостоятельного решения............... 63
Раздел 5. Организация потокового ввода-вывода в С++ ...... 67
5.1. Форматированный ввод-вывод в C++ ............... 67
5.1.1. Использование флагов форматного ввода-вывода.... 67
5.1.2. Форматирование с помощью манипуляторов........ 69
5.2 Потоковый ввод/вывод в файлы ..................... 72
3

Раздел 6. Основные операции в С++
6.1 Арифметические операции.......................... 77
6.2 Логические операции и операции отношения ......... 80
6.2 Задания для самостоятельного решения .............. 85
Раздел 7. Порядок выполнения кода в программе:
циклы и ветвления в C++
7.1 Условные конструкции ............................. 90
7.2 Циклы............................................ 95
7.3 Задания для самостоятельного решения ..............100
Раздел 8. Массивы
8.1 Определение массива...............................107
8.2 Перебор массивов .................................108
8.3 Многомерные массивы .............................109
8.4 Динамические массивы.............................111
8.5 Задачи для самостоятельного решения ...............113
Список использованных источников .......................119
Приложение. Словарь профессионального программиста.....121
Приложение. Заголовочные файлы
стандартной библиотеки С++ ............................ 134
Библиотека утилит ................................... 134
Управление динамической памятью.................... 134
Границы числовых типов ............................. 135
Обработка ошибок ................................... 135
Библиотека строк .................................... 135
Библиотека контейнеров ............................. 135
Библиотека алгоритмов................................136
Библиотека итераторов ................................136
Библиотека чисел .....................................136
Библиотека ввода/вывода..............................136
Библиотека локализации ............................. 137
Библиотеки регулярных выражений.................... 137
4

Библиотека атомарных операций ...................... 137
Библиотека потоков.................................. 137
Библиотека файловой системы ........................ 137
Экспериментальные библиотеки ...................... 138
Приложение. Ключевые слова С++ ........................139
Приложение. Таблица ASCII ............................. 143
Расширенные символы ASCII Win-1251 кириллица
(код символа 128-255) ................................ 147
Форматирование .................................... 152
Передача данных .................................... 152
Разделительные знаки при передаче информации........ 153
Другие символы ..................................... 153
Приложение. Основные рекомендации
по стилю написания программного кода на С++............ 155
1 Соглашения об именовании ........................ 155
2 Файлы ............................................ 158
3 Выражения .........................................159
4 Оформление и комментарии..........................162
Приложение. Готовые решения на С++.....................167
5

ВВЕДЕНИЕ
Дисциплина «Программирование» входит в цикл дисциплин профиля «Информатика и вычислительная техника» и направлена на развитие навыков программирования, получение практического опыта
решения задач и знаний в профессиональной области. В рамках данной
дисциплины изучаются основные конструкции языка высокого уровня
С++, который является базовым для профессионального программиста.
Программирование в ХХI веке – это универсальный навык для любого технического специалиста. Изучение программирования позволяет
развивать креативное мышление, логику, тренирует внимательность и
усидчивость, аналитические способности, формирует умение постановки задач и ее ограничений любого уровня сложности, развивает
навыки к самообразованию. В настоящее время без программирования
не обходится ни одна профессиональная отрасль. Чтобы стать профессиональным программистом необходима большая и интенсинвная
практика кодирования и решения разнообразных задач.
Данное учебное издание посвящено знакомству с основными конструкциями языка С++ и содержит базовую теорию, а также задачи для
формирования практических навыков, необходимых для дальнейшей
работы.
6

РАЗДЕЛ 1
ОСНОВНЫЕ ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ
Парадигма программирования – это совокупность принципов, методов и понятий, определяющих способ конструирования программ.
Парадигма (философия науки) – устоявшаяся система научных взглядов, в рамках которой ведутся исследования (Т. Кун).
Парадигма определяется:
вычислительной моделью;
•
базовой программной(-ыми) единицей(-ами);
•
методами разделения абстракций.
•
Язык программирования может реализовывать несколько парадигм.
Языки поддерживающие несколько парадигм, называются мультипарадигменными. Это позволяет программисту выбрать наиболее оптимальную для реализации конкретной задачи в рамках одного языка.
1.1 История
Термин «парадигма» своим появлением обязан, по-видимому, Томасу
Куну и его книге «Структура научных революций». Кун называл парадигмами устоявшиеся системы научных взглядов, в рамках которых
ведутся исследования. Согласно Куну, в процессе развития научной
дисциплины может произойти замена одной парадигмы на другую, при
этом старая парадигма еще продолжает некоторое время существовать
и даже развиваться благодаря тому, что многие ее сторонники оказываются по тем или иным причинам неспособны перестроиться для работы
в другой парадигме.
Термин «парадигма программирования» впервые применил в 1978 г.
Роберт Флойд в своей лекции лауреата премии Тьюринга. Флойд отмечает, что в программировании можно наблюдать явление, подобное
парадигмам Куна, но, в отличие от них, парадигмы программирования не являются взаимоисключающими: если прогресс искусства программирования в целом требует постоянного изобретения и усовершенствования парадигм, то совершенствование искусства отдельного
программиста требует, чтобы он расширял свой репертуар парадигм.
Таким образом, по мнению Роберта Флойда, в отличие от парадигм в
научном мире, описанных Куном, парадигмы программирования могут
сочетаться, обогащая инструментарий программиста.
7

Важно отметить, что парадигма программирования не определяется
однозначно языком программирования; практически все современные
языки программирования в той или иной мере допускают использование
различных парадигм. Так на языке Си, который не является объектноориентированным, можно работать в соответствии с принципами объектно-ориентированного программирования, хотя это и сопряжено с
определенными сложностями; функциональное программирование
можно применять при работе на любом императивном языке, в котором
имеются функции (для этого достаточно не применять присваивание).
1.2 Разновидности парадигмы
1.2.1 Императивное программирование. Императивные парадигмы
программирования представляют программу как последовательность
действий (операторов), которые преобразуют состояние программы.
Допустимые виды операторов, а также типы обрабатываемых данных
определяются конкретным языком программирования. К императивным парадигмам относится процедурная парадигма программирования.,
в которой отдельные группы часто повторяемых операторов выделяются в процедуры (называемые также подпрограммами), описывающие
действия по переводу одних данных в другие. В число операторов таких
языков входит оператор обращения к процедуре. Вычислительной моделью является машина Тьюринга (рис. 1.1).
Рисунок 1.1 – машина Тьюринга
8

Основными механизмами управления/абстракции являются: последовательное исполнение команд, ветвление, безусловный переход,
вызов подпрограммы (иногда), элементарные единицы модульности –
отсутствуют.
Это интересно! Алан Мэтисон Тьюринг (23 июня 1912 –
7 июня 1954) – английский математик, логик, криптограф, оказавший существенное влияние на развитие
информатики. Кавалер Ордена Британской империи
(1945), член Лондонского королевского общества (1951).
Предложенная им в 1936 г. абстрактная вычислительная «Машина Тьюринга», которую можно считать
моделью компьютера общего назначения, позволила
формализовать понятие алгоритма и до сих пор ис-
пользуется во множестве теоретических и практических исследований. Научные труды А. Тьюринга – общепризнанный вклад в основания информатики (и, в частности, – теории искусственного интеллекта).
Во время Второй мировой войны Алан Тьюринг работал в Правительственной
школе кодов и шифров, располагавшейся в Блетчли-парке, где была сосредоточена работа по взлому шифров и кодов стран Оси. Он возглавлял группу Hut 8,
ответственную за криптоанализ сообщений военно-морского флота Германии.
Тьюринг разработал ряд методов взлома, в том числе теоретическую базу для
Bombe – машины, использованной для взлома немецкого шифратора Enigma.
После войны Тьюринг работал в Национальной физической лаборатории, где по
его проекту был реализован первый в мире компьютер с хранимой в памяти программой – ACE. В 1948 г. ученый присоединился к вычислительной лаборатории
Макса Ньюмана в Университете Манчестера, где ассистировал при создании
Манчестерских Компьютеров, а позднее заинтересовался математической биологией. Тьюринг опубликовал работу по химическим основам морфогенеза и предсказал протекающие в колебательном режиме химические реакции, такие, как
реакция Белоусова – Жаботинского, которые впервые были представлены научному
сообществу в 1968 г. В 1950 г. предложил эмпирический тест Тьюринга для оценки
искусственного интеллекта компьютера. В 1952 г. Алан Тьюринг был признан виновным по обвинениям в совершении «грубой непристойности» в соответствии с
«поправкой Лабушера», согласно которой преследовали гомосексуальных мужчин.
Тьюрингу был предоставлен выбор между принудительной гормональной терапией,
призванной подавить либидо, или тюремным заключением. Ученый выбрал первое.
Алан Тьюринг умер в 1954 году от отравления цианидом. Следствие установило,
что Тьюринг совершил самоубийство, хотя мать ученого считала, что произо-
9

шедшее было случайностью. Алан Тьюринг был признан «одной из самых известных
жертв гомофобии в Великобритании». 24 декабря 2013 г. королева Великобритании
Елизавета II принесла извинения Алану Тьюрингу посмертно.
В честь ученого названа Премия Тьюринга – самая престижная в мире награда
в области информатики.
1.2.2 Структурное программирование. Структурное программирование – парадигма программирования, в основе которой лежит
представление программы в виде иерархической структуры блоков.
Концептуализирована в конце 1960-х – начале 1970-х годов на фундаменте теоремы Бема – Якопини, математически обосновывающей
возможность структурной организации программ, и работы Эдсгера
Дейкстры «О вреде оператора goto» (англ. Goto considered harmful). В
соответствии с парадигмой, любая программа, которая строится без
использования оператора goto, состоит из трех базовых управляющих
структур: последовательность, ветвление, цикл; кроме того, используются подпрограммы. При этом разработка программы ведется пошагово,
методом «сверху вниз».
Методология структурного программирования появилась как следствие возрастания сложности решаемых на компьютерах задач, и соответственно, усложнения программного обеспечения. В 1970-е годы объемы и сложность программ достигли такого уровня, что традиционная
(неструктурированная) разработка программ перестала удовлетворять
потребностям практики. Программы становились слишком сложными, чтобы их можно было нормально сопровождать. Поэтому потребовалась систематизация процесса разработки и структуры программ.
Методология структурной разработки программного обеспечения была
признана «самой сильной формализацией 70-х годов».
Первоначально идея структурного программирования появилась на
свет в связи с оператором goto и сомнениями в целесообразности его
применения. Впервые подобные сомнения высказал Хайнц Земанек
(Heinz Zemanek) на совещании по языку Алгол в начале 1959 г. в
Копенгагене. Однако это выступление не привлекло к себе внимания
и не имело последствий. Эдсгер Дейкстра вспоминает: «До некоторой
степени я виню себя за то, что в то время не смог оценить значимость
этой идеи». Ситуация коренным образом изменилась через десять лет,
когда в марте 1968 года Дейкстра опубликовал свое знаменитое письмо «Оператор Go To считается вредным» (Go To Statement Considered
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
