Автор работы: Пользователь скрыл имя, 26 Апреля 2012 в 21:22, курсовая работа
За время существования профессии программиста сущность его труда изменилась коренным образом. В 50-х годах программы писали в командах ЭВМ (в “машинных кодах”). При этом вся информация переводилась в двоичную систему счисления. Это очень тяжелый и напряженный труд, требующий от человека особой аккуратности. Облегченно вздохнули программисты при появлении в 1956 г. специального языка для решения вычислительных задач. Это был FORTRAN (Formula Translator). С тех пор были разработаны другие, более совершенные языки, или специализированные применительно к какой-то конкретной области: КОБОЛ, АЛГОЛ, ПЛ/1, ЛИСП, СИМУЛА, ПАСКАЛЬ, СИ, АДА, ПРОЛОГ и др.
RMDIR (path) – удаление пустого каталога.
Среди всех файлов в Паскале особо выделяются текстовые файлы. Этот тип значений даже принят в качестве стандартного типа TEXT. Текстовый файл представляет собой последовательность литер (символов), но это не эквивалентно заданию типа файла следующим образом:
TYPE T = FILE OF CHAR;
При
таком задании тип Т – единая
последовательность литер. Но часто
бывает нужно разбить
В текстовых файлах как раз существует возможность такого разбиения. Строки могут быть разной длины, в том числе и пустые. В конце строки размещается управляющая литера, называемая “конец строки”. Она не включена в тип CHAR и не имеет графического представления. Внутреннее представление определяется реализацией. С этой литерой связана специальная функция EOLN (f) (end of line).
Эта функция принимает значение TRUE, если окно указывает на признак конца строки, и FALSE – в противном случае.
Тип с именем TEXT в программе описывать нельзя, а переменные этого типа описываются обычным образом:
VAR S, D : TEXT.
Пример 1. Определить количество строк в текстовом файле с именем BOOK.
PROGRAM NLINES (OUTPUT, BOOK);
VAR K : INTEGER; C : CHAR;
BOOK : TEXT;
BEGIN
K := 0; RESET (BOOK);
WHILE NOT EOF (BOOK) DO
BEGIN IF EOLN (BOOK) THEN K := K+1;
READ (BOOK, C)
END;
WRITELN (‘В текстовом файле BOOK’, K, ‘строк’)
END.
Чтобы занести управляющую литеру “конец строки” в текстовый файл, имеется специальная стандартная процедура WRITELN. Дело в том, что мы не можем пользоваться процедурой WRITE, т.к. внешне (как значения типа CHAR) такого символа не существует. Параметром процедуры WRITELN является имя текстового файла, который находится в режиме записи. Пусть t – текстовый файл. Тогда после выполнения процедуры
WRITELN (t);
в позицию,
на которую было установлено окно,
запишется признак конца строки
и окно переместится на следующую
позицию. Будем использовать ‘#’ как
печатный символ для обозначения конца
строки как элемента файла.
t t
Состояние файла t до Состояние файла t после
выполнения
процедуры выполнения процедуры
Вторая
стандартная процедура для
READLN (t);
После выполнения этого оператора все компоненты файла t пропускаются до ближайшей управляющей литеры “конец строки”, окно устанавливается на компоненту, непосредственно следующую за признаком конца строки.
t
Состояние
файла t до выполнения процедуры
t
Состояние
файла t после выполнения процедуры
Для текстовых файлов допустимы сокращенные формы записи при последовательных обращениях к стандартным процедурам READ, READLN, WRITE,WRITELN.
Пусть t – текстовый файл, а xi – элементы ввода или вывода (i = 1,…, n). Тогда
READ (t, x1, x2, …, xn);
эквивалентно
READ (t, x1); READ (t, x2); … READ (t, xn);
а
READLN (t, x1, x2, …, xn);
эквивалентно
READ (t, x1, x2, …, xn); READLN (t);
Аналогично
WRITE (t, x1, x2, …, xn);
эквивалентно
WRITE (t, x1); WRITE (t, x2); … WRITE (t, xn);
а
WRITELN (t, x1, x2, …, xn);
эквивалентно
WRITE (t, x1, x2, …, xn); WRITELN (t);
Для текстовых файлов можно использовать следующие общие процедуры работы с файлами:
ASSIGN (f, name);
CLOSE (f);
RESET (f);
REWRITE (f);
READ (f);
WRITE (f).
Для добавления информации в конец текстового файла используется стандартная процедура
APPEND (f).
При её выполнении открывается файл, с которым связана файловая переменная f, и окно устанавливается на конец файла.
К стандартным функциям EOF (f) и EOLN (f) можно добавить:
SEEKEOF (f) – отличается от EOF (f) тем, что пропускаются стоящие в конце файла символы пробела и табуляции,
SEEKEOLN (f) – то же для конца строки.
Пример 2. Из текстового файла Т прочитать попарно вещественные числа и, считая в каждой паре первое число – вещественной частью комплексного числа, а второе – его мнимой частью, записать их в файл комплексных чисел С.
Тогда, опуская действия, связанные с контролем ввода-вывода, можно записать следующую программу.
PROGRAM COMPL;
TYPE COMPLEX = RECORD
RE, IM : INTEGER;
EN
VAR F1 : TEXT;
F2 : FILE OF COMPLEX;
X : COMPLEX;
I, N : INTEGER;
BEGIN
ASSIGN (F1, ‘T’);
ASSIGN (F2, ‘C’);
REWRITE (F1);
WHILE NOT EOF DO
BEGIN
READ (N);
WRITELN (F1, N);
END;
REWRITE (F2); RESET (F1);
WHILE NOT SEEKEOF (F1) DO
BEGIN
READ (F1, X.RE);
IF SEEKEOF (F1)
THEN X.IM := 0
ELSE READ (F1, X.IM);
WRITE (F2, X)
END;
RESET (F2);
WHILE NOT EOF (F2) DO
BEGIN
READ (F2, X);
WRITELN (X.RE, ‘+I*’, X.IM);
END;
CLOSE (F1);
CLOSE (F1);
END.
В
Паскале есть два стандартных
текстовых файла, предназначенных
для ввода и вывода информации.
Это файлы INPUT и OUTPUT. Вся информация,
предназначенная для ввода, записывается
нами в файл INPUT и вводится (считывается
из него) с помощью процедур READ, READLN. Вся
информация, предназначенная для вывода,
записывается программой в файл OUTPUT с
помощью процедур WRITE, WRITELN.
Особенности стандартных файлов
RESET (INPUT); REWRITE (OUTPUT).
Более того, применять их в явном виде к стандартным файлам запрещено*.
READ (x) и READ (INPUT, x),
WRITE (y) и WRITE (OUTPUT, y),
WRITELN и WRITELN (OUTPUT),
EOF и EOF (INPUT),
EOLN и EOLN (INPUT).
Важной особенностью текстовых файлов является правило, по которому в качестве типов вводимых значений можно использовать не только CHAR, но и INTEGER, и REAL. При этом, конечно, тип вводимого данного должен соответствовать типу переменной, являющейся фактическим параметром процедуры READ.
Из стандартного файла INPUT можно вводить только значения типов CHAR, REAL, INTEGER.
Вывод в стандартный текстовый файл OUTPUT (процедуры WRITE, WRITELN) обладает дополнительными возможностями по сравнению с выводом в обычные файлы.
Рассмотрим оператор процедуры WRITE (x);
Элемент вывода x может иметь один из трех видов
l l : m l : m : n,
где l – выражение типа CHAR, INTEGER, REAL, BOOLEAN, строковая константа или строковая переменная,
m, n – выражения, принимающие целые положительные значения.
Следует
иметь в виду, что в файл OUTPUT
выводятся последовательности литер,
которые разбиваются на строки фиксированной
длины. При выводе на экран дисплея строки
содержат 80 позиций. Для вывода используется
буфер (специальный участок оперативной
памяти машины), в котором предварительно
формируется строка литер, подлежащих
выводу, т.е. все значения других типов
преобразуются в литерную (символьную)
форму. К началу выполнения программы
этот буфер очищается, все его позиции
заполняются пробелами. При обработке
элемента вывода в операторе WRITE в очередные
свободные позиции буфера заносится группа
литер, представляющих значение элемента
x.
l – строковая константа. Тогда в буфер заносится последовательность литер в этой строке.
Пусть l имеет значение ‘F(x) =’. В буфер занесется 5 литер: F(x) =
l – выражение типа CHAR. Занесется единственная литера, являющаяся значением этого выражения.
l – логическое выражение. Занесутся либо 4 литеры – TRUE, либо 5 литер – FALSE.
l – выражение типа INTEGER. Значение
выражения (целое число) преобразуется
из внутреннего (машинного) представления
в последовательность литер, представляющих
собой запись этого числа в десятичной
системе. Количество позиций обычно равно
8, недостающие слева слова заменяются
пробелами. Пример:
I := 243; WRITE (I);
+243 или 243.
l – выражение типа REAL. Значение представляется в десятичной системе счисления в файле с плавающей точкой. Пример:
где m – мантисса
p – порядок,
и
после аналогичных
X := 0.0025; WRITE (X/10);
+0.244999E-03 или 0.244999Е-03
При обработке списков элементов вывода буфер постепенно заполняется литерами. Как только буфер заполнится, сформированная строка литер выводится на очередную строку экрана или принтера.