Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по программированию..pdf
Скачиваний:
10
Добавлен:
15.11.2022
Размер:
12.2 Mб
Скачать

WriteLn;

WriteLn(FR, * Результаты*);

WriteLn(FR);

WriteLn(* T(l) T(2) T(3) T(4) T(5)*);

WriteLn(FK, ' T(l) T(2) T(3) T(4) T(5)’);

For I :* 1 To 5 Do

Begin

Write(T[I] : 8 2);

Write(FR, T[I] 8 2)

End;

Close(FD);

Close(FR)

End.

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

Задания

1.Дан файл вещественных чисел. Определить количество нулевых значений в этом файле.

2.Даны два файла целых чисел. Определить, являются ли они тож­ дественными.

3.Даны два символьных файла одинакового размера. Произвести обмен информацией между ними.

4.Имеется внешний текстовый файл. Напечатать первую из самых коротких его строк.

5.Описать процедуру Lines (Т), которая построчно печатает со­ держимое непустого текстового файла Т, вставляя в начало каждой печатаемой строки ее порядковый номер (он должен занимать четыре позиции) и пробел.

6.В текстовом файле Т записана непустая последовательность ве­

щественных чисел, разделенных пробелами. Описать функцию Мах(Т) для нахождения наибольшего из этих чисел.

Лекция 14

14.1. Комбинированный тип данных

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

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

Такая структура называется двухуровневым деревом. В Паскале эта информация может храниться в одной переменной типа record (запись). Задать тип и описать соответствующую переменную можно следующим образом:

Type

Anketal

* Record

String[50];

{ Поля }

 

 

 

FI0

 

 

 

Pol

Char;

{ записи

}

 

 

Dat

String[16];

 

 

Adres

String[50];

{ или элементы }

 

 

Curs

1..5;

 

 

Grup

1..10;

{ записи

>

 

 

Stip

Real

Var

Student

End;

 

 

 

Anketal;

 

 

 

Такая запись так же, как и соответствующее ей дерево, называется двухуровневой.

К каждому элементу записи можно обратиться, используя составное имя, которое имеет следующую структуру:

<имя переменной>.<имя поля>

Например, student.fio; student.dat и т.п. Если, например, требуется полю “курс” присвоить значение “3” , то это делается так:

Student.Curs := 3;

Поля записи могут иметь любой тип, в частности, сами могут быть записями. Такая возможность используется в том случае, когда требзгется представить многоуровневое дерево (более 2 уровней). Например, те же сведения о студентах можно отобразить трехуровневым дере­ вом:

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

Type

Anketa2

= Record

String[50];

 

 

 

FIO

 

 

 

Pol

Char;

 

 

 

 

Dat

Record

Integer;

 

 

 

God

 

 

 

Mes

String[10];

 

 

 

Den

1. .31

 

 

Adres

End;

 

 

 

 

Record

 

String[20];

 

 

 

Gorod

 

 

 

UIDomKv

String[30];

 

 

Curs

End;

 

 

 

 

1. .5;

 

 

 

 

Grup

1..10;

 

 

 

 

Stip

Real

 

 

Var

Student

End;

 

 

 

Anketa2;

 

 

 

Поля такой записи, находящиеся на третьем уровне, идентифи­ цируются тройным составным именем. Например, student.D&t.God;

student.adres.Gorod.

Приведем струхтурограмму задания комбинированного типа:

«Скомбинированный тип>

----------------------------------------------- > record — ^Ссписок полей> — >*end — ►

< список полей>

- •<тип> •

* <имя поля>

о *

<z >

Впрограмме могут использоваться массивы записей. Если на фа­

культете 500 студентов, то все анкетные данные о них можно предста­ вить в массиве:

Var Student

Array[i..500] Of Anketal;

В таком случае, например, год рождения 5-го в списке студента хра­ нится в переменной student [5] .Dat.God.

Любая обработка записей, в том числе ввод и вывод, производится поэлементно. Например, ввод сведений о 500 студентах можно органи­ зовать следующим образом:

For I := 1 То 500 Do

With Student[I] Do

Begin

Write( ’ Ф . И.0.: ’); ReadLn(FIO);

Write(’Пол (м/х): ’); ReadLn(Pol);

Write(’Дата рождения: ’); ReadLn(Dat);

Write(’Anpec: ’); ReadLn(Adres);

Write(’Kypc: ’); ReadLn(Curs);

Write(’Группа: ’); ReadLn(Grup);

Write(’Стипендия (руб.): ’); ReadLn(Stip)

End;

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

with <переменная типа запись> do <операт.ор>;

Он позволяет, один рал указав имя переменной типа “запись” по­ сле слова with, работать в пределах оператора с именами полей как с обычными переменными, т.е. не писать громоздких составных Е^ен

Тип “запись” в Паскале может иметь переменный состав noj*e£ ко­ торый меняется в ходе выполнения программы. Такая в о з м о ^ ость