На этом шаге мы рассмотрим построение ортогональных структур.
В 10 шаге раздела "Язык программирования C++ | Динамические структуры данных" рассматриваются ортогональные списки ("гирлянды" и "висюльки"). На этом шаге мы приведем сценарий построения такой структуры на языке пограммирования Perl.
Вот текст сценария.
print "Построение ортогональной структуры.\n"; $el = 0; print "Элемент гирлянды (0 - признак конца):"; $el = <STDIN>; chop ($el); # Начальная инициализация. @a = (); $i = -1; Vvod(); Vyvod(); exit; # ============= Функции =================== # ============= Вывод структуры. sub Vyvod() { print "Ортогональная структура:\n"; for $i (0..$#a) { print "$a[$i][0]: "; for $j (1..$#{$a[$i]}) { print "$a[$i][$j] "; } print "\n"; } } # ============= Ввод структуры. sub Vvod() { # Если элемент не нулевой, то задаем элементы висюльки while ($el != 0) { $el1 = 0; print "Элемент висюльки (0 - признак конца):"; $el1 = <STDIN>; # Ввод элемента с клавиатуры chop ($el1); # Удаляем символ перевода на новую строку $j = -1; # Начальная инициализация @b = (); # массива висюлек while ($el1 != 0) { ++$j; # Помещаем очередную $b[$j] = $el1; # висюльку в массив # Ввод новой висюльки в массив print "Элемент висюльки (0 - признак конца):"; $el1 = <STDIN>; chop ($el1); } ++$i; # Помещаем элемент $a[$i][0] = $el; # гирлянды в массив # Присоединяем массив висюлек к элементу гирлянды push @{$a[$i]}, @b; print "Элемент гирлянды (0 - признак конца):"; $el = <STDIN>; chop ($el); } print "\n"; }
Результат работы скрипта изображен на рисунке 1.
Рис.1. Ортогональная структура
Пример достаточно хорошо прокомментирован, однако дадим еще несколько замечаний.
Основная идея работы скрипта заключается в следующем: запрашивается элемент гирлянды, а затем определяются элементы висюльки. После задания значений элемент грлянды помещается в массив, а затем к нему добавляется висюлька.
Функция chop ($el); удаляет символ "\n", который помещается в переменную при вводе значения с клавиатуры. Если этот символ не удалить, то он будет влияние на вывод списка.
Со следующего шага мы начнем более детально знакомиться с операциями и выражениями.