Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП лабораторные работы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
779.26 Кб
Скачать

4. Тесты

Истина или ложь?

Каждое из представленных ниже утверждений либо верно, либо нет.

  1. Запись представляет собой совокупность родственных данных.

  2. Элементы, образующие запись, называются полями.

  3. Количество полей в записи фиксировано и определяется описанием записи.

  4. Имена полей в пределах записи могут повторяться.

  5. Если в программе объявлено несколько комбинированных типов, имена полей, принадлежащих разным типам, могут совпадать.

  6. После зарезервированного слова Record ставится точка с запятой.

  7. В записи может быть только одна вариантная часть, которая должна быть описана непременно после фиксированной части.

  8. Строка, начинающая вариантную часть, включает зарезервированные слова Case и of, имеющие смысл вариант и из соответственно.

  9. Фиксированная часть записи не всегда предшествует вариантной.

  10. Поле признака вариантной части не принадлежит ни к фиксированной, ни к вариантной частям и выносится в заголовок вариантной части.

Работа №12

Тема: Текстовые файлы.

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

1. Перечень знаний и умений, необходимых для выполнения лабораторной работы

Перед тем, как приступить к выполнению лабораторной работы, студенту необходимо ознакомиться со следующим материалом:

  • определение текстовых файлов;

  • описание текстовых файлов;

  • назначение и синтаксис процедур для работы с текстовыми файлами языка Turbo Pascal.

2. Пример решения задачи

Организовать текстовый файл, состоящий из N строк. Определить максимальный и минимальный размер строки в файле. Вывести содержимое файла на экран.

Решение задачи разобьём на три этапа:

1. инициализация текстового файла, ввод компонент файла;

2. поиск строки файла максимального и минимального размера;

3. вывод результатов на экран.

Инициализировать текстовый файл, используя файловую переменную f можно тремя способами:

1 способ:

Var f: file of string;

2 способ:

Type аа = file of string;

Var f: aa;

3 способ:

Var f: text;

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

assign(f,’f.dat’);

здесь f – файловая переменная, ’f.dat’- строковое имя существующего либо создаваемого файла.

Для хранения значения текущей компоненты строки файла используем строковую переменную а:

Var a: string;

Компоненты текстового файла вводятся аналогично компонентам типизированного файла в цикле, перед которым необходимо открыть файл для записи в него вводимых компонент:

rewrite(f); {открытие файла для записи}

writeln('вводите количество компонент файла f');

read(n);

writeln('введите компоненты файла f');

for i:=1 to n do

begin

readln(a); {считывание значения строковой компоненты}

writeln(f, a); {запись строки, значение которой хранится в переменной а в файл f}

end;

close(f); {закрытие файла f}

Алгоритм реализации второго этапа поиска строки максимального и минимального размера аналогичен поиску максимального и минимального элемента массива.

Обозначим за max – максимальный размер строки, размер текущей строки найдем используя функцию length(cтрока)- длина строки. За начальное значение max:=1 возьмем значение единицы – строка, состоящая из одного символа. В качестве минимального размера строки используем переменную min, а в качестве ее первоначального значения возьмем значение максимально возможной длины строки 255. Итак:

max:=1;

min:=255;

reset(f); {открываем файл для считывания из него}

while not (eof(f)) do {в цикле пока не считана последняя

компонента}

begin

readln(f,a); {читаем текущую компоненту}

if length(a)>max then max:=length(a); {если длина текущей

строки больше чем значение переменной max, то max присвоим значение длины текущей строки}

if length(a)<min then min:=length(a); {если длина текущей

строки меньше чем значение переменной min, то min присвоим значение длины текущей строки}

end; {конец цикла}

close(f); {закрываем файл}

Третий этап вывод компонентов файла и результатов поиска на экран:

reset(f); {открываем файл для считывания из него}

writeln;

writeln('Файл f:');

while not(eof(f)) do {в цикле пока не считана последняя

компонента файла}

begin

readln(f, а); {читаем текущую компоненту}

writeln(а); {выводим ее на экран }

end;

writeln(' максимальный размер строки файла f - max=', max);

writeln(' минимальный размер строки файла f - min=', min);

Вся программа имеет следующий вид:

program Rev;

uses CRT;

Var f: text; i,n: longint; а: string; min, max: integer;

begin

assign(f,’f.dat’);

rewrite(f); {открытие файла для записи}

writeln('вводите количество компонент файла f');

read(n);

writeln('введите компоненты файла f');

for i:=1 to n do

begin

readln(а); {считывание значения следующей компоненты}

writeln(f, а); {запись компоненты значение которой хранится в переменной а в файл f}

end;

close(f); {закрытие файла f}

max:=1;

min:=255;

reset(f); {открываем файл для считывания из него}

while not (eof(f)) do

begin

readln(f,a); {читаем текущую компоненту}

if length(a)>max then max:=length(a);

if length(a)<min then min:=length(a);

end;

close(f); {закрываем файл}

{Вывод файла на экран:}

reset(f);

writeln;

writeln('Файл f:');

while not(eof(f)) do

begin

readln(f, a);

writeln(a);

end;

close(f); {закрываем файл}

writeln(' максимальный размер строки файла f - max=', max);

writeln(' минимальный размер строки файла f- min=', min);

end.