ВУЗ:
Составители:
Рубрика:
35
9. Записи
Запись в Icon'е – именованная структура, состоящая из мно-
жества полей. Записи объявляются на самом верхнем уровне, как
глобальные объекты или функции.
Объявление записи: record r(f1,f2,f3,f4,...), где r – имя записи,
f1,f2,f3,f4,... – имена полей записи.
r является и конструктом записей. Запись в любом месте
программы (очевидно, в пределах какой-либо процедуры) создает-
ся следующим образом rec:=r(a,b,c,d,...). В
данном случае a,b,c,d,...
конкретные начения полей.
Доступ к полю записи: r.f2 или r.f3. Если f3 – список, то дос-
туп к элементу списка: r.f3[i].
Но имя поля можно рассматривать как ключ таблицы
, и
тогда функционально аналогичным выражением будет r["f3"][i].
Возможно и такое выражение pole:=r[2], эквивалентное
pole:=r.f2 и pole:=r["f2"]
Очевидным образом к записям применяются уже знакомые
нам операции (*,!,?) и функция copy.
Приведем пример
, в котором процедуре передаются значе-
ния полей записи:
record r(nb,name)
procedure main()
r1:=r(1,"JOHN")
every proc_print(!r1)
end
procedure proc_print(I)
write(I)
end
36
10. Процедуры
10.1. Вызов процедур
Наиболее общая форма вызова процедуры:
(e0)(e1,e2,...,eN), где:
e0 – выражение, вычисляющее имя процедуры, а e1,e2,...,eN
– выражения, вычисляющие фактические параметры.
Пример
invocable "proc1"
invocable "proc2"
invocable "proc3"
procedure main()
L:=["proc1","proc2","proc3"]
every i:=1 to 3 do L[i](L[i])
end
procedure proc1(X)
writes(" ",X)
end
procedure proc2(X)
writes(" ",X)
end
procedure proc3(X)
writes(" ",X)
end
Выход: proc1 proc2 proc3
procedure main()
(proc1|proc2|proc3)("O'KEY")
end
procedure proc1(X)
writes(" ",X||"&proc1")
end
9. Записи 10. Процедуры
Запись в Icon'е – именованная структура, состоящая из мно- 10.1. Вызов процедур
жества полей. Записи объявляются на самом верхнем уровне, как
Наиболее общая форма вызова процедуры:
глобальные объекты или функции.
(e0)(e1,e2,...,eN), где:
Объявление записи: record r(f1,f2,f3,f4,...), где r – имя записи,
e0 – выражение, вычисляющее имя процедуры, а e1,e2,...,eN
f1,f2,f3,f4,... – имена полей записи.
– выражения, вычисляющие фактические параметры.
r является и конструктом записей. Запись в любом месте
Пример
программы (очевидно, в пределах какой-либо процедуры) создает-
invocable "proc1"
ся следующим образом rec:=r(a,b,c,d,...). В данном случае a,b,c,d,...
invocable "proc2"
конкретные начения полей.
invocable "proc3"
Доступ к полю записи: r.f2 или r.f3. Если f3 – список, то дос-
туп к элементу списка: r.f3[i].
procedure main()
Но имя поля можно рассматривать как ключ таблицы, и
L:=["proc1","proc2","proc3"]
тогда функционально аналогичным выражением будет r["f3"][i].
every i:=1 to 3 do L[i](L[i])
Возможно и такое выражение pole:=r[2], эквивалентное
end
pole:=r.f2 и pole:=r["f2"]
Очевидным образом к записям применяются уже знакомые
procedure proc1(X)
нам операции (*,!,?) и функция copy.
writes(" ",X)
Приведем пример, в котором процедуре передаются значе-
end
ния полей записи:
record r(nb,name)
procedure proc2(X)
procedure main()
writes(" ",X)
r1:=r(1,"JOHN")
end
every proc_print(!r1)
end
procedure proc3(X)
writes(" ",X)
procedure proc_print(I)
end
write(I)
Выход: proc1 proc2 proc3
end
procedure main()
(proc1|proc2|proc3)("O'KEY")
end
procedure proc1(X)
writes(" ",X||"&proc1")
end
35 36
Страницы
- « первая
- ‹ предыдущая
- …
- 16
- 17
- 18
- 19
- 20
- …
- следующая ›
- последняя »
