Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инструкции для преподавателей[1].doc
Скачиваний:
1
Добавлен:
10.11.2019
Размер:
504 Кб
Скачать
☆

Тема 4. Создание новых типов данных. Структурированные типы

Тип переменных – массив.

Тип переменных – множество.

Тип переменных – файл.

Создание новых типов данных.

Объявление новых типов данных:

С интаксическая диаграмма:

Примеры:

program MyProgram1;

uses Crt ; {объявление о необходимости подключения модуля Crt }

type int = 0..10;

Sim = ‘a’, ‘e’, ‘и’, ‘о’, ‘у’;

var N, M : int; {объявления двух переменных типа int}

D, r: Sim; ; {объявления двух переменных типа Sim}

Структурированные типы

Структура – многоэлементное образование объединенное общим именем – форма представления совокупности данных. К структурам в языках программирования относят массивы, строки, множества, файлы, записи, и объекты. Тип таких данных сложно задавать путем перечисления упорядоченных или ассоциативных набор всевозможных значений, поэтому в системе программирования для этих целей используют специальные конструкторы типов.

Тип переменных – массив.

Массив - упорядоченное конечное множество значений принадлежащих одному типу. Так как массивы имеют размерности, а их значения относится к конкретному типу, для объявления типа массив используется специальный конструктор. Конструктор имеет вид:

Пример объявления:

Var a,b : array [1..8] of integer ;

c,d : array [1..3, 1..3] of real ;

g,h : array [1..9, 1..80, 1..25] of char ;

type vector = array [1..8] of integer ;

mass = array [1..3, 1..3] of real ;

book = array [1..9, 1..80, 1..25] of char ;

var a,b : vector ;

c,d : mass ;

g,h : book ;

type int = 1..3 ;

mass = array [int, int] of real ;

var c,d : array [int, int] of real ;

Задачи для классной и домашней работы (не менее 4-6 в классе и 5-10 дома). 7.1 – 8.162.

Задачи из раздела 10 (сортировка элементов массива).

Тип переменных – множество.

Множество - это структура, объединяющая фиксированное число значений удовлетворяющих определенным признакам и принадлежащих одному типу.

В отличие от массива порядок расположения элементов множества не имеет значения. Например, у множества [ ‘+’, ‘–’, ‘*’, ‘/’ ] тип компонентов сhar (символьный), признак объединения - знаки арифметических операций и неважно в каком порядке они перечислены.

Конструктор типа представлен следующей синтаксической диаграммой:

Примеры использования конструктора:

type

MatOperation1 = set of (‘+’ , ‘–’ , ‘*’ , ‘/’) ; { множество знаков арифм. операций}

MatOperation2 = (‘+’ , ‘–’ , ‘*’ , ‘/’) ; { перечисляемый тип }

VowelLetter = set of (‘a’, ‘o’, ‘u’, ‘e’, ‘i’) ; { множество гласных букв }

var

m1, m2 : MatOperation ;

c1,ga5 : VowelLetter ;

S3, h4 : set of (3, 5, 7, 11, 13,17) ; { переменные типа «множество простых чисел»}

D6 : set of 1..31 ; { переменные типа «множество целых чисел»}

Множество, в котором присутствуют все элементы, называют базовым.

Задать или изменить значение переменной типа множество можно путем использования инструкции присваивания. Например:

m1 := [‘+’ , ‘–’] ; m2 := [‘*’] ;

c1 := [‘i’, ‘e’] ; ga5 := [‘u’, c1] ; c1:= [ ] ; {[ ] – пустое множество.}

В таблице приведены операции и процедуры применимые к объектам, принадлежащим к типу множество.

Операции

Знак операции

Результат

1

2

3

Пересечение

*

Общие элементы

Объединение

+

Первое множество дополнено недостающими элементами второго

Разность

-

Элементы первого множества не принадлежащие второму

Эквивалентность

=

True – если множества эквивалентны

Неэквивалентность

<>

True – если множества неэквивалентны

Вхождение

<=

True – если первое множество включено во второе

Вхождение

>=

True – если второе множество включено в первое

Принадлежность

IN

True – если выражение значением которого является элемент - принадлежит множеству

Процедура включения элемента во множество

Include(M,v)

M – множество, v - элемент

Процедура исключения элемента из множества

Exclude(M,v)

M – множество, v - элемент

Например:

m1 := [‘+’ , ‘–’] ; Include(m1, ‘/’); m2 := [‘*’] ; m1 := m1 + m2 ; m1 := m1 * m2 ;

c1 := [‘a’, ‘o’, ‘u’, ‘e’, ‘i’] ; ga5 := c1- [‘u’, ‘o’] ;

Задачи для классной и домашней работы (не менее 3 в классе и 3-6 дома). 12.5 – 12.34.

Тип переменных – файл.

Файлы – емкости для хранения информации. Под файлом понимают именованную область памяти компьютера, или именованное устройство потенциальный источник или приемник информации.

В зависимости от внутреннего содержания файлы подразделяют на три типа:

Текстовые – компоненты коды символов;

Типизированные - компоненты объявленного типа;

Нетипизированные - тип компонентов не определен;

Конструктор типа представлен следующей синтаксической диаграммой:

Примеры использования конструктора:

var f, Myfile : Text ; {Две переменные типа текстовый файл.}

f1, f2 : File of Integer ; {Две переменные типа файл целых чисел}

s3, h4 : File of Point ; {Две переменные типа файл записей }

d6 : File ; {Переменная типа файл}

Существует инструкция присваивания значения переменной типа файл. Эта инструкция носит название «запись в файл». Она имеет вид:

Например:

write( f, x, y, z ); write( Myfile, 3.1415926, sin(y)+2 );

Существует инструкция чтения значения из файла, эта инструкция носит название «чтение из файла». Она имеет вид:

Например:

read( f, x, y, z ); read( Myfile, a, b );

Память компьютера можно разделить на два вида: оперативного использования и длительного хранения. Данные в памяти оперативного использования «живут» только в интервале времени выполнения программы. Данные в памяти длительного хранения доступны всегда. Файлы объявленные в программе занимают память оперативного использования. Для создания их копий в памяти длительного хранения используют процедуру связывания файлов Assign. Эта процедура и ряд других подпрограмм оперирующих с файлами описан в таблице:

Подпрограммы для работы с файлами

Обращение

Описание

Assign(var F: Файл; FileName: String);

Связывает переменную F с именем файла на конкретном носителе информации

ReSet (var F [: FileType ; Recsize: Word ] )

Открывает файл для чтения. Указатель устанавливается на начало файла.

Read ([ var F: Text;] V1 [, V2, ..., Vn ])

Читает из файла значения для переменных Vi.

IOResult: Integer

Возвращает признак операции ввода вывода.

Rewrite (var F: FileType [; Recsize: Word ] )

Открывает файл для записи. Если в файле хранилась информация, она уничтожается

Write ([ var F: Text; ] P1 [,P2,...,Pn ] )

Записывает в файл значения переменных Pi.

Close (var F:FileType)

Закрывает файл. Обеспечивает сохранение записей и регистрацию файла в каталоге.

Append (var F:Text)

Открывает существующий текстовый файл и разрешает добавлять запись в его конец.

FileSize(var F): Longint

Возвращает размер файла в байтах

FSplit(Path: PathStr; var Dir: DirStr; var Name: NameStr; var Ext: ExtStr)

Разбивает полное имя файла на 3 его составляющие: - путь, имя, расширение

ReName(var F:Text; Newname)

Переименовывает файл.

Erase (var F:FileType)

Удаляет закрытый файл с диска.

EoLn [(var F:Text)] : Boolean

Возвращает признак достижения конца строки в текстовом файле

EoF [(var F:Text)] : Boolean

Возвращает признак достижения конца файла

Flush (var F:Text)

Очищает внутренний буфер файла открытого для чтения

Для примера приведены две программы:

  1. Помещаем в текстовый файл значения двух переменных.

Var f : text;

x, y : Real;

begin x:=3.25; y:= Sin(X);

Assign ( f, ‘D:\MyFile.TXT’ ); {Связываем переменную F с файлом на диске D: }

ReWrite (f); {Открываем файл F на запись}

Write (f, X:8:5, Y:10:6); {Помещаем значения двух переменных в файл }

Close (f); {Закрываем созданный файл}

end.

  1. Читаем из текстового файла значения двух переменных и выводим их на экран.

Var f1 : text; x, y : Real;

begin

Assign ( f1, ‘D:\MyFile.TXT’ );

Reset (f1); {Открываем файл f1 на чтение}

Read (f1, x, y); {Читаем из файла две записи}

Write ( x:8:5, y:10:6); {Выводим на экран дисплея}

Close (f 1);

end.

Задачи для классной и домашней работы (не менее 3 в классе и 3-6 дома). 13.1 – 13.38.

Итог. Контрольная работа по всем разделам темы 4.