Упражнение. Оценка выражения
- 11 мин
Логика принятия решений используется для установления альтернативных путей через код, где решение о том, какой путь следует следовать, основан на оценке выражения. Например, можно написать код, который выполняет один из двух путей на основе входных данных пользователя. Если пользователь вводит букву "a", код будет выполнять один блок кода. Если они вводят букву "b", код будет выполнять другой блок кода. В этом примере вы управляете путем выполнения на основе значения, назначенного строке. Код выбирает путь выполнения на основе выражения, способа вычисления этого выражения и базовой логики, используемой для определения путей.
Изучение того, как создать и оценить выражение является хорошим местом для начала.
Что такое выражение?
Выражение — это любое сочетание значений (литерала или переменной), операторов и методов, возвращающих одно значение. Инструкция представляет собой полную инструкцию в C#, а операторы состоят из одного или нескольких выражений. Например, следующая if
инструкция содержит одно выражение, возвращающее одно значение:
if (myName == "Luiz")
Возможно, вы думали, что значение, возвращаемое выражением, будет числом или, возможно, строкой. Это правда, что разработчики приложений используют различные типы выражений для различных целей. В этом случае при разработке if
инструкции выбора вы будете использовать выражение, возвращающее либоtrue
.false
Разработчики относятся к этому типу выражения как логическое выражение. Если код включает логическое выражение, возвращаемое значение всегда является одним true
или false
значением.
Логические выражения важны, так как код может использовать эти выражения для выбора блока кода для выполнения.
Существует множество различных типов операторов, которые можно использовать в логическом выражении. Например, приведенное выше if
выражение использует оператор ==
равенства, чтобы проверить, присвоено ли строковой переменной определенное значение. Выбранное оператор будет зависеть от доступных путей кода, условий, связанных с путями, и базовой логикой приложения.
Оценка равенства и неравенства
Одним из наиболее распространенных вычислений кода является проверка того, равны ли два значения. При проверке равенства вы найдите оператор ==
равенства между двумя значениями, которые проверяются. Если значения с любой стороны оператора равенства эквивалентны, то выражение вернет true
. В противном случае оно возвращает false
.
И наоборот, может потребоваться проверить, не равны ли два значения. Чтобы проверить неравенство, вы будете использовать оператор !=
неравенства между двумя значениями.
Возможно, вам интересно, почему вам нужны как операторы равенства, так и неравенства. Это станет понятно, когда вы изучите создание инструкций ветвления и начнете писать реальный код. Два оператора, выполняющие противоположные задачи, позволяют сделать код более выразительным и компактным.
Теперь пришло время подготовить среду программирования и начать написание кода, который оценивает логические выражения.
Подготовка среды программирования
Этот модуль включает практические действия, которые помогут вам в процессе создания и выполнения демонстрационного кода. Рекомендуется выполнить эти действия с помощью Visual Studio Code в качестве среды разработки. Использование Visual Studio Code для этих действий поможет вам стать более удобным написанием и выполнением кода в среде разработчика, которая используется специалистами по всему миру.
Откройте Visual Studio Code.
Для открытия Visual Studio Code можно использовать меню Windows (или эквивалентный ресурс для другой ОС).
В меню "Файл Visual Studio Code" выберите "Открыть папку".
В диалоговом окне "Открыть папку" перейдите в папку "Рабочий стол Windows".
Если у вас есть другое расположение папки, в котором хранятся проекты кода, вместо этого можно использовать это расположение папки. Для этого обучения важно иметь расположение, которое легко найти и помнить.
В диалоговом окне "Открыть папку" выберите "Выбрать папку".
Если появится диалоговое окно безопасности с запросом доверия авторам, нажмите кнопку "Да".
В меню терминала Visual Studio Code выберите новый терминал.
Обратите внимание, что в командной строке на панели терминала отображается путь к папке текущей папки. Рассмотрим пример.
C:\Users\someuser\Desktop>
Примечание.
Если вы работаете на собственном компьютере, а не в песочнице или размещенной среде, и вы выполнили другие модули Microsoft Learn в этой серии C#, возможно, вы уже создали папку проекта для примеров кода. Если это так, можно пропустить следующий шаг, который используется для создания консольного приложения в папке TestProject.
В командной строке терминала, чтобы создать консольное приложение в указанной папке, введите следующую строку:
dotnet new console -o ./CsharpProjects/TestProject
Эта команда .NET CLI использует шаблон программы .NET для создания проекта консольного приложения C# в указанном расположении папки. Команда создает папки CsharpProjects и TestProject для вас
.csproj
и использует TestProject в качестве имени файла.Если отображается сообщение о том, что файлы уже существуют, перейдите к следующим шагам. Вы повторно используете существующие файлы проекта.
В представлении EXPLORER разверните папку CsharpProjects .
Вы увидите папку TestProject и два файла, файл программы C# с именем Program.cs и файл проекта C# с именем TestProject.csproj.
В меню "Файл Visual Studio Code" выберите "Открыть папку".
В диалоговом окне "Открыть папку " выберите папку CsharpProjects и выберите "Выбрать папку".
В представлении EXPLORER разверните папку TestProject и выберите Program.cs.
Удалите существующие строки кода.
Вы будете использовать этот консольный проект C# для создания, сборки и запуска примеров кода во время этого модуля.
Закройте панель терминала.
Использование оператора равенства
Убедитесь, что на панели редактора открыт и Program.cs visual Studio Code.
Примечание.
Program.cs должно быть пустым. Если это не так, выберите и удалите все строки кода.
Введите следующий код в редактор Visual Studio Code.
Console.WriteLine("a" == "a"); Console.WriteLine("a" == "A"); Console.WriteLine(1 == 2); string myValue = "a"; Console.WriteLine(myValue == "a");
В меню "Файл Visual Studio Code" нажмите кнопку "Сохранить".
Перед созданием или выполнением кода необходимо сохранить файл Program.cs.
На панели обозревателя откройте терминал в папке TestProject, щелкните правой кнопкой мыши TestProject и выберите "Открыть в интегрированном терминале".
Откроется панель терминала. Терминал должен содержать командную строку, показывающую, что терминал открыт для расположения папки TestProject.
В командной строке терминала, чтобы запустить код, введите dotnet run и нажмите клавишу ВВОД.
Примечание.
Если появится сообщение "Не удалось найти проект для запуска", убедитесь, что в командной строке терминала отображается ожидаемое расположение папки TestProject. Например:
C:\Users\someuser\Desktop\csharpprojects\TestProject>
Вы должны увидеть следующие выходные данные.
True False False True
Улучшение проверки равенства строк с помощью встроенных вспомогательных методов строки
Возможно, вы удивлены тем, что выходные Console.WriteLine("a" == "A");
данные строкиfalse
. При сравнении строк имеет значение регистр.
Кроме того, примите во внимание следующую строку кода:
Console.WriteLine("a" == "a ");
Здесь вы добавили пробел в конце строки. Это выражение также будет выводить false
.
В некоторых случаях наличие пробела до или после текста может быть совершенно приемлемым. Тем не менее, если вам нужно принять совпадение, которое не является точным, вы можете "массаж" данных сначала. "Массировка" данных означает, что вы выполняете некоторую очистку перед сравнением равенства.
Например, рассмотрим ситуацию, когда вы собираете входные данные пользователя в цикле. После ввода каждого значения можно предоставить пользователю запрос, чтобы определить, хотите ли они продолжить, например Do you want to continue (Y/N)?
. Если пользователь хочет продолжить, он, вероятно, введет либо y
Y
. Вы хотите, чтобы код интерпретировал оба значения одинаково, хотя y
и не эквивалентен Y
.
Прежде чем проверять два строковых значения для равенства, особенно если одно или оба значения были введены пользователем, необходимо:
- Убедитесь, что обе строки состоят только из прописных или только из строчных букв, используя вспомогательный метод
ToUpper()
для значений обоих строк. - Удалите все начальные или конечные пробелы с помощью вспомогательного метода в любом строковом
Trim()
значении.
Вы можете улучшить предыдущую проверку равенства, связав эти два вспомогательных метода по обоим значениям, как показано в следующем описании кода:
Замените код в редакторе Visual Studio Code следующим кодом:
string value1 = " a"; string value2 = "A "; Console.WriteLine(value1.Trim().ToLower() == value2.Trim().ToLower());
Сохраните файл кода и используйте Visual Studio Code для запуска кода.
Обратите внимание, что при запуске кода на этот раз он выводит значение True.
Использование оператора неравенства
Используйте оператор комментария для строки
//
, чтобы закомментировать весь код из предыдущего шага.Введите следующий код в редактор Visual Studio Code.
Console.WriteLine("a" != "a"); Console.WriteLine("a" != "A"); Console.WriteLine(1 != 2); string myValue = "a"; Console.WriteLine(myValue != "a");
Сохраните файл кода и используйте Visual Studio Code для запуска кода.
Вы должны увидеть следующие выходные данные.
False True True False
Как ожидается, результат при использовании оператора неравенства является противоположностью того, что вы видели при использовании оператора равенства. Это означает, что код будет ветвиться в противоположном порядке, что может быть именно тем, что вы хотите.
Вычисление сравнений
При работе с числовыми типами данных может потребоваться определить, имеет ли значение больше или меньше другого значения. Используйте следующие операторы для выполнения этих типов сравнений:
- Больше:
>
- Меньше:
<
- Больше или равно:
>=
- Меньше или равно:
<=
Естественно, операторы==
, используемые для сравнения строковых значений выше, !=
также будут работать при сравнении числовых типов данных.
Использование операторов сравнения
Используйте оператор
//
строковый комментарий, чтобы закомментировать весь код из предыдущей задачи.Введите следующий код в редактор Visual Studio Code.
Console.WriteLine(1 > 2); Console.WriteLine(1 < 2); Console.WriteLine(1 >= 1); Console.WriteLine(1 <= 1);
Сохраните файл кода, а затем используйте Visual Studio Code для сборки и запуска кода.
Должен появиться следующий результат:
False True True True
Методы, возвращающие логическое значение
Некоторые методы возвращают логическое значение (true
или false
). В следующем упражнении вы будете использовать встроенный метод String
класса, чтобы определить, содержит ли более крупная строка определенное слово или фраза, которая имеет важное значение для приложения.
Примечание.
Некоторые типы данных имеют методы, выполняющие полезные служебные задачи. Тип String
данных имеет много из них. Некоторые возвращают логическое значение, включая Contains()
, StartsWith()
и EndsWith()
. Дополнительные сведения о них можно узнать в модуле "Обработка буквенно-цифровых данных с помощью методов класса String в C#" Microsoft Learn.
Использование метода, возвращающего логическое значение
Используйте оператор комментария для строки
//
, чтобы закомментировать весь код из предыдущего шага.Введите следующий код в редактор Visual Studio Code.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(pangram.Contains("fox")); Console.WriteLine(pangram.Contains("cow"));
Сохраните файл кода, а затем используйте Visual Studio Code для сборки и запуска кода.
Вы должны увидеть следующие выходные данные.
True False
Что такое логическое отрицание?
Термин "Логическое отрицание" относится к унарному оператору !
отрицания. Некоторые люди называют этот оператор "не оператором". Когда оператор помещается !
перед условным выражением (или любым кодом, который оценивается true
либо), false
он заставляет код отменить его оценку операнда. При применении логического отрицания оценка производится true
, если операнд оценивается false
и false
, если операнд оценивается true
.
Ниже приведен пример, который поможет вам увидеть связь между этими идеями. Следующие две строки кода создают одинаковый результат. Вторая строка более компактна.
// These two lines of code will create the same output
Console.WriteLine(pangram.Contains("fox") == false);
Console.WriteLine(!pangram.Contains("fox"));
Использование оператора логического отрицания
Используйте оператор комментария для строки
//
, чтобы закомментировать весь код из предыдущего шага.Введите следующий код в редактор Visual Studio Code.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(!pangram.Contains("fox")); Console.WriteLine(!pangram.Contains("cow"));
Сохраните файл кода, а затем используйте Visual Studio Code для сборки и запуска кода.
Вы должны увидеть следующие выходные данные.
False True
Оператор неравенства и логическое отрицание
Оператор !=
неравенства включает !
символ, но не следует путать с логическим отрицанием. Оператор неравенства возвращается true
, если его операнды не равны, и возвращает false
, если операнды равны. Для операндов встроенных типов выражение x != y
создает тот же результат, что и выражение !(x == y)
(пример логического отрицания).
В следующем примере кода показано использование !=
оператора:
int a = 7;
int b = 6;
Console.WriteLine(a != b); // output: True
string s1 = "Hello";
string s2 = "Hello";
Console.WriteLine(s1 != s2); // output: False
Кратко
На данный момент вы должны знать о вычислении логических выражений следующее:
- Существует множество различных типов выражений, которые при вычислении дают
true
илиfalse
. - Для оценки равенства используется оператор
==
. - Для оценки равенства строк необходимо рассмотреть возможность того, что строки имеют разные регистры и начальные или конечные пробелы. В зависимости от ситуации используйте вспомогательные методы
ToLower()
илиToUpper()
и вспомогательный методTrim()
, чтобы повысить вероятность определения равенства двух строк. - Для оценки неравенства используется оператор
!=
. - Для оценки того, что одно значение больше или меньше другого, и схожих операций используются операторы сравнения, такие как
>
,<
,>=
и<=
. - Если метод возвращает логическое значение, его можно использовать в качестве логического выражения.
- Используйте оператор логического отрицания
!
для вычисления значения, противоположного данному выражению.