
- •Псевдокод
- •Один из примеров псевдокода - школьный алгоритмический язык.
- •Блок-схема
- •Запись на псевдокоде
- •Вопросы для самоконтроля
- •Формулы бэкуса-наура
- •Перминов о.Н. Программирование на языке Паскаль
- •Синтаксические диаграммы
- •Алгоритмы сортировки
- •Сортировка с помощью прямого включения
- •Сортировка с помощью прямого выбора (линейная)
- •Сортировка с помощью прямого обмена (пузырьковая)
- •Быстрая сортировка (ч. Хоара, сортировка с помощью разделения)
- •Рекурсия
- •Параметры-процедуры и параметры-функции
- •Символьные типы
- •Строковые типы
- •Строковые типы в Borland Pascal
- •Строковые типы в Delphi
- •Множества
- •Тип "запись" (record)
- •Вариантная часть записи
- •Процедуры и функции для работы с файлами
- •Работа с текстовыми файлами*
- •Работа с типизированными и нетипизированными файлами
- •Типизированные файлы
- •Последовательный и прямой доступ к файлам
- •Нетипизированные (бестиповые) файлы
- •Класс tfilestream (факультатив, для зачета 1 семестра не требуется)
- •Работа с данными файла
- •Закрытие файла
Формулы бэкуса-наура
См.
http://uni-vologda.ac.ru/cs/syntax
Перминов о.Н. Программирование на языке Паскаль
Ставорский A. Turbo Pascal 7.0
Синтаксические диаграммы
ПРИМЕР. ОПИСАНИЕ ФОРМАТА ЧИСЛОВЫХ ЗНАЧЕНИЙ
-
Целые
Вещественные
1234
+5
-4321
-633
Шестнадцатеричная форма
$9
$FF
$FFFF
Недопустимый формат
1E+2
123.0
С фиксированной точкой
123.4
.09
-66.777
Экспоненциальный формат
1.2E+2
-1.4e-19
5E4
0.134E+31
ТЕМА. МАССИВЫ. АЛГОРИТМЫ СОРТИРОВКИ
Алгоритмы сортировки
Требования к алгоритмам сортировки одномерных массивов:
Экономичность по использованию доступной памяти: сортировка происходит в исходном массиве (без вспомогательного).
Экономичность по времени работы алгоритмов. Меры эффективности: a) число сравнений элементов (~ключей); b) число перестановок элементов. Эти меры являются функцями от числа сортируемых элементов (n). Для различных алгоритмов сортировки требуется от n2 (прямые алгоритмы) до n*log(n) сравнений элементов.
Несмотря на существенную разницу в оценках эффективности алгоритмов, программы, реализующие прямые методы, коротки и легко понимаемы, сами алгоритмы удобны для понимания характерных черт большинства сортировок. В усложненных методах выполняется большее число операций, поэтому для малых n прямые методы будут работать быстрее.
Методы сортировки можно разбить в соответствии с определяющими их принципами на следующие категории:
сортировки с помощью включения;
сортировки с помощью выбора;
сортировки с помощью обмена.
Более подробно см. 681.3 В52 Вирт Н. Алгоритмы и структуры данных
Сортировка с помощью прямого включения
Такой метод сортировки используется при игре в карты. Элементы массива делятся на "готовую" последовательность a1..ai-1 и исходную последовательность a1..an. При каждом шаге, начиная с i=2 и увеличивая i каждый раз на единицу, из исходной последовательности извлекается i-й элемент (x) и перекладывается в готовую последовательность в соответствующую позицию. Процесс перестановки i-го элемента может закончиться, если:
|
|
СОРТИРОВКА МАССИВА ПО ВОЗРАСТАНИЮ (вариант с дополнительным элементом-барьером)
Вариант исключает условие 2 из вложенного цикла. В начало массива добавляется элемент- барьер (sentinel) a0 со значением х. Для этого диапазон индекса в описании переменной a расширяется до 0..n).
PROCEDURE StraightInsertion;
VAR
i, j: integer;
x: integer;
BEGIN
FOR i:=2 TO n DO
x := a[i];
a[0]:= x; // дополнительный элемент-барьер
j:=i;
WHILE x<a[j-1] DO BEGIN
a[j]:=a[j-1];
j:=j-1
END;
a[j]:=x
END
END;
См. также 681.3 В52 Вирт Н. Алгоритмы и структуры данных. Сортировка Шелла.