Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 2 part.docx
Скачиваний:
7
Добавлен:
03.12.2018
Размер:
40.62 Кб
Скачать

36. Структуры данных. Строки.

Строки (STRING)

Данный тип служит для обработки текстов. ОН похож на одномерный массив символов ARRAY [0..N] OF CHAR, но в отличие от одномерного массива символов, количество символов в типе STRING может меняться от 0 до N, где N – максимальное количество символов в строке.

Описание (объявление) данного типа:

VAR

A: STRING [N]; N = 1..255;

B: STRING; (255-максимальное число символов)

Строка в TURBO PASKAL-e трактуется как цепочка символов. К любому символу можно обратиться точно также как к элементу одномерного массива.

ARRAY [0..N] OF CHAR;

A[1]; -обращение к символу строки.

B [2];

A [0]; -содержит текущую длину строки.

B [0];

A:= ‘ ПРИВЕТ’ -6 символов

А [0] -содержит 6 символов, в символьном виде, т.е. 6

А:=’ABC’

A [0] - 3

К строкам, так же как и к символам можно применить операцию сцепления (объединения):

VAR

A: STRING;

B: STRING [10];

….

A:= ‘ABC’ A:=A + ‘D’; (ДОБАВИЛИ D => ABCD)

B:= ‘KLM’;

A:=A+B;

WRITELN (A):  ABCDKLM

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

Действия над строками в основном реализуются с помощью стандартных процедур и ф-ций:

  1. CONCAT (S1; S2; … ; SN) - данная ф-ция сцепляет строки

VAR

A, B, C: STRING;

A:=’ABC’;

B:=’DE’;

C:=CONCAT (А, В);

WRITELN (C);  ABCDE

  1. LENGTH (ST) – данная ф-ция возвращает текущую длину строки ST. Результат имеет тип INTEGER.

VAR

A:STRING;

I:INTEGER;

A:=’ABCDE’:

I:= LENGTH (A);

WRITE (I) 5

  1. POS (SUBST, ST) - данная ф-ция служит для поиска от строки SUBST к строке ST. При э том данная ф-ция возвращает номер позиции первого вхождения от строки SUBST в строке ST. Если подстрока не найдена, то возвращается 0, тип результата INTEGER.

VAR

А, В: STRING;

I: INTEGER;

A:= ‘ABCDABCA’;

I:=POS (‘C’, А);

WRITE (I)3

B:= ‘AB’

I:=POS (B, A);

WRITE (I)1

I:=POS (‘KL’, А);

WRITE (I)0

  1. UPCASE (A) - данная ф-ция служит для преобразования латинских символов (маленькие в большие). Результат типа CHAR, где А-переменная типа CHAR.

VAR

B, A: CHAR;

A:= ‘k’;

B:= UPCASE (A);

WRITE (B)K

B:= UPCASE (‘f’);

WRITE N(B)F

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

Над строками можно проводить операции сравнения, т.е. применять символы: =; ≠; >, <, =>, <=. При этом строки сравниваются посимвольно слева направо с учетом внутренней кодировки символов в кодовой таблице ASCII. Сравниваются не сами символы, а их десятичные коды.

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

VAR

A, B: STRING;

A:=’ABC’; B:=’ABCD’;

IF A>B THEN

WRITELN (‘A>B’);

ELSE

WRITELN (‘B>A’);’B>A’;

A:=’ABC’; B:=’ABK’;

IF A>B THEN

WRITELN (‘A>B’);

ELSE (иначе)

WRITELN (‘B>A’);B>A;

  1. COPY (ST; INDEX; COUNT) –данная ф-ция копирует из строки ST COUNT-символов, начиная с позиции INDEX.

VAR

A, B: STRING;

A:=’ABCDKL’;

B:=COPY (A, 3, 2) (начиная с 3 позиции 2 символа)

WRITELN (B)CD

Процедуры над строками:

  1. DELETE (ST; INDEX; COUNT) –данная процедура удаляет из строки ST COUNT-символов, начиная с позиции INDEX.

VAR

A: STRING;

A:= ‘ABCDEF’ (BCD хочу удалить)

DELETE (A, 2, 3) (начиная со 2 позиции 3 символа)

WRITELN (A)AEF

  1. INSERT (SUBST, ST, INDEX) –данная ф-ция вставляет подстроку SUBST в строку ST, начиная с позиции INDEX.

VAR

B, A:STRING;

A:=’ABCD’;

B:=’KLM’;

INSERT (B, A, 2);

WRITELN (A)AKLMBCD

INSERT (‘FK’, A, 4);

WRITELN (A)AKLFKBCD.

  1. STR (X [:ширина [:количество символов]]; ST) -данная процедура преобразует число Х любого вещественного или целого типов в строку ST.

Ширина – общая ширина поля вывода; Кол-во символов – кол-во символов в дробной части, указывается только для вещественных чисел.

VAR

A:=REAL;

B:=STRING;

A:= -58.62;

STR (A:7:2, B); (7-количество позиций)

WRITELN (B) -58.62

ТО, что указывается в [ ] не обязательно.

  1. VAL (ST; X; CODE) -данная процедура преобразует строку символов ST во внутреннее представление целой или вещественной переменной Х, кот. определяется типом переменной Х. Параметр CODE явл-ся параметром целого типа, после выполнения данной процедуры в параметр CODE заносится: 0, если преобразование прошло успешно; число >0, если произошла ошибка преобразования. При этом число, занесенное в параметр CODE, определяет номер позиции в строке ST,в которой обнаружена ошибка.

В строке ST допускаются ведущие пробелы (перед числом), не допускаются ведомы пробелы (после числа).

VAR

A:STRING;

B:REAL;

C:INTEGER;

B:=0;

A:=-56.58;

VAL (A, B, C); ‘

WRITELN (B, ‘ ‘, C) -56.58 0

A:=’-56.58’;

VAL (A,B,C);

WRITELN (B, ‘ ‘, C)0 4;