Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Язык Pascal






Файловый тип или переменную файлового типа можно задать одним из трех способов:

< имя> =FILE OF < тип>;

< имя> =TEXT;

< имя> =FILE;

В зависимости от способа объявления можно выделить 3 вида файлов:

-типизированные файлы (задаются предложением FILE OF…);

-текстовые файлы (определяются типом TEXT);

- нетипизированные файлы (определяются типом FILE).

Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре ASSIGN:

ASSIGN (< ф.п.>, < имя файла или л.у.>);

Инициировать файл означает указать для этого файла направление передачи данных.

RESET(< ф.п.>) инициирует: чтение в файл.

REWRITE(< ф.п.>)-инициирует запись информации в файл или в логическое устройство.

APPEND(< ф.п.>)-инициирует запись в ранее существовавший текстовый файл для расширения.

Текстовые ф. связываются с ф.п., принадлежащими типу TEXT. Текстовые ф. предназначены для хранения текстовой информации. В Паскале текстовый файл трактуется как совокупность строк переменой длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой записи ставится специальный признак EOLN, а в конце всего файла – EOF.

Для доступа к записям применяются процедуры

READ([< ф.п.> ], < с.п.ввода>)-обеспечивает ввод символов, строк и чисел.

READLN([< ф.п.> ], < с.п.ввода>)-идентична предыдущей за исключением того, что после считывания последней переменной оставшаяся часть строки до маркера EOLN пропускается, поэтому след. Обращение к READLN или READ начинается с первого символа новой строки.

WRITE([< ф.п.> ], < с.п.ввода>)-обеспечивает вывод информации в текстовый файл или передачу ее на логическое устройство,

WRITELN([< ф.п.> ], < с.п.ввода>) - идентична предыдущей за исключением того, что выводимая строка символов завершается кодами CR, LF.

и функции SEEKEOLN, SEEKEOF,

EOLN([< ф.п.> ])-возвращает TRUE, если во входном текстовом файле достигнут маркер конца строки.

Типизированные ф. Длина любого тип-го ф. строго постоянна, что дает возможность организовать прямой доступ к каждому из них.

Для доступа к записям применяются процедуры READ, WRITE, а так же функции

SEEK(< ф.п.>, < N-компонента>)-смещает указатель ф. к требуемому компоненту.

FILESIZE(< ф.п.>)-возвращает значение типа LONGINT, которое содержит количество компонентов файла.

FILEPOS(< ф.п.>)-возвращает значение типа LONGINT, содержащее порядковый номер компонента файла.

Нетипизированные ф. объявляются как файловые переменные типа FILE и отличаются тем, что для них не указан тип компонентов. Отсутствие типа делает эти ф. совместимыми с любыми др.файлами и позволяет организовать высокоскоростной обмен данными м/у диском и памятью.

При работе с этими ф.применяются все процедуры и функции, доступные тип-м ф., за искл.READ, WRITE, кот. заменяются высоскоростными процедурами BLOKREAD(< ф.п.>, < буф.>, < [, NN]>) и BLOKWRITE(< ф.п.>, < буф.>, < [, NN]>)

CLOSE(< ф.п.>)-заравает файл

RENAME(< ф.п.>, < новое имя>)-переименовывает

RASE(< ф.п.>)-уничтожает

, FLUSH(< ф.п.>)-очищает внутренний буфер файла и, таким образом, гарантирует сохранность всех последних изменений файла не диске.

 

 


65 Объектно-ориентированные средства ввода-вывода.

Для организации ввода-вывода данных встроенных типов в программе на С++ используется заголовочный файл iostream.h, который содержит определение нескольких классов и объектов, обеспечивающих методы ввода – вывода. В частности, язык поддерживает четыре предопределенных объекта, выполняющих ввод-вывод:

Cin-ввод(обычно с клавиатуры)

Cout-вывод(обычно терминал)

Cerr-вывод ошибок (обычно клавиатура)

Clog-буферизованная версия Cerr

В файле iostream.h определены классы istream и ostream, которые используются для управления ввода и вывода соответственно. В этих классах перегружены операции ввода и вывода для встроенных типов данных. Например:

Class ostream {

Public:

Ostream & operator< < (char*);

Ostream & operator< < (int);

Ostream & operator< < (long);

Ostream & operator< < (double);

....

};

Cout- объект класса Ostream. Оператор cout< < x; посылает значение переменой x в объект сout класса Ostream для вывода. Функция operator< < возвращает ссылку на объект Ostream, для к-ого она была вызвана. Поэтому к результату операции вывода < < можно еще раз применить операцию вывода, т.е. неск.операций можно сцепить:

Cout< < ”x = “< < x < < endl;

Такая запись проинтерпритируется как:

((cout.operator< < (“x=”)).operator< < (x)).operator< < (endl);

Аналогично опред. ввод cin.

Ввод и вывод данных пользовательских типов можно организовать с помощью функций-членов класса. Например для класса Complex ф-ия для вывода на экран комплексного числа может иметь вид:

#include< iostream.h>

#include< math.h>

Class Complex{

Double real;

Double image;

Public:

Complex(double r) { real=r; image=0; }

Complex(double r, double i) { real=r; double=i; }

~Complex () {}

Int isEqual (Complex &);

Int isGreater (Complex &);

Int isLess (Complex &);

}

Функция для вывода на экран компоексного числа может иметь вид:

Void complex:: printComplex ()

{

Cout< < real< < ”+I *”< < image< < endl;

}

Объект можно напечатать, вызывая эту функцию.

Если перегрузить операцию < < операцию для какого-либо класса, то с ее помощью можно будет напечатать объект этого класса точно так же как для встроенных типов данных:

Ostream & operator < < (ostream & r, Complex c)

{

Return r < < c.real< < ”+i*” < < c.image< < endl;

}

Cout < < c1;

Так как функция-операция возвращает ссылку на объект класса ostream, то можно сцепить нашу операцию в цепочку:

Cout < < “Комплексное число: ”< < c1;

Ф-ия для перегрузки операции < < обязательно должна быть объявлена как дружественная классу Complex, а не как его член, потому что в операции вывода слева стоит объект другого класса. Ф-ия член класса первым аргументом всегда неявно получает указатель this, а операция вывода < < должна получить ссылку на класс ostream.

Ввод пользовательского типа определяется аналогично выводу. Отличие состоит в том, что для операции ввода важно, чтобы второй параметр был ссылкой:

istream & operator > > (istream & r, Complex & c)

{

Return r> > c.real> > c.image;

}






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.