Множества. Свойства множеств. Описание.
Описание простого типа.
Целые: integer,byte,word,shortint,longint
Логические:boolean
Символьные:char
Перечисляемые:
type
<имя типа> = (<идентификатор 1, идентификатор 2, ... , идентификатор N>);)
Интервальные:
type<имя типа> = <мин. значение> . . <макс. значение>;
ПРИМЕР: i: BYTEОписание строчного типа.
ПРИМЕР:
VAR
Character_string_l: STRING[255];
3. Способы описания массивов.
Вконстантах:const a: array[1..10] of integer;
ВVAR’е :var a: array[1..10] of integer;
ВTYPE’е :type a=array[1..10] of integer;
Множества. Свойства множеств. Описание.
Множество — это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое.
Свойства:1)Количество объектов во множествене может превышать 256.
2)Если множество не имеет элементов оно называется пустым
3)Особенность множеств, в отличии от массивов и записей, в том, что элементы множества не идентифицируются,из этого следует что при работе с множествами невозможно обратиться
к какому-либо конкретному элементу множества
Описание:
x1:setofbyte;
ПРИМЕР заполения: х:=[3,6,2,9,5];
Операции над множествами.
1) Операции отношений ("=","<>",">=","<=").
а). Операция "равно"(=).
Два множества считаются равными , если они состоят из одних и
тех же элементов.
2)Операция "in" - используется для проверки принадлежности
какого-либо значения указанному множеству.
3)Операция "объединение множеств" (+)- им является третье множество, содержащее элементы обоих множеств.
4)Операция "разность" множеств (-) - третье множество, которое содержит элементы первого множества, не входящие во второе множество
В 1 и 2 возвращает TRUEилиFALSE, в 3 и 4 – новое множество.
Описание типа запись.
Описание записи в языке Паскаль осуществляется с помощью служебного слова record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом end.
ПРИМЕР:
typeTRec = Record
FIO: String[20];
TEL: String[7]
end;
Файлы. Виды файлов.
Файлом называется область памяти жесткого диска, имеющая свое имя.
ВИДЫ:
текстовыефайлы; t: text;
типизированныефайлы;f2: file of integer;
нетипизированныефайлы.f3: file;
Сверху и есть примеры описания файла.
Процедуры и функции для работы с файлами.
Assign(f, FileName); -связывает файловую переменную f с физическим файлом, полное имя которого задано в строке FileName.
Reset(f); - открывает для чтения файл
Rewrite(f) - открывает для записи файл
Close(f) - закрывает открытый до этого файл
EOF(f): Boolean; - возвращает значение TRUE, когда при чтении достигнут конец файла.
Rename(f, NewName); - позволяет переименовать физический файл на диске
Erase(f); - уничтожает физический файл
Write(f, список переменных); - Процедура записывает в файл f всю информацию из списка переменных.
Read(f, список переменных);- Процедура читает из файла f компоненты в указанные переменные.
Seek(f, n); - Процедура смещает указатель файла f на n-ную позицию.
Файлы без типа.
Reset(f, BufSize);
Rewrite(f, BufSize);
Параметр BufSize задает число байтов, считываемых из файла или записываемых в него за одно обращение. Минимальное значение BufSize - 1 байт, максимальное - 64 К байт. Если BufSize не указан, то по умолчанию он принимается равным 128.
BlockRead(f, X, Count); - Эта процедура осуществляет за одно обращение запись из переменной X количества блоков, заданное параметром Count, при этом длина блока равна длине буфера.
Динамическая память.
В предшествующих разделах использовались переменные, память под которые выделялась статически, то есть на стадии компиляции. Эти области памяти (для переменных из раздела VAR данного блока) существуют до конца работы блока, даже если эти переменные уже не нужны. При этом память нередко используется неэффективно, достаточно вспомнить «настройку» массива на фактическое количество элементов, а также, если, например, объявлено несколько массивов большого объема статической памяти, а в каждый конкретный момент используются не все.
Исправить положение можно, применив специальный механизм распределения памяти. Турбо Паскаль предоставляет возможность выделять и освобождать память в процессе выполнения программы, динамически.
Можно отметить следующие достоинства динамической памяти:
- экономичность и эффективность ее использования;
- возможность динамического изменения числа элементов в связанных структурах, например, списках (в статической памяти число элементов фиксировано для каждой компиляции);
- статические переменные существуют только в течение жизни блока, в котором они объявлены, а динамические - и после выхода из блока до окончания программы. Переменная, размещаемая динамически, не объявляется в разделе VAR и не имеет имени в программе («невидимка»). Компилятор не планирует выделение места в памяти под такие переменные.
Указатель.
Обращение к участку динамической памяти в программе осуществляется с помощью специальной ссылочной переменной, которая называется указателем (ссылкой). Переменная типа «указатель» содержит адрес размещения участка динамической памяти, с которой связан этот указатель. Компилятор отводит под переменную типа «указатель» четыре байта статической памяти. Обычно указатель, связанный с определенным типом данных, называется типизированным. Однако он может быть и не типизированным, то есть совместимым с указателями любого типа данных. В этом случае указатель называется свободным (несвязанным).Формат описания типа «указатель» следующий:
TYPE <идентификатор указателя>=^<тип>;
формате объявления типа «указатель» должен быть указан идентификатор типа, поэтому стандартные идентификаторы (INTEGER, REAL и т.д.) можно указывать непосредственно в описаниях типа «указатель». НЕЛЬЗЯ объявлять «указателем» массивы, записи и строки(строчные типы).Вот блядь такое вот дела!
Переменная типа «указатель» занимает в памяти двойное слово. Указатель может находиться в одном из трех состояний, а именно:
1) еще не инициализирован;
2) содержит адрес размещения;
3) содержит значение предопределенной константы NIL; такой указатель называется пустым, то есть не указывает ни на какую переменную. Указатель со значением NIL содержит 0 в каждом из четырех байтов.
Указатели можно сравнивать с другими указателями ( =, <> ), присваивать им адрес или значение другого указателя, передавать как параметр. Указатель нельзя отпечатать или вывести на экран.
ПРИМЕРЫ описания:р: pointer;
р3: ^real;
Организация списков.
Список - структура данных, в которой каждый элемент имеет информационное поле (поля) и ссылку (ссылки), то есть адрес (адреса), на другой элемент (элементы) списка.
Каждый элемент списка содержит информационную и ссылочную части. Для однонаправленного списка элемент должен содержать как минимум два поля: одно поле типа «указатель», другое - для хранения данных пользователя. Для двунаправленного - три поля, два из которых должны быть типа «указатель».
В отличие от элементов массива элементы списка могут располагаться в памяти в свободном порядке, не подряд. Порядок их обработки определяется ссылками, то есть в общем случае очередной элемент своей ссылкой указывает на тот элемент, который должен быть обработан следующим. Последний по порядку элемент содержит в ссылочной части признак, свидетельствующий о необходимости прекращения обработки элементов списка, указывающий как бы конец списка.
В зависимости от числа ссылок список называется одно-, двунаправленным и т.д.
Если последний элемент списка содержит «нулевую» ссылку, то есть содержит значение предопределенной константы NIL, то такой список называется линейным.
Если дадим имя первому элементу FIRST, и если он будет равен NIL, то значит список пуст.
Если последний элемент содержит ссылку на первый элемент списка, то такой список называется кольцевым, циклическим.
17. Структура линейного однонаправленного списка.
Описание простого типа.
Целые: integer,byte,word,shortint,longint
Логические:boolean
Символьные:char
Перечисляемые:
type
<имя типа> = (<идентификатор 1, идентификатор 2, ... , идентификатор N>);)
Интервальные:
type<имя типа> = <мин. значение> . . <макс. значение>;
ПРИМЕР: i: BYTEОписание строчного типа.
ПРИМЕР:
VAR
Character_string_l: STRING[255];
3. Способы описания массивов.
Вконстантах:const a: array[1..10] of integer;
ВVAR’е :var a: array[1..10] of integer;
ВTYPE’е :type a=array[1..10] of integer;
Множества. Свойства множеств. Описание.
Множество — это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое.
Свойства:1)Количество объектов во множествене может превышать 256.
2)Если множество не имеет элементов оно называется пустым
3)Особенность множеств, в отличии от массивов и записей, в том, что элементы множества не идентифицируются,из этого следует что при работе с множествами невозможно обратиться
к какому-либо конкретному элементу множества
Описание:
x1:setofbyte;
ПРИМЕР заполения: х:=[3,6,2,9,5];
Операции над множествами.
1) Операции отношений ("=","<>",">=","<=").
а). Операция "равно"(=).
Два множества считаются равными , если они состоят из одних и
тех же элементов.
2)Операция "in" - используется для проверки принадлежности
какого-либо значения указанному множеству.
3)Операция "объединение множеств" (+)- им является третье множество, содержащее элементы обоих множеств.
4)Операция "разность" множеств (-) - третье множество, которое содержит элементы первого множества, не входящие во второе множество
В 1 и 2 возвращает TRUEилиFALSE, в 3 и 4 – новое множество.
Описание типа запись.
Описание записи в языке Паскаль осуществляется с помощью служебного слова record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом end.
ПРИМЕР:
typeTRec = Record
FIO: String[20];
TEL: String[7]
end;
Файлы. Виды файлов.
Файлом называется область памяти жесткого диска, имеющая свое имя.
ВИДЫ:
текстовыефайлы; t: text;
типизированныефайлы;f2: file of integer;
нетипизированныефайлы.f3: file;
Сверху и есть примеры описания файла.