- •Лекция №3. Строковый тип. Массивы
- •1. Строковый тип
- •2. Массивы
- •2.1. Сортировка массивов
- •2.1.1. Сортировка вставкой
- •Алгоритм метода сортировки вставкой т екст программы
- •2.1.2. Сортировка обменом («пузырьковая» сортировка)
- •Алгоритм сортировки методов пузырька Текст программы
- •2.1.3. Сортировка выбором
- •Алгоритм сортировки методом выбора Текст программы
- •2.1.4. Бинарный поиск
- •Алгоритм бинарного поиска т екст программы
- •Модуль system Процедура Val
- •Процедура Str
- •Модуль crt Цветовые константы
- •Переменная TextAttr
- •Функция KeyPressed
Лекция №3. Строковый тип. Массивы
1. Строковый тип
Строка – особая форма одномерного массива символов, которая имеет существенное отличие. Массив символов имеет фиксированную длину (количество элементов), которая определяется при описании. Строка имеет две разновидности длины:
-
Общую длину строки, которая характеризует размер памяти, выделяемые строке при описании;
-
Текущую длину строки (всегда меньше или равную общей длине), которая показывает количество смысловых символов строки в каждый конкретный момент времени.
Тип STRING в ТР используется для обработки текстов.
Длина строки не должна превышать 255 символов.
К любому символу строки можно обратиться так же, как и к элементу одномерного массива ARRAY [0..N] OF CHAR. Например,
var
s : string;
s10 : string[10];
begin
…
if s=’Строка’ then …
…
if s[2]=’т’ then …
…
end.
Самый первый байт в строке имеет индекс 0 и содержит текущую длину строки.
Первый значащий символ строки занимает второй байт и имеет индекс 1.
Действия над строками и символами реализуются с помощью описываемых ниже стандартных процедур и функций:
Function Concat(s1 [, s2,..., sn]: String): String;
Возвращает строку, представляющую собой сцепление строк – параметров s1, s2, …, sn.
Function Copy(S: String; Index: Integer; Count: Integer): String;
Копирует из строки S Count символов, начиная с символа с номером Index.
Procedure Delete(var S: String; Index: Integer; Count:Integer);
Удаляет Count символов из строки S, начиная с символа с номером Index.
Procedure Insert(Source: String; var S: String; Index: Integer);
Вставляет подстроку Source в строку S, начиная с символа с номером Index.
Function Length(S: String): Integer;
Возвращает длину строки S.
Function Pos(Substr: String; S: String): Byte;
Отыскивает в строке S первое вхождение подстроки Substr и возвращает номер позиции, с которой она начинается, если подстрока не найдена, возвращается ноль.
Procedure Val (s : String; var v; var Code : Integer);
Назначение: преобразует строковое значение в его числовое представление. Параметр і представляет собой выражение строкового типа. Параметр v является переменной целого или вещественного типа. Параметр Code – это переменная целого типа, которая формирует все число со знаком. Функция Val преобразует строку s в ее численное представление и сохраняет результат в v. Если где-либо в строке встречается недопустимый символ, то его номер сохраняется в параметре Code. В противном случае этот параметр равен нулю. Предшествующие пробелы должны быть удалены.
Procedure Str (x [: Size [: Dec]], var s : String);
Назначение: преобразует численное значение в его строковое представление. Параметр х является выражением целого или вещественного типа. Параметры size и Dec представляют собой выражения целого типа. Параметр s – строковая переменная. Данная функция преобразует х в его строковое представление в соответствии с параметрами форматирования Size (размер) и Dec. Результирующая строка сохраняется в параметре s.
Пример:
var
x : real;
y : integer;
s, s1 : string;
begin
s := concat (‘12’, ‘345’); {s := ‘12’+’345’; s = ‘12345’}
s1 := copy(s, 4, 2); {s1 = ‘45’}
insert(‘-’,s1,2); {s1 = ‘4-5’}
delete(s,3,3); {s = 12}
str(pi:6:2,s); {s=3.14}
val(‘3.14159’, x, y); {y = 0; x = 3.14159}
end.