русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Лекция 9


Дата добавления: 2013-12-23; просмотров: 694; Нарушение авторских прав


Файлы

Множества

Переменная, относящаяся к типу множество, может содержать любую комбинацию величин, взятых из базового ординального типа. Каждая величина базового типа может принадлежать и не принадлежать этому множеству. Описатель множества выглядит так:

 

SET OF базовый тип

 

Базовым типом может являться любой ординальный тип, содержащий не более 256 элементов. Например: VAR set1,set2,even,anyset: SET OF 0..100;

 

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

 

set1:=[1..20];

even:=[2,4,6,8,10,12,14,16,18,20];

set2:=[15..25];

anyset:=[3,3+2,11..15,17..4*5];

 

Над данными типа множество определены следующие операции:

  • set1=set2 - сравнение (результат операции - FALSE);
  • set1<>set2 - сравнение на несовпадение (TRUE);
  • set2<=set1- входит ли set2 как подмножество в set1? (FALSE);
  • set1>=even- содержит ли set1 как подмножество even? (TRUE);
  • 5 in set1 - является ли 5 элементом множества set1? (TRUE).
  • set1+set2 - объединение множеств - множество [1..25],
  • set1*set2 - пересечение множеств - множество [15..20],
  • set1-even - разность множеств - множество нечетных чисел меньших 20.

 

Вместо оператора cifra:=(c>='0') and (c<='9') в программе Enter_int (см. лекцию 7) можно использовать более ясную и лаконичную конструкцию
cifra:=c in ['0'..'9'].

В TP множество реализуется как последовательность бит, с помощью которой устанавливается, принадлежит (1) или нет (0) элемент, номер которого совпадает с порядковым номером бита, данному множеству. Таким образом, для базового типа из K элементов каждое множество задается строкой из K бит.



Файл, с точки зрения программы на языке Паскаль, - это именованная структура данных, представляющая собой последовательность элементов одного типа. Количество элементов файла практически не ограничено.

Все файлы можно разделить на типизированные, нетипизированные и текстовые.

Пример описаний файлов, в котором определены размеры буферов файлов различного типа:

 

program files;

var f1:file of real; {В стандарте f1^ - переменная типа real - типизированный файл}

f2:file; {нетипизированный файл}

f3:text; {текстовой файл}

begin

writeln(sizeof(f1),sizeof(f2),sizeof(f3))

end.

Результат: 128 128 256

 

Работа с файлами обеспечивается набором процедур и функций, обслуживающих файлы.

Описатель для типизированного файла выглядит так:

<имя>: file of <базовый тип>;

<имя> - файловая переменная. В стандарте файловая переменная является указателем на буфер файла. В ТР, как видно из примера, это не так.

<базовый тип> - любой, кроме файлового и записи, содержащей файловый тип.

Объявление файловой переменной задает только тип компонентов файла. Чтобы программа могла выводить данные в файл или читать данные из файла, необходимо указать конкретный файл файловой системы, т. е. задать имя файла. Имя файла задается вызовом процедуры ASSIGN, связывающей файловую переменную с конкретным файлом.

assign (var f:text; <ИмяФайла>:string);

Имя файла задается согласно принятым в MS-DOS правилам. Оно может быть полным, т. е. состоять не только непосредственно из имени файла, но и включать путь к файлу. Существуют определенные договоренности при записи имени файла, например:

assign ( f, 'a:\result.txt');{Полное имя файла}assign (f,'\students\ivanov\korni.txt'); {Указан путь относительно текущей директории}

Имя файла может быть задано строкой:

fname:='otchet.txt';assign(f,fname);

8.3 Процедуры открытия и закрытия файлов:

RESET(F) - открытие существующего файла F на чтение (файловая переменная F связана с существующим файлом MS DOS процедурой ASSIGN). В стандартном Паскале при открытии файла на чтение в динамической памяти создается буфер файла, в который помещается первая запись файла. Для нетипизированных файлов размер записи может быть указан вторым параметром. В ТР буфером является сама файловая переменная, размер буфера в примере пункта 8.2. Если открываемый на чтение файл не существует в файловой системе, возникает ошибка этапа выполнения программы.

REWRITE(F) – создает и открывает на запись новый файл. Если файловая переменная F связана с существующим файлом, то данные этого файла уничтожаются. В стандартном Паскале при открытии файла на запись в динамической памяти создается буфер файла для промежуточного хранения записей. Для нетипизированных файлов размеры записей могут задаваться вторым параметром. В ТР буфером является сама файловая переменная, размер буфера в примере пункта 8.2.

CLOSE(F) - закрытие файла F. При закрытии файла записи содержимое буфера выталкивается в файл. В стандарте Паскаля процедура закрытия файла разрывает связь файловой переменной (указателя) с буфером и уничтожает буфер в динамической памяти.

8.4 Процедуры ввода/вывода:

WRITE(F, E) - запись значения выражения E базового типа в файл; (не применима к нетипизированным файлам)

READ(F, V) - чтение из файла записи в переменную; (не применима к нетипизированным файлам)

BLOCKREAD; BLOCKWRITE - только для нетипизированных файлов.

SEEK(F, n) - делает доступной для обработки запись n файла F (эта процедура не применима к текстовым файлам);

EOF(F) - функция, возвращает TRUE, если достигнут конец файла F.

 

При работе с файлами в TP очень полезна функция IORESULT, которая возвращает значение кода ошибки выполнения последней операции ввода/вывода. Следующий фрагмент является шаблоном для открытия файла на чтение. Он позволяет избежать прерывания программы при попытке открытия на чтение не существующего файла

 

repeat

writeln('введите имя файла'); readln(s);

assign(f,s);

{$I-} {отключение режима прерывания выполнения программы при возникновении ошибки в/в}

reset(f);

{$I+} {включение режима прерывания выполнения программы при возникновении ошибки в/в}

i:=IORESULT;

if i<>0 then begin

writeln('Ошибка',i:3);

writeln('Попробуйте еще');

end;

until i = 0;

 

Здесь i – переменная типа integer, s – строка. {$I-} – псевдокомментарий – директива компилятору при выполнении дальнейших действий снять контроль проверки правильности выполнения операции ввода/вывода. Если открытие файла F прошло успешно, то IORESULT возвращает значение 0, в противном случае IORESULT возвращает код ошибки, отличный от нуля.



<== предыдущая лекция | следующая лекция ==>
Лекция 8 | Текстовые файлы.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.161 сек.