Инфоурок Информатика СтатьиОбработка строковой информации. Базовые алгоритмы обработки строк (на примере любого языка программирования).

Обработка строковой информации. Базовые алгоритмы обработки строк (на примере любого языка программирования).

Скачать материал

Обработка строковой информации. Базовые алгоритмы обработки строк (на примере любого языка программирования).

Для обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис:
var s: string;

В Паскаль имеется простой доступ к отдельным символам строковой переменной: i-й символ переменной st записывается как st[i]. Например, если st - это 'Строка', то st[1] - это 'С', st[2] - это 'т', st[3] - 'р' и так далее.
В системе Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками.

• Length(s) – определяет длину строки S: кол-во символов в строке.
• Concat (a, b) – склеивает значения строковых переменных 
Н\Р: a:=’par’; b:=’hod’; concat(a, ‘o’, b) = parohod. 
• Pos (b,a) – возвращает номер позиции, с которой подстрока b входит в строку a. 
Н\р: a:=’par’; b:=’a’; pos (b,a) = 2 (на втором месте находится ‘a’).
• Copy(s,I,k) – копировать из строки S с позиции I k символов.
• Delete (S,I,k) – удалить из строки s с позиции I k-символов.
• Insert (s1,s2,i) – вставляет строку s1 в строку s2 перед i-ым символом 
Н\р: a:=’пар’; insert( ‘и’, a, 2) = ‘пиар’.
• Str (h, s), где h: integer – переводит числовое значение h в строковую переменную s
Н\р: h:=8; str (h, s), тогда s:=’8’. 
• Val (S, h, osh) – переводит строку S в число H с кодом ошибки osh. 
Если Osh=0, то перевод осуществлен
Если Osh<>0, то строка не переведена в число.
Н
\р: val (‘84’, h, osh); h=84; osh=0; 
Val (‘abs’, h, osh); h=0; osh <>0. 


Определить содержится ли в данном тексте заданное слово
Var a,c:string; k:integer;

Begin

Writeln('vvedi text');

Readln(a);

Writeln('vvedi slovo');

Readln(c);

K:=0;

While pos (c,a)>0 do

Begin

K:=k+1;

Delete (a, pos(c,a), length(c));

End;

If k=0 then writeln ('нет') else writeln ('да ',K,' ','раз');

Readln;

End.

Подсчитать сколько раз заданная буква встречается в слове

Var a,b:string; I,k:integer;

Begin

Writeln('vvedi slovo');

Readln(a);

Writeln('vvedi bukvu');

Readln(b);

K:=0;

For i:=1 to length(a) do

If a[i]=b then k:=k+1;

if k=0 then writeln ('не встречается') else writeln (k,' ','раз');

readln;

end.

Заменить букву А на Б, букву Б на А

Var a:string; i: integer;

Begin

Writeln('введи слово');

Readln(a);

For i:=1 to length(a) do

Begin

If a[i] = 'a' then a[i]:='b' else if a[i]='b' then a[i]:='a';

End;

Writeln(a);

End.
В строке заменить буквукна сочетаниеку

Var a,b:string; i:integer;

Begin

Writeln ('введи строку');

Readln(a);

B:='';

For i:=1 to length(a) do

Begin

If a[i]='k' then b:=b+'ku';

End;

Writeln(b);

End.
Все языки программирования высокого уровня имеют средства работы с литерными величинами. Паскаль - не исключение. В стандарте языка описаны два типа переменных для литерных величин. Это - String и Char. Переменная типа Char может содержать в себе только один единственный символ, тип String предназначен для хранения строковых величин до 255 символов длиною. При описании переменной типа String вы можете сами указать максимальное число символов, которое можно занести в нее. Конечно же, это число не должно превышать 255. Делается это так:
Var 
S : String[30];
Для чего это нужно? Дело в том, что при компиляции для каждой переменной отводится свой участок памяти. Если мы будем выделять для всех переменных типа String по 256 байт, то это приведет к тому, что при использовании достаточно большого их количества, памяти может и не хватить. Но если в переменной мы собираемся хранить, например, фамилию пользователя, то тридцати символов (тридцати байт) для этого вполне достаточно. Таким образом, экономится память и увеличивается быстродействие программ.
Переменным строкового типа можно присваивать строковые величины (внутри программы они заключаются в апострофы), значения выражений, которые приводят к строковым величинам. Значения можно также вводить с клавиатуры. При этом апострофы не используются. В числовую переменную нельзя ввести строковую величину. Сделать наоборот возможно, однако число, находящееся в строковой переменной представляет собой просто последовательность символов (цифр), поэтому в арифметических выражениях участвовать не может.
При использовании строковой переменной, к каждому ее символу можно обратиться отдельно. Необходимо только знать номер нужного символа от начала строки. Его достаточно поставить после имени переменной типа String в квадратных скобках.
Пример: S[5] - пятый символ строки S.
С отдельным символом строки можно производить все действия, которые можно производить с любой символьной переменной (ввод, присвоение, вывод на экран, участие в выражениях и т.д.). Нумерация символов в строке начинается с единицы. Внутри квадратных скобок вместо числа может находиться выражение, результатом которого является целое число. Главное чтобы символ с таким номером в строке существовал. Для того чтобы определить, сколько символов в данный момент находится в строковой переменной существует специальная функция, которая возвращает длину строковой переменной в символах. Это функция Length. Ее формат: Length(S), здесь S - либо строковая величина, либо строковая переменная.
Пример: Введенную строку вывести на экран по одному символу в строке экрана.
(
Byte -занимает один байт для беззнаковых чисел, т. е. от 0 до 255)

 

 

Program Str2;
Var
S : String;
I : Byte;
Begin
Writeln('Введите строку');
Readln(S);
For I:=1 to Length(S) do 
Writeln(S[I]); 
End.

Две строковые величины можно состыковывать. Эта операция называется конкатенацией и обозначается знаком "+".
Например, результатом выполнения следующих команд:
R:= 'kadabra';
H:= 'abra';
S:=H+R;
в переменной S будет значение 'abrakadabra'.
Для конкатенации результат зависит от порядка операндов (в отличие от операции сложения). Следует помнить о том, какой максимальной длины может быть результирующая переменная, так как в случае превышения значением выражения числа, указанного после String в описании переменной, "лишние" символы в переменную не попадут.

Строковые величины можно сравнивать между собой. Такая проверка проходит довольно сложно: компьютер сравнивает сначала первые символы строк. Большим из двух считается тот, код которого больше. Если равны первые символы, то так же анализируется следующая пара до тех пор, пока не будет найдено различие. Если начало строк совпадает, а одна из них кончается раньше, то вторая автоматически называется большей.
Код символа в Паскале можно определить при помощи функции Ord.
Ее формат: Ord(C), где С - либо непосредственно указанный символ, либо переменная символьного типа, либо один символ строковой переменной. 
Есть и обратная функция, которая возвращает символ по известному коду. Это функция Chr(N), где N - выражение, приводящее к целому числу в интервале от 0 до 255 (возможные значения кода символа). Очевидно, что Chr(Ord(C))=C, Ord(Chr(N))=N.

Следующая маленькая программа выводит на экран кодовую таблицу:
Program Str3;

Var

I : Byte;

Begin

For I:=32 to 255 do

Write('VV',I:4, '-',Chr(I))

End.

Цикл в программе начинается с 32 потому, что символы с кодами от 0 до 31 являются управляющими и не имеют соответствующего графического представления.

Число, записанное в строковую переменную, естественно числом не является, но очень часто требуется его все же использовать в качестве числа. Для этого нужно произвести преобразование типа. Перевод строкового представления числа в числовое выполняет в Паскале оператор Val.
Его формат:
Val(S,X,C);
Здесь S - строка, содержащая число, X - числовая переменная, в которую будет помещен результат, С - переменная целочисленного типа, в которую помещается первого встреченного в S отличного от цифры символа. Если после выполнения оператора Val переменная С имеет значение 0, то это означает, что преобразование типа прошло совершенно успешно и в строке нецифровых символов не встретилось.

Противоположное действие осуществляет оператор Str. Для перевода числа в строку используется процедура Str . Формат оператора:
Str(X,S);
X - число (либо арифметическое выражение), S - строковая переменная.
В переменную S попадает строковое представление числа X. Это нужно, например, при необходимости выводить на экран числа в графическом режиме, так как стандартные процедуры вывода на экран там работают только со строковыми величинами.

Пример: "Найти сумму цифр введенного натурального числа". 

Program Str5;
Var
S : String;
I,X,A,C : Integer;
Begin
Writeln('Введите натуральное число');
Readln(S); {Число вводится в строковую переменную}
A:=0;
For I:=1 To Length(S) Do
Begin
Val(S[I],X,C); {Цифровой символ превращается в число}
A:=A+X {Цифры суммируются}
End;
Writeln('Сумма цифр равна ',A)
End.

Еще несколько действий над строками:

оператор DELETE(S,I,C) из строковой переменной S удаляет C символов, начиная с I-того;
оператор INSERT(SN,S,I) вставляет подстроку SN в строковую переменную S перед символом с номером I;
функция COPY(S,I,C) возвращает подстроку строки S из C символов, начиная с символа с номером I;
функция Pos(SN,S) возвращает номер символа, с которого в строке S начинается подстрока SN (позицию первого вхождения подстроки в строку). Если такой подстроки нет, то возвращается ноль.
Пример их использования: 
"Во введенной строке заменить все вхождения подстроки 'ABC' на подстроки 'KLMNO'".
Program Str6;

Var

S : String;

A : Byte;

Begin

Writeln('Введите строку');

Readln(S);

While Pos('ABC',S)<>0 Do

Begin

A:= Pos('ABC',S);

Delete(S,A,3);

Insert('KLMNO',S,A)

End;

Writeln(S)

End.

 

Со строковыми переменными можно производить операции сравнения (<, <=, >, >=, <>) по правилу сравнения десятичных дробей. Сравнение строк осуществляется посимвольно слева направо: сравниваются коды соответствующих символов до тех пор, пока не нарушится равенство или не кончится одна из строк (или обе сразу), при этом делается вывод о знаке неравенства. Например,
• 'Паскаль '>'Паскаль' (первая строка будет больше второй, так как в первой строке еще присутствует пробел),
• 'Balkon'<'balkon' (первая строка меньше второй, так как код символа 'b' больше кода символа 'B':Ord ('b')>Ord ('B')),
на экран будет выведено сообщение: "Пароход ".

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Обработка строковой информации. Базовые алгоритмы обработки строк (на примере любого языка программирования)."

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Руководитель научной организации

Получите профессию

Бухгалтер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Краткое описание документа:

Для обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис:

var s: string;

В Паскаль имеется простой доступ к отдельным символам строковой переменной: i-й символ переменной st записывается как st[i]. Например, если st - это 'Строка', то st[1] - это 'С', st[2] - это 'т', st[3] - 'р' и так далее.
В системе Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 663 954 материала в базе

Материал подходит для УМК

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 24.06.2020 1301
    • DOCX 25.4 кбайт
    • 30 скачиваний
    • Оцените материал:
  • Настоящий материал опубликован пользователем Ягьфаров Алмаз Анварович. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Ягьфаров Алмаз Анварович
    Ягьфаров Алмаз Анварович
    • На сайте: 7 лет и 6 месяцев
    • Подписчики: 0
    • Всего просмотров: 226539
    • Всего материалов: 78

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Экскурсовод

Экскурсовод (гид)

500/1000 ч.

Подать заявку О курсе

Курс повышения квалификации

Организация преподавания информационных систем и технологий в профессиональном образовании

36 ч. — 180 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Этот курс уже прошли 75 человек

Курс повышения квалификации

Теоретические и методологические основы преподавания информатики с учётом требований ФГОС ООО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 154 человека из 49 регионов
  • Этот курс уже прошли 1 717 человек

Курс повышения квалификации

Применение компьютерных моделей при обучении математике и информатике в рамках ФГОС ООО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 49 человек из 28 регионов
  • Этот курс уже прошли 178 человек

Мини-курс

Психологическая экспертиза в юридической сфере: теоретические аспекты

2 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Финансовые аспекты и ценности: концепции ответственного инвестирования

4 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Налогообложение реализации и доходов физических лиц

2 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Этот курс уже прошли 10 человек