Тема 5. Записи. Раздел 4.

Скачать презентацию Тема 5. Записи.    Раздел 4. Скачать презентацию Тема 5. Записи. Раздел 4.

Т5_Записи.ppt

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

>Тема 5. Записи.    Раздел 4. 3.   Стр. 60 -64. Тема 5. Записи. Раздел 4. 3. Стр. 60 -64.

>Эпиграф • Кто отказался от излишеств, тот избавился от лишений.   Кант (22. Эпиграф • Кто отказался от излишеств, тот избавился от лишений. Кант (22. 04. 1724 – 12. 02. 1804)

>5. 1. Назначение • Записи предназначены для хранения  разнородной информации о каком-либо 5. 1. Назначение • Записи предназначены для хранения разнородной информации о каком-либо объекте. Это могут быть технические характеристики некоторого устройства, экономические данные предприятия или сведения о человеке. • Записи применяются при создании баз данных (БД).

>5. 2. Определение • Запись ( или комбинированный тип  данных) представляет собой 5. 2. Определение • Запись ( или комбинированный тип данных) представляет собой структурированную переменную. • Она может содержать элементы различных типов. • Входящие в состав записи элементы называются полями и имеют свои имена.

> 5. 3. Описание • Запись, содержит зарезервированные слова Record  и End. 5. 3. Описание • Запись, содержит зарезервированные слова Record и End. • Объявление записи в программе: Var Имя записи : Record Имя первого поля: <тип>; Имя второго поля: <тип>; . Имя последнего поля: <тип> End;

>Описание (продолжение).  • После зарезервированного слова Record  точка с запятой не ставится. Описание (продолжение). • После зарезервированного слова Record точка с запятой не ставится. • Описания отдельных полей (или групп полей, принадлежащих одному типу) завершаются точкой с запятой (кроме последнего поля перед служебным словом End).

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

>Описание (продолжение).  • Количество полей в записи  фиксировано и определяется  описанием Описание (продолжение). • Количество полей в записи фиксировано и определяется описанием записи. • Имена полей в пределах записи не должны повторяться.

>Описание (продолжение).  • Если в программе объявлено несколько комбинированных типов, имена полей, Описание (продолжение). • Если в программе объявлено несколько комбинированных типов, имена полей, принадлежащих разным типам, могут совпадать: конфликта имен при этом не будет, поскольку обращение к отдельным полям производится с указанием имени записи.

>Описание (продолжение).  • Как и с другими идентификаторами в  программах на Turbo Описание (продолжение). • Как и с другими идентификаторами в программах на Turbo Pascal, следует стремится, чтобы имена полей соответствовали смыслу информации в том или ином поле. • А информация, в свою очередь, должна соответствовать типу своего поля.

>5. 4. Пример хранения информации • Характеристики ПК:  тип процессора;  тактовая частота 5. 4. Пример хранения информации • Характеристики ПК: тип процессора; тактовая частота процессора (МГц); размер оперативной памяти (Мб); гарантия (количество лет); тип монитора; размер экрана (дюйм); размер зерна (мм);

> Пример описания • Var Personal_Computer: Record Processor: String[20];  Freq, Ram: Word; Пример описания • Var Personal_Computer: Record Processor: String[20]; Freq, Ram: Word; Garantee: Byte; Monitor: String[20]; Display. Size: Byte; Pixel: Single; End;

>5. 5. Обращение к полю записи • Для того, чтобы в программе обратиться к 5. 5. Обращение к полю записи • Для того, чтобы в программе обратиться к отдельному полю записи, необходимо указать: - имя записи, - точку, - имя поля.

>Пример содержания записи § Если в структуру Personal_Computer необходимо записать следующую информацию:  – Пример содержания записи § Если в структуру Personal_Computer необходимо записать следующую информацию: – процессор Pentium II c тактовой частотой 400 МГц; – размер оперативной памяти 64 Мб; – гарантия 2 года; – монитор Hyundai с экраном 15 дюймов при размере зерна 0. 28 мм;

>Ввод в в структуру Personal_Computer данных Personal_Computer. Processor: ='Pentium II'; Personal_Computer. Freq: =400; Personal_Computer. Ввод в в структуру Personal_Computer данных Personal_Computer. Processor: ='Pentium II'; Personal_Computer. Freq: =400; Personal_Computer. Ram: =64; Personal_Computer. Garantee: =2; Personal_Computer. Monitor: ='Hyundai'; Personal_Computer. Display. Size: =15; Personal_Computer. Pixel: =0. 28;

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

>Пример: {Описание типа данных} Type Pc_Type=Record   Processor: String[20];  Freq: Word; Пример: {Описание типа данных} Type Pc_Type=Record Processor: String[20]; Freq: Word; Ram: Word; Garantee: Byte; Monitor: String[20]; Display. Size: Byte; Pixel: Single; End;

> Пример (продолжение): {Описание константы}: Const Personal_Computer 1: Pc_Type =  (Processor: 'AMDK 6'; Пример (продолжение): {Описание константы}: Const Personal_Computer 1: Pc_Type = (Processor: 'AMDK 6'; Freq: 266; Ram: 64; Garantee: 2; Monitor: 'Hyundai'; Display. Size: 14; Pixel: 0. 28);

>5. 6. Оператор With • Указывать имя записи перед обращением  к каждому ее 5. 6. Оператор With • Указывать имя записи перед обращением к каждому ее полю неудобно, особенно если оно состоит из большого числа символов. • В Turbo. Pascal используется групповой оператор With имя записи Do оператор, позволяющий в операторе, который, как правило, бывает составным, указывать только имена полей.

>Оператор With имеет вид:  With P Do S; Слова With и Do имеют Оператор With имеет вид: With P Do S; Слова With и Do имеют смысл с и выполнить соответственно. Идентификатор P – имя переменной комбинированного типа. Идентификатор S – оператор (часто составной).

>Оператор With (продолжение) • Слова With и Do являются зарезервированными.  • Имя записи Оператор With (продолжение) • Слова With и Do являются зарезервированными. • Имя записи указывается один раз после слова With.

>5. 7. Пример оператора With Personal_Computer Do Begin Processor: ='Pentium II';  Freq: =400; 5. 7. Пример оператора With Personal_Computer Do Begin Processor: ='Pentium II'; Freq: =400; Ram: =64; Garantee: =2; Monitor: ='Hyundai'; Display. Size: =15; Pixel: =0. 28; End;

>Замечание.  • В примере имя переменной  Personal_Computer употребляется  всего один раз Замечание. • В примере имя переменной Personal_Computer употребляется всего один раз – после оператора With. • Затем все действия над полями (в составном операторе) выполняются только с указанием имен полей. • Следовательно, оператор With особенно полезен, когда обрабатывается несколько полей одной переменной комбинированного типа.

>5. 8. Вложенные записи.  • Возможно существование записей,  отдельные поля которых представляют 5. 8. Вложенные записи. • Возможно существование записей, отдельные поля которых представляют собой также записи. • Составные имена, с помощью которых можно обращаться к полям вложенных записей, должны включать: - имя основной записи; - имя вложенной записи; - имя поля.

> 5. 9. Записи с вариантами.  • В состав записи может входить только 5. 9. Записи с вариантами. • В состав записи может входить только одно поле, к которому допускается обращение как к переменным разных типов. • Такое поле называется вариантным и начинается с зарезервированных слов Case и Of, между которыми указывается имя порядкового типа.

> Записи с вариантами (продолжение) • Для указания варианта формально  записывается константа того Записи с вариантами (продолжение) • Для указания варианта формально записывается константа того же типа, но ее значение на выбор варианта не влияет. • Вариант типа данных определяется по имени поля, поэтому эти имена должны быть различными.

> Записи с вариантами (продолжение) • Объявленный ниже тип Char_to_Sym  соответствует записи, имеющей Записи с вариантами (продолжение) • Объявленный ниже тип Char_to_Sym соответствует записи, имеющей поле, к которому можно обращаться как к переменной типа Char или как к переменной типа Byte. • Такую запись можно использовать для определения кода символа или получения символа по его коду.

>Пример программы Программа 4. 4. {Раздел описаний} Type Char_to_Sym=Record   case Byte of Пример программы Программа 4. 4. {Раздел описаний} Type Char_to_Sym=Record case Byte of 1: (_Char: Char); 2: (_Byte: Byte); End; Var symbol_code: Char_to_Sym;

>Begin With symbol_code Do  Begin {Ввод символа} Write('Введите символ ');  Readln(_Char); {Вывод Begin With symbol_code Do Begin {Ввод символа} Write('Введите символ '); Readln(_Char); {Вывод его кода} Writeln('Его код = ', _Byte); {Ввод кода} Write('Введите код символа '); Readln(_Byte); {Вывод соответствующего ему символа} Writeln('Символ ', _Char); End.

>Замечание • В приведенном примере в состав записи  входит единственное поле, являющееся Замечание • В приведенном примере в состав записи входит единственное поле, являющееся вариантным. • Если число полей больше одного, вариантное поле при объявлении записи обязательно указывается последним среди всех полей.

>5. 10. Применимые операции.  • 5. 10. 1. Действия над полями записи. 5. 10. Применимые операции. • 5. 10. 1. Действия над полями записи. • 5. 10. 2. Действия над записями.

>5. 10. 1. Действия над полями  записи.  • Поле записи представляет собой 5. 10. 1. Действия над полями записи. • Поле записи представляет собой переменную, которую можно использовать в выражениях. (Чтобы обратиться к полю записи достаточно указать имя записи и имя поля. ) • Набор операций над полями записи соответствует операциям, допустимым для типа, которому принадлежит данное поле.

> 5. 10. 2. Действия над записями. 1. Оператор With – оператор над записями, 5. 10. 2. Действия над записями. 1. Оператор With – оператор над записями, который позволяет не упоминать имя записи в идентификаторе каждого ее поля. 2. Оператор присваивания. Значения переменных, принадлежащих комбинированному типу, можно присваивать другим переменным того же типа. Например, если X и Y – записи одного типа, то допустимо: X: =Y;

>  Действия над записями. (Продолжение) • Нельзя использовать с записями операции сравнения. Действия над записями. (Продолжение) • Нельзя использовать с записями операции сравнения. Например, оператор While X=Y Do … применять НЕЛЬЗЯ. • Однако, если такая необходимость существует, можно сравнить по очереди каждое поле одной записи с полями другой.

>Действия над записями. (Продолжение) • Нельзя применять к записям в целом операции: - арифметические; Действия над записями. (Продолжение) • Нельзя применять к записям в целом операции: - арифметические; - логические.

>Действия над записями. (Продолжение) • Нельзя применять стандартные процедуры ввода-вывода Read и Write к Действия над записями. (Продолжение) • Нельзя применять стандартные процедуры ввода-вывода Read и Write к записям (как и к массивам в целом). • Можно организовать ввод или вывод на экран каждого поля записи в отдельности.

>Пример программы работы с массивом записей.  • Раздел описаний Uses CRT; Type Pupil= Пример программы работы с массивом записей. • Раздел описаний Uses CRT; Type Pupil= Record Fam, Name: String[10]; KR 1, KR 2: Byte End; Var IIKT: Array[1. . 30] Of Pupil; U: Pupil; i, j, n: Integer;

>Begin {Ввод данных} Clr. Scr;  Write. Ln('Введите количество учеников');  Read. Ln(n); Begin {Ввод данных} Clr. Scr; Write. Ln('Введите количество учеников'); Read. Ln(n); For i: =1 To n Do With IIKT[i] Do Begin Write. Ln('Введите фамилию'); Read. Ln(Fam); Write. Ln('Введите имя'); Read. Ln(Name); Write. Ln('Введите оценку за КР 1'); Read. Ln(KR 1); Write. Ln('Введите оценку за КР 2'); Read. Ln(KR 2); End;

> Сортировка массива записей • {Сортировка по полю фамилия} For i: =1 To n-1 Сортировка массива записей • {Сортировка по полю фамилия} For i: =1 To n-1 Do For j: =1 To n-i Do If IIKT[j]. Fam>IIKT[j+1]. Fam Then Begin U: =IIKT[j]; IIKT[j]: =IIKT[j+1]; IIKT[j+1]: =U; End;

>{Вывод таблицы результатов} Clr. Scr; Write. Ln('Таблица успеваемости': 20); Write. Ln('Фамилия': 10, 'Имя': 10, {Вывод таблицы результатов} Clr. Scr; Write. Ln('Таблица успеваемости': 20); Write. Ln('Фамилия': 10, 'Имя': 10, 'Средний балл': 15); Write. Ln; For i: =1 To n Do With IIKT[i] Do Write. Ln(Fam: 10, Name: 10, (KR 1+KR 2)/2: 6: 1); Read. Ln; End.

>Ввод данных в программу: Ввод данных в программу:

>Результат выполнения программы: Результат выполнения программы:

>Выводы: 1. Записи предназначены для ввода, хранения и обработки информации, состоящей из элементов с Выводы: 1. Записи предназначены для ввода, хранения и обработки информации, состоящей из элементов с разными типами данных. Зарезервированные слова-Record-End. 2. Элементы записи называются полями. Каждое поле имеет имя, тип данных и размер.

>Выводы (продолжение): 3. Для работы с записью целиком  используются только два оператора: Выводы (продолжение): 3. Для работы с записью целиком используются только два оператора: - оператор над записями (With); - оператор присваивания (: =); 4. Обычно в программах обрабатываются не одиночные записи, а массивы, которые представляют собой базы данных (БД).