Рядки
1.
Рядки (string). Дане типу рядок — це
послідовність довільних символів (тобто елементів типу char). Сталі типу рядок
записують за допомогою двох штрих-символів, які охоплюють текст. Рядок може
містити від 0 до 255 символів. Наприклад, 'Україна', 'Львівська політехніка',
'' – порожній рядок нульової довжини, ' ' – рядок, що містить один
символ-пропуск.
Змінну
типу рядок оголошують за допомогою слова string так:
var
<змінна>: string[n];
|
де n –довжина рядка,
n<256. Довжину рядка можна не зазначати.
Приклад.
const slovo=’University’;
var fraza1: string[45]; fraza2: string;
Над змінними типу рядок визначені
операції з’єднання (+) та порівняння (<, <=, >, >=, =, <>).
Порівняння двох рядків здійснюється зліва направо до перших різних символів,
причому 'A'<'B', 'B'<'C' тощо. “Більшим” вважається символ, який
розташований в алфавіті далі. Числовий код символу дає функція ord, наприклад,
ord('B')=66, ord('A')=65. Зворотну дію виконує функція chr: chr(66) дає 'B'.
Приклад. Нехай t1='New', t2='
Year'. Тоді з'єднанням цих рядків буде s:=t1+t2 (s матиме значення 'New Year').
Тут s > t1.
Приклад. Вивести на екран малі
літери латинського алфавіту та їхні коди можна так: for v:= 'a' to 'z' do writeln(v, ord(v):5).
2.
Функції та процедури для дій з рядками. Над даними типу рядок визначені такі стандартні функції:
length(<рядок>) — визначає
кількість символів у рядку;
copy(r, m, n) — дає n символів
рядка r, починаючи з символу з номером m;
concat(r1, r2, ..., rn) — з'єднує
рядки r1, ..., rn в один рядок;
pos(r1, r2) — визначає номер
символу, з якого починається входження
рядкаr1 у рядок r2.
|
та
процедури:
insert(r1, <змінна>, n) —
вставляє рядок r1 у рядок, заданий змінною,
починаючи з позиції n;
delete(<змінна>, m, n) —
вилучає n символів з рядка, заданого змінною,
починаючи з позиції m;
str(<число>, <змінна>)
— переводить числове дане в дане типу рядок;
|
де зазначена змінна
посилає в процедуру вхідне дане типу рядок і отримує назад інший рядок –
результат виконання процедури.
Приклад. Нехай змінна Lviv має значення 'Львівська політехніка'. Розглянемо
приклади функцій та їхні значення:
Функція Значення
length(Lviv) 21;
copy(Lviv, 15, 11) техніка;
concat(Lviv,' – 2000') Львівська політехніка –
2000;
pos('т', Lviv) 15.
Наступні
процедури нададуть змінній Lviv таких значень:
Процедура
Значення
змінної Lviv
insert('НУ ', Lviv, 1) 'НУ Львівська політехніка'
delete(Lviv, 6, 16) 'Львів'
str(2000, Lviv)
'2000'
val('1256', Lviv1, Ozn) Lviv1=1256, Ozn=0
Є два способи опрацювання
даних типу string. Перший — можна опрацьовувати весь рядок як єдине ціле,
застосовуючи до нього функції та процедури, другий — можна розглядати рядок як
масив, складений з елементів-символів, і опрацьовувати його за правилами роботи
з елементами масиву.
Приклад. Деякі значення змінним
fraza1 та fraza2 з попереднього прикладу можна надати, а потім вивести тексти
на екран так:
fraza1:=’Ви любите
канікули?’;
for i:=1 to 19 do
read(fraza2[i]);{Вводимо текст з клавіатури}
writeln(fraza1);
writeln(fraza2).
Задача
1.
Кодування інформації. Вилучити з фрази а пропуски, коми і крапки, інші символи
продублювати. Вивести результат.
program MyCode;
uses Crt;
var a, b, c : string; i :
integer;
begin
clrscr;
write('Введіть текст: ');
readln(a); {Вводимо будь-яку фразу}
b := '';
for i := 1 to Length(a) do
begin
c := Copy(a, i, 1); {Зверніть увагу на коментар унизу:}
if (c <> ',') and (c <>'.')
and (c <>' ' ) { або так: c := a[i]; }
then b := b + c + c
end;
writeln(b);
readln
end.
Задача
2.
Скласти програму, яка скрізь у заданому тексті mytext замінить деяке слово
іншим словом такої ж довжини (word1 на word2).
program FindAndChange;
uses Crt;
var mytext, word1,word2 :
string; i,k : integer;
begin
clrscr;
write('Введіть текст: '); readln(mytext);
write('Введіть шукане слово: '); readln(word1);
write('Введіть інше слово: ');
readln(word2);
k := length(word1);
for i := 1 to length(mytext) - k do
if copy(mytext, i, k) = word1 then
begin
delete(mytext, i, k);
insert(word2, mytext, i)
end;
writeln(mytext);
readln
end.
Задача
3. Нехай
задано рядок 'Я люблю інформатику'. Визначити довжину рядка. Вивести на екран
друге слово цього рядка.
program Ryadok;
uses Crt;
const r1: string = 'Я
люблю інформатику';
var i,k,m,n1,n2: integer;
begin
clrscr;
m:=0;
k:=length(r1); {Визначаємо довжину рядка}
writeln('Довжина рядка k=', k);
for i:=1 to k do {Переглядаємо всі символи рядка}
if r1[i]=' ' then {Шукаємо пропуск}
begin
m:=m+1;
if m=1 then n1:=i; {Визначаємо
номер першого та другого пропусків}
if m=2 then n2:=i
end;
for i:=n1+1 to n2–1 do write(r1[i]); {Виводимо
слово між двома пропусками}
readln
end.
Немає коментарів:
Дописати коментар