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

9.2. Строковые данные. Типы Char и String

Простой стандартный порядковый тип сhar предназначен для одиночных символов, которые представлены в нем при помощи кода ASCII. Он относится к простым типам данных. Тип String предназначен для хранения строковых (литерных) величин до 255 символов (тип сhar), которые занимают 1 байт (8 бит), нумерация их начинается с единицы. Если длина строковой величины не указывается в описании, то по умолчанию для нее в памяти отводится место для 255 символов. Примеры описания строковых величин:

Var s1 : String[40];

Str : String;

Переменной S1 будет отведено в памяти 40 байт (или 408=320 бит), переменной Str - максимально возможные 255 байт.

Засылать информацию в переменные строкового типа можно при помощи присвоения им:

1) строковых величин (в программном коде они заключаются в апострофы),

2) значения выражений, которые приводят к строковым величинам.

В роли пустого элемента при засылке данных в строковые переменные выступает пробел, который изображается при помощи двух подряд стоящих апострофов.

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

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

Пример 1 программы с использованием обращений к символам строковых величин:

Var Str1, Str2: String[20]; Ch1, Ch2 :Char;

begin

Str1 :=’Сомрuter’; Str2: =’’;

Ch1=Str1[5]; Ch2=Str2[5];

WriteLn(' Ch1=', Ch1, ' Ch2=', Ch2);

end.

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

Ch1=u Ch2=

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

Рассмотрим функции и действия над строковыми величинами.

1. Length(S). Для автоматизации действий со строковыми величинами главным является определение их длины – число символов, содержащихся в них. Для этого используется специальная функция Length(S), где S - строковая величина, у которой необходимо определить длину. Число символов в ней присваивается самому имени функции.

Пример 2. После выполнения фрагмента из двух операторов:

S:='computer';

Writeln('В слове ', S, ' ', Length(S),' символов')

на экран монитора будет выдано сообщение:

В слове computer 8 символов.

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

Var s: String[20]; I:integer;

begin

Write('Vvedite slovo:'); Readln(S);

For i:=1 to Length(S)-1 do Write(S[i],' ');

Writeln(S[Length(S)]);

end.

2. Concat(s1,[s2,...,sn]:string):string - сложение (конкатенация) строк. Операция выполняет слияние (сложение) строковых величин в одну, может быть заменена знаком "+".

Функция выполняет слияние строк-параметров, которых может быть произвольное количество

Пример 4. После выполнения заданных действий над строковыми величинами S1-S4:

S1:='com'; S2:='put'; S3:='er';

S4:=S1+S2+S3;

в переменной S4 будет получено слово ”computer ”.

При выполнении конкатенации строковых величин результат также зависит от длины результирующей переменной, заданной в ее описании: если в нее будет помещено большее число символов, то "лишние" символы в конце записи будут отброшены и не попадут в результирующую переменную.

3. Copy(s:string; index:integer; count:integer):string - функция возвращает подстроку, выделенную из исходной строки s, начиная с символа с номером index длиной count символов.

Пример 5. S:= 'Computer';

S1:= copy(S, 1, 3); {S1 будет равно 'Com'}

S1:= copy(S, 4, 8); {S1 будет равно 'puter'}

4. Delete(var s:string; index,count:integer) - процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.

Пример 6. s:= 'Computer'; delete(s,5,4); {s будет равно 'Comp'}

5. Insert(source:string; var s:string;index:integer) - процедура вставки строки source в строку s, начиная с символа index этой строки.

Пример 7. s := 'Cor';

insert('mpute',s,3); {s будет равно 'Computer' }

6. Pos(substr,s:string):byte - функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.

Пример 8. s := 'Computer';

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

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

7. Str(X:арифметическое выражение; var st:string) - процедура преобразует численное выражение X в его строковое представление, результат помещает в строку st.

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

Также при работе со строками для обработки отдельных символов используют следующие функции, связанные с типом char:

Chr(n: byte): char – преобразование числа n типа byte в соответствующий ему символ (тип char).

Ord(ch: char): byte - преобразование символа ch (тип char) в соответствующее ему число (тип byte).

UpCase(c: char): char; - функция преобразует строчная латинские буквы в соответствующие им прописные, прописные оставляет без изменения.

Очевидно, что функции Chr и Ord являются взаимно обратными, т.е. любого символа Ch и числового кода Num всегда справедливы соотношения:

Chr(Ord(Ch))=Ch, Ord(Chr(Num))= Num.

Пример 9. Код программы, которая выводит на экран кодовую таблицу для символов с 32 до 255, поскольку символы с начальными кодами от 0 до 31 являются управляющими и не имеют соответствующего графического представления:

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