Скачать презентацию Тема 2 Составные типы данных записи 1 Описание Скачать презентацию Тема 2 Составные типы данных записи 1 Описание

записи.ppt

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

Тема 2: Составные типы данных (записи) 1. Описание комбинированного типа (записи) 2. Оператор присоединения Тема 2: Составные типы данных (записи) 1. Описание комбинированного типа (записи) 2. Оператор присоединения 3. Записи с вариантами 4. Примеры организации структур данных с использованием комбинированного типа 5. Примеры программ с использованием записей 1

2. 1. Описание комбинированного типа Комбинированный тип список полей record end Список полей фиксированная 2. 1. Описание комбинированного типа Комбинированный тип список полей record end Список полей фиксированная часть вариантная часть ; ; Фиксированная часть , любой, кроме файлового идентификатор (имя поля) : тип ; В программе обращение: <имя записи>. <имя поля> селектор записи 2

Данные с использованием записей: фамилия имя возраст Л. Кэролл Алиса в стране чудес 1989 Данные с использованием записей: фамилия имя возраст Л. Кэролл Алиса в стране чудес 1989 автор название книги название издательства год издания количество страниц Var man: Record Name: String[10]; First. Name: String[40]; Second. Name: String[20]; end; Var book: Record Author: String[80]; Name. Title: String[100]; Name. House: String[20]; Year: word; Number. Page: word; end; 3

Примеры описания записи type TPlanet=Record //сведения о планете Name: String[20]; 1 вариант описания video: Примеры описания записи type TPlanet=Record //сведения о планете Name: String[20]; 1 вариант описания video: Boolean; diametr, r_orb: Real end; Var planeta: TPlanet; 2 вариант описания Var planeta: Record Name: String[20]; video: Boolean; diametr, r_orb: Real end; В памяти ЭВМ - name video diametr R_orb В программе обращение: planeta. Name - это переменная типа String[20] planeta. video - это переменная типа Boolean planeta. diametr - это переменная типа Real planet. name: =‘ Венера‘; planet. video: =True; planet. diametr: =12104; {Км} planet. r_orb: =108. 2; {Гм} 4

Пример 1 Var Address: Record Name: String[20]; {имя абонента} Number. Home: Integer; {номер дома} Пример 1 Var Address: Record Name: String[20]; {имя абонента} Number. Home: Integer; {номер дома} Поля с одинаковым именем! Name: String[20]; {название улицы} City. Name: String[20]; {название города} Apart. Num: Integer {номер телефона} End; Var Address: Record Name: String[20]; {имя абонента} Number. Home: Integer; {номер дома} Name. Street: String[20]; {название улицы} City. Name: String[20]; {название города} Apart. Num: Integer {номер телефона} End; Пример 2 Var Addr. Abon: Record Name: String[20]; {имя абонента} Apart. Num: Integer {номер телефона} End; Имена полей в разных записях и Address: Record имена отдельных переменных могут Name: String[20]; {улица} совпадать! Home: Integer; {дом} end; 5 name: String[40];

2. 2. Оператор присоединения with <имя записи> do <оператор>; Пример: planet. name: =‘Венера‘; planet. 2. 2. Оператор присоединения with <имя записи> do <оператор>; Пример: planet. name: =‘Венера‘; planet. video: =True; planet. diametr: =12104; {Км} planet. r_orb: =108. 2; {Гм} как правило, составной With planet do begin name: =‘Венера‘; video: =True; diametr: =12104; {Км} r_orb: =108. 2; {Гм} end; 6

Операции над записью – операции над ее полями!. . . Const kol_planet=10; Type TPlanet=Record Операции над записью – операции над ее полями!. . . Const kol_planet=10; Type TPlanet=Record Name: String[20]; video: Boolean; diametr, r_orb: Real end; Var Sol. System: array[1. . kol_planet]of TPlanet; i: 1. . kol_planet; . . . for i: =1 to kol_planet do with sol. System[i] do if r_orb<4000 then video: =True else video: =false; . . . Sol. System name video diametr R_orb. . . Sol. System[1]. name: =‘Венера’; name video diametr R_orb Sol. System[10] Sol. System[1]. name[3] - ?

2. 3. Записи с вариантами Список полей фиксированная часть вариантная часть ; ; Вариантная 2. 3. Записи с вариантами Список полей фиксированная часть вариантная часть ; ; Вариантная часть of идентификатор case альтернатива ; Альтернатива константа : ( список полей ) , один тип <константа>: (); если нет полей! 8

Пример записи с вариантом: Type TPerson. Sex=(Male, Female); TPerson=record Name: String[20]; case Sex: TPerson. Пример записи с вариантом: Type TPerson. Sex=(Male, Female); TPerson=record Name: String[20]; case Sex: TPerson. Sex of Male: (Army, Smoking: boolean); Female: (); end; . . . Var Man, Woman: TPerson; . . . if Man. Sex=Male then Man. Smoking: =True; . . . 9

Следует помнить: • для размещения записи всегда отводится фиксированный объем памяти, причем, размер всегда Следует помнить: • для размещения записи всегда отводится фиксированный объем памяти, причем, размер всегда определяется по самому большому варианту; • Object Pascal не содержит никаких средств контроля за правильностью работы с вариантами записи Woman. Sex: =Female; Woman. Smoking: =True; выполнится 10

2. 4. Примеры организации структур данных с использованием комбинированного типа Пример 1: {тип Rec 2. 4. Примеры организации структур данных с использованием комбинированного типа Пример 1: {тип Rec – запись} Type Rec=record R: Real; B: Boolean; C: Char; end; . . . Var R: Rec; //описание записи. . . R. R: =3. 1415; //использование R. B: =True; //полей записи R. C: =‘*’; //в программе. . . 11

Пример 2: тип Arr. Of. Record - массив записей и Record. Of. Array - Пример 2: тип Arr. Of. Record - массив записей и Record. Of. Array - запись с полями массивов Type Arr. Of. Record=array[1. . n] of Rec; Record. Of. Array=Record Arr. Int: array[1. . m]of Integer; Arr. Char: array[1. . d]of Char; end; . . . //описание Var Arr: Arr. Of. Record; Rec. Arr: Record. Of. Array; . . . //использование Примечание: Type Rec=record Arr[i]. R: =4. 67; Arr[i]. B: =False; Arr[i]. C: =‘!’; R: Real; . . . B: Boolean; Rec. Arr. Int[i]: =3; C: Char; Rec. Arr. Char[i]: =‘@’; end; . . . 12

Пример 3: тип Record. Of. Record - запись с полем типа запись Примечание: Type Пример 3: тип Record. Of. Record - запись с полем типа запись Примечание: Type Rec=record R: Real; B: Boolean; C: Char; end; Type Record. Of. Record=record I: Integer; S: String[20]; Z: Rec; end; . . . //описание Var RR: Record. Of. Record; . . . //использование RR. I: =7; RR. S: =‘Это строка!’; RR. Z. R: =10 e-6; . . . 13

Пример структуры данных с использованием записи Type TSubject=(Inform, Matem, Biochem, Biophys); TMark=2. . 5; Пример структуры данных с использованием записи Type TSubject=(Inform, Matem, Biochem, Biophys); TMark=2. . 5; TMark. Subject=array[TSubject]of TMark; TDay=1. . 31; TMonth=(Jan, Feb, Mar, Apr, May, Yune, Yuly, Aug, Sept, Okt, Nov, Dec); TYear=1900. . 2000; TDate=record day: TDay; Month: TMonth; Jear: TJear; end; TPerson=record Name, Second. Name, Ser. Name: String[30]; Sex: (Male, Female); Birthday: TDate; Marks: TMark. Subject; end; TGroup=array[0. . 12] of TPerson; Var Group: TGroup; . . . { доступ к компонентам в программе } Group[i]. Name: =‘Саша ’; Group[i]. Birthday. Year: =1970; 14 Group[i]. Marks[Inform]: =5; . . .

2. 5. Примеры программ с использованием записей Пример 1. Задание: С клавиатуры вводится информация 2. 5. Примеры программ с использованием записей Пример 1. Задание: С клавиатуры вводится информация о десяти студентах (фамилия, номер группы, пять оценок за последнюю сессию). Требуется вывести фамилии студентах, имеющих средний балл, больший или равный четырем. student ball [1] name строка из 10 символов ball [2] ball [3] [2. . 5] Var st: array[1. . 10] of student; ball [4] ball [5] gruppa srednball вещественн ый тип Type student = record name: string[10]; {поле фамилии студента} gruppa: integer; {поле номера группы} ball: array[1. . 5] of 2. . 5; {массив, содержащий оценки} srednball: real; {поле среднего балла} 15 end;

sess. exe 16 sess. exe 16

Пример 2: использование типизированного файла записей Задание: Создать файл с анкетными данными: фамилия и Пример 2: использование типизированного файла записей Задание: Создать файл с анкетными данными: фамилия и инициалы, год рождения, пол анкетируемого. Примечание: Программа не работает с кириллицей! 17

2. Программа использования файла данных Задание: В файле с анкетными данными: фамилия и инициалы, 2. Программа использования файла данных Задание: В файле с анкетными данными: фамилия и инициалы, год рождения, пол анкетируемого, подсчитать количество мужчин. f_r 2. exe 18

Пример 4: удаление и добавление в типизированный файл записей 19 Пример 4: удаление и добавление в типизированный файл записей 19

20 20

В конце программы В начале программы f_r 3. exe 21 В конце программы В начале программы f_r 3. exe 21

2 версия программы 22 2 версия программы 22

23 23

Пример 3: текстовые файлы с записями Задание: в текстовом файле содержатся данные по студентам Пример 3: текстовые файлы с записями Задание: в текстовом файле содержатся данные по студентам за последнюю сессию (всего три экзамена). Определить количество студентов каждая фамилия занимает 15 позиций 24

2. Программа file_text 5. exe 25 2. Программа file_text 5. exe 25

Программа к примеру 2 (типизированные файлы) Перевод текстового файла в типизированный 26 Программа к примеру 2 (типизированные файлы) Перевод текстового файла в типизированный 26