Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Алгоритмизация и программирование на языке С++. Часть 1

Покупка
Новинка
Артикул: 831536.01.99
Доступ онлайн
2 000 ₽
В корзину
Содержит материал для изучения основ алгоритмизации и начального знакомства с программированием на языке С++ в рамках курса «Алгоритмизация и программирование». Многочисленные примеры в учебнике написаны и отлажены в трех средах разработки С++. Предназначен для студентов 1-го курса института ИТКН, а так же для самостоятельного изучения студентами других специальностей.
Андреева, О. В. Алгоритмизация и программирование на языке С++. Часть 1 : учебник / О. В. Андреева, А. И. Широков. - Москва : Издательский Дом НИТУ «МИСиС», 2023. - 219 с. - ISBN 978-5-907560-77-2. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2148216 (дата обращения: 27.07.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Москва 2023

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ

Университет науки и технологий МИСИС

ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И КОМПЬЮТЕРНЫХ НАУК

Кафедра инженерной кибернетики

О.В. Андреева 
А.И. Широков

АЛГОРИТМИЗАЦИЯ 
И ПРОГРАММИРОВАНИЕ 
НА ЯЗЫКЕ С++

Учебник

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

№ 4700
УДК 004.438 
 
А65

Р е ц е н з е н т ы : 
канд. техн. наук, доц. кафедры моделирования  
в экономике и управлении С.В. Никифоров (РГГУ);  
канд. техн. наук, доц. НИТУ МИСИС С.В. Громов

Андреева, Ольга Владимировна.
А65  
Алгоритмизация и программирование на языке С++. 

Часть 1 : учебник / О.В. Андреева, А.И. Широков. – Москва : 
Издательский Дом НИТУ МИСИС, 2023. – 219 с.
ISBN 978-5-907560-77-2

Содержит материал для изучения основ алгоритмизации и начального 
знакомства с программированием на языке С++ в рамках 
курса «Алгоритмизация и программирование». Многочисленные 
примеры в учебнике написаны и отлажены в трех средах 
разработки С++.
Предназначен для студентов 1-го курса института ИТКН, а также 
для самостоятельного изучения студентами других специальностей.


УДК 004.438

 Андреева О.В., 

Широков А.И., 2023
ISBN 978-5-907560-77-2
 НИТУ МИСИС, 2023
СОДЕРЖАНИЕ

Введение ......................................................................5

1. История и стандарты С++ ..........................................6

2. Среды разработки С++ и написание первой  
программы ...................................................................9
2.1. Начало разработки программ в среде Dev C++ ....... 11
2.2. Начало разработки программ в среде  
Visual Studio 2022 .................................................... 15
2.3. Начало разработки программ в среде OnlineGDB ... 26

3. Переменные и типы данных ..................................... 29
3.1. О понятии «переменная» .................................... 29
3.2. Основные типы данных С++ ............................... 31
3.3. Литералы ......................................................... 42

4. Операции (выражения) ............................................ 47

5. Ввод-вывод данных ................................................. 54
5.1. Ввод-вывод с использованием потоков STL ........... 54
5.2. Ввод-вывод с использованием функций в стиле С ... 60

6. Инструкции выбора ................................................ 63

7. Циклы .................................................................. 76

8. Массивы .............................................................. 102
8.1. Указатели, ссылки и массивы ........................... 102
8.2. Алгоритмы обработки одномерных массивов ...... 106
8.3. Обработка двухмерных массивов ....................... 125
8.3.1. Ввод-вывод двумерных массивов ................. 125
8.3.2. Типовые алгоритмы двухмерного массива..... 129

9. Функции ............................................................. 154

Задания для самостоятельного выполнения .................. 168

Заключение ............................................................. 184

Библиографический список ........................................ 185
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++

Приложение 1. Директивы препроцессора .................. 189

Приложение 2. Типизация языков программирования ... 198

Приложение 3. Приоритет и ассоциативность  
операций С++ ........................................................... 209

Приложение 4. Использование функции вычисления 
степени и сравнение алгоритмов по эффективности  
(времени выполнения) ............................................... 212
ВВЕДЕНИЕ

Развитие общества сегодня определяется внедрением компьютерных 
технологий в разнообразных областях деятельности 
человека. Навыки использования таких технологий 
обеспечивают конкурентоспособность специалистов самых 
разных специальностей. Знакомство с современными технологиями 
разработки и реализации программно-алгоритмического 
обеспечения делают более осознанным участие в реализации 
компьютерных систем на всех этапах жизненного 
чикла. Очевидно, что у специалистов, непосредственно занятых 
в разработке и внедрении компьютерных технологий, 
навыки программирования и алгоритмизации должны быть 
освоены на высоком уровне.
Настоящий учебник содержит описание методов и средств 

языка программирования С++, являющегося сегодня одним 
из самых применяемых при разработке приложений широкой 
направленности. Материал учебника ориентирован на обучающихся 
в области компьютерных технологий и, желательно, 
уже имеющих хотя бы начальные навыки программирования 
на алгоритмических языках.
В учебнике приведено описание базовых конструкций 

языка С++ (без претензий на полное освещение вопроса). Но 
в учебниках по языкам программирования, например в [1], 
часто содержится такая мысль: «Язык программирования 
нельзя изучать «линейно», то есть от аксиом к теоремам, задачам, 
выводам». Исходя из этого, многие конструкции будут 
введены сначала в примерах, а затем приведено их строгое 
формальное описание.
Примеры, содержащиеся в учебнике, написаны и отлажены 
в трех средах разработки С++: Visual Studio 2022, Dev C++ 
и OnlineGDB.
1. ИСТОРИЯ И СТАНДАРТЫ С++

От каких языков произошел С++? Конечно, прежде всего 

от С. Вот что пишет об этом Б. Страуструп, создатель С++, в 
одной из своих книг: «С++ – язык общего назначения и задуман 
для того, чтобы настоящие программисты получили 
удовольствие от самого процесса программирования. За исключением 
второстепенных деталей он содержит язык С как 
подмножество» [2]. Далее он добавляет, что С++ дополнен 
расширением, связанным, прежде всего, с появлением новых 
типов. Первый из них – класс, являющийся, по словам 
Б. Страуструпа, «ключевым понятием». Среди добавлений в 
С++ он в упомянутой книге называет еще и такие: «… символические 
константы, функции-подстановки, стандартные 
значения параметров функций, перегрузка имен функций, 
операции управления свободной памятью и ссылочный тип». 
Следует добавить, что автор языка работал над его совершенствованием 
не один десяток лет, и эта работа продолжается.
Язык программирования С, «предшественник» рассматриваемого 
здесь С++, был разработан в 1969–1973 годах сотрудником 
Bell Labs Деннисом Ритчи. Первым стандартом 
этого языка является книга Б. Кернигана и Д. Ритчи [3]. Вот 
что еще пишет Б. Страуструп об идее построения С++ на основе 
С: «В С существуют свои проблемы, но в языке, разрабатываемом «
с нуля», они появились бы тоже, а проблемы С, 
по крайней мере, хорошо известны. Более важно то, что ориентация 
на С позволила использовать язык «С с классами» 
как полезный (хотя и не очень удобный) инструмент в течение 
первых месяцев раздумий о введении в С классов в стиле 
Симулы [4]». В этой же книге приводятся и другие языки, 
идеи которых использованы при создании С++. Это, в частности, 
такие как:
• Алгол 68 [5] (перегрузка операций и свобода размещения 
операций всюду);
• Ада [6];
• CLU [7] (механизм обработки особых ситуаций).
1. История и стандарты С++

О названии языка С++ ее автор говорит следующее: «Название 
C++ было придумано Риком Маскитти (Rick Mascitti) 
летом 1983 года. Имя отражает природу изменений в языке 
по сравнению с C. «++» – это оператор инкремента в C» [8].
На странице Википедии [9] приводится схема, названная 

«Генеалогия и взаимовлияние версий C и C++». На рис. 1.1 
эта схема дополнена версиями С++03 и С++20.

Рис. 1.1. Генеалогия и взаимовлияние версий C и C++

Приведем выдержки из главы «История и совместимость» 

книги автора С++ [10], один из разделов которой называется «
Временная диаграмма развития». Вот кратко несколько 
фрагментов оттуда.
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++

1979 год. Начата работа над «С с классами».
1984 год. «С с классами» переименован в С++.
1985 год. Первый коммерческий выпуск С++ (14 октября).
1998 год. Стандарт ISO С++.
2011 год. Стандарт ISO С++11.
2013 год. Первая полная реализация С++11.
2014 год. Стандарт ISO С++14.
2020 год. Стандарт ISO С++20.
Здесь видно, как развитие языка С++ сопровождалось и 

продолжает сопровождаться выпуском стандартов, в которых 
учитывается мнение множества специалистов. Это делает 
его отвечающим современным требованиям. Все подробности 
можно получить от автора в упомянутой книге, и, конечно, 
изучая стандарты, начиная от первого (1998) и включая последний (
2022). Но совершенствование языка продолжается. 
Сейчас анонсирован стандарт 2023.
Там же Страуструп пишет: «Я изобрел С++, написал его 

первые определения и создал его первую реализацию.
Я выбрал и сформулировал критерии проектирования 

для С++, разработал основные языковые функции, разработал 
или помогал разрабатывать многие ранние библиотеки и 
в течение 25 лет отвечал за обработку предложений по расширению 
в комитете по стандартам С++».
Из этих слов становится понятно, что этот язык программирования, 
созданный более 30 лет назад, постоянно совершенствуется, 
приобретая новые возможности, диктуемые потребностями 
современного состояния компьютерных технологий.
Многие годы язык программирования С++ занимает места 

в первой пятерке рейтингов популярности языков программирования. 
Это делает важным изучение этого языка для специалистов 
в области компьютерных технологий.
Переходим к описанию инструментов, позволяющих изучать 
методы и средства разработки программ на С++. Таких 
инструментов множество, но в учебнике используется только 
три.
2. СРЕДЫ РАЗРАБОТКИ С++ 
И НАПИСАНИЕ ПЕРВОЙ ПРОГРАММЫ

Для написания и отладки программы на языке программирования (
реализации алгоритма решения задачи) необходимы 
программные средства. Прежде всего, это тестовый 
редактор. Он используется для подготовки исходного текста. 
Далее потребуется транслятор (для формирования программы 
в терминах машинных команд). И на последнем этапе в действие 
вступает средство формирования программы в виде исполнимого 
файла (готовой для выполнения программы). На 
последнем этапе к программе подключаются библиотечные 
модули (это заранее созданные часто используемые алгоритмы, 
например, выполняющие операции ввода-вывода). Эти 
средства (редактор, транслятор) могут существовать отдельно (
так часто бывает при работе в Unix-подобных операционных 
системах) или объединяться в единый программный 
комплекс, называемый интегрированной средой разработки 
(IDE – Integrated Development Environment). Такие программы 
появились давно. Первая была создана в Дартмутском 
колледже в мае 1964 года [11]. Ее создали два профессора 
Дартмутского колледжа Джон Г. Кемени и Томас Э. Курц – 
авторы языка программирования BASIC. Она обеспечивала 
интерактивную разработку программ для версии Dartmouth 
BASIC.
В процессе своего развития IDE приобрели множество новых 
возможностей. Первой из таких возможностей являются 
средства, помогающие при отладке программы. Но сегодня 
такие комплексы включают «… также средства для интеграции 
с системами управления версиями и разнообразные инструменты 
для упрощения конструирования графического 
интерфейса пользователя. Многие современные среды разработки 
также включают браузер классов, инспектор объектов 
и диаграмму иерархии классов – для использования при объектноориентированной разработке ПО. IDE обычно предназначены 
для нескольких языков программирования …» [12]. 
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++

Например, Visual Studio 2020 обеспечивает написание программ 
на таких языках, как С++, C#, F#, Python, JavaScript, 
TypeScript, Visual Basic [13]. Но эта среда также содержит множество 
встроенных инструментов, например редактор пользовательских 
форм для создания графического интерфейса, дизайнер 
классов, дизайнер схемы базы данных и др.
Существует множество сред разработки для С++. Информация 
о некоторых из них приведена в табл. 2.1 [14].

Таблица 2.1

Сравнение средств разработки для С++

Visual 
Studio Code
Тип: IDE
Цена: бесплатно
Поддерживаемые платформы: 
Windows, Linux, 
macOS
Microsoft 
Visual C++
Тип: IDE
Стоимость: сommunityверсия распространяется 
бесплатно

Поддерживаемые платформы: 
Windows

Xcode
Тип: IDE
Стоимость: бесплатно
Поддерживаемые платформы: 
macOS
g++
Тип: компилятор

Стоимость: бесплатно
Поддерживаемые платформы: 
Linux, macOS
Dev C++
Тип: IDE
Стоимость: бесплатно
Поддерживаемые платформы: 
Windows
Intel C++
Тип: компилятор

Стоимость: бесплатно
Поддерживаемые платформы: 
Windows, Linux
Mingw-w64
Тип: компилятор

Стоимость: бесплатно
Поддерживаемые платформы: 
Windows
Clang C++
Тип: компилятор

Стоимость: бесплатно
Поддерживаемые платформы: 
macOS, Linux, 
FreeBSD
Clion
Тип: IDE
Стоимость: 
от 14 100 руб.
Поддерживаемые платформы: 
A cross-platform 
IDE for C and C++

Следует сказать, что представленный список далеко не 

исчерпывает возможности разработки программ на С++.
В настоящем пособии приводятся примеры реализации 

алгоритмов в трех IDE: Dev C++ (v. 5.11 и v. 6.3), Visual Stu
2. Среды разработки С++ и написание первой программы

dio 2019 и среде онлайн-разработки Online GDB [15]. Заметим, 
что Online GDB поддерживает разработку программ на 
более чем 20 языках программирования.
В текст практически любой программы, написанной на 

С-подобном языке программирования, должны быть включены 
так называемые директивы препроцессора. Они, например, 
содержат описания библиотек. В С++ нет инструкции 
языка, обеспечивающей ввод и вывод информации. Для этого 
надо использовать библиотечные модули, а значит, директиву 
предпроцессора. Краткое описание последних содержится 
в прил. 1.

2.1. Начало разработки программ в среде Dev C++

При запуске среды разработки Dev C++ (v. 5.11) командой 
File-NewProject открывается окно для выбора типа проекта (
рис. 2.1).

Рис. 2.1. Окно выбора типа проекта в Dev C++

Выбираем тип проекта – Console Application. Следующий 

шаг – изменение имени проекта (в нашем случае по умолчанию 
задано Project1). Откроется окно редактора исходного 
текста программы (рис. 2.2).
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++

Рис. 2.2. Окно исходного текста проекта Dev C++

Как комментарий в тексте предложено добавить строку с 

функцией getch() или обращение к функции system() с параметром 
pause. В обоих случаях завершение работы программы 
будет задержано до нажатия любой клавиши на клавиатуре. 
Тем самым окно с результатом выполнения отлаживаемой 
программы не закроется мгновенно.
Теперь попробуем добавить в текст программы такую 

строку:
cout << "Hello World!\n";
Но до выполнения программы потребуется задать имя исходного 
текста. Будет предложено main.cpp. Обратим внимание 
на папку, где сохранится файл исходного текста программы. 
Ее имя – Документы (полный путь к папке – C:\Users\ais49\
OneDrive\Документы). Он был выбран при установке программы. 
Там же сохранится и исполнимый файл (с расширением *.exe) 
после компиляции и сборки программы, перед ее выполнением. 
Каталог, куда будут сохраняться эти файлы, определен в 
среде Dev C++ после выбора таких команд – Tools-Environment_
Options, и далее строка ввода – User’s default directory. Естественно, 
его можно заменить на другой.
Многие учебники по программированию начинаются этой 

программой. Она выводит в консоль сообщение Hello World! 
Доступ онлайн
2 000 ₽
В корзину