В Турбо Паскале, как отмечалось выше, определены данные строкового типа - String.
Примеропределения переменных строкового типа:
Var
str : String;
line : String[80];
После слова Stringможет указываться длина строки (максимальная). Если длина не указана, то считается, что она переменная и определяется числом символов, записанных на место переменной типа String при вводе или присваивании. Это число хранится в нулевом байте соответствующей переменной.
Важно, что в переменной строкового типа доступен каждый отдельный символ. Обращение к нему производится путем указания его номера (индекса). Конечно, индекс символа не должен быть больше длины строки.
Для работы со строками в Паскале имеется несколько процедур и функций. Наиболее распространенные из них приведены ниже.
1. Операция «Объединение строк» изображается символом + .
Пример. Пусть переменные s1, s2 и s3 имеют тип String. Тогда в результате выполнения операции
s3 := s1 + s2;
получим строку s3, являющуюся объединением строк s1 и s2.
Если, например, s1 имела значение 'СамГТУ,', а s2 – значение ' ФАИТ', то s3 получит значение 'СамГТУ, ФАИТ'.
2. Функция Copy (исходная_строка, начальный_номер, длина) – выделение подстроки заданной "длины" из "исходной строки", начиная с символа, определенного "начальным_номером".
Если параметр "длина" больше остатка строки, то выделяется остаток;, если параметр "начальный_номер" превышает длину строки, то результатом будет пустая строка.
Пример.
. . . . . .
s1 := 'СамГТУ';
s2 := Copy(s1,4,3);{Результат: s2 получит значение 'ГТУ'}
3. Процедура Delete(исх_строка, номер, длина) – удаляет из "исходной строки" подстроку заданной "длины", начиная с заданного "номера":
Пример
. . . . .
S := 'СамГТУ, ФАИТ';
Delete(S,4,5);{Результат: S получит новое значение 'СамФАИТ'}
. . . . .
4. Функция Length(строка)– возвращает длину строки (количество символов в ней).
5. Функция POS(подстрока, строка)– возвращает номер символа, начиная с которого "подстрока" встречается в "строке" (если не встречается, то функция возвращает ноль). Прописные и строчные буквы считаются различными.
Пример
. . . .
N := Pos('ра', 'Абракадабра'); {N получит значение 3}
M := Pos('Ра', 'Абракадабра'); {M получит значение 0}
Рассмотрим примеры простейших программ обработки строк символов на примере одной строки. Тексты большей длины могут быть представлены в виде массива строк, каждая из которых обрабатывается аналогично.
Пример 1. Ввести в ЭВМ предложение длиной не более 80 символов и подсчитать количество слов в нем и количество букв "а". Будем считать, что одно слово от другого отделяется одним пробелом.