
- •Конспект лекций по курсу Программирование на языке высокого уровня.
- •Часть I. Структурное программирование
- •Автор: доцент Шустова л.И.
- •Часть II. Структуры данных 16
- •Часть III. Методы сортировки 97
- •Понятие системы программирования
- •Типы и назначение файлов
- •Директива#include
- •Директива #define
- •Директива условной генерации
- •Основы ввода/вывода
- •Вывод данных
- •Ввод данных
- •Определение и использование функций
- •Функция вычисления факториала числа.
- •Функция возведения вещественного числа в целую степень
- •Функция, меняющая местами значения двух параметров
- •Описание массива
- •Пример программы с использованием массива целых чисел
- •Абстрактные структуры данных
- •Определение
- •Базовые структуры данных
- •Очереди и стеки
- •Деревья
- •Внутренние структуры данных
- •Векторы
- •Отображение абстрактных структур данных на внутренние
- •Строка-вектор
- •1. Функция сцепления двух строк.
- •2. Функция поэлементного сравнения двух строк.
- •3. Функция разбиения строки.
- •4. Функция нахождения подстроки в строке.
- •Строка-список
- •1. Сцепление двух строк.
- •2. Поэлементное сравнение двух строк.
- •3. Разбиение строки на несколько частей.
- •4. Функция нахождения подстроки в строке.
- •Стек-вектор
- •Стек-список
- •Очереди
- •Очередь-вектор
- •Очередь-список
- •Деревья
- •Классификация таблиц
- •Способ работы с таблицей
- •Способ доступа к таблице
- •Просматриваемые таблицы
- •Просматриваемая таблица-вектор
- •Статическая просматриваемая таблица-вектор
- •Динамическая просматриваемая таблица-вектор
- •Просматриваемая таблица-список
- •Упорядоченные таблицы
- •Упорядоченная таблица-вектор
- •Динамическая упорядоченная таблица-вектор
- •Перемешанные таблицы
- •Открытое перемешивание
- •Перемешивание сцеплением
- •Деревья поиска
- •Бинарное дерево
- •Многоходовые деревья
- •Структура вершины в-дерева
- •Операция вставки
- •Удаление элемента
- •Перераспределение элементов
- •Сцепление вершин
- •Операция включения
- •Удаление элемента
- •Методы сортировки
- •Введение
- •Классификация методов внутренней сортировки
- •Быстрая сортировка
- •Распределительные сортировки
- •Сортировка поразрядным группированием
- •Сортировка вычислением адреса
Ввод данных
Для ввода данных с преобразованием испльзуется перегруженный оператор >>. Выражение извлечения из потока записывается следующим образом:
cin >> переменная_1 >> переменная_2 >> ...
переменная_1, переменная_2, ... определяют объекты программы (простые переменные, элементы массивов и др.), значения которых вводятся. Например:
int i; double d; char c;
cin >> i >> d >> c;
Потоковый ввод также является буферизованным; это означает, что данные извлекаются из специального буфера ввода. Заполнение буфера осуществляется только после нажатия клавиши “enter”; следовательно, в буфере ввода всегдаприсутствует символ новой строки, который относится кпробельнымсимволам (пробельные символы – это символы пробела, табуляции и новой строки).
Правила ввода:
Пропускаются (игнорируются) лидирующие пробельные символы (до первого не пробельного);
Извлекаются символы, соответствующие спецификации формата, до первого не соответствующего спецификации символа или первого пробельного символа;
Выполняется необходимое преобразование введенного значения;
Все невостребованные символы (в том числе и символы новой строки) остаются во входном потоке и могут быть извлечены при выполнении следующей операции ввода.
Например, пусть для приведенного выше примера ввода на клавиатуре нажимались следующие клавиши:
Тогда в результате ввода целой переменной iбудет присвоено значение12(во внутреннем, машинном представлении), вещественной переменнойd- значение2.8, а символьной переменнойc- ASCII-код буквыa; во входном потоке останутся символыgfи символ новой строки.
Для ввода одного любого (в том числе и пробельного) символа можно воспользоваться следующими специальными функциями:
cin.get(имя_переменной);
имя_переменной= cin.get();-
Ввод строки символов можно выполнить двумя способами, дающими разные результаты:
с помощью оператора >> :
char str[80];
cin >> str;
в этом случае действуют те же приведенные выше правила извлечения из потока; в результате будет выделен текст, не содержащий пробелов. Введенная строка будет завершены символом конца строки – нуль байтом (‘\0’).
Например, если с клавиатуры был введен следующий текст:
Тогда в массив strбудет записано:
а в буфере ввода останутся символы:
с помощью специальной функции:
cin.getline(куда,максимум_сколько);
в этом случае из буфера извлекаются все символы, пока не встретится символ новой строки (включая и сам символ; в результате буфер ввода станет пустым) или не будет извлечено указанное количество символов (тогда в буфере ввода останутся не извлеченные символы). Введенная строка также будет завершена символом конца строки.
Например:
char str[80];
cin.getline(str, 80);
Если с клавиатуры вводится все тот же текст, тогда в массив strбудет записано:
Буфер ввода останется пустым.
При вводе с клавиатуры можно эмулировать состояние “конец файла” нажатием клавиш Ctrl-z. В этом случае функции ввода возвращают специальное значение: обычно NULL(в случае b кодEOF; эти две именованные константы определены в файле-заголовке).
Правила вычисления выражений в С++. Преобразования типов.
Понятие и определение выражений в С++. Классификация операторов. Приоритеты и правило ассоциативности. Характеристика основных операторов языка. Особенности выполнения некоторых операторов языка (сдвига и отношения для unsigned данных, логических операторов-связок).
Предложения языка, их классификация. Правила записи и использования предложений.
Понятие предложений языка С++. Классификация предложений. Пустое и составное предложения, их синтаксис.
Вычислительные предложения, их синтаксис и назначение. Выражение вызова функций. Примеры.
Предложения цикла: классификация, назначение. Конструкции while, forиdo ... while.Синтаксис, правила выполнения. Примеры.
Условное предложение: синтаксис, правила выполнения. Примеры.
Переключатель: синтаксис, правила выполнения. Примеры.
Предложения разрыва – break, continue, return. Синтаксис, правила выполнения, примеры.
Функции: описание и определение функций, понятие прототипа функции. Вызов функции. Правила передачи в функцию аргументов разных типов. Рекурсивные функции.