ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »