:: главная ::
 
:: учебник ::
 
:: download ::

Символьные переменные

Операции над символами

Функция Назначение функции
Chr (x) Возвращает символ, соответствующий числу X по ASCII коду
Ord (x) Возвращает число, соответствующее символу X в ASCII таблице
Upcase (x) Преобразует символы из строчных букв в прописные
Pred (x) Возвращает символ, который предшествует числу X в ASCII таблице
Succ (x) Возвращает символ, который следует за символом X в ASCII –таблице








 

 

 

 

Работа со строками

Тип данных STRING (строка)
Переменная типа string состоит из цепочки символов, т. е. элементов типа CHAR.

Описание строковых переменных

<имя переменной>:string[< кол-во символов>];

где:
<имя переменной> - идентификатор переменной
string - тип переменной (строковый)
[< кол-во символов>] - количество символов в строке.

Если данный компонент отсутствует, то берется по умолчанию 256 символов в строке.

Пример:
Описать строку с именем STROKA, которая состоит из 20 символов.
var
stroka: string [20];

 

Операции со строками

1 путь - обработка всей строки как единого целого.
Пример:
stroka:= 'это - строка!';

2 путь - строка, как составной объект, состоящий из отдельных символов.
Пример:
stroka:= 'это' + ' - ' + ' строка' + ' ! ' ; (объединение или сцепление строк)

Для доступа к отдельному символу в строке необходимо указать имя строки и в квадратных скобках номер позиции элемента (символа) в строке.
Пример:
stroka [5] -пятый символ в переменной stroka.

 

Стандартные процедуры и функции для строк

LENGTH (<имя переменной>) - определяет фактическую длину текстовой строки, хранящейся в указанной переменной, включая все пробелы (а не величину предельного размера строки, установленную при описании).

Пример:

var
word: string;
begin
writeln ('введите слово -');
readln (word);
writeln ('это слово состоит из ', length (word), ' букв')
end.

UPCASE(<имя строки>) - преобразовывает любой символ из строчного в прописной (т. е. работает с каждым отдельным символом).
Русские литеры не обрабатываются!

Пример:

var
word: string;
i: byte;
begin
word:=' урок informatika';
for i:=l to length (word) do
word[i]:=upcase(word[i]) ;
writeln (word)
end.
(выводится текст " урок INFORMATIKA")

COPY(par1, par2, par3) - позволяет копировать фрагмент некоторой строки из одной переменной в другую.
par1 - имя строки, из которой должен извлекаться копируемый фрагмент;
par2 - позиция в строке, начиная с которой будет копироваться фрагмент;
par3 - число копируемых символов.

Пример:

program zadacha (input,output);
var
word: string [20];
word1, word2, word3: string [20];
begin
word:='форматирование ';
writeln (word);
word1:=copy (word,1, 5) ;
writeln (word1); {форма}
word2:=copy (word,6, 3) ;
writeln (word2); {тир}
word3:=copy (word,8,3);
writeln (word3); {ров}
end.

POS - поиск определенного фрагмента в строке (возвращает № позиции, с которого этот фрагмент начинается)

Пример:

program zadacha;
var
word: string [100];
word1: string [20];
position: byte;
begin
position:=pos(word1, word);
if position <>0 then
writeln ('фрагмент', word1, 'содержится в слове', word, 'начиная с позиции', position, '.')
end.

Большие и маленькие буквы считаются различными символами.

Процедуры INSERT и DELETE - позволяют вставлять фрагмент из одной строки в другую или удалять его из строки.

INSERT (stroka1, stroka, 4) - необходимо в строку stroka перед 4 позицией вставить строку stroka1.

DELETE (stroka1, 2, 3) - удаляет из строки stroka1 фрагмент, состоящий из 3-х символов и начинающийся со 2 позиции.

Пример:

Var
Word: string [100];
Word1: string [20];
Begin
Word: = 'математика ' ;
Writeln(Word);
Delete(Word, 1, 2);
Writeln(Word); {тематика}
Delete(Word, 5, 4);
Writeln(Word); {тема}
Word1:='сис';
Insert(Wordl, Word, 1);
Writeln(Word); {система}

 

Типовые задачи на строковые переменные

Дана строка, содержащая 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.

Дана строка, содержащая 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.

Проверить является ли слово палиндромом
Дано произвольное слово. Проверить является ли оно палиндромом. (Пример: слова палиндромы - казак, шалаш, мадам, фраза «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.

Сжатие строки
Дана строка символов. Получить новую строку из первоначальной строки, без точек.

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.

Формирование новой строки
И заданной строки получить новую строку, удалив все "*" и повторив каждый символ, отличный от звездочки дважды. Распечатать полученную строку.

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.

Определение наименьшего слова в строке
Определить наименьшую длину слова в строке. Считать, что все слова отделены пробелами.

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.



<-->
 
Hosted by uCoz