В этом случае плата за
В этом случае плата за оператора не является функцией ни одного из трех измерений. Это наиболее точно может быть выражено в виде "логического расчета"; т.е. функции, комбинирующей логику с арифметикой:
: ?ПОМОЩЬ ( плата-за-прямой-вызов -- суммарная-плата) ОПЕРАТОР? IF .90 + THEN ;
(Но помните, такая плата относится только к первой минуте.)
Это дает нам упрощенную таблицу, показанную на рисунке 2-8, и большую степень использования арифметических выражений.
Рис.2-8. Таблица решений без изображения вмешательства оператора.
+-----------------|-----------------|-----------------+ | ПОЛНЫЙ ТАРИФ | СРЕДНИЙ ТАРИФ | НИЗКИЙ ТАРИФ | |-----------------|-----------------|-----------------|
ПЛАТА ЗА СОЕДИНЕНИЕ
| | | | 1-я | .30 | .22 | .12 | минута | | | | |-----------------|-----------------|-----------------| Дополн. | | | | минута | .20 | .15 | .09 | | | | |
ПЛЮС ПЛАТА ЗА РАССТОЯНИЕ
| | | | | .12/100миль | .10/100миль | .06/100миль | +-----------------+-----------------+-----------------+
Давайте вернемся к нашему определению "ПО-МИНУТНЫЙ-ТАРИФ":
: ПО-МИНУТНЫЙ-ТАРИФ ( -- плата-за-минуту) ПЛАТА-ЗА-СОЕДИНЕНИЕ ПЛАТА-ЗА-РАССТОЯНИЕ + ;
Углубимся в правила вычисления платы за соединение и платы за расстояние.
Плата за соединение зависит от того, первая идет минута или последующая. Поскольку имеется два вида по-минутной оплаты, быть может, было бы проще переписать ПО-МИНУТНЫЙ-ТАРИФ как два разных слова.
Давайте положим, что мы построим компонент, который получает соответствующие величины из таблицы. Слово 1МИНУТА будет давать плату за первую минуту; +МИНУТЫ - за каждую дополнительную. Работа обоих слов будет зависеть от времени дня для получения полного, среднего или низкого тарифа.
Теперь мы можем определить пару слов для замены одного слова ПО-МИНУТНЫЙ-ТАРИФ:
: ПЕРВАЯ ( -- плата) 1МИНУТА ?ПОМОЩЬ ПЛАТА-ЗА-РАССТОЯНИЕ + ; : ЗА-ДОПОЛНИТЕЛЬНУЮ ( -- плата) +МИНУТЫ ПЛАТА-ЗА-РАССТОЯНИЕ + ;
Каково правило для платы за расстояние? Оно очень простое.
Содержание Назад Вперед