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

Стандартный Си++

Покупка
Артикул: 108986.03.99
Доступ онлайн
200 ₽
В корзину
Содержит доступное для начинающего программиста описание соответствующего международному стандарту языка Си++, его стандартной библиотеки и входящей в нее библиотеки шаблонов STL. Материал пособия позволяет изучить синтаксис и семантику базовых конструкций языка, а также механизмы и возможности стандартной библиотеки. На многочисленных примерах программ разъясняются наиболее тонкие и трудные вопросы процедурного, объектного, объектно-ориентированного и обобщенного программирования с помощью средств языка Си++ и его библиотеки. Для студентов вузов, учащихся колледжей и специализированных школ. Может использоваться в качестве самоучителя и справочного пособия.
Подбельский, В. В. Стандартный Си++ : учебное пособие / В. В. Подбельский. - Москва : Финансы и статистика, 2022. - 688 с. - ISBN 978-5-00184-081-7. - Текст : электронный. - URL: https://znanium.ru/catalog/product/1987541 (дата обращения: 29.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
В.В. ПОДБЕЛЬСКИЙ





                СТАНДАРТНЫЙ




  Си++

Допущено
Учебно-методическим объединением по образованию в области прикладной математики и управления качеством в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки 230400 «Прикладная математика»





ФИНАНСЫ И СТАТИСТИКА МОСКВА 2022

УДК 004.438(075.8)
ББК 32.973.26-018.1.я73
     П44






РЕЦЕНЗЕНТЫ:
кафедра «Системы обработки информации и управления» Московского государственного технического университета им. Н.Э. Баумана;
С.М. Лавренов,
кандидат технических наук, доцент







      Подбельский В.В.
П44      Стандартный Си++: учеб. пособие / В.В. Подбельский. —
      М.: Финансы и статистика, 2022. — Режим доступа: https:// finstat.ru/wp-content/uploads/2022/11/Podbelskiy_Standartnyi-C-plus-plus.pdf, ограниченный. — Загл. с экрана. — 688 с.: ил.
          ISBN 978-5-00184-081-7
          Содержит доступное для начинающего программиста описание соответствующего международному стандарту языка Си++, его стандартной библиотеки и входящей в нее библиотеки шаблонов STL. Материал пособия позволяет изучить синтаксис и семантику базовых конструкций языка, а также механизмы и возможности стандартной библиотеки. На многочисленных примерах программ разъясняются наиболее тонкие и трудные вопросы процедурного, объектного, объектно-ориентированного и обобщенного программирования с помощью средств языка Си++ и его библиотеки.
          Для студентов вузов, учащихся колледжей и специализированных школ. Может использоваться в качестве самоучителя и справочного пособия.

УДК 004.438(075.8)
ББК 32.973.26-018.1.я73

© Подбельский В.В., 2008, 2022
© ООО «Издательство «Финансы
ISBN 978-5-00184-081-7                 и статистика», 2022

Оглавление





    Предисловие............................................ 7
    Глава 1. Неформальное введение в Си++................. 13
          I.I. Первая программа на языке Си++............. 13
          1.2. Пространство имен и стандартные заголовки.. 17
          1.3. Программа с вводом данных в цикле.......... 20
          1.4. Строки в языке Си++........................ 22
    Глава 2. Лексические основы языка Си++................ 25
          2.1. Общие сведения о программах, лексемах и алфавите..................................... 25
          2.2. Идентификаторы и служебные слова........... 27
          2.3. Константы-литералы и перечисления.......... 28
          2.4. Знаки операций............................. 42
          2.5. Разделители................................ 60
    Глава 3. Скалярные типы и выражения................... 67
          3.1. Базовые и производные типы................. 67
          3.2. Объекты и их атрибуты...................... 73
          3.3. Определения и описания..................... 94
          3.4. Выражения и преобразования типов.......... 101
    Глава 4. Операторы языка Си++........................ 111
          4.1. Последовательно выполняемые операторы...... 111
          4.2. Операторы выбора (ветвления).............. 113
          4.3. Операторы цикла........................... 118
          4.4. Операторы передачи управления............. 124
    Глава 5. Адреса, указатели, массивы.................. 131
          5.1. Указатели и адреса объектов................ 131
          5.2. Адресная арифметика, типы указателей и операции над ними........................... 137
          5.3. Массивы и указатели....................... 150
          5.4. Многомерные массивы, массивы указателей, динамические массивы.......................... 162
    Глава 6. Функции, указатели, ссылки.................. 177
          6.1. Определения, описания и вызовы функций..... 177
          6.2. Функции с переменным количеством параметров (аргументов).................................. 185
          6.3. Рекурсивные функции....................... 192

Оглавление

         6.4. Подставляемые (inline-) функции......... 196
         6.5. Функции и массивы....................... 198
         6.6. Указатели на функции.................... 209
         6.7. Ссылки.................................. 223
         6.8. Перегрузка функций...................... 235
   Глава 7. Препроцессорныесредства................... 239
         7.1. Стадии и команды препроцессорной обработки .... 239
         7.2. Замены в тексте......................... 241
         7.3. Включение текстов из файлов............. 245
         7.4. Условная компиляция..................... 246
         7.5. Макроподстановки средствами препроцессора.... 249
         7.6. Препроцессорные операции и дополнительные директивы..................... 254
         7.7. Встроенные (предопределенные) макроимена..... 256
   Гл а в а 8. Структуры и объединения................ 260
         8.1. Структура как совокупность данных....... 260
         8.2. Объединения разнотипных данных.......... 270
         8.3. Битовые поля структур и объединений..... 275
   Глава 9. Класс как абстрактный тип................. 282
         9.1. Класс как расширение понятия структуры....... 282
         9.2. Конструкторы, деструкторы и статусы доступа.. 290
         9.3. Поля данных и методы класса............. 302
         9.4. Указатель this........................   315
         9.5. Друзья классов.......................... 320
   Глава 10. Библиотечный класс string................ 328
         10.1. Строки в языках Си и Си++.............. 328
         10.2. Конструкторы класса string............. 329
         10.3. Операции над строками.................. 330
         10.4. Методы класса string................... 333
              10.4.1. Доступ к символу, конкатенация, присваивание .........................   333
              10.4.2. Размеры строк................... 334
              10.4.3. Вставки, удаления, замены частей строк.... 337
              10.4.4. Поиск в строке и извлечение подстрок. 339
              10.4.5. Сравнение строк и их частей..... 345
              10.4.6. Обращение к данным объекта класса string   347
              10.4.7. Массивы строк и обмены значениями строк    349
         10.5. Консольный ввод-вывод строк и обмены с файлами.................................... 350

Оглавление

5

  Глава 11. Перегрузка операций и классы ресурсоемких объектов............................................ 356
        I l.l. Расширение действия (перегрузка) стандартных операций.................................. 356
        П.2. Изменение интерфейса существующего класса.... 369
        П.З. Классы ресурсоемких объектов............ 372
  Глава 12. Исключения............................... 383
        12.1. Общие сведения об исключениях...‘...... 383
        12.2. Синтаксис и семантика механизма исключений................................... 389
        12.3. Исключения в конструкторах............. 396
  Глава 13. Включение и наследование классов......... 398
        13.1. Отношение включения классов............ 398
        13.2. Общие сведения о наследовании в Си++.... 401
        13.3. Синтаксис наследования и доступность компонентов.................................. 406
        13.4. Множественное наследование и виртуальные классы....................................... 413
        13.5. Локальные классы....................... 417
  Глава 14. Специальные методы классов и перегрузка операций при наследовании........................... 419
        14.1. Методы при наследовании классов........ 419
        14.2. Присваивание при наследовании.......... 420
        14.3. Конструкторы при наследовании.......... 424
        14.4. Деструкторы при наследовании........... 428
        14.5. Перегрузка операций при наследовании.... 428
        14.6. Принцип подстановки и его реализация на языке Си++................................ 432
        14.7. Наследование и ресурсоемкие классы..... 437
  Глава 15. Виртуальные функции и абстрактные классы.... 443
        15.1. Виртуальные функции.................... 443
        15.2. Присваивания при наследовании.......... 446
        15.3. Деструкторы при наследовании........... 450
        15.4. Реализация виртуальных функций......... 452
        15.5. Абстрактные классы..................... 455
        15.6. Массивы и списки указателей на абстрактные классы....................................... 462
  Глава 16. Шаблоны функций и классов................ 467
        16.1. Шаблоны функций........................ 467
        16.2. Явная специализация шаблонной функции... 478
        16.3. Шаблоны классов........................ 480

Оглавление

         16.4. Внешнее определение методов и дружественные функции шаблонных классов.................... 484
         16.5. Специализации шаблонов классов......... 492
         16.6. Частичная пользовательская специализация..... 498
         16.7. Объекты и массивы объектов шаблонных классов 501
   Глава 17. Механизмы, использованные при построении
             STL...................................... 509
         17.1. Краткие сведения о STL................. 509
         17.2. Шаблоны функций и обобщенные алгоритмы....... 510
         17.3. Контейнеры и итераторы................. 515
         17.4. Взаимодействие средств STL с контейнерами и алгоритмами пользователя................... 528
   Глава 18. Основные средства библиотеки STL......... 533
         18.1. О концепции построения STL............. 533
         I8.2. Контейнеры STL......................... 534
         18.3. Основные методы контейнеров............ 537
         18.4. Итераторы в STL........................ 547
         18.5. Функциональные объекты (функторы)...... 550
         18.6. Алгоритмы STL.......................... 554
   Гл а в а 19. Стандартная библиотека и ввод-вывод......... 564
         19.1. Обзор стандартной библиотеки Си++...... 564
         19.2. Ввод-вывод в языке Си++................ 568
         19.3. Форматирование данных при обменах с потоками 575
         19.4. Функции для обмена с потоками.......... 583
         19.5. Работа с файлами....................... 587
   Приложения......................................... 597
      Приложение I. Разработка консольных приложений
                   в среде Microsoft Visual Studio.Net 2005. 597
      Приложение 2. Константы предельных значений........... 610
      Приложение 3. Таблицы кодов..................... 612
      Приложение 4. Вывод на консоль русского текста........ 619
      Приложение 5. Методы класса string.............. 622
      Приложение 6. Стандартные функции библиотеки Си....... 632
      Приложение 7. Алгоритмы STL..................... 638
      Приложение 8. Средства ввода-вывода в Си++...... 650
      Приложение 9. Комплексные числа в Си++.......... 659
      Приложение 10. Свободно распространяемый компилятор DJGPP......................... 662
   Библиографический список........................... 667
   Указатель символов................................. 670
   Предметный указатель............................... 672

Предисловие





     В настоящее время Си++ является языком, наиболее полно представляющим основные парадигмы современного программирования. С его помощью можно писать процедурно-ориентированные программы и создавать библиотеки функций. Си++ поддерживает объектно-ориентированное программирование и позволяет разрабатывать библиотеки классов. Механизм шаблонов языка Си++ и его стандартная библиотека дают возможность создавать программы, применяя методы обобщенного программирования. В то же время язык Си++ дает возможность программисту "находиться" наиболее близко к аппаратным средствам той платформы, на которой исполняется программа. В программе на Си++ можно динамически управлять памятью, использовать адресную арифметику, обращаться к отдельным разрядам двоичного представления данных и т. д.
     Язык Си++ постоянно развивается и совершенствуется в общем русле эволюции средств программирования и информатики в целом. Назовем наиболее значимые события этого процесса.
     •    В библиотеку языка Си++ была включена стандартная библиотека шаблонов (STL - Standard Template Library), что "кардинально изменило всю библиотеку" и возможности базового языка в целом.
     •    В 1998 г. вышел международный стандарт языка Си++ ISO/IEC 14882. (С 2003 г. действует вторая редакция этого стандарта 2003-10-15: ISO/IEC/ANSI/IT1.)
     •    Мировое сообщество фирм, создающих программное обеспечение, разработало несколько компиляторов языка Си++, соответствующих международному стандарту Си++.
     Компиляторы языка Си++ разработаны практически для всех аппаратно-программных платформ. Программы, написанные на языке Си++, транслируются в исполняемые модули, работающие под управлением операционных систем UNIX (и ее разновидностей, таких, как, LINUX, Solaris), Windows, Mac OS. В отличие от С#, Java и Visual Basic язык Си++ позволяет создавать программы, для выполнения которых не требуется устанавливать

Предисловие

  на компьютер специальное программное обеспечение, создающее среду исполнения программ.
      Интересно отметить следующий факт. Наиболее современная разработка фирмы Microsoft - Visual Studio.NET включает компиляторы нескольких языков: Си++, С#, JScript, Visual Basic, J#. Для каждого из названных языков соответствующий компилятор создает так называемый управляемый модуль (manager module). Особенность такого модуля состоит в том, что он не может исполняться на том компьютере, на котором не установлены специальные программные средства - "общеязыковая исполняющая среда". И только для языка Си++ сделано исключение - текст программы на языке Си++ в Visual Studio.NET может транслироваться и в управляемый модуль, и в традиционный исполняемый модуль (ехе-модуль). А традиционный ехе-модуль не требует присутствия на компьютере специальной среды исполнения.
      С учетом вышеизложенного на основе опыта преподавания и применения языка Си++ написано данное пособие. Материал излагается таким образом, что начинающий программист, начав с элементов языка, может профессионально освоить самые трудные и самые современные средства Си++ и его стандартной библиотеки.
     В книге девятнадцать глав и десять приложений.
      Глава 1 содержит примеры, позволяющие познакомиться с общей схемой подготовки и выполнения программ на языке Си++.
      В главе 2 рассматриваются лексические основы языка, используемые в дальнейшем на протяжении всей книги.
      Глава 3 посвящена объектам (переменным), их определениям, описаниям и использованиям в выражениях. При изучении выражений внимание уделено не только операциям языка Си++, но и особенностям преобразований типов.
      В главе 4 рассмотрены операторы, т. е. конструкции, определяющие логику (порядок) выполнения действий в программе. Этот материал традиционен для алгоритмических языков и обычно не вызывает затруднений при изучении.
      Глава 5 потребует от начинающего программиста значительных усилий. Адресная арифметика и указатели - это одна из фундаментальных и трудных тем языка Си и его наследника Си++.

Предисловие

9

  Рассмотрены связи массивов с указателями, а также показано, как с помощью массивов указателей моделируются многомерные массивы с динамически задаваемыми размерами.
      В главе 6 изучаются функции и их взаимоотношение с другими языковыми конструкциями: указателями, массивами, ссылками. Вводятся понятия сигнатуры функции и процедурного полиморфизма (перегрузки функций).
      Глава 7 подробно рассматривает препроцессорные механизмы. В последнее время им незаслуженно мало уделяется внимания в пособиях по Си++. Однако в ряде случаев именно препроцессор дает возможность получить элегантные решения, недоступные без его применения. Примером служит макрос для вывода изображения и значения выражения, использованного в качестве аргумента макроса.
      Глава 8 готовит читателя к изучению классов. Здесь изучены частные случаи классов - классы без методов, т.е. структуры и объединения. Именно в таком виде они унаследованы из языка Си. Особое внимание уделено размещению структур и объединений в памяти, а также их битовым полям.
      В главе 9 рассмотрен вводимый программистом структурированный тип, действия над объектами которого выполняются с помощью методов класса. Особое внимание уделено конструкторам и деструктору, а также специальному указателю this.
      Глава 10 знакомит читателя со строками в стиле Си++. Подробно описаны методы класса string, при использовании которого каждый символ строки имеет тип char. Методы сгруппированы по их функциональным назначениям. Далее приведены стандартные функции для ввода и вывода строк, а также базовые сведения по обменам с файлами в текстовом режиме.
      В главе 11 рассматривается перегрузка операций и показана особая роль дружественных функций в этом механизме. Здесь же вводится понятие "ресурсоемкие объекты" и показано, как для их классов определять конструкторы копирования и выполнять перегрузку операции присваивания.
      Глава 12 посвящена уникальному механизму управления ходом выполнения программы — исключениям. Показано, как определять класс исключений, как генерировать (посылать) исключения, как их перехватывать (ловить), обрабатывать и ретранслировать.

Предисловие

      В главе 13 рассмотрены два отношения между классами: включение и наследование. Подробно изучаются перегрузка операций при наследовании и особенности наследования классов ресурсоемких объектов.
      Глава 14 продолжает тему наследования классов и посвящена методам при наследовании. Особое внимание уделено правилам определения при наследовании специальных методов: конструкторов умолчания, конструкторов копирования, деструкторов и операций-функций присваивания. Показано, как нужно организовывать в Си++ наследование классов, чтобы для их объектов выполнялся принцип подстановки Лискова.
      Глава 15 знакомит читателя с понятиями статического и динамического типов указателей и ролью виртуальных функций в обеспечении динамического связывания. Показано, как определять виртуальные функции, и объясняется, почему деструктор рекомендуется делать виртуальным методом. Объясняются причины появления в Си++ чисто виртуальных функций и абстрактных классов.
      Глава 16 посвящена шаблонам. Цель их появления в языке -обеспечить параметризованное определение функций и классов. Описаны конструкции для определений шаблонов и средства для получения их специализаций. Показаны различия между типизирующими и не типизирующими параметрами шаблонов. Рассмотрены особенности определения методов и дружественных функций шаблонных классов. Материал этой главы необходим для понимания механизмов STL.
      Глава 17 начинается с объяснения принципов, положенных в основу построения STL. Вводится понятие последовательности, затем показано, как определить обобщенный алгоритм, контейнер, итератор. Основная цель — научить читателя определять собственные контейнеры, которые можно использовать с алгоритмами STL, и алгоритмы, которые можно применять к контейнерам STL.
      Глава 18 посвящена контейнерам, алгоритмам и итераторам STL. Подчеркивается, что контейнеры не связаны между собой (нет общего базового класса контейнеров), но каждый реализует все стандартные контейнерные интерфейсы. Рассмотрены последовательные и ассоциативные контейнеры, приведены их методы и итераторы, делающие их доступными для алгоритмов STL. Далее показано, как определять конкретные экземпляры контейне

Доступ онлайн
200 ₽
В корзину