Поряд із числовою інформацією в Паскале використовується епізоду-цифрова або символьне інформація, яка включає в себе великі, малі літери, цифри від 0 до 9 і допоміжні символи. Для опису символьних змінних використовується тип даних CHAR або STRING.
Тип даних CHAR
Кожна мінлива символьного типу може приймати значення тільки одного символу. Всі символи впорядковані у відповідності з прийнятим у ЕОМ коді (наприклад ASCII). При цьому порядковий номер символів називається кодом (наприклад, код латинського символу "А " дорівнює 65; символу "3" дорівнює 51).
Для символьних даних не визначені ніякі арифметичні операції, але вони можуть порівнюватися з своїм кодами, брати участь у читанні, печатки, операторів присвоювання. Існують дві стандартні функції перетворення :
1) ORD (C) приймає значення коду символу;
2) значення функції CHR(I) є символ з кодом Наприклад:ORD("А ")=65
CHR(ORD(C))=C ; CHR (65) = A ;
Рядок - це послідовність символів. Рядок можна представити як масив, елементи якого мають тип CHАR. Наприклад:
BUK: array[1..17] of char;
Масив BUK-масив символів, який містить 17 символів. Якщо символів менше, то рядок доповнюється пробілами праворуч. В іншому випадку виникає помилка невідповідність типів. Так як масиви символів є звичайними масивами з елементами типу CHAR, вони володіють всіма властивостями масивів.
Приклад: З набору 10 будь-яких символів надрукувати тільки великі англійські літери та їх коди.
program lr1;
type sl =array [1..10] of char;
var s: sl; {опис масиву символів}
i: integer;
begin
writeln ("уведіть 10 символів"):
for i:=1 to 10 do readln (s[i]); {введення масиву}
for i:=1 to 10 do
if (s[i]>=’A’) and (s[i]<= ‘Z’) then
writeln (‘Символ :’, s[i], ‘ його код =’, ord (s[i]);
readln;
end.
Тип даних STRING
У Турбо Паскаля передбачений тип даних STRING. Мінлива типу STRING може приймати значення змінної довжини. Максимально можлива довжина змінної 255 символів.
Наприклад:
str: STRING[200];
ow: STRING[10];
В дужках вказується максимальна довжина для цієї змінної. Для вводу значення типу STRING необхідно використовувати READLN, а не READ. За один раз може бути введена тільки один рядок. Два рядки можна порівнювати, використовуючи операції відносини (спочатку порівнюються самі ліві символи, якщо вони рівні, то порівнюються наступні). Для роботи з змінними типу STRING використовують такі стандартні процедури та функції:
1) Функція LENGTH
C:=LENGTH(str); Змінної буде присвоєно ціле значення, що вказує кількість символів у строкової змінної str .
2) Функція СОNCAТ - зчеплення рядків у порядку їх перерахування.
str:=CONCAT(st1,st2,...,stN);str-мінлива типу STRING, що складається з рядків st1,...,stN.
3) Функція POS
P:=POS (st1, st2); Р-ціле число, що показує номер позиції, з якої починається рядок st1 у рядку st2.
4) Функція COPY
S1:=COPY( str, I, J); Sl-символьний рядок, виділена з рядка str з позиції I, довжиною J символів.
5) Процедура DELETE(Str, I, J);
рядка str видаляється J символів, починаючи з I позиції.
6) Процедура INSERT(Str1, Str2, I);
пСтрока Str1 вставляється з I позиції в рядок Str2.
7) Процедура STR (V, S1);
Числове значення змінної V перетворюється в рядок символів і записується в рядок S1.
8) Процедура VAL (S1, V, C);
Строковий вираз S1 перетворюється в величину цілочисельного або речового типу і записується у змінній V . Якщо при цьому помилок не виявлено, то буде дорівнює 0 . В іншому випадку значення З одно буде номером позиції першого помилкового символу і V буде не визначено. Рядок S1 не повинна містити незначущих пробілів, мінлива V може бути цілою або речової, а змінна - тільки З цілою .
Приклад: Підрахувати кількість слів у введеної з клавіатури рядку.
program lr2;
var
s: string[30];
kol, i, n: integer;
begin
writeln ("введіть рядок"); readln (s);
kol:=0; {лічильник кількості слів}
n:= length(s); text_com{визначаємо довжину введеного тексту}
s:= concat(" ",s); {додаємо пробіл до першого слова}
for i:=1 to n do
if (copy (s,i,1)=" ") and (copy (s,i+1,1)<>" ")
then kol := kol+1;{підрахунок кількості слів}
writeln (s," кількість слів= ", kol);
readln;
end.