Списковые структуры.

 

Полезный метод изучения строк – рассматривать строки как последовательность входящих в них подстрок. Например, Паскаль-программа – это строка, составленная из слов, пробелов и специальных символов. И мы знаем, что человеку будет крайне сложно в ней разобраться, если границы между синтаксическими единицами не будут выделены соответствующим образом. В данном случае важны и границы подстрок и порядок их появления и возможность изменения этого порядка.

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

Например, для строки

 

†this is a list example†

 

список литералов

 

<†th†, †is †, †is †, †a †, †list example†>

 

предлагает нам вариант нарезки данной строки. Выражение Pascal произведет один и тот же OUTPUT, если будет использована данная строка или список, полученный в результате ее разбиения на подстроки.

 

WRITE(‘this is a list example’);

WRITE(‘th’, ‘is ‘, ‘is ‘, ‘a ‘, ‘list example’);

 

Спискам, как и строкам, могут быть присвоены имена, например:

 

L = <†th†, †is †, †is †, †a †, †list example†>

M = <†this is a list example†>

 

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

 

Если элемент x находится в списке K, мы обозначаем факт как принадлежности списку как

x Î K, если список K не имеет ни одного вхождения объекта x, мы говорим, x Ï K.

Например, †is † Î L, но †is † Ï M.

 

Список L содержит пять подстрок, которые могут быть обозначены следующим образом:

 

L1 = †th†

L2 = †is †

L3 = †is †

L4 = †a †

L5 = †list example†

 

В то время M как содержит только одну строку

 

M1 = †this is a list example†

Мы будем использовать индексы для именования элементов списков, используя 1 для обозначения первого элемента и т.д. L можно назвать 5-список, M - 1-список. Список без элементов, 0-список, называется пустым списком и обозначается <>. Необходимо отличать список, содержащий в себе одну строку, от этой строки. Например, M – 1-список с первым и единственным элементом M1 и

 

M = <M1>, но M ¹ M1

 

Также необходимо иметь ввиду, что

 

<††> ¹ <>

 

потому что <††> это 1-спиоск, первый элемент которого пустая строка, а <> - 0-список и первый элемент там отсутствует.

 

Элементами списков могут быть не только строки, но и символы и другие списки. Например, список

 

C = <c, h, a, r, a, c, t, e, r>

 

Является списком символов и это не то же самое, что строка †character†

Следующий список является списком списков

 

<M, M> = <<†this is a list example†>, <†this is a list example†>>

 

где элементами 2-списка являются 1-списки М, рассмотренные выше.

Список может иметь элементы различных видов, например

 

Q = <A, <A>, †A†>

 

Содержит элементы, которые являются соответственно символом, списком и строкой.

Элемент данного списка Q2 содержит единственный элемент – символ A.

(Q2)1 = A

 








Дата добавления: 2016-12-08; просмотров: 606;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.