Тема 2.6 Операции со строками. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема 2.6 Операции со строками.



 

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

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

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

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

Например:

 

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

Var slovo: String

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

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

Например: Name[5], Name[i], slovo[k+l].

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

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

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

    Операция сцепления (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные. Например: 'ЭВМ' + ЧВМ' + 'РС. В результате получится строка: 'ЭВМ IBM PC. Длина результирующей строки не должна превышать 255. Операции отношения =, <, >, <=, >=, <> производят сравне­ ние двух строк, в результате чего получается логическая величина (true или false). Операция отношения имеет более низкий приоритет, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и больше считается та строка, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки.

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

    Функция Copy (S, Poz, N) выделяет из строки s подстроку длиной в N символов, начиная с позиции Poz.N и Poz — целочисленные выражения. 

Пример:

Функция Concat (SI, S2,..., SN) выполняет сцепление (кон­ катенацию) строк S1,..., SN в одну строку.

Функция Length (S) определяет текущую длину строки S. Ре­ зультат — значение целого типа.

Функция Pos (si, S2) обнаруживает первое появление в строке S2 подстроки si. Результат — целое число, равное номеру позиции, где находится первый символ подстроки si. Если в строке S2 подстроки si не обнаружено, то результат равен 0.

Процедура Delete (S, Poz, N) выполняет удаление N символов из строки s, начиная с позиции Poz. 

Пример: 

Исходное значение s      Оператор       Конечное значение S

 'abcdefg'                 Delete (S,3,2)           'abefg'                                                                       'abcdefg'                  Delete(S,2,6)        'a'                                                                                           В результате выполнения процедуры уменьшается текущая длина строки в переменной S.

 

Процедура insert (SI, S2, Poz) выполняет вставку строки SI в строку S2, начиная с позиции Poz.

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

Пример 2. По следующей программе из слова «СТРОКА» будет получено слово «СЕТКА».

Пример З. Составим программу, которая формирует символьную строку, состоящую из п звездочек (л — целое число, 1 < п < 25


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

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

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

Пример 5. Дана символьная строка, которая имеет следующий вид:  

      На месте а и ь стоят десятичные цифры; значком Ф обозначен один из знаков операций: +,-,*. Иначе говоря, записано арифметическое выражение с двумя однозначными числами и знак равенства, например '5 + 7 ='. Нужно, чтобы машина вычислила это выражение и после знака равенства вывела результат. Операция деления не рассматривается для того, чтобы иметь дело только с целыми числами. 

      Программу решения такой задачи назовем интерпретатором. Интерпретатор должен расшифровать содержание строки и выполнить соответствующую арифметическую операцию. От исходной символьной информации он должен перейти к работе с числовой информацией. Если предположить, что строка составлена только из четырех символов в соответствии с указанным форматом, то задача решается довольно просто. Вот программа такого интерпретатора:

 

В этой программе появился новый для нас оператор. Он называется оператором выбора. Формат этого оператора описывается синтаксической диаграммой (рис. 22).

     Здесь <селектор> — это выражение любого порядкового типа; <константа> — постоянная величина того же типа, что и селектор; <оператор> — любой простой или составной оператор. 

     Выполнение оператора выбора происходит так: вычисляется выражение-селектор; затем в списках констант ищется такое значение, которое совпадает с полученным значением селектора; далее исполняется оператор, помеченный данной константой. Если та­ кой константы не найдено, то происходит переход к выполнению оператора, следующего после оператора выбора. 

     В приведенной выше программе роль селектора играет символь­ ная величина Str {2 ]. Если она равна +, то выполнится операторc:=a + b; если равна -, то выполнится оператор с:=а-Ь; если равна *, выполнится оператор с:=а*Ь. Для любых других значений Str [2] не выполнится ни один из операторов присваива­ ния, и значение переменной с останется неопределенным. 

    Приведенное выше описание оператора выбора соответствует стандарту Паскаля. В Турбо Паскале допустимо использование в операторе Case альтернативной ветви после служебного слова Else. Вот пример для той же задачи. Если мы хотим, чтобы в случае неверного символа в str [2] выдавалось сообщение об этом, нужно программировать так:

А теперь вернемся к программе interpretator и разберемся в том, как она будет выполняться. После ввода строки цифровые символы переводятся в соответ­ ствующие десятичные числа. Затем интерпретируется знак операции. В зависимости от знака выполняется одно из трех арифметических действий. Далее результат выводится на экран после символа =.

 



Поделиться:


Последнее изменение этой страницы: 2021-04-05; просмотров: 83; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.10.14 (0.007 с.)