Символьные строки в процедурах и функциях
Подготовила учитель информатики и ИКТ МБОУ СОШ № 97 г.Воронежа
Курапова Наталья Викторовна
Описание строковой переменной Паскаля
Для описания строковых переменных в Паскале существует предопределенный тип string.
В общем виде описание строковой переменной будет выглядеть следующим образом:
Пример описания строковой переменной в Паскале:
Var : string [] Например: Var s1: string [10]; s2: string [20]; smax: string ;
В приведенном выше описании строковая переменная s1 может содержать не более 10 символов, переменная s2 – не более 20 символов. Если же при описании строки ее максимальная длина не указывается, то по умолчанию принимается максимально допустимая длина, равная 255 символам (переменная smax)..
Строковые процедуры
val(s,n,i) — переводит строку s в число(вещественное или целое, согласно типу переменной n), если строка s не является изображением числа соответствующего типа по правилам Паскаля, то значение переменной i будет отлично от нуля, при удачной конвертации значение i равно нулю;
str(i,s) — переводит число в его строковое представление;
delete(s,i,n ) — удаляет из строки s n символов, начиная с символа с номером i;
insert(s1,s,i) — вставляет в строку s подстроку s1, перед символом с номером i
Строковые функции
copy(s,i,n) — выделяет из строки s подстроку длиной n, начиная с символа i;
concat(s1,s2,…,sN) — выполняет сцепление (конкатенацию) строк s 1 ,s 2 ,…,s N в одну строку;
length(s) — определяет реальную длину строки; результат – значение целого типа;
pos(s1,s) — выдает целое число – номер позиции в строке s, с которой начинается подстрока s1; если подстрока не найдена, то выдает ноль
Имя(параметры)
Str(X:integer(real),S:string)
Функция или процедура
Val(S:string,X:integer(real),Code:integer)
Назначение
процедура
Преобразовывает числовое значение переменной X в указанном формате в строковое представление этого числа S , которое можно выводить операторами типа Write и OutText. Требует модуль crt .
процедура
Length(S:string):integer
Copy(S:string,index:integer, count:integer)
Преобразовывает строковое значение переменной S в ее числовое представление X типа Real или Integer . Code – номер позиции в которой произошла ошибка преобразования ( Code равно 0, если ошибки не было)
функция
Возвращает длину строки S
функция
Delete (S:string, index: integer,count:integer)
Возвращает подстроку строки S , длиной count , начиная с позиции index
Insert (ss:string, s: string,index:integer)
процедура
Удаляет в строке S , count символов, начиная с позиции index
процедура
Вставляет подстроку SS в строку S , с позиции index
Обработка строк
Строки типа String в Pascal представляют собой массив символов типа char , при этом доступ к каждому из символов строки осуществляется так же, как и к элементу массива, через квадратные скобки [ ] .
Пример:
var s,ss: string; b: char;
begin
S:= 'РАКЕТА';
Writeln('Была ', S);
b:=S[3]; {b='К'}
SS:=S;
SS[3]:=SS[1];
SS[1]:=b;
Writeln('Получилась ', SS);
end.
и т.п.). Например: var s1,s2, s3, s: string [30]; begin S1:= 'Я'; S2:= 'учу'; S3:= 'free pascal'; S:=S1+' '+S2+' '+S3; Writeln(S); end. В результате получим « Я учу free pascal» " width="640"
Для строк определены операции конкатенации (сцепления) и сравнения (=, , и т.п.). Например:
var s1,s2, s3, s: string [30];
begin
S1:= 'Я';
S2:= 'учу';
S3:= 'free pascal';
S:=S1+' '+S2+' '+S3;
Writeln(S);
end.
В результате получим « Я учу free pascal»
Определение количества символов:
VAR S : STRING;
BEGIN
Writeln(’введите слово’) ;
Readln(S);
Writeln(’слово состоит из ’, Length (S) ,’букв. ’);
END.
.Составить программу осуществляющую вырезку из слова ИНФОРМАТИКА букв так, что бы из них получилось слово ТОРТ.
Uses crt;
var a,b,c,d:string;
Begin
Clrscr;
a:='информатика';
b:=''; c:=copy(a,8,1);
d:=copy(a,4,2); b:=c+d+c;
writeln(b);
End.
Определить сколько раз в строке встречается буква А (русская).
Uses Crt;
Var s:string; i,k:integer;
begin
ClrScr;
Write('ВВеди строку ');
readln(s);
k:=0;
for i:=1 to length(s) do if (s[i]='А') then k:=k+1;
writeln('Буква А встречается = ', k:8,' раз');
end.
Заменить в строке символов все буквы А на букву О.
Uses Crt;
Var s:string;
i:integer;
Begin
ClrScr;
Write('ВВеди строку ');
readln(s);
for i:=1 to length(s) do if (s[i]='A') then s[i]:='O';
writeln(s);
end.