
- •Переменные
- •Типы переменных и констант
- •Целые типы данных языка Turbo Pascal
- •Стандартные математические функции, используемые
- •Арифметические выражения
- •Операторы
- •Оператор присваивания
- •Ввод и вывод результатов вычислений
- •Общая структура программы на Turbo Pascal
- •Пример выполнения задания 1
- •Тема 2 Логические выражения Условный оператор
- •Условный оператор
- •Пример выполнения задания 2
- •Тема 3 Использование циклических структур. Операторы цикла с предусловием и с постусловием
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Пример выполнения задания 3
- •Тема 4 Использование циклических структур. Оператор цикла с параметром
- •Пример выполнения задания 4
- •Тема 5 Использование и обработка одномерного массива
- •Описание одномерного массива
- •Часто встречающиеся задачи на одномерный массив
- •Пример выполнения задания 5
- •Тема 6 Использование и обработка двумерного массива
- •Задачи с использованием главной или побочной диагонали матрицы
- •Пример выполнения задания 6
- •Тема 7 Организация программ с использованием функций
- •Пример выполнения задания 7
- •Тема 8 Организация программ с использованием процедур
- •Параметры
- •Пример выполнения задания 8
- •Тема 9 Текстовые файлы
- •Символьный тип данных
- •Операции над строками
- •Особенности работы со строками
- •Редактирование строк
- •Сору (s:string; start, len:integer):string;
- •Преобразование строк
- •Процедуры и функции для работы с текстовыми файлами
- •Примеры выполнения задания 9
- •Тема 10
- •Работа с комбинированными типами данных
- •(Записями)
- •Общие сведения
- •Особенности работы с записями
- •Пример выполнения задания 10
- •Тема 11 Типизированные файлы
- •Процедуры и функции для работы с типизированными файлами
- •Прямой доступ к элементам файла
- •Примеры выполнения задания 11
Процедуры и функции для работы с типизированными файлами
Процедуры
assign ( f : file; name : string );
rewrite ( f : file );
reset ( f : file);
close ( f : file);
и функция
eof(f : file ):boolean;
которые используются при обработке текстовых файлов, так и при обработке типизированных файлов, описаны в Теме 9 «Текстовые файлы».
Процедура
read( f: file, s: tp );
обеспечивает чтение из файла f отдельного элемента, на который показывает текущий указатель. Прочитанное значение присваивается переменной s, тип которой tp должен совпадать с типом элементов файла f., и указатель смещается на следующий элемент файла.
Процедура
write ( f : file, s : tp);
выполняет запись значения переменной s в очередной элемент файла f, на который показывает текущий указатель. После выполнения записи указатель файла смещается на следующий элемент файла.
Прямой доступ к элементам файла
Процедура
seek( f : file, n : longint );
позволяет заменить значение текущего указателя, установив его на элемент файла с заданным номером n. Текущий указатель теперь указывает на начало данного элемента и чтение (запись) будет производиться с этим элементом.
Для сложной обработки файла без перезаписи элементов в массив используются две функции.
Функция
filesize ( f :file ): longint;
определяет количество элементов файла f.
Например, сместить указатель на конец файла можно так:
seek( f, filesize( f ));
так как нумерация элементов файла начинается с нуля, то значение функции filesize( f ) будет на единицу больше номера последнего элемента файла.
Функция
filepos(f :file):longint;
возвращает номер элемента, на который установлен текущий указатель.
Например, установить указатель на начало предыдущего элемента можно так:
seek( f, filepos( f ) – 1);
Примеры выполнения задания 11
Пример 1. Создать файл f.dat из целых чисел. Переписать в файл g.dat из файла f.dat отрицательные элементы.
Первая программа создает файл f.dat.
program lab10_1;
uses CRT;
var f :file of integer;
i, n, x :integer;
begin clrscr;
assign{f, ‘f.dat’);
rewrite(f);
writeln(‘введите число элементов в файле’);
readln(n);
for i := 1 to n do
begin
writeln(‘введите значение’, i,‘ –го элемента’);
readln(x);
write(f,x)
end;
close(f)
end.
Следующая программа будет читать элементы файла f.dat, выбирать только те элементы, значения которых отрицательны, переписывать их в файл g.dat. Выводить элементы файла g.dat на экран ПК.
program lab10_11;
uses CRT;
var f ,g: file of integer;
i, x: integer;
begin clrscr;
assign{f, ‘f.dat’);
reset(f);
assign{g, ‘g.dat’);
rewrite(g);
while not eof (f) do
begin
read(f, x);
if x<0 then write (g, x)
end;
{вывод элементов файла g.dat на экран}
reset (g);
while not eof (g) do
begin
read(g, x);
writeln(x)
end;
close(f);
close(g)
end.
Пример 2. Содержимое файла f.dat не изменилось. Заменить элементы данного файла с отрицательными значениями на -1. Остальные элементы оставить без изменения.
program lab10_2;
uses сrt;
var f: file of integer;
i, x: integer;
begin clrscr;
assign(f, ‘f.dat’);
reset(f);
while not eof (f) do
begin
read(f, x);
if x<0 then
begin
x := -1;
seek(f, filepos (f) -1);
write(f, x)
end
end;
{вывод элементов файла f.dat на экран}
reset (f);
while not eof (f) do
begin
read(f, x);
writeln(x)
end;
close(f)
end.
Пример 3. На диске в файле с именем FV размещены вектора, каждый из которых содержит по 8 действительных элементов. Вычислить максимальные значения для каждого из векторов, записать их в файл GM и вывести на экран ПК.
program file12;
type vect = array [ 1..8 ] of real;
fil1 = file of vect;
fil2 = file of real;
var a: vect;
i: integer;
аmax, b: real;
f1: fil1;
f2: fil2;
begin clrscr;
assign ( f1, ' FV.DAT ');
assign ( f2, ' GM.DAT ');
reset ( f1 );
rewrite ( f2 );
while not eof ( f1 ) do
begin
read ( f1, a); amax := a[1];
for i := 1 to 8 do
if a[i] > amax then amax := a[i];
write( f2, amax );
end;
close( f2 );
reset( f2 );
while not eof ( f2 ) do
begin read ( f2, b );
writeln ( b : 7 : 2 )
end;
close(f1);
close(f2);
end.
ОГЛАВЛЕНИЕ
Тема 1. |
Основы построения программы. Вычисление значения арифметического выражения |
|
3 |
||
Тема 2. |
Логические выражения. Условный оператор |
16 |
Тема 3. |
Использование циклических структур. Операторы цикла с предусловием и с постусловием. |
24 |
Тема 4. |
Использование циклических структур. Оператор цикла с параметром. |
29 |
Тема 5. |
Использование и обработка одномерного массива. |
33 |
Тема 6. |
Использование и обработка двумерного массива. |
40 |
Тема 7. |
Организация программ с использованием функций. |
49 |
Тема 8. |
Организация программ с использованием процедур. |
55 |
Тема 9. |
Текстовые файлы. |
64 |
Тема 10. |
Работа с комбинированными типами данных (записями) |
80 |
Тема 11. |
Типизированные файлы. |
88 |
Редактор Н.Н. Калинина
Изд. лиц. ИД №02558 от 18.08.2000 г.
Подписано в печать 2010 г. Формат 60*84 1/16
Бумага офсетная. Объем п. л. Уч.-изд. л.
Тираж 350 экз. Заказ
Редакционно-издательский отдел СПбГУКиТ
192102. Санкт-Петербург, ул. Бухарестская, 22
Подразделение оперативной полиграфии СПбГУКиТ
192102. Санкт-Петербург, ул. Бухарестская, 22
4 5