Основные элементы языка программирования Icon. Чанышев О.Г. - 16 стр.

UptoLike

Составители: 

31
7. Таблицы
Таблицыструктуры данных, на верхнем уровне иерархии
представленные парой «ключ-значение». Ключ может быть лю-
бым неструктурированным типом данных. Значениелюбым ти-
пом: записью, списком, множеством.
Создание таблицы: t:=table()
Присвоение ключа и значения: t[k]:=v
Проверка на наличие ключа:
\t[k] – утверждение успешно, если ключ k существует.
/t[k] – утверждение успешно, если ключ k не существует.
Приведем пару
примеров работы с таблицами.
Первый пример еще и демонстрирует создание простого
графического интерфейса. Мы создаем графическое окно, чтобы
кириллические символы выводились в читаемом виде.
link graphics
procedure main()
tab1:=table()
names_obj_table1:=["овощи","фрукты"]
listEl:=[["капуста","картофель","лук"],["яблоки","виноград","
груши"]]
every i:=1 to *names_obj_table1 do
{
tab1[names_obj_table1[i]]:=list()
tab1[names_obj_table1[i]]:=listEl[i]
}
w:=WOpen("size=400,300")# создаем окно размером 300 на
400 пиксел.
Font("Times New Roman,16") # устанавливаем шрифт
WWrite("###################") # пишем в графическое
окно
# Функция key генерирует
ключи
every keY:=key(tab1) do
{
WWrite("КЛЮЧ ",keY)
32
every eL:=Tab1[keY] do every WWrite(!eL)
WWrite("###################")
}
WDone()
end
Выход:
###################
КЛЮЧ овощи
капуста
картофель
лук
###################
КЛЮЧ фрукты
яблоки
виноград
груши
###################
Пример
из книги Thomas'а W. Christopher'а.
Пусть s – строка и мы хотим создать таблицу, ключом в ко-
торой будут символы, а значениямисписок их номеров в строке.
t:=table()
every i:=1 to *s & x:=s[i] do
{
/t[x]:=[]
put(t[x],i)
}
7.1. Сортировка таблиц
Для сортировки таблиц используется функция sort(t,k)".
k=1|2|3|4
Если Вы хотите отсортировать по ключам, параметр k дол-
жен быть опущен: sort(t), в противном случае сортировка произво-
дится
по значениям.
Если k=1|2, то результат сортировки представляется в виде
[[key1,val1],[key2,val2],...[keyN,valN]]
                          7. Таблицы                                        every eL:=Tab1[keY] do every WWrite(!eL)
                                                                            WWrite("###################")
      Таблицы – структуры данных, на верхнем уровне иерархии               }
представленные парой «ключ-значение». Ключ может быть лю-                  WDone()
бым неструктурированным типом данных. Значение – любым ти-                 end
пом: записью, списком, множеством.                                         Выход:
      Создание таблицы: t:=table()                                         ###################
      Присвоение ключа и значения: t[k]:=v                                 КЛЮЧ овощи
      Проверка на наличие ключа:                                           капуста
      \t[k] – утверждение успешно, если ключ k существует.                 картофель
      /t[k] – утверждение успешно, если ключ k не существует.              лук
                                                                           ###################
      Приведем пару примеров работы с таблицами.
                                                                           КЛЮЧ фрукты
      Первый пример еще и демонстрирует создание простого                  яблоки
графического интерфейса. Мы создаем графическое окно, чтобы                виноград
кириллические символы выводились в читаемом виде.                          груши
      link graphics                                                        ###################
      procedure main()
      tab1:=table()                                                        Пример из книги Thomas'а W. Christopher'а.
      names_obj_table1:=["овощи","фрукты"]                                 Пусть s – строка и мы хотим создать таблицу, ключом в ко-
      listEl:=[["капуста","картофель","лук"],["яблоки","виноград","   торой будут символы, а значениями – список их номеров в строке.
груши"]]                                                                   t:=table()
      every i:=1 to *names_obj_table1 do                                   every i:=1 to *s & x:=s[i] do
      {                                                                    {
       tab1[names_obj_table1[i]]:=list()                                    /t[x]:=[]
       tab1[names_obj_table1[i]]:=listEl[i]                                 put(t[x],i)
      }                                                                    }
      w:=WOpen("size=400,300")# создаем окно размером 300 на
400 пиксел.                                                                7.1. Сортировка таблиц
      Font("Times New Roman,16") # устанавливаем шрифт                      Для сортировки таблиц используется функция sort(t,k)".
      WWrite("###################") # пишем в графическое             k=1|2|3|4
окно                                                                        Если Вы хотите отсортировать по ключам, параметр k дол-
      # Функция key генерирует ключи                                  жен быть опущен: sort(t), в противном случае сортировка произво-
      every keY:=key(tab1) do                                         дится по значениям.
      {                                                                     Если k=1|2, то результат сортировки представляется в виде
       WWrite("КЛЮЧ ",keY)                                                  [[key1,val1],[key2,val2],...[keyN,valN]]

                                31                                                                  32