Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по математике и информатике / Лекция 22 - ТР(теория).doc
Скачиваний:
137
Добавлен:
19.03.2015
Размер:
371.2 Кб
Скачать

34. Понятие символьных и строковых переменных.

Строка – это последовательность символов кодовой таблицы персонального компьютера. При использовании в выражениях строка (символ) помещаются в апострофы. Количество символов в строке не превышает 255. Для определения данных строкового типа используют идентификатор string, после которого в квадратных скобках указывается максимальная длина строки, а для символьного типа – char.

Формат записи:

Var <идентификатор, …>:string[максимальная длина];

<идентификатор, …>: char;

Пример 1.

Var s,s1:string[50]; {длина строки = 50 символов);

St:string; {длина строки = 255 символов);

Ch,ch1:char;{отдельные символы};

Строка в Турбо Паскаль трактуется как цепочка символов (для строки из N символов отводится N +1байт, N байт - для хранения символов строки, и 1 байт – для значений текущей длины строки).

К любому символу в строке можно обратиться, указав его номер. В самом начале строки (под нулевым номером) расположен байт, содержащий значение текущей длины строки.

0

1

2

3

4

N+1

N

Текущая длина строки

Поэтому для определения объема памяти в байтах, требуемой для размещения строки, к значению ее максимальной длины прибавляется 1.

Если рассмотреть структуру размещения строки в памяти, можно увидеть следующее: М – максимальная длина строки, L – текущая длина, А – ячейка памяти.

A- содержит величину текущей длины;

A+ 1 - первый символ строки;

A+L- последний значащий символ;

- незанятые ячейки.

35. Строковые выражения. Операции над строками.

Выражения, в которых операндами служат строковые данные, называются строковыми. Они состоят из строковых Const, переменных, указателей функций и знаков операций.

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

  • Операция сцепления (+) применяется для сцепления нескольких строк в одну результирующую.

  • Операции отношения (=, <>, >, <, >=, <=). Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией. Результат сравнения всегда имеет булевский тип.

Пример 2. Примеры операций отношения и результат.

Описание

Выражение

Результат

‘MS-DOS’<’MS-Dos’

‘program’>’PROGRAM’

True

True

‘Принтер’>’Принтер’

‘Intell’=’Intell’

True

True

Str1: = ‘Группа учащихся’;

Str2: =Str1+’школы-лицея’;

Fio: = ‘Бочаров А.А.’

Группа учащихся школы-лицея

Бочаров А.А.

А: string [6]

А: string [8]

А: string [2]

A: = ‘ГРУППАI’

A: = ‘ГРУППАI’

A: = ‘ГРУППАI’

‘ГРУППА’

‘ГРУППА I’

‘ГР’

3. Строковые процедуры и функции

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

Процедура или функция

Назначение

Delete(St, P, N)

Удаляет Nсимволов строкиSt, начиная с позицииP.

Insert(St1, St2, P)

Вставка строки St1 в строкуSt2, начиная с позиции Р.

Str(I, St)

Преобразование числового значения величины Iи помещение результата в строкуSt.

Val(St, I, Code)

Преобразование строкового значения Stв величину вещественного типа и помещение результата вI. Если преобразование произошло без ошибок тоCode=0, иначе оно равно первому ошибочному символу в строке.

Copy(St, P, N)

Выделяет из строки Stподстроку длинойNсимволов, начиная с позицииP.

Concat (St1, St2, StN)

Выполняет сцепление строк.

Length (St)

Возвращает текущую длину строки St.

Pos(St1, St2)

Обнаруживает первое появление в строке St2 подстрокиSt1.

UpCase(Ch)

Преобразует стоковую букву в прописную.

Пример 3: Некоторый пользователь вводит в компьютер слово, задача компьютера сделать все буквы данного слова заглавными и вывести на экран сообщение слово состоит из четного или нечетного числа букв. Удалить все знаки препинания, если таковые имеются.

Program primer;

Var s:string;

i:integer;

begin

Write ('Vvedite slovo: ');

Readln (s);

For i: = 1 to length (s) do s[i]: = upcase (s[i]);

Writeln (s);

If length (s) mod 2 = 0 then Writeln ('chetnoe') else Writeln ('nechetnoe');

For i:=1 to length(s) do

If (s[i]='.') or (s[i]=',') or (s[i]=':') or (s[i]=';') or (s[i]='!') then delete (s,i,1);

Writeln (s);

Readln;

end.

25