Программирование на 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     Почта: juvel@mail.ru