Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
chast2.doc
Скачиваний:
7
Добавлен:
03.11.2018
Размер:
413.7 Кб
Скачать

4.2.2. Операции над строками.

Для строк применимы операции конкатенации и сравнения.

Операция конкатенации или сцепления обозначается символом «+» и применяется к двум выражениям строкового типа (в языке Паскаль один из операндов или оба могут быть символьного типа). Результат использования операции конкатенации – выражение строкового типа, значение которого получается путем присоединения справа к символам значения первого выражения символов значения второго выражения.

Так описанные в предыдущем пункте переменные S в результате исполнения следующих операторов присваивания примут значение ЯМАЙКА.

QB: S=“Я“ +“МАЙКА“

TP: S=’Я’ +’МАЙКА’

Операции отношения позволяют сравнить значения двух выражений строкового типа. Сравнение значений производится посимвольно слева направо до первой пары несовпадающих символов в соответствии с ASCII-кодами соответствующих символов. Та строка считается больше, в которой первый несовпадающий символ имеет больший код в таблице символов.

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

Например, следующие значения выражения имеют значение TRUE:

‘РЫБАК’>’РЫБАЧОК’

‘РЫБАК’>’РЫБА’

Стандартные функции обработки строк

QBasic

Turbo Pascal

Значение функции

LEN(<выражение>)

LENGTH(<выражение>)

Длина значения <выражения> строкового типа

MID$(<выражение>, <выражение1>, <выражение2>)

COPY(<выражение>, <выражение1>, <выражение2>)

Последовательность символов значения <выражения> строкового типа, начиная с позиции, задаваемой значением <выражения1>, в количестве, задаваемом значением <выражения2>. Значения <выражения1> и <выражения2> – натуральные числа не более 255

INSTR(<выражение1>, <выражение3>, <выражение>)

Номер позиции первого символа вхождения значения <выражения> строкового типа в значение <выражения3> строкового типа начиная с позиции, задаваемой натуральным (не более 255) значением <выражения1>. Если значение <выражения> начиная с указанной позиции не содержится в значении <выражения3>, то значение функции равно нулю.

POS(<выражение>, <выражение3>)

Номер позиции первого символа вхождения значения <выражения> строкового типа в значение <выражения3> строкового типа. Если значение <выражения> не содержится в значении <выражения3>, то значение функции равно нулю.

Наряду с функцией MID$ в языке QBasic существует и оператор MID$, который позволяет заменять часть символов исходной строки на другие символы. Этот оператор имеет следующий синтаксис:

MID$(<идентификатор>,<выражение1>,<выражение2>)=<выражение>

Здесь <идентификатор>и <выражение> – строкового типа, <выражения1> и <выражения2> – целого типа со значением от 1 до 255. Семантика оператора состоит в следующем: в значении переменной с указанным <идентификатором> символы, начиная с позиции, задаваемой значением <выражения1>, в количестве, задаваемом значением <выражения2> заменяются на первые символы значения <выражение>. Длина значения переменной с указанным идентификатором при этом не меняется.

В языке Паскаль существуют также следующие стандартные процедуры обработки строк:

Delete(<выражение>, <выражение1>, <выражение2>)

Процедура удаляет из выражения строкового типа количество символов, заданное целочисленным выражением1, начиная с символа с номера, заданного целочисленным выражением2.

Insert(<выражение>, <выражение1>, <выражение2>)

Процедура вставляет выражение строкового типа в выражение1 строкового типа, начиная с символа, с номером заданным целочисленным выражением2.

  • Str(<выражение>, <выражение1>) – процедура, преобразует числовую величину, заданную выражением в выражение1 строкового типа.

  • Val(<выражение>, <выражение1>, <выражение2>) – процедура, преобразует выражение строкового типа в числовое выражение1. Если преобразование прошло успешно, то целочисленное выражение2 принимает значение 0.

Пример 2.2.1.

Составить блок-схему и программы для нахождения слов заданной строки

Слово – последовательность символов между пробелами.

S - исходная строка

B – начало слова

I – вспомогательная переменная

Пример на Turbo Pascal:

VAR

S: string;

B, I: integer;

BEGIN

WRITELN (‘Введите строку текста: ’);

READLN (S);

WRITELN (‘Искомые слова: ’);

S:=’ ‘ + S + ‘ ‘;

FOR I:= 1 TO LENGTH (S)-1 DO

BEGIN

IF (S [I]=’ ‘)AND(S [I+1]<>’ ‘) THEN

B:=I+1;

IF (S [I]<>’ ‘)AND(S [I+1]=’ ‘) THEN

WRITELN (COPY(S,B,I-B+1))

END

END.

Пример на QBasic:

INPUT "Введите строку текста: "; S$

PRINT "Искомые слова: ";

B = 1

S$ = " " + S$ + " "

FOR I = 1 TO LEN(S$) - 1

IF ((MID$(S$, I, 1) = " ") AND (MID$(S$, I + 1, 1) <> " ")) THEN

B = I + 1

END IF

IF ((MID$(S$, I, 1) <> " ") AND (MID$(S$, I + 1, 1) = " ")) THEN

PRINT MID$(S$, B, I - B + 1)

END IF

NEXT I

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]