- •Центр Компьютерного Обучения
- •Подпрограммы: процедуры.
- •1. Структурное программирование и технология нисходящего программирования.
- •2. Подпрограммы в языке Pascal. Понятие «процедура».
- •3. Формальные и фактические параметры.
- •4. Параметры-значения и параметры-переменные (входные и выходные параметры) подпрограмм, механизм передачи параметров (можно перенести на Занятие 2, если не хватит времени).
- •5. Локальные и глобальные переменные, область действия переменных
- •Подпрограммы: функции
- •Функция не имеет выходных параметров, она возвращает единственное значение (результат);
- •Рекурсия
- •Строковый тип данных – String
- •6. Для обработки строковых данных можно использовать стандартные процедуры и функции, описание которых можно найти в [1] или в любом справочнике по Pascal.
- •1. Общие сведения.
- •5. Доступ к компонентам файла.
- •Дополнительно (на усмотрение преподавателя!!!) процедуры Rename и Erase.
- •Текстовые файлы
- •1. Назначение.
- •Типизированные файлы
- •Динамические структуры данных
- •1. Статическая и динамическая память.
- •Распределение памяти.
- •2. Статические и динамические переменные.
- •Статическая переменная:
- •4. Доступ к переменной по указателю.
- •5. Управление динамической памятью (процедуры New и Dispose).
- •Формирование с помощью указателей однонаправленного списка по принципу стека, поиск элемента
- •Однонаправленный список
- •Пояснения к программе
- •Формирование с помощью указателей однонаправленного списка по принципу «очереди», поиск элемента
- •Пояснения к программе
- •Удаление элемента из линейного однонаправленного списка
5. Доступ к компонентам файла.
Файл представляет собой последовательность байтов, записанных на диске, которую пользователь интерпретирует нужным ему образом, например, как текст или последовательность чисел. Все компоненты файла считаются пронумерованными, начальный компонент имеет нулевой номер. Компонентом файла может быть число (целое или вещественное), символ, строка и т. д. В любой момент времени программе доступен только один компонент файла, на который ссылается текущий указатель (указатель обработки). Часто позицию размещения доступного компонента называют текущей позицией.
Все действия с файлами производятся покомпонентно, причем в этих действиях участвует тот компонент файла, на который указывает текущий указатель. В результате совершения операций чтения/записи указатель может перемещаться по компонентам файла.
По способу доступа к компонентам различают файлы последовательного и прямого доступа.
Файлом последовательного доступа называется файл, к компонентам которого обеспечивается доступ в том же порядке, в каком они записывались. Для поиска нужного компонента в таком файле необходимо, начиная с нулевого, перемещать указатель обработки до тех пор, пока он не будет указывать на искомый компонент. Т. е. необходимо последовательно при помощи указателя перебирать все компоненты файлы до требуемого компонента. При организации данных в файл последовательного доступа нельзя одновременно читать данные из файла и записывать данные в файл, т.к. для чтения компонента из последовательного файла указатель должен быть помещен на данный компонент, а для записи нового компонента в файл – в конец файла. Примером таких файлов являются текстовые файлы.
Файлом прямого доступа называется файл, доступ к компонентам которого осуществляется по адресу компонента. При поиске нужного компонента в таком файле достаточно указать номер его позиции. Примерами файлов прямого доступа могут быть типизированные и нетипизированные файлы.
6. Основные процедуры работы с файлами (на примере текстового файла).
Пример 1(написать на доске с комментариями и все процедуры объяснить на этом примере).
Program Primer;
Var F1, F2 : Text;
Name : String[30];
Begin
Assign(F1,’TTT.txt’); {установление соответствия между F1 и файлом в текущей папке}
{
$I-}
Reset(F1);
{$I+} {открытие файла F1 на чтение}
If Ioresult <> 0
Then Writeln(‘Файл не найден’)
Else …(работа с файлом F1)
Name:=’C:\TP\WORK\Res.dat’; {задание абсолютного имени файла}
Assign(F2, Name); {установление соответствия между F2 и файлом Res.dat}
{
$I-}
Rewrite(F);
{$I+} {открытие файла F1 на запись}
If Ioresult <> 0
Then Writeln(‘на диске нет места’)
Else … (работа с файлом F2)
Close(F1); {закрытие файла F1}
Close(F2); {закрытие файла F1}
Readln;
End.
а) Процедура Assign.
Каждому файлу в Pascal ставится в соответствие файловая переменная определенного типа для более полного использования возможностей операционной системы, поэтому перед началом работы с файлом необходимо установить данное соответствие. Для этого используется процедура Assign.
Назначение: |
установление соответствия между файловой переменной и файлом на диске. |
Синтаксис: |
Assign ( F, Name ), где F – переменная любого файлового типа, Name – строка, содержащая полное имя файла в соответствии с требованиями операционной системы к именам файлов. |
Описание работы: |
процедура Assign устанавливает связь внешнего файла Name с файловой переменной F. Все последующие операции с файловой переменной F будут относиться к внешнему файлу с именем Name. Связь между файловой переменной F и файлом на диске Name существует до тех пор, пока с помощью процедуры Assign не будет установлено соответствие между файловой переменной F и другим внешним файлом. |
Примечание: |
|
б) Процедура Reset.
Чтению файла с диска должен предшествовать вызов процедуры открытия файла для чтения.
Назначение: |
открытие существующего файла для чтения. |
Синтаксис: |
Reset (F), где F – файловая переменная. |
Описание работы: |
|
Примечание: |
|
В примере 1 для правильной работы функции Ioresult директива {$I-} отключает контроль ошибок ввод/вывода, а директива {$I+} включает контроль ошибок ввода/вывода.
в) Процедура Rewrite.
Записи файла на диск должен предшествовать вызов процедуры открытия файла для записи.
Назначение: |
открытие файла для записи. |
Синтаксис: |
Rewrite(F), где F – файловая переменная. |
Описание работы: |
|
Примечание: |
|
В примере 1 для правильной работы функции Ioresult директива {$I-} отключает контроль ошибок ввод/вывода, а директива {$I+} включает контроль ошибок ввода/вывода.
г) Процедура Close.
После завершения работы с файлом надо его закрыть, т. е. запретить доступ к файлу.
Назначение: |
закрытие файла. |
Синтаксис: |
Close(F), где F – файловая переменная. |
Описание работы: |
процедура Close запрещает доступ к предварительно открытому файлу, т. е. делает его недоступным для чтения/записи. |
Примечание: |
|
