Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Запись в ветви условия нескольких операторов




В соответствии с требованиями синтаксиса языка, если в ветви оператора if  требуется выполнить несколько операторов, то следует воспользоваться составным оператором:

в неполной форме:

if  ( выражение ) {
     …….
}

в полной форме:

if  ( выражение ) {
        …….
}
else {
      …….
}

-----------------------------------------------------------------------------------------

Стили оформления отступов при написании условных операторов

Существует четыре основных стиля оформления отступов при написании условных операторов. Все они имеют своей целью облегчение визуального отслеживания управляющих конструкций.

Стиль «K&R» (Кернигана и Ритчи): основной отступ состоит из 8 пробелов (или одной табуляции) на уровень, хотя чаще всего используется 4 пробела.

 

if (<cond>) {········<body>}

Стиль Олмана (по умолчанию предлагается в Microsoft Visual Studio): открывающая программная скобка располагается на новой строке с тем же отступом, что и выражение, находящееся на предшествующей строке; первое выражение внутри программных скобок располагается на новой строке с отступом, увеличенным (по выбору программиста) на любое количество пробелов или символов табуляции при условии, что это количество не изменяется на протяжении всего текста программы; последующие выражения внутри программных скобок располагаются с тем же отступом, что и первое; закрывающая программная скобка располагается с отступом, равным отступу соответствующей ей открывающей программной скобке (то есть точно под нею).

if (<cond>){········<body>}

Стиль Уайтсмитс (одного из первых компиляторов с языка С): основной отступ на уровень для скобок и блока — 8 пробелов.

if (<cond>)········{········<body>········}

Стиль GNU (используется во всех исходниках проекта GNU): отступ составляет 2 символа на уровень, скобки расположены на собственном отступе.

if (<cond>)··{····<body>··}

-----------------------------------------------------------------------------------------

Тернарная условная операция

Это единственная трехместная операция:

  выражение1?  выражение2:  выражение3

Выражение1 может иметь тип: целый, вещественный, быть указателем, ссылкой, элементом перечисления. Если выражение1 не равно 0 (имеет значение true), то вычисляется выражение2 и его значение является результатом операции. Если выражение1 равно 0 (имеет значение false), то вычисляется выражение3, и его значение является результатом операции.

(a > b)? a = 1: b = 2;

cout << ((a > b)? a = 1: b = 2) << endl;

d = (c >= 0)? c: -c;

max = a <= b? b: a; // max присваивается максимальное значение из а и b

 

Использование тернарной операции для записи условия

Использование тернарной операции позволяет записать по-другому условное выражение.

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

if ('A' <= c && c <= 'Z')

             printf("%c\n", 'a'+c-'A');

else

  printf("%c"\n, c); //6116 +(с -4116)

 

можно заменить тернарной условной операцией:

printf("%c", ('A' <= c && c <= 'Z')? ('a'+c -'A'): c);

 

Тернарная операция не обязательно должна быть единственной в выражении:

R = A + ( x > y? x: y ) * B;

R = A + ( x < y? ( a>b? c: x+c ): y ) * B;

 

Использование тернарной операции слева от знака присваивания

Тернарная операция может стоять слева от знака присваивания, если выражение2 и выражение3 являются адресными выражениями:

(a < b? a: b) = c*x+d; //значение выражения c*x+d присваивается меньшей из переменных а или  b.

 

Выражение (a < b? a: b < c? b: c) = f(x); равносильно записи:

if (a < b) {

a = f(x);

     }

else {

if (b < c) {

b = f(x);

       }

        else {

c = f(x);

             }

 

!!! Не для любого оператора if можно зап и сать тернарную операцию. Она заменяет только полную форму.

Приоритет тернарного оператора почти самый низкий среди всех операторов (ниже только у присваивания, throw и оператора «запятая»). Если это не учитывать, то возможны ошибки. Рассмотрим пример тернарного оператора с ошибкой:

F1 ( 2, 0x5a, ( F2(2, 0x5a, 1) & ~0x40 ) | (i==j)? 0x03: 0x02, 1 );

Приоритет оператора побитового 'ИЛИ' выше, поэтому условное выражение вычисляется не в том порядке, в каком планировал программист.

-----------------------------------------------------------------------------------------

Логические операции

Логика – особая наука о мышлении. Основателем ее считается древнегреческий философ Аристотель (IV в. до н. э.). Позднее она стала называться формальной логикой, и ее цель на протяжении всей истории развития – исследование того, как из одних утверждений можно выводить другие, при этом считается, что правильность рассуждения определяется только его логической формой и не зависит от конкретного содержания входящих в него рассуждений. В XIX веке благодаря усилиям английского ученого Джорджа Буля возникла наука математическая логика. Джордж Буль перенес на логику законы и правила алгебраических действий, ввел логические операции, предложил способ записи высказываний в символической форме. Алгебра логики – раздел математической логики, изучающей строение (форму, структуру) сложных высказываний и способы установления их истинности с помощью алгебраических методов.

Высказывание – повествовательное  предложение, о котором можно точно сказать, истинное оно или ложное.

Примеры высказываний: «Минск – столица Беларуси», «4 – есть четное число», «сегодня идет дождь», «Х равно 1», «я хорошо учусь».

Но «тишина!», «староста, подайте журнал!», «кто отсутствует на занятии?» – не есть высказывания. 

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

Простое высказывание – Число 6 делится на 3, обозначим его А.

Сложное высказывание: «Число 6 делится на 3, и число 6 делится на 2». Оно состоит из простого высказывания А и простого высказывания В – «Число 6 делится на 2», объединенных с помощью логической операции И: А && В.

Логическая величина: понятия, выражаемые словами истина, ложь. Через логические величины выражается истинность высказываний.

Логическая переменная: символически обозначенная логическая величина.

Логическая константа: true (истина)или false (ложь).

Логическое выражение – формула, содержащая лишь логические величины и знаки логических операций.

Отрицанием  высказывания А называется высказывание «не А» (неверно, что А), которое обозначается! A и является истинным тогда и только тогда, когда А ложно. Содержательный смысл логической операции НЕ заключается в проверке обратного условия.

Конъюнкцией  двух высказываний A и B называется высказывание «A и B» (логическое умножение), которое обозначается A && B и является истинным тогда и только тогда, когда оба высказывания истинны. Содержательный смысл логической операции И передается фразой «одновременно оба...» и заключается в совпадении условий.

Дизъюнкцией двух высказываний A и B называется высказывание «A или B» (логическое сложение), которое обозначается A || B и является ложным тогда и только тогда, когда оба высказывания ложны. Содержательный смысл логической операции ИЛИ передается фразой «хотя бы один...» и заключается в объединении условий.

Импликацией двух высказываний A и B (A => B) называется высказывание «если А, то В» (А – посылка, В – следствие), которое является ложным тогда и только тогда, когда A истинно, а В ложно. Посылка является условием, достаточным для выполнения следствия. Следствие является условием, необходимым для истинности посылки. В русском языке импликации  синонимичны выражения: « если..., то», «когда..., тогда», «коль скоро...., то». «в том случае, если А», «из А следует В», «в случае А произойдет В», «В потому, что А», «А достаточное условие для В». Высказывание  A =>B эквивалентно высказыванию! A || B.

®: Выражение, начинающееся со слов «если», «когда», «коль скоро» – основания условного высказывания. Выражения, стоящие после слов «то», «тогда» – следствия.

Эквивалентностью двух высказываний A«В называется высказывание «A тогда и только тогда когда B» (А эквивалентно В, А тождественно В, A то же самое, что B), которое является истинным тогда и только тогда, когда A и B одновременно истинны или одновременно ложны. Это сокращённая запись для выражения (!A || B) && (A ||!B).

Функция Шеффера для двух высказываний A и В – это высказывание, эквивалентное высказыванию !(A) ||!(B),которое является ложным только в случае, когда и А и В являются истинными.

Функция Вебба  для двух высказываний A и В – это высказывание, эквивалентное высказыванию !(A) &&!(B),которое является  истинным только в случае, когда и А и В являются ложными.

 

Операции алгебры логики  позволяют производить тождественные преобразования логических выражений.

Среди свойств логических операций назовем законы де Моргана, которые возможно понадобятся при построении логических высказываний:

  !(X && Y) =!X ||!Y и

  !(X || Y) =!X &&!Y

а также дистрибутивность конъюнкций и дизъюнкции относительно дизъюнкции и конъюнкции соответственно:

X && (Y || Z) =  (X && Y) || (X && Z)

X || (Y && Z) = (X || Y) && (X || Z)

 

Логические операции выполняются в С++, как и в других языках программирования, согласно таблице истинности  (см. Таблица 6.3). Операнды должны быть скалярного типа.

 

Таблица. Значения логических операций

A B А&&В А|| В !B импликация ! A || B эквивалентность (!A || B) && (A ||!B) функция Шеффера !(A) ||!(B) функция Вебба !(A) &&!(B)
0 0 0 0 1 1 1 1 1
0 1 0 1 0 1 0 1 0
1 0 0 1 1 0 0 1 0
1 1 1 1 0 1 1 0 0

Логические операции (как и операции отношения) используются при формировании логических выражений, имеющих только два значения: истина или ложь. Логические выражения наиболее часто используются вместе с операторами управления потоком вычислений – операторами ветвлений и циклов.

-----------------------------------------------------------------------------------------





Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 241 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Жизнь - это то, что с тобой происходит, пока ты строишь планы. © Джон Леннон
==> читать все изречения...

4345 - | 4114 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.