- •Практикум по Турбо Паскалю
- •Первые занятия Первое знакомство с системой программирования Турбо Паскаль
- •Команды редактора
- •Задания
- •Режим помощи
- •Первая программа
- •Запуск программы
- •Сохранение программы
- •Выход из системы программирования Турбо Паскаль
- •Простейшие линейные программы
- •Арифметический квадрат. Абсолютная величина
- •Целый и логический типы данных Условный оператор
- •Логический тип данных
- •Условный оператор
- •Вложенные операторы условия
- •Целый тип данных. Цикл с параметром
- •Цикл с параметром (разбор на примере)
- •Работа с окнами. Метод пошагового выполнения программ
- •Работа с окнами
- •Решение задач с использованием цикла с параметром
- •Вопросы для обсуждения
- •Трассировка примера
- •Цикл с постусловием
- •Алгоритм Евклида
- •Вложенные циклы
- •Решение задач с использованием циклов с условием
- •Простые типы данных
- •Задания
- •Решение задач
- •Вещественный тип данных
- •Задание
- •Решение задач
- •Ограниченный, перечисляемый типы данных. Оператор варианта
- •Ограниченный тип данных
- •Оператор варианта
- •Перечисляемый тип данных
- •Решение задач
- •Описание переменных, констант и типов Раздел описания констант
- •Раздел описания переменных
- •Раздел описания типов
- •Решение задач
- •Преобразование типов. Совместимость типов
- •Задания
- •Решение задач
- •Решение задач
- •Контрольные работы Контрольная работа №1
- •Контрольная работа №2
- •Основы Паскаля
- •X y22m размер gamma alfa r15
- •Процедуры и функции
- •Описание процедур и функций
- •Файловый тип
- •Описание файлового типа
- •Подпрограммы
- •Процедура Assign
- •Процедура Reset
- •Процедура Rewrite
- •Процедура Write
- •Процедура Close
- •Функция FileSize
- •Функция FilePos
- •Текстовые файлы
- •Описание текстового файла
- •Консоль
- •Устройства
- •Соответствие текстовых файлов и логических устройств
- •Операции над текстовыми файлами
- •Процедура Assign
- •Процедура Reset
- •Процедура Rewrite
- •Процедура Append
- •Процедура Close
- •Функция Eof
- •Функция SeekEof
- •Блочные файлы Описание типа блочного файла
- •Процедура BlockRead
- •Процедура BlockWrite
- •Операции ввода-вывода
- •Регулярные типы данных Одномерные массивы. Работа с элементами
- •Способы задания одномерных массивов
- •Работа с элементами массива (разбор на примерах)
- •Методы работы с элементами одномерного массива Изменение значения некоторых элементов
- •Создание массива
- •Работа с несколькими массивами
- •Удаление элементов из одномерного массива Удаление элемента
- •Вставка элементов в одномерный массив Вставка одного элемента
- •Вставка нескольких элементов
- •Перестановка элементов массива
- •Перестановка части массива
- •Найти сумму элементов
- •Работа с несколькими массивами
- •Двумерный массив. Работа с элементами Изменение значений некоторых элементов, удовлетворяющих заданному свойству
- •Заполнение двумерного массива по правилу.
- •Вставка и удаление элементов двумерного массива
- •Перестановка элементов массива
- •Комбинированный тип данных (записи)
Блочные файлы Описание типа блочного файла
С помощью блочных файлов возможно выполнение небуферизованных операций ввода-вывода, осуществляемых непосредственно между переменными программы и внешней дисковой памятью. По умолчанию элементами блочного файла являются блоки по 128 байт. Блочный файл может представлять любой дисковый набор данных. Поэтому такие операции, как Erase и Rename, могут быть выполнены с помощью блочных файлов.
Описание типа блочного файла состоит из ключевого слова file.
Синтаксис: описание-типа-блочного-файла: file
Пример:
Var DiskFile : file; FileName : string [40]; begin Write ('FileName:-'); Readln (FileName); Assign (DiskFile, FileName); Erase (DiskFile) end
Данная программа удалит произвольный набор данных на диске, имя которого будет введено с клавиатуры.
Тип элементов набора данных не имеет значения.
Выполнение операций ввода-вывода над блочными файлами осуществляется с помощью процедур BlockRead и BlockWrite. Они заменяют процедуры Read и Write, операции Assign, Reset, Rewrite, Close, Seek и Eof выполняют те же функции, что и для файлов других видов.
Процедура BlockRead
Синтаксис: BlockRead (FileVar, Buffer, Count, Reply)
BlockRead (FileVar, Buffer, Count)
Filevar - имя файловой переменной, представляющей блочный файл, Buffer - имя произвольной программной переменной, Count - выражение типа integer, Reply - имя переменной типа integer.
Процедура BlockRead выводит из файла FileVar в область оперативной памяти, занимаемой переменной Buffer, Count блоков по 128 байт каждый. Если в процедуре указан параметр Reply, то этой переменной будет присвоено значение, определяющее фактическое количество записанных блоков. Если эта величина меньше Count, значит, указатель файла находится в конце.
Процедура BlockWrite
Синтаксис: BlockWrite (FileVar, Buffer, Count, Reply)
BlockWrite (FileVar, Buffer, Count)
Filevar - имя файловой переменной, представляющей блочный файл, Buffer - имя произвольной программной переменной, Count - выражение типа integer, Reply - имя переменной типа integer.
Процедура BlockWrite записывает в файл FileVar из области оперативной памяти, занимаемой переменной Buffer, Count блоков по 128 байт каждый. Если в процедуре указан параметр Reply, то этой переменной будет присвоено значение, определяющее фактическое количество записанных блоков. Если эта величина меньше Count, значит, процедура выполнена неправильно.
Пример:
Program Copy; Var Src, Trg : file; Buffer : array [0..255,boolean] of byte; Source, Target : string [40]; Reply : integer; Begin Write ('Source:-'); Readln (Source); Write ('Target:-'); Readln (Target); Assign (Src,Source); Assign (Trg, Target); Reset (Src); Rewrite (Trg); repeat BlockRead (Src,Buffer,4,Reply); BlockWrite (Trg,Buffer,4,Reply) until Reply < 4; > Close (Src); Close (Trg) End.
Данная программа копирует набор данных с произвольным типом элементов.
Операции ввода-вывода
Способ контроля операций ввода-вывода зависит от способа компиляции программы. При заданной по умолчанию директиве {$I+} после каждой операции ввода-вывода контролируется её выполнение. Если будет обнаружена ошибка, выполнение программы прекратится и на консоли появится сообщение об ошибке с указанием её типа. После директивы {$I-} при обнаружении ошибки выполнение программы не прекратится, но будут отменены последующие действия по вводу-выводу до обращения к стандартной функции IOresult, которая возвращает целое число. Если результат этой функции 0, то предыдущие операции ввода-вывода выполнены правильно. В противном случае это число определяет код ошибки.
Список ошибок ввода-вывода |
|
01 |
Файл не найден |
02 |
Файл не открыт |
03 |
Файл не открыт для чтения |
04 |
Файл не открыт |
10 |
Неправильное представление численного значения |
20 |
Недопустимая операция |
21 |
Недопустимая операция |
22 |
Недопустимое использование процедуры Assign |
90 |
Несоответствие размеров записей |
99 |
Конец набора данных |
F0 |
Ошибка при записи на диск |
F1 |
Переполнение каталога |
F2 |
Переполнение набора данных |
FF |
Набор данных не найден |
Пример и возможности операций ввода-вывода
Пример:
Program Delete; Var FileVar : file; FileName : string [40]; Flag : boolean; begin Write ('FileName:='0); Readln (FileName); Assign (FileVar,FileName); {$I-} Erase (FileVar); {$I+} if not (Ioresult=0) then Writeln ('File'+FileName+'did not exist'); end.
С помощью данной программы будет удалён набор данных, имя которого будет указано с консоли.
Если указано имя несуществующего набора данных, то будет выведено сообщение, что этот набор данных не существует.
Если из программы удалить директивы компилятора, а удаляемый набор данных не существует, то выполнение программы будет прекращено из-за ошибки операции Erase, относящейся к несуществующему набору данных.
