5.7 Строковий тип - string
Строковий тип - аналогічний типу одномірного масиву, але його компоненти мають тип CHAR. Довжина змінної даного типу за замовченням рівняється 255 символам, може бути так само обмежена в розділі описів. Компонента з нульовим номером містить довжину рядка. Строкові змінні описуються таким чином:
<Ім'я типу> : - STRING;
<Ім'я типу> - STRING[n];
На відміну від масивів кількість символів може змінюватися від 0 до 255. Якщо максимальний розмір рядка не зазначений, то він береться рівним 255 символам.
Приклад.
Var a1: string [2]; a2: string; Begin ….... A1:='ТАК'; A2:='Може бути'; … end.
До будь-якого символу можна звертатися за допомогою індексу.
Приклад.
A2:='Осінь';
Writeln(a2[3]); {На друк буде виведена буква е}
Writeln(ord(a2[0]); { ord(a2[0] )дає довжину рядка, }
A2:=A2+' прийшов'; {Знак + «склеює» рядка}
Writeln(a2); {На друк буде виведене повідомлення " Осінь прийшла"}
Для даного типу є бібліотека додаткових функцій:
1) Function Concat (<змінна1>,…,<змінна n>) - злиття строкових змінних.
2) Function Copy (<ім'я рядка>, <позиція>, <кількість символів>) - повертає підрядок із заданого рядка, починаючи з <позиції> довжиною <кількість символів>.
A:='baby_12_toy';
b:= Copy(a,6,3); { з рядка а починаючи з 6 позиції копіюється 3 символи. Результат b= 12_}
3) Procedure Delete (<ім'я рядка>, <позиція>, <кількість символів>) - видалення.
4) Procedure Insert (<ім'я вставки>,< ім'я рядка>, <позиція>) - вставка.
5) Function Upcase (<змінна>) - повертає для малих латинських букв відповідні великі букви.
6) Function Pos (<ім'я підрядка >, <ім'я рядка>) - пошук 1-го входження фрагмента (підряка) у даний рядок.
7) Function Length (<ім'я рядка >) - повертає довжину рядка, результат типу integer.
8) Procedure Val(<ім'я рядка>, <змінна цілого або дійсного типу>, <параметр>) - перетворює рядок символів у значенні цілого або дійсного типу, залежно від типу змінної. Якщо перетворення вдале, <параметр> = 0, якщо немає - він містить номер позиції, де відбулася помилка перетворення.
Приклад. Підрахувати кількість цифр у рядку.
uses wincrt; var ln, i, h: word; St: string; begin writeln('введіть рядок'); readln (st); ln:=ord (st [0]); for i:=1 to ln do if(st[i]>='0') and st[i]<='9') then h:=h+1; write('кількість цифр=',h); end.
5.8 Множини
Множини - набори однотипних об'єктів. Множина може містити до 255 елементів.
Type <ім'я типу> = Set of <тип елементу>
Де <тип елемента> - базовий тип елементів множини, у якості якого може використовуватися будь-який порядковий тип, крім WORD, INTEGER, LONGINT.
Приклад.
uses wincrt; Type dc = Set of '0'…'9'; dt=Setof0...9…9; var s1,s2,s3:dc;s4,s5,s6:dt; begin ……………… s1:=['1','2','3']; s2:=['3','2','1']; s3:=['2','3']; s4:=[0...3,6]; s5:=[4,5]; s6:=[3...9]; ……………… end..........
Основні операції над множинами:
+ об'єднання; результат містить елементи першої множини, доповнені відсутніми елементами із другої:
s4+s5 (([0,1,2,3,4,5,6];
s5+s6 ( [3,4,5,6,7,8,9];
* перетин; результат містить елементи, загальні для обох множин:
s4*s6 ( [3,6].
- різниця; результат містить елементи з першої безлічі, які не належать другому:
s6-s5 ( [3,6,7,8,9];
= перевірка еквівалентності; повертає значення TRUE, якщо обидві множини еквівалентні.
<> перевірка нееквівалентності; повертає значення TRUE, якщо обидві множини нееквівалентні.
<= перевірка включення; повертає значення TRUE, якщо перша множина включається в другу.
>= перевірка включення; повертає значення TRUE, якщо друга множина включається в першу.
IN перевірка належності; у цій операції перший елемент - вираз, а другий - множина. Повертає TRUE, якщо вираз має значення, що належить множині:
3 in s6 повертає TRUE;
2*2 in s1 повертає FALSE;
