Язык программирования C++. Вводный курс



         

Язык программирования C++. Вводный курс

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

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

Программа на языке C++
Программа на языке C++ - 2
Программа на языке C++ - 3
Программа на языке C++ - 4
Программа на языке C++ - 5
Порядок выполнения инструкций
Директивы препроцессора
Директивы препроцессора - 2
Директивы препроцессора - 3
Немного о комментариях

Простые и составные инструкции
Пустая инструкция используется там, где синтаксис С++ требует употребления инструкции, а логика программы– нет. Например, в следующем цикле while, копирующем одну строку в другую, все необходимые действия производятся внутри круглых скобок (условной части инструкции). Однако согласно правилам синтаксиса С++ после while должна идти инструкция. Поскольку нам нечего поместить сюда (вся работа уже выполнена), приходится оставить это место пустым:

Инструкции объявления
Инструкции объявления - 2
Инструкции объявления - 3
Инструкция if
Инструкция if - 2
Инструкция if - 3
Инструкция if - 4
Инструкция if - 5
Инструкция if - 6
Инструкция switch

Глобальные объекты и функции
Объявление функции в глобальной области видимости вводит глобальную функцию, а объявление переменной – глобальный объект. Глобальный объект существует на протяжении всего времени выполнения программы. Время жизни глобального объекта начинается с момента запуска программы и заканчивается с ее завершением.

Объявления и определения
Сопоставление объявлений в разных файлах
Сопоставление объявлений в разных файлах - 2
Несколько слов о заголовочных файлах
Несколько слов о заголовочных файлах - 2
Несколько слов о заголовочных файлах - 3
Несколько слов о заголовочных файлах - 4
Локальные объекты
Автоматические объекты
Регистровые автоматические объекты

Раскрутка стека
Предположим, что вызов функции, выполнение которой прекратилось в результате исключения, погружен в try-блок; в такой ситуации исследуются все предложения catch, ассоциированные с этим блоком. Если один из них может обработать исключение, то процесс заканчивается. В противном случае переходим к следующей по порядку вызывающей функции. Этот поиск последовательно проводится во всей цепочке вложенных вызовов. Как только будет найдено подходящее предложение, управление передается в соответствующий обработчик.

Раскрутка стека
Раскрутка стека - 2
Повторное возбуждение исключения
Перехват всех исключений
Перехват всех исключений - 2
Спецификации исключений
Спецификации исключений - 2
Спецификации исключений - 3
Спецификации исключений и указатели
Исключения и вопросы проектирования

Список инициализации членов
Инициализация одного объекта класса другим объектом того же класса, как, например: Account oldAcct( "Anna Livia Plurabelle" ); Account newAcct( oldAcct ); называется почленной инициализацией по умолчанию. По умолчанию– потому, что она производится автоматически, независимо от того, есть явный конструктор или нет. Почленной– потому, что единицей инициализации является отдельный нестатический член, а не побитовая копия всего объекта класса.

Почленная инициализация A
Почленная инициализация A - 2
Почленная инициализация A - 3
Инициализация члена объекта класса
Инициализация члена объекта класса - 2
Инициализация члена объекта класса - 3
Почленное присваивание A
Почленное присваивание A - 2
Соображения эффективности A
Соображения эффективности A - 2

Доступ к членам базового класса
Напомним, что объект производного класса состоит из одного или более подобъектов, соответствующих базовым классам, и части, относящейся к самому производному. Например, NameQuery состоит из подобъекта Query и объекта-члена string. Для иллюстрации поведения конструктора производного класса введем еще один член встроенного типа

Конструирование классов
Конструирование классов - 2
Конструктор базового класса
Конструктор производного класса
Альтернативная иерархия классов
Альтернативная иерархия классов - 2
Отложенное обнаружение ошибок
Деструкторы
Деструкторы - 2
Виртуальные функции в базовом классе

Строковый ввод
Считывание можно производить как в C-строки, так и в объекты класса string. Мы рекомендуем пользоваться последними. Их главное преимущество– автоматическое управление памятью для хранения символов. Чтобы прочитать данные в C-строку, т.е. массив символов, необходимо сначала задать его размер, достаточный для хранения строки. Обычно мы читаем символы в буфер, затем выделяем из хипа ровно столько памяти, сколько нужно для хранения прочитанной строки, и копируем данные из буфера в эту память

Строковый ввод
Строковый ввод - 2
Строковый ввод - 3
Строковый ввод - 4
Строковый ввод - 5
Дополнительные операторы ввода/вывода
Дополнительные операторы ввода/вывода - 2
Дополнительные операторы ввода/вывода - 3
Дополнительные операторы ввода/вывода - 4
Дополнительные операторы ввода/вывода - 5

Источники питания

Cтабилизатор собран по схеме моста в выходной цепи, образованного резисторами R4, R5, стабилитронами D1, D2 и светодиодом D3.В диагональ моста включен эмиттерный переход транзистора Q3, управляющего регулирующим составным транзистором Q2,Q1. Составной транзистор включен по схеме с общим эмиттером. Более высокое по сравнению с эмиттерным повторителем выходное сопротивление оконечного каскада компенсируется в этой схеме тем, что выходной каскад имеет высокий коэффициент усиления по напряжению, последнее заметно повышает коэффициент петлевого усиления схемы стабилизатора. Так как напряжение на базе управляющего транзистора Q3 по отношению к плюсовому проводу оказывается стабилизированным, то изменения выходного напряжения передаются на эмиттерный переход этого транзистора без ослабления делителем.
Максимальный ток нагрузки задается резистором R4. Ток базы транзистора Q2 не может превысить значения тока, текущего через резистор R4. Следовательно, подбором этого резистора можно установить требуемый ток защиты. Стабилизатор защищен и от коротких замыканий в цепи нагрузки. Ток короткого замыкания зависит от значения запускающего тока, текущего через резистор R2. Этот резистор подбирается при минимальном сопротивлении нагрузки по устойчивому запуску стабилизатора. Такая система обеспечивает надежный запуск стабилизатора, и практически не ухудшает параметров, поскольку в рабочем режиме ток через резистор R2 замыкается через малое сопротивление открытого стабилитрона D2.

Преобразователь напряжения
Исследование электробезопасности трехфазных электрических сетей напряжением до 1000В
Основные определения и классификация способов подключения и защиты
Организационные способы защиты от телефонного пиратства
Сигнализатор со звуковой индикацией
Устройства активной технической защиты
Общие рекомендации по применению технических средств защиты
Аккумуляторы
Ремонт аккумуляторных батарей для портативной аппаратуры
Полупроводниковые солнечные батареи
Двухтактный импульсный источник питания
Ремонт автомобильных аккумуляторов
Блок питания для домашней лаборатории на LM723
ДОРАБОТКА БЛОКА ПИТАНИЯ AT
Cтабилизированный источник питания 0...30v
Бездроссельное питание люминесцентных ламп
Источник питания на LM723
МОДЕРНИЗИРУЕМ ЛАТР
Резервное питание
Универсальное зарядное устройство
Фильтр питания
БЫСТРОДЕЙСТВУЮЩИЕ ЦИФРО-АНАЛОГОВЫЕ ПРЕОБРАЗОВАТЕЛИ СЕРИИ К1118
Преобразователи напряжения для систем PENTIUM-II-III
ПРЕОБРАЗОВАТЕЛЬ УКВ
К1107ПВ2 - Быстродействующий 8-разрядный АЦП параллельного типа
Таблица коэффициентов преобразования
Пример проектирования дискретного ПИД-регулятора