|
|||||||||
|
|||||||||
|
|
Специальные ресурсы/Информатика и информационные технологии/Основные понятия и языки программирования
Алгоритмы обработки и преобразования информации
На данном ресурсе представлено описание семи алгоритмов обработки и преобразования
информации с примерами. Для перехода от алгоритма к алгоритму слева представлен перечень/список
рассмотренных алгоритмов.
Хрестоматия по программированию на Си в Unix
Автор: Андрей Богатырев.
В этой книге вы найдете ряд задач, примеров, алгоритмов, советов и стилистических
замечаний по использованию языка программирования "C" (Си) в среде операционной системы
UNIX. Здесь собраны этюды разной сложности и "штрихи к портрету" языка Си. Также
описаны различные "подводные камни" на которых нередко терпят крушение новички в
Си. В этом смысле эту книгу можно местами назвать "Как не надо программировать на
Си".
Введение в теорию программирования. Функциональный подход
Автор: Зыков Сергей Викторович
Курс основан на творческом синтезе избранных формальных теорий (ламбда-исчисление,
комбинаторная логика, теория категорий и др.) и уникальной технологической платформы
Microsoft.NET, обеспечивающей практически прозрачную интеграцию кода на языках программирования
различных типов.
Введение в теорию программирования. Объектно-ориентированный подход
Курс является вводным в объектно-ориентированное программирование и теоретический
фундамент программирования. Курс лекций охватывает основные разделы программирования
в приложении к объектно-ориентированным языкам программирования (теория вычислений,
представление синтаксиса и семантики выражений, теория типов и др.).
Курс проиллюстрирован примерами, связывающими фундаментальные понятия теории с особенностями
программирования на языке C# (типизация, наследование, инкапсуляция, полиморфизм,
динамическое связывание и др.) и языке SML («ленивые» вычисления, расширенный
полиморфизм, выводимость типов и т.д.). Базовые аспекты профессионального программирования
излагаются в сравнении языков C# и SML на единой платформе Microsoft .NET.Сравнительное
изучение языков программирования «нового поколения» SML и C# дает возможность
более глубоко проникнуть в суть процесса создания программных систем.
Объектно-ориентированные базы данных: среда разработки программ плюс хранилище объектов
Введение в объектные базы данных
Особенности программирования объектной СУБД
Использование объектных СУБД
gcc: Компилятор языков C, C++, Objective C
В большинстве случаев приходится компилировать написанные на С/С++ программы. Для
этого используются различные компиляторы. В данном руководстве пользователя описывается
компилятор языков C, C++, Objective C.
Содержание
1. Компиляция C, C++ или Objective C 4
2. Командные Опции GNU CC 6
2.1. Сводка Опций 7
2.2. Опции, Управляющие Видом Вывода 9
2.3. Опции, Управляющие Диалектом C 12
2.4. Опции для Включения или Подавления Предупреждений 17
2.5. Опции для Отладки Ваших Программ или GNU CC 27
2.6. Опции, которые Управляют Оптимизацией 34
2.7. Опции Управляющие Препроцессором 40
2.8. Передача Опций Ассемблеру 44
2.9. Опции Линковки 44
2.10. Опции для Поиска в Директориях 48
2.11. Указание Целевой Машины и Версии Компилятора 49
2.12. Модели и Конфигурации Машин 51
2.12.1. Опции Intel 386 52
2.13. Опции Соглашений о Генерации Кода 55
2.14. Переменные Окружения, Затрагивающие GNU CC 60
2.15. Выполнение Protoize 62
3. Установка GNU CC 67
3.1. Конфигурации Поддерживаемые GNU CC 76
3.2. Компиляция в Отдельном Каталоге 78
3.3. Построение и Установка Кросскомпилятора 79
3.3.1. Шаги Кросскомпиляции 80
3.3.2. Конфигурирование Кросскомпилятора 80
3.3.3. Инструментальные Средства и Библиотеки для Кросскомпилятор 81
3.3.4. Реальное Построение Кросскомпилятора 82
3.4. Стандартные Директории Заголовочных Файлов 83
4. Расширения Семейства Языка C 84
4.1. Операторы и Объявления в Выражениях 84
4.2. Локально Объявляемые Метки 85
4.3. Метки как Значения 87
4.4. Вложенные Функции 88
4.5. Конструирование Вызовов Функций 91
4.6. Именование Типа Выражения 93
4.7. Ссылки на Тип с Помощью typeof 93
4.8. Обобщенные L-значения 94
- 3 -
4.9. Условные Выражения с Опущенными Операндами 95
4.10. Двухсловные Целые 96
4.11. Комплексные Числа 96
4.12. Массивы Нулевой Длины 97
4.13. Массивы Переменной Длины 97
4.14. Макросы с Переменным Числом Аргументов 99
4.15. Массивы Не L-значения Могут Иметь Индексы 100
4.16. Арифметика над Указателями на void и на Функции 101
4.17. Неконстантные Инициализаторы 101
4.18. Выражения Конструкторов 101
4.19. Помеченные Элементы в Инициализаторах 102
4.20. Диапазоны Case 104
4.21. Приведение к Типу Объединения 104
4.22. Объявления Атрибутов Функций 105
4.23. Прототипы и Определения Функций в Старом Стиле 109
4.24. Комментарии в C++ Стиле 109
4.25. Знак Доллара в Идентификаторах 110
4.26. Символ ESC в Константах 110
4.27. Выравнивание Типов и Переменных 110
4.28. Указание Атрибутов Переменных 111
4.29. Указание Атрибутов Типов 114
C/C++. Структурное программирование. Практикум.
Практикум предназначен для изучения языка C++ на семинарах и для его самостоятельного
освоения. Он является дополнением к учебнику Т. А. Павловской "C/C++. Программирование
на языке высокого уровня.", выпущенному издательством "Питер" в 2001 году.В практикуме
на примерах рассматриваются средства C++, используемые в рамках структурной парадигмы:
стандартные типы данных, основные конструкции, массивы, строки, структуры, функции,
шаблоны, динамические структуры данных. Обсуждаются алгоритмы, приемы отладки, вопросы
качества и стиля. По каждой теме приведено несколько комплектов из 20 вариантов заданий.Допущено
Министерством образования Российской Федерации в качестве учебного пособия для студентов
высших учебных заведений, обучающихся по направлению "Информатика и вычислительная
техника".
Содержание
Предисловие
Семинар 1. Линейные программы
Задача 1.1. Расчет по формуле
Особенности работы в интегрированной среде Visual C++ 6.0
Отладка программы
Описание переменных
Задача 1.2. Временной интервал
Задания
Семинар 2. Разветвляющиеся программы. Циклы
Разветвляющиеся программы
Задача 2.1. Вычисление значения функции, заданной графически
Задача 2.2. Выстрел по мишени
Задача 2.3. Клавиши курсора.
Циклы
Задача 2.4. Таблица значений функции
Задача 2.5. Вычисление суммы ряда
Задания
Семинар 3. Одномерные массивы и указатели
Задача 3.1. Количество элементов между минимумом и максимумом
Динамические массивы
Задача 3.2. Сумма элементов правее последнего отрицательного
Задача 3.3. Быстрая сортировка массива
Задания
Семинар 4. Двумерные массивы
Задача 4.1. Среднее арифметическое и количество положительных элементов
Динамические массивы
Задача 4.2. Номер столбца из положительных элементов
Задача 4.3. Упорядочивание строк матрицы
Задания
Семинар 5. Строки и файлы
Описание строк
Ввод-вывод строк
Операции со строками
Работа с символами
Задача 5.1. Поиск подстроки
Задача 5.2. Подсчет количества вхождений слова в текст
Задача 5.3. Вывод вопросительных предложений.
Задания
Семинар 6. Структуры
Задача 6.1. Поиск в массиве структур
Задача 6.2. Сортировка массива структур
Задача 6.3. Структуры и бинарные файлы
Задача 6.4. Структуры в динамической памяти
Задания
Семинар 7. Функции
Задача 7.1. Передача в функцию параметров стандартных типов
Задача 7.1-а. Передача в функцию имени функции
Задача 7.2. Передача одномерных массивов в функцию
Задача 7.3. Передача строк в функцию
Задача 7.4. Передача двумерных массивов в функцию
Задача 7.5. Передача структур в функцию
Задача 7.6. Рекурсивные функции
Многофайловые проекты
Что и как следует размещать в заголовочном файле
Задача 7.7. Многофайловый проект — форматирование текста
Задания
Семинар 8. Перегрузка и шаблоны функций
Перегрузка функций
Задача 8.1. Перегрузка функций
Шаблоны функций
Задача 8.2. Шаблоны функций
Задания
Семинар 9. Динамические структуры данных
Задача 9.1. Стек
Задача 9.2. Линейный список
Задача 9.3. Очередь
Задача 9.4. Бинарное дерево
Задания
Приложение 1. Интегрированная среда Visual C++ 6.0
Запуск IDE. Типы приложений
Создание нового проекта
Добавление к проекту файлов с исходным кодом
Добавление существующего файла
Добавление нового файла
Многофайловые проекты
Компиляция, компоновка и выполнение проекта
Проблемы с вводом-выводом кириллицы
Конфигурация проекта
Как закончить работу над проектом
Как открыть проект, над которым вы работали ранее
Встроенная справочная система
Работа с отладчиком
Установка точки прерывания
Выполнение программы до точки прерывания
Пошаговое выполнение программы
Проверка значений переменных во время выполнения программы
Окна Auto и Watch1
Приложение 2. Интегрированная среда Borland C++ 3.1
Запуск IDE
Работа с меню
Меню File
Меню Edit
Меню Run
Меню Compile
Меню Debug
Меню Project
Меню Options
Меню Window
Создание нового проекта
Модификация существующего проекта
Открытие проекта
Работа с проектом
Завершение работы с проектом
Работа с отладчиком
Алфавитный указатель
Объектно-ориентированное программирование на C++: Второе издание
Книга Айры Пола, автора многих популярных изданий по С и C++, не является ни учебником
по C++, ни курсом по объектно-ориентированному программированию (ООП) "вообще", хотя
может быть полезна и в этих двух качествах.
Задача книги (точно отраженная в названии) совершенно конкретна: научить читателя
писать на C++ объектно-ориентированные программы. Для многих абстрактных идей и понятий
ООП в C++ существуют конкретные воплощающие их конструкции.
Содержание
От автора
Для кого и о чем эта книга
Отличие от книг серии “Все о C++Builder” и “Программирование в
C++Builder 4”
Что вы найдете в этой книге
Чего вы не найдете в этой книге
Рекомендации по работе с книгой
Благодарности
ЧАСТЬ 1. Объектно-ориентированное визуальное программирование
Глава 1. Принципы объектно-ориентированного визуального программирования
1.1 Объектно-ориентированное программирование
1.2 Основы визуального программирования интерфейса
1.3 Предварительные сведения о классах и наследовании
1.4 Системы быстрой разработки приложений
1.5 Язык объектно-ориентированного проектирования C++
Глава 2. Система визуального объектно-ориентированного программирования C++Builder
2.1 Что может C++Builder 5
2.2 Интегрированная Среда Разработки (ИСР) C++Builder
2.3 Первые шаги — первые собственные приложения
2.4 Проекты C++Builder
2.5 Основные проектные операции при создании приложения
2.6 Отладка приложений
Глава 3. Обзор компонентов библиотеки C++Builder
3.1 Страницы палитры компонентов
3.2 Компоненты ввода и отобраения текстовой информации
3.3 Ввод и отображение чисел, дат и времени
3.4 Компоненты отображения и ввода иных видов информации
3.5 Кнопки, индикаторы, управляющие элементы
3.6 Компоненты — меню
3.7 Панели и компоненты внешнего оформления
3.8 Системные диалоги
3.9 Компоненты организации управления приложением
ЧАСТЬ 2. Разработка приложений для Windows
Глава 4. Проектирование графического интерфейса пользователя
4.1 Требования к интерфейсу пользователя приложений для Windows
4.2 Проектирование окон с изменяемыми размерами
4.3 Обработка событий клавиатуры и мыши
4.4 Перетаскивание объектов
4.5 Формы
4.6 Печать в C++Builder
4.7 Развертывание приложений
Глава 5. Графика и мультимедиа
5.1 Построение графических изображений
5.2 Мультимедиа и анимация
Глава 6. Взаимодействие приложения с внешними программами
6.1 Запуск из приложения внешних программ
6.2 Управление внешними приложениями
6.3 Сообщения Windows и их обработкаv
6.4 Внедрение и связывание объектов — OLE
6.5 Динамический обмен данными — DDE
Глава 7. Повторное использование разработанных кодов
7.1 Способы сохранения и повторного использования кодов
7.2 Создание и хранение шаблонов компонентов
7.3 Создание новых компонентов и включение их в библиотеку
7.4 Депозитарий — хранилище форм, фреймов и проектов
7.5 Динамически присоединяемые библиотеки DLL
7.6 Пакеты
Глава 8. Разработка справочной системы (создание файлов .hlp)
8.1 Проектирование справочной системы
8.2 Создание файла тем справок
8.3 Компиляция и отладка
8.4 Особенности создания справки, работающей на любых версиях Windows
ЧАСТЬ 3. Создание приложений для работы с базами данных
Глава 9. Приложения для работы с локальными базами данных
9.1 Базы данных
9.2 Создание баз данных с помощью Database Desktop
9.3 Создание и редактирование псевдонимов баз данных, каталогов, драйверов
9.4 Обзор компонентов, используемых для связи с базами данныхv
9.5 Основные свойства компонента Table и простейшие приложения на его основе
9.6 Использование словарей атрибутов полей
9.7 Некоторые компоненты визуализации и управления данными
9.8 Компонент Session
9.9 Компонент BatchMove
9.10 Приложения с несколькими связанными таблицами
9.11 Программирование работы с базами данных
9.12 Пример программирования работы с базой данных
Глава 10. Создание приложений для работы с базами данных в сети
10.1 Основы языка SQL и его использование в приложениях
10.2 Работа с базами данных в сети
10.3 InterBase — работа на платформе клиент/сервер
10.4 Доступ к базам данных через Microsoft ActiveX Data Objects (ADO)
10.5 Доступ к InterBase через InterBase Express (IBX)
Глава 11. Обработка и документирование данных
11.1 Многомерный анализ данных — компоненты Decision Cube
11.2 Создание отчетов
11.3 Использование серверов COM для документирования данных
ЧАСТЬ 4. Справочные сведения
Глава 12. Справочные данные по языку C++
12.1 Синтаксис языка
12.2 Директивы препроцессора
12.3 Константы
12.4 Переменные
12.5 Функции
12.6 Области видимости переменных и функций
12.7 Операции
12.8 Операторы
12.9 Динамическое распределение памяти
12.10 Исключения
12.11 Сигналы
Глава 13. Типы данных в языке C++
13.1 Классификация типов данных, объявление типов
13.2 Приведение типов
13.3 Арифметические типы данных
13.4 Типы строк
13.5 Перечислимые типы
13.6 Множества
13.7 Указатели
13.8 Ссылки
13.9 Файлы и потоки
13.10 Массивы
13.11 Структуры
13.12 Объединения
13.13 Классы
Глава 14. Справочные данные по интегрированной среде разработки C++Builder
14.1 Структура меню C++Builder 5
14.2 Настройка Интегрированной Среды Разработки C++Builder
14.3. Страницы библиотеки компонентов
Глава 15. Функции C, C++, библиотек C++Builder, API Windows
15.1 Справочные сведения общего характера
15.2 Математические функции
15.3 Преобразование типов данных
15.4 Строки и символы
15.5 Потоки и файлы
15.6 Управление процессами
15.7 Функции различного назначения
15.8 Сообщения Windows
Глава 16. Свойства, методы, события, типы, классы
16.1 Свойства
16.2 Методы
16.3 События
16.4 Некоторые базовые классы и типы
16.5 Предметный указатель разделов книги, содержащих описания компонентов библиотеки
VCL
Литература
Объектно-ориентированное программирование в C++
Изучение объектно-ориентированной парадигмы программирования обычно ассоциируется
с многочасовым курсом лекций и утомительными лабораторными занятиями, во время которых
вас бросает из крайности в крайность - от тупого отчаяния до ложного ощущения полного
понимания.
Книга популярного среди американских студентов писателя Роберта Лафоре призвана помочь
изучающему C++ избежать таких нагрузок на психику и без чьей-либо помощи пройти путь
от застенчивого ученика до уверенного в своих силах программиста.Столь значительный
объем этого учебника обусловлен как сложностью предмета, так и стремлением автора
не оставить белых пятен в программистском образовании читателя: любой элемент теории
немедленно иллюстрируется небольшим примером кода, для приобретения практических
навыков даются детально прокомментированные тексты полномасштабных приложений, а
для закрепления полученных знаний читателю предлагается выполнить множество самостоятельных
упражнений.
C++. Энциклопедия пользователя
Книга C++. Энциклопедия пользователя содержит обзор актуальных тем, связанных с языком
программирования C++. В книге рассматриваются вопросы объектно-ориентированного анализа
и проектирования, универсального языка программирования UML и разработки объектных
моделей.
Достаточно подробно представлены вопросы реализации приложений, а также стандартная
библиотека шаблонов STL. Особое внимание уделено обработке данных, живучести объектов
и шифрованию, архитектуре CORBA и модели СОМ. Прилагаемый CD-ROM содержит исходные
тексты примеров, рассмотренных в книге. Книга рассчитана на читателей, которые имеют
начальные сведения и знания по программированию на языке C++.
Оглавление.
Часть I. Объектно-ориентированное программирование
Глава 1. Объектно-ориентированный анализ и проектирование
Глава 2. Проектирование классов в C++
Глава 3. Наследование, полиморфизм и повторное использование
Часть II. Вопросы реализации
Глава 4. Управление памятью
Глава 5. Использование каркасов приложений
Глава 6. Контейнерные классы библиотеки STL
Глава 7. Итераторы и алгоритмы STL
Глава 8. Исключение конфликтов имен
Глава 9. Манипулирование типами объектов
Глава 10. Настройка производительности приложения
Часть III. Обработка данных
Глава 11. Рекурсия и рекурсивные структуры данных
Глава 12. Использование методов сортировки
Глава 13. Алгоритмы поиска данных
Глава 14. Хеширование и синтаксический анализ
Часть IV. Живучесть объектов и шифрование
Глава 15. Живучесть объектов
Глава 16. Реляционные базы данных и живучесть
Глава 17. Реализация живучести объектов с помощью реляционных баз данных
Глава 18. Объектно-ориентированные базы данных
Глава 19. Защита приложений с помощью шифрования
Часть V. Распределенные вычисления
Глава 20. CORBA
Глава 21. COM
Глава 22. Java и C++
Программирование на C++ в Linux
Книга посвящена созданию приложений, написанных на языке C++, в среде разработки
KDevelop. Дано описание способов взаимодействия компонентов приложений.
Рассмотрена работа с утилитой Qt Designer и описаны основные элементы управления,
используемые в диалоговых окнах, а также классы, созданные для работы с ними. Читатель
знакомится с концепцией Документ/Представление и учится создавать элементы пользовательского
интерфейса приложения. Кроме того, в отдельных главах разбираются вопросы вывода
на экран различной информации, сохранения и восстановления ее из файла, создания
текстовых редакторов, работы с шаблонами классов и функций и организации многозадачности
в приложении на основе взаимодействующих процессов. В завершение предоставляются
рекомендации по созданию справочной системы приложения.
Cодержание
Введение
Глава 1. Взаимодействие компонентов приложения
Глава 2. Диалоговые окна и простейшие элементы управления
Глава 3. Классы элементов управления
Глава 4. Классы приложений, документов и представлений
Глава 5. Создание элементов пользовательского интерфейса
Глава 6. Вывод информации на экран
Глава 7. Работа с файлами документов
Глава 8. Работа с текстовыми документами
Глава 9. Шаблоны и классы коллекций
Глава 10. Реализация многозадачности в приложении
Глава 11. Справка в приложении
Приложение 1. Что на CD
Приложение 2. Ресурсы Интернета
Предметный указатель
Программирование на Java
Автор: Вязовик Николай Александрович
Курс лекций посвящен современному и мощному языку программирования Java. В его рамках
дается вводное изложение принципов ООП, необходимое для разработки на Java, основы
языка, библиотеки для работы с файлами, сетью, для построения оконного интерфейса
пользователя (GUI) и др.
Язык программирования C++
Автор: Фридман Александр Львович
В систематизированном виде излагаются основные понятия и описываются возможности
языка C++. При этом основное внимание уделяется объяснению того, как теми или иными
возможностями пользоваться.
Язык программирования C++ в – это универсальный язык программирования, который
позволяет разрабатывать программы в соответствии с разными парадигмами: процедурным
программированием, объектно-ориентированным, параметрическим. В данном курсе рассматриваются
все основные возможности языка C++ и их применение при разработке объектно-ориентированных
программ. Дается краткое описание библиотек языка C++, необходимых для создания типичных
программ.
Основные концепции языков программирования, 5-е изд.
Книга, ставшая бестселлером в США, посвящена всестороннему обсуждению основных концепций
языков программирования. Автор описывает фундаментальные понятия программирования
на примере вопросов разработки различных языковых конструкций, подвергая критическому
анализу их реализацию в широком спектре языков программирования, таких как FORTRAN,
PASCAL, PL/1, C, C++, Ada, Java, Smalltalk, Eiffel и LISP. Материал книги охватывает
все парадигмы программирования, начиная с функциональной и заканчивая объектно-ориентированной,
и, несомненно, представляет интерес и как учебник по современным методологиям.
Оглавление
ПРЕДИСЛОВИЕ 10
Изменения, внесенные в пятом издании 11
Указания преподавателю 12
Приложения 12
Доступность языкового процессора 12
Благодарности 12
Об авторе 13
1. ВВОДНЫЕ ЗАМЕЧАНИЯ 13
1.1. Для чего нужно изучать концепции языков программирования 16
1.2. Области применения программирования 18
1.2.1. Научные приложения 18
1.2.2. Коммерческие приложения 18
1.2.3. Искусственный интеллект 18
1.2.4. Системное программирование 19
1.2.5. Языки подготовки сценариев 19
1.2.6. Специализированные языки программирования 20
1.3. Критерии оценки языков программирования 20
1.3.1. Читабельность 21
1.3.2. Легкость создания программ 25
1.3.3. Надежность 27
1.3.4. Стоимость 28
1.4. Факторы, влияющие на разработку языка 29
1.4.1. Архитектура компьютера 29
1.4.2. Методологии программирования 31
1.5. Категории языков 32
1.6. Компромиссы при разработке языка 32
1.7. Методы реализации 33
1.7.1. Компиляция 34
1.7.2. Чистая интерпретация 37
1.7.3. Смешанные системы реализации 38
1.8. Среды программирования 39
2. ОБЗОР ОСНОВНЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ 42
2.5. Первый шаг к совершенствованию: язык ALGOL 60 42
2.1. Язык Plankalkül Конрада Цузе 44
2.1.1. Исторические предпосылки 44
2.1.2. Обзор языка 45
2.2. Минимальное программирование на аппаратном уровне: псевдокоды 46
2.2.1. Язык Short Code 46
2.2.2. Система Speedcoding 47
2.2.3. Система "компиляции" UNIVAC 47
2.2.4. Смежная работа 47
2.3. Компьютер IBM 704 и язык FORTRAN 47
2.3.1. Историческая ретроспектива 48
2.3.2. Процесс разработки 48
2.3.3. Обзор языка FORTRAN I 49
2.3.4. Обзор языка FORTRAN II 50
2.3.5. Языки FORTRAN IV, FORTRAN 77 и FORTRAN 90 50
2.3.6. Оценка 51
2.4. Функциональное программирование: язык LISP 52
2.4.1. Истоки работ в области искусственного интеллекта и обработка списков 52
2.4.2. Процесс разработки языка LISP 52
2.4.3. Обзор языка 53
2.4.4. Оценка 54
2.4.5. Два потомка языка LISP 55
2.4.6. Родственные языки 55
2.5. Первый шаг к совершенствованию: язык ALGOL 60 56
2.5.1. Историческая ретроспектива 56
2.5.2. Начальная стадия разработки 56
2.5.3. Обзор языка ALGOL 58 57
2.5.4. Принятие отчета о языке ALGOL 58 57
2.5.5. Процесс разработки языка ALGOL 60 58
2.5.6. Обзор языка ALGOL 60 58
2.5.7. Оценка языка ALGOL 60 59
2.6. Компьютеризация коммерческих записей: язык COBOL 60
2.6.1. Исторические предпосылки 60
2.6.2. Язык FLOW-MATIC 60
2.6.3. Процесс разработки языка COBOL 61
2.6.4. Оценка 61
2.7. Начало разделения времени: язык BASIC 63
2.7.1. Процесс разработки 63
2.7.2. Обзор языка 64
2.7.3. Оценка 64
2.8. Все для всех: язык PL/I 65
2.8.1. Исторические предпосылки 65
2.8.2. Процесс разработки 66
2.8.3. Обзор языка 66
2.8.4. Оценка 67
2.9. Два ранних динамических языка: APL и SNOBOL 68
2.9.1. Истоки и характеристики языка APL 68
2.9.2. Происхождение и характеристики языка SNOBOL 68
2.10. Возникновение абстракции данных: язык SIMULA 67 69
2.10.1. Процесс разработки 69
2.10.2. Обзор языка 69
2.11. Ортогональная структура: язык ALGOL 68 70
2.11.1. Процесс разработки 70
2.11.2. Обзор языка 70
2.11.3. Оценка 70
2.12. Несколько важных наследников семейства языков ALGOL 71
2.12.1. Преднамеренная простота: язык Pascal 71
2.12.2. Машинно-независимый язык: С 73
2.12.3. Другие потомки языка ALGOL 75
2.13. Программирование, основанное на логике: язык Prolog 76
2.13.1. Процесс разработки 76
2.13.2. Обзор языка 76
2.13.3. Оценка 77
2.14. Величайший проект в истории: язык Ada 77
2.14.1. Историческая ретроспектива 77
2.14.2. Процесс разработки 77
2.14.3. Обзор языка 78
2.14.4. Оценка 79
2.14.5. Язык Ada 95 80
2.15. Объектно-ориентированное программирование: язык Smalltalk 80
2.15.1. Процесс разработки 81
2.15.2. Обзор языка 81
2.15.3. Оценка 82
2.16. Объединение императивных и объектно-ориентированных свойств: язык C++ 83
2.16.1. Процесс разработки 83
2.16.2. Обзор языка 84
2.16.3. Оценка 84
2.16.4. Родственный язык: Eiffel 84
2.17. Программирование в World Wide Web: язык Java 85
2.17.1. Процесс разработки 85
2.17.2. Обзор языка 85
2.17.3. Оценка 86
3. ОПИСАНИЕ СИНТАКСИСА И СЕМАНТИКИ 90
3.1. Предисловие 91
3.2. Общая задача описания синтаксиса 91
3.2.1. Устройства распознавания языков 92
3.2.2. Генераторы языков 92
3.3. Формальные методы описания синтаксиса 93
3.3.1. Форма Бэкуса-Наура и контекстно-свободные грамматики 93
3.3.2. Расширенная форма БНФ 101
3.3.3. Синтаксические графы 102
3.3.4. Грамматики и устройства распознавания языков 103
3.4. Рекурсивный нисходящий синтаксический анализ 103
3.5. Атрибутивные грамматики 105
3.5.1. Статическая семантика 105
3.5.2. Основные понятия 105
3.5.3. Определение атрибутивных грамматик 105
3.5.4. Внутренние атрибуты 106
3.5.5. Примеры атрибутивных грамматик 106
3.5.6. Вычисление значений атрибутов 108
3.5.7. Оценка 109
3.6. Описание смысла программ: динамическая семантика 109
3.6.1. Операционная семантика 109
3.6.2. Аксиоматическая семантика 111
3.6.3. Денотационная семантика 118
4. ИМЕНА, СВЯЗЫВАНИЕ, ПРОВЕРКА ТИПОВ И ОБЛАСТИ ВИДИМОСТИ 125
4.1. Предисловие 127
4.2. Имена 127
4.2.1. Вопросы структуры 127
4.2.2. Виды имен 127
4.2.3. Специальные слова 128
4.3. Переменные 129
4.3.1. Имя 129
4.3.2. Адрес 129
4.3.3. Тип 130
4.3.4. Значение 130
4.4. Концепция связывания 131
4.4.1. Связывание атрибутов с переменными 131
4.4.2. Связывание типов 131
4.4.3. Связывание переменных с ячейками памяти и время их жизни 134
4.5. Проверка типов 136
4.6. Строгая типизация 137
4.7. Совместимость типов 138
4.8. Область видимости 140
4.8.1. Статическая область видимости 140
4.8.2. Блоки 141
4.8.3. Оценка статического обзора данных 142
4.8.4. Динамические области видимости 144
4.8.5. Оценка динамического обзора данных 145
4.9. Область видимости переменных и время их жизни 146
4.10. Среды ссылок 146
4.11. Именованные константы 148
4.12. Инициализация переменных 149
5. ТИПЫ ДАННЫХ 155
5.1. Введение 156
5.2. Элементарные типы данных 158
5.2.1. Числовые типы 158
5.2.2. Булевские типы 159
5.2.3. Символьные типы 160
5.3. Символьные строки 160
5.3.1. Вопросы разработки 160
5.3.2. Строки и действия над ними 160
5.3.3. Варианты длины строк 162
5.3.4. Оценка 162
5.3.5. Реализация символьных строк 163
5.4. Порядковые типы, определяемые пользователем 163
5.4.1. Перечислимые типы 164
5.4.2. Ограниченные типы 165
5.4.3. Реализация порядковых типов, определяемых пользователем 166
5.5. Массивы 166
5.5.1. Вопросы разработки 167
5.5.2. Массивы и индексы 167
5.5.3. Связывания индексов и категории массивов 168
5.5.4. Количество индексов массива 170
5.5.5. Инициализация массива 170
5.5.6. Операции над массивами 171
5.5.7. Сечения 172
5.5.8. Оценка 173
5.5.9. Реализация типов массивов 173
5.6. Ассоциативные массивы 176
5.6.1. Структура и операции 176
5.6.2. Реализация ассоциативных массивов 177
5.7. Записи 177
5.7.1. Описания записей 178
5.7.2. Ссылки на поля записи 178
5.7.3. Операции над записями 179
5.7.4. Оценка 180
5.7.5. Реализация записей 180
5.8. Объединения 181
5.8.1. Вопросы разработки 181
5.8.2. Свободные объединения 181
5.8.3. Размеченные объединения языка ALGOL 68 181
5.8.4. Типы объединения в языке Pascal 182
5.8.5. Объединения в языке Ada 184
5.8.6. Оценка 185
5.8.7. Реализация объединений 185
5.9. Множества 185
5.9.1. Множества в языках Pascal и Modula-2 186
5.9.2. Оценка 187
5.9.3. Реализация множественных типов данных 187
5.10. Указатели 187
5.10.1. Вопросы разработки 188
5.10.2. Операции над указателями 188
5.10.3. Проблемы, возникающие при использовании указателей 189
5.10.4. Указатели в языке Pascal 190
5.10.5. Указатели в языке Ada 190
5.10.6. Указатели в языках C и C++ 191
5.10.7. Указатели в языке FORTRAN 90 192
5.10.8. Ссылки 192
5.10.9. Оценка 193
5.10.10. Реализация ссылок и указателей 194
6. ВЫРАЖЕНИЯ И ОПЕРАТОРЫ ПРИСВАИВАНИЯ 202
6.1. Вступление 204
6.2. Арифметические выражения 204
6.2.1. Порядок вычисления операторов 205
6.2.2. Порядок вычисления операндов 208
6.3. Перегруженные операторы 210
6.4. Преобразования типов 211
6.4.1. Приведение типов в выражениях 212
6.4.2. Явное преобразование типов 213
6.4.3. Ошибки в выражениях 213
6.5. Выражения отношений и булевские выражения 213
6.5.1. Выражения отношения 214
6.5.2. Булевские выражения 214
6.6. Сокращенное вычисление 215
6.7. Операторы присваивания 216
6.7.1. Простые присваивания 216
6.7.2. Множественные целевые объекты 217
6.7.3. Условные целевые объекты 217
6.7.4. Составные операторы присваивания 217
6.7.5. Унарные операторы присваивания 218
6.7.6. Присваивание как выражение 218
6.8. Смешанные присваивания 219
7. СТРУКТУРЫ УПРАВЛЕНИЯ НА УРОВНЕ ОПЕРАТОРОВ 223
7.1. Введение 225
7.2. Составные операторы 225
7.3. Операторы ветвления 226
7.3.1. Двухвариантные операторы ветвления 226
7.3.2. Конструкции многовариантного ветвления 230
7.4. Операторы цикла 234
7.4.1. Циклы со счетчиком 235
7.4.2. Логически управляемые циклы 240
7.4.3. Циклы с механизмами управления, размещенными пользователем 242
7.4.4. Циклы, основанные на структурах данных 243
7.5. Безусловный переход 244
7.5.1. Проблемы безусловного перехода 244
7.5.2. Виды меток 245
7.5.3. Ограничения переходов 245
7.6. Защищенные команды 246
7.7. Выводы 249
8. ПОДПРОГРАММЫ 253
8.1. Введение 254
8.2. Основы подпрограмм 255
8.2.1. Общие свойства подпрограмм 255
8.2.2. Основные определения 255
8.2.3. Параметры 256
8.2.4. Процедуры и функции 258
8.3. Вопросы разработки подпрограмм 258
8.4. Среды локальных ссылок 259
8.5. Методы передачи параметров 260
8.5.1. Семантические модели передачи параметров 260
8.5.2. Модели реализации передачи параметров 261
8.5.3. Методы передачи параметров в основных языках программирования 265
8.5.4. Проверка типов параметров 266
8.5.5. Методы реализации передачи параметров 267
8.5.6. Многомерные массивы в качестве параметров 269
8.5.7. Вопросы разработки 271
8.5.8. Примеры передачи параметров 271
8.6. Параметры, являющиеся именами подпрограмм 274
8.7. Перегруженные подпрограммы 276
8.8. Настраиваемые подпрограммы 277
8.8.1. Настраиваемые подпрограммы в языке Ada 277
8.8.2. Настраиваемые подпрограммы в языке C++ 278
8.9. Раздельная и независимая компиляция 280
8.10. Вопросы разработки функций 281
8.10.1. Побочные эффекты функций 281
8.10.2. Типы возвращаемых значений 281
8.11. Доступ к нелокальным средам 281
8.11.1. Блоки COMMON языка FORTRAN 282
8.11.2. Внешние объявления и модули 283
8.12. Перегруженные операторы, определяемые пользователем 284
8.13. Сопрограммы 284
9. РЕАЛИЗАЦИЯ ПОДПРОГРАММ 289
9.1. Общая семантика вызовов и возвратов 290
9.2. Реализация подпрограмм на языке FORTRAN 77 290
9.3. Реализация подпрограмм на языках, подобных языку ALGOL 292
9.3.1. Более сложные записи активации 293
9.3.2. Пример без рекурсии и нелокальных ссылок 294
9.3.3. Рекурсия 296
9.3.4. Механизмы реализации нелокальных ссылок 299
9.4. Блоки 307
9.5. Реализация методов динамического обзора данных 308
9.5.1. Глубокий доступ 309
9.5.2. Теневой доступ 310
9.6. Реализация параметров, являющихся именами подпрограмм 311
9.6.1. Статические цепочки 311
9.6.2. Индикаторы 312
9.6.3. Ошибочное повторное обращение к среде ссылок 312
10. АБСТРАКТНЫЕ ТИПЫ ДАННЫХ 317
10.1. Понятие абстракции 318
10.2. Инкапсуляция 319
10.3. Введение в абстракцию данных 319
10.3.1. Число с плавающей точкой как абстрактный тип данных 320
10.3.2. Абстрактные типы данных, определяемые пользователем 320
10.3.3. Пример 321
10.4. Вопросы разработки типов 321
10.5. Примеры абстракции данных в разных языках 322
10.5.1. Классы в языке SIMULA 67 322
10.5.2. Абстрактные типы данных в языке Ada 323
10.5.3. Абстрактные типы данных в языке C++ 326
10.6. Параметризованные абстрактные типы данных 329
10.6.1. Язык Ada 330
10.6.2. Язык C++ 330
11. ПОДДЕРЖКА ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ 334
11.1. Введение 335
11.2. Объектно-ориентированное программирование 336
11.2.1. Введение 336
11.2.2. Наследование 336
11.2.3. Полиморфизм и динамическое связывание 338
11.2.4. Вычисления в объектно-ориентированных языках 339
11.3. Вопросы разработки объектно-ориентированных языков 339
11.3.1. Исключительность объектов 339
11.3.2. Являются ли подклассы подтипами? 339
11.3.3. Реализация и наследование интерфейса 340
11.3.4. Проверка типов и полиморфизм 340
11.3.5. Одиночное и множественное наследование 341
11.3.6. Размещение в памяти и удаление из памяти объектов 342
11.3.7. Динамическое и статическое связывание 342
11.4. Обзор языка Smalltalk 342
11.4.1. Общие характеристики 342
11.4.2. Среда языка Smalltalk 343
11.5. Введение в язык Smalltalk 343
11.5.1. Выражения 343
11.5.2. Методы 345
11.5.3. Операторы присваивания 346
11.5.4. Блоки и управляющие структуры 347
11.5.5. Классы 349
11.5.6. Дополнительные сведения о методах 350
11.6. Примеры программ на языке Smalltalk 351
11.6.1. Простой обработчик таблиц 351
11.6.2. Графика в LOGO 353
11.7. Главные особенности языка Smalltalk 356
11.7.1. Проверка типов и полиморфизм 356
11.7.2. Наследование 356
11.8. Оценка языка Smalltalk 357
11.9. Поддержка объектно-ориентированного программирования в языке C++ 357
11.9.1. Общие свойства 357
11.9.2. Наследование 358
11.9.3. Динамическое связывание 361
11.9.4. Оценка 362
11.10. Поддержка объектно-ориентированного программирования в языке Java 363
11.10.1. Общие свойства 363
11.10.2. Наследование 363
11.10.3. Динамическое связывание 364
11.10.4. Инкапсуляция 364
11.10.5. Оценка 365
11.11. Поддержка объектно-ориентированного программирования в языке Ada 95 365
11.11.1. Общие свойства 365
11.11.2. Наследование 365
11.11.3. Динамическое связывание 366
11.11.4. Оценка 367
11.12. Поддержка объектно-ориентированного программирования в языке Eiffel 367
11.12.1. Общие свойства 368
11.12.2. Наследование 368
11.12.3. Динамическое связывание 369
11.12.4. Оценка 369
11.13. Реализация объектно-ориентированных конструкций 369
11.13.1. Хранение данных экземпляра 370
11.13.2. Динамическое связывание сообщений с методами 370
12. ПАРАЛЛЕЛЬНОСТЬ 374
12.1. Введение 376
12.1.1. Многопроцессорные архитектуры 376
12.1.2. Разновидности параллельности 377
12.1.3. Почему нужно изучать параллельность 377
12.2. Введение в параллельность на уровне подпрограмм 378
12.2.1. Основные понятия 378
12.2.2. Разработка языков для поддержки параллельности 380
12.2.3. Вопросы разработки языков программирования 380
12.3. Семафоры 381
12.3.1. Введение 381
12.3.2. Синхронизация взаимодействия 381
12.3.3. Синхронизация конкуренции 383
12.3.4. Оценка 384
12.4. Мониторы 384
12.4.1. Введение 384
12.4.2. Синхронизация взаимодействия 385
12.4.3. Синхронизация конкуренции 385
12.4.4. Оценка 387
12.5. Передача сообщений 387
12.5.1. Введение 388
12.5.2. Концепция синхронной передачи сообщений 388
12.5.3. Модель передачи сообщения в языке Ada 95 388
12.5.4. Синхронизация взаимодействия 392
12.5.5. Синхронизация крнкуренции 392
12.5.6. Завершение задачи 394
12.5.7. Приоритеты 394
12.5.8. Бинарные семафоры 394
12.5.9. Оценка 395
12.6. Параллельность в языке Ada 95 395
12.6.1. Защищенные объекты 395
12.6.2. Асинхронные сообщения 396
12.7. Потоки языка Java 397
12.7.1. Класс Thread 397
12.7.2. Приоритеты 398
12.7.3. Синхронизация взаимодействия 398
12.7.4. Синхронизация конкуренции 399
12.7.5. Оценка 401
12.8. Параллельность на уровне операторов 401
12.8.1. Язык High-Performance FORTRAN 401
13. ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ 405
13.1. Введение в обработку исключительных ситуаций 406
13.1.1. Основные понятия 407
13.1.2. Вопросы разработки 408
13.1.3. Исторический обзор 410
13.2. Обработка исключительных ситуаций в языке PL/1 410
13.2.1. Обработчики исключительных ситуаций 410
13.2.2. Связывание исключительных ситуаций с обработчиками 411
13.2.3. Продолжение 411
13.2.4. Другие проектные решения 411
13.2.5. Пример 412
13.2.6. Оценка 413
13.3. Обработка исключительных ситуаций в языке Ada 414
13.3.1. Обработчики исключительных ситуаций 414
13.3.2. Связывание исключительных ситуаций с обработчиками 414
13.3.3. Продолжение 415
13.3.4. Другие проектные решения 416
13.3.5. Пример 417
13.3.6. Оценка 418
13.4. Обработка исключительных ситуаций в языке C++ 418
13.4.1. Обработчики исключительных ситуаций 418
13.4.2. Связывание исключительных ситуаций с обработчиками 419
13.4.3. Продолжение выполнения программы 419
13.4.4. Другие проектные решения 420
13.4.5. Пример 420
13.4.6. Оценка 421
13.5. Обработка исключительных ситуаций в языке Java 421
13.5.1. Классы исключительных ситуаций 421
13.5.2. Обработчики исключительных ситуаций 422
13.4.3. Связывание исключительных ситуаций с обработчиками 422
13.4.4. Продолжение выполнения программы 423
13.4.5. Другие проектные решения 423
13.4.6. Пример 424
13.4.7. Оператор finally 425
13.4.8. Оценка 426
14. ФУНКЦИОНАЛЬНЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ 430
14.1. Введение 432
14.2. Математические функции 432
14.2.1. Простые функции 433
14.2.2. Функциональные формы 433
14.3. Основы функциональных языков программирования 434
14.4. Первый язык функционального программирования - LISP 434
14.4.1. Типы и структуры данных 435
14.4.2. Первый интерпретатор языка LISP 436
14.5. Введение в язык Scheme 437
14.5.1. Происхождение языка Scheme 437
14.5.2. Элементарные функции 437
14.5.3. Функции для построения функций 440
14.5.4. Поток управления 442
14.5.5. Пример функции на языке Scheme 443
14.5.6. Функциональные формы 446
14.5.7. Функции для создания кода 446
14.5.8. Императивные свойства языка Scheme 447
14.6. Язык COMMON LISP 448
14.7. Язык ML 449
14.8. Язык Haskell 450
14.9. Применение функциональных языков 453
14.10. Сравнение функциональных и императивных языков 453
15. ЯЗЫКИ ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 457
15.1. Введение 458
15.2. Краткое введение в исчисление предикатов 459
15.2.1. Высказывания 459
15.2.2. Дизъюнктивные формы 460
15.3. Исчисление предикатов и доказательство теорем 461
15.4. Обзор логического программирования 463
15.5. Происхождение языка Prolog 464
15.6. Основные элементы языка Prolog 464
15.6.1. Термы 464
15.6.2. Факты 465
15.6.3. Правила 465
15.6.4. Цель 466
15.6.5. Процесс логического вывода в языке Prolog 466
15.6.6. Простая арифметика 468
15.6.7. Списковые структуры 471
15.7. Недостатки языка Prolog 474
15.7.1. Управление порядком выполнения резолюции 474
15.7.2. Предположение о закрытом мире 476
15.7.3. Проблема логического отрицания 476
15.7.4. Внутренние ограничения 478
15.8. Применение логического программирования 478
15.8.1. Системы управления реляционными базами данных 478
15.8.2. Экспертные системы 479
15.8.3. Системы обработки естественных языков 479
15.8.4. Образование 480
15.9. Выводы 480
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 491
Криптография на Си и С++ в действии. Учебное пособие.
Несмотря на то, что настоящее издание содержит математическую теорию новейших криптографических
алгоритмов, книга в большей степени рассчитана на программистов-практиков. Здесь
Вы найдете описание особенностей эффективной реализации криптографических алгоритмов
на языках Си и С++, а также большое количество хорошо документированных исходных
кодов, которые записаны на компакт-диск, прилагаемый к книге. Купите книгу, и Вы
легко сможете снабдить свои собственные программные разработки сильной криптографической
защитой.
Содержание.
ЧАСТЬ I. Арифметика и теория чисел на С.
Глава 1. Введение.
Глава 2. Числовые форматы: представление большинства чисел в языке С.
Глава 3. Семантика интерфейса.
Глава 4. Основные операции.
Глава 5. Модульная арифметика: вычисление в классах вычетов.
Глава 6. Все дороги ведут к... модульному возведению в степень.
Глава 7. Поразрядные и логические функции.
Глава 8. Операции ввода, вывода, присваивания и преобразования.
Глава 9. Динамические регистры.
Глава 10. Основные теоретико-числовые функции.
Глава 11. Большие случайные числа.
Глава 12. Стратегия тестирования LINT.
Часть II. КЛАСС LINT: АРИФМЕТИКА НА С++
Глава 13. Пусть С++ облегчит Вашу жизнь.
Глава 14. Открытый интерфейс LINT: члены и друзья класса.
Глава 15. Обработка ошибок.
Глава 16. Практический пример: криптосистема RSA.
Глава 17. Сделайте это сами: протестируйте LINT.
Глава 18. Направления дальнейшего исследования.
Глава 19. Rijndael: наследник стандарташифрования данных.
ЧАСТЬ III. ПРИЛОЖЕНИЯ
Приложение А. Каталог функций С.
Приложение В. Каталог функций С++.
Приложение С. Макросы.
Приложение D. Время вычислений.
Приложение Е. Условне обозначения.
Приложение F. Арифметические и теоретико-числовые пакеты.
Литература.
Об авторе.
Компилятор языков C, C++, Objective C gcc 2.7 (часть 1)
Руководство пользователя компилятора gcc v2.7
Компиляция C, C++ или Objective C
Командные Опции GNU CC
Установка GNU CC
Расширения Семейства Языка C
Жемчужины программирования. 2-е издание.
Эта книга написана для программистов. Хороший программист должен знать всё, что написано
до него, только тогда он будет писать хорошие программы. Главы этой книги посвящены
наиболее привлекательному аспекту профессии программиста: жемчужинам программирования,
рождающимся за пределами работы, в области фантазии и творчества. В них рассматриваются:
постановка задач; теория алгоритмов; структуры данных; вопросы повышения эффективности
кода; оптимизация кода по скорости выполнения; реализация алгоритмов на Си; деревья,
списки, очереди, кучи; разбор текста; а также верификация и тестирование программ
и многое другое...
Содержание
Предисловие
Часть 1. Предварительные сведения.
Глава 1. Как расколоть орешек.
Глава 2. Ага! Алгоритмы.
Глава 3. Программы и структуры данных
Глава 4. Как писать правильные программы.
Глава 5. Немного программирования.
Часть 2. Производительность
Глава 6. Производительность в перспективе.
Глава 7. Предварительные оценки.
Глава 8. Метода разработки алгоритмов.
Глава 9. Оптимизация программ.
Шлава 10. Экономия памяти.
Часть 3. Програмный продукт.
Глава 11. Сортировка.
Глава 12. Задача о выборке.
Глава 13. Поиск.
Глава 14. Кучи.
Глава 15. Жемчужная строка.
Компьютерные и технические термины
Всегда необходимо знать терминологию языка, но часто тот или иной термин теряется
в описаниях, остайтся непонятным. Данный ресурс поможет Вам разобраться. Удобство
поиска (алфавитный указатель.)
Искусство программирования, том 1. Основные алгоритмы, 3-е изд.
Первый том серии книг Искусство программирования начинается с описания основных понятий
и методов программирования. Затем автор переходит к рассмотрению информационных структур
- представлению информации внутри компьютера, структурных связей между элементами
данных и способам эффективной работы с ними. Для методов имитации, символьных вычислений,
числовых методов, методов разработки программного обеспечения даны примеры элементарных
приложений. По сравнению с предыдущим изданием добавлены десятки простых, но в то
же время очень важных алгоритмов. В соответствии с современными направлениями исследований
был существенно переработан раздел математического введения.
ОГЛАВЛЕНИЕ
ГЛАВА 1. ОСНОВНЫЕ ПОНЯТИЯ ................................................ 27
1.1. АЛГОРИТМЫ ....................................................... 27
1.2. МАТЕМАТИЧЕСКОЕ ВВЕДЕНИЕ ......................................... 37
1.2.1. Математическая индукция ................................... 38
1.2.2. Числа, степени и логарифмы ................................ 49
1.2.3. Суммы и произведения ...................................... 56
1.2.4. Целочисленные функции и элементарная теория чисел ......... 68
1.2.5. Перестановки и факториалы ................................. 75
1.2.6. Биномиальные коэффициенты ................................. 82
1.2.7. Гармонические числа ....................................... 105
1.2.8. Числа Фибоначчи ........................................... 109
1.2.9. Производящие функции ...................................... 118
1.2.10. Анализ алгоритма ......................................... 127
*1.2.11. Асимптотические представления ........................... 138
*1.2.11.1. Символ О .......................................... 138
*1.2.11.2. Формула суммирования Эйлера ....................... 143
*1.2.11.3. Применение асимптотических формул ................. 148
1.3. MIX ............................................................. 156
1.3.1. Описание MIX .............................................. 156
1.3.2. Язык ассемблера компьютера MIX ............................ 178
1.3.3. Применение к перестановкам ................................ 198
1.4. НЕКОТОРЫЕ ФУНДАМЕНТАЛЬНЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ ............... 221
1.4.1. Подпрограммы ............................................... 221
1.4.2. Сопрограммы ................................................ 229
1.4.3. Программы-интерпретаторы ................................... 237
1.4.3.1. Имитатор MIX ......................................... 239
*1.4.3.2. Программы трассировки ............................... 248
1.4.4. Ввод и вывод ............................................... 251
1.4.5. История и библиография ..................................... 266
ГЛАВА 2.
ИНФОРМАЦИОННЫЕ СТРУКТУРЫ ........................................ 271
2.1. ВВЕДЕНИЕ ..................................................... 271
2.2. ЛИНЕЙНЫЕ СПИСКИ .............................................. 277
2.2.1. Стеки, очереди и деки .................................. 277
2.2.2. Последовательное распределение ......................... 283
2.2.3. Связанное распределение ................................ 295
2.2.4. Циклические списки ..................................... 315
2.2.5. Дважды связанные списки ................................ 322
2.2.6. Массивы и ортогональные списки ......................... 341
2.3. ДЕРЕВЬЯ ...................................................... 352
2.3.1. Обход бинарных деревьев ................................ 362
2.3.2. Представление деревьев в виде бинарных деревьев ........ 380
2.3.3. Другие представления деревьев .......................... 395
2.3.4. Основные математические свойства деревьев .............. 410
2.3.4.1. Свободные деревья ................................ 410
2.3.4.2. Ориентированные деревья .......................... 420
*2.3.4.3. Лемма о бесконечном дереве ...................... 431
*2.3.4.4. Перечисление деревьев ........................... 435
2.3.4.5. Длина пути ....................................... 449
*2.3.4.6. История и библиография .......................... 456
2.3.5. Списки и "сборка мусора" ................................ 459
2.4. МНОГОСВЯЗНЫЕ СТРУКТУРЫ ......................................... 476
2.5. ДИНАМИЧЕСКОЕ ВЫДЕЛЕНИЕ ПАМЯТИ .................................. 488
2.6. ИСТОРИЯ И БИБЛИОГРАФИЯ ......................................... 512
ОТВЕТЫ К УПРАЖНЕНИЯМ ..................................................... 521
ПРИЛОЖЕНИЕ А.
ТАБЛИЦЫ ЗНАЧЕНИЙ НЕКОТОРЫХ КОНСТАНТ ........................ 683
A.I. Основные константы (десятичные) ..................................... 683
А.2. Основные константы (восьмеричные) ................................... 684
А.З. Значения гармонических чисел, чисел Бернулли и чисел Фибоначчи ...... 685
ПРИЛОЖЕНИЕ Б.
ОСНОВНЫЕ ОБОЗНАЧЕНИЯ ....................................... 687
ПРЕДМЕТНО-ИМЕННОЙ УКАЗАТЕЛЬ .............................................. 692
Разработка библиотек ANSI C и перенос пакета программ для операционной системы NIKOS
Автор: Толмачев Григорий Владиславович
Дипломная работа:
Цель работы – разработка библиотек стандарта ANSI C для операционной системы
NIKOS. Достигнутые результаты – созданы следующие библиотеки стандарта ANSI
C и с использованием этих библиотек перенесен на платформу ОС NIKOS редактор связей
FLTLINK32; компилятор ассемблера — Netwide Assembler.
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Copyright © 2003 «Инженерное образование» E-mail: techno@bmstu.ru | тел.: +7 (095) 263-68-63 |
|