Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОАиП.doc
Скачиваний:
16
Добавлен:
15.11.2018
Размер:
435.2 Кб
Скачать

Понятие стека

Стек — линейный список, в котором все добавления и удаления (и обычно всякий доступ) делаются в одном конце списка.

Говорят, что стек функционирует по принципу LIFO (Last In — First Out: "последним пришел — первым вышел"). Примером стековой организации является винтовочный магазин: последний вставленный в него патрон при стрельбе "выйдет" первым.

Важнейшие операции в стеке — включение (insertion) и исключение (deletion).

Для хранения стека в памяти отводится сплошная область. Если в процессе заполнения стека указатель, перемещаясь "вверх", выходит за границу первоначально отведенной области, то происходит переполнение стека (stack overflow).

Стеки находят широкое применение при организации памяти компьютеров.

Понятие очереди

Очередь — линейный список, в котором все добавления производятся на одном конце списка, а все удаления делаются на его другом конце.

Основные операции в очереди — включение и исключение элемента. Другие операции с очередью не определены. Говорят, что очередь функционирует по принципу FIFO (First In — First Out, т. е. "первым пришел — первым вышел"). Та сторона, с которой осуществляется добавление элементов, называется хвостом (или концом) очереди, другая — головой. Для индикации головы и хвоста организуется два указателя: указатель головы (head pointer) и указатель хвоста (tail pointer).

В программировании очереди применяются очень широко — например, при моделировании или диспетчеризации задач в ОС.

Для очереди выделяется конечная последовательность слотов, из которых в каждый текущий момент времени элементами очереди заняты лишь часть последовательных слотов.

Турбо Паскаль предоставляет в распоряжение программиста гибкое средство управления динамической памятью — так называемые указатели.

Указатель — это переменная, значением которой является адрес другой переменной или структуры данных. Как правило, в Турбо Паскале указатель связывается с некоторым типом данных. Такие указатели будем называть типизированными. Для объявления типизированного указателя используется значок ^, который помещается перед соответствующим типом, например:

var

P1 :^Integer;

р2 :^Real;

В Турбо Паскале можно объявлять указатель и не связывать его при этом с каким-либо конкретным типом данных. Для этого служит стандартный тип POINTER, например:

var

р: pointer;

Указатели такого рода будем называть нетипизированными.

Операции с указателями

Для указателей определены только операции присваивания и проверки на равенство и неравенство. В Паскале, в отличие от других языков, запрещаются любые арифметические операции с указателями, их ввод-вывод и сравнение на больше-меньше.

program my;

var

a : array [1..5, 1..5] of real;

i, j : byte;

s : real;

begin

s:=0;

for i:=1 to 5 do

for j:=1 to 5 do

begin

write('Введитечисло [',i,’,’,j,'] : ');

readln(a[i,j]);

if a[i,j]<0 then s:=s+a[i,j];

end;

writeln('s = ', s:0:2);

readln;

end.

25. Дайте определение файла в Паскале. Перечислите типы файлов. Приведите общие процедуры обработки файлов. Дайте определение текстового файла. Назовите процедуры для работы с текстовыми файлами.

Разработайте программу для создания текстового файла из 20 случайно сгенерированных чисел.

Файлы

Файл с точки зрения языка Паскаль - это структурированный тип данных, состоящий из последовательности компонентов в большинстве случаев одного типа и одной длины.

В зависимости от способа объявления в Турбо Паскале можно выделить 3 вида файлов:

• типизированные, которые задаются предложением File of «тип»;

• текстовые, которые задаются предложением Text;

• нетипизированные, которые задаются предложением File.