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

Практикум по основам программирования. Язык Паскаль

.pdf
Скачиваний:
9
Добавлен:
15.11.2022
Размер:
6.27 Mб
Скачать

2 - АЯ

ЗАПИСЬ

СЕМЕНОВ

1970

3 - АЯ

ЗАПИСЬ

КОРНЕЕВ

1968

Во многих реализациях языка ПАСКАЛЬ вместо символа / в программах употребляется символ А . Рас­ смотренные ниже две программы (РР74 и РР75) ис­ пользуют внешний файл с именем ABC.DAT.

П р о г р а м м а РР74 формирует файл и сохраняет его на внешнем носителе, что обеспечивается заданием внешнего имени ABC.DAT при открытии файла на за­ пись. Форма задания внешнего имени зависит от конк­ ретной реализации языка ПАСКАЛЬ. В данном случае приводится программа, реализованная в ОС РАФОС для СМ ЭВМ.

Ввод исходной информации во внешний файл в программе РР74 осуществляется до тех пор, пока не будет введена фамилия, состоящая из десяти звездочек (признак конца ввода). Это сделано для того, чтобы пользователю не надо было предварительно подсчиты­ вать количество вводимых записей. При вводе боль­ ших объемов информации это весьма обременительно. В данном примере признак конца ввода записывается в конец файла. Иноща удобнее работать с признаком конца файла, чем с функцией EOF.

PROGRAM РР74(INPUT);

TYPE ZAP=RECORD

ФИО: PACKED ARRAYC1..10D OF CHAR; ГОДР: INTEGER

END; FPK=FILE OF ZAP;

VAR FIZAP,RB:FPK; A:ZAP; IsINTEGER;

BEGIN

REWRITE(FIZAP, *ABC.DAT *); READLN;

REPEAT

WRITE <*=>*);

FOR I:=l TO 10 DO

READ(А.ФИОСID);

READLN(А.ГОДР);

FIZAPT:=A; PUT(FIZAP)

UNTIL А.фИО=************;

CLOSE(FIZAP)

END.

 

П р о т о к о л

р а б о т ы п р о г р а м м ы РР74:

= > ВОРОНОВ

1966

= >кох

1970

= > АРОНОВ

1972

= > РОМАНОВ

1968

= >**•****♦*•

0

В п р о г р а м м е РР75 из внешнего файла с име­ нем ABC.DAT удаляются все записи, соответствующие людям, родившимся до 1970 года. Для этого использу­ ется рабочий файл с внешним именем ’L.DAT’ в кото­ рый сначала последовательно переписываются из внешнего файла все оставляемые записи, затем внеш­ ний файл открывается на запись, рабочий ф айл -на чтение и все содержимое рабочего файла переписыва­ ется во внешний файл. При этом для контроля рабо­ ты программы оставляемые записи выдаются на тер­ минал.

PROGRAM РР75 (OUTPUT); TYPE ZAP=RECORD

ФИО:PACKED ARRAYC1..10] OF CHAR; ГОДР:INTEGER

END; FPK=FILE OF ZAP;

VAR FIZAP,RB:FPK; A:ZAP; I:INTEGER; BEGIN

<* ОТКРЫТИЕ НА ЧТЕНИЕ ОБРАБАТЫВАЕМОГО ФАЙЛА *) RESET(FIZAP,'ABC.DAT');

(* ОТКРЫТИЕ НА ЗАПИСЬ РАБОЧЕГО ФАЙЛА *) REWRITE(RB,'L.DAT');

WHILE FIZAPt.OMK>'##********' DO BEGIN

IF FIZAPf.rOAP>=1970 THEN BEGIN RBti-FIZAPT; PUT(RB); END;

GET(FIZAP)

END;

(• ЗАПИСЬ ПРИЗНАКА КОНЦА В РАБОЧИЙ ФАЙЛ «) RBt.ФИО:»'**********'; PUT(RB); CLOSE(RB);

<« ПЕРЕПИСЬ ИЗ РАБОЧЕГО ФАЙЛА В ОБРАБАТЫВАЕМЫЙ ФАЙЛ «) RESET(RB,'L.DAT')|

REWRITE(FIZAP,'ABC.DAT'); REPEAT

A:=RBT| FIZAPT:=A; WRITELN(А.ФИО,А.ГОДР:S); PUT(FIZAP); GET(RB)

UNTIL А.ФИО^'********** *; CLOSE(FIZAP)

END.

П р о т о к о л р а б о т ы п р о г р а м м ы PP75:

КОХ 1970 АРОНОВ 1972

......... О

Для добавления записей в конец существующего файла необходимо также воспользоваться промежуточ­ ным файлом. Сначала скопировать все содержимое об­ рабатываемого файла в промежуточный файл, записать в конец добавляемые записи, затем открыть на запись обрабатываемый файл и переписать в него все содер­ жимое промежуточного файла.

7.2. ТЕКСТОВЫЕ ФАЙЛЫ

Файлы, компонентами которых являются симво­ лы, называются текстовыми. Текстовые файлы отли­ чаются от обычных тем, что они делятся на строки. Каждая строка заканчивается специальным символом (признаком конца строки). При занесении информации в файл признак конца строки записывается при помо­ щи оператора WR1TELN. Оператор WRITELN(F) закан­ чивает текущую строку текстового файла F признаком конца строки. Для обнаружения признака конца строки при чтении используется стандартная функция EOLN(F), принимающая значение TRUE, если из фай­ ла F считан символ, за которым стоит признак конца строки, и значение FALSE в противном случае. Если значение EOLN(F) равно TRUE, то очередным симво­ лом, прочитанным из файла, является пробел! Опера­ тор READLN(F) пропускает все до начала следующей строки текстового файла F (F/ становится равным пер­ вому символу следующей строки).

Работу с текстовыми файлами можно осуществ­ лять как с помощью рассмотренных операций PUT и GET, так и с помощью операторов WRITE и READ. Эквивалентными являются следующие записи:

WRITE(Cr,S) и CT/:=S; PUT(CT);

READ(CT,S) и S:=CIY; GET(CI);

гДе C T - текстовый файл; S - символьная переменная. Приведем пример программы, работающей с тек­

стовым файлом. Пусть требуется построить файл, представляющий собой список группы. Удобно сделать ОД, чтобы в каждой строке файла записывалась одна Фамилия. При вводе каждая фамилия начинается с новой строки.

При обращении к стандартным процедурам READ, READLN, WRITE, WRITELN в качестве первого аргумента можно использовать имя любого текстового файла. Если имя файла не указано, то считается, что

происходит обращение к стандартному файлу. Пара­ метры стандартных процедур не обязательно должны быть символьного типа, они могут быть и других ти­ пов. В этом случае при передаче данных происходит неявное их преобразование.

7.3.ВОПРОСЫ И УПРАЖНЕНИЯ

1.В каких случаях удобно использовать файлы?

2.Где хранятся файлы?

3.Как в разделе типов задается файловый тип?

4.Как подразделяются файлы по видам доступа к его компонентам?

5.Каким образом описываются переменные файловых типов?

6*. Описать переменную СТ как переменную файло­ вого типа, если известно, что каждый компонент фай­ ла есть:

а} символ;

б) запись, содержащая поля:

ФИО:РАСКИ> ARRAY[1..10]OF CHAR; ГОДР:1960..1980.

Привести все возможные способы описания.

7*. Какие из приведенных ниже описаний являются неправильными описаниями переменных файлового типа и почему?

а) VAR F:TEXT;

б) VAR F1=FILE OF CHAR;

в) VAR F2:FILE OF PACKED ARRAY[1..15] OF CHAR; r) VAR F3:FILE OF ARRAY[’A’..T];

Д) VAR F4:FILE OF REAL;

8.Как осуществляется доступ к компонентам файлов?

9.Какие операции определены над файлами?

10. В чем разница между операторами REWR1'1E(FI) и REWRrrE(FT,,DIL.DAT’), между операторами RESET(FI)

и RESET(FI,’DIL.DAr)?

11*. Какие переменные должны быть описаны в про­ грамме, содержащей следующий фрагмент:

...FIL/:=’CA’; PUT(FIL)

икакие действия совершают эти операторы?

12.Известно, что X-переменная символьного типа и FELтекстовый файл. Будут ли эквивалентны операто­ ры

READ(FIL,X) и X:=FILf; GET(FIL);

WRTIE(FIL,X) и FILf:=X; PUT(FIL); ?

13. Определить тип стандартных файлов INPUT, OUTPUT. Нужно ли их описывать в программе? Нуж­ но ли эти файлы открывать на запись или на чтение? 14*. Переменная СНТ является переменной символь­ ного типа, переменные F1,F2 - типа TEXT, тип TEXT в языке стандартно определен как FILE OF CHAR. Какие из приведенных операторов являются эквивалентны­ ми? Какие операторы неправильно записаны?

а) WRITE(CHT);

з) WRITE(OUTPUT,CHT);

б) READ(CHT);

и)

READ(INPUT,CHT);

в) WRrrELN(Fl,CHT);

к) WRITELN(OUTPUT);

г) READLN(CHT,F2);

л) READLN(OUTPUT);

д) EOF(Fl);

м)

EOF(Fl,F2);

е) EOLN(CHT);

н) WRTTEfOTBEP);

ж) WRTrECOUTPUT.’OTBET);

о) EOF.

15*. Есть ли разница в результатах работы:

а) оператора WRITELN(FVAHCT) и группы операто­ ров:

WRITE(F1,’AH’):

WRITELN(F1,’CT);

б) оператора WRITELN(F1,’AHCT’) и группы операто­ ров:

WRITELN(F1,’AH’);

WRITELN(Fl,’Cr);?

16*. Известно, что файловая переменная FIL описыва­ ется следующим образом - FEL:FILE OF REAL, пере­ менная X является переменной вещественного типа, а файл FTL содержит один компонент - число 42.3. Найти ошибки в следующих фрагментах:

а) ...REWPJTE(FIL); RESET(FIL); X=FIL/;...

б) ...RESET(FIL); Х = И Ь /; GET(FIL); X:=X+FIL/;...

в) ...RESET(FIL); FIL/: =51.32; PUT(F1L);...

З А Д А Н И Е 2. РАБОТА С ВНЕШНИМИ ФАЙЛАМИ

Це л ь з а д а н и я

1.Ознакомление с возможностями организации файлов на внешних носителях в используемой ЭВМ.

2.Получение практических навыков работы с внешни­

ми файлами.

П о с т а н о в к а з а д а ч и Подготовить данные об абитуриентах, поступаю­

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

1.Фамилия, имя, отчество.

2.Год рождения.

3.Год окончания школы.

4.Оценки в аттестате.

5.Признак - нуждается ли в общежитии.

6.Оценки вступительных экзаменов.

Разработать программу записи подготовленных данных во внешний файл и программу обработки со­ зданного внешнего файла.

I. Удалить из внешнего файла все записи, удовлет воряющие условию, заданному в варианте, и распеча­ тать информацию, оставшуюся в файле.

П. Добавить N записей в начало(конец) внешнего файла и распечатать записи полученного файла соглас­ но конкретному варианту.

С о д е р ж а н и е о т ч е т а

1.Постановка задачи.

2.Анкетные данные абитуриентов.

3.Тексты программ и протоколы их работы.

4.Выводы.

М е т о д и ч е с к и е у к а з а н и я

1.При подготовке исходных данных необходимо учесть, что выходная информация программы обработ­ ки внешнего файла должна составлять не менее одной четверти от входной.

2.Программа записи данных во внешний файл долж­ на иметь структуру, аналогичную структуре программы

РР74, приведенной в гл. 7. Следует учесть, что в опе­ раторе REWRITE форма задания внешнего имени за­ висит от конкретной ЭВМ.

98

3. При составлении программы обработки данных, хранящихся во внешнем файле, необходимо ознако­ миться с программой РР75 и комментариями к ней.

В а р и а н т ы з а д а н и я

I. Из внешнего файла, содержащего исходные данные, удалить записи, соответствующие:

1. Абитуриентам, получившим хотя бы одну оценку 2.

2.Абитуриентам, получившим все оценки 3.

3.Абитуриентам, имеющим средний балл меньше 4

ихотя бы одну оценку 3 в аттестате.

4.Абитуриентам, имеющим средний балл больше 4,5

инуждающимся в общежитии.

5.Абитуриентам, имеющим средний балл в аттестате меньше 4.

6.Абитуриентам старше восемнадцати лет.

7.Абитуриентам, не получившим ни одной оценки 5.

8.Абитуриентам, имеющим отличный аттестат и по­ лучившим все оценки 5.

9.Абитуриентам, нуждающимся в общежитии и полу­ чившим хотя бы одну оценку 3.

10. Абитуриентам старше семнадцати лет, имеющим отличный аттестат.

Распечатать полученный файл.

П. Используя внешний, файл, содержащий исходные данные, добавить N записей и распечатать:

1.Список абитуриентов, имеющих в аттестате оценки

только 5; N=2.

2.Список абитуриентов, имеющих в аттестате одну оценку 4, а остальные оценки 5; N=3.

3.Список абитуриентов, имеющих средний балл боль­ ше 4,5; N=4.

4.Список абитуриентов, имеющих средний балл

меньше 4; N=1.

5.Список абитуриентов, не нуждающихся в общежи­ тии; N=2.

6.Список абитуриентов, нуждающихся в общежитии;

N=3.

7.Список абитуриентов, сдавших вступительные экза­ мены только на оценки 5; N=4.

8.Список абитуриентов, сдавших вступительные экза­

мены на оценки 4 и 5; N=2.

9. Список абитуриентов, сдавших экзамены с двумя оценками 4 и остальными оценками 5; N=3.

10. Список абитуриентов, получивших на вступитель­ ных экзаменах одну оценку 3; N=4.

З А Д А Н И Е 3. РАБОТА С УПОРЯДОЧЕННЫМИ ФАЙЛАМИ

Це л ь з а д а н и я

1.Ознакомление с возможностью добавления информа­ ции в упорядоченный внешний файл.

2.Получение навыков в организации работы с внеш­

ними файлами.

П о с т а н о в к а з а д а ч и

Подготовить список из N наименований товаров. Конкретное значение N указано в варианте. Информа­ ция о каждом товаре содержит:

1.Название товара.

2.Цену.

3.Год выпуска.

4.Количество.

Список должен быть упорядочен по одному из па­ раметров, указанных в конкретном варианте. Сведения по каждому товару необходимо представить в виде за­ писи.

Разработать программу, которая заносит во внеш­ ний файл записи упорядоченного списка, и программу, которая добавляет в сформированный внешний файл данные об М товарах, при этом не нарушая упорядо­ ченности исходного файла. Если среди добавляемых товаров встречается товар, сведения о котором в файле уже есть, то необходимо их обновить, т. е. старую за­ пись исключить.

С о д е р ж а н и е о т ч е т а

1.Постановка задачи.

2.Упорядоченный исходный список товаров и пере­ чень добавляемых товаров.

3.Тексты программ и протоколы их работы.

4.Анализ допущенных ошибок.

М е т о д и ч е с к и е у к а з а н и я 1. При подготовке исходных данных в качестве наиме­

нований товаров можно взять названия инструментов, книг, школьно-письменных принадлежностей и т. п. Для них соответственно указать цену, год выпуска, ко­ личество.

2. Программа записи информации о товарах во внешний файл по структуре может быть аналогичной программе РР74. Разница будет заключаться в

юо