Обработка полей записей
Для упрощения доступа к полям записи может использоваться оператор присоединения. Структура оператора имеет вид WITH <переменная_Типа_Запись> DO <оператор>; где WITH, DO - ключевые слова ( с, делать). Пример. WITH a DO// где a – запись, структуру см. в п. 11.1 begin name:='MARINA'; god:=1991; date:=23; mes:=3 end; Поле записи может иметь практически любой тип (массив, другая запись, множество). Доступ к вложенным элементам сложных структур, например к записи в записи, выполняется перечислением ряда полей через точку или оператор присоединения. Пример. Определим вложенную запись (запись в записи) TYPE STUDENT = RECORD name: string; DenRogden: RECORD den, mes: byte; god: word end; end; VAR z: STUDENT; Имя DenRogden в свою очередь тоже является записью, тогда обращение к вложенным полям выполняется в виде z.name := 'LIZA'; z.DenRogden.god := 1994; Используя оператор присоединения, к этим же полям можно получить доступ другими способами: WITH z DO begin name := 'LIZA'; with DenRogden DO god := 1994; end; или WITH z DO name := 'LIZA'; WITH Z DO with DenRogden DO god := 1994; К полю GOD можно также обратиться и следующим оператором: WITH z.DenRogden DO god:=1994; Используя тип "запись", можно составить базы данных для разных назначений, а затем обрабатывать их с помощью программы [3–6]. При этом нужно следить, чтобы среди идентификаторов полей не было одинаковых.
Задания с обработкой записей Задание 1 1. Ввести оценки студента по 5 экзаменам. Определить средний балл и подсчитать количество удовлетворительных, хороших и отличных оценок. Напечатать название предмета, если есть «неуд». 2. Дан список студентов и оценка каждого на экзамене (оценки на N экзаменах). Подсчитать количество удовлетворительных оценок, хороших, отлич- ных и средний балл в группе. Напечатать фамилии неуспевающих студентов. 3. Дан список студентов группы. Заполнить его следующими сведениями: фамилия, имя, отчество; имеет ли компьютер (если имеет, то какой и с какого года). Подсчитать сколько студентов имеют ПК. 4. Сформировать список студентов группы со следующими сведениями: фамилия, имя, отчество, знает ли языки программирования Pascal ABC, Cи (если да, где обучался и сколько лет). Подсчитать, сколько студентов знают язык Си, сколько – Pascal ABC, сколько – оба языка. 5. Сформировать список студентов группы, в котором указать фамилию (имя, отчество); город, в котором получил среднее образование (номер школы, если обучался в Омске). Подсчитать, сколько в группе иногородних студентов. 6. Сформировать запись «ключевые слова Pascal ABC»: слово и перевод. Подсчитать их количество. Организовать поиск: ключевое слово – перевод и наоборот. 7. Сформировать телефонный справочник. По номеру организовать поиск владельца, и наоборот. 8. Сформировать запись «Даты – праздники». Организовать в программе ввод дат, подсчитать число праздничных дней и рабочих. 9. Сформировать запись «английское слово – перевод». Вводя слово (английское или русское), найти перевод или выдать сообщение «нет в словаре». По возможности предусмотреть пополнение словаря. 10. Сформировать запись «операторы Pascal ABC»: оператор, действие. Подсчитать их количество и число операторов, имеющих повторяющиеся ключевые слова. 11. Сформировать запись «типы Pascal ABC»: имя, тип, операции, разрешенные в данном типе. Подсчитать количество разных операций и вывести списки типов для каждой операции. 12. Сформировать пополняемую базу данных «Континент – страны», в которой указать столицы, численность населения, крупные города. Организовать поиск страны по городу, стран или городов на континенте. 13. В файле задан список книг (автор, название, год издания). Разработать программу выбора книг, выпущенных ранее заданного года. 14. Сформировать список граждан, в котором указать фамилию, имя, отчество; адрес; профессию. Организовать в программе выборку и подсчет граждан с одинаковой профессией. 15. Сформировать список студентов группы, в котором указать фамилию, имя, отчество; день, число и месяц рождения. Организовать выборки по месяцу и году рождения. 16. Дан список студентов группы. Заполнить его следующими сведениями: фамилия, имя, отчество; день, число и месяц рождения. Распечатать список в порядке возрастания дат рождения. 17. Сформировать базу данных «Единицы измерения», в которой указать название единицы, обозначение, назначение, соотношение. Организовать поиск по любому полю. 18. Разработать базу данных «География. Реки», в которой указать название реки, местоположение, длину, глубину. 19. Разработать базу данных «Астрономия», в которой указать название звезды, величину, созвездие. 20. Разработать базу данных «Планеты солнечной системы», в которой указать название планеты, величину, удаленность, спутники. 21. Сформировать базу данных «Химические элементы», в которой указать название элемента, формулу, группу, организовать выборки. 22. Ввести сведения о человеке: фамилия, имя, отчество, пол, национальность, рост, вес, дата рождения. 23. Ввести сведения о гражданине: Ф.И.О., дата рождения, ИНН, № страхового свидетельства, № медицинского полиса. Запрограммировать поиск. 24. Сформировать справочник о спортивных командах: название, город, число сыгранных игр, число очков, количество игроков. Задание 2 Дополнить программу для предыдущего задания заполнением и обработкой файлов. Имя файла вводить с клавиатуры в процессе работы программы. Процедурные типы Для организации передачи в качестве фактических параметров процедур и функций в Pascal ABC применяются два процедурных типа: тип-процедура и тип-функция. При объявлении процедурных типов используется только заголовок процедуры или функции, например: TYPE Proc1 = Procedure(a, b, c: real; var d: real); Proc2 = Procedure(var b1, b2:byte); Proc3 = Procedure; Func = Function(x: real):real; Func2 = Function(s: string): string; Для объявления переменных процедурного типа используется запись: VAR pr: proc1; f: func; Пример применения параметра – функции : type Func = Function(x : real): real; Function F1(x: real): real; Begin . . . end; Procedure FF(n:byte; F:Func); Var ...; Begin . . . end; BEGIN . . . FF(2,F1); ... FF(5,F1); END. ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|