Конспект лекций по информатике для специальностей 2102, 2103 Автор доц., к т. н. Каширская Е. Н
Вид материала | Конспект |
Содержание7. Множественные типы |
- Конспект лекций бурлачков в. К., д э. н., проф. Москва, 1213.67kb.
- Конспект лекций по курсу "Начертательная геометрия и инженерная графика" Кемерово 2002, 786.75kb.
- Конспект лекций по дисциплине «Маркетинг», 487.79kb.
- Конспект лекций для студентов всех специальностей дневной и заочной формы обучения, 1439.07kb.
- Конспект лекций для студентов, магистров и аспирантов всех специальностей, 373.35kb.
- Конспект лекций для студентов по специальности i-25 01 08 «Бухгалтерский учет, анализ, 2183.7kb.
- Конспект лекций организация производства и маркетинг для студентов 3 курса специальностей, 2989.73kb.
- Конспект лекций по дисциплине «психология и педагогика» омск 2005, 2020.42kb.
- Конспект лекций по курсу «Организация производства», 2034.84kb.
- Конспект лекций по курсу «Организация производства», 2032.47kb.
6.4. Строки
Тип String (строка) в Паскале широко используется для обработки текстов и во многом похож на одномерный массив символов Array [0..N] of Char. Однако в отличие от массива количество символов в строке – переменной может меняться от 0 до N, где N – максимальное количество символов в строке. Значение N определяется в разделе объявления типа String [N] и может быть любой константой порядкового типа, но не больше 255: N 255. Можно не указывать N, в этом случае длина строки принимается максимально возможной: N = 255.
Строка трактуется как цепочка символов. К любому символу в строке можно обратится точно так же, как к элементу одномерного массива Array [0..N] of Char.
Пример:
Var st: String;
- - - - - - - - - - - - - -
if st[5]= ‘A’ then …….
Самый первый байт в строке имеет индекс 0 и содержит текущую длину строки. Первый значащий символ строки занимает второй и имеет индекс 1. Над длиной строки можно совершать необходимые действия и таким способом менять длину строки.
Пример:
Var st:String[10];
I:Integer;
- - - - - - - - - - - - - -
st[0]:=5;
Значение Ord (st[0]), то есть текущую длину строки можно получить с помощью функции length (st).
К строке можно применить операцию + (сцепление строк), например:
St:=’a’+’b’;{ ab}
St:=st+’c’; { abc}
Если длина сцепленной строки превысит максимально допустимую длину N, то «лишние» символы отбрасываются.
Пример:
Var st :String [1];
Begin st:=’123’;
Writeln(st); { 1}
End;
Кроме сцепления строк, все остальные действия над строками (и символами) реализуются с помощью встроенных функций.
1) Concat (S1<, S2, S3,…SN>)– функция типа String, сцепление строк;
2) Copy (имя строки,№ нач. символа, кол-во символов)– функция копирования;
- Delete (имя строки,№ нач. символа, кол-во символов)– функция удаления;
- Insert (имя подстроки, имя строки, № нач. символа в строке)– вставка;
- Length (имя строки)– функция типа Integer, вычисляет длину строки;
- Pos (имя подстроки, имя строки)- функция типа Integer, отыскивает в строке первое вхождение подстроки и дает № позиции, с которой она начинается; если подстрока не найдена, значение функции будет = 0;
- Str (число Real или Integer <: общая ширина поля<: кол-во симв. в дроб. части>>, имя строки) – процедура, преобразующая число типа Real или Integer в строку символов так, как это делает процедура Writeln перед вызовом; параметры, если они присутствуют, задают формат преобразования;
- Val (имя строки, число Real или Integer, параметр) – процедура, преобразующая строку символов во внутреннее представление целое или вещественное числа; параметр = 0, если преобразование проведено успешно, в противном случае он содержит № позиции в строке, где обнаружен ошибочный символ;
- Upcase (символ) – функция типа Char, возвращает символ в верхнем регистре, если он определен для него, либо сам символ, если для него нет верхнего регистра.
Пример: Upcase(‘a’) даст A,
Upcase(‘2’) даст 2.
Пример:
Var
x: Real;
y: Integer;
st, st1: String;
- - - - - - - - - - - - - - - - -
st:= concat (‘12’,’345’); (*получится st 12345*)
st1:= copy (st, 3, lenght(st)-2); (*получится st1 345*)
insert(‘-’,st1,2); (*получится st1 3-45*)
delete(st, pos(‘2’,st),3); (*получится st 15*)
str(pi:6:2,st); (*получится st 3.14*)
st1:=’3.1415’; (*получится st1 3.1415*)
val(st1,x,y); (*получится y=2, x – какой был*)
Операции отношения
= <> > < >= <=
выполняются над двумя строками посимвольно, слева направо, с учетом внутренней кодировки символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением chr(0).
Пример: Операции дают значение true:
‘turbo’<’turbo-pascal’;
‘A’<>’IFF’;
‘ПАскаль’<’Паскаль’;
7. МНОЖЕСТВЕННЫЕ ТИПЫ
Множественный тип данных строится на основе некоторого базового типа, в качестве которого может быть любой простой тип, кроме действительного и неограниченного целого.
Множеством называется совокупность объектов, обладающих некоторым общим свойством.
Множества могут состоять из любого числа объектов (элементов), но могут и не содержать элементов.
В математике под множеством понимается некоторый набор элементов. Например, множество плоских геометрических фигур:
[круг, ромб, квадрат, треугольник, прямоугольник].
Все элементы одного множества различны и неупорядочены. Элементы множества не могут повторяться.
Пример. [круг, ромб, круг] – неверная запись множества.
[круг, ромб, квадрат]=[ромб, круг, квадрат] – одинаковы и равны между собой.
Множество в языке программирования Паскаль – это ограниченный, неупорядоченный набор различных элементов одинакового типа.
Элементы множества заключаются в […].
Множество может не содержать ни одного элемента. В этом случае оно называется пустым [ ].
Если множества используются в программе, то они должны быть описаны либо с помощью раздела Type, либо непосредственно в разделе переменных.
Type имя_типа = set of t;
базовый тип элементов множества (любой простой кроме real и integer)
Var имя_множества: имя_типа;
Дело вот в чём. Размерность множества, то есть допустимое количество элементов множества обычно небольшое. Для большинства компьютеров оно не превышает 256 (то есть от 0 до 255). Поэтому объявление
Set of Integer является недопустимым.
Вместе с тем запись Type M = Set of Boolean является корректной, поскольку объявляется множество, содержащее два элемента со значениями True и False.
Таким образом, указанным ограничениям на тип элемента удовлетворяют базовые стандартные типы:
Byte,
Char,
перечислимые типы,
ограниченные типы.
Пример. Type Letters = Set of ‘A’..’Z’;
Holidays = Set of 1..31;
U = Set of Char;
I = Set of Byte;
Пример. Type M = Set of (A, B, C, D);
Var G, F: M;
Здесь задан тип множества М. В разделе переменных указано, что переменные имеют тип М, то есть могут принимать значения любых из перечисленных букв, например:
G := [A, B, D];
F := [C, A, B];
Пример. Type Town = (Moscow, Kiev, Yalta);
M = Set of Town;
Var P1, P2 : M;
P3 : Set of ‘A’..’Z’;
P4, P5 : Set of 0..9;
Переменная Р1 множественного типа М может принимать следующие значения:
[Moscow] [Kiev] [Moscow, Yalta] [Moscow, Kiev] [Kiev, Yalta] [Moscow, Kiev, Yalta] [Yalta]
В общем случае, если базовое множество содержит N элементов, производный множественный тип определяет 2N подмножеств. Смотрите пример: 3 элемента, значит, 23 = 8 подмножеств.
Другой пример описания:
Type MNOG = Set of 1980..2000;
Var M1, M2: MNOG;
В программе элементами множеств М1 и М2 могут быть любые целые числа от 1980 до 2000, например:
M1:= [1988, 1995, 1981];
M2:= [1980, 1981, 1982, 1983];
Приведём примеры описания множеств непосредственно в разделе переменных:
Var M1, M2: Set of 1980..2000;
Var MS: Set of Char;
Здесь элементами являются символьные константы, например:
MS:= [‘A’, ‘N’, ‘R’];
Количество элементов, входящих в множество, может быть ограничено. Оно зависит от компьютера и версии языка Паскаль.