Лекции. Основные понятия и определения
Скачать 1.94 Mb.
|
4.3. Операторы сравненияРезультат выполнения любого оператора сравнения – логическое значение (true|false), операндами в общем случае являются арифметические выражения. Для операторов используются общепринятые математические обозначения. Там, где действие оператора неочевидно, в скобках приведено пояснение. Ниже приведен их приоритет. C Basic < <= > >= < <= > >= = <> (не равно) == (равно) != (не равно) Замечание. Операторы, состоящие из двух и более символов, называют составными, пробелы внутри них недопустимы. Пример. 5<3 → false 5*5>=5+20 → true Замечания. 1. В языке Basic сравнения, подобные приведенному в примере, называют числовыми. Допустимо также сравнение строк. Сравнение проводится посимвольно слева направо в соответствии с кодировкой символов. В кодировке Windows русские и латинские буквы упорядочены по алфавиту, причем заглавные буквы "меньше" строчных. Пример. "А" < "а" → True "Ф" < "ф" → True "Я" < "а" → True Если строки имеют разную длину, то более короткая дополняется справа пробелами. Пример. "Алекс" < "Александр" → True "Павлов Иван" = "Павлов И.В." → False 2. В языке C сравнение строк выполняется с помощью специальных функций, рассматриваемых в последующих разделах. 4.4. Логические операторыОперандами для них являются логические значения, результат вычисления выражения также логическое значение. Basic C Not → Не, логическое отрицание ← ! And, AndAlso → И, логическое умножение, конъюнкция ← && Or, OrElse → Или, логическое сложение, дизъюнкция ← || Xor → исключающее Или (не эквивалентность) ← != Eqv → эквивалентность ← == Imp → импликация (включение) ← нет Замечание 1. В наших версиях языка Basic операторы Eqv и Imp не поддерживаются. Новые операторы AndAlso и OrElse отличаются от операторов And и Or соответственно тем, что, если значение результата уже определено значением операнда 1, то значение операнда 2 не вычисляется, для последних значение операнда 2 вычисляется всегда. То есть, если А в выражении А AndAlso В принимает значение False, то значение В не вычисляется, и наоборот, если А в выражении А OrElse В принимает значение True, то значение В не вычисляется. В языке C операторы && и || работают, как операторы AndAlso и OrElse соответственно. Эти свойства операторов позволяют программировать выражения, в которых вычисления 2-го операнда приводит к ошибке. Пример. i Если массив x содержит n-1 элемент, то при i=n значение x(n) лежит за пределами отведенной под массив x памяти. В этом случае использовать оператор And для вычисления выражения нельзя! Замечание 2. Операторы != и == имеют равный приоритет. Они имеют как бы двойное назначение: если операнды – арифметические выражения, то они трактуются как операторы сравнения, если операнды – логические выражения, то – как логические операторы. Результат выполнения каждого оператора пояснен в таблице. Здесь A и B – выражения, которые могут принимать одно из двух значений: true|false. Любое выражение, не равное 0, трактуется как имеющее значение true, равное 0 – как false.
Примеры. Верхнее выражение – на языке Basic, нижнее – на языке C. 1) условие попадания т.M(x,y) 2)условие непопадания т.M(x,y) в 1 и 3 в треугольник квадрант круга радиуса 1 с центром x>0 And y>0 And y<1-x y в начале координат y x>0 && y>0 && y<1-x 1 Not(x*x+y*y<1 And x*y>0) 1 F !(x*x+y*y<1 && x*y>0) 0 1 x T F 0 1 x 1 3)условие попадания т.M(x,y) в заштрихованную область x*x+y*y<=1 And x<=0 And y<=0 Or y=x And x>0 x*x+y*y<=1 && x<=0 && y<=0 || y==x && x>0 4)условие кратности целых значений m Mod n = 0 m%n == 0 1>1> |