Пример 3. Ввести с экрана произвольное слово и выдать его c новой строки на экран таким образом, чтобы между каждыми соседними буквами был вставлен пробел. Соответствующий программный код имеет вид:
Var S: String[20]; i:integer;
Begin
Write('Vvedite slovo:'); Readln(S);
For i:=1 to Length(S)-1 do Write(S[i],' ');
Writeln(S[Length(S)]);
End.
2. Concat(s1,[s2,...,sn]:string):string -сложение (конкатенация) строк. Операция выполняет слияние (сложение) строковых величин в одну, может быть заменена знаком "+".
Функция выполняет слияние строк-параметров, которых может быть произвольное количество
Пример 4. После выполнения заданных действий над строковыми величинами S1-S4:
S1:='com'; S2:='put'; S3:='er';
S4:=S1+S2+S3;
в переменной S4 будет получено слово ” computer ”.
При выполнении конкатенации строковых величин результат также зависит от длины результирующей переменной, заданной в ее описании: если в нее будет помещено большее число символов, то "лишние" символы в конце записи будут отброшены и не попадут в результирующую переменную.
3. Copy(s:string; index:integer; count:integer):string -функция возвращает подстроку, выделенную из исходной строки s, начиная с символа с номером index длиной count символов.
Пример 5. S:= 'Computer';
S1:= copy(S, 1, 3); { S1 будет равно ' Com '}
S1:= copy(S, 4, 8); { S1 будет равно ' puter '}
4. Delete(var s:string; index,count:integer) -процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.
Пример 6. s:= 'Computer'; delete(s,5,4); { s будет равно 'Comp' }
5. Insert(source:string; var s:string;index:integer) -процедура вставки строки source в строку s, начиная с символа index этой строки.
Пример 7. s:= 'Cor';
insert('mpute',s,3); { s будет равно 'Computer' }
6. Pos(substr,s:string):byte -функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.
Пример 8. s:= 'Computer';
x1:= pos('put', s); {x1 будет равно 4}
x2:= pos('Pascal', s); {x2 будет равно 0}
7. Str(X: арифметическое выражение; var st:string) -процедура преобразует численное выражение X в его строковое представление, результат помещает в строку st.
8. Val(st:string; x: числовая переменная; var code:integer) -процедура преобразует строковую запись st в числовое представление, помещая результат в переменную x, которая может быть как целым, так и действительным числом. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равно 0, то это свидетельствует об успешно произошедшем преобразовании.
Также при работе со строками для обработки отдельных символов используют следующие функции, связанные с типом char:
Chr(n: byte): char – преобразование числа n типа byte в соответствующий ему символ (тип char).
Ord(ch: char): byte -преобразование символа ch (тип char) в соответствующее ему число (тип byte).
UpCase(c: char): char; -функция преобразует строчная латинские буквы в соответствующие им прописные, прописные оставляет без изменения.
Очевидно, что функции Chr и Ord являются взаимно обратными, т.е. любого символа Ch и числового кода Num всегда справедливы соотношения:
Chr(Ord(Ch))=Ch, Ord(Chr(Num))= Num.
Пример 9. Код программы, которая выводит на экран кодовую таблицу для символов с 32 до 255, поскольку символы с начальными кодами от 0 до 31 являются управляющими и не имеют соответствующего графического представления:
var i: byte;
begin
for i:=32 to 255 do writeln(' Symbol of',i:4, ' = ',Chr(i))
End.
Строковый тип данных удобен для преобразования информации, представленной в нем. По этой причине часто в строковый вид переводят данные из других типов. На строковых величинах основан специальный текстовый тип файлов.
Вопросы для проверки знаний.
1. Чем отличаются типы сhar и String?
2. Может ли переменная типа String занимать в памяти пространство:
а) 1 бит, б) 4 бита, в) 2 байта, г) 100 байтов, д) 300 байтов?
3. Каков порядок обращения к отдельным символам строковых переменных?
4. Задано описание и выполнено присвоение:
Ch:Char; Str: String[10];
begin Str:=’ABCDEF’;
Каков будет результат вывода WriteLn(' Ch=', Ch) после выполнения присваиваний:
а) Ch=Str[3], б) Ch=Str[6], в) Ch=Str[11], г) Ch=Str[13]?
5. В чем заключается назначение функции Length()?
6. В чем заключается назначение функций работы со строками Concat,Copy,Delete, Insert,Pos?
7. В чем заключается назначение процедур Str и Val?
8. Какие преобразования символов выполняют функции Chr, Ord, UpCase?
9. Определить, что будет выведено на экран после выполнения следующего программного кода:
var Str_1, Str_2, Str_3:string[10];
Begin
Str_1:='Computer';
Str_2:= copy(Str_1, 1, 4);
Str_3:=Str_2;
insert('any', Str_3,5);