Шаг 66.
Построение ортогональных структур ("гирлянды" и "висюльки")

    На этом шаге мы рассмотрим построение ортогональных структур.

    В 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", который помещается в переменную при вводе значения с клавиатуры. Если этот символ не удалить, то он будет влияние на вывод списка.

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




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