Смекни!
smekni.com

Вопросы и ответы к экзаменам В-1 (стр. 3 из 6)

Описание типа производится в разделе TYPE.

Структура:

<Имя идентификатора>=SET of <имя типа> ;

где <Имя идентификатора> - правильный идентификатор Турбо Паскаля;

<имя типа> - тип элементов множества, в качестве которого может

использоваться любой порядковый тип, кроме WORD, Integer, LogInt,

ShortInt.

пример: TYPE dchar=SET of '1'..'9'; {базовый символьный тип-диапазон}

digit=SET of 0..9;

Переменные этого типа описываются в разделе

VAR S1,S2,S3:dchar; S4,S5,S6,S7:digit;

Для задания множества может использоваться конструктор множества: список (спецификаций) элементов множества, отделенных друг от друга запятыми; список заключается в квадратные скобки. Спецификациями элементов м.б. константы или выражения базового типа, а также пример:

S1:=['1','2','3']; S4:=[0..3,7];

S2:=['2','1','3']; S5:=[4,6];

S3:=['1','2']; S6:=[3..8]; S7:=[]; (пустое)

Два множества считаются эквивалентными тогда и только тогда, когда все их элементы одинаковы причем порядок следования в множестве их безразличен. (S1 и S2 эквивалентны).Если все элементы одного множества входят в другое множество то говорят, что первое включено во второе. (S3 включено в S1).Пустое множество включено в любое другое.

Над множествами определены следующие операции:

1. * пересечение множеств; результат содержит элементы, общие

для обоих множеств. (S4*S6 содержит [3,7]; S4*S5 образует пустое мн.).

2. + объединение множеств, результат содержит элементы первого

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

S4+S5 содержит [0,1,2,3,4,6,7] S5+S6 содержит [3,4,5,6,7,8]

3. - разность множеств, результат содержит элементы из первого

множества, которые не принадлежат второму.

S6-S5 содержит [3,5,7,8])

S4-S5 содержит [0,1,2,3,7]) []-S4 даст [].

4. Операции отношений:

= операция эквивалентности; возвращает значение TRUE, если оба

множества эквивалентны; (S1:=S2; ['1','2','3']) =['2','3','1']

проверка неэквивалентности; (TRUE, если множества неэквивалентны); [1,2]<>[1] S3<>S2

>= проверка вхождения (TRUE, если второе множество входит в первое;

in - проверка принадлежности. Структура этой бинарной операции:

in ;возвращает TRUE, если выражение имеет значение, принадлежащее множеству.

пример:

3 in S6 TRUE; [] in [0..5] [] in S5

2*2 in S4 FALSE;

Множества имеют компактное машинное представление. Недостаток: невозможность вывода множества на экран, т.к. отсутствует механизм изъятия элемента из множества. Ввод множества возможен только поэлементно.

пример: Можно тип объявлять при описании переменных

VAR S:SET of char; {переменная-множество}

C: char; {элемент множества}

Begin

S:=[]; S:=#0; {обнуление значений}

while C '.' do {циклдоввода "."}

begin

readln(C); {чтение символа в с}

S:=S+[C]; {добавление его к S}

end; ...

S:=S-['.']; {исключение точки}

End. {Смотри задание на л.р. N 12 }

34. Оператор выбора CASE (варианта). Комментарии.

CASE<ключ выбора> OF

Const1:оператор;

Const2:оператор;

ELSE: оператор;

END;

35. Записи. Вложенные записи. Записи с вариантами.

Запись – это структура данных, состоящая из фиксированного числа компонент, называемых полями записи. В отличие от массива компоненты могут быть различного типа. Поля именуются:

<имя типа>=RECORD<определение полей>END.

Type

Bd = record

D,m: byte;

Y: word

Var a,b: bd;

a::=8;

a.day:=27;-доступ к компоненту

Для упрощения доступа к полям записи используют оператор записи With

With<переменная>do<оператор>;

With c.bp do month:=9;

With c do with bp do month:=9;

c.bp.month:=9;

Вариантныеполя

Type f= record

N: string;

Case byte of

0:(bp: string[30]);

1:(c: string[10],e: string[20],ed:1..31)

end;

Имена должны быть уникальны, хотя возможно повторение на различных уровнях

Вложенныеполя:

Type bd =record

D,m: byte;

X: word;

End;

Var c: record;

Name: string;

Db: bd;

Begin if c.db.year=1939 then………..

End.

В качестве ключа переменная:

Type rec2=record

C: LongInt;

Case x: byte of

1: (d: word);

2: (e:record

case boolean of

3: (f: real);

3: (g: single);

‘3’: (c: word);

end;

end;

36. Вещественный тип. Операции и функции для вещественного типа.

Вещественный тип определяет число с некоторой конечной точностью, зависящей от внутреннего формата числа

Длина название кол-во знаковых цифр диапазон десятичного порядка

байт

6 real 11..12 -39..38

8 couble 15..16 -324..308

10 extended 19..20 -4951..4932

8 comp 19..20 -2*10^63+1 .. 2*10^63-1

функции

ABS(X), ARCTAN(x), COS(X), EXP(X), FRAC(X), INT(X),LN(X), SIN(X), ROUND(X),SQR(X),SQRT(X) ИТ.Д.

37. 38. 39. Файловый тип. Файлы. Требования к имени. Связывание. Текстовые файлы. Ввод (вывод) информации из файла (в файл, устройство) Типизированные файлы и нетипизированные файлы.

Общие процедуры для работы с файлами

_____________________________________________________________

|Assign(Var f,FileName:String) - Cвязываниеф.п.f сфайлом FileName

|RESET(Var f) | Открытие файла с логическим именем f для чтения |

|REWRITE(Var f) Открытие файла с лог. именем f для записи |

| CLOSE(f) | Закрытие файла с лог. именем f |

|Erase(Var f) | Удаление файла (стирание) с диска |

|Rename(f, NewName:String)|Переименовывает физический файл |

| EOF(f) | Функция тестирования конца файла |

|FLUSH()| Очищает внутренний буфер файла |

-------------------------------------------------------------

ТЕКСТОВЫЕ ФАЙЛЫ

Это файлы последовательного доступа.

Они предназначены для хранения текстовой информации. Компоненты (запи-

си) текстового файла могут иметь переменную длину.

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

READ, READLN, WRITE, WRITELN.

Текст-ориентированные процедуры и функции

____________________________________________________________

| процедуры | пояснения |

| и функции | (действия) |

|-------------|----------------------------------------------|

|Append |Процедура открывает уже существующий файл f|

| () |для дозаписи в конец файла |

|пр:Append(f) | (для его расширения) |

|SeekEOLN |Функция пропускает все пробелы и знаки табуля-|

| () |ции до первого признака EOLN или первого зна-|

| логич.типа |чащего символа. Возвращает значение TRUE, если|

пр:SeekEOLN(f)|обнаружен маркер конца файла или маркер конца |

| |строки. Если ф.п. опущена, |

| |функция проверяет стандартный файл INPUT. |

| | |

|SeekEOF |Функция пропускает все пробелы,знаки табуляции|

| () |и маркеры конца строк до маркера конца файла|

|пр:SeekEOF(f)|или первого значащего символа. Если маркер об-|

| |наружен, возвращает значение TRUE. |

|EOLN ()|Функция возвращает значение TRUE,если во вход-|

| логич.типа | ном файле f достигнут маркер EOLN или |

|пр: EOLN(f) | EOF; FALSE - в противном случае. |

|_____________|______________________________________________|

Типизированные файлы

позволяют организовать прямой доступ к каждой из компонент (по его по-

рядковому номеру). Описание файловой переменной

Var ft: file of ;

Перед первым обращением к процедурам ввода-вывода указатель файла

стоит в его начале и указывает на 1-ю компоненту с номером 0. После

каждого чтения или записи указатель сдвигается с следующему компоненту

файла. Переменные в списках в/в должны иметь тот же тип, что и компо-

ненты файла.

Процедуры и функции для работы с типизированными файлами

____________________________________________________________

| процедуры | пояснения |

| и функции | (действия) |

|-------------|----------------------------------------------|

READ(,); Процедура

Обеспечивает чтение очередных компонентов файла

WRITE(,) используется для записи новых

компонент в файл; в качестве элементов вывода

м.б. выражение.

SEEK(,) - смещает указатель

файла к компоненту с ;

- выражение типа LONGINT.

(К текстовым файла применять нельзя.)

FILESIZE) Функция возвращает количество компонент,

содержащихся в файле.(Типа LongInt )

Функция FILEPOS() возвращает порядковый номер компо-

ненты файла, доступной для чтения или записи

(который будет обрабатываться следующей операцией в/в).

( Процедура CLOSE () - закрытие файла. )

|-------------|----------------------------------------------|

- содержит одну или более переменных такого

же типа, что и компоненты файла,

- файловая переменная д.б. объявлена предложением FILE OF

и связана с именем файла процедурой ASSIGN. Файл необходимо открыть

процедурой RESET для чтения.

Если файл исчерпан, обращение к READ вызовет ошибку В/В

Чтобы переместить указатель в конец файла можно написать

Пр. Seek(f,FileSize(f)) ; где f - файловая переменная

Нетипизированные файлы

Обьявляются без указания типа файла:

TYPE ftype=file; или VAR fn: file;

Для данных файлов не указывается тип компонентов, что делает их сов-

местимыми с любыми другими файлами. Позволяет организовать высокоско-

ростной обмен данными между диском и памятью.

При инициализации нетипизированных файлов процедурами RESET и

REWRITE указывается длина записи нетипизированного файла в байтах.

пример: VAR f:file; ...

ASSIGN (f,'a.dat');

RESET (f,512);

&bsol; длина записи

Длина файла может быть представлена выражением типа WORD; если пара-

метр длины опущен, подразумевается длина 128 байт; максимальная длина

65535 байт.

Для обеспечения максимальной скорости обмена данными следует за-

давать длину, кратную длине физического сектора дискового носителя

(512 байт). Кроме того, фактически пространство на диске выделяется

любому файлу порциями - кластерами, которые в зависимости от типа дис-

ка могут занимать 2 и более смежных секторов. Как правило, кластер

м.б. прочитан или записан за один оборот диска, поэтому наивысшую ско-

рость обмена данными можно получить, если указать длину записи, равную

длине кластера.

При работе с нетипизированными файлами Могут применяться все

рассмотренные процедуры и функции, доступные типизированным файлам, за

исключением READ и WRITE, которые для чтения и записи заменяются соот-

ветственно высокоскоростными процедурами BlockREAD и BlockWRITE.

BlockREAD(,,,[,Var])

BlockWRITE(,,,[,Var])

где - имя переменной, которая будет участвовать в обмене дан-

ными с дисками;

- количество записей, которые д.б. прочитаны или записаны за одно

обращение к диску;

- необязательный параметр, содержащий при выходе из процедуры ко-

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