
- •1. Двоичная система счисления.
- •2. Восьмеричная система счисления.
- •3. Шестнадцатеричная система счисления.
- •4. Сложение и вычитание в 2, 8 и 16 c/c.
- •2. Вещественные числа (числа с плавающей запятой).
- •3. Логические данные.
- •2. Зарезервированные слова.
- •X a8 alpha Massiv z52d9 eps Res_52_a ___75
- •6. Метка.
- •2. Целые типы данных.
- •4. Вещественные типы.
- •1. Раздел описания меток.
- •2. Раздел описания констант.
- •3. Раздел описания типов.
- •4. Раздел описания переменных.
- •6. Раздел операторов.
- •7. Последовательность разделов.
- •1. Формульно-словесный способ.
- •2. Блок-схемный способ.
- •Ввод - вывод одномерного массива
- •2. Ввод массива из текстового файла.
- •3. Вывод одномерного массива на экран.
- •Примеры обработки одномерных массивов
- •1. Параметр цикла должен быть ординального типа.
- •2. Параметр должен быть описан в том же блоке, где находится сам оператор цикла.
- •5. В теле цикла параметр не должен изменяться.
- •6. Начальное и конечное значения параметра цикла вычисляются только один раз, до начала цикла.
- •7. При нормальном завершении цикла значение его параметра считается неопределенным.
- •Контроль ординальных переменных
- •Вставка элемента в упорядоченный массив
- •Удаление элементов из массива
- •«Школьный» алгоритм сортировки
- •Группировка массива методом прямой выборки
- •Группировка массива методом прямого обмена
- •Var c : array[1..10,1..15,1..8] of real.
- •1. Ввод элементов матрицы с клавиатуры.
- •2. Ввод матрицы из текстового файла.
- •3. Вывод матрицы на экран.
- •Тождественные и совместимые типы
- •Обработка в процедуре одномерных массивов с различными именами типов
- •Обработка в процедуре матриц с различными именами типов
- •Var s : string[V],
- •Процедуры и функции для обработки строк
- •Определение битовой структуры поля памяти
- •Процедуры и функции для файлов любого типа
- •Var p : pointer;
- •1. Формирование стека из текстового файла.
- •7. Определение значения и местоположения максимального элемента в стеке.
- •8. Удаление из стека максимального элемента.
- •9. Добавление элемента в упорядоченный стек.
- •2. Добавление нового элемента в очередь.
- •3. Удаление элемента из очереди.
- •6. Удаление произвольного элемента из очереди.
- •7. Добавление нового элемента в произвольное место очереди.
- •1. Формирование дека.
- •Var sin : integer;
- •Процедура заполнения FillChar
- •Процедура перемещения данных move
- •Управление экраном в текстовом режиме
- •Сохранение и восстановление экрана
- •Interface
- •Implementation
- •Процедуры управления текстовым режимом экрана
- •Intr(n:byte; Var Reg:Registers),
- •If KeyPressed then
- •Автоматическая оптимизация программ
- •1. Свертывание констант.
- •2. Слияние констант.
- •3. Вычисление по короткой схеме.
- •4. Удаление неиспользуемого кода.
- •If false then
- •5. Эффективная компоновка.
- •Оверлейная структура программы
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Использование сопроцессора
2. Добавление нового элемента в очередь.
Read(k);
New(Run); Run^.Inf:=k;
Run^.Next:=nil;
If L=nil then
L:=Run
Else
R^.Next:=Run;
R:=Run;
3. Удаление элемента из очереди.
Run:=L; L:=L^.Next;
Dispose(Run);
4. Просмотр и удаление очереди выполняются так же, как и для стека.
5.
Формирование циклической очереди
(рис.19).
Для получения такой очереди достаточно установить
R^.Next:= L .
Для входа в циклическую очередь можно использовать любой из указателей R или L.
6. Удаление произвольного элемента из очереди.
Предположим, что нам требуется удалить из очереди минимальный элемент. Тогда в частном случае может быть удален один из крайних или промежуточный элемент. При удалении крайних элементов должен быть обеспечен соответствующий перенос указателя L или указателя R. Как и в стеке, для удаления заданного элемента из очереди необходимо знать адрес предыдущего элемента.
Program DelMinElem;
Type PoinType = ^DynType;
DynType = record
Inf : integer;
Next : PoinType;
end;
Var L, { указатели левого и правого }
R, { концов очереди }
Run, { текущий указатель }
Pmin : PoinType; { указатель элемента, предшествующего }
{ минимальному элементу очереди }
InfMin : integer; { значение минимального элемента }
F : text;
Begin
Формирование очереди
If L<>nil then
Begin
InfMin:=L^.Inf; Pmin:=L;
Run:=L;
While Run^.Next<>nil do
Begin
If Run^.Next^.Inf<InfMin then
Begin
InfMin:=Run^.Next^.Inf; Pmin:=Run;
End;
Run:=Run^.Next;
End;
If InfMin=L^.Inf then { удаление первого элемента }
Begin { с переносом указателя L }
L:=L^.Next; Dispose(Pmin);
End
Else
Begin
If Pmin^.Next=R then { перенос R при удалении }
R:=Pmin; { последнего элемента }
Run:=Pmin^.Next; { удаление произвольного}
Pmin^.Next:=Pmin^.Next^.Next;{ элемента (в том }
Dispose(Run); { числе последнего) }
End;
End;
Печать очереди
End.
Если минимальным является первый или второй элементы очереди, то в обоих случаях Pmin = L. Поэтому для указания о том, является ли первый элемент минимальным, в программе производится проверка InfMin = L^.Inf.
7. Добавление нового элемента в произвольное место очереди.
Предположим, что элементы очереди упорядочены по убыванию; требуется добавить в очередь целочисленное значение b без нарушения ее упорядоченности.
Вполне очевидно, что в частном случае элемент b может быть добавлен слева, справа или в середину очереди.
Program InsNewElem;
Label 10;
Type PoinType = ^DynType;
DynType = record
Inf : integer;
Next : PoinType;
end;
Var L,R, { левый и правый указатели }
Run, { текущий указатель }
NewEl : PoinType; { указатель нового элемента }
b : integer; { значение нового элемента }
Cond : boolean;
Begin
Формирование очереди
Read(b);
New(NewEl); NewEl^.Inf:=b;
If L=nil then { очередь пустая }
Begin
L:=NewEl; R:=NewEl; NewEl^.Next:=nil;
End
Else
If b>=L^.Inf then { добавление слева }
Begin
NewEl^.Next:=L; L:=NewEl
End
Else
If b<=R^.Inf then { добавление справа }
Begin
NewEl^.Next:=nil; R^.Next:=NewEl; R:=NewEl
End
Else
Begin { добавление в середину }
Run:=L;
While Run^.Next<>nil do
Begin
If Run^.Next^.Inf<b then
Begin
NewEl^.Next:=Run^.Next; Run^.Next:=NewEl;
Goto 10
End;
Run:=Run^.Next;
End;
End;
10:
Печать очереди
End.
О Б Р А Б О Т К А Д Е К А
Дек
- это двунаправленный список, в котором
включение и исключение элементов
делаются на обоих концах списка (рис.20).