Скачать презентацию ЗАПИСИ 1 Определение записи Запись структура — Скачать презентацию ЗАПИСИ 1 Определение записи Запись структура —

Презентация 0.ppt

  • Количество слайдов: 10

ЗАПИСИ 1 ЗАПИСИ 1

Определение записи Запись (структура) - составная структура данных. Запись может объединять в единое целое Определение записи Запись (структура) - составная структура данных. Запись может объединять в единое целое любое количество структур данных разных типов: простых переменных, массивов, множеств и записей. Различают фиксированные (обычные) и вариантные записи. Обычная фиксированная запись состоит из одного или нескольких полей, для каждого из которых при объявлении указывается имя (идентификатор) и тип. Структура записи объявляется в секции TYPE, а затем в секции переменных можно объявить и переменные этого типа. Доступ к полю записи обеспечивается за счет использования так называемого квалифицированного имени, структура которого изображена имеет вид <имя переменной типа запись>. <имя поля> 2

Примеры задания типа type Tstudent = record {запись} {Список полей: } Name: string[20] {имя Примеры задания типа type Tstudent = record {запись} {Список полей: } Name: string[20] {имя и тип поля} Age: integer; {возраст от 1 до 250} Sex: Char; {’м’/’ж’} Phone: string[9]; Math. Anal : byte; { Мат. анализ} Lin. Alg : byte; {Лин. алгебра} Prog : byte; {Программирование} Phys : byte; {Физика} end; type Tstudent = record {запись} {Список полей: } Name: string[20] {имя и тип поля} Age: integer; {возраст от 1 до 250} Sex: Char; {’м’/’ж’} Phone: string[9]; Marks = record Math. Anal : byte; { Мат. анализ} Lin. Alg : byte; {Лин алгебра} Prog : byte; {Программирование} Phys : byte; {Физика} end; 3

Примеры объявления и использования type TMarks = record Math. Anal : byte; { Мат. Примеры объявления и использования type TMarks = record Math. Anal : byte; { Мат. анализ} Lin. Alg : byte; {Лин алгебра} Prog : byte; {Программирование} Phys : byte; {Физика} end; Tstudent = record {запись} Name: string[20] { имя и тип поля} Age: integer; {возраст от 1 до 250} Sex: Char; {’м’/’ж’} Phone: string[9]; Marks : TMarks; {оценки за семестр} end; Type TGrouup = array[1. . 25] of TStudent; var Group : TGroup; begin. . . Group[1]. Name : = ’Андреев А. Б. ’; Group[1]. Age : = 18; Group[1]. Sex : = ’м’; Group[1]. Phone : = ’’; { Пустая строка} Group[1]. Marks. Prog : = 4; {Присвоить значение полю Prog, входящему в состав структуры Marks, в свою очередь входящую в состав структуры типа Tstudent, являющейся 1 -м элементом массива Group}. . . 4

Оператор WITH Введен для упрощения работы с записями и придания тексту программы большей наглядности. Оператор WITH Введен для упрощения работы с записями и придания тексту программы большей наглядности. Структура оператора with <имя структуры> do <оператор> или <составной оператор>; Примеры записи: with Group[1] do begin Name : = ’Андреев А. Б. ’; Age : = 18; Sex : = ’м’; Phone : = ’’; {Пустая строка} Marks. Prog : = 4; end; readln(Group[i]. Name, Group[i]. Marks. Prog); или with Group[i] do readln(Name, Marks. Prog); К переменным типа «запись» могут в особых случаях применяться и групповые операции присваивания, когда одновременно присваиваются новые значения всем внутренним полям. Это, в частности, имеет место при работе с типизированными файлами 5

Работа с типизированными файлами Объявление типизированного файла: Var < имя файловой переменной > : Работа с типизированными файлами Объявление типизированного файла: Var < имя файловой переменной > : file of <тип элемента>; Assign (<имя файловой переменной>, <имя физического файла>); Assign (fl, filename); где filename – переменная типа string reset(<файловая переменная>); открыть файл для чтения (такой файл считается входным) rewrite(<файловая переменная>); открыть файл для записи (такой файл считается выходным) close(<файловая переменная>); закрыть файл read(<ф. п. >, <имя переменной>); присвоить переменной значение, прочитанное из файла write(<ф. п. >, <имя переменной>); записать в файл значение переменной 6

Информация записи, сохраненная в типизированном файле, представляется в машинной форме (в двоичном виде). Поэтому Информация записи, сохраненная в типизированном файле, представляется в машинной форме (в двоичном виде). Поэтому создать такой файл можно лишь программными средствами. 7

Пример. В текстовом файле “input. txt” размещено некоторое количество чисел, а в первой строке Пример. В текстовом файле “input. txt” размещено некоторое количество чисел, а в первой строке файла – их количество. Прочитать эти числа в память и затем – вывести в типизированный файл и одновременно на печать по 3 числа в строке. Program Demo; {Чтение чисел из текстового файла и вывод их на экран и в типизированный файл} Uses CRT; Var A: array[1. . 100] of integer; {входной массив} n. A : integer; {фактический объем массива} j : integer; {рабочая переменная} fl : text; {файловая переменная} frec: file of integer; begin clrscr; writeln('Программа читает числа из текстового файла ', '”input. txt”'); writeln(' ': 10, 'и выводит их на экран и в типизированный файл'); Assign(fl, 'input. txt'); {$I-} reset(fl); {$I+} 8

if IOResult <> 0 then writeln('Ошибка открытия файла'); else begin Assign(frec, 'myfile. dat'); rewrite(frec); if IOResult <> 0 then writeln('Ошибка открытия файла'); else begin Assign(frec, 'myfile. dat'); rewrite(frec); readln(fl, n. A); {из текущей строки взять только значение числа и после этого перейти на начало следующей строки} writeln('Объем массива = ', n. A); for j: =1 to n. A do begin read(fl, A[j]); write(frec, A[j]); write(A[j]: 4); if (j mod 3)=0 then writeln; {сменить строку} {end if} end; {for} if (n. A mod 3)<>0 then writeln; {сменить строку} {end if} close(fl); close(frec); end. 9

Задача 1. Список результатов экзамена в форме <Фамилия> <Оценка> по каждому студенту размещены в Задача 1. Список результатов экзамена в форме <Фамилия> <Оценка> по каждому студенту размещены в текстовом файле. Число строк файла произвольное, но не превышает 25. Прочитать эти данные и поместить их типизированном файле с именем ‘exam. dat’. 10