Стандартные функции и процедуры для работы со строками

Строка - это последовательность символов. Каждый символ занимает 1 байт памяти (код ASCII). Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255. Строковые величины могут быть константами и переменными.

Строковая константа - это последовательность символов, заключенная в апострофы.

Строковые константы записываются как последовательности символов, ограниченные апострофами.

Допускается формирование строк с использованием записи символов по десятичному коду (в виде комбинации # и кода символа) и управляющих символов (комбинации ^ и некоторых заглавных латинских букв).

Например:

' Язык программирования ПАСКАЛЬ'

' 33-45-12'
#54#32#61

'abcde'^A^M

Пустой символ обозначается двумя подряд стоящими апострофами. Если апостроф входит в строку как литера, то при записи он удваивается.

Строковая переменная описывается в разделе описания переменных следующим образом:

Var <идентификатор>: String [<максимальная длина строки>].

Например:

Var S: String[20].

Длина строки может и не указываться в описании. В этом случае подразумевается, что она максимальна — 255 символов.

Например:

Var Slovo: String.

К каждому элементу строки можно обратиться по его номеру. Однако ввод и вывод строк осуществляются целиком, а не поэлементно, как это происходит в массивах. Число введенных символов не должно превышать указанного в максимальном размере строки, так если такое превышение будет иметь место, то «лишние» символы будут проигнорированы.

Пустой символ обозначается двумя подряд стоящими апострофами. Если апостроф входит в строку как литера, то при записи он удваивается.

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

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

По мере заполнения строки символами ее текущая длина возрастает, но она не должна превышать максимального по описанию значения.

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

Name[5], Name[i], Slovo[ к +1].

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

Тип String и стандартный тип Char совместимы. Строки и символы могут употребляться в одних и тех же выражениях. Выражения типа Char можно присваивать любым строковым переменным.

Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операции сцепления и операции отношения.

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

Например:

'ЭВМ'+' IВМ'+' PC'.

В результате получится строка

'ЭВМ IBM PC' .

Длина результирующей строки не должна превышать 255 символов.

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

Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы. Например:

Таблица ASCII кодов

Таблица ASCII кодов для русских букв

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

Функция Chr ( k ) преобразует числовой код символа из таблицы ASCII в символ.

Например:

c:= Chr(48); {c : Char} {c = '0'}

Функция Ord ( k ) преобразует символ в её числовой код из таблицы ASCII.

Функция Pred( k ) возвращает значение предыдущего символа из таблицы ASCII.

Например для символа 'P' (Pred (P)) эта функция возвратит символ 'O'.

Функция Succ( k ) обратная функции Pred. Для символа 'P' функция Succ (P) возвратит символ 'Q', то есть следующий символ из таблицы ASCII.

Процедура Inc (A,B) увеличивает значение переменной A на значение B.

Процедура Dec(A,B) уменьшает значение переменной A на значение B.

Например:

Pred('[') = 'Z' Succ('z') = '{' Inc('a') = 'b' Inc('c', 2) = 'e' Dec('z') = 'y' Dec(#0, 4) = '№' {#252}

Функция UpCase( k ) преобразует строчные английские буквы в заглавные. Данная функция применима только для строчных букв латинского алфавита.

Стандартные процедуры и функции работы со строками

Функция Concat (s1,s2,…, sn : String) - возвращает строку, являющуюся результатом слияния строк s1, s2, …,sn.

Например:

Concat('abc', '3de', ' ', 'X', 'yz') = 'abc3de Xyz'

Функция Copy (s : String; i, k : Byte) - возвращает подстроку длиной k символов, начиная с позиции i.

Например:

Copy ('abc3de Xyz', 2, 4) = 'bc3d' Copy ('abc3de Xyz', 12, 4) = '' Copy ('abc3de Xyz', 8, 14) = 'Xyz'

Процедура Delete (s : String; i, k : Byte) удаляет из строки s подстроку длиной k символов, начиная с позиции i.

Например:

s := 'abc3de Xyz'; Delete(s, 2, 3); {s = 'ade Xyz'} s := 'abc3de Xyz'; Delete(s, 8, 13); {s = 'abc3de '}

Процедура Insert (ss, s: String; i: Byte) вставляет в строку s подстроку ss, начиная с позиции i.

Например:

s = 'abc3de Xyz'; Insert('xyz', s, 2); {s = 'axyzbc3de Xyz'} s := 'abc3de'; Insert('xyz', s, 12); {s = 'abc3dexyz'}

Функция Length (s: String) возвращает длину строки s.

Например:

Length('abc3de Xyz') = 10

Функция Pos (ss, s: String) определяет позицию, с которой начинается первое (считая слева направо) вхождение подстроки ss в строку s. Если ss не содержится в s, то функция возвращает значение 0.

Например:

Pos('X', 'abc3de Xyz') = 8

Процедура Str (x: integer, s: String) преобразует числовое значение x в строку s. При этом для x может быть задан формат, как в процедурах вывода write и writeln.

Например:

x := 123; s := str(x:6,s); Результат: s = ' 123'. Str(156.4 : 7 : 2, s); {s = ' 156.4 '}

Процедура Val (s: String; i: <арифметический_тип>; err: Byte) преобразует строку s в числовое значение (в случае ошибки в переменную err будет записан номер первого недопустимого символа).

Например:

{s = '15.47'} Val(s, x, err); {x = 15.47}

Пример 1. Программа получения из слова «ВЕЛИЧИНА» слова «НАЛИЧИЕ»:

Program Slovo_1; Var S1, S2: String[10]; Begin S1:= 'ВЕЛИЧИНА'; S2:= Copy(S1,7,2) + Copy(S1,3,4) + S1[2]; WriteLn(S2); End.

Пример 2. Программа получения из слова «СТРОКА» слова «СЕТКА»:

Program Slovo_2; Var S1: String[10]; Begin S1:= 'СТРОКА'; Delete(S1,3,2) ; Insert('E',S1,2); WriteLn(S1); End.

Пример 3. Программа, формирующая символьную строку, состоящую из N звездочек (где N — целое число, 1 < N < 255):

Program Stars; Var A: String; N, I: Byte; Begin Write ('Введите число звездочек: '); ReadLn(N); A:=''; For I := 1 to N do A:=A+'*'; WriteLn(A); End.

Здесь строковой переменной А сначала присваивается значение пустой строки ("), а затем к ней присоединяются звездочки.

Пример 4. Программа подсчета в символьной строке числа цифр, предшествующих первому символу «!»:

Program P1; Var S:String; k, I:Byte; Begin WriteLn('Введите строку'); ReadLn(S); k:=0; I:= 1; While (I <= Length(S)) and (S [I] <>'!') do> Begin If (S[I]>= '0') and (S[i]<='9') then k:=k+1; I:=I+1; End; WriteLn ('Количество цифр до символа "!" равно ', k); End.

В этой программе переменная k играет роль счетчика цифр, а переменная I — роль параметра цикла. Выполнение цикла закончится при первом же выходе на символ «!» или (если в строке такого символа нет) при выходе на конец строки. Символ S[I] является цифрой, если истинно отношение '0' < S[I] < '9'.


Тест.Блок-схема


    Инструкция
  1. Что такое Блок-схема
    Это определенный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий.
    Формула
    Это определенным образом организованная последовательность действий, за конечное число шагов приводящая к решению задачи.
    Графический способ представления алгоритма, каждое действие при этом осуществляется рисованием последовательности геометрических фигур, каждая из которых подразумевает выполнение определенного действия алгоритма. Порядок выполнения действий указывается стрелками.

  2. Что НЕ является основным элементом блок-схемы
    Блок вычислений
    Логический блок
    Разделитель
    Соединитель

  3. Базовые структуры алгоритмов - ...
    Это определенный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий
    Выборка определенных действий
    Алгоритм предназначенный для записи других алгоритмов
    Сложный код

  4. Как называется цикл с предусловием
    Цикл «Пока»
    Цикл «До»
    Цикл «После»
    Цикл «От»

  5. Какое правила НЕ нужно использовать для создания циклов с параметром
    Параметр цикла, его начальное и конечное значения и шаг должны быть одного типа
    Запрещено изменять в теле цикла значения начальное, текущее и конечное для параметра
    Запрещено входить в цикл, минуя блок модификации
    Запрещено выходить из цикла

    

Назад Далее
Наверх