Программирование на Cи





Содержание:
  • Логический оператор if
  • Знаки логических операций
  • Приложение калькулятор

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

Для решения широкого круга задач на языке Си часто требуется сравнить те или иные величины и по результатам сравнения произвести определённые действия. Для этого существует логический оператор if. Выражение с участием оператора if записывается следующим образом:
if (логическое выражение) действие если логическое выражение истина; else действие если логическое выражение фальшь.
Рассмотрим это на примере программы из предыдущего урока - решение квадратного уравнения. При дискриминанте меньшем или равном 0 решение (извлечение квадратного корня из дискриминанта невозможно), поэтому следует проверить это условие и принять соответствующие меры. Логическая запись будет выглядеть так:

if (d <= 0) printf ("\n Error"); else
{
x1 = (-b+sqrt(d))/(2*a);
printf("\nX1= %f",x1);
x2 = (-b-sqrt(d))/(2*a);
printf("\nX2= %f",x2);
}

Рассмотрим, что означает эта запись:
if (если) (d <= 0) d меньше либо равна 0, то выводим на экран сообщение Error (ошибка); иначе производим вычисление корней уравнения. Так как после оператора else можно ввести только одно действие, то для ввода нескольких действий их следует заключить в фигурные скобки.
В итоги мы получим такую программу:

#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,x1,x2,d;
clrscr();
/* Вводим с клавиатуры аргументы уравнения */
printf("Vvedi a:");
scanf("%f",&a);
printf("\nVvedi b:");
scanf("%f",&b);
printf("\nVvedi c:");
scanf("%f",&c);
/* Вычисляем дискриминант */
d = b*b-4*a*c;
printf("\nDiscriminant= %f",d);
if (d <= 0) printf ("\n Error"); else
  {
/* Вычисляем корни уравнения */
   x1 = (-b+sqrt(d))/(2*a);
   printf("\nX1= %f",x1);
   x2 = (-b-sqrt(d))/(2*a);
   printf("\nX2= %f",x2);
   }
}

Проверим программу на исполнение. Сначала введём такие аргументы, чтобы дискриминант был положительный:



Затем создадим ситуацию с ошибкой:



Мы видим, что программа исправно выполняет свои функции.

Знаки логических операций
Для записи логических выражений с Си зарезервированы следующие знаки логических операций:

< меньше;
> больше;
<= меньше или равно;
>= больше или равно;
== логическое равно;
&& логическое "И";
|| логическое "ИЛИ";
!= логическое "НЕ равно".

Если в программе нужно выполнить только истинное условие оператора if, то оператор else и выполняемые с ним действия можно опустить.


Приложение калькулятор
Для закрепления темы рассмотрим ещё одну программу с использованием оператора if - калькулятор. Для вычислений будем вводить с клавиатуры первый аргумент, затем знак операции и наконец, второй аргумент. Функция ввода данных scanf позволяет вводить подряд несколько аргументов разных типов описанных в строке форматирования и переменных функции. Данные и знак операции следует вводить без пробелов.

#include <stdio.h>
#include <math.h>
void main()
{
   float x, y, z;
   char sim;
   clrscr();
   printf("Vvedi stroku:");
   /* Вводим строку для вычислений */
   scanf("%f%c%f",&x,&sim,&y);
   /* Определяем какой знак операции введён */
   if (sim == '+') z = x + y;
   if (sim == '-') z = x - y;
   if (sim == '/') z = x / y;
   if (sim == '*') z = x * y;
   if (sim == '^') z = pow(x, y);
   printf("\n Rezultat = %f",z);
}

При определении символа (знака операции) в операторе if символ операции следует записывать в апострофах. При определении знака операции мы опускаем оператор else, так как он здесь не нужен.
Запустим программу и убедимся, что она работает правильно, при вводе различных значений и знаков:









   ©Гуков Константин Михайлович 2006 - 2013     Почта: [email protected]