Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика [РТФ, Андреев, 2 семестр] / Экзамен (альтернатива).docx
Скачиваний:
10
Добавлен:
05.08.2022
Размер:
136.7 Кб
Скачать

1. Текстовый var f: text;

2. типизированный           var f: file of <тип компонента>;

3. Нетипизированный var f: file;

ФУНКЦИИ для работы с файлами в Паскале

Функция

Назначение

Пример вызова

Значения

eof(file)

условие «конец файла»

if eof(f) then ...

[true; false]

eoln(file)

условие «конец строки»

if eoln(f) then ...

[true; false]

filepos(file)

получить номер позиции для обмена

if filepos(f) > 0 then ...

[0;n]

filesize(file)

получить размер файла [количество записей]

seek(f, filesize(f))

[0;n]

ioresult

номер ошибки ввода-вывода ({$I-})

if ioresult = 0 then ...

[0;n]

ПРОЦЕДУРЫ для работы с файлами в Паскале

Процедура

Назначение

Пример вызова

Тип файла

assign(file, имя)

назначить файл для файловой переменной

assign(f, ’a: text’)

assign(f, path)

Все файлы

close(file)

закрыть файл

close(f)

Все файлы

reset(file [,длина-з.])

открыть файл

reset(f)

Все файлы

rewrite(file [,длина-з.])

создать файл

rewrite(f, 1)

Все файлы

append(file)

открыть для добавления

append(f)

Text

read(file, данные)

ввод данных

read(f, mydata)

Все файлы

readln(file, данные)

ввод данных,

пропуск конца строки

readln(f, a, b, c)

Text

write(file, данные)

вывод данных

write(f, mydata)

Все файлы

writeln(file, данные)

вывод данных,

вывод конца строки

writeln(f, a:10:2)

Text

blockread(f, данные, n,

результат)

ввод блока из n записей,

результат = сколько передано

blockread(f, a, 50,p)

File

blockwrite(f, данные, n,

результат)

вывод блока из n записей  результат = сколько передано

blockwrite(f, a,50,p)

File

seek(file, номер позиции)

установить номер позиции для обмена

[0;n], n = число записей

seek(f, 0)

Кроме text

9 Тип указатель в паскале

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

Указатели описываются с помощью инструкций:

имя_типированного_указателя: ^тип_содержимого_ячейки;

имя_нетипированного_указателя: pointer;

В качестве типа содержимого ячейки (базового типа) может быть использован любой стандартный тип или имя нестандартного типа.

Указателю может быть присвоено значение другого указа­теля, причем в операторе присваивания (слева и справа от знака:=) должны участвовать указатели с одинаковым базовым типом или один из указателей должен быть нетипированным.

Допустимо сравнивать указатели одного типа на равенство и неравенство.Другие операции сравнения не допустимы.

Операция @означает взятие адреса переменной: @A – адрес переменной A (или адрес первого байта массива или структуры A). Операцияозначает взятие содержимого: ^b – содержимое ячейки с адресом b (сравните положение значка ^ с тем, что используется при объявлении указателей). ^b можно использовать точно так же, как и переменную базового для указателя b типа.

Пример.

Var C: ^integer; i:integer;

Begin C:=@i; {в ячейку С записан адрес ячейки i}

C^:=1; {в ячейку с адресом С записано значение 1}…End.

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

• Функция Addr - возвращает результат типа Pointer, в котором содержится адрес аргумента.  • Addr(X), x - любой объект программы. Возвращаемый адрес совместим с указателем любого типа. Аналогично операции @.  • Функция CSeg - возвращает значения хранящееся в регистре CS (в начале работы программы в CS содержится сегмент начала кода программы), результат CSeg - слово типа Word.  • Процедура Dispose(x) - возвращает в кучу фрагмент динамической памяти, зарезервированный за типизированным указателем x.  • Функция DSeg - возвращает значение хранящиеся в регистре DS (в начале работы в DS - сегмент начала данных программы), результат - типа Word.  • Процедура FreeMem - возвращает в кучу фрагмент динамической памяти, который ранее был зарезервирован за нетипизированным указателем. FreeMem(P, Size), P - нетипизированный указатель. Size - длина фрагмента, подлежащего освобождению.  • Процедура GetMem(P, Size) - резервирует память (за одно обращение не более 65521 байт), если нет свободной памяти - ошибка времени исполнения.  • Процедура Mark(Ptr) запоминает текущее значение указателя кучи HeapPtr. Ptr - указатель любого типа, в нём будет возвращено HeapPtr. Используется совместно с Release для освобождения части кучи.  • Функция MaxAvail - возвращает размер (в байтах) наибольшего непрерывного свободного участка кучи. Результат типа LongInt. За один вызов New или GetMem нельзя зарезервировать значение большее, чем возвращаемое этой функцией.  • Процедура New(TP) - резервирует фрагмент кучи для размещения переменной. TP - типизированный указатель (за одно обращение не более 65521байт).  • Функция MemAvail - возвращает размер (в байтах) общего свободного пространства кучи. Результат типа Longint.  • Функция Ofs(X) - возвращает значение типа Word, содержащее смещение адреса указанного объекта. X - выражение любого типа или имя процедуры.  • Функция Ptr(Seg, Ofs) - возвращает значение типа Pointer по заданному сегменту и смещению. Значение, возвращаемое функцией, совместимо с указателем любого типа.  • Процедура Release(Ptr) - освобождает участок кучи. Рtr - указатель любого типа, в котором сохранено процедурой Mark значение указателя кучи. Освобожденный участок кучи - от адреса в Ptr до конца. Одновременно уничтожается список свободных фрагментов, созданных по Dispose и FreeMem.  • Функция Seg(X) - возвращает значение типа Word, содержащее сегмент адреса указанного объекта.  • Функция SizeOf(X) - возвращает длину (в байтах) внутреннего представления указанного объекта. X - имя переменной, функции или типа.

11 Условный оператор языка паскаль

Сокращенный вариант:

if условие then

оператор;

Полный вариант:

if условие then

оператор

else

оператор;

Условный оператор в Паскале — if — служит для организации хода задачи таким образом, при котором изменяется последовательность выполнения операторов в зависимости от какого-либо логического условия. Логическое условие может принимать одно из двух значений: либо true (истина), либо false (ложь), соответственно, оно может быть либо истинным, либо ложным.

12 Паскаль-операторы повторений