
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Буфер ввода-вывода.
При работе с файлом с каждым файлом связывается буфер ввода/вывода, представляющий собой некоторую область оперативной памяти, которая выделяется при открытии файла. Например при осуществлении записи в файл, данные сначала записываются, а затем передаются на диск или другое логическое устройство. Эта передача осуществляется в случае:
1)закрытие файла
2) заполнение буфера
3)принудительная очистка буфера
Поэтому управление буфером существенно сказывается на частоте обращения к внешней памяти. Буфер нужен для более быстрой записи на другое устройсво.
Для текстовых и безтиповых файлов существуют команды управления размерами буфера. Для типизированных файлов размер буфера устанавливается равным размеру компоненты файла.
Текстовые файлы.
Эти файлы состоят из совокупности ASCII кодов, включая управляющие коды. Такие файлы характеризуются совокупностью строк различной длины, признаками конца строк и конца файла. В конце каждой строки текстового файла установлен признак конца строки, который обозначается EOLN(f); или совокупностью кодов #13#10. В конце файла ставиться признак конца файла eoF(f); или код #26;
Текстовые файлы являются файлами с последовательным доступом, т.е. нельзя обратиться к i-той записи, не прочитав первых i-1 записей. При записи в текстовый файл информация преобразуется в символьный вид, поэтому единицей информации являются символ. Для доступа и записи файла используется процедуры: write, writeln, read,readln;
Запись данных в файл.
writе(<ф.п.>, <список ввода>); - процедура записи в файл, список ввода – последовательность 1 и более переменных или значений типа char, string или любого другого целого или вещественного типа. Процедура writeln после записи информации в файл переводит указатель на следующую строку, т.е. добавляет код #13#10;
пример записи в текстовый файл:
var
f:text;
a:byte;
c:char;
.
.
a:=100;
c:=’z’;
assign(f,’t.txt’);
rewrite(f);
write(f,a,c);
writeln(f,’a’,’b’);
close(f);
Чтение данных из файла(read,readln).
read(<ф.п.>, <список вывода>); - процедура чтения, список вывода – список из 1 и более переменных вышеуказанного типа.
Пример чтения из файла.
Reset(f);
Read(f,c);
Readln(f,c);
Read(f,c);
Close(f);
Reset(f);
Read(f,a);
Close(f);
Декция №12
Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
SettextBuf(<ф.п.>, <буферная переменная> [,<размер буфера>]); размер буфера по умолчанию: 128 байт.
вызов этой процедуры происходит после связи файловой переменной с файлами, и до открытия. Если размер буфера не указан то он устанавливается равным буферной переменной.
Пример использования буфера.
f:text;
b: array [1..100] of byte;
begin
Assign(f, ‘t.txt’);
SettextBuf(f,b);
rewrite(f);
write(f, ‘z’);
***
close(f);
в данном случае буфер находится в статической памяти, буфер можно разместить и в динамической памяти.
Пример:
f:text;
b: pointer;
begin
Assign(f, ‘t.txt’);
Getmem(b,100);
SettextBuf(f,b);
***
Fremem(b,100)
Flush(<ф.п.>); - используется для открытых для записи файлов и принудительной записи данных из буфера ввода /вывода в файл, независимо от степени его заполнения, обычно используется в «узких» местах программы.
Eoln(<ф.п.>); - возвр. true ,если указатель в файле достиг конца строки, работает для открытого на чтение файла.
Пример чтения из текстового файла и вывод читаемой информации на экран.
Reset(f);
While not eoln(f) do
Begin
Read(f,ch);
Write(ch);
End;
Seekeoln(<ф.п.>); - возвр. true,если до конца строки или файла остались одни разделители(пробелы и символы табуляции). Эта функция через эти символы «видит» конец строки или файла.
Eoln- читает весь файл, Seekeoln- пропускает пробелы.
Seekeof(<ф.п.>); - возвр. true,если до конца файла остались одни разделители(пробелы и символы табуляции)