Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмизация и программирование. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
1 Мб
Скачать
61
Задание. Удалить все созданные файлы.
Текст программы.
Var a,b: file of real; c: file of integer;
BEGIN
Assign(a,’c:\a.dat’);
Assign(b,’c:\b.dat’);
Assign(c,’c:\primer.dat’);
Erase(a); Erase(b); Erase(c);
END.
Задания для самостоятельной работы
1. Заполните с клавиатуры файл, состоящий из 15 целых чисел. Выведи-
те его содержимое на экран. Найдите наибольшее число в файле.
2. Заполните файл нечётными числами из промежутка от 1 до 70. Выве­дите его содержимое на экран. Найдите сумму элементов файла.
3. Заполните файл случайными целыми числами из промежутка [-50..50]. Выведите его содержимое на экран. Создайте второй файл и поместите в него все числа из первого файла кратные 3. Выведите содержимое файла на экран.
4. Заполните с клавиатуры файл десятью целыми числами. Выведите его содержимое на экран. Создайте второй файл и поместите в него все чис­ла из первого файла, которые больше или равны.
5. Напишите программу для удаления всех созданных ранее файлов.
15. ТЕКСТОВЫЕ ФАЙЛЫ
Текстовые файлы предназначены для хранения текстовой информации. Текстовый файл представляет собой совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой записи (строки) ставится специальный признак EOLN (End OfLiNe - конец строки), а в конце всего файла - признак EOF (End Of File - конец файла). Для описания соответству­ющих файловых переменных используется стандартный тип text.
Пример:
Var t: text;
62
Процедуры и функции для работы с текстовыми файлами
Также как и при работе с типизированными файлами для связи фи­зического файла с файловой переменной используется процедура Assign. Файлы создаются процедурой Rewrite, открываются для чтения процеду­рой Reset, закрываются Close. Помимо уже известных нам процедур, для работы с текстовыми файлами используются несколько новых.
Append(t) – открывает существующий текстовый файл для добав­ления информации в конец файла.
Readln(t, v1, v2, v3, ... vn) – читает информацию из текстового файла t и записывает её в переменные v1, v2,... vn. Тип переменных мо­жет быть не только строковым, но также целым или вещественным.
Writeln(t,v1,v2,v3, ... vn) – записывает информацию в текстовый файл и добавляет в файл признак конца строки. v1, v2, ... vn - перемен­ные целого, вещественного или строкового типа, содержащие информа­цию, помещаемую в файл.
При работе с текстовыми файлами можно также использовать про­цедуры Read и Write, но нужно помнить, что после операций чтения или записи переход к следующей строке осуществляется только в случае исчерпания текущей строки. Процедуры Readln и Writeln позволяют со­вершить этот переход, не дожидаясь конца строки. Поскольку в Паскале представлен большой и удобный инструментарий для работы со строка­ми, использование Readln и Writeln является более предпочтительным. Например, мы можем прочитать целую строку из файла, а затем обрабо­тать её процедурами и функциями, предназначенными для работы со строковыми значениями.
Также применяется несколько специфических функций:
Eoln(t) – используется для определения конца строки. Возвращает значение true, если текущий указатель находится за последней компо­нентой строки, false в противном случае.
SeekEoln(t) – производит поиск конца текущей строки файла. Пе­ремещает указатель к следующему значению в строке. Если достигнут конец строки, возвращается true.
SeekEof(t) – производит поиск конца файла. Перемещает указатель к следующему значению. Если достигнут конец файла, возвращается true.
Задание. Создать текстовый файл, состоящий из 7 строк. Сохра­нить его на диске C под именем spisok.txt
Текст программы.
Var s:string;
t:text;
63
i:integer;
BEGIN Assign(t,'С:\spisok.txt'); Rewrite(t);
for i:=1 to 7 do begin
Write('Введите строку №', i,' '); Readln(s);
Writeln(t, s);
end; Close (t); END.
Задание. В файле spisok.txt найти общее количество символов
(сумму длин всех строк). Полученный результат записать в конец фай­ла. Вывести на экран содержимое файла.
Текст программы.
Var s :string; t: text; n:integer; BEGIN Assign(t,'C:\spisok.txt'); Reset(t); n:=0; While not (EOF(t)) do begin Readln(t,s);
n:=n+length(s);
end; Close (t); Append(t); Writeln(t, 'Общее количество символов в файле -', n); Close (t); Writeln(‘Вывод содержимого файла’); Reset(t); While not (EOF(t)) do begin Readln(t,s); Writeln(s); end; Close (t); End.
64
Задание. Создайте текстовый файл twin.txt. Перепишите в него все символы из файла spisok.txt, кроме символа 'a'. Выведите на экран содер­жимое файла twin.txt.
Текст программы.
Var t, t1: text;
s:string;
c:char;
BEGIN
Assign(t,'d:\spisok.txt');
Assign(t1,'d:\twin.txt');
Reset(t);
Rewrite(t1);
While not EOF(t) do begin
Read(t, c); if c <> ’a’ then Write (t1, c);
end;
Close (t);
Close (t1);
Writeln(‘Вывод содержимого файла.’);
Reset(t1);
While not (EOF(t1)) do begin
Readln(t1,s);
Writeln(s);
end;
Close (t1);
End.
Задания для самостоятельной работы
1. Создайте файл baza.txt, состоящий из 20 строк
2. Для файла baza.txt найдите среднее количество символов в строке.
3. Для файла baza.txt найдите наименьшее количество символов в строке.
4. Создайте файл itog.txt. Перепишите в него всю информацию из файла
baza.txt, удваивая при этом каждое вхождение буквы “z”.
5. Создайте файл result.txt. Перепишите в него всю информацию из фай- ла baza.txt, заменяя буквы “f” на символ “*”.
6. Напишите программу для удаления созданных ранее файлов.
65
16. ЗАПИСИ
Под записью в Паскале понимают фиксированное число элементов одного или нескольких типов. То есть в отличие от массивов, в которых могут содержаться элементы одного типа, в записях могут содержаться элементы как одного, так и разных типов. Например, в формате записи можно организовать единицу хранения информации о книгах в библио­теке: автор, название книги, издательство, год издания, цена. Первые три элемента относятся к строковому типу данных, четвертый к целому, а цена - к вещественному типу. Элементы записи называются полями за­писи, с ними можно выполнять действия, допустимые с данными соот­ветствующих типов.
Перед использованием типа-запись его рекомендуется описать в
разделе описания типов по следующей схеме
type Имя типа = record
Список полей1: тип1;
Список полей2: тип2;
………………………..
end;
Все идентификаторы полей в записи должны быть различными.
Пример:
type card = record
author: string [15]; title, firm: string [20]; year: integer ; price: real
end;
После описания типа-записи появляется возможность его использо­вания в программе. Например, можно описать переменную соответствую­щего типа.
Пример: Var book: card;
Обращение к полю выполняется с помощью составного имени (се­лектора записи), которое схематично можно представить так
Имя записи . имя поля
66
Пример: book.author:= ’Толстой Л.Н.’; //Присваиваем полю записи значение book.title:=’Война и мир’; Readln(book.price); // Заполняем поле записи с клавиатуры
При работе с записями для упрощения и сокращения составных имен можно использовать оператор with. Он имеет следующий вид
with имя записи do оператор;
После слова do, при обращении к полям записи, указывать их “роди-
теля” уже не нужно.
Пример: With book do begin author:= ’Толстой Л.Н.’; title:=’Война и мир’; Readln(price); end;
На практике записи обычно используют совместно с другими фор-
мами хранения данных (обычно массивами или файлами).
Задание. Создать файл записей о книгах, хранящихся на складе
(5 книг).
Текст программы.
type card = record // Описываем тип запись author:string[15]; title: string[100]; price: real; end; Var a: card; f: file of card; i:integer; BEGIN Assign(f, ‘c:\books.dat’); // Заполняем файл Rewrite(f); for i:=1 to 5 do begin Writeln('----------------------------------------------'); Writeln('Введите информацию по лоту №', i); Write('автор-'); Readln(a.author); Write('название- '); Readln(a.title);
67
Write('цена-'); Readln(a.price); Write(f,a); end; Close(f); END.
Задание. В файле books.dat найти все книги по фамилии автора, вве-
дённой пользователем.
Текст программы.
type card = record author:string[15]; title: string[100]; price: real; end; Var a: card; f: file of card; i:integer; s:string; BEGIN Assign(f, ‘c:\books.dat’); Reset(f) write('Введите фамилию автора для поиска'); Readln(s); i:=0; Repeat; Read(f, a); if a.author=s then begin i:=i+1; Writeln(‘Автор -’, a.author); Writeln(‘ Название - ’, a.title); Writeln(‘ Цена ’, a.price); Writeln; end; Until EOF(f); Writeln(‘общее количество найденных записей - ’, i); Close(f) END.
Задание. В файле books.dat найти автора с самой короткой фа­милией и выведите информацию по любой его книге.
68
Текст программы.
type card = record author:string[15]; title: string[100]; price: real; end; Var a, min: card; f: file of card; BEGIN Assign(f, ‘c:\books.dat’); Reset(f); Read(f, min); // Предполагаем, что фамилия первой записи самая //короткая Repeat Read(f, a); If length(a.author)< length(min.author) then min:=a; Until EOF(f); Writeln(‘Данные по автору с самой короткой фамилией ’); With min do begin Writeln(‘Автор -’, author); Writeln(‘ Название - ’, title); Writeln(‘ Цена ’, price); end; Close(f) END.
Особой разновидностью записей являются "записи с вариантами", которые объявляются с помощью зарезервированного слова case. Такие записи позволяют одновременно сохранять данные, часть структуры кото­рых совпадает по форме, а часть различается.
Пример:
Var
Figura: record // переменная типа запись
x: real; // текущая координата x
y: real; // текущая координата y
Case Tip: (Kvadrat, Krug, Treug) of // вариантная часть
Triangle: (side1, side2, ugol: real); // параметры треугольника
Square: (side: real); // параметры квадрата
Circle: (Radius: real); // параметры окружности
end;
69
В приведённом примере описана переменная типа запись, предна­значенная для хранения параметров геометрических фигур (квадрата, треугольника и окружности). Для треугольника задаются две стороны и угол между ними, для квадрата одна сторона, для окружности её радиус. Общей частью являются координаты центра фигуры x, y. Вариантная часть может быть только одна и должна располагаться в конце. Начинает­ся она служебным словом case, за которым следует переменная выбора варианта (в нашем примере - Tip). За каждым возможным значением этой переменной через двоеточие в круглых скобках записываются поля дан­ного варианта записи с указанием их типов. Круглые скобки необходимы, если даже для данного варианта записи поля отсутствуют.
Пример:
type figura= record
x,y:integer;
Case Tip:(Kvadrat, Krug, Treug) of
kvadrat: (side: real);
Krug:(radius: real);
Treug: (side1, side2, ugol: real);
end;
Var a,b: figura;
BEGIN
a.x:=20;
a.Tip:=Kvadrat;
a.side:=10;
b.ugol:=30; // Tip для b по умолчанию будет равен Treug
END.
Задания для самостоятельной работы
1. Создайте файл записей, содержащий информацию о 10и грузовых ав-
томобилях автобазы: марка, госномер, грузоподъемность (тонн), расход топлива на 100 км (литр).
2. Напишите программу, выводящую на экран содержимое созданного ранее файла.
3. Составьте программу, выводящую всю информацию о машине по её госномеру.
4. Составьте программу, выводящую всю информацию о самой эконо- мичной машине (из соотношения грузоподъемность/расход топлива).
5. Напишите программу, выводящую на экран информацию о машинах грузоподъемностью свыше 5 тонн.
6. Составьте программу, находящую машину с самой большой грузо- подъемностью.
70
7. Напишите программу, определяющую машин какой марки на автобазе меньше 5 единиц.
8. Составьте программу, находящую суммарный расход топлива на 100 км всех машин определённой марки. Марка автомобиля вводится пользова­телем.
9. Напишите программу, выводящую на экран информацию о машинах, расход топлива на 100 км которых находится в диапазоне 8-10 литров.
10. Напишите программу, выводящую на экран информацию о машинах, пробег 100 км которых обходится дороже 5000 руб. Цену топлива вводит пользователь.
17. СРЕДСТВА КОМПЬЮТЕРНОЙ ГРАФИКИ
Язык Паскаль содержит достаточно много разнообразных инстру-
ментов для реализации средств компьютерной графики. Для использова­ния графики, необходимо подключить специальный модуль GpaphABC, содержащий большой набор графических процедур, функций констант и т.д. То есть в раздел описания программы должен начаться с директивы Uses GpaphABC. Результаты работы программы, применяющей ресурсы модуля GpaphABC будут отображаться в графическом окне, которое по умолчанию имеет координаты 640 Х 400 пикселей. Отсчёт координат начинается с верхнего левого угла.
Для работы с графическим окном используются следующие основ-
ные процедуры:
SetWindowWidth(w: integer); устанавливает ширину окна.
SetWindowHeight(h: integer); устанавливает высоту окна.
ClearWindow; ‒ очищает графическое окно белым цветом.
ClearWindow(c: ColorType); ‒ очищает окно цветом c.
SaveWindow(fname: string); ‒ сохраняет содержимое графиче-
ского окна в файл с именем fname.
LoadWindow(fname: string); ‒ выводит в графическое окно ри-
сунок из файла с именем fname. Файл ищется вначале в текущем каталоге, а затем в каталоге PascalABC\Media\Images.
FillWindow(fname: string); ‒ заполняет графическое окно мозаи-
кой из рисунка, содержащегося в файле с именем fname.
FillWindow(n: integer); ‒ заполняет графическое окно мозаикой
из рисунка с описателем n.
CloseWindow; закрывает графическое окно.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]