Структурированные типы в Pascal Pascal Структурированные типы данных в Pascal характеризуются множественностью образующих тип элементов. К этим типам относятся массивы, строки, множества, записи, файлы. Этот тип соответствует математическому представлению о множествах. Type = set of ; где имя_типа – идентификатор типа множества, - set of – ключевые слова описания типа: Множество из набора однотипных логи- чески связанных объектов (не более 256, нумерация объектов начинается с 0 до 255), - баз_тип – базовый тип элементов множества (любой порядковый тип, кроме word, integer, longint). Можно задать множество прямо в разделе описания переменных: Var : set of ; Для задания констант множественного типа исп. Конструктор множеств: заключенный в квадратные скобки список спецификаций элементов множества разделенных запятой. Спецификации элементов могут быть константы или выражения базового типа, а также тип-диапазон того же базового типа (например, 1..9). Конструкция вида [ ] означает пустое множество. Порядок перечисления элементов базового типа в константах не имеет значения. Множества ИП 1 Pascal
Структурированные типы в Pascal Pascal Множества Примеры определения и задания множественных типов: type Caps = set of 'A'.. 'Z'; Colors = set of (RED, GREEN, BLUE); Numbers = set of byte; var oct : set of 0.. 5; type digitchar = set of '0'.. '9'; digit = set of 0.. 9; var s1, s2, s3 : digitchar; s4, s5, s6 : digit; begin ……………. s1 := ['1', '2', '3']; s2 := ['3', '2', '1']; s3 := ['2', '3']; s4 := [0.. 3, 6]; s5 := [4, 5]; s6 := [3.. 9]; …………….. end. Тип "множество" задает набор всех возможных подмножеств входящих в него элементов (включая пустое). Если базовый тип, на котором строится множество имеет N элементов, то число подмножеств, входящих в это множество, равно 2 N. А переменная типа "множество" содержит одно конкретное подмножество значений множества. Например: var s : 1.. 3; - переменная интервального типа, принимает значения: 1, 2 и 3, а множество var m : set of 1.. 3; может принимать значения: [ ] [1] [2] [3] [1, 2] [1, 3] [2, 3] [1, 2, 3] Инициализация переменной-множества: var index set of = [0, 2, 4, 6, 8,]; В Конструкторе в качестве элемента может быть выражение или диапазон: [R, а mod 15, 14] или [chr(65).. chr(90)] ИП 2 Pascal
Структурированные типы в Pascal Pascal Множества Операции над множествами. Результат операции – множество := - Присваивание + - Объединение – элементы первого множества, дополненные элементами второго * - Пересечение – элементы, общие для обоих множеств - - Разность – элементы первого множества, которые не принадлежат второму Результат операции – логический = - Тождественность – true, когда все элементы обоих множества одинаковы (множества эквивалентны) <> - Нетождественность – true, когда множества неэквивалентны <= - Содержится в – true, если первое множество включено во второе >= - Содержит – true, если второе множество включено во первое in - Принадлежность – true, если первый (левый) операнд операции –выражение- принадлежит второму (правому) операнду -множеству (включен в него) Процедуры Include (s, i) - включает элемент i во множество s Exclude (s, i) - исключает элемент i из множества s ИП 3 Pascal
Структурированные типы в Pascal Pascal Множества Практическая работа: Program CalcSet; var x,y,r : real; op : char; begin …………………. if op in ['+','-','*','/',';'] then begin case op of '+' : r:=x+y; '-' : r:=x-y; '*' : r:=x*y; '/' : r:=x/y; ';': end; writeln (x:4:2,' ',op,' ',y:4:2,' =',' ',r:4:2) end else writeln('Ошибка ввода операции'); until op=';' end. Программа – простой калькулятор на 4-е арифметических действия. Завершение работы – ввод символа ';' ИП 4 Pascal
Структурированные типы в Pascal Pascal Множества Домашнее задание Написать алгоритм и программу на Pascal 1. Дана последовательность русских слов (строчными буквами) разделенных запятыми (не менее 10-и слов). Вывести на экран все звонкие согласные букв (б, в, г, д, ж, з, л, м, н, р),которые входят в каждое нечётное слово и не входят ни в одно четное слово. 2. Дана последовательность из 10-и русских слов. Вывести на печать слова, в которых первая буква слова встречается в нём ещё раз. ИП 5 Pascal
Записи Pascal Запись – это структура данных, состоящая из фиксированного числа компонентов – полей записи. В отличие от массивов и множеств, поля записи могут быть различного типа. Поля записи именуются (для ссылки на них). Структурированные типы в Pascal Type = record end; где – имя_типа – идентификатор типа записи, record, end – ключевые слова описания типа, поле_N – список описаний N полей, разделенных точкой с запятой. Поля записи могут быть любого типа, кроме файлового. Формат описания поля записи: : ; Можно задать запись прямо в разделе описания переменных: Var = record end; Примеры: Type BirthDay = record day, mounth : byte; year : word end; Var A,B : BirthDay; Var str : record fio : array[1..40] of char; tel : array[1..10] of char end; ИП 6 Pascal
Записи Pascal Структурированные типы в Pascal Действия над записями Значения переменных типа запись можно присваивать другим переменным того же типа (A := B). С записями целиком допустима только операция присваивания, все остальные действия выполняются с отдельными полями записи. Есть два способа доступа к полю записи: 1. С помощью составного имени, его формат:. Например: A.year := 1994; D.year := 1947; 2. C помощью оператора присоединения with. Его формат: with do где переменная – имя переменной типа запись, за которым может следовать список вложенных полей, with, do – ключевые слова, оператор – любой оператор Pascal. Например: with A do begin year := 1994; day := 8; month := 11 end; Оператор With удобно использовать, когда требуется обратиться к нескольким полям одной и той же записи. ИП 7 Pascal
Записи Pascal Структурированные типы в Pascal Инициализация записей выполняется в разделе констант, при этом для каждого поля задается его имя и после двоеточия – значение. Например: Const A : BirthDay = (day : 08; month : 'may'; year : 1947); Записи с вариантной частью Такие записи описывают варианты значений полей: например в телефонной книге для каждого абонента хранится ФИО и телефонный номер, но для служебных контактов указывается должность, а для личных – утреннее время, до которого, и вечернее время, после которого просьба не звонить. Формат вариативной записи: case of (Но это не оператор варианта Case.) Варианты значений, принимаемых этим полем перечисляются, как в операторе варианта, но вместо указания выполняемого действия – указываются варианты поля в круглых скобках (и нет ключевого слова End, закрывающего Case). Например: tape contact = record name : string[40]; tel : string[10]; case I : integer of 0 : (post : string[20]); 1 : (m_time : word; e_time : word) end; Вариантная часть всегда размещается в конце описания записи. Ключевое слово end; - закрывает запись (как пара к record, а не к case). ИП 8 Pascal