
- •Программирование на Турбо Паскале
- •Вещественный тип данных
- •Символы и строки.
- •Операции и их приоритет
- •Процедура ввода
- •Процедура вывода
- •Оператор варианта
- •Процедуры и функции
- •Массивы
- •Упакованные массивы
- •Множества
- •Файловые типы данных
- •Операции ввода-вывода
- •Перемещения по файлу
- •Специальные операции
- •Работа с текстовыми файлами
- •Комбинированный тип данных
- •Оператор with
- •Переменная структура записи
Упакованные массивы
Обычно один элемент массива занимает в оперативной памяти одно слово. В том случае, когда массив состоит из символов, наличие в одном машинном слове всего одного символа невыгодно. В этом случае в одном слове размещают несколько символов, т.е. массив упаковывают, что значительно экономит память. Упакованный массив описывается следующим образом:
<имя>: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;
Множество включает в себя
-
набор элементов простого базового множества;
-
все подмножества данного множества;
-
пустое подмножество, т.е. подмножество, не содержащее ни одного элемента.
Значения переменных и констант множественного типа задаются с помощью конструктора множеств, который записывается в виде последовательности разного числа элементов базового типа, разделенных запятыми и заключенных в [ ]. Конструкция [ ] означает пустое подмножество.
Пример
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]