Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Урок 6. Задачи со сложным условиемСодержание книги
Поиск на нашем сайте
Какие еще бывают условия в языке Си 10. Условия бывают простыми и достаточно сложными. Простое условие состоит из двух величин и одной операции отношения между ними (больше, больше или равно, меньше и т.д.). 11. if(25 <= v < 40) printf("Вы нам подходите\n"); 12. В принципе правила (синтаксис) языка Си допускают такую запись. Однако рассмотрим, как будет работать такое условие. 13. if(25 <= 30 < 40)... 14. Это условие компилятор вычисляет, как и всякое выражение, слева направо. Первое сравнение 15. 25 <= 30 16. дает значение "истина", т.е. 1. Вторая часть выражения выполняет сравнение с уже частично вычисленным выражением, т. е. проверяет: 17. 1 < 40 18. По счастью, это отношение тоже истинно, поэтому и все выражение истинно. Но возьмем другое значение возраста, v=10. Такие сотрудники фирме явно не подходят. Проверим, как будет вычисляться выражение. Первая часть 19. 25 <= 10 20. дает значение "ложь", т. е. 0, однако вторая часть 21. 0 < 40 22. явно истинна, и все выражение тоже получилось истинно. Результат далек от желаемого. 23. && логическое И, имеет значение "истина", 24. В качестве операндов выступают условия, составленные из отношений или других условий: 25. условие_1 && условие_2 26. И, в завершение, еще одной логической операцией является отрицание, которое применяется к одному операнду и преобразующее логическое выражение в противоположное: 27.! логическое НЕ (отрицание условия) 28. Записывается: 29.! условие 30. Используя отрицание, можно выразить одно логическое отношение через другое. Например, "x больше y" означает, что "неверно, что x меньше или равно y": 31. x > y равносильно!(x <= y) 32. Используя логические операции, можно составлять условия на принадлежность значения промежутку, или наоборот, его непринадлежность. Если значение должно попадать в промежуток, применяется связка И, а если оно не должно принадлежать - связка ИЛИ. 33. if(25 <= v && v < 40) printf("Вы нам подходите\n"); 34. и расшифровывается буквально: если возраст больше или равен 25 И возраст меньше 40. Это условие составлено из двух операций отношения и логической связки И между ними. 35. if(v < 8 || v >= 60)... 36. Порядок записи операндов условия произволен, но лучше все-таки сохранять естественную нотацию. Сравним эквивалентную запись предыдущего выражения: 37. if(60 <= v || 8 > v)... 38. Операции логического И и логического ИЛИ можно также выразить одну через другую с помощью отрицания. В последнем примере условие можно записать: 39. if(!(8 <= v && v < 60))... 40. Здесь в самых внутренних скобках записано то условие, что возраст не является уязвимым, а отрицание этого условия дает желаемый результат. Приоритет логических операций и отношений 42. В первую очередь выполняются 43. арифметические операции, затем 44. Для изменения порядка действий используются круглые скобки. 45. if(x*x+y*y<=r*r)... Задача о кирпиче 47. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x и y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия. Пусть в ячейки a, b, c, x, y введены числа. Первый вариант записи условного оператора: 48. if(x>a && y>b) printf("Кирпич пройдет\n"); 49. Однако глядя на этот кирпич и отверстие, мы-то быстро сообразим, что так кирпич не пройдет и его надо повернуть "боком". Компьютер же этого не может видеть, и ему надо подробно разъяснить, как поворачивать этот самый кирпич. Точнее, поскольку порядок ввода значений переменных заранее неизвестен, в записи условия надо рассмотреть все варианты их сочетания. Полный вариант записи условия: 50. if( 51. Скобки в записи этого условия необязательны, нужный порядок выполнения операций соблюден. Резюме 53. В этом уроке вы узнали, как записывается сложное логическое условие, познакомились с порядком выполнения логических операций. Вопросы для самопроверки 55. 1. Какие логические операции вы знаете?
Задания для самостоятельной работы к уроку 6 1. Проверить, принадлежит ли число, введенное с клавиатуры, интервалу (-5.1, 3.6). В/(Р*Р) Если ИМТ менее 18,5 то Дефицит массы тела. Введите в одной строке вес и рост (в м.) и нажмите <Enter>
|
||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 1239; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.209.100 (0.008 с.) |