1000000000000000 – «0»
0010000000000000 – «2»
0000000000000001 – «15»
1001000000000001 – «0,3,15» - множество их 3х чисел
Конструктор множества.
→[-----→<выр>----------------------------------------]→
-----→..→<выр>→-----
--------------------,------←---------------------
--------------------→---------------------------
Конкретное значение множественного типа задается с помощью конструктора множества. Порядок перечисления элементов значения не имеют.
→SET→OF→<баз_скал_тип>→
аналогично
array [баз_скал_тип] ofboolean;
a:set of 1..3; {a→[],[1],[2],[3]+любаякомбинация}
type ned=(pon,vt,sr,ch,pytn,sub,vos);
denned=set of ned;
log=set of boolean;
var den:denned; l1,l2:log; b:boolean; i,i1,i2:set of 1..10;
Вопрос №23.Операции над множествами. |
Одна встроенная ф-ция – sizeof (x).
Операция IN – левый операнд д. принадлежать базовому типу, правый – множественному типу, построенному на основе этого базового типа.
I:=[1,3,5];
B:=2 in I; B:=[3,5]<=I; {true}
B:=[3,4] <= I; {false}
I1:=[1,2,3]; I:=[1,3,5];
I2:=I1+I ; {объединение}
I2:=I1*I; {пересечение}
I2:=I1-I; {разность}
Старшинство операций аналогично старшинству в арифметических выражениях.
Ввод-вывод множественных переменных.
Varb:char; Mn:setof ‘a’..’z’;
Begin mn:=[]; Repeat Read (b); Mn:=mn+B; Until b=’.’
For B:=‘a’ to ‘z’ do If b in mn then write (b:5);
Вопрос №24.
Типизированная константа запись.
→(→<поле>→:→<типиз_конст>→)→
---;----------←-----------------------
type fam=(ivanov,petrov);
data = record
god:1900..2000;
mes:yan,fev,dec;
end; ank=array[fam] of data;
const d:data=(god:1950;mes:dec);
a:ank=((god:1970;mes:dec),(god:1945;mes:yan));
Поля должны указываться в том же порядке, как они следуют в объявлении типа запись. Если запись содержит вариант, то можно указывать только поля выбранного варианта. Если вариант содержит поле признака, его значение д.б. определено.
Вопрос №25.
Файлы.
Файловый тип – это произвольная последовательность элементов, длина которой заранее не определена, а конкретизируется в процессе выполнения программы. Физический файл – поименованная область памяти на внешнем носителе, в которой хранится некоторая инфа. При последовательном доступе по файлу можно двигаться только последовательно, начиная с первого элемента файла. При прямом доступе можно обратиться к элементу N. В Паскале есть 3 типа фалов: текстовые, типизированные, без типа.
→FILE →OF→<тип>→
---------→------
-------→TEXT→--------
Над значениями файлового типа не определены никакие операции. Для доступа к отдельным элементам файла существуют стандартные процедуры ввода-вывода. Понятие «окно файла» или «указатель файла» определяет позицию доступа, т.е. тот элемент файла, который доступен для чтения или записи Позиция файла, следующая за последним элементом помечается маркером конца файла (EOF)
Вопрос №26.(Assign)
Assign (F,Name:string);
Организует связь с конкретным физическим файлом на носителе и файловой переменной программы.
Макс. ПОЛНОЕ имя файла – 79 символов.
Вместо имени физическогот файла может использоваться любое устройства ввода-вывода. Доступны следующие логические имена: CON (консоль); LPT1, LPT2, LPT3, LST1, LST2, PRN (печать); COM1, COM2 (усройства последовательного ввода-вывода); AUX; NUL (нулевое устройство, при выводе не осуществляется никаких действий, при чтении – ситуация конца файла); CRT (устройство текстового ввода-вывода); ‘’ (связывается с консолью).
Assign – нельзя применять к открытому файлу.
Вопрос №27.
Файлы с типом.
Состоит из однотипных компонент, тип которых указан при объявлении файла. Длина любого компонента типизированного файла строго постоянна, что дает возможность организовать прямой доступ к каждому из них(т.е. доступ к компоненту по порядковому номеру).
Синтаксис задания: <имя>=Fileof<тип>
Перед первым обращением к процедурам ввода-вывода указатель файла стоит в его начале и указывает на первый компонент с номером 0. После каждого чтения или записи указатель сдвигается к следующему компоненту файла. Переменные в списках ввода-вывода должны иметь тот же тип, что и компоненты файла. Если этих переменных в списке несколько, указатель будет смеяться после каждой операции обмена данными между переменными и дисковым файлом.
Assign(<ф.п.>,<имя файла>) - Организует связь с конкретным физическим файлом на носителе и файловой переменной программы.
ReWrite (F) – создает и открывает новый файл, если файл существует, то он удаляется.
Write (F,E) – записывает в ту позицию файла очередной элемент, равный значению выражения E, окно файла сдвигается на следующую позицию. Файл должен быть открыт.
Reset (F) – открывает существующий файл
READ (F,X) – чтение текущего элемента файла F в переменную X и сдвиг окна на следующую позицию. Для открытого файла. Файлы с типом допускают чтение и запись независимо от способа их открытия (ReWrite, ReSet).
Вопрос №28.
Длина любого компонента типизированного файла строго постоянна, что дает возможность организовать прямой доступ к каждому из них(т.е. доступ к компоненту по порядковому номеру).
Перед первым обращением к процедурам ввода-вывода указатель файла стоит в его начале и указывает на первый компонент с номером 0. После каждого чтения или записи указатель сдвигается к следующему компоненту файла. Переменные в списках ввода-вывода должны иметь тот же тип, что и компоненты файла. Если этих переменных в списке несколько, указатель будет смеяться после каждой операции обмена данными между переменными и дисковым файлом.
EOF (F) – используется для определения факта выхода при чтении за пределы файла.
SEEK (F,N) – осуществляет прямой доступ к элементам файла F. N- номер элемента файла, типа Longint. Позиционирует файл на указанный номер элемента. Текстовые файлы не обрабатываются.
FilePos (F) – номер текущей позиции. Если указатель установлен на конец файла, возвращает значение, равное размеру файла. Не для txt файлов
FILESIZE (F) – текущий размер файла longint(не для txt файлов).
CLOSE (F) – явное закрытие открытого файла F, однако связь файловой переменной с именем файла, установленная процедурой Assignсохраняется.
Вопрос №29.
Текстовые файлы.
Т. ф. предст. собой послед. символов. Fileofchar не эквивалентен т. ф. Особен. т. ф. то, что содержащиеся в нем симвлы разбив. на строки (которые могут быть различной длины в том чисе и пустые). В конце каждой строки помещ. маркер конца строки (#13 ^M) и перевод строки (#10 ^I), наличием этого маркера связ. раб. ф-ции EOLn(F): boolean. Т. ф. относ. к группе предопред. стр. типов и опред. с указанием имени VarF:text;
Input, Output – т. ф.(открыв. автоматически).
Процедуры и функции:
1). Assign (f, name)
2). AssignCrt (f) – связ. т. ф. с CRT, аналогична Assign. Данная пр-ра опред. в модуле CRT.
uses crt;
var f:text;
k:(P,C);
…………………
begin
if k=P then assign (f, ‘PRN’)
else assigncrt (f);
…………………
3). Append (f) (опред. только для т. ф.) – открывает сущ-щий т. ф. для добавления. Если файл f был предварит. открыт, то его необход. закрыть. В рез-те выполнения пр-ры окно файла устанавл. в конец файла. После вызова пр-ры Append файл f станов. доступным только для записи.
4). Rewrite (f) – отличия: файл f открыт только для записи. После вызова пр-ры значение EOF (f) всегда = true.
5). Reset (f) – отличия: файл открыв. только для чтения.
6). Read ([f], v1 [v2, v3,…vn]) – считывает одно или несколько знач. Отлич.: файл должен быть открыт только для чтения; 1-й параметр может быть опущен; при выполнении пр-ры осущ. преобр. эл-та файла из символьного представления к типу переменной Vi (Vi может иметь тип char, целочисл., вещетств. или строковый). Если V – char, то из файла в V счит. очередной символ, включая символы-разделители. Если в цифр. встрет. запрещенный символ, возник. сообщение об ошибке ввода-вывода. Если V – string, то V передается…
7). Readln [([f][,v1,v2,…vn])]
Вопрос №30(процедуры и функции для записи в текстовый файл).
1).Write ([f] e1 [, e2…en]) обеспечивает вывод информации в текстовый файл или передачу ее на логическое устройство. Сдесь е1,е2…en выражения типа char,string,Boolean, а также любого целого или вещественного типа. fдолжна быть типа text.
2). Writeln [([f][,][e1, e2,…en])]
3). Close (f)
var f:text;
………………
begin
assign (f, ‘Data.txt’);
rewrite (f);
………………
write (f, a);
………………
reset (f);
………………
read (f, b);
………………
close (f);
append (f);
write(f, c);
………………
close (f);
………………
Вопрос №31.
1). SetTextBuf (f, buf [, size]) – определяет буфер для текстового файла. Следует вызывать после assign. f – файловая переменная; buf – переменная любого типа; size – выражение типа word. Обмен информацией между прогой и внешним набором данных осущ. через буфер ввода-вывода. Размер станд. буфера в.-в. = 128 байт. Пр-ры write и writeln запис. очередные эл-ты файла последовательно в буфер. При чтении из внешнего файла одновременно считывается кол-во эл-тов, помещ. в буфер. А затем read и readln послед. счит. эл. данных из буфера. Исп-ние буфера в.-в. позвол. повысить скорость обмена информацией с внеш. файлами. Если в проге имеется большое кол-во операций в.-в., то более эффект. оказ. исп-ние буфера большого размера. Размер буфера опред-ся параметром size. Если size отсутствует, то размер = размеру памяти, заним. переменной buf.
☻Пример:
var f:text;
c:char;
buf:array [1..10240] of char;
begin
assign(f, ‘hsfkjsdhf .txt’);