Урок четвёртый - ветвление програмы и булевы переменные - Форум
Страница 1 из 11
Форум » Программирование » C++ » Урок четвёртый - ветвление програмы и булевы переменные
Урок четвёртый - ветвление програмы и булевы переменные
Администратор
Уровень 999
Сообщений: 2093
Дата: Понедельник, 04.06.2012, 09:42:50 | Сообщение # 1
Offline
До этого наши программы имели линейную структуру, т.е. всегда выполнялось каждое действие, независимо ни от чего. Сегодня мы рассмотрим возможности ветвления хода программы. Разберём такой пример - нам нужно найти действительные корни квадратного трёхчлена. Случаи, когда D > 0 и D = 0 мы ещё можем объединить в один, так как, по сути, корня два, но вот для D < 0 действительных корней нет и нам нужно отработать ситуацию отдельно. Сделаем так:

Code
#include <math.h> //  В этом файле определены различные
                           // математические функции, мы рассмотрим их поздней
                           // пока же мы используем только функцию для
                           // вычисления квадратного корня - sqrt
#include <stdio.h>
#include <conio.h>
void main()
{float a, b, c, D; // Объявим и введём переменные
  puts("Enter a:");
  scanf("%e", &a);
  puts("Enter b:");
  scanf("%e", &b);
  puts("Enter c:");
  scanf("%e", &c);
  D = b*b - 4*a*c;
  if(D >= 0) // Внутри конструкции if помещаем условие и если оно
         **// верно, то выполняется кусок кода заключённый в фигурные
           //скобки
  printf("D = %f\nx1 = %f\nx2 = %f\n", D, (-b+sqrt(D))/(2*a),  
         (-b-sqrt(D))/(2*a));
         }
  else // Это необязательный блок, который будет выполнен, если
               // условие не соблюдено
   puts("D < 0"); // Как видим, если необходимо выполнить лишь
                    // одну операцию, скобки можно опустить
  getch();
}

В конструкции if мы использовали условие - ">=", существует ещё - "<=", а также знаки строгого неравенства ">" и "<". Если необходимо проверить равенство двух чисел можно использовать "==", а знак "!=" даст положительный результат, если числа не равны.
Задание 1 - модифицировать программу так, чтобы она отдельно рассматривала случай, когда D = 0.
По сути операции условия возвращают логическое значение (true/false) и его можно сохранить в переменной типа bool, и использовать в дальнейшем например так

Code
#include <stdio.h>
#include <conio.h>
void main()
{int a;
  scanf("%d", &a);
  bool b = (a == 0);
  if(b)
   puts("Zero!");
  else
   puts("Something new...");
  getch();
}

Также существует несколько булевых операций, помогающих расширить возможности if.
1) (bool&&bool) - возвращает true если оба значения true, иначе false
2) (bool||bool) - возвращает true если хотя бы одно значение true, иначе false
3)(!bool) - меняет значение на противоположное, true->false, а false->true

if может принимать и значения других переменных. 0 будет считаться false, а всё остальное true

Code
(true&&true) = true
(true&&false) = false
(false&&false) = false
(true||true) = true
(true||false) = true
(false||false) = true
!true = false
!false = true

if((1==2)||(5!=6))
**
...
// Этот код будет выполняться
...
}
if(!(1==1))
**...
// А этот нет
...
}

Задание 2 - напишите тест с подсчетом балов
Подпись пользователя
Форум » Программирование » C++ » Урок четвёртый - ветвление програмы и булевы переменные
Страница 1 из 11
Поиск: