Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Секция 4 Условные Выражения и Функции




Для многих задач, компьютерные программы должны уметь для различных ситуаций использовать различные пути решения. В игровой программе, может быть необходимым определить, попадает ли скорость объекта в некоторый диапазон, или находится ли объект в заданной области экрана. Для программы управления двигателем, условием может быть описание того, открыт или закрыт клапан. Чтобы обрабатывать условия мы должны иметь средства определения истинно условие или ложно; мы нуждаемся в новом классе значений, которые в соответствии с соглашением называются БУЛЕВСКИМИ (BOOLEAN) значениями. В этой секции описываются булевские выражения, результатом выполнения которых является булевское значение и выражения, которые вычисляют значения в зависимости от булевского результата некоторого вычисления.

 

Логика и Отношения


Boolean
Operations

 

Рассмотрим следующую постановку задачи:

Компания XYZ платит всем своим сотрудникам 12$ в час. Обычный служащий работает от 20 до 65 часов в неделю. Разработайте программу, которая определяет заработную плату работника в зависимости от проработанных часов, если это число попадает в правильный диапазон.

Курсивом выделены новые условия по сравнению с примером из секции 2.3. Они подразумевают, что программа должна выполняться разными путями в зависимости от того, попадает ли число отработанных часов в допустимый диапазон или нет. Т.е. также как и люди принимают решение в зависимости от условий, программы должна выполняться в зависимости от условий.

В условиях нет ничего нового. В математике мы говорим об истинных и ложных требованиях, которые являются условиями. Например, число может быть равно, меньше чем или больше чем какое-то другое число. Если x и y числа, то эти три требования относительно x и y могут быть записаны следующим образом

  1. x = y «x равен y»
  2. x < y «x строго меньше чем y»
  3. x > y «x строго больше чем y»

Для любой пары вещественных чисел одно из этих требований будет выполнено всегда. Если x=4, y=5, то второе утверждение истинно, а остальные ложные. Если x=5, y=4, то третье требование истинно, а другие ложные. В общем случае требование истинно для некоторых значений переменных и ложно для других.

В дополнение к определению, выполняется ли атомарное требование или нет в данной ситуации, иногда очень важно определить выполняется ли комбинация требований. Рассмотрим как мы можем скомбинировать три, приведенных выше, требования.

  1. x = y и x < y и x > y
  2. x = y или x < y или x > y
  3. x = y или x < y

Первое составное условие ложно, потому что независимо от выбранных значений для x и y, два из трех требований будут ложными. Второе составное требование, всегда истинно, независимо от значений x и y. Третье требование наиболее важно из всех, потому что оно будет выполняться в некоторых случаях и не выполняться в других. Например, оно выполняется при x = 4, y = 4 и x = 4, y = 5, но ложно если x = 5 и y = 3.

Подобно математике Схема имеет «слова» для выражения истинности или лжи, атомарных требований, требований объединенных в составные требования и для выражения того истинно требование или нет. «Слово» для истины «true» и слово для лжи «false». Если требование касается отношений между двумя числами, то это обычно выражается ОПЕРАЦИЕЙ ОТНОШЕНИЯ (RELATIONAL OPERATION), например =, < и >.

Перевод трех математических условий приведенных выше, осуществляется по хорошо известному нам шаблону записи: открывающаяся круглая скобка, оператор, аргументы, закрывающаяся круглая скобка:

  1. (= x y): «x равен y»
  2. (< x y): «x строго меньше чем y»
  3. (> x y): «x строго больше чем y»

 

Также мы столкнемся с операциями отношения: <= и >=.

Выражение Схемы, которое сравнивает числа, имеет результат, точно так же как и любое другое выражение Схемы. Однако результат true или false не является числом. Т.е. когда атомарное условие Схемы для двух чисел истинно, то значением выражения является true. Например:

(< 4 5) = true

Аналогично, результатом ложного условия будет false:

(= 4 5) = false

Вычисление составных условий в Схеме также естественно. Предположим, что мы хотим объединить (= x y) и (< y z), так чтобы составное условие выполнялось, только если оба атомарных условия истинны. На Схеме это будет записано следующим образом:

(and (= x y) (< y z))

Таким же образом, если мы хотим сформулировать требование, которое будет истинно, если хотя бы одно из условий истинно, то надо записать:

(or (= x y) (< y z))

И наконец, если мы записываем

(not (= x y))

то мы указываем, что выражение будет истинно, если условие не выполняется.

Результатом составных условий, также как и атомарных условий является true или false. Рассмотрим следующее составное условие:

(and (= 5 5) (< 5 6))

Оно состоит из двух атомарных условий (= 5 5) и (< 5 6). Оба условия всегда истинны, и вычислить это выражение можно следующим образом:

... = (and true true)= true

Последний шаг следует из того, что если обе части выражения and истинны, то результатом будет true. И наоборот, если одно из двух выражений ложно, то результатом будет false:

(and (= 5 5) (< 5 5))= (and true false)= false

Правила вычисления для операций or и and интуитивно понятны.

Следующие несколько разделов объяснят, почему программирование требует формулирования условий и приведут логические доводы.

Упражнение 4.1.1 Каковы результаты следующих выражений Схемы

  1. (and (> 4 3) (<= 10 100))
  2. (or (> 4 3) (= 10 100))

3. (not (= 2 3)) Solution

Упражнение 4.1.2 Вычислите

  1. (> x 3)
  2. (and (> 4 x) (> x 3))

3. (= (* x x) x)

для (a) x = 4, (b) x = 2, и (c) x = 7/2? Solution

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных