
- •Конспект лекций по курсу Программирование на языке высокого уровня.
- •Часть I. Структурное программирование
- •Автор: доцент Шустова л.И.
- •Часть II. Структуры данных 16
- •Часть III. Методы сортировки 97
- •Понятие системы программирования
- •Типы и назначение файлов
- •Директива#include
- •Директива #define
- •Директива условной генерации
- •Основы ввода/вывода
- •Вывод данных
- •Ввод данных
- •Определение и использование функций
- •Функция вычисления факториала числа.
- •Функция возведения вещественного числа в целую степень
- •Функция, меняющая местами значения двух параметров
- •Описание массива
- •Пример программы с использованием массива целых чисел
- •Абстрактные структуры данных
- •Определение
- •Базовые структуры данных
- •Очереди и стеки
- •Деревья
- •Внутренние структуры данных
- •Векторы
- •Отображение абстрактных структур данных на внутренние
- •Строка-вектор
- •1. Функция сцепления двух строк.
- •2. Функция поэлементного сравнения двух строк.
- •3. Функция разбиения строки.
- •4. Функция нахождения подстроки в строке.
- •Строка-список
- •1. Сцепление двух строк.
- •2. Поэлементное сравнение двух строк.
- •3. Разбиение строки на несколько частей.
- •4. Функция нахождения подстроки в строке.
- •Стек-вектор
- •Стек-список
- •Очереди
- •Очередь-вектор
- •Очередь-список
- •Деревья
- •Классификация таблиц
- •Способ работы с таблицей
- •Способ доступа к таблице
- •Просматриваемые таблицы
- •Просматриваемая таблица-вектор
- •Статическая просматриваемая таблица-вектор
- •Динамическая просматриваемая таблица-вектор
- •Просматриваемая таблица-список
- •Упорядоченные таблицы
- •Упорядоченная таблица-вектор
- •Динамическая упорядоченная таблица-вектор
- •Перемешанные таблицы
- •Открытое перемешивание
- •Перемешивание сцеплением
- •Деревья поиска
- •Бинарное дерево
- •Многоходовые деревья
- •Структура вершины в-дерева
- •Операция вставки
- •Удаление элемента
- •Перераспределение элементов
- •Сцепление вершин
- •Операция включения
- •Удаление элемента
- •Методы сортировки
- •Введение
- •Классификация методов внутренней сортировки
- •Быстрая сортировка
- •Распределительные сортировки
- •Сортировка поразрядным группированием
- •Сортировка вычислением адреса
Конспект лекций по курсу Программирование на языке высокого уровня.
Часть I. Структурное программирование
Автор: доцент Шустова л.И.
Часть I. Основы языка Си++ 3
Понятие системы программирования 3
Типы и назначение файлов 3
Краткая характеристика языка С++ 5
Основные средства препроцессора языка С++ 5
Директива #include 6
Директива #define 6
Директива условной генерации 7
Структура С++ программы 7
Основы ввода/вывода 8
Вывод данных 9
Ввод данных 10
Правила вычисления выражений в С++. Преобразования типов. 11
Определение и использование функций 12
Описание массива 14
Многомерные массивы 15
Массивы символов 15
Понятие указателя в С. Адресная арифметика 15
Часть II. Структуры данных 16
Уровни представления информации 16
Абстрактные структуры данных 17
Определение 17
Базовые структуры данных 17
Внутренние структуры данных 20
Векторы 21
Списки 22
Сети 24
Отображение абстрактных структур данных на внутренние 25
Строки 25
Стеки 36
Очереди 39
Деревья 45
Таблицы 47
Классификация таблиц 47
Просматриваемые таблицы 51
Упорядоченные таблицы 60
Таблицы произвольного доступа 65
Перемешанные таблицы 66
Деревья поиска 75
Бинарное дерево 75
Многоходовые деревья 84
B-дерево 85
В+ дерево 92
Часть III. Методы сортировки 97
Введение 97
Классификация методов внутренней сортировки 98
Сравнительные сортировки 98
Обменная сортировка (погружением) 98
Сортировка вставками 98
Сортировка просеиванием 99
Сортировка Шелла 99
Быстрая сортировка 100
Распределительные сортировки 100
Сортировка поразрядным группированием 100
Сортировка вычислением адреса 100
Основы языка Си++
Понятие системы программирования
В настоящее время распространенным понятием является понятие системы программирования, а не просто языка программирования. Система программирования включает в себя соответствующий язык программирования вместе с компилятором, и еще целый ряд средств, облегчающих разработку, подготовку и решение задач: компоновщик, отладчики, стандартные библиотеки, и даже редакторы для подготовки исходного текста.
Любая задача, решаемая с использованием ЭВМ, проходит ряд очевидных этапов. Сначала текст программы записывается в файлы (один или несколько) с использованием соответствующих редакторов, возможно, являющихся частью системы программирования, как это имеет место в BorlandC++ илиVisualC++. В дальнейшем мы будем говорить о системе программирования C++, но с ориентацией на структурное программирование. Подготовленный файл (файлы) обрабатываются компилятором языка. Важно выделить в компиляторе два этапа обработки исходного текста: сначала текст обрабатываетсяпрепроцессоромязыка, который находит в тексте собственные директивы (директивы препроцессора) и сразу же выполняет их (препроцессор языка построен по принципу интерпретатора). В результате получается текст на исходном языке, не содержащий ни одной директивы препроцессора (“чистый” С++ текст), который непосредственно компилируется, в результате чего создаетсяобъектный модуль. Даже если исходный файл не содержит ни одной директивы препроцессора, препроцессор языка С++ будет работать.
Если исходная программа состоит из нескольких файлов, каждый файл компилируется независимо от других файлов; в результате получаем несколько файлов – объектных модулей. Полученные объектные модули поступают на вход компоновщика, который объединяет все эти файлы, а кроме того, еще и объектные модули из стандартной библиотеки, в единый исполняемый модуль, готовый к выполнению на ЭВМ.
На каждом этапе обработки (препроцессор, компилятор и компоновщик) могут быть обнаружены свои ошибки; некорректно использованные директивы препроцессора могут привести к синтаксическим ошибкам в С++ программе, которых, на первый взгляд, в программе нет. Если компиляция в целом закончена без ошибок, могут быть обнаружены ошибки в структуре программы (это не синтаксические ошибки!) на этапе компоновки.