Строки типа string – это одномерные массивы! Заранее
известен тип массива – это char, то есть это символы. Или по-другому, есть
строка с определённым количеством слов, которые разделаны между собой пробелом.
Строка может иметь длину от 0 до 255, которая также может меняться в ходе
выполнения программы. Обращение к элементам строки возможно посредством индекса
- аналогично символьным массивам: str[3]. Алгоритмизировать строки намного
проще, и в языке программирования есть многие полезные функции, упрощающие
работу с ними. Осталось только с ними познакомиться, если вы их ещё не знаете.
Ну например:
Элемент строки с нулевым индексом (первый байт в строке)
хранит в себе длину строки. Второй способ получения длины - функция
"length", использование которой осуществляется следующим образом:
length(str).
Строки можно складывать между собой посредством оператора
"+". Если результирующая строка превысит максимально допустимую для
неё длину, то лишние символы будут просто отброшены. Также для складывания
строк можно использовать процедуру "concat", в которую может быть
передано сразу несколько строк: concat(str1, str2, str3).(Выбирайте, что проще.)
Для полного копирования (дублирования) строки используется
оператор присваивания ":=". Если необходимо скопировать только часть
строки, то используется процедура "copy", в которую передаются три
параметра: строка, стартовая позиция и длина копируемого отрезка. Пример
использования функции copy:
str:=’ В нашем классе все программируют’
str2:=copy(str,28,3);
В результате во вторую переменную запишется слово "мир".
Для удаления подстроки используется аналогичная процедура "delete",
вызов которой осуществляется следующим образом: delete(str, 17,3) - результатом
работы будет удаление 5 символов из строки str начиная со второй позиции. В
результате во вторую переменную запишется слово " В нашем классе программируют
".
Для вставки подстроки используется процедура
"insert", в которую передаются три параметра: вставляемый сегмент,
строка, в которую будет производиться вставка и позиция вставляемой строки. В
качестве вставляемого сегмента может передаваться как переменная, так и сразу
набор символов (строка). Пример использования данной процедуры:
insert("замечательном", str, 9);
В результате в строку str начиная с 5 позиции будет
вставлена подстрока " В нашем замечательном классе все программируют ".
Полезно, для облегчения решения задач, знать процедуры и
создавать свои подпрограммы, а также знать некоторые дополнительные функции для
работы со строками в Паскале:
Например length(st:string):integer; функция, возвращающая значение текущей длины
строки.
Пример:
copy(st:string;
ind:integer; col:integer):string; функция, возвращающая подстроку
(имеет длину col символов), которая выделяется из исходной первой строки st ,
начиная с символа с номером ind.
Пример:
delete(var st:string; ind,col:integer); процедура, удаляющая из строки-параметра st
подстроку (имеет длину col символов), начиная с определенного под номером ind
символа.
Пример готовых
процедур:
insert (st2:string; var st:string;ind:integer); подпрограмма вставляющая
строку st2 в строку st, начиная с определенного под номером ind символа строки
st.
pos(podsr,st:string):byte; функция, осуществляющая поиск подстроки
podst в строке st. В результате выполнения этой функции выделяется номер 1-й
позиции подстроки в первоначальной строке. Если подстрока отсутствует, то
функция возвращает значение 0.
str(y: арифметическое выражение; var strk: string); процедура, преобразующая численное
представление y в строковое и помещающая результат работы в строку strk.
val(strk: string;
y: числовая переменная;
var kod: integer); процедура, преобразующая строковую запись числа, которая
содержится в строке strk, в число, помещая результат в переменную y. y может
оказаться как действительной, так и целой переменной. В случае, когда в strk
встретится недопустимый символ (принимая во внимание правила записи числа)
символ, то не происходит преобразования, а в kod при этом фиксируется позиция
1-го недопустимого символа. В результате этого процесс выполнения программы не
приостанавливается, диагностика не выдается. Если в результате процедуры kod
примет значение 0, это говорит об отличном прошедшем преобразовании.
chr(m: byte): char; функция, возвращающая символ по коду,
который равен значению выражения m. Если m представима в качестве числовой
константы, то пользуются также записью #m.
ord(m: char): byte; функция, возвращающая код символа m.
UpCase(sym: char):
char; функция, обеспечивающая
возвращение соответствующей прописной латинской буквы (если sym является
строчной латинской буквой), иначе происходит возвращение символа sym без
изменения.
ПРИМЕР: Работа со строками.
var s,x,y,z:string;
begin
x:='мне';
y:='нравится';
s:='pascal';
z:=x+' '+y+' '+s; { z= мне
нравится pascal }
writeln(z);
end
Пустая строка меньше любой строки. Сравнение строк
выполняется посимвольно в соответствии с их кодами до первого несовпадения.
Если одна из строк закончилась до первого несовпадения, то она считается
меньшей.
ПРИМЕР: Сравнение строк.
'abcd' > 'abcD' { 'd'>'D' }
'abcd' > 'abc' { 'd'>'' }
'abc' < 'axxc' { 'b'<'x' }
'abcd' = 'abcd' ДЗ
1.Дано слово, состоящее из четного числа букв. Вывести на
экран его вторую половину.
2.
Дано предложение.
Определить порядковый номер первой буквы 'р'. Если такой буквы нет,
сообщить об этом.
Тренировочные задания.
1. Дано предложение. Определить число вхождений в него
заданного пользователем символа.
2. Дано предложение. Заменить в нем все вхождения
буквосочетания "удв" на "хор".
3. Дано слово. Проверить, является ли оно
"перевертышем", т.е. читается одинаково как с начала, так и с конца.
4. Дано слово:
a. удалить из него
первую из букв "о", если такая буква есть;
b. удалить из него
последнюю из букв "т", если такая буква есть.
5. Дано предложение. Удалить из него все буквы
"с".
Дан символ C. Вывести его код (то есть его номер в кодовой
таблице).
Program stroka1;
Var a:byte;
b:char;
begin
b:='C';
a:=ord(b);
writeln('код равен ',a);
readln;
end.
Дано целое число N (32 <= N <= 126). Вывести символ с
кодом, равным N.
Program stroka2;
Var a:byte;
b:char;
begin
writeln ('введите код сивола- число больше 31 и меньше 127');
readln(a);
b:=Chr(a);
writeln(b);
readln;
end.
Дано символ С. Вывести два символа, первый из которых
предшествует символу С в кодовой таблице, а второй – следует за символом С.
Program stroka3;
Var a:byte;
b:char;
begin
b:='C';
a:=ord(b);
writeln('код предшествующего символа равен',a-1);
writeln('код следующего символа равен',a+1);
readln;
end.
Дано целое число N (1 ? N ? 26). Вывести N первых
прописных (то есть заглавных) букв латинского алфавита.
|