Фундаментальные алгоритмы и структуры данных в Delphi.

Введение. Глава 1. Что такое алгоритм? Что такое алгоритм? Анализ алгоритмов. О-нотация. Лучший, средний и худший случаи. Алгоритмы и платформы. Виртуальная память и страничная организация памяти. Пробуксовка. Локальность ссылок. Кэш процессора. Выравнивание данных. Пространство или время. Длинные строки. Использование ключевого слова const. Осторожность в отношении автоматического преобразования типов. Тестирование и отладка. Утверждения. Комментарии. Протоколирование. Трассировка. Анализ покрытия. Тестирование модулей. ... Отладка. Резюме. Глава 2. Массивы. Массивы. Типы массивов в Delphi. Стандартные массивы. Динамические массивы. Новые динамические массивы. Класс TList, массив указателей. Краткий обзор класса TList. Класс TtdObjectList. Массивы на диске. Резюме. Глава 3. Связные списки, стеки и очереди. Односвязные списки. Узлы связного списка. Создание односвязного списка. Вставка и удаление элементов в односвязном списке. Соображения по поводу эффективности. Использование начального узла. Использование диспетчера узлов. Класс односвязного списка. Двухсвязные списки. Вставка и удаление элементов в двухсвязном списке. Использование начального и конечного узлов. Использование диспетчера узлов. Класс двухсвязного списка. Достоинства и недостатки связных списков. Стеки. Стеки на основе односвязных списков. Стеки на основе массивов. Пример использования стека. Очереди. Очереди на основе односвязных списков. Очереди на основе массивов. Резюме. Глава 4. Поиск. Процедуры сравнения. Последовательный поиск. Массивы. Связные списки. Бинарный поиск. Массивы. Связные списки. Вставка элемента в отсортированный контейнер. Резюме. Глава 5. Сортировка. Алгоритмы сортировки. Тасование массива TList. Основы сортировки. Самые медленные алгоритмы сортировки. Пузырьковая сортировка. Шейкер-сортировка. Сортировка методом выбора. Сортировка методом вставок. Быстрые алгоритмы сортировки. Сортировка методом Шелла. Сортировка методом прочесывания. Самые быстрые алгоритмы сортировки. Сортировка слиянием. Быстрая сортировка. Сортировка слиянием для связных списков. Резюме. Глава 6. Рандомизированные алгоритмы. Генерация случайных чисел. Критерий хи-квадрат. Метод средних квадратов. Линейный конгруэнтный метод. Тестирование. Тест на однородность. Тест на пропуски. Тест "покер". Тест "сбор купонов". Результаты выполнения тестов. Комбинирование генераторов. Аддитивные генераторы. Тасующие генераторы. Выводы по алгоритмам генерации случайных чисел. Другие распределения случайных чисел. Списки с пропусками. Поиск в списке с пропусками. Вставка в список с пропусками. Удаление из списка с пропусками. Полная реализация класса связного списка. Резюме. Глава 7. Хеширование и хеш-таблицы. Функции хеширования. Простая функция хеширования для строк. Функции хеширования PJW. Разрешение конфликтов посредством линейного зондирования. Преимущества и недостатки линейного зондирования. Удаление элементов из хеш-таблицы с линейным зондированием. Класс хеш-таблиц с линейным зондированием. Другие схемы открытой адресации. Квадратичное зондирование. Псевдослучайное зондирование. Двойное хеширование. Разрешение конфликтов посредством связывания. Преимущества и недостатки связывания. Класс связных хеш-таблиц. Разрешение конфликтов посредством группирования. Хеш-таблицы на диске. Расширяемое хеширование. Резюме. Глава 8. Бинарные деревья. Создание бинарного дерева. Вставка и удаление с использованием бинарного дерева. Перемещение по бинарному дереву. Обход в ширину, симметричный обход и обход в глубину. Обход по уровням. Реализация класса бинарных деревьев. Деревья бинарного поиска. Вставка в дереве бинарного поиска. Удаление из дерева бинарного поиска. Реализация класса дерева бинарного поиска. Перекомпоновка дерева бинарного поиска. Скошенные деревья. Реализация класса скошенного дерева. Красно-черные деревья. Вставка в красно-черное дерево. Удаление из красно-черного дерева. Резюме. Глава 9. Очереди по приоритету и пирамидальная сортировка. Очередь по приоритету. Первая простая реализация. Вторая простая реализация. Сортирующее дерево. Вставка в сортирующее дерево. Удаление из сортирующего дерева. Реализация очереди по приоритету при помощи сортирующего дерева. Пирамидальная сортировка. Алгоритм Флойда. Завершение пирамидальной сортировки. Расширение очереди по приоритету. Восстановление свойства пирамидальное. Отыскание произвольного элемента в сортирующем дереве. Реализация расширенной очереди по приоритету. Резюме. Глава 10. Конечные автоматы и регулярные выражения. Конечные автоматы. Использование конечного автомата: синтаксический анализ. Синтаксический анализ файлов с разделяющими запятыми. Детерминированные и недетерминированные конечные автоматы. Регулярные выражения. Использование регулярных выражений. Синтаксический анализ регулярных выражений. Компиляция регулярных выражений. Сопоставление строк с регулярными выражениями. Резюме. Глава 11. Сжатие данных. Представление данных. Сжатие данных. Типы сжатия. Потоки битов. Сжатие с минимальной избыточностью. Кодирование Шеннона-Фано. Кодирование Хаффмана. Кодирование с использованием скошенного дерева. Сжатие с использованием словаря. Описание сжатия LZ77. Особенности кодирования литеральных символов и пар расстояние/длина. Восстановление с применением алгоритма LZ77. Сжатие LZ77. Резюме. Глава 12. Дополнительные темы. Алгоритм считывания-записи. Алгоритм производителей-потребителей. Модель с одним производителем и одним потребителем. Модель с одним производителем и несколькими потребителями. Поиск различий между двумя файлами. Вычисление LCS двух строк. Вычисление LCS двух файлов. Резюме. Эпилог. Благодарности. Почему книга посвящена алгоритмам именно на Delphi? Что я должен предварительно знать? Какая версия Delphi мне нужна? Что и где я могу найти в книге, или, другими словами, из чего состоит эта книга? Что это за странные конструкции $ifdef в коде? Список литературы. →

Эффективное использование C++.

Введение. Терминология. Соглашения об именах. Многопоточность. Библиотеки TR1 и Boost. Глава 1. Приучайтесь к C++ Правило 1: Относитесь к C++ как к конгломерату языков. Что следует помнить. Правило 2: Предпочитайте const, enum и inline использованию #define. Что следует помнить. Правило 3: Везде, где только можно используйте const. Константные функции-члены. Как избежать дублирования в константных и неконстантных функциях-членах. Что следует помнить. Правило 4: Прежде чем использовать объекты, убедитесь, что они инициализированы. ... Что следует помнить. Глава 2. Конструкторы, деструкторы и операторы присваивания. Правило 5: Какие функции C++ создает и вызывает молча. Что следует помнить. Правило 6: Явно запрещайте компилятору генерировать функции, которые вам не нужны. Что следует помнить. Правило 7: Объявляйте деструкторы виртуальными в полиморфном базовом классе. Что следует помнить. Правило 8: Не позволяйте исключениям покидать деструкторы. Что следует помнить. Правило 9: Никогда не вызывайте виртуальные функции в конструкторе или деструкторе. Что следует помнить. Правило 10: Операторы присваивания должны возвращать ссылку на *this. Что следует помнить. Правило 11: В operator= осуществляйте проверку на присваивание самому себе. Что следует помнить. Правило 12: Копируйте все части объекта. Что следует помнить. Глава 3. Управление ресурсами. Правило 13: Используйте объекты для управления ресурсами. Что следует помнить. Правило 14: Тщательно продумывайте поведение при копировании классов, управляющих ресурсами. Что следует помнить. Правило 15: Предоставляйте доступ к самим ресурсам из управляющих ими классов. Что следует помнить. Правило 16: Используйте одинаковые формы new и delete. Что следует помнить. Правило 17: Помещение в «интеллектуальный» указатель объекта, вьщеленного с помощью new, лучше располагать в отдельном предложении. Что следует помнить. Глава 4. Проектирование программ и объявления. Правило 18: Проектируйте интерфейсы так, что их легко было использовать правильно и трудно – неправильно. Что следует помнить. Правило 19: Рассматривайте проектирование класса как проектирование типа. Что следует помнить. Правило 20: Предпочитайте передачу по ссылке на const передаче по значению. Что следует помнить. Правило 21: Не пытайтесь вернуть ссылку, когда должны вернуть объект. Что следует помнить. Правило 22: Объявляйте данные-члены закрытыми. Что следует помнить. Правило 23: Предпочитайте функциям-членам функции, не являющиеся ни членами, ни друзьями класса. Что следует помнить. Правило 24: Объявляйте функции, не являющиеся членами, когда преобразование типов должно быть применимо ко всем параметрам. Что следует помнить. Правило 25: Подумайте о поддержке функции swap, не возбуждающей исключений. Что следует помнить. Глава 5. Реализация. Правило 26: Откладывайте определение переменных насколько возможно. Что следует помнить. Правило 27: Не злоупотребляйте приведением типов. Что следует помнить. Правило 28: Избегайте возвращения «дескрипторов» внутренних данных. Что следует помнить. Правило 29: Стремитесь, чтобы программа была безопасна относительно исключений. Что следует помнить. Правило 30: Тщательно обдумывайте использование встроенных функций. Что следует помнить. Правило 31: Уменьшайте зависимости файлов при компиляции. Что следует помнить. Глава 6. Наследование и объектно-ориентированное проектирование. Правило 32: Используйте открытое наследование для моделирования отношения «является». Что следует помнить. Правило 33: Не скрывайте унаследованные имена. Что следует помнить. Правило 34: Различайте наследование интерфейса и наследование реализации. Что следует помнить. Правило 35: Рассмотрите альтернативы виртуальным функциям. Реализация паттерна««Шаблонный метод» с помощью идиомы невиртуального интерфейса. Реализация паттерна «Стратегия» посредством указателей на функции. Реализация паттерна «Стратегия» посредством класса tr::function. «Классический» паттерн «Стратегия». Резюме. Что следует помнить. Правило 36: Никогда не переопределяйте наследуемые невиртуальные функции. Что следует помнить. Правило 37: Никогда не переопределяйте наследуемое значение аргумента функции по умолчанию. Что следует помнить. Правило 38: Моделируйте отношение «содержит» или «реализуется посредством» с помощью композиции. Что следует помнить. Правило 39: Продумывайте подход к использованию закрытого наследования. Что следует помнить. Правило 40: Продумывайте подход к использованию множественного наследования. Что следует помнить. Глава 7. Шаблоны и обобщенное программирование. Правило 41: Разберитесь в том, что такое неявные интерфейсы и полиморфизм на этапе компиляции. Что следует помнить. Правило 42: Усвойте оба значения ключевого слова typename. Что следует помнить. Правило 43: Необходимо знать, как обращаться к именам в шаблонных базовых классах. Что следует помнить. Правило 44: Размещайте независимый от параметров код вне шаблонов. Что следует помнить. Правило 45: Разрабатывайте шаблоны функций-членов так, чтобы они принимали «все совместимые типы». Что следует помнить. Правило 46: Определяйте внутри шаблонов функции, не являющиеся членами, когда желательны преобразования типа. Что следует помнить. Правило 47: Используйте классы-характеристики для предоставления информации о типах. Что следует помнить. Правило 48: Изучите метапрограммирование шаблонов. Что следует помнить. Глава 8. Настройка new и delete. Правило 49: Разберитесь в поведении обработчика new. Что следует помнить. Правило 50: Когда имеет смысл заменять new и delete. Что следует помнить. Правило 51: Придерживайтесь принятых соглашений при написании new и delete. Что следует помнить. Правило 52: Если вы написали оператор new с размещением, напишите и соответствующий оператор delete. Что следует помнить. Глава 9. Разное. Правило 53: Обращайте внимание на предупреждения компилятора. Что следует помнить. Правило 54: Ознакомьтесь со стандартной библиотекой, включая TR1. Что следует помнить. Правило 55: Познакомьтесь с Boost. Что следует помнить. Приложение А. За пределами «Эффективного использования C++». Эффективное использование STL. Приложение В. Соответствие правил во втором и третьем изданиях. Второе издание в третьем. Третье издание во втором. Примечания. Благодарности. →

Язык программирования C# и платформа .NET.

Об авторе. О научном редакторе. Благодарности. Введение. Вы и я – одна команда. Обзор содержимого книги. Часть 1. Общие сведения о языке C# и платформе .NET. Часть II. Язык программирования C# Часть III. Программирование компоновочных блоков .NET. Часть IV. Программирование с помощью библиотек .NET. Часть V. Web-приложения и Web-сервисы XML. Исходный код примеров книги. Связь с автором. От издательства. ЧАСТЬ I. Общие сведения о языке C# и платформе .NET. ГЛАВА 1. Философия .NET. Предыдущее состояние дел. Подход C/Win32 API. ... Подход C++/MFC. Подход Visual Basic 6.0. Подход Java/J2EE. Подход COM. Подход Windows DNA. Решение .NET. Главные компоненты платформы .NET (CLR, CTS и CLS). Роль библиотек базовых классов. Роль языка C# Другие языки программирования с поддержкой .NET. Жизнь в многоязычном окружении. Компоновочные блоки .NET. Одномодульные и многомодульные компоновочные блоки. Роль CIL. Преимущества CIL. Преобразование CIL-кода в набор инструкций, соответствующих платформе. Роль метаданных типов .NET. Роль манифеста компоновочного блока. Общая система типов. Тип класса. Тип структуры. Тип интерфейса. Тип перечня. Тип делегата. Члены типов. Встроенные типы данных CTS. Общеязыковые спецификации. Гарантия CLS-совместимости. Общеязыковая среда выполнения. Различия между компоновочными блоками, пространствами имен и типами. Программный доступ к пространствам имен. Ссылки на внешние компоновочные блоки. Использование ildasm.exe. Просмотр CIL-кода. Просмотр метаданных типов. Просмотр метаданных компоновочных блоков. Инсталляция среды выполнения .NET. Платформенная независимость .NET. Резюме. ГЛАВА 2. Технология создания приложений на языке C# Установка .NET Framework 2.0 SDK. Компилятор командной строки для C# (csc.exe). Настройка компилятора командной строки для C# Дополнительные средства командной строки .NET. Компоновка C#-приложений с помощью csc.exe. Ссылки на внешний компоновочный блок. Компиляция множества файлов. Ссылки на множество внешних компоновочных блоков. Работа с ответными файлами csc.exe. Ответный файл, используемый по умолчанию (csc.rsp). Отладчик командной строки (cordbg.exe). Отладка с командной строки. Компоновка .NET-приложений с помощью TextPad. Активизация цветовой схемы C# Настройка фильтра файлов *.cs. Подключение csc.exe. Ассоциация команд с пунктами меню. Использование фрагментов программного кода C# Компоновка .NET-приложений с помощью SharpDevelop. Возможности SharpDevelop. Окна проектов и классов. Обзор компоновочных блоков. Инструменты проектирования Windows Forms. Компоновка .NET-приложений с помощью Visual C# 2005 Express. Компоновка .NET-приложений с помощью Visual Studio 2005. Возможности Visual Studio 2005. Утилита обзора решений. Утилита обзора классов. Окно определений программного кода. Утилита обзора объектов. Интегрированная поддержка факторизации программного кода. Фрагменты программного кода и окружения. Средства визуального проектирования классов. Стенд тестирования объектов (ОТВ-тестер). Интегрированная справочная система. Дополнительные средства разработки .NET-приложений. Резюме. ЧАСТЬ II. Язык программирования C# ГЛАВА 3. Основы языка C# Структура простой программы на C# Вариации метода Main(). Обработка аргументов командной строки. Использование аргументов командной строки в Visual Studio 2005. Несколько слов о классе System.Environment. Определение классов и создание объектов. Роль конструкторов. Утечка памяти. Определение "объекта приложения". Класс System.Console. Ввод и вывод в классе Console. Форматирование консольного вывода. Флаги форматирования строк .NET. Доступность членов. Доступность типов. Значения, назначаемые переменным по умолчанию. Значения, назначаемые по умолчанию, и локальные переменные. Синтаксис инициализации членов-переменных. Определение констант. Ссылки на константы. Определение полей только для чтения. Статические поля только для чтения. Ключевое слово static. Статические методы. Статические данные. Статические конструкторы. Статические классы. Модификаторы параметров методов. Способ передачи параметров, используемый по умолчанию. Модификатор out. Модификатор ref. Модификатор params. Итерационные конструкции. Цикл for. Цикл foreach. Конструкции while и do/while. Конструкции выбора решений и операции сравнения. Оператор if/else. Оператор switch. Типы, характеризуемые значениями, и ссылочные типы. Типы, характеризуемые значениями, ссылочные типы и оператор присваивания. Типы, характеризуемые значениями и содержащие ссылочные типы. Передача ссылочных типов по значению. Передача ссылочных типов по ссылке. Типы, характеризуемые значениями, и ссылочные типы: заключительные замечания. Операции создания объектного образа и восстановления из объектного образа. Примеры создания объектных образов и восстановления значений. Восстановление из объектного образа для пользовательских типов. Работа с перечнями .NET. Базовый класс System.Enum. Мастер-класс: System.Object. Поведение System.Object, заданное по умолчанию. Переопределение элементов System.Object, заданных по умолчанию. Переопределение System.Object.ToString(). Переопределение System.Object. Equals(). Переопределение System.Object.GetHashCode(). Тестирование переопределенных членов. Статические члены System.Object. Типы данных System (и их обозначения в C#). Эксперименты с числовыми типами данных. Члены System.Boolean. Члены System.Char. Анализ значений строковых данных. System.DateTime и System.TimeSpan. Тип данных System.String. Базовые операции со строками. Управляющие последовательности. Буквальное воспроизведение строк в C# Роль System.Text.StringBuilder. Типы массивов .NET. Массивы в качестве параметров (и возвращаемых значений). Работа с многомерными массивами. Базовый класс System.Array. Типы с разрешением принимать значение null. Работа с типами, для которых допустимы значения null. Операция ?? Пользовательские пространства имен. Абсолютные имена типов. Использование псевдонимов. Вложенные пространства имен. Пространство имен по умолчанию в Visual Studio 2005. Резюме. ГЛАВА 4. Язык C# 2.0 и объектно-ориентированный подход. Тип класса в C# Перегрузка методов. Использование this для возвратных ссылок в C# Передача вызовов конструктора с помощью this. Определение открытого интерфейса класса. Принципы объектно-ориентированного программирования. Инкапсуляция. Наследование. Полиморфизм. Первый принцип: сервис инкапсуляции C# Инкапсуляция на основе методов чтения и модификации. Инкапсуляция на основе свойств класса. Внутреннее представление свойств в C# Контекст операторов get и set для свойств. Свойства, доступные только для чтения, и свойства, доступные только для записи. Статические свойства. Второй принцип: поддержка наследования в C# Управление созданием базовых классов с помощью base. Множественные базовые классы. Хранение семейных тайн: ключевое слово protected. Запрет наследования: изолированные классы. Модель локализации/делегирования. Вложенные определения типов. Третий принцип: поддержка полиморфизма в C# Ключевые слова virtual и override. Снова о ключевом слове sealed. Абстрактные классы. Принудительный полиморфизм: абстрактные методы. Возможность скрывать члены. Правила приведения типов в C# Распознавание типов. Приведение числовых типов. Парциальные типы C# Документирование исходного кода в C# с помощью XML. Символы форматирования в XML-коде комментариев. Трансформация XML-кода комментариев. Резюме. ГЛАВА 5. Цикл существования объектов. Классы, объекты и ссылки. Основные сведения о существовании объектов. CIL-код для new. Роль корней приложения. Генерации объектов. Тип System.GC. Активизация сборки мусора. Создание объектов, предусматривающих финализацию. Переопределение System.Object.Finalize(). Детали процесса финализации. Создание объектов, предусматривающих освобождение ресурсов. Снова о ключевом слове using в C# Создание типов, предусматривающих освобождение ресурсов и финализацию. Формализованный шаблон освобождения ресурсов. Резюме. ГЛАВА 6. Структурированная обработка исключений. Ода ошибкам и исключениям. Роль обработки исключений в .NET. Атомы обработки исключений в .NET. Базовый класс System.Exception. Простейший пример. Генерирование исключений. Обработка исключений. Конфигурация состояния исключений. Свойство TargetSite. Свойство StackTrace. Свойство HelpLink. Свойство Data. Исключения системного уровня (System.SystemException). Исключения уровня приложения (System.ApplicationException). Создание пользовательских исключений, раз… Создание пользовательских исключений, два… Создание пользовательских исключений, три! Обработка множеств исключений. Общие операторы catch. Генерирование вторичных исключений. Внутренние исключения. Блок finally. Что и чем генерируется. Исключения, оставшиеся без обработки. Отладка необработанных исключений в Visual Studio 2005. Резюме. ГЛАВА 7. Интерфейсы и коллекции. Определение интерфейсов в C# Реализация интерфейсов в C# Интерфейсы в сравнении с абстрактными базовыми классами. Вызов членов интерфейса на уровне объекта. Получение интерфейсных ссылок: ключевое слово as. Получение интерфейсных ссылок: ключевое слово is. Интерфейсы в качестве параметров. Интерфейсы в качестве возвращаемых значений. Массивы интерфейсных типов. Явная реализация интерфейса. Разрешение конфликтов имен. Построение иерархии интерфейсов. Интерфейсы с множеством базовых интерфейсов. Реализация интерфейсов в Visual Studio 2005. Создание перечислимых типов (Enumerable и IEnumerator). Методы итератора в C# Создание клонируемых объектов (ICloneable). Пример клонирования. Создание сравнимых объектов (IComparable). Сортировка по набору критериев (IComparer). Типы, определяющие сортировку, и пользовательские свойства. Интерфейсы из пространства имен System.Collections. Интерфейс ICollection. Интерфейс IDictionary. Интерфейс IDictionaryEnumerator. Интерфейс IList. Классы из пространства имен System.Collections. Работа с типом ArrayList. Работа с типом Queue. Работа с типом Stack. Пространство имен System.Collections.Specialized. Резюме. ГЛАВА 8. Интерфейсы обратного вызова, делегаты и события. Интерфейсы обратного вызова. Тип делегата .NET. Определение делегата в C# Базовые классы System.MulticastDelegate и System.Delegate. Простейший пример делегата. Исследование объекта делегата. Модификация типа Car с учетом делегатов. Реализация групповых вызовов. Более совершенный пример делегата. Делегаты в качестве параметров. Анализ программного кода делегирования. Ковариантность делегатов. События в C# Глубинный механизм событий. Прием поступающих событий. Упрощенная регистрация событий в Visual Studio 2005. "Разборчивые" события. Анонимные методы в C# Доступ к "внешним" переменным. Групповое преобразование методов в C# Резюме. ГЛАВА 9. Специальные приемы построения типов. Создание пользовательских индексаторов. Вариации индексатора для типа Garage. Внутреннее представление индексаторов типов. Заключительные замечания об индексаторах. Перегрузка операций. Перегрузка бинарных операций. Операции += и -= Перегрузка унарных операций. Перегрузка операций проверки на тождественность. Перегрузка операций сравнения. Внутреннее представление перегруженных операций. Использование перегруженных операций в языках, не поддерживающих перегрузку операций. Заключительные замечания о перегрузке операций. Пользовательские преобразования типов. Преобразования чисел. Преобразования типов класса. Создание пользовательских подпрограмм преобразования. Варианты явного преобразования для типа Square. Определение подпрограмм неявного преобразования. Внутреннее представление пользовательских подпрограмм преобразования. Ключевые слова C#, предназначенные для более сложных конструкций. Ключевое слово checked. Проверки переполнения для всего проекта. Ключевое слово unchecked. Работа с типами указателя. Ключевое слово unsafe. Работа с операциями * и & Небезопасная (и безопасная) функция Swap. Доступ к полям через указатели (операция -›). Ключевое слово stackalloc. Фиксация типа с помощью ключевого слова fixed. Ключевое слово sizeof. Директивы препроцессора C# Разделы программного кода. Условная компиляция. Резюме. ГЛАВА 10. Обобщения. Снова о создании объектных образов, восстановлении значений и System.Object. Проблемы создания объектных образов и восстановления значений. Типовая безопасность и строго типизованные коллекции. Проблемы создания объектных образов и строго типизованные коллекции. Пространство имен System.Collections.Generic. Тип List‹T› Создание обобщенных методов. Пропуск параметров типа. Создание обобщенных структур (и классов). Ключевое слово default в обобщенном программном коде. Создание пользовательских обобщенных коллекций. Установка ограничений для параметров типа с помощью where. Отсутствие поддержки ограничений при использовании операций. Создание обобщенных базовых классов. Создание обобщенных интерфейсов. Создание обобщенных делегатов. Имитация обобщенных делегатов в .NET 1.1. Несколько слов о вложенных делегатах. Резюме. ЧАСТЬ III. Программирование компоновочных блоков .NET. ГЛАВА 11. Компоновочные блоки .NET. Роль компоновочных блоков .NET. Расширенные возможности многократного использования программного кода. Установка четких границ типов. Управление версиями. Самоописание. Средства конфигурации. Формат компоновочного блока .NET. Заголовок Win32. Заголовок CLR. Программный код CIL, метаданные типа и манифест компоновочного блока. Необязательные ресурсы компоновочного блока. Одномодульные и многомодульные компоновочные блоки. Создание и использование одномодульных компоновочных блоков. Анализ манифеста. Анализ CIL-кода. Анализ метаданных типов. Создание приложения-клиента в C# Создание приложения-клиента в Visual Basic .NET. Межъязыковое перекрестное наследование. Создание и использование многомодульных компоновочных блоков. Анализ файла ufo.netmodule. Анализ файла airvehicles.dll. Использование многомодульного компоновочного блока. Приватные компоновочные блоки. Идентификация приватных компоновочных блоков. Процесс зондирования. Конфигурация приватных компоновочных блоков. Файлы конфигурации и Visual Studio 2005. Утилита конфигурации NET Framework 2.0. Общедоступные компоновочные блоки. Строгая форма имени. Создание строгого имени для CarLibrary.dll. Назначение строгого имени в Visual Studio 2005. Установка и удаление общедоступных компоновочных блоков. Отложенная подпись. Использование общедоступных компоновочных блоков. Анализ манифеста SharedCarLibClient. Конфигурация общедоступных компоновочных блоков. Фиксация версии общедоступного компоновочного блока. Создание общедоступного компоновочного блока версии 2.0.0.0. Динамическая привязка к конкретной версии компоновочного блока. Снова об утилите конфигурации .NET Framework 2.0. Анализ внутренней структуры GAC. Файлы политики публикации компоновочных блоков. Игнорирование файла политики публикации. Элемент ‹codeBase› Пространство имен System.Configuration. Файл конфигурации машины. Общая схема связей компоновочных блоков. Резюме. ГЛАВА 12. Отображение типов, динамическое связывание и программирование с помощью атрибутов. Метаданные типов. Анализ метаданных перечня EngineState. Анализ метаданных типа Car. Анализ TypeRef. Представление метаданных компоновочного блока. Представление ссылок на другие компоновочные блоки. Представление строковых литералов. Отображение типов в .NET. Класс System.Type. Получение Туре с помощью System.Object.GetType(). Получение Туре с помощью System.Type.GetType(). Получение Туре с помощью typeof(). Создание пользовательского приложения для просмотра метаданных. Отображение методов. Отображение полей и свойств. Отображение реализованных интерфейсов. Отображение вспомогательной информации. Реализация Main(). Отображение параметров и возвращаемых значений методов. Динамически загружаемые компоновочные блоки. Отображение общедоступных компоновочных блоков. Динамическое связывание. Класс System.Activator. Вызов методов без параметров. Вызов методов с параметрами. Программирование с помощью атрибутов. Потребители атрибутов. Применение встроенных атрибутов C# Параметры конструктора для атрибутов. Атрибут Obsolete в действии. Сокращенное представление атрибутов в C# Создание пользовательских атрибутов. Применение пользовательских атрибутов. Ограничение использования атрибута. Атрибуты уровня компоновочного блока (и уровня модуля). Файл AssemblyInfo.cs в Visual Studio 2005. Отображение атрибутов при статическом связывании. Отображение атрибутов при динамическом связывании. Перспективы отображения, статического и динамического связывания и пользовательских атрибутов. Создание расширяемого приложения. Создание CommonSnappableTypes.dll. Создание подключаемого компонента в C# Создание подключаемого компонента в Visual Basic .NET. Создание расширяемого приложения Windows Forms. Резюме. ГЛАВА 13. Процессы, домены приложений, контексты и хосты CLR. Выполнение традиционных процессов Win32. Обзор потоков. Взаимодействие с процессами в рамках платформы .NET. Список выполняемых процессов. Чтение данных конкретного процесса. Список множества потоков процесса. Информация о наборе модулей процесса. Начало и остановка процессов с помощью программных средств. Домены приложений .NET. Список доменов приложения процесса. Программное создание новых доменов приложения. Программная выгрузка доменов приложения. Границы контекста объекта. Контекстно-независимые и контекстно-связанные типы. Определение контекстно-связанных объектов. Проверка контекста объекта. Еще несколько слов о процессах, доменах приложения и контекстах. Хостинг общеязыковой среды выполнения. Параллельное выполнение CLR. Загрузка конкретной версии CLR. Дополнительные хосты CLR. Резюме. ГЛАВА 14. Создание многопоточных приложений. Взаимосвязь процессов, доменов приложений, контекстов и потоков. Проблема конкуренции и роль синхронизации потоков. Краткий обзор делегатов .NET. Асинхронная природа делегатов. Методы BeginInvoke() и EndInvoke(). Интерфейс System.IAsyncResult. Асинхронный вызов методов. Синхронизация вызывающего потока. Роль делегата AsyncCallback. Роль класса AsyncResult. Передача и получение пользовательских данных состояния. Пространство имен System.Threading. Класс System.Threading.Thread. Получение информации об отдельном потоке. Свойство Name. Свойство Priority. Программное создание вторичных потоков. Работа с делегатом ThreadStart. Работа с делегатом ParameterizedThreadStart. Приоритетные и фоновые потоки. Проблема конкурентного доступа. Синхронизация с помощью ключевого слова lock в C# Синхронизация с помощью типа System.Threading.Monitor. Синхронизация с помощью типа System.Threading.Interlocked. Синхронизация с помощью атрибута [Synchronization]. Программирование с помощью таймеров обратного вызова. Пул потоков CLR. Резюме. ГЛАВА 15. CIL и роль динамических компоновочных блоков. Природа программирования в терминах CIL. Директивы, атрибуты и коды операций CIL. Роль директив CIL. Роль атрибутов CIL. Роль кодов операций CIL. Различия между мнемоникой и кодом операции CIL. Добавление и извлечение данных: стековая природа CIL. Челночная технология разработки. Роль меток в программном коде CIL. Взаимодействие с CIL: модификация файла *.il. Компиляция CIL-кода с помощью ilasm.exe. Компиляция CIL-кода с помощью SharpDevelop. Компиляция CIL-кода с помощью ILIDE# Роль peverify.exe. Директивы и атрибуты CIL. Ссылки на внешние компоновочные блоки. Определение текущего компоновочного блока. Определение пространств имен. Определение типов класса. Определение и реализация интерфейсов. Определение перечней. Компиляция файла CILTypes.il. Соответствие между типами библиотеки базовых классов .NET, C# и CIL. Определение членов типов в CIL. Определение полей данных. Определение конструкторов типов. Определение свойств. Определение параметров членов. Анализ кодов операций CIL. Директива .maxstack. Объявление локальных переменных. Связывание параметров с локальными переменными. Скрытая ссылка this. Представление итерационных конструкций. Создание компоновочного блока .NET в CIL. Создание CILCars.dll. Создание CILCarClient.exe. Динамические компоновочные блоки. Исследование пространства имен System.Reflection.Emit. Роль System.Reflection.Emit.ILGenerator. Генерирование динамического компоновочного блока. Генерирование компоновочного блока и набора модулей. Роль типа ModuleBuilder. Генерирование типа HelloClass и принадлежащей ему строковой переменной. Генерирование конструкторов. Генерирование метода HelloWorld(). Использование динамически сгенерированного компоновочного блока. Несколько слов о System.CodeDOM. Резюме. ЧАСТЬ IV. Программирование с помощью библиотек .NET. ГЛАВА 16. Пространство имен System.IO. Анализ пространства имен System.IO. Типы Directory(Info) и File(Info). Абстрактный базовый класс FileSystemInfo. Работа с типом DirectoryInfo. Перечень FileAttributes. Перечисление файлов с помощью DirectoryInfo. Создание подкаталогов с помощью DirectoryInfo. Работа с типом Directory. Работа с типом класса DriveInfo. Работа с классом FileInfo. Метод FilеInfо.Create(). Метод FileInfo.Open(). Методы FileInfo.OpenRead() и FileInfo.OpenWrite(). Метод FileInfo.OpenText(). Методы FileInfo.CreateText() и FileInfo.AppendText(). Работа с типом File. Новые члены File в .NET 2.0. Абстрактный класс Stream. Работа с FileStream. Работа с StreamWriter и StreamReader. Запись в текстовый файл. Чтение из текстового файла. Непосредственное создание типов StreamWriter/StreamReader. Работа с типами StringWriter и StringReader. Работа с BinaryWriter и BinaryReader. Программный мониторинг файлов. Асинхронный файловый ввод-вывод. Резюме. ГЛАВА 17. Сериализация объектов. Основы сериализации объектов. Роль объектных графов. Конфигурирование объектов для сериализации. Открытые поля, приватные поля и открытые свойства. Выбор формата сериализации. Интерфейсы IFormatter и IRemotingFormatter. Выбор формата и точность типов. Сериализация объектов с помощью BinaryFormatter. Реконструкция объектов с помощью BinaryFormatter. Сериализация объектов с помощью SoapFormatter. Сериализация объектов с помощью XmlSerializer. Контроль генерируемых XML-данных. Сохранение коллекций объектов. Настройка процесса сериализации. Более глубокий взгляд на сериализацию объектов. Настройка параметров сериализации с помощью ISerializable. Настройка параметров сериализации с помощью атрибутов. Поддержка версий сериализации объектов. Резюме. ГЛАВА 18. Удаленное взаимодействие .NET. Понятие удаленного взаимодействия .NET. Пространства имен удаленного взаимодействия .NET. Каркас удаленного взаимодействия .NET. Агенты и сообщения. Каналы. Снова о роли форматтера .NET. Общая картина. Несколько слов о расширении стандартных возможностей. Термины удаленного взаимодействия .NET. Варианты маршалинга для объектов: MBR и MBV. Конфигурация MBV-объекта. Конфигурация MBR-объекта. Варианты активизации для MBR-типа: WKO и CAO. Варианты конфигурации WKO-типа: синглеты и объекты одиночного вызова. Сводная характеристика MBR-объектов. Инсталляция приложения, использующего удаленное взаимодействие. Создание распределенного приложения. Создание общего компоновочного блока. Создание компоновочного блока сервера. Создание компоновочного блока клиента. Тестирование приложения, использующего удаленное взаимодействие. Тип ChannelServices. Тип RemotingConfiguration. Снова о режиме активизации WKO-типов. Установка сервера на удаленной машине. Использование ТСР-каналов. Несколько слов о IpcChannel. Файлы конфигурации удаленного взаимодействия. Создание файлов *.config сервера. Создание файлов *.config клиента. Работа с MBV-объектами. Создание общего компоновочного блока. Создание компоновочного блока сервера. Создание компоновочного блока клиента. Объекты, активизируемые клиентом. Схема лизингового управления циклом существования САО-типов и WKO-синглетов. Схема лизингового управления, используемая по умолчанию. Изменение параметров схемы лизингового управления. Настройка параметров лизинга на стороне сервера. Настройка параметров лизинга на стороне клиента. Спонсоры лизинга сервера (и клиента). Альтернативные хосты для удаленных объектов. Хостинг удаленных объектов с помощью сервиса Windows. Реализация метода Main(). Реализация метода CarService.OnStart(). Реализация метода OnStop(). Добавление установщика сервиса. Установка CarWinService. Хостинг удаленных объектов с помощью IIS. Асинхронное удаленное взаимодействие. Роль атрибута [OneWay]. Резюме. ГЛАВА 19. Создание окон с помощью System.Windows.Forms. Обзор пространства имен System.Windows.Forms. Работа с типами Windows Forms. Создание главного окна вручную. Принцип разграничения обязанностей. Роль класса Application. Возможности класса Application. Делегат System.EventHandler. "Анатомия" формы. Функциональные возможности класса Control. Использование возможностей класса Control. Ответ на события MouseMove. Регистрация щелчков кнопок мыши. Ответ на события клавиатуры. Функциональные возможности класса Form. Цикл существования типа Form. Создание Windows-приложений в Visual Studio 2005. Получение доступа к устаревшим элементам управления. Анализ проекта Windows Forms в Visual Studio 2005. Обработка событий в режиме проектирования. Класс Program. Необходимые компоновочные блоки. Работа с MenuStrip и ContextMenuStrip. Добавление элемента Textbox в MenuStrip. Создание контекстных меню. Проверка состояния элементов меню. Работа с StatusStrip. Создание системы меню. Настройка StatusStrip. Работа с типом Timer. Включение отображения. Вывод подсказок для выбранных элементов меню. Состояние готовности. Работа с ToolStrip. Работа с ToolStripContainer. Создание MDI-приложения. Создание родительской формы. Создание дочерней формы. Создание дочерних окон. Резюме. ГЛАВА 20. Визуализация графических данных средствами GDI+ Обзор пространств имен GDI+ Обзор пространства имен System.Drawing. Утилитарные типы System.Drawing. Тип Point(F). Тип Rectangle(F). Класс Region. Класс Graphics. Сеансы Paint. Обновление области клиента формы. Доступ к объекту Graphics вне обработчика Paint. Освобождение объекта Graphics. Системы координат GDI+ Единица измерения, предлагаемая по умолчанию. Выбор альтернативной единицы измерения. Изменение начала координат. Определение цветовых значений. Класс ColorDialog. Манипулирование шрифтами. Работа с семействами шрифтов. Работа с гарнитурами и размерами шрифтов. Список установленных шрифтов. Класс FontDialog. Обзор пространства имен System.Drawing.Drawing2D. Работа с типами Pen. Концы линий. Работа с типами Brush. Работа с HatchBrush. Работа с TextureBrush. Работа с LinearGradientBrush. Визуализация изображений. Попадание в заданную область и операции перетаскивания для PictureBox. Проверка попадания в область изображения. Проверка попадания в область, отличную от прямоугольной. Формат ресурсов .NET. Пространство имен System.Resources. Создание файла *.resx программными средствами. Создание файла *.resources. Добавление файла *.resources в компоновочный блок .NET. Работа с ResourceWriter. Генерирование ресурсов в Visual Studio 2005. Чтение ресурсов программными средствами. Резюме. ГЛАВА 21. Использование элементов управления Windows Forms. Элементы управления Windows Forms. Добавление элементов управления в форму вручную. Тип Control.ControlCollection. Добавление элементов управления в форму в Visual Studio 2005. Работа с базовыми элементами управления. Элемент Label. Элемент TextBox. Элемент MaskedTextBox. Элемент Button. Элементы CheckBox, RadioButton и Group Box. Элемент CheckedListBox. Элемент Listbox. Элемент ComboBox. Порядок переходов по нажатию клавиши табуляции. Мастер настройки переходов по табуляции. Работа с другими элементами управления. Элемент MonthCalendar. Элемент ToolTip. Элемент TabControl. Элемент TrackBar. Элемент Panel. Элементы UpDown. Элемент ErrorProvider. Элемент TreeView. Добавление графических изображений для узлов. Элемент WebBrowser. Создание пользовательских элементов управления Windows Forms. Создание изображений. Создание пользовательского интерфейса режима проектирования. Реализация CarControl. Определение пользовательских событий. Определение пользовательских свойств. Контроль анимации. Отображение названия. Тестирование типа CarControl. Создание пользовательской формы для CarControl. Пространство имен System.ComponentModel. Совершенствование режима проектирования CarControl. Определение выбираемых по умолчанию свойств и событий. Выбор изображений для панели инструментов. Создание пользовательских диалоговых окон. Свойство DialogResult. Наследование форм. Динамическое позиционирование элементов управления Windows Forms. Свойство Anchor. Свойство Dock. Табличное и потоковое размещение элементов. Резюме. ГЛАВА 22. Доступ к базам данных с помощью ADO.NET. Высокоуровневое определение ADO.NET. Две грани ADO.NET. Поставщики данных ADO.NET. Поставщики данных Microsoft. Поставщики данных других производителей. Дополнительные пространства имен ADO.NET. Типы System.Data. Интерфейс IDbConnection. Интерфейс IDbTransaction. Интерфейс IDbCommand. Интерфейсы IDbDataParameter и IDataParameter. Интерфейсы IDbDataAdapter и IDataAdapter. Интерфейсы IDataReader и IDataRecord. Интерфейсы и абстрактные поставщики данных. Файлы конфигурации и гибкость приложений. Модель источника поставщика данных .NET 2.0. Зарегистрированные источники поставщиков данных. Рабочий пример источника поставщика данных. Элемент ‹connectionStrings› Установка базы данных Cars. Соединение с базой данных в Visual Studio 2005. Связный уровень ADO.NET. Работа с объектами соединения. Работа с ConnectionStringBuilder в .NET 2.0. Работа с объектами команд. Работа с объектами чтения данных. Получение множества наборов результатов с помощью объектов чтения данных. Изменение содержимого таблиц с помощью объектов команд. Вставка новых записей. Удаление записей. Обновление записей. Работа с объектами параметризованных команд. Указание параметров с помощью типа DbParameter. Выполнение хранимых процедур с помощью DbCommand. Асинхронный доступ к данным в .NET 2.0. Несвязный уровень ADO.NET. Роль DataSet. Члены DataSet. Работа с DataColumn. Создание DataColumn. Разрешение автоприращения для полей. Добавление DataColumn в DataTable. Работа с DataRow. Свойство DataRow.RowState. Работа с DataTable. Работа с DataTableReader в .NET 2.0. Сохранение DataSet (и DataTable) в формате XML. Привязка DataTable к интерфейсу пользователя. Программное удаление строк. Применение фильтров и сортировки. Обновление строк. Работа с типом DataView. Работа с адаптерами данных. Заполнение DataSet с помощью адаптера данных. Отображение имен базы данных в понятные имена. Обновление базы данных с помощью объекта адаптера данных. Установка свойства InsertCommand. Установка свойства UpdateCommand. Установка свойства DeleteCommand. Генерирование SQL-команд с помощью типов построителя команд. Объекты DataSet с множеством таблиц и объекты DataRelation. Навигационные возможности для связанных таблиц. Возможности мастеров данных. Строго типизованные объекты DataSet. Автоматически генерируемый компонент данных. Резюме. ЧАСТЬ V. Web-приложения и Web-сервисы XML. ГЛАВА 23. Web-страницы и Web-элементы управления ASP.NET 2.0. Роль HTTP. Web-приложения и Web-серверы. Работа с виртуальными каталогами IIS. Сервер разработки ASP.NET 2.0. Роль HTML. Структура HTML-документа. Разработка HTML-формы. Создание пользовательского интерфейса на базе HTML. Роль сценариев клиента. Пример сценария клиента. Контроль допустимости вводимых данных. Подача запроса формы (GET и POST). Создание "классической" ASP-страницы. Ответ на отправку POST. Проблемы классической технологии ASP. Главные преимущества ASP.NET 1.х. Главные преимущества ASP.NET 2.0. Пространства имен ASP.NET 2.0. Модель программного кода Web-страницы ASP.NET. Модель одномодульной страницы. Директива ‹%@Page%› Директива ‹%@Import%› Блок ‹script› Декларация элемента ASP.NET. Модель страницы с внешним кодом поддержки. Отладка и трассировка страниц ASP.NET. Структура каталогов Web-узла ASP.NET. Роль папки Bin. Роль папки App_Code. Цикл компиляции страницы ASP.NET 2.0. Цикл компиляции одномодульных страниц. Цикл компиляции многомодульных страниц. Цепочка наследования типа Page. Тип System.Web.UI.Page. Взаимодействие с поступающим HTTP-запросом. Получение статистики браузера. Доступ к поступающим данным формы. Свойство IsPostBack. Взаимодействие с исходящим HTTP-ответом. Генерирование HTML-содержимого. Перенаправление пользователей. Цикл существования Web-страницы ASP.NET. Роль атрибута AutoEventWireUp. Событие Error. Природа Web-элементов управления. Обработка серверных событий. Свойство AutoPostBack. Тип System.Web.UI.Control. Список вложенных элементов управления. Динамическое добавление (и удаление) элементов управления. Основные члены типа System.Web.Ul.WebControls.WebControl. Категории Web-элементов управления ASP.NET. Несколько слов о System.Web.UI.HtmlControls. Создание простого Web-узла ASP.NET 2.0. Работа с шаблоном страниц. Работа с элементом управления Menu. Работа с AdRotator. Определение страницы Default.aspx. Создание страницы Inventory. Разрешение сортировки и перелистывания. Разрешение редактирования на месте. Создание страницы BuildCar. Роль элементов управления, связанных с контролем ввода. Элемент RequiredFieldValidator. Элемент RangeValidator. Элемент CompareValidator. Создание отчетов по проверкам. Резюме. ГЛАВА 24. Web-приложения ASP.NET 2.0. Проблема состояния. Технологии управления состоянием ASP.NET. Роль состояния представлений ASP.NET. Демонстрация использования состояния представлений. Добавление пользовательских данных состояния представлений. Несколько слов о данных состояния элементов. Роль файла Global.asax. Последний глобальный шанс для обработки исключений. Базовый класс HttpApplication. Различия между приложением и сеансом. Поддержка данных состояния приложения. Изменение данных состояния приложения. Обработка завершения работы Web-приложения. Кэш приложения. Кэширование данных. Изменение файла *.aspx. Обработка сеансовых данных. Дополнительные члены HttpSessionState. Данные cookie. Создание данных cookie. Чтение поступающих данных cookie. Настройка Web-приложения ASP.NET с помощью Web.config. Разрешение трассировки с помощью ‹trace› Настройка вывода сообщений об ошибках с помощью ‹customErrors› Сохранение данных состояния с помощью ‹sessionState› Утилита администрирования узла ASP.NET 2.0. Наследование конфигурации. Резюме. ГЛАВА 25. Web-сервисы XML. Роль Web-сервисов XML. Преимущества Web-сервисов XML. Определение клиента Web-сервиса XML. Компоненты Web-сервиса XML. Служба поиска Web-сервиса XML. Служба описания Web-сервиса XML. Транспортный протокол. Пространства имен .NET для Web-сервисов XML. Пространство имен System.Web.Services. Создание Web-сервиса XML вручную. Тестирование Web-сервиса XML с помощью WebDev.WebServer.exe. Тестирование Web-сервиса XML с помощью IIS. Просмотр WSDL-документа. Автоматически генерируемая страница тестирования. Создание пользовательской страницы тестирования. Создание Web-сервиса XML в Visual Studio 2005. Реализация Web-метода TellFortune(). Роль базового класса WebService. Атрибут [WebService]. Свойства Namespace и Description. Свойство Name. Атрибут [WebServiceBinding]. Игнорирование проверки соответствия правилам ВР 1.1. Отмена проверки соответствия правилам BP 1.1. Атрибут [WebMethod]. Описание Web-метода с помощью свойства Description. Устранение конфликтов имен WSDL с помощью свойства MessageName. Поддержка данных состояния Web-сервисов с помощью свойства EnableSession. Настройка данных сеансового состояния с помощью Web.config. Язык описания Web-сервисов (WSDL). Определение WSDL-документа. Элемент ‹types› Элемент ‹message› Элемент ‹portType› Элемент ‹binding› Элемент ‹service› Снова о протоколах связи Web-сервисов XML. Связь HTTP GET и HTTP POST. Связь SOAP. Просмотр сообщения SOAP. Утилита командной строки wsdl.exe. Преобразование WSDL-кода в серверный программный код Web-сервиса. Преобразование WSDL-кода в программный код агента для клиента. Программный код агента. Конструктор, заданный по умолчанию. Поддержка синхронного вызова. Поддержка асинхронного вызова. Создание приложения клиента. Генерирование программного кода агента в Visual Studio 2005. Доступ к пользовательским типам Web-методов. Доступ к массивам. Доступ к структурам. Доступ к типам DataSet ADO.NET. Клиент Windows Forms. Представление типов на стороне клиента. Стандарт поиска и взаимодействия (протокол UDDI). Взаимодействие с UDDI в Visual Studio 2005. Резюме. Примечания. →

Язык программирования C++.

Введение. Для кого написана эта книга. Изменения в пятом издании. Структура книги. Соглашения, принятые в книге. Примечание о компиляторах. Благодарности. От издательства. Глава 1. Первые шаги. 1.1. Создание простой программы на языке С++ Ключевая концепция. Типы. 1.1.1. Компиляция и запуск программы. Соглашение об именовании файлов исходного кода. Запуск компилятора из командной строки. Вызов компилятора GNU или Microsoft. Упражнения раздела 1.1.1. 1.2. Первый взгляд на ввод-вывод. Стандартные объекты ввода и вывода. ... Программа, использующая библиотеку ввода-вывода. Запись в поток. Использование имен из стандартной библиотеки. Чтение из потока. Завершение программы. Упражнения раздела 1.2. 1.3. Несколько слов о комментариях. Виды комментариев в С++ Парный комментарий не допускает вложения. Упражнения раздела 1.3. 1.4. Средства управления. 1.4.1. Оператор while. Упражнения раздела 1.4.1. 1.4.2. Оператор for. Упражнения раздела 1.4.2. 1.4.3. Ввод неизвестного количества данных. Ввод конца файла с клавиатуры. Возвращаясь к компиляции. Упражнения раздела 1.4.3. 1.4.4. Оператор if. Упражнения раздела 1.4.4. Ключевая концепция. Выравнивание и форматирование кода программ C++ 1.5. Введение в классы. 1.5.1. Класс Sales_item. Ключевая концепция. Определение поведения класса. Чтение и запись объектов класса Sales_item. Суммирование объектов класса Sales_item. Использование перенаправления файлов. Упражнения раздела 1.5.1. 1.5.2. Первый взгляд на функции-члены. Что такое функция-член? Упражнения раздела 1.5.2. 1.6. Программа для книжного магазина. Упражнения раздела 1.6. Резюме. Термины. Часть I. Основы. Глава 2. Переменные и базовые типы. 2.1. Простые встроенные типы. 2.1.1. Арифметические типы. Машинный уровень представления встроенных типов. Знаковые и беззнаковые типы. Совет. Какой тип использовать. Упражнения раздела 2.1.1. 2.1.2. Преобразование типов. Совет. Избегайте неопределенного и машинно-зависимого поведения. Выражения, задействующие беззнаковые типы. Внимание! Не смешивайте знаковые и беззнаковые типы. Упражнения раздела 2.1.2. 2.1.3. Литералы. Целочисленные литералы и литералы с плавающей запятой. Символьные и строковые литералы. Управляющие последовательности. Определение типа литерала. Логические литералы и литеральные указатели. Упражнения раздела 2.1.3. 2.2. Переменные. 2.2.1. Определения переменных. Терминология. Что такое объект? Инициализаторы. Списочная инициализация. Инициализация по умолчанию. Упражнения раздела 2.2.1. 2.2.2. Объявления и определения переменных. Внимание! Неинициализированные переменные — причина проблем во время выполнения. Упражнения раздела 2.2.2. Ключевая концепция. Статическая типизация. 2.2.3. Идентификаторы. Соглашения об именах переменных. Упражнения раздела 2.2.3. 2.2.4. Область видимости имен. Совет. Определяйте переменные при первом использовании. Вложенные области видимости. Упражнения раздела 2.2.4. 2.3. Составные типы. 2.3.1. Ссылки. Ссылка — это псевдоним. Определение ссылок. Упражнения раздела 2.3.1. 2.3.2. Указатели. Получение адреса объекта. Значение указателя. Использование указателя для доступа к объекту. Ключевая концепция. У некоторых символов есть несколько значений. Нулевые указатели. Совет. Инициализируйте все указатели. Присвоение и указатели. Другие операции с указателями. Упражнения раздела 2.3.2. 2.3.3. Понятие описаний составных типов. Определение нескольких переменных. Указатели на указатели. Ссылки на указатели. Упражнения раздела 2.3.3. 2.4. Спецификатор const. Инициализация и константы. По умолчанию константные объекты локальны для файла. Упражнения раздела 2.4. 2.4.1. Ссылка на константу. Терминология. Константная ссылка — это ссылка на константу. Инициализация и ссылки на константу. Ссылка на константу может ссылаться на неконстантный объект. 2.4.2. Указатели и спецификатор const. Константные указатели. Упражнения раздела 2.4.2. 2.4.3. Спецификатор const верхнего уровня. Упражнения раздела 2.4.3. 2.4.4. Переменные constexpr и константные выражения. Переменные constexpr. Литеральные типы. Указатели и спецификатор constexpr. Упражнения раздела 2.4.4. 2.5. Работа с типами. 2.5.1. Псевдонимы типов. Указатели, константы и псевдонимы типа. 2.5.2. Спецификатор типа auto. Составные типы, const и auto. Упражнения раздела 2.5.2. 2.5.3. Спецификатор типа decltype. Спецификатор decltype и ссылки. Упражнения раздела 2.5.3. 2.6. Определение собственных структур данных. 2.6.1 Определение типа Sales_data. Переменные-члены класса. Упражнения раздела 2.6.1. 2.6.2. Использование класса Sales_data. Суммирование двух объектов класса Sales_data. Чтение данных в объект класса Sales_data. Вывод суммы двух объектов класса Sales_data. Упражнения раздела 2.6.2. 2.6.3. Создание собственных файлов заголовка. Краткое введение в препроцессор. Упражнения раздела 2.6.3. Резюме. Термины. Глава 3. Типы string, vector и массивы. 3.1. Пространства имен и объявления using. Для каждого имени необходимо индивидуальное объявление using. Заголовки не должны содержать объявлений using. Примечание для читателя. Упражнения раздела 3.1. 3.2. Библиотечный тип string. 3.2.1. Определение и инициализация строк. Прямая инициализация и инициализация копией. 3.2.2. Операции со строками. Чтение и запись строк. Чтение неопределенного количества строк. Применение функции getline() для чтения целой строки. Строковые операции size() и empty(). Тип string::size_type. Сравнение строк. Присвоение строк. Сложение двух строк. Сложение строк и символьных строковых литералов. Упражнения раздела 3.2.2. 3.2.3. Работа с символами строки. Совет. Используйте версии С++ библиотечных заголовков языка С. Обработка каждого символа, использование серийного оператора for. Использование серийного оператора for для изменения символов в строке. Обработка лишь некоторых символов. Использование индексирования для перебора. Внимание! Индексирование не контролируется. Использование индексирования для произвольного доступа. Упражнения раздела 3.2.3. 3.3. Библиотечный тип vector. 3.3.1. Определение и инициализация векторов. Списочная инициализация вектора. Создание определенного количества элементов. Инициализация значения. Списочный инициализатор или количество элементов. Упражнения раздела 3.3.1. 3.3.2. Добавление элементов в вектор. Ключевая концепция. Рост вектора эффективен. Последствия возможности добавления элементов в вектор. Упражнения раздела 3.3.2. 3.3.3. Другие операции с векторами. Вычисление индекса вектора. Индексация не добавляет элементов. Внимание! Индексировать можно лишь существующие элементы! Упражнения раздела 3.3.3. 3.4. Знакомство с итераторами. 3.4.1. Использование итераторов. Операции с итераторами. Перемещение итератора с одного элемента на другой. Ключевая концепция. Обобщенное программирование. Типы итераторов. Терминология. Итераторы и типы итераторов. Функции begin() и end(). Объединение обращения к значению и доступа к члену. Некоторые операции с векторами делают итераторы недопустимыми. 3.4.2. Арифметические действия с итераторами. Арифметические операции с итераторами. Использование арифметических действий с итераторами. Упражнения раздела 3.4.2. 3.5. Массивы. 3.5.1. Определение и инициализация встроенных массивов. Явная инициализация элементов массива. Особенности символьных массивов. Не допускается ни копирование, ни присвоение. Понятие сложных объявлений массива. Упражнения раздела 3.5.1. 3.5.2. Доступ к элементам массива. Проверка значений индекса. Упражнения раздела 3.5.2. 3.5.3. Указатели и массивы. Указатели — это итераторы. Библиотечные функции begin() и end(). Арифметические действия с указателями. Взаимодействие обращения к значению с арифметическими действиями с указателями. Индексирование и указатели. Упражнения раздела 3.5.3. 3.5.4. Символьные строки в стиле С. Строковые функции библиотеки С. Сравнение строк. За размер строки отвечает вызывающая сторона. Упражнения раздела 3.5.4. 3.5.5. Взаимодействие с устаревшим кодом. Совместное использование библиотечных строки строк в стиле С. Использование массива для инициализации вектора. Совет. Используйте вместо массивов библиотечные типы. Упражнения раздела 3.5.5. 3.6. Многомерные массивы. Инициализация элементов многомерного массива. Индексация многомерных массивов. Использование серийного оператора for с многомерными массивами. Указатели и многомерные массивы. Псевдонимы типов упрощают указатели на многомерные массивы. Упражнения раздела 3.6. Резюме. Термины. Глава 4. Выражения. 4.1. Основы. 4.1.1. Фундаментальные концепции. Группировка операторов и операндов. Преобразование операндов. Перегруженные операторы. L- и r-значения. 4.1.2. Приоритет и порядок. Круглые скобки переопределяют приоритет и порядок. Когда важны приоритет и порядок. Упражнения раздела 4.1.2. 4.1.3. Порядок вычисления. Порядок вычисления, приоритет и порядок операторов. Упражнения раздела 4.1.3. Совет. Манипулирование составными выражениями. 4.2. Арифметические операторы. Внимание! Переполнение переменной и другие арифметические особенности. Упражнения раздела 4.2. 4.3. Логические операторы и операторы отношения. Операторы логического AND и OR. Оператор логического NOT. Операторы отношения. Проверка равенства и логические литералы. Упражнения раздела 4.3. 4.4. Операторы присвоения. Оператор присвоения имеет правосторонний порядок. Оператор присвоения имеет низкий приоритет. Не перепутайте операторы равенства и присвоения. Составные операторы присвоения. Упражнения раздела 4.4. 4.5. Операторы инкремента и декремента. Совет. Используйте постфиксные операторы только по мере необходимости. Объединение операторов обращения к значению и инкремента в одном выражении. Совет. Краткость может быть достоинством. Помните, что операнды могут быть обработаны в любом порядке. Упражнения раздела 4.5. 4.6. Операторы доступа к членам. Упражнения раздела 4.6. 4.7. Условный оператор. Вложенные условные операторы. Применение условного оператора в выражении вывода. Упражнения раздела 4.7. 4.8. Побитовые операторы. Побитовые операторы сдвига. Побитовый оператор NOT. Побитовые операторы AND, OR и XOR. Использование побитовых операторов. Операторы сдвига (они же ввода и вывода) имеют левосторонний порядок. Упражнения раздела 4.8. 4.9. Оператор sizeof. Упражнения раздела 4.9. 4.10. Оператор запятая. Упражнения раздела 4.10. 4.11. Преобразование типов. Когда происходят неявные преобразования. 4.11.1. Арифметические преобразования. Целочисленные преобразования. Операнды беззнакового типа. Концепция арифметических преобразований. Упражнения раздела 4.11.1. 4.11.2. Другие неявные преобразования. 4.11.3. Явные преобразования. Именованные операторы приведения. Оператор static_cast. Оператор const_cast. Оператор reinterpret_cast. Приведение типов в старом стиле. Совет. Избегайте приведения типов. Упражнения раздела 4.11.3. 4.12. Таблица приоритетов операторов. Резюме. Термины. Глава 5. Операторы. 5.1. Простые операторы. Пустые операторы. Остерегайтесь пропущенных и лишних точек с запятой. Составные операторы (блоки). Упражнения раздела 5.1. 5.2. Операторная область видимости. Упражнения раздела 5.2. 5.3. Условные операторы. 5.3.1. Оператор if. Использование оператора if else. Вложенные операторы if. Следите за фигурными скобками. Потерянный оператор else. Контроль пути выполнения при помощи фигурных скобок. Упражнения раздела 5.3.1. 5.3.2. Оператор switch. Порядок выполнения в операторе switch. Пропуск оператора break — весьма распространенная ошибка. Метка default. Определение переменной в операторе switch. Упражнения раздела 5.3.2. 5.4. Итерационные операторы. 5.4.1. Оператор while. Использование цикла while. Упражнения раздела 5.4.1. 5.4.2. Традиционный оператор for. Поток выполнения в традиционном цикле for. Несколько определений в заголовке for. Пропуск частей заголовка for. Упражнения раздела 5.4.2. 5.4.3. Серийный оператор for. 5.4.4. Оператор do while. Упражнения раздела 5.4.4. 5.5. Операторы перехода. 5.5.1. Оператор break. Упражнения раздела 5.5.1. 5.5.2. Оператор continue. Упражнения раздела 5.5.2. 5.5.3. Оператор goto. Упражнения раздела 5.5.3. 5.6. Блоки try и обработка исключений. 5.6.1. Оператор throw. 5.6.2. Блок try. Создание обработчика. При поиске обработчика выполнение функций прерывается. Внимание! Написание устойчивого к исключениям кода — довольно сложная задача. 5.6.3. Стандартные исключения. Упражнения раздела 5.6.3. Резюме. Термины. Глава 6. Функции. 6.1. Основы функций. Создание функции. Вызов функции. Параметры и аргументы. Список параметров функции. Тип возвращаемого значения функции. Упражнения раздела 6.1. 6.1.1. Локальные объекты. Автоматические объекты. Локальные статические объекты. Упражнения раздела 6.1.1. 6.1.2. Объявление функций. Объявления функций находятся в файлах заголовка. Упражнения раздела 6.1.2. 6.1.3. Раздельная компиляция. Компиляция и компоновка нескольких файлов исходного кода. Упражнения раздела 6.1.3. 6.2. Передача аргументов. 6.2.1. Передача аргумента по значению. Параметры указателя. Упражнения раздела 6.2.1. 6.2.2. Передача аргумента по ссылке. Использование ссылки во избежание копирования. Использование ссылочных параметров для возвращения дополнительной информации. Упражнения раздела 6.2.2. 6.2.3. Константные параметры и аргументы. Параметры в виде указателей или ссылок и константность. По возможности используйте ссылки на константы. Упражнения раздела 6.2.3. 6.2.4. Параметры в виде массива. Использование маркера для определения продолжения массива. Использование соглашения стандартной библиотеки. Явная передача параметра размера. Параметры массива и константность. Ссылочный параметр массива. Передача многомерного массива. Упражнения раздела 6.2.4. 6.2.5. Функция main(): обработка параметров командной строки. Упражнения раздела 6.2.5. 6.2.6. Функции с переменным количеством параметров. Параметры типа initializer_list. Параметр в виде многоточия. Упражнения раздела 6.2.6. 6.3. Типы возвращаемого значения и оператор return. 6.3.1. Функции без возвращаемого значения. 6.3.2. Функции, возвращающие значение. Как возвращаются значения. Никогда не возвращайте ссылку на локальный объект. Функции, возвращающие типы класса и оператор вызова. Возвращаемая ссылка является l-значением. Списочная инициализация возвращаемого значения. Возвращение значения из функции main(). Рекурсия. Упражнения раздела 6.3.2. 6.3.3. Возвращение указателя на массив. Объявление функции, возвращающей указатель на массив. Использование замыкающего типа возвращаемого значения. Использование спецификатора decltype. Упражнения раздела 6.3.3. 6.4. Перегруженные функции. Определение перегруженных функций. Различие типов параметров. Перегрузка и константные параметры. Совет. Когда не следует перегружать функции. Оператор const_cast и перегрузка. Вызов перегруженной функции. Упражнения раздела 6.4. 6.4.1. Перегрузка и область видимости. 6.5. Специальные средства. 6.5.1. Аргументы по умолчанию. Вызов функции с аргументами по умолчанию. Объявление аргумента по умолчанию. Инициализация аргумента по умолчанию. Упражнения раздела 6.5.1. 6.5.2. Встраиваемые функции и функции constexpr. Встраиваемые функции позволяют избежать дополнительных затрат на вызов. Функции constexpr. Помещайте встраиваемые функции и функции constexpr в файлы заголовка. Упражнения раздела 6.5.2. 6.5.3. Помощь в отладке. Макрос препроцессора assert. Переменная препроцессора NDEBUG. Упражнения раздела 6.5.3. 6.6. Подбор функции. Выявление кандидатов и подходящих функций. Поиск наилучшего соответствия, если он есть. Подбор перегруженной версии с несколькими параметрами. Упражнения раздела 6.6. 6.6.1. Преобразование типов аргументов. Соответствие, требующее приведения и (или) целочисленного преобразования. Соответствие функций и константные аргументы. Упражнения раздела 6.6.1. 6.7. Указатели на функции. Использование указателей на функцию. Указатели на перегруженные функции. Указатель на функцию как параметр. Возвращение указателя на функцию. Использование спецификаторов auto и decltype для типов указателей на функции. Упражнения раздела 6.7. Резюме. Термины. Глава 7. Классы. 7.1. Определение абстрактных типов данных. 7.1.1. Разработка класса Sales_data. Ключевая концепция. Различие в ролях программистов. Использование пересмотренного класса Sales_data. Упражнения раздела 7.1.1. 7.1.2. Определение пересмотренного класса Sales_data. Определение функций-членов. Указатель this. Константные функции-члены. Область видимости класса и функции-члены. Определение функции-члена вне класса. Определение функции, возвращающей указатель this на объект. Упражнения раздела 7.1.2. 7.1.3. Определение функций, не являющихся членом класса, но связанных с ним. Определение функций read() и print(). Определение функции add(). Упражнения раздела 7.1.3. 7.1.4. Конструкторы. Синтезируемый стандартный конструктор. Некоторые классы не могут полагаться на синтезируемый стандартный конструктор. Определение конструкторов класса Sales_data. Что значит = default. Список инициализации конструктора. Определение конструктора вне тела класса. Упражнения раздела 7.1.4. 7.1.5. Копирование, присвоение и удаление. Некоторые классы не могут полагаться на синтезируемые версии. 7.2. Управление доступом и инкапсуляция. Использование ключевых слов class и struct. Ключевая концепция. Преимущества инкапсуляции. Упражнения раздела 7.2. 7.2.1. Друзья. Объявление дружественных отношений. Упражнения раздела 7.2.1. 7.3. Дополнительные средства класса. 7.3.1. Снова о членах класса. Определение типов-членов. Функции-члены класса Screen. Встраиваемые члены класса. Перегрузка функций-членов. Изменяемые переменные-члены. Инициализаторы переменных-членов класса. Упражнения раздела 7.3.1. 7.3.2. Функции, возвращающие указатель *this. Возвращение *this из константной функции-члена. Перегрузка на основании константности. Совет. Используйте закрытые вспомогательные функции. Упражнения раздела 7.3.2. 7.3.3. Типы классов. Объявления класса. Упражнения раздела 7.3.3. 7.3.4. Снова о дружественных отношениях. Дружественные отношения между классами. Как сделать функцию-член дружественной. Перегруженные функции и дружественные отношения. Объявление дружественных отношений и область видимости. Упражнения раздела 7.3.4. 7.4. Область видимости класса. Область видимости и члены, определенные вне класса. Упражнения раздела 7.4. 7.4.1. Поиск имен в области видимости класса. Поиск имен для объявлений членов класса. Имена типов имеют особенности. При поиске имен в областях видимости члены класса следуют обычным правилам. После поиска в области видимости класса продолжается поиск в окружающей области видимости. Поиск имен распространяется по всему файлу, где они были применены. Упражнения раздела 7.4.1. 7.5. Снова о конструкторах. 7.5.1. Список инициализации конструктора. Иногда применение списка инициализации конструктора неизбежно. Совет. Используйте списки инициализации конструктора. Порядок инициализации переменных-членов класса. Аргументы по умолчанию и конструкторы. Упражнения раздела 7.5.1. 7.5.2. Делегирующий конструктор. Упражнения раздела 7.5.2. 7.5.3. Роль стандартного конструктора. Применение стандартного конструктора. Упражнения раздела 7.5.3. 7.5.4. Неявное преобразование типов класса. Допустимо только одно преобразование типов класса. Преобразования типов класса не всегда полезны. Предотвращение неявных преобразований, осуществляемых конструктором. Явные конструкторы применяются только для прямой инициализации. Применение явных конструкторов для преобразований. Библиотечные классы с явными конструкторами. Упражнения раздела 7.5.4. 7.5.5. Агрегатные классы. Упражнения раздела 7.5.5. 7.5.6. Литеральные классы. Конструкторы constexpr. Упражнения раздела 7.5.6. 7.6. Статические члены класса. Объявление статических членов. Использование статических членов класса. Определение статических членов. Инициализация статических переменных-членов в классе. Статические члены можно применять так, как нельзя применять обычные. Упражнения раздела 7.6. Резюме. Термины. Часть II. Библиотека С++ Глава 8. Библиотека ввода и вывода. 8.1. Классы ввода-вывода. Взаимоотношения между типами ввода и вывода. 8.1.1. Объекты ввода-вывода не допускают копирования и присвоения. 8.1.2. Флаги состояния. Опрос состояния потока. Управление флагами состояния. Упражнения раздела 8.1.2. 8.1.3. Управление буфером вывода. Сброс буфера вывода. Манипулятор unitbuf. Внимание! При сбое программы буфер не сбрасывается. Связывание потоков ввода и вывода. 8.2. Ввод и вывод в файл. 8.2.1. Использование объектов файловых потоков. Использование fstream вместо iostream& Функции-члены open() и close(). Автоматическое создание и удаление. Упражнения раздела 8.2.1. 8.2.2. Режимы файла. Открытие файла в режиме out удаляет существующие данные. Режим файла устанавливается при каждом вызове функции open(). Упражнения раздела 8.2.2. 8.3. Строковые потоки. 8.3.1. Использование класса istringstream. Упражнения раздела 8.3.1. 8.3.2. Использование класса ostringstream. Упражнения раздела 8.3.2. Резюме. Термины. Глава 9. Последовательные контейнеры. 9.1. Обзор последовательных контейнеров. Решение о том, какой последовательный контейнер использовать. Упражнения раздела 9.1. 9.2. Обзор библиотечных контейнеров. Ограничения на типы, которые может содержать контейнер. Упражнения раздела 9.2. 9.2.1. Итераторы. Диапазоны итераторов. Требования к итераторам, формирующим диапазон. Смысл использования диапазонов, включающих левый элемент. Упражнения раздела 9.2.1. 9.2.2. Типы-члены классов контейнеров. Упражнения раздела 9.2.2. 9.2.3. Функции-члены begin() и end(). Упражнения раздела 9.2.3. 9.2.4. Определение и инициализация контейнера. Инициализация контейнера как копии другого контейнера. Списочная инициализация. Конструкторы последовательных контейнеров, связанные с размером. Библиотечные массивы имеют фиксированный размер. Упражнения раздела 9.2.4. 9.2.5. Присвоение и функция swap(). Применение функции assign() (только последовательные контейнеры). Применение функции swap(). Упражнения раздела 9.2.5. 9.2.6. Операции с размером контейнера. 9.2.7. Операторы сравнения. Упражнения раздела 9.2.7. 9.3. Операции с последовательными контейнерами. 9.3.1. Добавление элементов в последовательный контейнер. Применение функции push_back(). Ключевая концепция. Элементы контейнера содержат копии значений. Применение функции push_front(). Добавление элементов в указанную точку контейнера. Вставка диапазона элементов. Применение возвращаемого значения функции insert(). Применение функций emplace(). Упражнения раздела 9.3.1. 9.3.2. Доступ к элементам. Индексация и безопасный произвольный доступ. Упражнения раздела 9.3.2. 9.3.3. Удаление элементов. Применение функций pop_front() и pop_back(). Удаление элемента в середине контейнера. Удаление нескольких элементов. Упражнения раздела 9.3.3. 9.3.4. Специализированные функции контейнера forward_list. Упражнения раздела 9.3.4. 9.3.5. Изменение размеров контейнера. Упражнения раздела 9.3.5. 9.3.6. Некоторые операции с контейнерами делают итераторы недопустимыми. Совет. Контроль итераторов. Создание циклов, которые изменяют контейнер. Не храните итератор, возвращенный функцией end(). Упражнения раздела 9.3.6. 9.4. Как увеличивается размер вектора. Функции-члены управления емкостью. Функции-члены capacity() и size(). Упражнения раздела 9.4. 9.5. Дополнительные операции со строками. 9.5.1. Дополнительные способы создания строк. Функция substr(). Упражнения раздела 9.5.1. 9.5.2. Другие способы изменения строки. Функции append() и replace(). Множество способов изменить строку. Упражнения раздела 9.5.2. 9.5.3. Операции поиска строк. Откуда начинать поиск. Поиск в обратном направлении. Упражнения раздела 9.5.3. 9.5.4. Сравнение строк. 9.5.5. Числовые преобразования. Упражнения раздела 9.5.5. 9.6. Адаптеры контейнеров. Определение адаптера. Адаптер stack. Адаптеры очередей. Упражнения раздела 9.6. Резюме. Термины. Глава 10. Обобщенные алгоритмы. 10.1. Краткий обзор. Как работают алгоритмы. Итераторы делают алгоритмы независимыми от типа контейнера… …но алгоритмы зависят от типа элементов. Упражнения раздела 10.1. Ключевая концепция. Алгоритмы никогда не используют функции контейнеров. 10.2. Первый взгляд на алгоритмы. 10.2.1. Алгоритмы только для чтения. Алгоритмы и типы элементов. Алгоритмы, работающие с двумя последовательностями. Упражнения раздела 10.2.1. Ключевая концепция. Итераторы, передаваемые в качестве аргументов. 10.2.2. Алгоритмы, записывающие элементы контейнера. Алгоритмы не проверяют операции записи. Функция back_inserter(). Алгоритм copy(). 10.2.3. Алгоритмы, переупорядочивающие элементы контейнера. Устранение дубликатов. Алгоритм unique(). Применение функций контейнера для удаления элементов. Упражнения раздела 10.2.3. 10.3. Перенастройка функций. 10.3.1. Передача функций алгоритму. Предикаты. Алгоритмы сортировки. Упражнения раздела 10.3.1. 10.3.2. Лямбда-выражения. Знакомство с лямбда-выражением. Передача аргументов лямбда-выражению. Использование списка захвата. Вызов функции find_if(). Алгоритм for_each(). Объединив все вместе. Упражнения раздела 10.3.2. 10.3.3. Захват и возвращение значений лямбда-выражениями. Захват по значению. Захват по ссылке. Совет. Не усложняйте списки захвата лямбда-выражений. Неявный захват. Изменяемые лямбда-выражения. Определение типа возвращаемого значения лямбда-выражения. Упражнения раздела 10.3.3. 10.3.4. Привязка аргументов. Библиотечная функция bind(). Привязка параметра sz к функции check_size(). Использование имен из пространства имен placeholders. Аргументы функции bind(). Использование функции bind() для переупорядочивания параметров. Привязка ссылочных параметров. Совместимость с прежней версией: привязка аргументов. Упражнения раздела 10.3.4. 10.4. Возвращаясь к итераторам. 10.4.1. Итераторы вставки. Упражнения раздела 10.4.1. 10.4.2. Потоковые итераторы. Использование итератора istream_iterator. Использование потоковых итераторов с алгоритмами. Итераторы istream_iterator позволяют использовать ленивое вычисление. Использование итератора ostream_iterator. Использование потоковых итераторов с типами класса. Упражнения раздела 10.4.2. 10.4.3. Реверсивные итераторы. Реверсивным итераторам необходим оператор декремента. Отношения между реверсивными и другими итераторами. Упражнения раздела 10.4.3. 10.5. Структура обобщенных алгоритмов. 10.5.1. Пять категорий итераторов. Категории итераторов. Упражнения раздела 10.5.1. 10.5.2. Параметрическая схема алгоритмов. Алгоритмы с одним итератором назначения. Алгоритмы с двумя итераторами, указывающими исходную последовательность. 10.5.3. Соглашения об именовании алгоритмов. Некоторые алгоритмы используют перегруженные версии для передачи предиката. Алгоритмы с версиями _if. Различия между копирующими и не копирующими версиями. Упражнения раздела 10.5.3. 10.6. Алгоритмы, специфические для контейнеров. Алгоритм-член splice(). Специфические для списка функции, изменяющие контейнер. Упражнения раздела 10.6. Резюме. Термины. Глава 11. Ассоциативные контейнеры. 11.1. Использование ассоциативных контейнеров. Использование контейнера map. Использование контейнера set. Упражнения раздела 11.1. 11.2. Обзор ассоциативных контейнеров. 11.2.1. Определение ассоциативного контейнера. Инициализация контейнеров multimap и multiset. Упражнения раздела 11.2.1. 11.2.2. Требования к типу ключа. Типы ключей упорядоченных контейнеров. Использование функции сравнения для типа ключа. Упражнения раздела 11.2.2. 11.2.3. Тип pair. Функция для создания объектов типа pair. Упражнения раздела 11.2.3. 11.3. Работа с ассоциативными контейнерами. 11.3.1. Итераторы ассоциативных контейнеров. Итераторы наборов константны. Перебор ассоциативного контейнера. Ассоциативные контейнеры и алгоритмы. Упражнения раздела 11.3.1. 11.3.2. Добавление элементов. Добавление элементов в карту. Проверка значения, возвращаемого функцией insert(). Еще раз о синтаксисе. Добавление элементов в контейнеры multiset и multimap. Упражнения раздела 11.3.2. 11.3.3. Удаление элементов. 11.3.4. Индексация карт. Использование значения, возвращенного оператором индексирования. Упражнения раздела 11.3.4. 11.3.5. Доступ к элементам. Использование функции find() вместо индексирования карт. Поиск элементов в контейнерах multimap и multiset. Другое решение на основании итератора. Функция equal_range(). Упражнения раздела 11.3.5. 11.3.6. Карта преобразования слов. Программа преобразования слова. Создание карты преобразования. Осуществление преобразования. Упражнения раздела 11.3.6. 11.4. Неупорядоченные контейнеры. Использование неупорядоченного контейнера. Управление ячейками. Требования к типу ключа неупорядоченных контейнеров. Упражнения раздела 11.4. Резюме. Термины. Глава 12. Динамическая память. 12.1. Динамическая память и интеллектуальные указатели. 12.1.1. Класс shared_ptr. Функция make_shared(). Копирование и присвоение указателей shared_ptr. Указатель shared_ptr автоматически удаляет свои объекты… …и автоматически освобождает их память. Классы, ресурсы которых имеют динамическую продолжительность существования. Определение класса StrBlob. Конструкторы класса StrBlob. Функции-члены доступа к элементам. Копирование, присвоение и удаление объектов класса StrBlob. Упражнения раздела 12.1.1. 12.1.2. Непосредственное управление памятью. Использование оператора new для динамического резервирования и инициализации объектов. Динамически созданные константные объекты. Исчерпание памяти. Освобождение динамической памяти. Значения указателя и оператор delete. Динамически созданные объекты существуют до тех пор, пока не будут освобождены. Внимание! Управление динамической памятью подвержено ошибкам. Переустановка значения указателя после удаления… …обеспечивает лишь частичную защиту. Упражнения раздела 12.1.2. 12.1.3. Использование указателя shared_ptr с оператором new. Не смешивайте обычные указатели с интеллектуальными. Другие операции с указателем shared_ptr. Упражнения раздела 12.1.3. 12.1.4. Интеллектуальные указатели и исключения. Интеллектуальные указатели и классы без деструкторов. Использование собственного кода удаления. Внимание! Проблемы интеллектуального указателя. Упражнения раздела 12.1.4. 12.1.5. Класс unique_ptr. Передача и возвращение указателя unique_ptr. Совместимость с прежней версией: класс auto_ptr. Передача функции удаления указателю unique_ptr. Упражнения раздела 12.1.5. 12.1.6. Класс weak_ptr. Проверяемый класс указателя. Операции с указателями. Упражнения раздела 12.1.6. 12.2. Динамические массивы. 12.2.1. Оператор new и массивы. Резервирование массива возвращает указатель на тип элемента. Инициализация массива динамически созданных объектов. Динамическое резервирование пустого массива вполне допустимо. Освобождение динамических массивов. Интеллектуальные указатели и динамические массивы. Упражнения раздела 12.2.1. 12.2.2. Класс allocator. Класс allocator и специальные алгоритмы. Класс allocator резервирует незаполненную память. Алгоритмы копирования и заполнения неинициализированной памяти. Упражнения раздела 12.2.2. 12.3. Использование библиотеки: программа запроса текста. 12.3.1. Проект программы. Структуры данных. Совместное использование данных классами. Применение класса TextQuery. Упражнения раздела 12.3.1. 12.3.2. Определение классов программы запросов. Конструктор TextQuery(). Класс QueryResult. Функция query(). Вывод результатов. Упражнения раздела 12.3.2. Резюме. Термины. Часть III. Инструменты для разработчиков классов. Глава 13. Управление копированием. 13.1. Копирование, присвоение и удаление. 13.1.1. Конструктор копий. Синтезируемый конструктор копий. Инициализация копией. Параметры и возвращаемые значения. Ограничения на инициализацию копией. Компилятор может обойти конструктор копий. Упражнения раздела 13.1.1. 13.1.2. Оператор присвоения копии. Перегруженный оператор присвоения. Синтезируемый оператор присвоения копии. Упражнения раздела 13.1.2. 13.1.3. Деструктор. Что делает деструктор. Когда происходит вызов деструктора. Синтезируемый деструктор. Упражнения раздела 13.1.3. 13.1.4. Правило три/пять. Классы, нуждающиеся в деструкторах, нуждаются в копировании и присвоении. Классы, нуждающиеся в копировании, нуждаются также в присвоении, и наоборот. Упражнения раздела 13.1.4. 13.1.5. Использование спецификатора = default. 13.1.6. Предотвращение копирования. Определение функции как удаленной. Деструктор не должен быть удаленной функцией-членом. Функции-члены управления копированием могут быть синтезированы как удаленные. Закрытые функции управления копированием. Упражнения раздела 13.1.6. 13.2. Управление копированием и ресурсами. Упражнения раздела 13.2. 13.2.1. Классы, действующие как значения. Подобный значению оператор присвоения копии. Ключевая концепция. Операторы присвоения. Упражнения раздела 13.2.1. 13.2.2. Определение классов, действующих как указатели. Счетчики ссылок. Определение класса счетчика ссылок. Функции-члены копирования подобного указателю класса используют счетчик ссылок. Упражнения раздела 13.2.2. 13.3. Функция swap(). Написание собственной функции swap(). Функции swap() должны вызвать функции swap(), а не std::swap(). Использование функции swap() в операторах присвоения. Упражнения раздела 13.3. 13.4. Пример управления копированием. Класс Message. Функции-члены save() и remove(). Управление копированием класса Message. Деструктор класса Message. Оператор присвоения копии класса Message. Функция swap() класса Message. Упражнения раздела 13.4. 13.5. Классы, управляющие динамической памятью. Проект класса StrVec. Определение класса StrVec. Использование функции-члена construct(). Функция-член alloc_n_copy(). Функция-член free(). Функции-члены управления копированием. Перемещение, а не копирование элементов при резервировании. Конструктор перемещения и функция std::move(). Функция-член reallocate(). Упражнения раздела 13.5. 13.6. Перемещение объектов. 13.6.1. Ссылки на r-значение. l-значения — устойчивы; r-значения — эфемерны. Переменные являются l-значениями. Библиотечная функция move(). Упражнения раздела 13.6.1. 13.6.2. Конструктор перемещения и присваивание при перемещении. Операции перемещения, библиотечные контейнеры и исключения. Оператор присваивания при перемещении. Исходный объект перемещения должен быть в удаляемом состоянии. Синтезируемые функции перемещения. R-значения перемещаются, а l-значения копируются… …но r-значения копируются, если нет конструктора перемещения. Операторы присвоения копии и обмена и перемещение. Совет. Обновленное правило трех. Функции перемещения для класса Message. Итераторы перемещения. Совет. Не слишком спешите с перемещением. Упражнения раздела 13.6.2. 13.6.3. Ссылки на r-значение и функции-члены. Ссылки на l-значения, r-значения и функции-члены. Перегрузка и ссылочные функции. Упражнения раздела 13.6.3. Резюме. Термины. Глава 14. Перегрузка операторов и преобразований. 14.1. Фундаментальные концепции. Непосредственный вызов функции перегруженного оператора. Некоторые операторы не следует перегружать. Использование определений, совместимых со встроенным смыслом. Составные операторы присвоения. Внимание! Будьте осторожны при использовании перегруженных операторов. Выбор обычной функции или члена класса. Упражнения раздела 14.1. 14.2. Операторы ввода и вывода. 14.2.1. Перегрузка оператора вывода << Оператор вывода класса Sales_data. Операторы вывода обеспечивают минимум форматирования. Операторы ввода-вывода не должны быть функциями-членами класса. Упражнения раздела 14.2.1. 14.2.2. Перегрузка оператора ввода >> Оператор ввода класса Sales_data. Ошибки во время ввода. Оповещение об ошибке. Упражнения раздела 14.2.2. 14.3. Арифметические операторы и операторы отношения. Упражнения раздела 14.3. 14.3.1. Операторы равенства. Упражнения раздела 14.3.1. 14.3.2. Операторы отношения. Упражнения раздела 14.3.2. 14.4. Операторы присвоения. Составные операторы присвоения. Упражнения раздела 14.4. 14.5. Оператор индексирования. Упражнения раздела 14.5. 14.6. Операторы инкремента и декремента. Определение префиксных версий операторов инкремента и декремента. Дифференциация префиксных и постфиксных операторов. Явный вызов постфиксных операторов. Упражнения раздела 14.6. 14.7. Операторы доступа к членам. Ограничения на возвращаемое значение оператора стрелки. Упражнения раздела 14.7. 14.8. Оператор вызова функции. Классы объектов функций с состоянием. Упражнения раздела 14.8. 14.8.1. Лямбда-выражения — объекты функции. Классы, представляющие лямбда-выражения с захваченными переменными. Упражнения раздела 14.8.1. 14.8.2. Библиотечные объекты функций. Применение библиотечного объекта функции с алгоритмами. Упражнения раздела 14.8.2. 14.8.3. Вызываемые объекты и тип function. Разные типы могут иметь одинаковую сигнатуру вызова. Библиотечный тип function. Перегруженные функции и тип function. Упражнения раздела 14.8.3. 14.9. Перегрузка, преобразование и операторы. 14.9.1. Операторы преобразования. Определение класса с оператором преобразования. Внимание! Не злоупотребляйте функциями преобразования. Операторы преобразования могут привести к удивительным результатам. Явный оператор преобразования. Преобразование в тип bool. Упражнения раздела 14.9.1. 14.9.2. Избегайте неоднозначных преобразований. Распознавание аргумента и взаимные преобразования. Двусмысленность и множественность путей преобразования во встроенные типы. Перегруженные функции и конструкторы преобразования. Внимание! Преобразования и операторы. Перегруженные функции и пользовательские преобразования. Упражнения раздела 14.9.2. 14.9.3. Подбор функций и перегруженные операторы. Упражнения раздела 14.9.3. Резюме. Термины. Глава 15. Объектно-ориентированное программирование. 15.1. Краткий обзор ООП. Наследование. Динамическое связывание. 15.2. Определение базовых и производных классов. 15.2.1. Определение базового класса. Функции-члены и наследование. Управление доступом и наследование. Упражнения раздела 15.2.1. 15.2.2. Определение производного класса. Виртуальные функции в производном классе. Объекты производного класса и преобразование производного в базовый. Конструкторы производного класса. Использование членов базового класса из производного. Ключевая концепция. Соблюдение интерфейса базового класса. Наследование и статические члены. Объявления производных классов. Классы, используемые как базовые. Предотвращение наследования. Упражнения раздела 15.2.2. 15.2.3. Преобразования и наследование. Статический и динамический типы. Не существует неявного преобразования из базового типа в производный… …и нет преобразований между объектами. Ключевая концепция. Преобразования между типами, связанными наследованием. Упражнения раздела 15.2.3. 15.3. Виртуальные функции. Вызовы виртуальной функции могут быть распознаны во время выполнения. Ключевая концепция. Полиморфизм в языке С++ Виртуальные функции в производном классе. Спецификаторы final и override. Виртуальные функции и аргументы по умолчанию. Хитрость виртуального механизма. Упражнения раздела 15.3. 15.4. Абстрактные базовые классы. Чистые виртуальные функции. Классы с чистыми виртуальными функциями являются абстрактными. Конструктор производного класса инициализирует только свой прямой базовый класс. Ключевая концепция. Рефакторинг. Упражнения раздела 15.4. 15.5. Управление доступом и наследование. Защищенные члены. Открытое, закрытое и защищенное наследование. Доступность преобразования производного класса в базовый класс. Ключевая концепция. Проект класса и защищенные члены. Дружественные отношения и наследование. Освобождение индивидуальных членов. Уровни защиты наследования по умолчанию. Упражнения раздела 15.5. 15.6. Область видимости класса при наследовании. Поиск имен осуществляется во время компиляции. Конфликт имен и наследование. Применение оператора области видимости для доступа к скрытым членам. Ключевая концепция. Поиск имени и наследование. Как обычно, поиск имени осуществляется перед проверкой соответствия типов. Виртуальные функции и область видимости. Вызов скрытой виртуальной функции через базовый класс. Переопределение перегруженных функций. Упражнения раздела 15.6. 15.7. Конструкторы и функции управления копированием. 15.7.1. Виртуальные деструкторы. Виртуальный деструктор отменяет синтез функций перемещения. Упражнения раздела 15.7.1. 15.7.2. Синтезируемые функции управления копированием и наследование. Базовые классы и удаленные функции управления копированием в производном классе. Функции перемещения и наследование. Упражнения раздела 15.7.2. 15.7.3. Функции-члены управления копированием производного класса. Определение конструктора копии или перемещения производного класса. Оператор присвоения производного класса. Деструктор производного класса. Вызовы виртуальных функций в конструкторах и деструкторах. Упражнения раздела 15.7.3. 15.7.4. Унаследованные конструкторы. Характеристики унаследованного конструктора. Упражнения раздела 15.7.4. 15.8. Контейнеры и наследование. Помещайте в контейнеры указатели (интеллектуальные), а не объекты. Упражнения раздела 15.8. 15.8.1. Разработка класса Basket. Определение членов класса Basket. Сокрытие указателей. Имитация виртуального копирования. Упражнения раздела 15.8.1. 15.9. Возвращаясь к запросам текста. 15.9.1. Объектно-ориентированное решение. Абстрактный базовый класс. Ключевая концепция. Наследование или композиция. Сокрытие иерархии в классе интерфейса. Как работают эти классы. Упражнения раздела 15.9.1. 15.9.2. Классы Query_base и Query. Класс Query. Оператор вывода класса Query. Упражнения раздела 15.9.2. 15.9.3. Производные классы. Класс WordQuery. Класс NotQuery и оператор ~ Класс BinaryQuery. Классы AndQuery, OrQuery и их операторы. Упражнения раздела 15.9.3. 15.9.4. Виртуальные функции eval(). Функция OrQuery::eval(). Функция AndQuery::eval(). Функция NotQuery::eval(). Упражнения раздела 15.9.4. Резюме. Термины. Глава 16. Шаблоны и обобщенное программирование. 16.1. Определение шаблона. 16.1.1. Шаблоны функций. Создание экземпляра шаблона функции. Параметры типа шаблона. Параметры значения шаблона. Шаблоны функции со спецификаторами inline и constexpr. Создание кода, независимого от типа. Компиляция шаблона. Ключевая концепция. Шаблоны и заголовки. Ошибки компиляции проявляются, главным образом, во время создания экземпляра. Упражнения раздела 16.1.1. 16.1.2. Шаблоны класса. Определение шаблона класса. Создание экземпляра шаблона класса. Ссылки на тип шаблона в пределах шаблона. Функции-члены шаблонов класса. Функция check() и функции доступа к членам. Конструкторы Blob(). Создание функций-членов шаблона класса. Упрощение использования имени шаблона класса в коде класса. Использование имени шаблона класса вне тела шаблона. Шаблоны классов и дружественные отношения. Дружественные отношения "один к одному". Общие и специфические дружественные отношения шаблонов. Объявление параметра типа шаблона дружественным. Псевдонимы типа шаблона. Статические члены шаблонов класса. Упражнения раздела 16.1.2. 16.1.3. Параметры шаблона. Параметры шаблона и область видимости. Объявления шаблона. Использование членов типа. Аргументы шаблона по умолчанию. Аргументы по умолчанию шаблона и шаблоны класса. Упражнения раздела 16.1.3. 16.1.4. Шаблоны-члены. Шаблоны-члены обычных (не шаблонных) классов. Шаблоны-члены шаблонов класса. Создание экземпляров и шаблоны-члены. Упражнения раздела 16.1.4. 16.1.5. Контроль создания экземпляра. Определения экземпляров создают экземпляры всех членов. Упражнения раздела 16.1.5. 16.1.6. Эффективность и гибкость. Привязка функции удаления во время выполнения. Привязка функции удаления во время компиляции. Упражнения раздела 16.1.6. 16.2. Дедукция аргумента шаблона. 16.2.1. Преобразования и параметры типа шаблона. Параметры функций с одинаковым типом параметра шаблона. Обычные преобразования применимы к обычным аргументам. Упражнения раздела 16.2.1. 16.2.2. Явные аргументы шаблона функции. Определение явного аргумента шаблона. Нормальные преобразования применимы к аргументам, определенным явно. Упражнения раздела 16.2.2. 16.2.3. Замыкающие типы возвращаемого значения и трансформация типа. Трансформация типа классов библиотечных шаблонов. Упражнения раздела 16.2.3. 16.2.4. Указатели на функцию и дедукция аргумента. 16.2.5. Дедукция аргумента шаблона и ссылки. Дедукция типа из параметров ссылки на l-значения функций. Дедукция типа из параметров ссылки на r-значения функций. Сворачивание ссылок и параметры ссылок на r-значения. Шаблоны функций с параметрами ссылки на r-значения. Упражнения раздела 16.2.5. 16.2.6. Функция std::move(). Как определена функция std::move(). Как работает функция std::move(). Оператор static_cast поддерживает приведение l-значения к ссылке на r-значение. Упражнения раздела 16.2.6. 16.2.7. Перенаправление. Определение параметров функции, хранящих информацию типа. Использование функции std::forward() для сохранения информации типа в вызове. Упражнения раздела 16.2.7. 16.3. Перегрузка и шаблоны. Создание перегруженных шаблонов. Несколько подходящих шаблонов. Не шаблон и перегрузка шаблона. Перегруженные шаблоны и преобразования. Пропуск объявления может нарушить программу. Упражнения раздела 16.3. 16.4. Шаблоны с переменным количеством аргументов. Оператор sizeof... Упражнения раздела 16.4. 16.4.1. Шаблоны функции с переменным количеством аргументов. Упражнения раздела 16.4.1. 16.4.2. Развертывание пакета. Концепция развертывания пакета. Упражнения раздела 16.4.2. 16.4.3. Перенаправление пакетов параметров. Совет. Перенаправление и шаблоны с переменным количеством аргументов. Упражнения раздела 16.4.3. 16.5. Специализация шаблона. Специализация шаблона функции. Перегрузка функций или специализация шаблона. Ключевая концепция. Обычные правила области видимости относятся и к специализации. Специализация шаблона класса. Частичная специализация шаблона класса. Специализация членов, но не класса. Упражнения раздела 16.5. Резюме. Термины. Часть IV. Дополнительные темы. Глава 17. Специализированные средства библиотек. 17.1. Тип tuple. 17.1.1. Определение и инициализация кортежей. Доступ к членам кортежа. Операторы сравнения и равенства. Упражнения раздела 17.1.1. 17.1.2. Использование кортежей для возвращения нескольких значений. Функция, возвращающая кортеж. Использование возвращенного функцией кортежа. Упражнения раздела 17.1.2. 17.2. Тип bitset. 17.2.1. Определение и инициализация наборов битов. Инициализация набора битов беззнаковым значением. Инициализация набора битов из строки. Упражнения раздела 17.2.1. 17.2.2. Операции с наборами битов. Возвращение значений из набора битов. Операторы ввода-вывода типа bitset. Использование наборов битов. Упражнения раздела 17.2.2. 17.3. Регулярные выражения. 17.3.1. Использование библиотеки регулярных выражений. Определение параметров объекта regex. Ошибки в определении и использовании регулярного выражения. Совет. Избегайте создания ненужных регулярных выражений. Классы регулярного выражения и тип исходной последовательности. Упражнения раздела 17.3.1. 17.3.2. Типы итераторов классов соответствия и regex. Использование итератора sregex_iterator. Использование данных соответствия. Упражнения раздела 17.3.2. 17.3.3. Использование подвыражений. Подвыражения для проверки правильности данных. Операции с типом соответствия. Упражнения раздела 17.3.3. 17.3.4. Использование функции regex_replace(). Замена только части исходной последовательности. Флаги, контролирующие соответствия и формат. Использование флагов формата. Упражнения раздела 17.3.4. 17.4. Случайные числа. 17.4.1. Процессоры случайных чисел и распределения. Типы распределения и процессоры. Сравнение процессора случайных чисел и функции rand(). Процессоры создают последовательности чисел. Начальное число генератора. Упражнения раздела 17.4.1. 17.4.2. Другие виды распределений. Создание случайных вещественных чисел. Использование типа по умолчанию для результата распределения. Создание чисел с неравномерным распределением. Класс bernoulli_distribution. Упражнения раздела 17.4.2. 17.5. Еще о библиотеке ввода и вывода. 17.5.1. Форматированный ввод и вывод. Большинство манипуляторов изменяет флаг формата. Контроль формата логических значений. Определение базы целочисленных значений. Индикация базы числа в выводе. Контроль формата значений с плавающей точкой. Определение точности. Определение формы записи чисел с плавающей запятой. Вывод десятичной точки. Дополнение вывода. Контроль формата ввода. Упражнения раздела 17.5.1. 17.5.2. Не форматированные операции ввода-вывода. Однобайтовые операции. Возвращение во входной поток. Возвращение значения типа int из операций ввода. Внимание! Низкоуровневые функции подвержены ошибкам. Многобайтовые операции. Определение количества читаемых символов. Упражнения раздела 17.5.2. 17.5.3. Произвольный доступ к потоку. Функции установки и сообщения. Существует только один маркер. Перемещение маркера. Доступ к маркеру. Чтение и запись в тот же файл. Упражнения раздела 17.5.3. Резюме. Термины. Глава 18. Инструменты для крупномасштабных программ. 18.1. Обработка исключений. 18.1.1. Передача исключений. Прокрутка стека. Объекты автоматически удаляются при прокрутке стека. Деструкторы и исключения. Объект исключения. Упражнения раздела 18.1.1. 18.1.2. Обработка исключения. Поиск соответствующего обработчика. Повторная передача исключения. Обработчик для всех исключений. Упражнения раздела 18.1.2. 18.1.3. Блок try функции и конструкторы. Упражнения раздела 18.1.3. 18.1.4. Спецификатор исключения noexcept. Нарушение спецификации исключения. Совместимость с прежней версией. Спецификации исключения. Аргументы спецификации noexcept. Оператор noexcept. Спецификации исключения и указатели, виртуальные функции, функции управления копированием. Упражнения раздела 18.1.4. 18.1.5. Иерархии классов исключений. Классы исключения для приложения книжного магазина. Использование собственных типов исключений. Упражнения раздела 18.1.5. 18.2. Пространства имен. 18.2.1. Определение пространств имен. Каждое пространство имен является областью видимости. Пространства имен могут быть разобщены. Определение пространства имен cplusplus_primer. Определение членов пространства имен. Специализация шаблона. Глобальное пространство имен. Вложенные пространства имен. Встраиваемые пространства имен. Безымянные пространства имен. Безымянные пространства имен вместо статических файловых объектов. Упражнения раздела 18.2.1. 18.2.2. Использование членов пространства имен. Псевдонимы пространства имен. Объявления using (напоминание). Директива using. Директива using и область видимости. Пример директив using. Заголовки и объявления using или директивы. Внимание! Избегайте директив using. Упражнения раздела 18.2.2. 18.2.3. Классы, пространства имен и области видимости. Зависимый от аргумента поиск и параметры типа класса. Поиск и функции std::move() и std::forward(). Дружественные объявления и зависимый от аргумента поиск. Упражнения раздела 18.2.3. 18.2.4. Перегрузка и пространства имен. Зависимый от аргумента поиск и перегрузка. Перегрузка и объявления using. Перегрузка и директивы using. Перегрузка при нескольких директивах using. Упражнения раздела 18.2.4. 18.3. Множественное и виртуальное наследование. 18.3.1. Множественное наследование. При множественном наследовании классы наследуют состояние каждого из базовых классов. Конструкторы производного класса инициализируют все объекты базовых классов. Унаследованные конструкторы и множественное наследование. Деструкторы и множественное наследование. Функции копирования и перемещения при множественном наследовании. Упражнения раздела 18.3.1. 18.3.2. Преобразования и несколько базовых классов. Поиск на основании типа указателя или ссылки. Упражнения раздела 18.3.2. 18.3.3. Область видимости класса при множественном наследовании. Упражнения раздела 18.3.3. Код для упражнений раздела 18.3.3. 18.3.4. Виртуальное наследование. Разные классы Panda. Использование виртуального базового класса. Для базовых классов поддерживаются стандартные преобразования. Видимость членов виртуальных базовых классов. Упражнения раздела 18.3.4. 18.3.5. Конструкторы и виртуальное наследование. Как создается объект при виртуальном наследовании. Порядок выполнения конструкторов и деструкторов. Упражнения раздела 18.3.5. Резюме. Термины. Глава 19. Специализированные инструменты и технологии. 19.1. Контроль распределения памяти. 19.1.1. Перегрузка операторов new и delete. Интерфейс функций operator new() и operator delete(). Терминология. Выражение new или функция operator new(). Функции malloc() и free(). Упражнения раздела 19.1.1. 19.1.2. Размещающий оператор new. Явный вызов деструктора. 19.2. Идентификация типов времени выполнения. 19.2.1. Оператор dynamic_cast. Приведение dynamic_cast для типа указателя. Приведение dynamic_cast для типа ссылки. Упражнения раздела 19.2.1. 19.2.2. Оператор typeid. Использование оператора typeid. Упражнения раздела 19.2.2. 19.2.3. Использование RTTI. Иерархия класса. Оператор равенства, чувствительный к типу. Виртуальная функция equal(). Функция equal() базового класса. 19.2.4. Класс type_info. Упражнения раздела 19.2.4. 19.3. Перечисления. Перечислители. Подобно классам, перечисления определяют новые типы. Определение размера перечисления. Предварительные объявления для перечислений. Соответствие параметров и перечисления. 19.4. Указатель на член класса. 19.4.1. Указатели на переменные-члены. Использование указателей на переменные-члены. Функция, возвращающая указатель на переменную-член. Упражнения раздела 19.4.1. 19.4.2. Указатели на функции-члены. Использование указателя на функцию-член. Использование псевдонимов типов для указателей на члены. Таблицы указателей на функцию-член. Упражнения раздела 19.4.2. 19.4.3. Использование функций-членов как вызываемых объектов. Использование шаблона function для создания вызываемого объекта. Использование шаблона mem_fn для создания вызываемого объекта. Использование функции bind() для создания вызываемого объекта. Упражнения раздела 19.4.3. 19.5. Вложенные классы. Объявление вложенного класса. Определение вложенного класса вне содержащего класса. Определение членов вложенного класса. Определение статических членов вложенных классов. Поиск имен в области видимости вложенного класса. Вложенные и содержащие классы независимы. Упражнения раздела 19.5. 19.6. Класс объединения, экономящий место. Определение объединения. Использование объединения. Анонимные объединения. Объединения с членами типа класса. Использование класса для управления членами объединения. Управление дискриминанта и удаление строки. Управление членами объединения, требующее управления копированием. Упражнения раздела 19.6. 19.7. Локальные классы. Локальные классы не могут использовать переменные из области видимости функции. К локальным классам применимы обычные правила доступа. Поиск имен в локальном классе. Вложенные локальные классы. 19.8. Возможности, снижающие переносимость. 19.8.1. Битовые поля. Использование битовых полей. 19.8.2. Спецификатор volatile. Синтезируемые функции управления копированием не применимы к асинхронно-изменяемым объектам. 19.8.3. Директивы компоновки: extern "C". Объявление функций, написанных на языке, отличном от С++ Директивы компоновки и заголовки. Указатели на функции, объявленные в директиве extern "С". Директивы компоновки применимы ко всем объявлениям. Экспорт функций, созданных на языке С++, в другой язык. Поддержка препроцессора при компоновке на языке С. Перегруженные функции и директивы компоновки. Упражнения раздела 19.8.3. Резюме. Термины. Приложения. Приложение A. Библиотека. А.1. Имена и заголовки стандартной библиотеки. А.2. Краткий обзор алгоритмов. А.2.1. Алгоритмы поиска объекта. Простой алгоритм поиска. Алгоритм поиска одного из нескольких значений. Алгоритм поиска последовательности. А.2.2. Другие алгоритмы, осуществляющие только чтение. А.2.3. Алгоритмы бинарного поиска. А.2.4. Алгоритмы записи в элементы контейнера. Алгоритмы, которые записывают, но не читают значения элементов. Алгоритмы записи с итераторами ввода. Алгоритмы записи с прямыми итераторами. Алгоритмы записи с двунаправленными итераторами. А.2.5. Алгоритмы сортировки и разделения. Алгоритмы разделения. Алгоритмы сортировки. А.2.6. Общие функции изменения порядка. Переупорядочивающие алгоритмы, использующие прямые итераторы. Переупорядочивающие алгоритмы, использующие двунаправленные итераторы. Переупорядочение алгоритмов с помощью итераторов прямого доступа. А.2.7. Алгоритмы перестановки. А.2.8. Алгоритмы набора для отсортированных последовательностей. А.2.9. Минимальные и максимальные значения. Лексикографическое сравнение. А.2.10. Числовые алгоритмы. A.3. Случайные числа. А.3.1. Распределение случайных чисел. Равномерное распределение. Распределение Бернулли. Распределение Пуассона. Нормальное распределение или распределение Гаусса. Выборочное распределение. А.3.2. Процессоры случайных чисел. Тип default_random_engine. Тип linear_congruential_engine. Тип mersenne_twister_engine. Тип subtract_with_carry_engine. Тип discard_block_engine. Тип independent_bits_engine. Тип shuffle_order_engine. →

Язык программирования Python.

Лекция #1: Введение в программирование на языке Python. Что такое Python? Как описать язык? История языка Python. Программа на Python. Примечание… Основные алгоритмические конструкции. Последовательность операторов. Оператор условия и выбора. Циклы. Примечание… Функции. Исключения. Примечание… Встроенные типы данных. Тип int и long. Тип float. Примечание… Тип complex. Тип bool. Тип string и тип unicode. Тип tuple. Тип list. Последовательности. Некоторые методы для работы с последовательностями. Взятие элемента по индексу и срезы. ... Примечание… Тип dict. Тип file. Выражения. Имена. Стиль программирования. Заключение. Лекция #2: Основные стандартные модули Python. Понятие модуля. Модули в Python. Встроенные функции. Совет… Функции преобразования типов и классы. Числовые и строковые функции. Функции обработки данных. Функции определения свойств. Функции для доступа к внутренним структурам. Функции компиляции и исполнения. Функции ввода–вывода. Функции для работы с атрибутами. Функции — «украшатели» методов классов. Обзор стандартной библиотеки. Примечание… Сервисы периода выполнения. Модуль sys. Модуль copy. Модули math и cmath. Модуль random. Модуль time. Модуль sets. Модули array и struct. Модуль itertools. Модуль locale. Модуль gettext. Поддержка цикла разработки. Модуль pdb. Модуль profile. Примечание… Модуль unittest. Модуль pydoc. Пакет docutils. Пакет distutils. Взаимодействие с операционной системой. Модуль os. Модуль stat. Модуль tempfile. Обработка текстов. Многопоточные вычисления. Хранение данных. Архивация. Модуль pickle. Модуль shelve. Модули anydbm и gdbm. Модуль csv. Платформо–зависимые модули. Поддержка сети. Протоколы Интернет. Поддержка Internet. Форматы данных. Python о себе. Графический интерфейс. Заключение. Лекция #3: Элементы функционального программирования. Что такое функциональное программирование? Функциональная программа. Функция: определение и вызов. Примечание… Рекурсия. Функции как параметры и результат. Функция apply(). Обработка последовательностей. Функции range() и xrange(). Функция map(). Функция filter(). Списковые включения. Функция sum(). Функция reduce(). Совет… Функция zip(). Итераторы. Функция iter(). Примечание… Функция enumerate(). Функция sorted(). Функция itertools.chain(). Функция itertools.repeat(). Функция itertools.count(). Функция itertools.cycle(). Функции itertools.imap(), itertools.starmap() и itertools.ifilter(). Функции itertools.takewhile() и itertools.dropwhile(). Функция itertools.izip(). Функция itertools.groupby(). Функция itertools.tee(). Собственный итератор. Простые генераторы. Генераторное выражение. Карринг. Заключение. Ссылки по теме. Лекция #4: Объектно–ориентированное программирование. Примечание… Примечание… Основные понятия. Абстракция и декомпозиция. Объекты. Типы и классы. Примечание… Определение класса. Инкапсуляция. Доступ к свойствам. Сокрытие данных. Полиморфизм. Имитация типов. Отношения между классами. Наследование. Множественное наследование. Порядок разрешения методов. Агрегация. Контейнеры. Примечание… Итераторы. Ассоциация. Слабые ссылки. Статический метод. Метод класса. Метаклассы. Примечание… Мультиметоды. Устойчивые объекты. Примечание… Критика ООП. Заключение. Ссылки. Лекция #5: Численные алгоритмы. Матричные вычисления. Модуль Numeric. Создание массива. Методы массивов. Срезы. Универсальные функции. Предупреждение… Функции модуля Numeric. Примечание… Функции для работы с массивами. Функция Numeric.take(). Функции Numeric.diagonal() и Numeric.trace(). Функция Numeric.choose(). Свод функций модуля Numeric. Модуль LinearAlgebra. Модуль RandomArray. Заключение. Ссылки. Лекция #6: Обработка текстов. Регулярные выражения. Unicode. Строки. Примечание… Кодировка Python–программы. Строковые литералы. Примечание… Операции над строками. Операция форматирования. Индексы и срезы. Примечание… Модуль string. Методы строк. Рекомендации по эффективности. Модуль StringIO. Модуль difflib. Регулярные выражения. Примечание… Синтаксис регулярного выражения. Методы объекта–шаблона. Примеры шаблонов. Отладка регулярных выражений. Примеры применения регулярного выражения. Обработка лога. Анализ записи числа. Множественная замена. Работа с несколькими файлами. Работа с Unicode. Заключение. Ссылки. Лекция #7: Работа с данными в различных форматах. Формат CSV. Пакет email. Разбор сообщения. Класс Message. Формирование сообщения. Разбор поля заголовка. Язык XML. Примечание… Формирование XML–документа. Анализ XML–документа. Пространства имен. Примечание… Заключение. Лекция #8: Разработка Web–приложений. CGI-сценарии. Модуль cgi. Осторожно! Что после CGI? Среды разработки. Zope и его объектная модель. Примечание… Заключение. Лекция #9: Сетевые приложения на Python. Работа с сокетами. Примечание… Модуль smtplib. Модуль poplib. Примечание… Модули для клиента WWW. Функции для загрузки сетевых объектов. Функции для анализа URL. Возможности urllib2. Примечание… XML–RPC сервер. Внимание! Заключение. Лекция #10: Работа с базой данных. Основные понятия реляционной СУБД. Что такое DB-API 2. Описание DB API 2.0. Интерфейс модуля. Объект–соединение. Объект–курсор. Объекты–типы. Работа с базой данных из Python–приложения. Знакомство с СУБД. Создание базы данных. Наполнение базы данных. Примечание… Выборки из базы данных. Другие СУБД и Python. Примечание… Заключение. Ссылки. Лекция #11: Многопоточные вычисления. О потоках управления. Пример многопоточной программы. Функции модуля threading. Класс Thread. Таймер. Замки. Когда нужны замки? Тупиковая ситуация (deadlock). Семафоры. События. Условия. Очередь. Модуль thread. Визуализация работы потоков. Примечание… Заключение. Лекция #12: Создание приложений с графическим интерфейсом пользователя. Обзор графических библиотек. О графическом интерфейсе. Основы Tk. Классы виджетов. События. Примечание… Создание и конфигурирование виджета. Примечание… Виджет форматированного текста. Менеджеры расположения. Изображения в Tkinter. Графическое приложение на Tkinter. Примечание… Заключение. Ссылки. Лекция #13: Интеграция Python с другими языками программирования. C API. Примечание. Написание модуля расширения. Пример встраивания интерпретатора в программу на C. Использование SWIG. Простой пример использования SWIG. Интеграция Python и других систем программирования. Java. Prolog. OCaml. Pyrex. Заключение. Ссылки. 14. Лекция: Устройство интерпретатора языка Python. Лексический анализ. Синтаксический анализ. Получение байт-кода. Изучение байт-кода. Отладка. Профайлер. Модуль profile. Модуль timeit. Оптимизация. Pychecker. Исследование объекта. Модуль inspect. Заключение. →

Язык программирования Си для персонального компьютера.

ВВЕДЕНИЕ. Соглашения о нотации. ЭЛЕМЕНТЫ ЯЗЫКА СИ. Алфавит. Буквы и цифры. Пробельные символы. Разделители. Специальные символы. Операции. Константы. Целые константы. Константы с плавающей точкой. Символьные константы. Символьные строки. Идентификаторы. Ключевые слова. Комментарии. СТРУКТУРА ПРОГРАММЫ. Исходная программа. Исходные файлы. Выполнение программы. Время жизни и область действия. Пространства имен. ОБЪЯВЛЕНИЯ. Базовые типы данных. Спецификации типов и их сокращения. Области значений. Размер памяти и область значений типов. ... Описатели. Синтаксис описателей. Интерпретация составных описателей. Описатели с модификаторами. Интерпретация описателей с модификаторами. Модификаторы const и volatile. Модификаторы cdecl и pascal. Модификатор pascal. Модификатор cdecl. Модификаторы near, far, huge. Модификатор interrupt. Объявление переменных. Объявление простой переменной. Объявление переменной перечислимого типа. Объявление структуры. Битовые поля. Объявление объединения. Объявление массива. Объявление указателя. Объявление функции (прототип). Список типов аргументов. Классы памяти. Объявление переменной на внешнем уровне. Объявление переменной на внутреннем уровне. Инициализация. Базовые типы и указатели. Составные типы. Строковые инициализаторы. Объявление типа. Объявление тега. Объявление typedef. Абстрактные имена типов. ВЫРАЖЕНИЯ. Введение. Операнды. Идентификаторы. Константы. Символьные строки. Вызовы функций. Индексные выражения. Доступ к многомерному массиву. Выбор элемента. Операции и L-выражения. Скобочные выражения. Константные выражения. Операции. Преобразования по умолчанию. Унарные операции. Унарный минус (-). Унарный плюс (+). Обратный код (~). Логическое отрицание (!). Адресация "&". Косвенная адресация "*". Операция sizeof. Мультипликативные операции. Умножение (*). Деление (/). Остаток от деления (%). Аддитивные операции. Сложение (+). Вычитание (-). Адресная арифметика. Операции сдвига. Операции отношения. Поразрядные операции. Логические операции. Логическое И (&&). Логическое ИЛИ (||). Операция последовательного вычисления. Условная операция. Операции присваивания. Операции инкремента и декремента. Простое присваивание. Составное присваивание. Приоритет и порядок выполнения. Приоритет и ассоциативность операций в языке Си. Побочные эффекты. Преобразования типов. Преобразования типов при присваивании. Преобразование знаковых целых типов. Преобразование беззнаковых целых типов. Преобразование беззнаковых целых типов. Преобразование указателей. Преобразования других типов. Явные преобразования типов. Преобразования типов при вызовах функций. ОПЕРАТОРЫ. Введение. Пустой оператор. Составной оператор. Оператор-выражение. Условный оператор if. Вложенность. Оператор пошагового цикла for. Оператор цикла с предусловием while. Оператор цикла с постусловием do. Оператор продолжения continue. Оператор-переключатель switch. Оператор разрыва break. Оператор перехода goto. Оператор возврата return. ФУНКЦИИ. Введение. Определение функции. Класс памяти. Модификаторы типа функции. Типы возвращаемых значений. Формальные параметры. Тело функции. Объявление функции. Вызов функции. Фактические аргументы. Вызов функции с переменным числом аргументов. Рекурсивные вызовы. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА И УКАЗАНИЯ КОМПИЛЯТОРУ. Введение. Именованные константы и макроопределения. Директива #define. Склейка лексем и преобразование аргументов макроопределений. Директива #undef. Включение файлов. Условная компиляция. Директивы #if, #elif, #else, #endif. Директивы #ifdef и #ifndef. Управление нумерацией строк. Директива обработки ошибок. Пустая директива. Указания компилятору языка Си. Псевдопеременные. МОДЕЛИ ПАМЯТИ. Виды моделей. Малая модель. Средняя модель. Компактная модель. Большая модель. Максимальная модель. Модификация стандартной модели памяти. Объявление данных. Объявление функций. Модели памяти СП ТС. КРАТКОЕ ОПИСАНИЕ БИБЛИОТЕКИ. Работа с областями памяти и строками. Определение класса символов и преобразование символов. Форматные преобразования данных. Работа с каталогами файловой системы. Операции над файлами. Ввод и вывод. Функции вода/вывода высокого уровня. Высокоуровневое открытие файлов. Стандартные потоки: stdin, stdout, stdeir, stdaux, stdprn. Управление буферизацией потоков. Закрытие потоков. Чтение и запись данных. Обнаружение ошибок. Функции вода/вывода нижнего уровня. Открытие файлов. 9.6.2.2. Переопределение дескрипторов (handle). Чтение и запись данных. Закрытие файлов. Функции вода/вывода с консольного терминала и порта. Математические функции. Динамическое распределение памяти. Использование системных вызовов операционной системы MS-DOS. Управление процессами. Поиск и сортировка. Функции работы со временем. Функции работы со списком аргументов. Другие функции. →

Язык программирования Си.

Предисловие. Предисловие к первому изданию. Введение. Глава 1. Обзор языка. 1.1 Начнем, пожалуй. 1.2 Переменные и арифметические выражения. 1.3 Инструкция for. 1.4 Именованные константы. 1.5 Ввод-вывод символов. 1.5.1 Копирование файла. 1.5.2 Подсчет символов. 1.5.3 Подсчет строк. 1.5.4 Подсчет слов. 1.6 Массивы. 1.7 Функции. 1.8 Аргументы. Вызов по значению. 1.9 Символьные массивы. 1.10 Внешние переменные и область видимости. Глава 2. Типы, операторы и выражения. 2.1 Имена переменных. 2.2 Типы и размеры данных. ... 2.3 Константы. 2.4 Объявления. 2.5 Арифметические операторы. 2.6 Операторы отношения и логические операторы. 2.7 Преобразования типов. 2.8 Операторы инкремента и декремента. 2.9 Побитовые операторы. 2.10 Операторы и выражения присваивания. 2.11 Условные выражения. 2.12 Приоритет и очередность вычислений. Глава 3. Управление. 3.1 Инструкции и блоки. 3.2 Конструкция if-else. 3.3 Конструкция else-if. 3.4 Переключатель switch. 3.5 Циклы while и for. 3.6 Цикл do-while. 3.7 Инструкции break и continue. 3.8 Инструкция goto и метки. Глава 4. Функции и структура программы. 4.1 Основные сведения о функциях. 4.2 Функции, возвращающие нецелые значения. 4.3 Внешние переменные. 4.4 Области видимости. 4.5 Заголовочные файлы. 4.6 Статические переменные. 4.7 Регистровые переменные. 4.8 Блочная структура. 4.9 Инициализация. 4.10 Рекурсия. 4.11 Препроцессор языка Си. 4.11.1 Включение файла. 4.11.2 Макроподстановка. 4.11.3 Условная компиляция. Глава 5. Указатели и массивы. 5.1 Указатели и адреса. 5.2 Указатели и аргументы функций. 5.3 Указатели и массивы. 5.4 Адресная арифметика. 5.5 Символьные указатели функции. 5.6 Массивы указателей, указатели на указатели. 5.7 Многомерные массивы. 5.8 Инициализация массивов указателей. 5.9 Указатели против многомерных массивов. 5.10 Аргументы командной строки. 5.11 Указатели на функции. 5.12 Сложные объявления. Глава 6. Структуры. 6.1 Основные сведения о структурах. 6.2 Структуры и функции. 6.3 Массивы структур. 6.4 Указатели на структуры. 6.5 Структуры со ссылками на себя. 6.6 Просмотр таблиц. 6.7 Средство typedef. 6.8 Объединения. 6.9 Битовые поля. Глава 7. Ввод и вывод. 7.1 Стандартный ввод-вывод. 7.2 Форматный вывод (printf). 7.3 Списки аргументов переменной длины. 7.4 Форматный ввод (scanf). 7.5 Доступ к файлам. 7.6 Управление ошибками (stderr и exit). 7.7 Ввод-вывод строк. 7.8 Другие библиотечные функции. 7.8.1 Операции со строками. 7.8.2 Анализ класса символов и преобразование символов. 7.8.3 Функция ungetc. 7.8.4 Исполнение команд операционной системы. 7.8.5 Управление памятью. 7.8.6 Математические функции. 7.8.7 Генератор случайных чисел. Глава 8. Интерфейс с системой UNIX. 8.1 Дескрипторы файлов. 8.2 Нижний уровень ввода-вывода (read и write). 8.3 Системные вызовы open, creat, close, unlink. 8.4 Произвольный доступ (lseek). 8.5 Пример. Реализация функций fopen и getc. 8.6 Пример. Печать каталогов. 8.7 Пример. Распределитель памяти. Приложение A. Справочное руководство. A1. Введение. A2. Соглашения о лексике. A2.1. Лексемы (tokens). A2.2. Комментарий. A2.3. Идентификаторы. A2.4. Ключевые слова. A2.5. Константы. A2.5.1. Целые константы. A2.5.2. Символьные константы. А2.5.3. Константы с плавающей точкой. A2.5.4. Константы-перечисления. A2.6. Строковые литералы. A3. Нотация синтаксиса. A4. Что обозначают идентификаторы. A4.1. Класс памяти. A4.2. Базовые типы. A4.3. Производные типы. A4.4. Квалификаторы типов. A5. Объекты и Lvalues. A6. Преобразования. A6.1. Целочисленное повышение. A6.2. Целочисленные преобразования. A6.3. Целые и числа с плавающей точкой. A6.4. Типы с плавающей точкой. А6.5. Арифметические преобразования. A6.6. Указатели и целые. A6.7. Тип void. А6.8. Указатели на void. A7. Выражения. A7.1. Генерация указателя. A7.2. Первичные выражения. A7.3. Постфиксные выражения. A7.3.1. Обращение к элементам массива. A7.3.2. Вызов функции. A7.3.3. Обращение к структурам. A7.3.4. Постфиксные операторы инкремента и декремента. А7.4. Унарные операторы. А7.4.1. Префиксные операторы инкремента и декремента. A7.4.2. Оператор получения адреса. A7.4.3. Оператор косвенного доступа. A7.4.4. Оператор унарный плюс. A7.4.5. Оператор унарный минус. A7.4.6. Оператор побитового отрицания. A7.4.7. Оператор логического отрицания. A7.4.8. Оператор определения размера sizeof. A7.5. Оператор приведения типа. A7.6. Мультипликативные операторы. A7.7. Аддитивные операторы. A7.8. Операторы сдвига. A7.9. Операторы отношения. A7.10. Операторы равенства. A7.11. Оператор побитового И. A7.12. Оператор побитового исключающего ИЛИ. A7.13. Оператор побитового ИЛИ. A7.14. Оператор логического И. A7.15. Оператор логического ИЛИ. А7.16. Условный оператор. A7.17. Выражения присваивания. A7.18. Оператор запятая. A7.19. Константные выражения. A8. Объявления. A8.1. Спецификаторы класса памяти. А8.2. Спецификаторы типа. A8.3. Объявления структур и объединений. A8.4. Перечисления. А8.5. Объявители. A8.6. Что означают объявители. A8.6.1. Объявители указателей. А8.6.2. Объявители массивов. А8.6.3. Объявители функций. A8.7. Инициализация. A8.8. Имена типов. А8.9. Объявление typedef. A8.10. Эквивалентность типов. A9. Инструкции. A9.1. Помеченные инструкции. A9.2. Инструкция-выражение. A9.3. Составная инструкция. A9.4. Инструкции выбора. A9.5. Циклические инструкции. A9.6. Инструкции перехода. А10. Внешние объявления. A10.1. Определение функции. A10.2. Внешние объявления. A11. Область видимости и связи. A11.1. Лексическая область видимости. A11.2. Связи. A12. Препроцессирование. A12.1. Трехзнаковые последовательности. A12.2. Склеивание строк. А12.3. Макроопределение и макрорасширение. A12.4. Включение файла. A12.5. Условная компиляция. A12.6. Нумерация строк. A12.7. Генерация сообщения об ошибке. A12.8. Прагма. A12.9. Пустая директива. A12.10. Заранее определенные имена. A13. Грамматика. Приложение B. Стандартная библиотека. B1. Ввод-вывод: ‹stdio.h› B1.1. Операции над файлами. B1.2. Форматный вывод. B1.3. Форматный ввод. B1.4. Функции ввода-вывода символов. B1.5. Функции прямого ввода-вывода. B1.6. Функции позиционирования файла. B1.7. Функции обработки ошибок. B2. Проверки класса символа: ‹ctype.h› B3. Функции, оперирующие со строками: <string.h> B4. Математические функции: <math.h> B5. Функции общего назначения: <stdlib.h> B6. Диагностика: <assert.h> B7. Списки аргументов переменной длины: <stdarg.h> B8. Дальние переходы: <setjmp.h> B9. Сигналы: <signal.h> B10. Функции даты и времени: ‹time.h› B11. Зависящие от реализации пределы: <limits.h> и <float.h> Приложение C. Перечень изменений. Предметный указатель. А. Б. В. Г. Д. Е. З. И. К. Л. М. H. O. П. Р. С. Т. У. Ф. Х. Ц. Ч. Ш. Э. A. B. C. D. E. F. G. H. I. L. M. N. O. P. R. S. T. U. V. W. X. →

Язык Си - руководство для начинающих.

1. Вступление. ПРОИСХОЖДЕНИЕ ЯЗЫКА СИ. ДОСТОИНСТВА ЯЗЫКА СИ. БУДУЩЕЕ ЯЗЫКА СИ. ИСПОЛЬЗОВАНИЕ ЯЗЫКА СИ. Использование текстового редактора для подготовки программы. Исходные файлы и выполняемые файлы. Компиляция Си-программы в ОС UNIX. Компиляция Си-программы на IBM PC. (компиляторы Microsoft С и Lattice С). Альтернативный способ трансляции. Почему компиляция? НЕКОТОРЫЕ СОГЛАШЕНИЯ. Вид шрифта. Цвет. Устройство ввода-вывода. Функциональные клавиши. Наша вычислительная система. СОВЕТ. 2. Введение в язык Си. ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ. ... Первый просмотр: краткий обзор. Второй просмотр: детали. СТРУКТУРА ПРОСТОЙ ПРОГРАММЫ. НЕСКОЛЬКО СОВЕТОВ, КАК СДЕЛАТЬ ПРОГРАММУ ЧИТАЕМОЙ. СЛЕДУЮЩИЙ ШАГ. ДОПОЛНИТЕЛЬНЫЙ ПРИМЕР. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. УПРАЖНЕНИЯ. 3. Данные, язык Си и вы. ДАННЫЕ: ПЕРЕМЕННЫЕ И КОНСТАНТЫ. ДАННЫЕ: ТИПЫ ДАННЫХ. Целые числа. Числа с плавающей точкой. ТИПЫ ДАННЫХ В ЯЗЫКЕ СИ. Типы int, short и long. Описание данных целого типа. Целые константы. Инициализация переменных целого типа. Рекомендации. Тип данных unsigned. Тип данных char. Описание символьных переменных. Символьные константы. Программа. Типы данных float и double. Описание переменных с плавающей точкой. Константы с плавающей точкой. Переполнение и потеря значимости при обработке чисел с плавающей точкой. Резюме: основные типы данных. Целые числа со знаком. Целые числа без знака. Символы. Другие типы. ИСПОЛЬЗОВАНИЕ ТИПОВ ДАННЫХ. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. 4. Символьные строки директива #define, функции printf( ) и scanf( ). СИМВОЛЬНЫЕ СТРОКИ - ВВЕДЕНИЕ. Длина строки - функция strlen( ). КОНСТАНТЫ И ПРЕПРОЦЕССОР ЯЗЫКА Си. Несколько замечаний по поводу формата. Язык Си - искусный фокусник: создание псевдоимен. ИЗУЧЕНИЕ И ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ printf( ) И scanf( ). Использование функции printf( ). Модификаторы спецификации преобразования, используемые в функции printf( ). Примеры. Использование функции printf( ) для преобразования данных. Применение функции scanf( ). СОВЕТЫ ПО ПРИМЕНЕНИЮ. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. 5. Операции, выражения и операторы. ВВЕДЕНИЕ. ОСНОВНЫЕ ОПЕРАЦИИ. Операция присваивания: = Операция сложения: + Операция вычитания: - Операция изменения знака: - Операция умножения: * Операция деления: / Порядок выполнения операций. НЕКОТОРЫЕ ДОПОЛНИТЕЛЬНЫЕ ОПЕРАЦИИ. Операция деления по модулю: % Операции увеличения и уменьшения: ++ и -- Операция уменьшения: -- Старшинство операций. Не будьте слишком умными. ВЫРАЖЕНИЯ И ОПЕРАТОРЫ. Выражения. Операторы. Составные операторы (блоки). Резюме: выражения и операторы. ПРЕОБРАЗОВАНИЕ ТИПОВ. Вот что происходит в программе. Операция приведения. Резюме: операции в языке Си. ПРИМЕР ПРОГРАММЫ. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. УПРАЖНЕНИЯ. 6. Функции и переключение ввода-вывода. ВВОД И ВЫВОД ОДНОГО СИМВОЛА: ФУНКЦИИ getchar( ) И putchar( ). БУФЕРЫ. СЛЕДУЮЩИЙ ШАГ. Чтение одной строки. Чтение одиночного файла. ПЕРЕКЛЮЧЕНИЕ И РАБОТА С ФАЙЛАМИ. ОПЕРАЦИОННАЯ СИСТЕМА UNIX. Переключение вывода. Переключение ввода. Комбинированное переключение. Операционные системы, отличные от ОС UNIX. Резюме: как переключать ввод и вывод. СИСТЕМНО-ЗАВИСИМЫЕ СРЕДСТВА: ПОРТЫ ВВОДА-ВЫВОДА МИКРОПРОЦЕССОРОВ INTEL 8086/8088. Использование порта. ИСПОЛЬЗОВАНИЕ СКРЫТОЙ МОЩНОСТИ (В ЛОШАДИНЫХ СИЛАХ) ВАШЕГО КОМПЬЮТЕРА. ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. УПРАЖНЕНИЯ. 7. Выбор вариантов. ОПЕРАТОР if. РАСШИРЕНИЕ ОПЕРАТОРА if С ПОМОЩЬЮ else. Выбор: конструкция if-else. Множественный выбор: конструкция else-if. Объединение операторов if и else. Резюме: использование операторов if для организации выбора из нескольких вариантов. ЧТО ВАЖНЕЕ: ОПЕРАЦИИ ОТНОШЕНИЯ ИЛИ ВЫРАЖЕНИЯ. Что такое истина? Итак, чему же все-таки соответствует истина? Осложнения с понятием "истина". Приоритеты операций отношения. Резюме: операции отношения и выражения. ЛОГИЧЕСКИЕ ОПЕРАЦИИ. Приоритеты. Порядок вычислений. Резюме: логические операции и выражения. ПРОГРАММА ПОДСЧЕТА СЛОВ. ПРОГРАММА, "РИСУЮЩАЯ" СИМВОЛАМИ. Анализ программы. Длина строки. Структура программы. Форма данных. Контроль ошибок. ОПЕРАЦИЯ УСЛОВИЯ: ? Резюме: операция условия. МНОЖЕСТВЕННЫЙ ВЫБОР: ОПЕРАТОРЫ switch И break. Резюме: множественный выбор вариантов с помощью оператора switch. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. 8. Циклы и другие управляющие средства. ЦИКЛ while. Завершение цикла while. АЛГОРИТМЫ И ПСЕВДОКОД. Резюме: оператор while. ПРИМЕРЫ. ЦИКЛ for. Гибкость конструкции for. Резюме: оператор for. Операция "запятая". Резюме: наши новые операции. Философ Зенон и цикл for. ЦИКЛ С УСЛОВИЕМ НА ВЫХОДЕ: do while. Резюме: оператор do while. КАКОЙ ЦИКЛ ЛУЧШЕ? ВЛОЖЕННЫЕ ЦИКЛЫ. ДРУГИЕ УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ: break, continue, goto. break… continue… goto… Избегайте использовать goto. Резюме: переходы в программах. МАССИВЫ. ПРОБЛЕМА ВВОДА. РЕЗЮМЕ. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. УПРАЖНЕНИЯ. 9. Как правильно пользоваться функциями. КЛЮЧЕВОЕ СЛОВО return. СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ ПРОСТОЙ ФУНКЦИИ. АРГУМЕНТЫ ФУНКЦИИ. Определение функции с аргументом: формальные аргументы. Вызов функции с аргументом: фактические аргументы. Функция как "черный ящик". Наличие нескольких аргументов. ВОЗВРАЩЕНИЕ ЗНАЧЕНИЯ ФУНКЦИЕЙ: ОПЕРАТОР return. ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ. НАХОЖДЕНИЕ АДРЕСОВ: ОПЕРАЦИЯ & ИЗМЕНЕНИЕ ПЕРЕМЕННЫХ В ВЫЗЫВАЮЩЕЙ ПРОГРАММЕ. Указатели: первое знакомство. Операция косвенной адресации: * Резюме: операции, связанные с указателями. Описание указателей. Использование указателей для связи между функциями. Переменные: имена, адреса и значения. ИСПОЛЬЗОВАНИЕ НАШИХ ЗНАНИЙ О ФУНКЦИЯХ. ОПИСАНИЕ ТИПОВ ФУНКЦИЙ. Резюме: функции. В ЯЗЫКЕ СИ ВСЕ ФУНКЦИИ РАВНОПРАВНЫ. Компиляция программ, состоящих из двух или более функций. OC UNIX. КомпиляторыLаttiсе C иМIСRОSОFТ C. Системы, построенные на основе трансляции в ассемблерный код. РЕЗЮМЕ. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. УПРАЖНЕНИЯ. 10. Классы памяти и разработка программ. КЛЮЧЕВЫЕ СЛОВА: auto, extern, static, register. Автоматические переменные. Внешние переменные. Статические переменные. Внешние статические переменные. Регистровые переменные. Какой класс памяти применять? Резюме: Классы памяти. ФУНКЦИЯ ПОЛУЧЕНИЯ ЦЕЛЫХ ЧИСЕЛ: getint( ). Поток информации для getint( ). Содержание getint( ). Преобразование строки в целое: stoi( ). Проверка. СОРТИРОВКА ЧИСЕЛ. Считывание числовых данных. Выбор представления данных. Завершение ввода. Дальнейшие рассуждения. main( ) и getarray( ). Разъяснения. Сортировка данных. Печать данных. Результаты. ОБЗОР. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. УПРАЖНЕНИЯ. 11. Препроцессор языка Си. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА #define, #include, #undef, #if, #ifdef, #ifndef, #else, #endif. СИМВОЛИЧЕСКИЕ КОНСТАНТЫ: #define. ИСПОЛЬЗОВАНИЕ АРГУМЕНТОВ С #define. МАКРООПРЕДЕЛЕНИЕ ИЛИ ФУНКЦИЯ? ВКЛЮЧЕНИЕ ФАЙЛА: #include. Заголовочные файлы… Замечания по программе. ДРУГИЕ ДИРЕКТИВЫ: #undef, #if, #ifdef, #ifndef, #else И #endif. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. УПРАЖНЕНИЕ. 12. Массивы и указатели. МАССИВЫ. Инициализация массивов и классы памяти. УКАЗАТЕЛИ МАССИВОВ. ФУНКЦИИ, МАССИВЫ И УКАЗАТЕЛИ. ИСПОЛЬЗОВАНИЕ УКАЗАТЕЛЕЙ ПРИ РАБОТЕ С МАССИВАМИ. ОПЕРАЦИИ С УКАЗАТЕЛЯМИ. МНОГОМЕРНЫЕ МАССИВЫ. Инициализация двумерного массива. УКАЗАТЕЛИ И МНОГОМЕРНЫЕ МАССИВЫ. Функции и многомерные массивы. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. УПРАЖНЕНИЕ. 13. Символьные строки и функции над строками. СИМВОЛЬНЫЕ СТРОКИ. ОПРЕДЕЛЕНИЕ СТРОК В ПРОГРАММЕ. Строковые константы. Массивы символьных строк и их инициализация. Массив или указатель. Массив и указатель: различия. Явное задание размера памяти. Массивы символьных строк. Указатели и строки. ВВОД СТРОК. Выделение памяти. Функция gets( ). Функция scanf( ). ВЫВОД СТРОК. Функция puts( ). Функция printf( ). СОЗДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ. ФУНКЦИИ, РАБОТАЮЩИЕ СО СТРОКАМИ. Функция strlen( ). Функция strcat( ). Функция strcmp( ). Функция strcpy( ). ПРИМЕР: СОРТИРОВКА СТРОК. АРГУМЕНТЫ КОМАНДНОЙ СТРОКИ. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. УПРАЖНЕНИЯ. 14. Структуры и другие типы данных. ТИПОВАЯ ЗАДАЧА: ИНВЕНТАРИЗАЦИЯ КНИГ. УСТАНОВКА СТРУКТУРНОГО ШАБЛОНА. ОПРЕДЕЛЕНИЕ СТРУКТУРНЫХ ПЕРЕМЕННЫХ. Инициализация структуры. ДОСТУП К ЭЛЕМЕНТАМ СТРУКТУРЫ. МАССИВЫ СТРУКТУР. Описание массива структур. Определение элементов массива структур. Детализация программы. ВЛОЖЕННЫЕ СТРУКТУРЫ. УКАЗАТЕЛИ НА СТРУКТУРЫ. Описание и инициализация указателя на структуру. Доступ к элементу структуры при помощи указателя. Резюме: операции над структурами и объединениями. II. ОПЕРАЦИЯ КОСВЕННОГО ПОЛУЧЕНИЯ ЭЛЕМЕНТА: -> ПЕРЕДАЧА ИНФОРМАЦИИ О СТРУКТУРАХ ФУНКЦИЯМ. Использование элементов структуры. Использование адреса структуры. Использование массива. СТРУКТУРЫ: ЧТО ДАЛЬШЕ? ОБЪЕДИНЕНИЯ - КРАТКИЙ ОБЗОР. typedef - КРАТКИЙ ОБЗОР. ПРИЧУДЛИВЫЕ ОПИСАНИЯ. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы… УПРАЖНЕНИЯ. 15. Библиотека языка Си и файлы ввода-вывода. ДОСТУП В БИБЛИОТЕКУ ЯЗЫКА СИ. Автоматический доступ. Включение файла. Включение библиотеки. БИБЛИОТЕЧНЫЕ ФУНКЦИИ, КОТОРЫЕ МЫ ИСПОЛЬЗОВАЛИ. СВЯЗЬ С ФАЙЛАМИ. ЧТО ТАКОЕ ФАЙЛ? ПРОСТЫЕ ПРОГРАММЫ ЧТЕНИЯ ФАЙЛА: fopen( ), fclose( ), getc( ) и putc( ). Открытие файла: fopen( ). Закрытие файла: fclose( ). Текстовые файлы с буферизацией. Ввод-вывод файла: getc( ) и putc( ). ПРОСТАЯ ПРОГРАММА СЖАТИЯ ФАЙЛА. ВВОД-ВЫВОД ФАЙЛА: fprintf( ), fscanf( ), fgets( ) И fputs( ). Функции fprintf( ) и fscanf( ). Функция fgets( ). Функция fputs( ). ПРОИЗВОЛЬНЫЙ ДОСТУП: fseek( ). ПРОВЕРКА И ПРЕОБРАЗОВАНИЕ СИМВОЛОВ. ПРЕОБРАЗОВАНИЯ СИМВОЛЬНЫХ СТРОК: atoi( ), atof( ). ВЫХОД: exit( ). РАСПРЕДЕЛЕНИЕ ПАМЯТИ: malloc( ) И са11ос( ). ДРУГИЕ БИБЛИОТЕЧНЫЕ ФУНКЦИИ. ЗАКЛЮЧЕНИЕ. ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ. ВОПРОСЫ И ОТВЕТЫ. Вопросы. Ответы. УПРАЖНЕНИЯ. Приложения. ПРИЛОЖЕНИЕ А. ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА. ЯзыкСи. Программирование. Операционная система UNIX. ПРИЛОЖЕНИЕ Б. КЛЮЧЕВЫЕ СЛОВА ЯЗЫКА СИ. ПРИЛОЖЕНИЕ В. ОПЕРАЦИИ ЯЗЫКА СИ. I. Арифметические операции. II. Операции присваивания. III. Операции отношения. IV. Логические операции. V. Операции над указателями. VI. Операции над структурами и объединениями. VII. Дополнительные операции. ПРИЛОЖЕНИЕ Г. ТИПЫ ДАННЫХ И КЛАССЫ ПАМЯТИ. Основные типы данных. Классы памяти. ПРИЛОЖЕНИЕ Д. УПРАВЛЕНИЕ ХОДОМ ВЫПОЛНЕНИЯ ПРОГРАММЫ. Оператор while. Оператор for. Оператор do while. Использование операторов if для выбора вариантов. Множественный выбор при помощи switch. Переходы в программе. break. continue. goto. ПРИЛОЖЕНИЕ Е. МАНИПУЛЯЦИИ РАЗРЯДАМИ: ОПЕРАЦИИ И ПОЛЯ. Операции. Поразрядные логические операции. Поразрядные операции сдвига. Поля. ПРИЛОЖЕНИЕ Ж. ДВОИЧНЫЕ И ДРУГИЕ ЧИСЛА. Двоичные числа. Двоичные числа с плавающей точкой. Другие основания системы счисления. ПРИЛОЖЕНИЕ З. "МУЗЫКА" В СИСТЕМЕ IBM PC. Функция tone ( ). Продолжительность звучания. Частота звука. Использование функции tоnе( ). ПРИЛОЖЕНИЕ И. РАСШИРЕНИЕ ЯЗЫКА СИ. Структуры в качестве аргументов функции. Перечислимые типы. Значения по умолчанию. Присвоенные значения. Операции. ПРИМЕНЕНИЕ. ПРИЛОЖЕНИЕ К. ТАБЛИЦА КОДОВ ASCII. →

Программы и файлы Windows.

Стандартные программы Windows. A. alg.exe. arp.exe. at.exe. atmadm.exe. attrib.exe. B. bootcfg.exe. С. cacls.exe. calc.exe. charmap.exe. chcp.exe. chkdsk.exe. chkntfs.exe. cipher.exe. cleanmgr.exe. clipbrd.exe. Cmd.EXE. cmstp.exe. comp.exe. compact.exe. control.exe. convert.exe. cscript.exe. D. defrag.exe. diskpart.exe. driverquery.exe. drwtsn32.exe (Доктор Ватсон в Windows). E. explorer.exe. F. fc.exe. find.exe. fsutil.exe. ftp.exe. H. hostname.exe. I. iexpress.exe. ipconfig.exe. L. logonui.exe. lpq.exe. M. ... makecab.exe. migwiz.exe. mmc.exe. mplayer2.exe. msconfig.exe. msinfo32.exe (Сведения о системе). msoobe.exe. mspaint.exe. N. net.exe. netsh.exe. netstat.exe. pad.exe. nslookup.exe. ntbackup.exe. ntoskrnl.exe. O. openfiles.exe. P. pathping.exe. ping.exe. powercfg.exe. progman.exe. R. reg.exe. regedit.exe. regsvr32.exe. route.exe. rstrui.exe. rundll32.exe. S. sfc.exe. shutdown.exe. sndvol32.exe. sol.exe. systeminfo.exe. T. taskkill.exe. tasklist.exe. taskmgr.exe. tracert.exe. W. winmsd.exe. wmic.exe. wscript.exe. Support/Tools. wscript.exe. ФАЙЛЫ WINDOWS. AppEvent.Evt. boot.ini. hosts. lusrmgr.msc. mydocs.dll. ntshrui.dll. ntuser.dat. oeminfo.ini. oemlogo.bmp. pfirewall.log. SAM. SecEvent.Evt. SECURITY. shmedia.dll. software. srclient.dll. Svcpack.log. SysEvent.Evt. system. UsrClass.dat. WindowsUpdate.log. wpa.dbl. РАСШИРЕНИЯ ФАЙЛОВ. DBX-файлы. INF-файлы. HTML-приложения. ПАНЕЛЬ УПРАВЛЕНИЯ. wscui.cpl (Центр обеспечения безопасности). ОСНАСТКИ. ciadv.msc. compmgmt.msc. devmgmt.msc. diskmgmt.msc. gpedit.msc. eventvwr.msc. fsmgmt.msc. lusrmgr.msc. ntmsmgr.msc. perfmon.msc. services.msc. СЛУЖБЫ WUNDOWS. Оповещатель (Alerter). Системное приложение COM+ (COM+ System Application). Служба шлюза уровня приложения - alg.exe. Службы криптографии (Cryptographic Services). Сервер папки обмена - clipsrv.exe. ПАПКИ WINDOWS. System Volume Information. C:\Documents and Settings. C:\Documents And Settings\All Users\Application Data\Microsoft\User Account Pictures\Default Pictures. C:\Documents and Settings\(имя пользователя)\Local Settings\Application Data\ Microsoft\CD Burning. SendTo. Windows. Windows\Driver Cache\i386. Windows\Media. Windows\Minidump. Windows\msagent. Windows\ShellNew. WINDOWS\SoftwareDistribution. Windows\Temp. WinSxS. system32. Windows\system32\dllcache. Windows\system32\config. Windows\system32\Restore. →

Реестр Windows.

Как пользоваться справочником. Что такое реестр? Общая теория. Надстройки реестра. Windows. Меню кнопки Пуск. Внешний вид кнопки Пуск. Папки. Программы. Избранное. Мои документы. Настройка. Принтеры. Поиск. Справка. Выполнить. Все программы. Завершение работы. Контекстное меню кнопки Пуск. Рабочий стол. Корзина. Обои для Рабочего стола. Панель задач. Версия Windows на Рабочем столе. Скрытие всех элементов на Рабочем столе. Мой компьютер. Мои документы. Проводник и оболочка Windows. Оболочка Windows. Системные и специальные папки. ... Контекстное меню Проводника. Новый ярлык. Панель инструментов. Меню Проводника. Установка классического вида в Проводнике. Связанные документы. Проводник как два отдельных процесса. Изменение цвета файла при подведении мыши. Перезагрузка Windows. Диски. Панель управления. Панель управления. Скрытие и показ значков апплетов. Администрирование. Дата и время. Принтеры. Установка и удаление программ. Свойства обозревателя. Свойства папки. Панель задач и меню "Пуск". Система. Центр обеспечения безопасности. Экран. Рабочий стол. Заставка. Оформление. Активация Windows. Вход в Windows. Учетные записи. Регистрационные данные. Путь установки Windows. Синий Экран Смерти. Сообщение при загрузке. Восстановление системы. Панель переключателя задач. Всплывающие подсказки. Отключение подсказок для кнопок Свернуть, Развернуть и Закрыть. Пароль после ждущего режима. Автозагрузка. Контекстное меню панели задач. Диалоговое окно открытия и сохранения файла. Добавление нового пункта в меню "Создать". Контекстное меню папок и файлов, дисков. Исполняемые файлы и ярлыки. Ярлыки. Удаление "ладошки" из расшаренных ресурсов. Перемещение HOST, LMHOST и других файлов из Windows\System32\drivers\etc в другое место. Увеличение скорости всплывания меню. Автозапуск CD-ROM. Запрещение/Разрешения на запуск программ. Пароли и безопасность. Командная строка. Консоль управления Windows (MMC). Служба W32Time. Часы. Раскладка клавиатуры. Изменение порога выдачи предупреждения о недостатке свободного места на диске. Дефрагментация. Файл подкачки. Проверка диска. USB. Num Lock, Caps Lock, Scroll Lock. Выбор программы. Клавиша Windows. Создание псевдонима для программы. Обработка reg-файлов. Значки для DLL. Ускорение файловой системы. Отключение дебаггера. Зависшие программы. Длинные и короткие имена файлов. Формат MS-DOS для файлов и папок (Windows NT/2000/XP). Обновление метки последнего доступа к папке. Быстрое завершение работы Windows. Запрет на null-сессию. Windows Installer. Windows Script Host (WSH). Установка способа доступа к расшаренным ресурсам компьютера из сети (Windows NT/2000/XP). Запрет сохранения паролей в Dial-Up-соединениях. Remote Desktop Connection. Сохраняем Интернет соединение при переключении между пользователями. Блокнот. Мастер очистки Рабочего стола. Настройка системы (msconfig.exe). Регулятор громкости. Internet Explorer. Пункты меню. Главное меню (IE7). Меню Файл. Меню Вид. Избранное. Меню Сервис. Справка. Контекстное меню в Internet Explorer. Версия Internet Explorer. Панель информации. Настройки блокировщика всплывающих окон. Поиск. Запрет на загрузку файлов. Сохранение странички (Internet Explorer 5 и выше). Доступ к сайтам. Безопасность. Ошибки при загрузке страницы. Время ожидания ответа сервера (Internet Explorer 4.0 SP1 и выше). Замена логотипа в Internet Explorer. Замена заголовка в Internet Explorer. Замена фона в панели инструментов в Internet Explorer. Установка стартовой странички. Клавиша F3 (Поиск). Кнопки на панели инструментов в Internet Explorer. Кнопки Вперед и Назад. Строчки для комбобокса Адрес. Панель инструментов изображений. Отмена кэширования пароля (Internet Explorer 4 и выше). Команда "Q" в адресной строке для получения статьи из Базы Знаний от Майкрософт. Размеры окна. Outlook Express. Замена заголовка в Outlook Express. Удаление заставки в Outlook Express. Общая Адресная книга в Outlook Express. Учетные записи. Фильтры. Windows Media Player. Изменение заголовка в Windows Media Player. Параметры. Игры. Паук. Сапер. Червы. Office. Excel. Сворачивание Outlook в область уведомлений. Диалоговое окно открытия и сохранения файла для Office. Outlook. Ошибки в Office (Office XP). Выбираем персонаж (Office XP). Visual Studia.Net. Visual Basic. Adobe Fotoshop. ICQ. NERO. The Bat! WinRar. PocketPc. Настройка вида часов (Windows Mobile 2003). Ускоряем дисплей. Шрифты. Bluetooth (Windows Mobile 5.0). Дополнительные сведения. Восстановление реестра. Структура reg-файлов. Утилиты для работы с реестром. RegClean 4.1a. Registry Monitor. RegShot. Другие утилиты. →