Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Турбо Паскаль.doc
Скачиваний:
21
Добавлен:
22.03.2016
Размер:
307.71 Кб
Скачать

Упакованные массивы

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

<имя>:packed array[<тип индексов>]: of char;

Пример:

Из входного потока символов, состоящих из букв и пробелов, выделить слово и записать его в упакованный массив символов, содержащий максимум 16 букв. Если слово содержит меньше 16 букв, оставшиеся позиции заполнить пробелами.

program simvol;

type

word=packed array[1..16] of char;

var

a:word;

m,d: integer;

s:char;

begin

writeln(‘Начать ввод’);

repeat

read((s); {Ввод очередного символа}

until (s>’A”) and (s<’’z’); {Встретилась буква}

d:=0;

repeat

inc(d) ); {определение длины слова}

a[d]:=s; {запись очередной буквы в массив}

read(s); {чтение очередного символа}

until (s<’A’) or (s>’z’); {пока не выйдем за пределы слова}

for m:=d+1 to 16 do a[m]:=’ ‘; { заполнение пробелами лишних позиций}

writeln(‘Полученное слово’);

for m:=1 to 16 do write(a[i];

writeln;

readln;

end.

Упакованный массив образует символьную строку. Символьная строка может быть либо строковой констпантой, либо строковой переменной.

К строковым переменным и константам применимы операции отношения (<, <=, >, >=, <>, =), если они имеют динаковый тип тип индексов и одинаковую длину.

Например,

Const

s1=’abcd’;

s2=’abce’;

тогда

s1<s2 – true;

s1=s2 – false;

Строки

Ввиду громоздкости упакованных массивов намного проще работать со строковыми типами данных, в которых хранится текстовая информация.

Пример:

Упорядочить в алфавитном порядкесписок из 200 слов. Длина слова – 16 символов.

program simb1;

var

w: array[1..200] of string[16];

g: string[16];

i,n,k: integer;

begin

for i:=1 to 200 do

readln(w[i]); {Ввести очередное слово – формирование массива}

for i:=1 to 199 do {сортировка методом прямого доступа}

begin

g:=w[i]; {i –тый элемент считаем минимальным}

n:= i;

for k:=i to 200 do {поиск наименьшего элемента}

if w[k]<g {если принятый за минимальный элемент оказался не }

then {минимальным}

begin

g:=w[k]; { то заменить его на меньший}

n:=k; { запомнить место минимального элемента в массиве}

end;

if i<>n {если принятый за минимальный элемент оказался не }

then {минимальным}

begin

w[n]:=w[i];

w[i];=g; {поменять его местами с минимальным}

end; {then}

end; {for i}

for i:=1 to 200 do

write(w[i],’ ‘);

readln;

end.

Множества

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

Множественный тип данных задается в виде:

type

<Имя>= set of <тип>;

где <Имя> - имя типа,

<тип> - базовый тип, на котором строится множество.

Принадлежность переменных к множественному типу м.б. определена н В разделе переменных без определения имени типа в разделе type.

Пример

Множество гласных букв может быть определено следующим образом

type

b=’a’..’z’;

g=set of b;

var

glas:g;

или

type

b=’a’..’z’;

var

glas: set of b;

или

var

glas: set of char;

Множество включает в себя

    1. набор элементов простого базового множества;

    2. все подмножества данного множества;

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

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

Пример

var

glas: set of char;

begin

glas:=[ ];

glas:= [ ‘a’];

glas:=[‘a’,’e’];

……………….

glas:=[‘a’, ’e’, ‘i’, ‘u’, ‘o’, y’];

Пример

Годы учебы в вузе с 2009 по 2013 могут быть представлены в следующем виде

var

g: set of r;

begin

g:=[ ];

g:= [ 2009];

g:=[2009, 2010];

g:=[2009, 2012];

……………….

g:=[2009, 2010, 2011, 2012, 2013];

Если совокупность элементов, образующих значение переменной множественного типа, упорядочена в соответствии с заданным базовым типом, то можно не перечислять все элементы, записать только граничные, разделив их .. . Например g:=[2009..2013].

К переменным и константам множественного типа применимы операции

1) объединения +;

2) пересечения *;

3) вычитания -.

Например

[2009, 2011] + [2009, 2013] = [2009, 2011, 2013];

[2010]*[2009, 2010, 2012] = [2009];

[2009, 2010, 2011] - [2009, 2011] = [2010]