Архив метки: if

Логические операторы в С++

С++Логические операторы в С++

В языке Си результатом логической операции служит целое число,
любое целое число, не равное 0, интерпретируется как истина;

 

Пример

int a=1;
if (a-1) a++;

Логические операторы

&& — логическое И
|| — логическое ИЛИ
! — отрицание
Пример

if (a>0)&&(a<10) a++;
if (!(a>0)) a++;
if (a>0)||(a<10) a++;

Поразрядные (битовые) логические операторы:

& ( или and ),
| ( или OR ),
^ ( или XOR ),
— ( или NOT ),
<< сдвиг влево,
>> сдвиг вправо.
Пример

Пусть a=a & 127;
    Тогда,
если a=65, т.е.   11000001
и число 127 есть  01111111
В итоге будет     01000001

Если соответствующие разряды одинаковы, то в результате имеем 1, иначе имеем 0. Так работает операция «and» или логическое умножение.

Аналогично работают другие битовые логические операторы.

Пример задачи для условных операторов в С++

С++Общее задание:

Используя операторы ветвления (if и if … else), составить программу для вычисления составной (сложной) функции, имеющей различный вид на разных участках аргумента. С помощью переключателя (switch) указать на каком отрезке находится введенное с клавиатуры значение аргумента, и вывести значение функции в данной точке.
Все исходные данные, необходимые для проведения вычислений, вводить
с клавиатуры.
Функция и отрезки:

y=pow(x,2);           -2.0<=x<1.0
y=sqrt(x);             1.0<=x<2.0
y=sqrt(x-2)+sqrt(2);   2.0<=x<3.0
y=1+sqrt(x-1);         3.0<=x<=4.0

Пример решения задачи (листинг)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
void main()
{
/* номер отрезка, def – выбор по умолчанию */
 enum {def,o1,o2,o3,o4} otr;
 float x,y; 

  clrscr();
  printf("Тема: Ветвление программы \n");
  printf(" Задание: Используя оператор if, составить программу \n");
  printf("для вычисления составной функции вида: \n");
  printf("1> sqr(x)              при x от -2.0 до 1.0\n");
  printf("2> sqrt(x)             при x от  1.0 до 2.0\n");
  printf("3> y=sqrt(x-2)+sqrt(2) при x от  2.0 до 3.0\n");
  printf("4> y=1+sqrt(x-1)       при x от  3.0 до 4.0\n");
  printf("указать отрезок, где находится введенный с клавиатуры \n");
  printf("аргумент и вывести значение функции в данной точке. \n"); 

  printf("Введите x=");
  scanf("%f",&x);   printf("\n"); 

  /* Выбор отрезка */
   otr=def;
  if ((x>=-2.0) && (x<1.0))         otr=o1;
    else if ((x>=1.0) && (x<2.0))   otr=o2;
  if ((x>=2.0) && (x<3.0))          otr=o3;
  if ((x>=3.0) && (x<=4.0))         otr=o4; 

  /* Вычисление значения функции */
  switch (otr)
  {
    case o1: y=pow(x,2);           break;
    case o2: y=sqrt(x);            break;
    case o3: y=sqrt(x-2)+sqrt(2);  break;
    case o4: y=1+sqrt(x-1);        break;
    default:  printf("Число вне диапазона."); getch(); exit(1);
  }
  printf ("Промежуток %d: y= %3.2f; ",otr,y);
  getch();
}

Условные операторы в С++, ветвление программы

Использование условных операторов if и переключателя switch.

В языке С++ существуют 2 способа для ветвления программы. Это оператор if и switch.

Условный оператор if

Условный оператор используется в двух форматах: с применением и отсутствием альтернативной части (else).

Общий вид операторов if:

if (логическое условие) {действие если условие верно};

Пример логического оператора if.

if (x>=2) otr=o3;
if (x>=-2.0) otr=o1;
    else otr=o2;

 Важно:

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

  • в  языке  Си  результатом  логической  операции  служит  целое  число, любое целое число, не равное 0, интерпретируется как истина;
  • поразрядные (битовые) логические операторы: & , | , ^ ,  ~ ;
  •  логические операторы: && , || , ! ;
  • логическое  выражение после слова if обязательно должно быть в круглых скобках; выражение перед альтернативной частью (else) должно заканчиваться точкой с запятой;
  • оператор проверки на равенство обозначается двойным знаком «равно (==)», а проверка на неравенство – «восклицательный знак равно(!=)».

Условный оператор switch

Общий вид операторов switch:

switch (переменная)
{
case значение переменной: действие;
case значение переменной: действие;
…..
case значение переменной: действие;
default: действие если ни один case не подошел;
}
Пример оператора switch.

switch (otr)
  {
    case o1: y=pow(x,2);           break;
    case o2: y=sqrt(x);            break;
    case o3: y=sqrt(x-2)+sqrt(2);  break;
    case o4: y=1+sqrt(x-1);        break;
    default:  printf("Число вне диапазона."); getch(); exit(1);
  }

Работающий пример по этой теме можно посмотреть здесь.