Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 1 курс / метод указания / Программирование в интегрированной среде Turbo Pascal. Учебное пособие.doc
Скачиваний:
117
Добавлен:
08.06.2015
Размер:
1.51 Mб
Скачать

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

Строковый тип (идентификатор типа String) используется для обработки строк (цепочки символов).

Описание переменных строкового типа осуществляется двумя эквивалентными способами:

  1. с определением типа

Type

<имя типа> = string[<максимальная длина строки>];

Var

<имя переменной>:<имя типа>;

  1. без определения типа

Var

<имя переменной>: string[<максимальная длина строки>];

Максимальная длина строки должна лежать в диапазоне 1..255. Если максимальная длина строки не указана, то по умолчанию она принимается равной 255 символам.

Например: Type

L25 = string[25];

Lmax = string[80];

Var

screen:Lmax; {явное описание типа}

y:L25;

x:string; {по умолчанию максимальная

длина строки – 255}

z:string[40]; {неявное описание}

Все символы в строке нумеруются от 1 до максимального значения длины строки. К любому символу строки можно обратиться как к элементу одномерного массива.

Например: Var st : string [10];

. . . . . . . . . . . . . . . .

begin

. . . . . . . . . .

for i:=1 to 10 do

if st[i]=’?’ then

. . . . . . . . . . .

end.

В нулевую позицию автоматически записывается текущее значение длины строки – динамическая длина.

Значением строковой переменной может быть последовательность символов, взятая в апострофы. Если апостроф входит в состав строки, то он записывается дважды.

Например: st1:=’Интегрированная среда’;

st2:=’Под’’езд’;

st3:=’’ {пустая строка}.

К строковым переменным применимы следующие операции:

1). Операция присваивания.

Например: MyStr: =’TurboPascal’;

YourStr: =MyStr;

Если при присваивании превышается максимальная длина строки, то лишние символы справа отсекаются.

2). Операции отношения (=, <>, <, >, >=, <=).

Стоки сравниваются посимвольно слева направо. При сравнении используются коды соответствующих символов . Строки считаются равными только при одинаковом наборе символов и одинаковой длине. Результат сравнения строк имеет значения FalseилиTrue.

Например, следующие операции дадут True:

’N’<’n’; ’2’>’123’; ’while’>=’wHile’; ’Паскаль’>’TurboPascal’.

3). Операция сцепления (объединения).

Обозначается символом “+”. При выполнении операции к первой строке добавляется вторая строка, ограничивая общую длину в 255 символов или максимально допустимой длиной; "лишние" символы отбрасываются.

Например:

c:=’A’+’B’+’CDE’;writeln(c); {результат –ABCDE}

x:=’Интегрированная’;y:=’ среда’;

z:=x+y;writeln(z); {результат – Интегрированная среда}

Ввод строковых переменных осуществляется только оператором Readln. Одним оператором можно ввести только одну строку.

Вывод строки осуществляется с помощью операторов Write и Writeln. К строковым переменным можно также применять форматированный вывод (как для целых чисел).

Например: A : =’student’;

writeln(A : 10); {результат – student}

writeln(A); {результат – student}

writeln(A : 4); {результат – stud}

Для большинства необходимых преобразований строки в ТР предусмотрены специальные процедуры и функции:

  1. function Length (s : string) : integer; возвращает динамическую длину строки.

Например: c:=length(’1230’+’456’);

writeln(c); {результат – 7}

  1. function Concat (s1 [,s2, …,sN] : string) : string; выполняет конкатенацию (объединение) последовательности строк. Действия этой функции и операции сцепления “+” одинаковы.

Например: st1:=’Студент’;

st2:=’ – отличник’;

st3:=concat(st1,’ Петров’, st2);

{результат – st3=’Студент Петров - отличник’}

  1. function Copy (s : string; Index, Count : integer) : string;возвращает подстроку из строкиs, начиная с позицииIndexдлинойCountсимволов.

Например: st1:=’Программа’

st2:=copy(st1, 2, 3); {результат –st2=’рог’}

st3:=copy(st1, 4, 5); {результат – st3=’грамм’}

  1. function Pos (subS, s : string) : byte;возвращает позицию, начиная с которой в строкеsрасполагается подстрокаsubS. Если фрагмент в строке не найден, тоPos=0.

Например: S:=’Airplane’;

N1:=pos(’plan’, s); {результат – N1=4}

N2:=pos(’nn’, s); {результат – N2=0}

N3:=pos(’bar’, ’Barbara’); {результат – N3=4}

  1. procedure Delete (var s : string; Index, Count integer); удаляет Count символов из строки s, начиная с позиции Index со смещением остатка строки на освободившееся место.

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

while st[1]=’ ’ do delete (st, 1, 1);

б) удаление всех пробелов из строки:

while Pos(’ ’,st)<>0 do Delete (st, Pos (’ ’, st), 1)

  1. procedure Insert (subS : string; var S : string; Index : integer); вставляет подстроку subS в строку s, начиная с позиции Index. ЕслиIndexпревышает исходную длину строки, тоsubSприсоединяется к строкеsсправа.

Например: вставить в строку ’студент – отличник’ свою фамилию:

Var st1, fam: string;

begin writeln (’Введите свою фамилию’);

readln(fam);

st1:=’студент – отличник’;

insert (fam,st1,9);

writeln (st1); {результат: студент Иванов –

end.отличник}

  1. procedure Str (x[: Size[: Dec]], var s : string);преобразует числовое значениех(целое или вещественное) в его строковое представление.Size иDecполя, отводимые соответственно под запись всего числа и его дробной части (как в оператореwrite).

Например: A:= -6; B:= 8.1E-4;

str (A : 4, st1); {результат – st1=’ -6’}

str (B : 15 : 10, st2);

{результат – st2=’ 0.0008100000’}

  1. procedure Val(s : string; var x : real (или integer); code : integer);преобразует строковое значениеsв его численное представлениех. Параметрcodeсодержит признак ошибки преобразования (0 – нет ошибки). Если в строке встречается недопустимый символ, то его номер сохраняется в параметреcode(т.е. если строка не соответствует формату числа, тоcodeсодержит номер первого ошибочного символа).

Например:

st1:=’1234’;val(st1,R1,Ier1); {результат –R1=1234;Ier1=0}

st2:=’7.7E5’;val(st2,R2,Ier2); {результат –R2=770000;Ier2=0}

st3:=’1+1’; val (st3, R3, Ier3); {результат – R3=0; Ier3=2}

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

Например:

Const

str : string = 'Turbo Pascal';

no:char= 'N';

Соседние файлы в папке метод указания