Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika_Lektsia_9.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
355.33 Кб
Скачать

Var I: byte; begin

for i:=32 to 255 do writeln(' Symbol of',i:4, ' = ',Chr(i))

end.

Строковый тип данных удобен для преобразования информации, представленной в нем. По этой причине часто в строковый вид переводят данные из других типов. На строковых величинах основан специальный текстовый тип файлов.

Вопросы для проверки знаний.

1. Чем отличаются типы сhar и String ?

2. Может ли переменная типа String занимать в памяти пространство:

а) 1 бит, б) 4 бита, в) 2 байта, г) 100 байтов, д) 300 байтов ?

3. Каков порядок обращения к отдельным символам строковых переменных ?

4. Задано описание и выполнено присвоение:

Ch:Char; Str: String[10];

begin Str :=’ABCDEF’; Каков будет результат вывода WriteLn(' Ch=', Ch)после выполнения присваиваний:

а) Ch=Str[3], б) Ch=Str[6], в) Ch=Str[11], г) Ch=Str[13]?

5. В чем заключается назначение функции Length()?

6. В чем заключается назначение функций работы со строками Concat,Copy,Delete, Insert,Pos?

7. В чем заключается назначение процедур Str и Val ?

8. Какие преобразования символов выполняют функции Chr, Ord, UpCase ?

9. Определить, что будет выведено на экран после выполнения следующего программного кода:

Var Str_1, Str_2, Str_3:string[10];

begin

Str_1:='Computer';

Str_2:= copy(Str_1, 1, 4);

Str_3:=Str_2;

Insert('any', Str_3,5);

delete(Str_1,2, Length(Str_1)-2);

WriteLn(' Str_1=',Str_1,' Str_2=',Str_2,' Str_3=',Str_3);

end.

Практические задания.

1. Исправить текст программы из примера 3 п.9.2 таким образом, чтобы соседние буквы во введенном слове разделялись не пробелами, а запятыми и только в том случае, когда они различны. Одинаковые буквы не должны разделяться. Отладить код программы.

2. Разработать и отладить код программы, в которой с клавиатуры вводятся два слова, а затем из первого слова исключаются все буквы, входящие в первое. Результат вывести на экран. Если в первом слове не осталось букв, вывести сообщение “empty word ” (пустое слово).

9.3. Множества

В основу понятия множества в Паскале положено математическое определение конечного множества как ограниченного набора объектов (элементов), обладающих некоторыми общими свойствами. В качестве элементов множества можно использовать только перечисляемый или интервальный тип данных. Этот тип называют базовым для множества. Также используется понятие подмножества (в том числе и пустого), как набора элементов, входящих в базовое множество.

Формально определение множества схоже с определением массива. Отличия от массивов заключаются в следующем:

1) у множества ограничен тип элементов,

2) в математическом плане номер элемента в массиве не фиксирован, в массиве каждый элемент имеет свой фиксированный номер,

3) в массиве может быть любое количество элементов с одинаковыми значениями, в множестве такой элемент только один (т.е. включение в состав множества элементов 'a', 'c', 'a', 'b', 'c' даст в итоге множество вида ['a', 'b', 'c']).

9.3.1. Описание и инициализация множеств

Как и в случае других типов данных, множества могут быть описаны:

1) при помощи специального типа или

2) непосредственным описанием соответствующей им переменной.

Синтаксис описания множественного типа:

type M = Set of B;

где M - множественный тип, Set,of - служебные слова, B - базовый тип.

Базовый тип может быть задан пользователем или взят из стандартных типов.

Пример 1. Описание множественного типа, содержащего все строчные буквы латинского алфавита, а также переменной данного типа:

type LAT = Set of 'a'..'z';

var B: LAT;

Пример 2. Описание множественного типа, содержащего все символы (в качестве базового используется стандартный тип данных):

type CH = Set of char;

var SYM: CH;

Синтаксис непосредственного описания переменной множественного типа похож на синтаксис описания типа:

var M: Set of B;

Пример 3. Непосредственное описание переменной множественного типа, совпадающего с типом из примера 1:

var B: Set of 'a'..'z';

Постоянные значения (константы) множественного типа записывают в виде заключенной в квадратные скобки последовательности одиночных элементов или элементов-интервалов базового типа, разделенных запятыми. Константа вида [ ] означает пустое подмножество. Константы могут использоваться для задания базового типа, перечисление и задание интервалов могут сочетаться, например:

var B:Set of ['a','b','c']; С:Set of [0,2,7,13]; D:Set of [1,10..20,5];

Как и у массивов, инициализация величины множественного типа может производиться с помощью типизированных констант:

const B0: Set of LAT= []; {задание пустого подмножества множества LAT}

const digits: Set of char= [‘0’ .. ‘9’];{задание константы символьного типа}

Порядок перечисления элементов базового типа в константах безразличен.

Во внутреннем представлении элементы множества нумеруются, начиная с нуля. Количество базовых элементов в одном множестве не должно превышать 256. Поэтому, в частности, стандартные типы ShortInt, Word, Integer, LongInt, несмотря на то, что являются перечислимыми, базовыми для множеств быть не могут.

Базовые элементы задают основное множество, из которого могут в виде значений переменной данного типа формироваться отдельные экземпляры – подмножества.

Пример 4. Рассмотрим описание переменной множественного типа, содержащего две буквы a и b:

var v_ab: Set of 'a'..'b';

Переменная v_ab может принимать значения только из следующего набора подмножеств множества, задающего тип: [ ] [a] [b] [a b].

За счет того, что все базовые элементы множества один раз указываются в его объявлении, во внутреннем представлении каждой переменной такого множества присутствие или отсутствие каждого базового элемента отмечается в одном бите (1 - если такой элемент в множестве присутствует, 0 - иначе). Такое битовое представление используется для выполнения операций над множествами.

Пример 5. Битовое представление всех возможных подмножеств базового множества, заданного в типе переменной v_ab из примера 4:

1)[ ] – 00 (в пустое множество не входят оба базовых элемента);

2)[a] – 10 (входит первый элемент a, второй b - не входит);

3)[b] – 01 (a не входит, b входит);

4)[a b] – 11 (оба элемента входят).

Пример 6. Формирование значений величины множественного типа, содержащего базовые элементы 'a','b','с':

const

B_1='a'; B_2='b';

var

BB1,BB2: Set of 'a'..'c';

B: char;

begin

B:= 'с';

BB1:=[B_1, 'b', B];

BB2:=['a', B_2];

end.

При присваивании значений переменным множественного типа в качестве элементов в них могут засылаться не только константы и переменные базового типа, но также и выражения, у которых тип результата совпадает с базовым типом множества.

Пример 7. Рассмотрим формирование множеств байтового типа:

const

Bt_1=45; Bt_2=123;

var

B: byte;

BB1, BB2: Set of byte;

begin

x:=36;

BB1:=[1,11, Bt_1, Bt_2];

BB2:=[x,x+1, x+2, Bt_1*2, Bt_2-12];

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]