
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Удаление текущего узла списка.
Пусть требуется удалить узел на который указывает С.
А) запомнить адрес узла на следующего за удаляемым.
Б) содержимое узла следующего за удаляемым перенести в удаляемый.
В) освободить память по запомненному адресу.
Пример:
Tmp:=c^.next;
C^:=c^.next^.
Dispose(tmp);
Недостаток: требуется дополнительная проверка при удаление последнего элемента.
Пример проверки:
Tmp:=c;
E^.next:=c^.next;
Dispose(c);
C:=e^.next;
Удаление всего списка.
Пример:
C:=b;
While c<>nil do
Begin
Tmp:=c;
C:=C^.NEXT;
DISPOSE(TMP);
End;
Удаление всего списка, возможно используя процедуру Mark перед созданием списка и процедуры Release после работы со списком.
Данные процедуры следует использовать в том случае, если отсутствует возможность удаления каких-либо других структур.
Файлы ввода-вывода.
Лекция №11
Файлы ввода/вывода. Понятие физического и логического файлов. Основные операции работы с файлами. Типы файлов и общие принципы работы с ними. Буфер ввода/вывода
Файл представляет собой именную область памяти, где сосредоточены различного рода данные.
С понятием файлов также связывают логические устройства: порты ввода-вывода, печатающие устройства, консоль и т.д. Любому файлу соответствует имя, файлы содержа компоненты одного и того же типа. Длина файла ограничена размером внешней памяти.
Понятие физического и логического файла.
Под физическим файлом понимают любой файл операционной системы. С понятием логического файла связывается переменная одного из файловых типов определенных в языке программирования, файловая переменная используется для обращения к физическому файлу. В Паскале существует три типа файловых переменных.
Пример описание файлов:
Var
F:text;{текстовый}
F1:file of <>{типизированный}
F2:file; {бинарный файл}
Для осуществления связи файловой переменной с физическим файлом используется процедура Assign(<файловая переменная>,<имя физического файла>);
assign(f,‘d.txt‘);
Если в процедуре assign вместо имени файла указать логическое устройство о файловая переменная буде связанна с этим устройством
Assign(f,‘LPT1‘);
Assign(f,’Com’);
После выполнения процедуры assign разрешается работа с физическим файлом, который перед работой необходимо проинициализировать – указать направление передачи файлов.
Открытие файла для чтения Reset;
Reset(<файловая переменная>).
пример
Var
F:text;
.
.
Assign(f,’a.dat’);
Reset(f);
Если файл a.dat существует, то он будет открыт для чтения, при этом файловый указатель в файле будет указывать на 1 компонент.
При открытие файла на чтение, физический файл может отсутствовать на диске, может быть ошибка обращения к файлу, аппаратная ошибка при чтение файла, повреждение файлового пространства. В этом случае возникает ошибка которая прервет выполнение программы, которую можно избежать используя встроенную функцию IOresult.
Пример использования IOresult
Var
F:text;
.
.
Assign(f,’t.txt’);
{$I-}
Reset(f);
{$i+}
if ioresult <>0 then write(‘ошибка обращения к файлу’);
Открытие файла на запись (перезапись).
Rewrite(f); при открытии на запись не пустого файла содержимое файла уничтожается, и указатель устанавливается на начало файла.
Эта процедура создает физический файл связанный с файловой переменной, если такого файла нет, и открывает его на запись.
Открытие файла для добавления записи.
Append(f); данная процедура используется при необходимости добавить в непустой файл данные, данные добавляются в конец файла. Данная процедура применима только для текстовых файлов, если текстовый файл ранее был открыт с помощью reset или rewrite, то использование процедуры Append приведет к закрытию этого файла и открытию его вновь но уже для добавления записи.
Набор оющих процедур для работы с файлами.
Close(f); закрывает файл оставляет связь файловой переменной с именем физического файла.
Erase(f); уничтожает файл, перед удалением файл должен быть закрыт.
Rename(f,<новое имя файла>); переименовывает файл.
Eof(f):Boolean; возвращает true если конец файла, иначе false.