Денотационная семантика команд ввода-вывода. | MetodPro.ru

Реклама на сайте

Денотационная семантика команд ввода-вывода.


46. Денотационная семантика команд ввода-вывода.
Команды read и  write взаимодействуют с объектами вне программы  - файлами ввода и вывода. Файлы смоделированы последовательностями целых чисел.
Новые семантические области:
• Input = Integer* (поток ввода)
• Output = Integer* (поток вывода)
На каждом шаге вычислений значения, находящиеся в Input, могут влиять на результат.
Смысл программы: meaning :: Program -> (Input -> Output)
Состояние программы: State:: Store x Input x Output
Семантическая функция: execute:: Command x Input x Output
Вспомогательные функции:
head: Integer* -> Integer
tail: Integer* -> Integer*
null: Integer* -> Boolean
affix: Integer* -> Integer -> Integer*
affix xs x = xs++[x]
Большинство функций аналогичны предыдущим. Изменились:
meaning [C]inp  =  outp
  where
   (sto, inp’, outp) = execute [C](emptyStore, inp, [])
execute[read I] (sto, inp, outp) =  if null inp then error else (updateSto(sto,I,int(head(inp))), tail(inp), outp)
execute[write E] (sto, inp, outp)  =  (sto, inp, affix (outp, val))
    where
           int(val) = evaluate[E] sto
Для реализации денотационной семантики имеется 2 подхода:
1 Ввод-вывод можно выполнять как побочный эффект.
2 Потоки можно реализовать ленивыми списками.



Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем