|
|
+
Пример: Файл F1 был создан заранее и наполнен данными. Читать этот файл, удвоив каждый его элемент через пробел
Program PR1F
VAR F1; F2; text;
X : char;
BEGIN
ASSING (F1, F11. text)
RESET (F1)
ASSING (F2; “)
REWRITE (F2)
WHILE not EOF (F1) do begin
READ (F1, x)
WRITE (F2, x + “|___|” + x)
END;
WRITELN
CLOSE (F1); CLOSE (F2) END
Прочитать файл Т заранее созданный, и определить сколько раз в нем встречается буква А
Program PR2F
VAR F1: text;
X : char; k : byte
BEGIN
ASSING (F1, T. PAS “)
RESET (F1)
K: = 0
WHILE not EOF (F1) do begin
READ (F1, x)
If (x = “a”) or (x = “A”) then K : = k + 1
END
WRITELN ( ‘букв А= ’ , к);
ДИНАМИЧЕСКИЕ СТРУКТУРЫ. Массивы записи и мн-ва назыв. базисными структурами и в процессе выполнения программы они остаются структурно неизменными. Часто в программах треб. более сложные стр-ры к-ые допускают наращивание, сокращение или замену связей между компонентами в процессе выполнения программы. Создание динамичных стр-р сводится к генерации основных компонентов назыв-х узлами и установлению связи между ними. Связи опр. переменными назыв. указателями. К динамичным стр-ам относятся списки, очереди стеки, деревья, ориентированные графы. Указатель – это переменная в программе, значениями к-ой явл-ся адреса. Указатели представляют собой переменную целого типа, к-ая интерпритируется как адрес байта памяти, содер. некоторый элемент данных. Этими элементами может быть константа, переменная адрес др-ой переменной. Сегмент – это участок памяти длиной 64 кб к-ый начин. с физич. адреса со значением кратным 16. Смещение – это число к-ое определяет номер байта в сегменте к-ому необход. обатиться. СИТУАЦИОННОЕ ПРИМЕНИЕ ДИНАМИЧЕСКИХ СТР-Р. 1)Программа должна работать с большим объемом данных общий объем к-ых превышает 64 кб. Использование указателей позволяет решить эту проблему т.к. программа сможет выделить объем памяти необходимый для нормальной программы поддерживая при этом указатель в виде ссылки на адрес по к-ому хранится. Динамически распределяемая область памяти – это область оперативной памяти компьютера предоставляемая программе из к-ой вычитается память занимаемая телом программы, сегментом даных и стеков. Размер динамич. распред. памяти можно устанавливать с помощью директивы компилятора. 2)Программа во время компиляции исп-ет данные.ю, объем памяти для хранения к-ых заранее не известен. Некоторые элемты данных требуют задания максимально возможного объема памяти. Такое кол-во памяти отводится под данную стр-ру по умолчанию даже если данная стр-ра не будит хранить никаких данных. В этом случая происходит нерациональное исп-ие памяти , а при попытке зарезервировать массив очень больших размеров могут произойти ошибки. 3)В программе исп-ся буфер памяти для временного хранения данных. Если процесс работы программы необходимо временно выделить память для хранения каких-л данных и при этом данные не будут сохраняться за все время программы. То в этом случае не обойтись без указателей и динамически распределительной обл. памяти. Временное выделение памяти бывает полезным при написании текстовых редакторов, к-ые для каждого редактируемого файла необходим буфер. 4)Программа работает с неск-ми типами данных. Одной из причин использования указателей явл-ся необходимость применения ссылки на структурированные переменные к-ые имеют различную стр-ру. 5)Программа исп-ют динамич. стр-ры данных При решении прикладных задач динамич. распределяемая обл. памяти наиболее часто исп-ся для создания стековых стр-р, односвязных и двыхсвязных списков до одинарных деревьев. Исп-ние массива в этом случае приведет к нерациональному исп-нию памяти. Для этих целей удобно применять указатели т.к. они позволяют создавать динамич. стр-ры, необход. размеров при помощи 4-х байтовых указателей. При хранении связных списков в динам. разделит. памяти. Каждый элемент списка содержит запись указывающую на последующий элемент. ССЫЛОЧНЫЙ ТИП ДАННЫХ. Любой ссылочный тип данных опр-ет мн-во значений, к-ые явл-ся указателям назначения нек-ого др. типа данных. В Pascal указатели могут связываться с конкретным типом данных. Такие указатели назыв типизированными. ТИПИЗИРОВАННЫЕ УКАЗАТЕЛИ. Для их объявления исп-ся символ ‘^’. Этот символ располаг. непосредственно перед указанием типа. Для указателей в Pascal сделаны исключения и они могут ссылаться на ещё необъявленный тип данных. Это даёт возможность организовать хранение данных в виде списка. Каждый элемент саиска может содержать указатели на последующий элемент и на предыдущий. НЕТИПИЗИРОВАННЫЕ УКАЗАТЕЛИ. В Pascal можно объявить указатель, не связывая его с каким-л конкретным типом данных. Для этих целей исп-ся стандартный тип данных Pointer т.к. нетипизир. указатели не связаны с конкр-м типом данных их удобно исп-ть для динамич-ого размещения данных меняется в ходе выполнения программы. ОПЕРАЦИИ С УКАЗАТЕЛЯМИ. В Pascal для указателей допустимы только операции присваивания и сравнения. Указателю можно присваивать содержимое др. указателя такого же типа. Значение стандартной константы №14, что обозначает пустой указатель или адрес объекта определенной ф-ции Addr, адрес, возвращаемой ф-ции Ptr.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.