Open Library - открытая библиотека учебной информации

Открытая библиотека для школьников и студентов. Лекции, конспекты и учебные материалы по всем научным направлениям.

Категории

Информатика With x Do
просмотров - 239

Записи

End.

Begin

ReadLn(baza, nomer, fam, name, ocenka, sr_ball); читаем из файла очередную строку с данными

WriteLn(nomer:10, fam:15, name:15, ocenka:3, sr_ball:6:2 ); выводим ее на экран

End;

Close(baza); закрываем файл

ReadLn;

На экране появится:

ИС-09 Иванов Иван 4 4.12

ПО-09 Петров Петр 5 4.27

ЗИ-09 Сидоров Сидор 3 3.42

Конечно, правильное чтение данных из текстового файла возможно только тогда, когда мы точно знаем структуру этого файла.

На начальных этапах развития программирования, при решении математических, экономических или инженерных задач программисты, как правило, обходились десятком переменных, которые обрабатывались разными алгоритмами. С течением времени объемы обрабатываемых данных стали расти. Приходилось обрабатывать не один-два десятка чисел, а целые таблицы. К тому же таблицы стали содержать не только числовую, но и текстовую информацию. И тут на помощь пришли новые типы данных – массивы, строки, множества. С их помощью можно объединить несколько объектов под одним именем, а затем обращаться к ним поэлементно. Основное требование при создании таких структур – однотипность объединяемых объектов. При этом сложность многих реальных ситуаций требует для своего отражения более гибких средств программирования.

Практика показала, что для обработки больших совокупностей однотипных данных такая структура, как массив, очень полезна. Но массив полезен тогда, когда обрабатывается однотипная информация. Реальные задачи в большинстве своем имеют дело с обработкой данных различных типов: информация по кадрам, статистические данные, бухгалтерский учет, экономические задачи. В этих задачах существенно то, что совместно обрабатывается числовая и текстовая информация, причем, как правило, размерность обрабатываемых данных даже одного типа весьма различна. К примеру, для хранения данных об одном студенте (номер учебной группы, фамилия, имя, оценка по информатике, средний балл сдачи сессии) нельзя использовать один массив, так как эти данные разнотипны: номер группы, фамилия, имя – строки, оценка – целое, средний балл – вещественное. Конечно, можно использовать несколько массивов: один - для хранения номеров групп, второй – для хранения фамилий и имен, третий – для хранения оценок, четвертый – для хранения средних баллов и так далее. Связь между этими массивами можно установить с помощью индексов. При этом крайне важно будет решать сложную задачу целостности информации. К примеру, если произвести сортировку фамилий во втором массиве по алфавиту, то соответствующим образом крайне важно переставить элементы остальных массивов, чтобы фамилии соответствовали остальным данным. Это достаточно сложная задача.

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

Для работы с данными различных типов, но объединœенных в одну структуру под одним именем, в Паскале введен новый тип данных – запись.

Записи могут состоять из компонентов различных типов, называемых полями. Каждое поле можно рассматривать как отдельную переменную, имеющую свое имя.

В отличие от ранее рассмотренных типов данных, тип записи описывается в разделœе определœения типов:

Type TStudent = Record

nomer, fam, name : String[15];

ocenka : 2..5;

sr_ball : Real;

End;

Внимание! Описание записи заканчивается словом End, для которого нет слова Begin.

Описан тип записи с именем TStudent, имеющий поля:

nomer, fam, name - номер группы, фамилия и имя – строки длиной 15 символов,

ocenka - оценка по информатике – интервал от 2 до 5,

sr_ball - средний балл сдачи сессии – вещественное.

Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, при описании полей указываются их имена и через двоеточие – типы. Описание заканчивается словом End.

После определœения типа записи можно описать разные базовые структуры этого нового типа в разделœе описания переменных:

Var stud_1 : TStudent;

gruppa : Array [1..15] Of TStudent;

baza_gruppa : File Of TStunent;

Описанная переменная stud_1 имеет те же поля, что и запись типа TStudent. Чтобы обратиться к любому поля, крайне важно написать имя переменной и через точку – имя поля. Поле записи определœенного типа может являться операндом в любых выражениях того же типа, то есть к нему могут применяться операции, допустимые для переменных данного типа:

stud_1.nomer := ‘ИС-09’;

stud_1.fam := ‘Иванов’;

stud_1.name := ‘Ваня’;

stud_1.ocenka := 4;

stud_1.sr_ball := 4.12;

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

.nomer := ‘ИС-09’; это неправильно!

.fam := ‘Иванов’; это неправильно!

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

оператор;

где With - служебное слово c,

x - имя переменной-записи,

Внутри этого оператора поля переменной-записи обозначаются без имени самой записи:


Читайте также


  • - With x Do

    Записи End. Begin ReadLn(baza, nomer, fam, name, ocenka, sr_ball); читаем из файла очередную строку с данными WriteLn(nomer:10, fam:15, name:15, ocenka:3, sr_ball:6:2 ); выводим ее на экран End; Close(baza); закрываем файл ReadLn;На экране появится: ИС-09 Иванов Иван 4 4.12 ПО-09 Петров Петр 5 4.27 ЗИ-09 Сидоров Сидор 3 3.42 ... [читать подробенее]