Программирование на Cи |
Содержание:
|
Для решения широкого круга задач на языке Си часто требуется сравнить те или иные величины и по результатам сравнения произвести определённые действия. Для этого существует логический оператор 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] |