Опис змінних строкового типу у Паскале
Змінні строкового типу повинні бути описані з використанням розділу описания або безпосередньо в розділі описания змінних
- Type st =string[n]; 2. Var s :string[n];
Var s :st;
де st - ім'я типу;
s - ім'я змінної;
/strong> - розмір рядка (область пам'яті), кількість символів у рядку
(атрибут довжини n=1..255).
Нульовий байт рядка містить інформацію про її фактичної довжині.
Операції з змінними строкового типу
Над змінними строкового типу (стрінгами) можна виконувати наступні операції:
- присвоювання (ввід/вивід);
- порівняння
- конкатенацію.
Призначення у Паскале
Перемененной типу String можна присвоїти значення інший змінної або строкової константи
:St=’Студент’;
Stu:St=;
При цьому довжина строкової константи повинні бути не більше оголошеної в іншому випадку надлишкові символи будуть проігноровані.
Поповнення / вивід
Перемененные типу Stringможна зчитувати з файлу або записувати у файл цілком або символи, тобто до кожного елементу рядка можна звертатися як до елемента масиву.
Readln(f, Str);
Writeln(f, Str);
For i:=1 to n do Readln(f, Str[i]);
For i:=1 to n do Writeln(f, Str[i]);
Порівняння в Паскале
Порівняння стрінгів проводиться за допомогою операцій відносини (=, <>, <, >, <=, >=) шляхом за парного порівняння двох символів різних стрінгів зліва на право (порівнюються їх числові подання таблиці кодів ASCII
Два рядки рівні, якщо вони однакової довжини і складаються з однаковою послідовності символів.
‘a’<’b’ т. к. ORD(‘a’)<ORD(’b’)
‘a1’<’a2’ т. к. ORD(‘a1’)<ORD(’a2’)
‘ a’<’a ’ т. к. ORD(‘ ’)<ORD(’a’)
‘kom’<’com’ т. к. ORD(‘k’)<ORD(’c’)
Конкатенація (Зчеплення) в Паскале
Конкатенація - ообъединение двох і більше рядків в одну. Операція позначається знаком ‘+’ і має більш високий пріоритет, ніж порівняння. Вона застосовується до стринговым змінним і констант. При цьому довжина строкової константи повинні бути не більше оголошеної в іншому випадку надлишкові символи будуть проігноровані.
S:=St1+St2;
S:=’TURBO’+’PASCAL’;
R:=’5’+’.’+’5’; (R:=5.5)
Існує набір процедур і функцій для роботи зі стоками. Основні з яких наведені в табл.
Таблиця 1
п/ф |
Запис |
Призначення |
Приклад |
ф |
Length(str) |
Визначає фактичну довжину рядка. |
Var Str :string[10];
***
Srt:=’ПЕТРОВ’;
L:=Length(str); (l=6) |
ф |
Concat(S1,... |
Зчеплення рядків |
S1:= ’ПЕТРОВ’;
S2:=Concat(S1,’Н. І.’) |
ф |
Pos(St1,Str) |
Виявляє в рядку Str підрядок ST1 і видає номер позиції (к), з якої вона починається і 0, якщо рядок не знайдено |
k=Pos:(‘55’,’1552’); (k=2)
k:=(Pos‘53’,’1552’); (k=0) |
ф |
Copy(Str,p,N) |
Виділяє з рядка Str підрядок довжиною Nначиная з позиції P |
s:=Copy(‘ПЕТРОВ’,4,3);
s:=’РІВ’ |
п |
Delete(Str,p,N) |
Видаляє з рядка Str, починаючи з позиції P, N символів |
S:= ’ПЕТРОВ’;
Delete(S,5,2);
S:= ’ПЕТРО’; |
п |
Insert(Str1,Str,p) |
Вставляє в рядок Str підрядок Str1 починаючи з позиції P, N символів |
S:= ’ПЕТРОВ’;
Insert(S,’A’ ,7);
S:= ’ПЕТРОВА’; |
п |
Val(Str,N,k) |
Перетворює стринг Str у число N. k-код перетворення |
Val(‘30’,N,k); (N=30; k=0)
Val(‘3.0’,N,k);
(N=той же; k=2) |
п |
Str(N,Str) |
Перетворює число N стринг в Str |
Str(55,S);S:=’55’ |
Приклад 17.3. Замінити під введеному тексті прізвище ІВАНОВ на ПЕТРОВ.
Текст програми
Program string1;
Uses CRT;
Var
str :string;
:pinteger;
Begin
ClrScr;
{ Writeln("Введіть рядок");
Read(str);}
str:=" Студент Іванов не відвідував лекції,
студент Іванов не склав іспит ";
p:=Pos("€ў ®ў",str);
While p>0 do
Begin
Delete(str,p,6);
("Insert ЏҐва®ў",str,p);
p:=Pos("€ў ®ў",str);
End;
Writeln("Підсумок:");
Writeln(str);
Readln;
End.
Результати роботи програми
Результат:
Студент Петров не відвідував лекції, студент Петров не склав іспит