- •Внутреннее представление данных
- •1) Представление чисел
- •2) Представление текстовых данных.
- •3) Представление мультимедийной информации
- •2. Основные этапы обработки программ пользователя.
- •Средства записи алгоритмов. Виды алгоритмов
- •4. Основные этапы решения задачи на компьютере.
- •Структура программы на языке Паскаль
- •6. Идентификаторы, числа, строки, выражения .
- •Операторы ввода/вывода данных
- •8. Числовые типы данных .
- •Полезные функции
- •Логические операции над битами
- •Символьный тип данных
- •10. Логический тип данных (Boolean) .
- •11.Перечисляемый и ограниченный типы.
- •Функция succ(X)
- •Функция pred(X)
- •Функция ord(X)
- •12. Раздел описания типов и констант . Типизированные константы.
- •Оператор присваивания, составной и условные операторы
- •Составной оператор
- •Оператор if-else
- •14. Операторы цикла.
- •Циклы включают в себя
- •Цикл for
- •Итерационные циклы Цикл while
- •Цикл repeat
- •16. Оператор выбора.
- •Массивы и переменные с индексами
- •18. Сортировка массивов.
- •Метод "пузырька"
- •Сортировка вставками
- •Строковые типы данных.
- •20. Приведение типов в Паскале.
- •Правила работы с типами данных
- •Пример задачи, где используется явное преобразование типов
- •21. Тип множество (Set).
- •23. Файловые типы данных
- •Классификация файлов в tp
- •24. Типизированные файлы. Создание и просмотр файлов.
- •25. Корректировка и дозапись компонент в типизированных файлах.
- •26. Текстовые файлы.
- •27. Корректировка и дозапись информации в текстовый файл.
- •28.Описание и вызов процедур в Паскале.
- •Параметры-значения, параметры-переменные
- •29. Описание и вызов функций в Паскале.
- •30.Область действия переменных при использовании подпрограмм.
- •31.Способы передачи параметров в подпрограммы.
- •32.Рекурсивное описание процедур и функций.
- •Существует два вида рекурсий:
- •33. Динамические типы данных. Простейшие действия с указателями.
- •34.Создание и обработка динамических списков
- •35. Создание и обработка стеков.
- •36.Создание и обработка очередей.
- •37. Создание и использование таблиц.
- •40.Буферизированный и небуферизированный ввод данных.
35. Создание и обработка стеков.
Стек – такая структура динамических данных, которая состоит из переменного числа компонент одинакового типа. Компоненты извлекаются из стека таким образом, что первой выбирается та компонента, которая была помещена последней. Извлеченная компонента в стеке не сохраняется.
Если помещать в стек последовательность 1, 2, 3, то получится следующий вид:
Опишем стек, в который можно помещать цепочку динамических переменных:
top – указатель на конец стека; p – указатель на обслуживаемую в текущий момент область памяти.
type
pitem = ^item;
item = record
data: integer;
prev: pitem
end;
var
top, p: pitem;
Процедура добавления элемента в стек:
procedure add(x:integer, var top: pitem);
begin
p:=nil;
new(p);
p^.data := x;
p^.prev := top;
top := p
end;
Процедура add принимает в качестве фактического параметра число x, которое будет записано в содержательную часть элемента стека.
Выделяется память под указатель p, в содержательную часть которого записывается x, а в указатель – адрес, хранимый в top. Переменная top, в свою очередь, начинает ссылаться на выделенную под p область памяти.
Процедура удаления элемента из стека (удаляется с последнего):
procedure del (var top:pitem);
begin
if top<>nil then begin
p := top^.prev;
dispose(top);
top := p
end;
end;
В процедуре del в переменную p записывается адрес предпоследнего элемента стека. Последний элемент, ссылка на который хранится в top, удаляется. Далее top присваивается адрес элемента, на участок памяти, который указан p. К этому времени он стал уже не предпоследним, а последним элементом.
Удаление не происходит, если стек пустой (top указывает на nil).
Процедура вывода стека на экран:
procedure Print (top:pitem);
begin
writeln('Содержимое стека: ');
p := top;
while p <> nil do begin
write(p^.data, ' ');
p := p^.prev;
end;
writeln;
end;
Сначала p указывает на последний элемент. Выражения цикла while будут выполняться до тех пор, пока в p не запишется nil; это будет означать то, что перед этим был обработан первый элемент стека (который обрабатывается последним). В цикле сначала на экран выводится содержательная часть динамической переменной, на которую указывает p. Затем значение p меняется: переменная начинает указывать на следующий элемент.
36.Создание и обработка очередей.
Очередь– такая структура данных, при которой изъятие компонент происходит из начала цепочки, а запись – в конец цепочки.
В этом случае вводят два указателя: один на начало очереди, другой – на ее конец.
Описание типа для очереди:
type ptr=^rec;
rec=record
str:string;
next:ptr;
end;
var r,q:ptr; {указатели на начало и конец очереди}
Добавление элемента в очередь:
Procedure Add(var r,q:ptr);
var
cur : ptr;{текущий указатель}
x:какой-то тип;спокойно
begin
Write ('Dobavit element: ');
Readln (x);
Cur:=nil;
New (cur);
cur^.str:=x;
cur^.next:=Nil;
If r = nil then r:=cur
else q^.next:=cur;
q:=cur;
end;
Удаление первого элемента из очереди:
Procedure Delete (var r:ptr);
Var cur:ptr;
begin
if r=nil then writeln ('Ochered not create')
else
if Sizeoflist (r)=1 then
begin
cur:=r;
dispose (cur);
r:=nil;
end
else
begin
cur:=r;
r:=cur^.next;
dispose (cur);
end;
end.