Рядок –це
послідовність символів кодової таблиці ЕОМ.
При
використанні у виразах рядок охоплюється з двох сторін апострофами. Кількість
символів в рядку може змінюватися від 0 до 255.
Для опису
рядкових величин використовують ідентифікатор string, після якого в квадратних дужках записується максимальне
значення довжини рядка для даної величини.
Формат:
Var
< ідентифікатор >: string[максимальна довжина рядка];
Приклад.
Var r1: string[10];
r2:
string[4];
Якщо
довжина рядка не вказана, то вона автоматично приймає значення 255 байт.
Рядкові
величини можна використовувати в
програмі у вигляді констант.
Приклад.
Const
Name=’інформатика’;
1. Основні вказівки і функції опрацювання
рядкових величин .
1. Char –символьний тип (займає 1 байт пам’яті)
Опис даних символьного типу:
Const name1= ‘v’; — опис
символьної константи,
Var name2: CHAR; — опис символьної змінної.
Допустимі всі операції порівняння:
<, <=, =, >, >=, <>.
Функції для роботи з символами.
CHR(N) — символ з кодом N.
Наприклад: chr(65)
ORD(S) — код символу S. Наприклад: ord(‘A’)
SUCC(S) — наступний символ. Наприклад: succ(‘K’)
PRED(S) — попередній символ. Наприклад: pred(‘K’)
UPCASE(S) — переводить літери у верхній регістр. Наприклад:
upcase(‘m’)
2. Рядок — впорядкована послідовність символів кодової
таблиці ASCII.
Опис даних рядкового типу:
Const <ім’я>=‘ліцей’
Var <ім’я>:array[1..50]
of char;
Var
<ім’я>:string[максимальна довжина рядка];
Приклад. Const
R1=‘computer’;
Var R2: STRING;
R3: STRING [20];
R3:array[1..20]
of char;
Кількість символів в рядку називається його довжиною. Довжина рядка може
бути від 0 до 255. Рядкові величини можуть бути константами і змінними. Рядкова
константа – це послідовність символів між апострофами.
Над рядковими величинами допустимі операція склейки (конкатенації) (+)
та операції відношення
(=,<,>,<=,>=,<>).
Для рядкових величин визначені такі функції та процедури:
1.Функція Concat. Функція Concat здійснює
об’єднання рядків Rl; R2, R3 в один рядок в такому порядку, в якому вони
записані.
Формат Concat(Rl,R2,R3); або R1+R2+R3
(string)
Приклад.
Program Fconcat;
Const Rl='Moвa '; R2='програмування '; R3=’Turbo Pascal';
Var R:string[35];
begin
R:=concat(Rl,R2,R3);
writeln(R); end.
2. Функція Length. Функція Length видає
фактичну довжину рядка, який міститься в даній змінній.
При підрахуванні довжини рядка враховуються всі символи, в тому числі і проміжки!!!
Формат: Length(R); (integer)
Приклад. Program Flength;
Const R=’Turbo Pascal’;
Var N: integer;
begin
N:=length(R);
writeln('n=',N); end.
3. Функція Copy. Функція
Copy копіює фрагмент довжиною N рядка R, починаючи з позиції Poz.
Формат
Copy(R, Poz, N); (string)
Приклад. Program
Fcopy;
const R='Turbo Pascal';
var R1: string[6];
begin
R1:=Copy(R, 7, 6);
writeln(R1); end.
4. Функція Pos. Функція Pos знаходить номер
позиції Р, з якої починається перше входження слова C в рядку R. Якщо слово C в рядку R
не знайдено, то буде надруковано число 0.
Формат Pos(C,R); (integer)
Приклад. Program Fpos;
Const R=‘інформатика'; C=‘форма';
Var P: integer;
begin
P:=Pos(C, R);
writeln('P=',P); end.
5. Процедура Insert. Процедура
Insert вставляє слово R1 в рядок R, починаючи з позиції Poz.
Формат Insert(R1, R, Poz); (string)
Приклад. Program
PInsert;
Var Poz: integer;
R, R1: string[35];
begin
R:='Moвa Pascal';
R1:=’Turbo ‘;
insert(R1, R, 6);
writeln(R); end.
6. Процедура Delete.
Процедура Delete знищує слово, яке
починається з вказаної позиції Poz і має задану довжину N в рядку R.
Формат Delete(R, Poz, N); (string)
Приклад. Program PDelete;
Var R:string[35];
begin
R:='Moвa Turbo Pascal';
delete(R, 6, 6);
writeln(R); end.
Зверніть увагу!!! Стала нульової довжини –
‘’
•
Рядок символів вводиться і виводиться як одна змінна.
•
Значення типу
string вводяться за допомогою тільки процедури readln і
за один раз може бути введений лише один рядок.
Завдання. Ввести довільний текст.
Перевірити, чи в ньому кількість відкритих дужок дорівнює кількості закритих
дужок. Вивести повідомлення “так” або
“ні”.
Учням пропонується розмістити в
правильному порядку елементи блок-схеми з використанням інтерактивної дошки.
Текст програми.
Program
Sumvol;
uses crt;
var
R:string[100];
i,k1,k2,l:integer;
begin
clrscr;
writeln('Vvestu text:');
readln(r);
k1:=0;
k2:=0;
l:=length(R);
for i:=1 to
l do
begin
if
copy(R,i,1)='(' then k1:=k1+1;
if
copy(R,i,1)=')' then k2:=k2+1;
end;
if k1=k2
then write('yes') else write('no');
readln; end.
I. Завдання
1. Скласти програму обчислення кількості букви «А»
в реченні.
Приклад розв’язування задачі та складання програми.
Program z1;
Var S: string;
N, i,k:integer;
Bеgin
Writeln(‘->s’);
readln(s);
N:= length(s);
K:=0; For i:=1 to n do
If s[i]=’a’ then k:=k+1;
Writeln(‘k=’,k); End.
Типовые задачи на строковые переменные
Дана строка, содержащая 20 символов. Подсчитать сколько раз буква F встречается в данной строке.
program zadacha (input, output);
{подсчет количества повторений буквы F в слове)
var
s : string[20];
i, k: integer;
begin
writeln ( ' введите слово. Количество символов в нем не должно превышать 20 ') ;
read (s) ;
k:=0;
for i:=1 to 20 do
if s[i] ='f' then k:=k+1; writeln (' буква F встречается', k, ' раз(а)')
end.
{подсчет количества повторений буквы F в слове)
var
s : string[20];
i, k: integer;
begin
writeln ( ' введите слово. Количество символов в нем не должно превышать 20 ') ;
read (s) ;
k:=0;
for i:=1 to 20 do
if s[i] ='f' then k:=k+1; writeln (' буква F встречается', k, ' раз(а)')
end.
Дана строка, содержащая 20 символов. Подсчитать количество цифр, входящих в данную строку.
program zadacha (input, output); {подсчет количества цифр в слове)
var
s: string[20];
n: string[10];
k, i, j: integer;
begin
writeln (' Введите строку символов');
read (s) ;
n:='0123456789';
for i:=1 to 20 do
for j:=1 to 10 do
if s[i] = n[j] then k:=k+l; write(' в строке ', s, ' ', k, ' -цифр')
end.
var
s: string[20];
n: string[10];
k, i, j: integer;
begin
writeln (' Введите строку символов');
read (s) ;
n:='0123456789';
for i:=1 to 20 do
for j:=1 to 10 do
if s[i] = n[j] then k:=k+l; write(' в строке ', s, ' ', k, ' -цифр')
end.
Проверить является ли слово палиндромом
Дано произвольное слово. Проверить является ли оно палиндромом. (Пример: слова палиндромы - казак, шалаш, мадам, фраза «a роза упала на лапу азоpа » и т. д.)
Дано произвольное слово. Проверить является ли оно палиндромом. (Пример: слова палиндромы - казак, шалаш, мадам, фраза «a роза упала на лапу азоpа » и т. д.)
program zadacha (input, output) ;
{проверить, является ли слово палиндромом}
var
s : string;
l, i, m, k: integer;
begin
writeln ('Введите слово');
read (s) ;
k:=0;
l : = length (s) ;
m: = trunc(l/2) ;
for i:=1 to m do
if s[i] <> s[l+1-i] then k:=1;
if k=1 then writeln (' слово', s, ' не палиндром')
else writeln (' слово', s, ' -палиндром ')
end.
{проверить, является ли слово палиндромом}
var
s : string;
l, i, m, k: integer;
begin
writeln ('Введите слово');
read (s) ;
k:=0;
l : = length (s) ;
m: = trunc(l/2) ;
for i:=1 to m do
if s[i] <> s[l+1-i] then k:=1;
if k=1 then writeln (' слово', s, ' не палиндром')
else writeln (' слово', s, ' -палиндром ')
end.
Сжатие строки
Дана строка символов. Получить новую строку из первоначальной строки, без точек.
Дана строка символов. Получить новую строку из первоначальной строки, без точек.
program zadacha (input, output) ; {сжатие строки}
var
s, h: string;
i, k: integer;
begin
writeln (' Введите строку символов');
read (s) ;
for i:=1 to length(s) do if s[i] <> '.' then
begin
k:=k+1;
h[k]:= s[i]
end;
for i:=1 to length(s) do write ( h[i] )
end.
var
s, h: string;
i, k: integer;
begin
writeln (' Введите строку символов');
read (s) ;
for i:=1 to length(s) do if s[i] <> '.' then
begin
k:=k+1;
h[k]:= s[i]
end;
for i:=1 to length(s) do write ( h[i] )
end.
Формирование новой строки
И заданной строки получить новую строку, удалив все "*" и повторив каждый символ, отличный от звездочки дважды. Распечатать полученную строку.
И заданной строки получить новую строку, удалив все "*" и повторив каждый символ, отличный от звездочки дважды. Распечатать полученную строку.
program zadacha (input, output); {формирование новой строки}
var
s, h : string;
i, k, l, j: integer;
begin
writeln (' Введите строку символов');
read (s) ;
k:=l;
l:=length(s);
j:=l;
for i:=1 to l do
if s[i] <> '*' then begin h[j]:=s[i]; h[j+1]:=s[i]; j:=j+2
end;
for i:=1 to 2*1 do write ( h[i] )
end.
var
s, h : string;
i, k, l, j: integer;
begin
writeln (' Введите строку символов');
read (s) ;
k:=l;
l:=length(s);
j:=l;
for i:=1 to l do
if s[i] <> '*' then begin h[j]:=s[i]; h[j+1]:=s[i]; j:=j+2
end;
for i:=1 to 2*1 do write ( h[i] )
end.
Определение наименьшего слова в строке
Определить наименьшую длину слова в строке. Считать, что все слова отделены пробелами.
Определить наименьшую длину слова в строке. Считать, что все слова отделены пробелами.
program zadacha (input, output); {определение наименьшего слова в строке}
var
s: string;
i, l, min, lw: integer;
begin
writeln (' Введите строку символов');
read (s) ;
lw:=0; {длина текущего слова}
l:= length(s);
min: = l;
for i:=1 to l do
if s[i] <> ' ' then lw:= lw+1
else if (min>lw) and (lw>0) then
begin
min = lw;
lw:=0
end;
writeln (' min= ', min)
end.
var
s: string;
i, l, min, lw: integer;
begin
writeln (' Введите строку символов');
read (s) ;
lw:=0; {длина текущего слова}
l:= length(s);
min: = l;
for i:=1 to l do
if s[i] <> ' ' then lw:= lw+1
else if (min>lw) and (lw>0) then
begin
min = lw;
lw:=0
end;
writeln (' min= ', min)
end.