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

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.