Программирование с использованием структурирование типы данных Исполнитель
- Скачано: 48
- Размер: 79 Kb
Программирование с использованием структурирование типы данных
Цель: Формирование умений, навыков и знаний по изучению программирование с использованием структурирование типы данных
План:
1. Регулярные типы данных (массивы).
2. Запись
3. Множественные типы данных (множества).
4. Файловые типы данных (файл)
{spoiler=Подробнее}
Структурированные типы данных включают массивы, записи, множества, файлы, указатели. Они отличаются от простых тем, что их переменные имеют более одной компоненты
Массивы (регулярные типы данных) представляют собой упорядоченную последовательность переменных одного типа. Переменные массива являются его компонентами. Тип компоненты называется базовым. Каждая компонента имеет имя и индекс, заключенный в квадратные скобки. Синтаксическая диаграмма регулярного типа данных приведена на рис.1.35
Типы компонент и индексов задаются в виде:
TYPE
A=ARRAY (T1) OF T2;
где А - имя массива; Т1-скалярный или ограниченный тип индекса (типы REAL и INTEGER не допускается);
Т2-тип компоненты или базовый тип (может быть простым или сложным).
С использованием раздела описания типов массивы с именами XTR,WRD представляются в виде:
TYPE
XTR=ARRAY(1…NM) OF REAL;
WRD= ARRAY(1…NM) OF BOOLEAN;
Переменные в разделе описания переменных описываются с помощью имен, определенных в разделе TYPE:
VAR
YT,ZT:XTR;
FT:WRD;
Переменные регулярных типов описываются непосредственно в разделе описания переменных (VAR) без использования раздела определения типов (TYPE):
VAR
YT,ZT: ARRAY(1…NM) OF REAL;
TF: ARRAY(1…NM) OF BOOLEAN
В тех случаях, когда массивы принадлежат к одному типу и содержат одинаковое количество компонент, допускает использовать оператор присваивания вида:
YT=ZT;
После выполнения оператора компоненты массива YT получает значения соответствующих компонент массива ZT.
Индекс компонента массива может быть константой выражением того же типа, что и тип индекса. Доступ любой компоненте осуществляется по индексу.
В языке ПАСКАЛЬ кроме одномерных массивов используется массивы большей размерности. Так как базовый тип массива быть любым типом данных, то в частности, он может быть другим массивом. В результате получается многомерный массив, который в общем виде представляет как
TYPE
B=ARRAY (T2)OF T3;
A=ARRAY (T1)OF B;
где Т1, Т2-типы индексов; Т3-тип компонент.
Матрица А (15х15) действительного типа описывается следующим образом:
CONST
SIZE=15,
TYPE
INDEX=1… SIZE;
STLA=ARRAY (INDEX) OF REAL;
AMATR=ARRAY (INDEX) OF STLA;
Определение типа столбец (STLA) можно включить в определения типа матрица:
TYPE
AMATR=ARRAY (INDEX) OF ARRAY (INDEX) OF REAL;
Чаще используется боле компактная запись определения типа в виде:
AMATR=ARRAY (INDEX,INDEX) OF REAL;
Записи представляют собой объединение фиксированного числа логически связанных компонент, называемых полями. Компоненты записи могут быть разных типов и различается между собой именами полей синтаксическая диаграмма структуры записей показана на рис.1.36
В простейшем случае список полей представляет собой перечень имен и типов. После определения имена полей используется как имена переменных, входящих в состав записи. Синтаксическая диаграмма общей части списка полей приведена на рис. 1.37.
Геометрические фигуры- прямоугольник, треугольник и круг описываются следующим образом:
TYPE
PRYM=RECORD
HPR,WPR:REAL
END;
TYPE
TREYG=RECORD
SIDE1,SIDE2,ALFA:REAL
TYPE
KRYG=RECORD
RAD:REAL;
END;
Где прямоугольник (PRYM) описан высотой (HPR) и шириной (WPR) : треугольник (TREYG)---двумя сторонами (SIDEL,SIDE2) и углом (ALFA)между ними; круг (KRYG)радиусом (RAD).
Записи предоставляют возможность прямого доступа к любому полю записи. Доступ к отдельным полям переменных, входящих в запись, осуществляется с помощью записи составных имен, включающих имя переменной записи и имя ее компоненты, разделенных точкой.
Например, запись имеет вид:
FIGUR= REKORD
PERIM, ALFA:REAL
END:
VAR
PRYM.TREYG. KRYG;
В этом случае в программе используются операторы присваивания вида:
PRYM.PERIM:=2.0*(HPR+WRP);
PRYM.AREA:=HRP* WRP;
KRYG.PERIM;=2.0*PI*RAD;
KRYG.AREA:=2.0*PI*SQR(RAD);
При неоднократном обращении к одному и тому же полю записи или к нескольким полям одной и той же записи удобно воспользоваться оператором присоединение, синтаксическая диаграмма которой показана на рис. 1.38.
Использую оператор присоединения для предыдущего примера, мoжно записать:
WITH PRYM DO
BEGIN
PERIM:=2.0*(HPR+WRP);
AREA:=HPR*WPR
END:
WITH KRYG DO
BEGIN
PERIM:=2.0*PI*RAD:
AREA:=2.0*PI*SQR(RAD)
END;
Оператор присоединение позволяет использовать вместо составных имен непосредственно имена полей. При этом имя записи выносится в заголовок оператора присоединение. Внутри оператора к полям записи можно обращаться только с помощью имени поля. В этом случае транслятор подставит имя записи. Программа получается компактнее, а транслятор при использовании оператора присоединения подготавливает ссылку на запись один раз.
Язык ПАСКАЛЬ допускает использование записей одного и того же типа, содержащих переменные поля. В этом случае список полей записи содержит общую вариантную части. Синтаксическая диаграмма вариантной части списка полей показана на рис. 1. 39. В описании записи перечисляются возможные варианты данной структуры. Выбор варианта записи осуществляется в зависимости от значение селектора варианта, которым является тип записи и означает окончание вариантов. После вариантной части записи никакие поля появляется не могут. Имена полей, использующиеся в описании различных вариантов, не должны повторяться в этой записи, нельзя также применять одно и тоже имя для обозначения полей в общей и вариантной частях записи.
Множественные типы данных (множества) представляют собой ограниченный набор различных элементов базового типа скалярный или ограниченный тип. Синтаксическая диаграмма множественного типа представлена на рис.1.40. Простой тип можно представить любым скалярным, кроме типа REAL.
Примеры записи:
TYPE
STUD=1..25;
GRUP=SET OF STUD
VAR
STUD3,STUD4,STUD5:GRUP;
Элементы простого типа, все подмножества множественного типа и пустое подмножество составляют множество. Пустое подмножество не содержит ни одного элемента. Множества строятся из элементов с помощью конструктора множества, который представляет собой перечисление через запятую элементов, заключенных в квадратные скобки. Пустое множество представляется как [] .
Конструкция М..N обозначает множество всех элементов I базового типа, для которых выполняется условие М £ i£. При М>N множество [ М...N] является пустым
Например, если переменная определена как SET OF 1..3, то она может принимать одно значение из множества [1,2,3], [1,2], [1,3],[2,3], [1], [2], [ ]. Каждое из этих значений является элементом базового типа множества.
Например, множество состоит полностью или частично из диапазона упорядоченных значений, использовать сокращенный вид записи. Например, [1,2,3,4,5,6] то же, что и [1…6].
Переменные, принадлежащие к множественному типу, могут быть описаны непосредственно в разделе VAR без предварительного определение имени типа в разделе TYPE
TYPE
STUD=1..25;
VAR
GRUP:SET OF STUD;
STUD3,STUD4,STUD5:GRUP;
Ко всем объектам множественного типа применимы операции объединения (+), пересечения (*) и вычитание (-). Так, [1,2]+[1,3]=[1,2,3]=[1,2],[1,2,3]-[1,2]=[3].
Операция вычитания, например А-В, означает множество всех элементов А, не являющихся элементами В.
Операции отношения применимы также к объектам множественного типа: проверка на равенство (=), неравенство (< >), включение (< = или>=) и принадлежность множеству (IN). Отношения, приведенные ниже, принимают следующие значения:
[2,3]=[ ]-FALSE,[1,3]=[3,1]-TRUE
[1,2] < =[1,2,3]-TRUE (содержится в), [2,3] >=[1]-FALSE (содержит).
При использовании операции IN первый операнд является выражением, задающим значение базового типа множества, то результат отношения есть TRUE. Например, определение типа:
TYPE
DAYS=(NON,WED,THU,SAT, SUN);
NONTHS=(JAN,FEB,MAR,APR,MAY/JUN,JUL,AUG,SEP,OCT,NOV,DEC);
А отношение FEB IN DAYS примет значение FАLSE.
Проверка на принадлежность множеству используется в программах для исключения сложных условий.
Выражение с использованием логических операций вида (CH>=’0’) AND (CH< ='9') с использованием операции имеет вид CH IN[‘0’..’9’].
Действия с множествами выполняются быстрее, чем сложные выражения с использованием логических операций.
Язык ПАСКАЛЬ допускает использование множественного типа данных в качестве любого другого структурированного типа ( массива, записи), что значительно расширяет возможности языка.
Файловые типы данных (файлы) представляют собой упорядоченную совокупность произвольного числа однотипных компонент с последовательным методом доступа. Синтаксическая диаграмма файлового типа данных показана на рис. 1.41.
Понятие файла в языке ПАСКАЛЬ имеет исключительную важность, так как файлы могут хранить гораздо больше информации, чем основная память машины. С помощью файлов осуществляется связь программы с входными и выходными стандартные файлы INPUT и OUTPUT.
Файл в языке ПАСКАЛЬ представляется в виде переменной. Он может существовать как до, так и после выполнения программы. При каждом обращении к файлу программе доступно только одна компонента.
Примеры описания файлов:
TYPE
STROKA FILE OF CHAR;
NUMBER FILE OF INTEGER;
К файлам применимы следующие стандартные функции и процедуры:
EOF (ИФ)=функция «конец файла» указывает, находится ли файл с именем ИФ в состоянии «конец файла». Если файл пуст, то функция EOF принимает значение TRUE, в противном случае значение FALSE;
PUT (ИФ) – процедура осуществляет запись значения буферной переменной ИФ в файл ИФ. Запись производится, если значение функции EOF равно TRUE этом случае после записи значение функции EOF остается равным TRUE , а значение буферной переменной не определено;
GET (ИФ) –процедура осуществляет передвижение по файлу на одну компоненту. Буферная переменная значение этой компоненты, если файл не пуст. Если следующего значения компоненты не существует, то значение функции EOF принимает значение TRUE, а значение буферной переменной ИФ не определено. Процедура GET определена в тех случаях, когда перед выполнением следующего вызова функция EOF имеет значение FALSE (файл не пуст);
RESET (ИФ)-процедура осуществляет поиск начала файла и подготавливает его к просмотру. Если функция EOF имеет значение FALSE, то буферная переменная ИФ приобретает значение первой компоненты файла. В противном случае функция EOF имеет значение TRUE , а значение буферной переменной не определено;
REWRITE (ИФ)-процедура предшествует созданию файла ИФ. Значение ИФ заменяется на пустой файл. Функция EOF (ИФ) принимает значение TRUE., и можно создавать новый файл.
Все действия по созданию и просмотру файлов описывается указанными функциями и процедурами. Привязка реальных файлов к выполняемой программе осуществляется по командам, не входящим в состав программы.
Одна из разновидностей файла – последовательный файл, который является основой процедур ввода-вывода. Этот файл представляет собой последовательность компонент с двумя видами действий: создание или просмотр файла. Создание файла осуществляется добавлением их компонент и конец первоначального пустого файла, а просмотр осуществляется с начала по одному элементу. В обоих случаях компоненты файла обрабатываются последовательно. Файлы хранятся на внешних запоминающих устройствах ЭВМ. В любой момент времени доступ только один компонент файла который и хранится в оперативной памяти ЭВМ. Для файловых типов данных или других типов с файловыми компонентами не доступны ни операторы присваивания ни проверки на равенство.
Создания и просмотр файла рассмотрим на примере:
VAR
ITEM:TX;
FL:FILE OF TX;
CH:CHAR;
КОНТРОЛЬНЫЕ ВОПРОСЫ:
1. Ограничено ли количество измерений массивов в языке ПАСКАЛЬ?
2. Какой тип характеризует объекты называемые записями?
3. Как осуществляется доступ к полям записи?
4.Какие типы данных используется в качестве базовых при построением множественных типов?
5.В каких случаях удобно использовать файлы?
6 Где хранятся файлы?
7.Каким образом описываются переменные файловых типов?
ОПОРНЫЕ СЛОВА:
Стандартные скалярные типы, нестандартные, простые, неструктурированные, раздел, перечисляемые, ограниченные, константа, множество, определения, объявления, нижний, верхний, переменные. Массив, запись, множества, файл, указатель, тип, данных, компонента, имя раздел, индекс, упаковка, поля, база, процедур, значение, переменные, вызов, операция, отношения, элемент, конструкция.
ИСПОЛЬЗУЕМЫЕ ЛИТЕРАТУРЫ:
1. Персональный компьютер :Диалог и программные средства. Москва – 1991 г. УДН. В.М.Матюшок и др.
2. Программирование на языке Паскаль. Радио и связи. Москва 1998 г. О.Н.Перминов.
3. Программирование на алгоритмических языках Бейсик, Фортран, Паскаль. Москва. ’’Просвещение 1991г.Б.И.Чернов.
4. Языки программирования (ПАСКАЛЬ, ПЛ/М). Москва «Высшая школа» 1987. В.Е.Алексеев, А.С. Ваулин.
5. www.kbsu.ru/~book/www.mtuci.ruwww.mesi.ruwww.informatika.ru comp-science.narod.ru
{/spoilers}