Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Условные присваивания.






     

    Условное присваивание – это обобщение идеи одновременного присваивания, которое позволяет анализировать операторы IF напрямую, подобно тому как одновременное присваивание позволяет легче анализировать операторы BEGIN. Частное значение оператора IF имеет две возможности, определяемые по < условию>. Условное присваивание показывает альтернативы вместе с логическим условием, которое определяет выбор между ними. Синтаксис условного присваивания также не является частью синтаксиса Паскаля, но может быть присоединен к оператору в комментариях.

     

    Условные присваивания могут быть определены рекурсивно по следующим правилам:

    1. Одновременное присваивание это условное присваивание.
    2. Если b логическое условие b и с – условное присваивание, то (b -> c) является условным присваиванием.
    3. Если b логическое условие b и с и d – условные присваивания, то (b -> c) | d является условным присваиванием.

    Условное присваивание, которое оказывается одновременным присваиванием C может быть записано в виде (T –> С) [T = TRUE].

     

    Условное присваивание будет в форме

    (b1 -> c1) | (b2 -> c2)| … | (bn -> cn)

    для любого количества условий (b1, b2, …, bn) и условных присваиваний (c1, c2, …, cn)

    его значением будет первое условное присваивание, скажем c1, такое что:

    i. все логические условия до bi т.е (b1, b2,. …, bi-1) имеют значение F в состоянии s, и

    ii. Логическое условие bi имеет значение T

     

    Значение не определено для состояния s, в любом из следующих случаев:

    i. Ни одно из логических условий b1, b2,. …, bn не принимает значения T в s;

    ii. Первое логическое выражение, которое не принимает значение F не определено на s.

    iii. условное присваивание, выбранное логическим выражением, не определено на s.

     

    Например, оператор IF

    IF V1 < = V2

    THEN

    V1: =’2’

    ELSE

    BEGIN

    V1: = V2;

    V2: = ‘A’

    END

    имеет условное присваивание:

    (V1 < = V2 - > V1: = ‘2’) | (T -> V1, V2: = V2, ‘A’)

    выражая знание, что для начального состояния s при V1 < = V2 (s) = T, результат описывается одновременным присваиванием:

    V1: = ‘2’

    если V1 < = V2 (s) = F, то

    V1, V2: = V2, ‘A’

    Описывает результат, потому что его условие T.

     

    С другой стороны,

    (NOT (EOLN) -> Ch: = ‘Z’) | (EOF -> Ch: = ‘A’)

    описывает выражение, которое прерывает состояние выполнения

    {INPUT·< All□ gone/, ††, R>, …}

    потому что EOLN не определено на этом состоянии, поэтому и условное присваивание не определено.

     

    Логические условия называются охранниками присваиваний, в общем виде каждый элемент состоит из защищенного присваивания.

     

    В случае, когда охранник всегда пропускает, выражение может быть записано без него, например:

    ((V1 = V3) OR (V1 < > V3) -> Ch1, V3: = ‘A, ’V1,)

    это то же самое, что одновременное присваивание:

    (Ch1, V3: = ‘A’, V1)

    Такое условное присваивание называют незащищенным, поскольку оно всегда выполняется.

     

    Например, оператор IF, рассмотренный выше может быть записан как:

    {(V1 < = V2 - > V1: = ‘2’) | (V1, V2: = V2, ‘A’)}

    IF V1 < = V2

    THEN

    V1: =’2’

    ELSE

    BEGIN

    V1: = V2;

    V2: = ‘A’

    END

    Второй компонент условного присваивания является незащищенным. Он может быть записан как:

    (V1 < = V2 - > V1: = ‘2’) | (V1 > V2 -> V1, V2: = V2, ‘A’)

    Если первый охранник принимает F, второй должен принимать T.

     

     

    Условное присваивание

    < >: = < >

    в котором не изменяются значения переменных, с защитником T

    (T -> < >: = < >)

    может быть записано просто

    ()

    и выражает значение пустого оператора, функцию эквивалентности.

    Включение такого выражения в конце условного присваивания гарантирует нам, что значение будет всегда определено. Если все предыдущие защитники вычисляются в F, значение будет I благодаря последнему выражению.

     

    Оператор IF без ELSE может быть описан условным присваиванием, как показано в следующем примере:

    {(V1 < V2 -> V1: = V2) | ()}

    IF V1 < V2

    THEN

    V1: = V2

     

    Последний элемент, пустое одновременное присваивание, важен, поскольку когда условие равно F, оператор IF имеет значение функции эквивалентности.

    (V1 < V2 -> V1: = V2)

    не является значением данного оператора IF, потому что оно утверждает, что когда значение V1 не предшествует V2, оператор IF не определен, что не соответствует действительности.

     






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.