- •Конспект лекций
- •1.4 Общая структура программы
- •1.5 Стандартные процедуры и функции
- •1.6 Процедуры ввода/вывода
- •2. Простые типы данных
- •2.1 Целые типы
- •2.2 Вещественные типы
- •2.3 Cимвольный тип данных
- •2.4 Логический тип данных.
- •2.5 Ограниченные типы
- •2.6 Перечислимые типы
- •2.7 Описание типов
- •2.8 Преобразование типов
- •2.9 Порядок вычисления выражений
- •3. Операторы языка Паскаль
- •3.1 Оператор присваивания
- •3.2 Составной оператор
- •3.3 Условный оператор
- •3.4 Оператор выбора case
- •3.5 Оператор цикла с параметром (цикл for)
- •3.6 Оператор цикла с предусловием (цикл while)
- •1 Вариант:
- •2 Вариант:
- •3 Вариант:
- •3.7 Оператор цикла с постусловием (цикл repeat)
- •3.8 Вложенные циклы
- •3.9 Оператор перехода goto
- •4. Массивы
- •4.2 Сортировка элементов массива
- •4.3 Многомерные массивы
- •5. Подпрограммы (процедуры и функции)
- •5.1 Процедуры
- •5.2 Функции
- •5.3 Области действия имен
- •5.4 Параметры процедур и функций
- •5.5 Побочные эффекты при использовании подпрограмм
- •5.6 Передача массивов в подпрограммы
- •5.7 Параметры-костанты
- •5.8 Массивы открытого типа
- •5.9 Рекурсия в подпрограммах
- •6. Строковый тип данных
- •6.1 Описание строк
- •6.2 Операции со строками
- •6.3 Процедуры и функции для работы со строками
- •7. Стандартные модули Турбо-Паскаля
- •7.1 Модули турбо3 и graph3
- •7.2 Модуль overlay
- •7.3 Модуль dos
- •7.4 Модуль system
- •7.5 Модуль printer
- •7.6 Модуль crt
- •7.7 Модуль graph
- •8. Записи
- •8.1 Определение записи
- •8.2 Оператор над записями
- •8.3 Вложенные записи
- •8.4 Массив записей
- •8.5 Записи с вариантами
- •9. Файлы
- •9.1 Определение файла
- •9.2 Процедуры и функции для работы с файлами
- •9.3 Нетипизированные файлы
- •10. Интегрированная среда Турбо Паскаля
- •10.1 Как начать работу с Турбо Паскалем
- •10.2 Ваша первая программа
9.2 Процедуры и функции для работы с файлами
assign (<файловая переменная>, <имя.расширение>); - устанавливает связь между файловой переменной и именем файла на диске. Имя файла состоит из двух частей: имя (не более 8 символов) и расширение (не более 3 символов). Расширение может отсутствовать.
Например, assign(f1,’res.txt’);
Далее в программе, где будет упоминаться переменная f1 - подразумевается, что работа ведется с реальным файлом res.txt .
reset (<файловая переменная >); - открывает существующий файл для чтения.
Например, reset(f1);
rewrite (<файловая переменная >); - открывает файл для записи. Если файла нет на диске, то он создается. Если есть такой файл, то он создается заново пустым, вся старая информация стирается.
Например, rewrite(f1);
append (<файловая переменная >); - открывает файл для добавления в него новой информации (старая не стирается). Только для текстовых файлов (!).
Например, append(f1);
read (<файловая переменная >, <переменная>); - чтение одного элемента из файла, соответствующего файловой переменной, и помещение его в переменную программы. Чтение осуществляется последовательно, после чтения каждого значения, указатель в файле перемещается на следующую позицию.
Пример: Пусть на диске есть символьный файл mebel. Задача: написать программу, которая последовательно считывает из этого файла первые 4 символа и выводит их на экран.
Изобразим файл следующим образом:
-
1-ый байт памяти
2-ой байт памяти
…
Mebel
с
т
о
л
…
Программа:
var F1: file of char;
x: char; i:integer;
Begin
assign(F1,’mebel’);
reset(F1);
for i:=1 to 4 do
begin
read(F1,x);
write(x);
end;
close(F1);
End.
На экране увидим:
стол
Для текстового файла может использоваться процедура readln, которая читает значение из файла и пропускает непрочитанную часть строки и признак конца строки.
write (<файловая переменная >, <переменная>); - запись в файл данных из переменных программы. Вывод информации осуществляется последовательно.
var f1: file of char;
y: array [1..100] of integer;
…
for i:=1 to 100 do write(f1,y[i]);
eof (var f): boolean; - функция проверки конца файла. Возвращает true, если достигнут конец файла, иначе возвращает false.
while not eof(f) do read(f,x);
{команда читается так: пока не конец файла делай команду: чтение очередного элемента из файла, соответствующего файловой переменной f, в переменную x}
close (<файловая переменная >); - процедура закрытия файла, завершает действия с файлом. После процедуры close файловую переменную можно связать с другим файлом или снова открыть этот же файл.
assign(f2,’MyFile.txt’);
rewrite (f2);
…
close(f2);
reset(f2);
…
close(f2);
assign(f2,’OtherFile.txt’);
reset(f2);
…
Пример 1: Программа, переписывающая из файла a.txt в файл b.txt все символы, кроме цифр.
var ch: char:
f1,f2: text:
begin
assign(f1, ‘a.txt’);
assign(f2, ‘b.txt’);
reset(f1);
rewrite(f2);
repeat
read(f1,ch);
if (ch<=’0’) or (ch>=’9’) then write(f2,ch);
until eof(f1);
close(f1); close(f2);
end.
Пример 2: Программа для вычисления и вывода в файл таблицы Пифагора (таблицы умножения).
Var i, j, n : Integer;
f : Text;
Begin
Assign(f, ‘tab_pif.txt’);
Rewrite(f);
For i := 1 to 9 do begin
For j := 1 to 9 do begin
n := i*j;
Write(n:4); {вывод результата на экран}
Write(f, n:4); {вывод результата в файл; т.е., если в процедуре Write первым параметром
указана файловая переменная, то вывод осуществляется не на экран, а в файл,
с которым связана эта переменная в процедуре Assign }
end;
WriteLn; {перевод строки на экране}
WriteLn(f); {перевод строки в файле}
end;
Close(f);
End.
rename(<файловая переменная>,<новое имя файла>); - переименование файла на диске. Перед использованием этой поцедуры необходимо связать файловую переменную со старым именем файла. Если файл был открыт, то необходимо его закрыть.
Пример:
var f1,f2: text;
i: integer;
begin
assign(f1, ‘res.txt’);
rename(f1, ‘res.old’);
assign(f2, ‘res.old’);
rewrite(f2);
for i:=1 to 20 do writeln(f2,i);
close(f2);
end.
erase (<файловая переменная>); - удаление файла с диска. Если файл был открыт, то закрыть, связать с файловой переменной.
assign(f,’res.old’);
erase(f);
seek (<файловая переменная>, N); - перемещение в заданную позицию файла, нумерация позиций с нуля, N – номер позиции. Не используется для текстовых файлов (!).
0
a.dat
2 |
5 |
3 |
8 |
8 |
6 |
Пример:
var f: file of integer;
i: integer;
begin
assign(f,’a.dat’);
reset(f); N=0
read(f,i); i=2
seek(f,4); N=4
read(f,i); i=8
end.
filesize(<файловая переменная>): longint; - функция, возвращает текущий размер файла (количество компонентов!).
Пример 3: Программа, меняющая порядок символов в файле на обратный.
var f1.f2: file of char;
i,n: integer;
ch: char;
begin
assign(f1,’a.txt’);
assign(f2,’b.txt’);
reset(f1);
rewrite(f2);
h:=filesize(f1);
for i:=h-1 downto 0 do
begin
seek(f1,i);
read(f1,ch);
write(f2,ch);
end;
close(f1);
close(f2);
end.