Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Процедуры и функции для работы со строками

Строковый тип данных

 


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

var s: string[n];

var s: string;

 

n - максимально возможная длина строки - целое число в диапазоне 1..255. Если этот параметр опущен, то по умолчанию он принимается равным 255.

 

Строковые константы записываются как последовательности символов, ограниченные апострофами. Допускается формирование строк с использованием записи символов по десятичному коду (в виде комбинации # и кода символа) и управляющих символов (комбинации ^ и некоторых заглавных латинских букв).

 

Пример:

'Текстовая строка'

#54#32#61

'abcde'^A^M

 

Пустой символ обозначается двумя подряд стоящими апострофами. Если апостроф входит в строку как литера, то при записи он удваивается.

 

Переменные, описанные как строковые с разными максимальными длинами, можно присваивать друг другу, хотя при попытке присвоить короткой переменной длинную лишние символы будут отброшены.

 

Выражения типа char можно присваивать любым строковым переменным.

 

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

 

Над строковыми данными определена операция слияния (конкантенации), обозначаемая знаком +. Например:

a:= 'Turbo';

b:= 'Pascal';

c:= a + b;

 

В этом примере переменная c приобретет значение 'TurboPascal'.

 

Кроме слияния над строками определены операции сравнения <,>,=,<>,<=,>=. Две строки сравниваются посимвольно, слева направо, по кодам символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются символом с кодом 0.

 

 

Процедуры и функции для работы со строками

 

В системе Turbo Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками. Ниже приводится список этих процедур и функций с краткими пояснениями.

Length(s:string):integer

Функция возвращает в качестве результата значение текущей длины строки-параметра

 

Пример.

n:= length('Pascal'); {n будет равно 6}

 

Concat(s1,[s2,...,sn]:string):string

Функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина строки-результата превышает 255 символов, то она усекается до 255 символов. Данная функция эквивалентна операции конкатенации "+" и работает немного менее эффективно, чем эта операция.

 

Copy(s:string; index:integer; count:integer):string

Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index.

 

Пример.

s:= 'Система Turbo Pascal';

s2:= copy(s, 1, 7); {s2 будет равно 'Система'}

s3:= copy(s, 9, 5); {s3 будет равно 'Turbo'}

s4:= copy(s, 15, 6); {s4 будет равно 'Pascal'}

 

Delete(var s:string; index,count:integer)

Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.

 

Пример.

s:= 'Система Turbo Pascal';

delete(s,8,6); {s будет равно 'Система Pascal'}

 

Insert(source:string; var s:string;index:integer)

Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки.

 

Пример.

s:= 'Система Pascal';

insert('Turbo ',s,9); {s будет равно 'Система Turbo Pascal'}

 

Pos(substr,s:string):byte

Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.

Пример.

s:= 'Система Turbo Pascal';

x1:= pos('Pascal', s); {x1 будет равно 15}

x2:= pos('Basic', s); {x2 будет равно 0}

Str(X: арифметическое выражение; var st: string)

Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.

 

Val(st: string; x: числовая переменная; var code: integer)

Процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x. x - может быть как целой, так и действительной переменной. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равно 0, то это свидетельствует об успешно произошедшем преобразовании.

 

В дополнение приведем некоторые функции, связанные с типом char, но которые тем не менее часто используются при работе со строками.

 

Chr(n: byte): char

Функция возвращает символ по коду, равному значению выражения n. Если n можно представить как числовую константу, то можно также пользоваться записью #n.

 

Ord(ch: char): byte;

В данном случае функция возвращает код символа ch.

 

UpCase(c: char): char;

Если c - строчная латинская буква, то функция возвращает соответствующую прописную латинскую букву, в противном случае символ c возвращается без изменения.

 

Задача 1.

Дана строка вида ‘informatika’.

Получить из нее строку вида ‘Forma’.

1 вариант: Delete, Upcase

2 вариант: Copy (дополнит строка), Upcase

 

Задача 2.

Дана строка. Определить, встречается ли в ней заданная подстрока. Если да, то удалить ее

If pos(x, str)> 0 then delete (str, pos(x, str), length(x))

Или

P:= pos(x, str);

If p> 0 then delete (str, p, length(x))

 

Задача 3.

Дана строка. Удалить из нее все вхождения заданной подстроки и вставить вместо них номер вхождения.

P:= pos(x, str); n:=0;

While p>0 do begin

delete (str, p, length(x)); inc(n); str(n, n_str);

insert(n_str, str, p);

P:= pos(x, str);

End;



<== предыдущая лекция | следующая лекция ==>
Очистка поверхностей теплообменника | Ориентировочный состав команды (роль, функция)
Поделиться с друзьями:


Дата добавления: 2015-11-23; Мы поможем в написании ваших работ!; просмотров: 728 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Человек, которым вам суждено стать – это только тот человек, которым вы сами решите стать. © Ральф Уолдо Эмерсон
==> читать все изречения...

2316 - | 2171 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.