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

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

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
№ 4700
ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ИКОМПЬЮТЕРНЫХ НАУК
МИНИСТЕРСТВО НАУКИ ИВЫСШЕГО ОБРАЗОВАНИЯ РФ
Университет науки итехнологий МИСИС
Кафедра инженерной кибернетики
 
АЛГОРИТМИЗАЦИЯ ИПРОГРАММИРОВАНИЕ НАЯЗЫКЕ С++
Учебник
Рекомендовано редакционно-издательским советом университета
Москва 2023
УДК 004.438 А65
Рецензенты:
канд. техн. наук, доц. кафедры моделирования
в экономике и управлении С.В. Никифоров (РГГУ);
канд. техн. наук, доц. НИТУ МИСИС С.В. Громов
Андреева, Ольга Владимировна.
А65 Алгоритмизация и программирование на языке С++.
Часть 1 : учебник / О.В. Андреева, А.И. Широков. – Мо­сква : Издательский Дом НИТУ МИСИС, 2023. – 219 с.
ISBN 978-5-907560-77-2
Содержит материал для изучения основ алгоритмизации и на­чального знакомства с программированием на языке С++ в рам­ках курса «Алгоритмизация и программирование». Многочис­ленные примеры в учебнике написаны и отлажены в трех средах разработки С++.
Предназначен для студентов 1-го курса института ИТКН, а так­же для самостоятельного изучения студентами других специаль­ностей.
ISBN 978-5-907560-77-2
УДК 004.438
Андреева О.В., Широков А.И., 2023
НИТУ МИСИС, 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
4
АЛГОРИТМИЗАЦИЯ ИПРОГРАММИРОВАНИЕ НАЯЗЫКЕ С++
Приложение 1. Директивы препроцессора .................. 189
Приложение 2. Типизация языков программирования ... 198
Приложение 3. Приоритет и ассоциативность
операций С++ ........................................................... 209
Приложение 4. Использование функции вычисления степени и сравнение алгоритмов по эффективности
(времени выполнения) ............................................... 212

Развитие общества сегодня определяется внедрением ком­пьютерных технологий в разнообразных областях деятель­ности человека. Навыки использования таких технологий обеспечивают конкурентоспособность специалистов самых разных специальностей. Знакомство с современными техно­логиями разработки и реализации программно-алгоритми­ческого обеспечения делают более осознанным участие в ре­ализации компьютерных систем на всех этапах жизненного чикла. Очевидно, что у специалистов, непосредственно за­нятых в разработке и внедрении компьютерных технологий, навыки программирования и алгоритмизации должны быть освоены на высоком уровне.
Настоящий учебник содержит описание методов и средств языка программирования С++, являющегося сегодня одним из самых применяемых при разработке приложений широкой направленности. Материал учебника ориентирован на обуча­ющихся в области компьютерных технологий и, желательно, уже имеющих хотя бы начальные навыки программирования на алгоритмических языках.
В учебнике приведено описание базовых конструкций языка С++ (без претензий на полное освещение вопроса). Но в учебниках по языкам программирования, например в [1], часто содержится такая мысль: «Язык программирования нельзя изучать «линейно», то есть от аксиом к теоремам, за­дачам, выводам». Исходя из этого, многие конструкции бу­дут введены сначала в примерах, а затем приведено их стро­гое формальное описание.
Примеры, содержащиеся в учебнике, написаны и отлаже­ны в трех средах разработки С++: Visual Studio 2022, Dev C++ и OnlineGDB.
 С++
От каких языков произошел С++? Конечно, прежде всего от С. Вот что пишет об этом Б. Страуструп, создатель С++, в одной из своих книг: «С++ – язык общего назначения и за­думан для того, чтобы настоящие программисты получили удовольствие от самого процесса программирования. За ис­ключением второстепенных деталей он содержит язык С как подмножество» [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.
7
Рис. 1.1. Генеалогия и взаимовлияние версий C и C++
Приведем выдержки из главы «История и совместимость» книги автора С++ [10], один из разделов которой называет- ся «Временная диаграмма развития». Вот кратко несколько фрагментов оттуда.
8
АЛГОРИТМИЗАЦИЯ ИПРОГРАММИРОВАНИЕ НАЯЗЫКЕ С++
1979 год. Начата работа над «С с классами».
1984 год. «С с классами» переименован в С++.
1985 год. Первый коммерческий выпуск С++ (14 октября).
1998 год. Стандарт ISO С++.
2011 год. Стандарт ISO С++11.
2013 год. Первая полная реализация С++11.
2014 год. Стандарт ISO С++14.
2020 год. Стандарт ISO С++20.
Здесь видно, как развитие языка С++ сопровождалось и продолжает сопровождаться выпуском стандартов, в кото­рых учитывается мнение множества специалистов. Это делает его отвечающим современным требованиям. Все подробности можно получить от автора в упомянутой книге, и, конечно, изучая стандарты, начиная от первого (1998) и включая по­следний (2022). Но совершенствование языка продолжается. Сейчас анонсирован стандарт 2023.
Там же Страуструп пишет: «Я изобрел С++, написал его первые определения и создал его первую реализацию.
Я выбрал и сформулировал критерии проектирования для С++, разработал основные языковые функции, разрабо­тал или помогал разрабатывать многие ранние библиотеки и в течение 25 лет отвечал за обработку предложений по рас­ширению в комитете по стандартам С++».
Из этих слов становится понятно, что этот язык программи­рования, созданный более 30 лет назад, постоянно совершен­ствуется, приобретая новые возможности, диктуемые потреб­ностями современного состояния компьютерных технологий.
Многие годы язык программирования С++ занимает места в первой пятерке рейтингов популярности языков програм­мирования. Это делает важным изучение этого языка для спе­циалистов в области компьютерных технологий.
Переходим к описанию инструментов, позволяющих изу­чать методы и средства разработки программ на С++. Таких инструментов множество, но в учебнике используется толь­ко три.
 С++

Для написания и отладки программы на языке програм­мирования (реализации алгоритма решения задачи) необ­ходимы программные средства. Прежде всего, это тестовый редактор. Он используется для подготовки исходного текста. Далее потребуется транслятор (для формирования программы в терминах машинных команд). И на последнем этапе в дей­ствие вступает средство формирования программы в виде ис­полнимого файла (готовой для выполнения программы). На последнем этапе к программе подключаются библиотечные модули (это заранее созданные часто используемые алгорит­мы, например, выполняющие операции ввода-вывода). Эти средства (редактор, транслятор) могут существовать отдель­но (так часто бывает при работе в Unix-подобных операци­онных системах) или объединяться в единый программный комплекс, называемый интегрированной средой разработки (IDE – Integrated Development Environment). Такие програм­мы появились давно. Первая была создана в Дартмутском колледже в мае 1964 года [11]. Ее создали два профессора Дартмутского колледжа Джон Г. Кемени и Томас Э. Курц – авторы языка программирования BASIC. Она обеспечивала интерактивную разработку программ для версии Dartmouth BASIC.
В процессе своего развития IDE приобрели множество но­вых возможностей. Первой из таких возможностей являются средства, помогающие при отладке программы. Но сегодня такие комплексы включают «… также средства для интегра­ции с системами управления версиями и разнообразные ин­струменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разра­ботки также включают браузер классов, инспектор объектов и диаграмму иерархии классов – для использования при объ­ектно-ориентированной разработке ПО. IDE обычно предна­значены для нескольких языков программирования …» [12].
10
АЛГОРИТМИЗАЦИЯ ИПРОГРАММИРОВАНИЕ НАЯЗЫКЕ С++
Например, Visual Studio 2020 обеспечивает написание про­грамм на таких языках, как С++, C#, F#, Python, JavaScript, TypeScript, Visual Basic [13]. Но эта среда также содержит мно­жество встроенных инструментов, например редактор пользо­вательских форм для создания графического интерфейса, ди­зайнер классов, дизайнер схемы базы данных и др.
Существует множество сред разработки для С++. Инфор­мация о некоторых из них приведена в табл. 2.1 [14].
Таблица 2.1
Сравнение средств разработки для С++
Visual Studio Code
Microsoft Visual C++
Xcode Тип: IDE Стоимость: бесплатно Поддерживаемые плат-
g++ Тип: ком-
Dev C++ Тип: IDE Стоимость: бесплатно Поддерживаемые плат-
Intel C++ Тип: ком-
Mingw-w64 Тип: ком-
Clang C++ Тип: ком-
Clion Тип: IDE Стоимость:
Тип: IDE Цена: бесплатно Поддерживаемые плат-
формы: Windows, Linux,
macOS
Тип: IDE Стоимость: сommunity-
версия распространя­ется бесплатно
Стоимость: бесплатно Поддерживаемые плат-
пилятор
Стоимость: бесплатно Поддерживаемые плат-
пилятор
Стоимость: бесплатно Поддерживаемые плат-
пилятор
Стоимость: бесплатно Поддерживаемые плат-
пилятор
от 14 100 руб.
Поддерживаемые плат­формы: Windows
формы: macOS
формы: Linux, macOS
формы: Windows
формы: Windows, Linux
формы: Windows
формы: macOS, Linux,
FreeBSD
Поддерживаемые плат­формы: A cross-platform IDE for C and C++
Следует сказать, что представленный список далеко не исчерпывает возможности разработки программ на С++.
В настоящем пособии приводятся примеры реализации алгоритмов в трех IDE: Dev C++ (v. 5.11 и v. 6.3), Visual Stu-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]