Шаг 34.
Обработка строковой информации


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

    Первые электронно-вычислительные машины (ЭВМ), появившиеся в середине сороковых годов двадцатого века, использовались, в основном, для решения математических (вычислительных) задач. С развитием аппаратного и программного обеспечения ЭВМ постепенно стали использовать не столько, как инструмент для проведения вычислений, а в качестве хранилища информации. Для сохранения информации ее нужно каким-то образом закодировать (представить). В человеческом обществе для этих целей используется письменность. Таким образом, было бы неплохо "научить" компьютер элементарным навыкам работы с написанным текстом.

    Практически все языки программирования имеют средства обработки символьной информации. Язык программирования Pascal в этом смысле не является исключением. Здесь мы рассмотрим основные возможности этого языка программирования по обработке символьной информации.

    Прежде всего нам нужны переменные для хранения этой информации. Можно воспользоваться простым типом данных Char ("символ") и составным типом String ("строка"). Переменная типа Char в качестве своего значения может иметь один символ. Например, если имеется описание:


  Var
    C:Char;
то возможны следующие присваивания: C:='a'; C:='1'; C:='?'.

    Понятно, что для работы с большими объемами символьной информации этот тип не применим. Поэтому, на практике чаще всего используют тип String. В качестве своего значения переменная этого типа может содержать любую последовательность символов длиной от 0 до 255.

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


Рис.1. Общий вид описания строковой переменной

    Например, описание:


   Var
     Line:String[20];
говорит о том, что значением переменной Line может быть любая последовательность символов длиной от 0 до 20.


Замечания.
    1. Максимальное число, которое может находиться в квадратных скобках, равно 255. Таким образом, максимальная длина строки 255 символов.
    2. При описании переменной строкового типа можно не указывать число в квадратных скобках:

   Var
     M:String;
Такая запись эквивалентна следующей:

   Var
     M:String[255];

    Как же размещается в памяти компьютера строка символов, и почему максимальная длина строки равна 255 символам?

    Переменная строкового типа длиной в N символов располагается в памяти компьютера следующим образом (рис.2):


Рис.2. Размещение строковой переменной в памяти компьютера

    Как видно из приведенного рисунка строка длиной N символов занимает в памяти N+1 байтов, которые подразделяются следующим образом:

    Например, если имеется такое присваивание: Line:='мама';, то текущая длина (значение нулевого байта) равна 4; занятая часть строки - это первые четыре байта; незанятая часть строки составляет 16 байтов. Эта незанятая часть строки не может быть использована компьютером.


Замечание.
    Старайтесь так задавать длину строки, чтобы незанятая часть была как можно меньше.

    Под длину строки отводится один байт. Как известно, один байт содержит восемь бит. Максимальное значение, которое можно поместить в восемь бит, представляется так: 11111111. Переводя это число из двоичной системы счисления в десятичную, получим как раз число 255.

    Доступ к символам строки осуществляется также, как к элементам одномерного массива: указанием имени строковой переменной и в квадратных скобках номера символа в строке. Например, Line[5]. Номер элемента может задаваться выражением, для которого справедливы все требования, налагаемые на индекс элемента массива. Таким образом, строки очень похожи на одномерные массивы, однако, в отличие от массивов, строки допускают присваивание вида: Line:='ель';. При использовании конструкции вида: ReadLn(Line); можно задать значение всей строке.

   

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


Предыдущий шаг Содержание Следующий шаг