ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Секция 4 Условные Выражения и ФункцииДля многих задач, компьютерные программы должны уметь для различных ситуаций использовать различные пути решения. В игровой программе, может быть необходимым определить, попадает ли скорость объекта в некоторый диапазон, или находится ли объект в заданной области экрана. Для программы управления двигателем, условием может быть описание того, открыт или закрыт клапан. Чтобы обрабатывать условия мы должны иметь средства определения истинно условие или ложно; мы нуждаемся в новом классе значений, которые в соответствии с соглашением называются БУЛЕВСКИМИ (BOOLEAN) значениями. В этой секции описываются булевские выражения, результатом выполнения которых является булевское значение и выражения, которые вычисляют значения в зависимости от булевского результата некоторого вычисления.
Логика и Отношения
Рассмотрим следующую постановку задачи: Компания XYZ платит всем своим сотрудникам 12$ в час. Обычный служащий работает от 20 до 65 часов в неделю. Разработайте программу, которая определяет заработную плату работника в зависимости от проработанных часов, если это число попадает в правильный диапазон. Курсивом выделены новые условия по сравнению с примером из секции 2.3. Они подразумевают, что программа должна выполняться разными путями в зависимости от того, попадает ли число отработанных часов в допустимый диапазон или нет. Т.е. также как и люди принимают решение в зависимости от условий, программы должна выполняться в зависимости от условий. В условиях нет ничего нового. В математике мы говорим об истинных и ложных требованиях, которые являются условиями. Например, число может быть равно, меньше чем или больше чем какое-то другое число. Если x и y числа, то эти три требования относительно x и y могут быть записаны следующим образом
Для любой пары вещественных чисел одно из этих требований будет выполнено всегда. Если x=4, y=5, то второе утверждение истинно, а остальные ложные. Если x=5, y=4, то третье требование истинно, а другие ложные. В общем случае требование истинно для некоторых значений переменных и ложно для других. В дополнение к определению, выполняется ли атомарное требование или нет в данной ситуации, иногда очень важно определить выполняется ли комбинация требований. Рассмотрим как мы можем скомбинировать три, приведенных выше, требования.
Первое составное условие ложно, потому что независимо от выбранных значений для x и y, два из трех требований будут ложными. Второе составное требование, всегда истинно, независимо от значений x и y. Третье требование наиболее важно из всех, потому что оно будет выполняться в некоторых случаях и не выполняться в других. Например, оно выполняется при x = 4, y = 4 и x = 4, y = 5, но ложно если x = 5 и y = 3. Подобно математике Схема имеет «слова» для выражения истинности или лжи, атомарных требований, требований объединенных в составные требования и для выражения того истинно требование или нет. «Слово» для истины «true» и слово для лжи «false». Если требование касается отношений между двумя числами, то это обычно выражается ОПЕРАЦИЕЙ ОТНОШЕНИЯ (RELATIONAL OPERATION), например =, < и >. Перевод трех математических условий приведенных выше, осуществляется по хорошо известному нам шаблону записи: открывающаяся круглая скобка, оператор, аргументы, закрывающаяся круглая скобка:
Также мы столкнемся с операциями отношения: <= и >=. Выражение Схемы, которое сравнивает числа, имеет результат, точно так же как и любое другое выражение Схемы. Однако результат true или false не является числом. Т.е. когда атомарное условие Схемы для двух чисел истинно, то значением выражения является true. Например: (< 4 5) = trueАналогично, результатом ложного условия будет false: (= 4 5) = falseВычисление составных условий в Схеме также естественно. Предположим, что мы хотим объединить (= 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 Каковы результаты следующих выражений Схемы
3. (not (= 2 3)) Solution Упражнение 4.1.2 Вычислите
3. (= (* x x) x) для (a) x = 4, (b) x = 2, и (c) x = 7/2? Solution
Не нашли, что искали? Воспользуйтесь поиском:
|