Работа со строками. 8.1. Хранение строк типа string12
Под строкой принято понимать линейную последовательность символов. В языке Pascal для хранения строк применяется тип string, работу с которым мы и рассмотрим в этом разделе. Примеры описания строковых переменных:
var S : string; S1, a : string;
Строка хранится как одномерный массив элементов типа char, причем индексация массива начинается с нуля.
В нулевую ячейку заносится символ, код которого равен текущей длине строки. На рисунке он обозначен #6. Подобное обозначение в тексте программы означает символ с кодом 6. По умолчанию максимальная длина строки составляет 255 символов. Напомним, что для хранения символа ASCII отводится один байт. Это значит, что максимальное значение кода не может превышать 255. Этим и обусловлено ограничение на максимальную длину строки. К элементам строки можно обращаться по их номеру, как к элементам массива символов. Например, оператор S[4] := ‘A’; приведет к занесению символа ‘A’ в четвертую позицию строки. При этом длина строки не изменится.
К нулевой ячейке массива-строки можно обращаться, как и к любой другой:
var a:string; .... readln(a); writeln('Длина строки = ', ord(a[0]));
Можно сказать, что тип string в смысле хранения эквивалентен следующему типу символьного массива
type TLine = array [0..255] of char;
Строки типа string – статические. Это означает, что для хранения такой строки выделяется память в размере 256 байт (под 256 ячеек типа char). При описании строк можно указывать максимально допустимую длину, или иными словами определять объем памяти, отводимый для хранения строки. В общем случае объявление пользовательского строкового типа выглядит так:
type <имя типа> = string[<макс. длина строки>]
Например:
type TStr1 = string[10]; {тип строки с максимальной длиной 10 символов} TStr2 = string[100]; {тип строка с максимальной длиной 100 символов}
Также допускается описывать непосредственно строки-переменные требуемой длины, например:
var S1 : string[10]; {строка с максимальной длиной 10 символов}
Для ввода и вывода строковых величин используются все те же стандартные процедуры read, readln, write, writeln.
var S : string; begin readln(S); … writeln(S); end.
В тексте программы на языке Pascal строковые константы заключаются в апострофы, например:
const name=’Ivan’; var a: string[50]; begin a:=’Petr’; end.
Сформировать «пустую» строку можно двумя способами:
S := ‘’; S[0] := #0;
Заметим, что неотображаемые символы, такие как символ пробела или табуляции, являются значимыми.
Пример. Поменять последовательность символов в строке на обратную.
8.2 Строковые выражения
Выражения, в которых операндами служат строковые данные, называются строковыми. Над строковыми данными определены операция сцепления (склеивания, конкатенации) и операции отношения. Операция сцепления (+) служит для склеивания нескольких строк в одну. Длина результата не должна превышать максимально допустимую длину результирующей строки. Применительно к строковым переменным и константам допустимы следующие выражения:
const S1=’DFSDF’; var S,S2,S3 : string; … S: = S+’ABC’+S1+’+’; S := #66 + ‘AAA’ + S2 + S3;
К строкам применимы все операции отношения. Приоритет операций отношения более низкий, чем у операции сцепления. Две строки считаются равными в том случае, если они имеют одинаковую длину и содержат одинаковую последовательность символов. Сравнение строк производится посимвольно (на самом деле сравниваются не символы, а их коды). При достижении первого несовпадающего символа меньшей считается та строка, чей символ имеет меньший код ASCII. Поэтому не удивляйтесь, что ‘ AAAAAAAAA ’ < ‘ B ’.
12 Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (104)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |