Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

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

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
СРЕДНЕЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАНИЕ
_________________________________________________________________
Т. Б. Токманцев
АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ
И ПРОГРАММИРОВАНИЕ
Учебное пособие для СПО
3-е издание, стереотипное
Издательство Уральского университета, Екатеринбург
2024
УДК 004.432.2(075.8) ББК 32.973–018.1я73
Т51
Рецензенты:
Хмелькова Н. В. канд. экон. наук, зав. кафедрой экономики и информатизации
Гуманитарного университета;
Кумков С. С. канд. физ.-мат. наук института математики и механики УрО РАН
Научный редактор:
Костоусов В. Б. — канд. физ.-мат. наук, доцент
Токманцев, Т. Б.
Т51
Алгоритмические языки и программирование : учебное пособие для СПО / Т. Б. Токманцев. — Эл. изд. — 3-е изд., стер. — Саратов : Профобразование ; Екатеринбург : Изд-во Урал. ун-та, 2024. — 102 с.
ISBN 978-5-4488-0510-3 (Профобразование) ISBN 978-5-7996-2899-4 (Изд-во Урал. ун-та)
Учебное пособие посвящено введению в программирование на языке C++, а так­же основам объектно-ориентированного и обобщенного программирования. Изучаются концепции переменной, типа данных, функции, класса, шаблона. Изложены основные конструкции языка C++ и основные сведения о стандартной библиотеке шаблонов STL.
Учебное пособие предназначено для изучения дисциплины «Основы алгоритми­зации и программирования» по укрупненной группе специальностей среднего профес­сионального образования «Информатика и вычислительная техника».
Учебное электронное издание
УДК 004.432.2(075.8)
ББК 32.973–018.1я73
ISBN 978-5-4488-0510-3 (Профобразование) ISBN 978-5-7996-2899-4 (Изд-во Урал. ун-та)
© Токманцев Т. Б., 2013 © ФГАОУ ВО «Уральский федеральный университет», 2019 © Оформление. ООО «Профобразование», 2024
3
Оглавление
Базовые понятия .......................................................................................................... 6
Программа ................................................................................................................
6
Структура программы .............................................................................................
6
Интегрированная сре
да разработки ................................................................... 8
Переменная ............................................................................................................
10
Функция .................................................................................................................. 13
Упр а вл я ющ и е конструкции .................................................................................. 18
Следование ......................................................................................................... 18
Выбор .................................................................................................................. 19
Повтор ................................................................................................................. 21
Массив .................................................................................................................... 23
Строка ..................................................................................................................... 26
Основные понятия ООП ........................................................................................... 28
Парадигмы програ
ммирования ............................................................................ 28
Процедурное программирование ......................................................................... 28
Модульное программирование ............................................................................ 28
ООП ........................................................................................................................ 28
Класс .......................................................................................................................
30
Обобщенное программирование ......................................................................... 31
Основные средства .................................................................................................... 32
Указат е ль ................................................................................................................ 32
Структура ............................................................................................................... 34
Макросы ................................................................................................................. 36
Пространство имен................................................................................................ 37
Заголовочные файлы ............................................................................................. 38
Механизмы абстракции ............................................................................................ 39
Класс .......................................................................................................................
39
Тип ...................................................................................................................... 39
4
Описание ............................................................................................................ 39
Экземпляр ........................................................................................................... 40
Метод .................................................................................................................. 41
Конструктор ....................................................................................................... 41
Деструктор ......................................................................................................... 42
Уровни доступа .................................................................................................. 42
Перегрузка операторов ..................................................................................... 43
Потоки ................................................................................................................ 44
Шаблоны ..................................................................................................................... 44
Шаблон-функция ............................................................................................... 44
Макрос ................................................................................................................ 47
Замечания ........................................................................................................... 48
Шаблон-класс .................................................................................................... 48
Исключения ............................................................................................................ 50
Наследование ......................................................................................................... 57
Виртуальные функции .......................................................................................... 58
Статический и динамический тип ................................................................... 58
Абстрактный базовый класс ............................................................................. 61
Виртуальное наследование ............................................................................... 63
Преобразование классов ................................................................................... 64
Информация о типе ........................................................................................... 65
Стандартная библиотека ........................................................................................... 66
Архитектура ........................................................................................................... 66
Контейнеры ............................................................................................................ 66
Последовательные контейнеры ............................................................................ 67
Ассоциативные контейнеры ................................................................................. 72
Адаптеры ................................................................................................................ 76
Алгоритмы ............................................................................................................. 76
Итераторы ...............................................................................................................
80
5
Обратные итераторы ............................................................................................. 82
Итераторы вставки ................................................................................................ 83
Потоковые итераторы ............................................................................................ 84
Функторы ............................................................................................................... 86
Потоки .................................................................................................................... 90
Иерархия ............................................................................................................. 91
Форматирование ................................................................................................ 91
Класс istream ...................................................................................................... 92
Класс ostream ..................................................................................................... 93
Предопределенные потоки ............................................................................... 93
Ошибки ............................................................................................................... 93
Строковые потоки .............................................................................................. 96
Командная строка .............................................................................................. 97
Библиографический список ...................................................................................... 99
Приложение .............................................................................................................. 100
6
Базовые понятия
Программа
Основным базовым понятием в программировании является понятие
алгоритма. Сложно дать его однозначное определение, и поэтому существует
несколько различных вариантов определений. Простейшее из них: алгоритм –
это набор инструкций, описывающих порядок действий исполнителя для
достижения результата решения задачи за конечное число действий.
Основной целью курса является обучение навыкам написания программ на
языке C++, решающих простые задачи. Программой, или программным кодом,
называется запись алгоритма на определенном языке программирования, в
нашем случае – на языке C++.
Структура программы
Программа на языке C++ может включать в себя директивы препроцессора,
инструкции и коммент арии. Фактически программа представляет собой
обычный текстовый файл, который можно открыть произвольным редактором,
например Notepad. Для того чтобы программу
можно было запустить на
выполнение, ее нужно транслировать в выполняемый файл. Трансляция состоит
из обработки препроцессора, компиляции и компоновки. Препроцессор
обрабатывает директивы препроцессора – инструкции, начинающиеся с
символа “#”. Примеры директив: #include, #define, #if. Мы будем использовать в
основном директиву #include<имя библиотеки>. По этой директиве
препроцессор находит код соответствующей библиотеки и добавляет в код
программы
код используемых функций.
Для компиляции вызывается специальная программа – компилятор. Она
проверяет программу на соответствие правилам языка и, при успешной
проверке, преобразует текстовый файл – исходный код – в промежуточный
7
бинарный файл с совпадающим именем и расширением OBJ. Этот файл
называется объектным. Далее программа-компоновщик добавляет в объектный
файл служебный код из используемых библиотек. В результате получается
исполняемый файл, имя которого совпадает с именем файла с исходным кодом,
с расширением EXE.
Инструкции – это записанные на языке программирования команды
процессору. Каждая инструкция в
языке С++ должна заканчиваться точкой с
запятой.
Коммент ариями называются специального вида текстовые вставки в код
программы, предназначенные для описания программы, функций, переменных
и т. д. Особенностью комментариев является то, что компилятор их игнорирует
– они предназначены для программиста, который будет читать или исправлять
код программы. В языке C++ существует два вида комментариев:
одно строчные
начинаются со знака // и продолжаются до конца строки. Многострочные
коммент арии начинаются со знака /* и заканчиваются знаком */.
Программа состоит из следующих трех частей: подключения используемых
библиотек, функции main и функций пользователя.
Библиотеки содержат ранее написанные функции и константы, позволяют
использовать ранее накопленный опыт программистов. Для подключения
библиотек используется директива препроцессора #include. Для исключения
ситуации конфликта имен констант и функций, ранее описанных в
используемых библиотеках и в программе, используется механизм
пространства имен. Основным пространством имен языка C++ является std.
Большинство стандартных функций описано в пространстве имен std. Для
использования функции, описанной в пространстве имен std, имя функции
записывается так: std::имя_функции. Другим вариантом является использование
конструкции using namespace std. После этого
не требуется указывать std:: перед
именем функции.
8
Основной частью программы является функция main. При выполнении
программы поток управления стартует с первой инструкции, и программа
завершает работу по достижении потоком управления последней инструкции
этой функции. По стандарту при успешном завершении работы функция
должна возвращать с помощью оператора return значение 0, в случае ошибки –
код ошибки.
Как правило, описание пользовательских функций размещается
до функции
main. А их определение – после.
Двумя основными видами программы являются консольная программа и
программа с пользовательским интерфейсом. Консольная программа выводит
информацию в символьно-цифровом виде и принимает от пользователя данные
с клавиатуры. Программа с пользовательским интерфейсом отображает форму с
кнопками, текстовыми полями и прочими элементами и позволяет использовать
для
ввода информации как клавиатуру, так и мышь. В нашем курсе мы будем
писать только консольные программы.
Пример. Традиционно программисты при изучении нового языка
программирования начинают с написания простейшей программы, которая
выводит на экран сообщение «Hello, World!». На языке C++ эта программа
выглядит так:
#include<iostream> //input and output library
using namespace std; //open namespace std
int main(){ //main function
cout << "Hello, World!"; //output the message
return 0; //exit the program with OK code
}
Интегрированная среда разработки
Как уже было сказано, для разработки программ можно использовать любой
текстовый редактор. Но гораздо удо б н ее использовать специальную программу,
9
которая называется интегрированной средой разработки (англ. IDE). Мы будем
использовать бесплатную среду Microsoft Visual Studio 2008 Express Edition.
Она предназначена для разработки программ и включает в себя текстовый
редактор, транслятор и отладчик.
Текстовый редактор предназначен для написания и редактирования
исходного кода программы. Исходный код обычно хранится в папке My
Documents/Visual Studio 2008/Projects. В среде MS VS 2008 исходный код
организован в решение (solution), которое состоит
из нескольких проектов.
Каждый проект представляет собой отдельную программу. Проект состоит из
исходного кода программы – текстового файла с расширением cpp и
заголовочных файлов с расширением h.
Транслятор используется для синтаксической проверки программы на
соответствие правилам языка и для преобразования исходного кода в
исполняемый файл.
Отладчик помогает искать ошибки в программе. Он позволяет
увидеть, как
переходит по тексту программы поток выполнения, поставить поток управления
на паузу на заданной линии (точка останова), а также увидеть в ходе
выполнения программы значения любой переменной (окно Wat c h).
Одним из обязательных навыков программиста является уверенное владение
клавиатурой. Большую часть времени руки программиста лежат на клавишах.
При использовании мыши внимание переключается
с написания кода на
управление мышью, в то время как клавиши (при определенном опыте)
используются автоматически, без отвлечения. Поэтому важным правилом
является активное усвоение клавиатурных сочетаний, позволяющих при работе
со средой разработки не использовать мышь.
Полезные клавиатурные команды приведены в приложении.
10
Переменная
Любая программа предназначена для обработки того или иного набора
данных. Во время работы программы данные хранятся в оперативной памяти
(ОЗУ). Как известно, минимальная ячейка памяти называется бит и может
хранить значения 0 или 1. Байтом называется 8 бит. Каждый байт в памяти
имеет свой адрес. Зная адрес байта, программа может записывать или
считывать из него значения. На заре программирования единственным
способом работы с информацией, хранящейся в памяти, было обращение к
байтам по их адресам. В более позднее время в языках программирования
появилось понятие переменной. Переменная – это имя некоторого участка
памяти, куда можно записывать и считывать данные. В языке C++ имя
переменной, или идентификатор,
может состоять из цифр, маленьких и
больших латинских букв и содержать знак подчеркивания. Имя переменной
должно начинаться с буквы. В имени не должно быть пробела. Переменной
нельзя давать имя, совпадающее с зарезервированными именами – ключевыми
словами языка. Большие и маленькие буквы в именах различаются, то есть
имена Var и var – разные.
Для всех переменных
должен быть указан тип, определяющий, сколько
памяти в байтах выделять на хранение значения переменной, как
интерпретировать эти значения и какие операции разрешается выполнять над
переменной. Базовые предопределенные типы представлены в таблице ниже.
Перед первым использованием переменной ее нужно описать и –
желательно – инициализировать (присвоить начальное значение). При
компиляции программы, встречая описание
переменной, компилятор выделяет
под нее участок памяти и сопоставляет имени переменной адрес этого участка.
Размер участка определяется по типу.
Описание имеет следующий вид: тип_переменной имя_переменной =
значение_переменной.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]