Ćwiczenie — ocena wyrażenia
- {liczbaMinut} minut
Logika decyzyjna służy do ustanawiania alternatywnych ścieżek za pośrednictwem kodu, gdzie decyzja o ścieżce do naśladowania jest oparta na ocenie wyrażenia. Na przykład możesz napisać kod, który wykonuje jedną z dwóch ścieżek na podstawie danych wejściowych użytkownika. Jeśli użytkownik wprowadzi literę "a", kod wykona jeden blok kodu. Jeśli wprowadzają literę "b", kod wykona inny blok kodu. W tym przykładzie kontrolujesz ścieżkę wykonywania na podstawie wartości przypisanej do ciągu. Kod wybiera ścieżkę wykonywania na podstawie wyrażenia, sposobu oceniania tego wyrażenia oraz podstawowej logiki używanej do definiowania ścieżek.
Badanie sposobu konstruowania i oceniania wyrażenia jest dobrym miejscem do rozpoczęcia.
Co to jest wyrażenie?
Wyrażenie to dowolna kombinacja wartości (literałów lub zmiennych), operatorów i metod, która zwraca jedną wartość. Instrukcja jest kompletną instrukcją w języku C#, a instrukcje składają się z co najmniej jednego wyrażenia. Na przykład następująca ifinstrukcja zawiera pojedyncze wyrażenie , które zwraca pojedynczą wartość:
if (myName == "Luiz")
Być może uważasz, że wartość zwracana przez wyrażenie będzie liczbą, a może ciągiem. To prawda, że deweloperzy aplikacji używają różnych typów wyrażeń do różnych celów. W takim przypadku podczas tworzenia instrukcji wyboru użyjesz wyrażenia zwracającego iftrue wartość lub false. Deweloperzy nazywają to wyrażenie tego typu wyrażeniem jako wyrażenie logiczne. Gdy kod zawiera wyrażenie logiczne, wartość zwracana jest zawsze pojedyncza true lub false wartość.
Wyrażenia logiczne są ważne, ponieważ kod może użyć tych wyrażeń, aby zdecydować, który blok kodu ma zostać wykonany.
Istnieje wiele różnych typów operatorów, których można użyć w wyrażeniu logicznym. Na przykład w powyższej if instrukcji użyto operatora == równości, aby sprawdzić, czy zmienna typu string ma przypisaną określoną wartość. Wybrany operator będzie zależeć od dostępnych ścieżek kodu, warunków skojarzonych ze ścieżkami i podstawowej logiki aplikacji.
Ocenianie równości i nierówności
Jedną z najczęstszych ocen kodu jest sprawdzenie, czy dwie wartości są równe. Podczas sprawdzania równości znajdź operator == równości między dwiema sprawdzanymi wartościami. Jeśli wartości po obu stronach operatora równości są równoważne, wyrażenie zwróci truewartość . W przeciwnym razie zwróci wartość false.
Z drugiej strony może być konieczne sprawdzenie, czy dwie wartości nie są równe. Aby sprawdzić nierówności, należy użyć operatora != nierówności między dwiema wartościami.
Możesz się zastanawiać, dlaczego potrzebujesz operatorów równości i nierówności. Powód stanie się bardziej zrozumiały, gdy dowiesz się, jak tworzyć instrukcje rozgałęzień, i zaczniesz pisać kod do rzeczywistych zastosowań. Dwa operatory, które wykonują przeciwne zadania, zwiększają wszechstronność i zwięzłość.
Teraz nadszedł czas, aby przygotować środowisko kodowania i rozpocząć pisanie kodu, który ocenia wyrażenia logiczne.
Przygotowywanie środowiska kodowania
Ten moduł zawiera praktyczne działania, które prowadzą Cię przez proces tworzenia i uruchamiania kodu demonstracyjnego. Zachęcamy do wykonania tych działań przy użyciu programu Visual Studio Code jako środowiska programistycznego. Korzystanie z programu Visual Studio Code dla tych działań pomoże Ci lepiej pisać i uruchamiać kod w środowisku deweloperów używanym przez specjalistów na całym świecie.
Otwórz Visual Studio Code.
Aby otworzyć program Visual Studio Code, możesz użyć menu Start systemu Windows (lub równoważnego zasobu dla innego systemu operacyjnego).
W menu Plik programu Visual Studio Code wybierz pozycję Otwórz folder.
W oknie dialogowym Otwieranie folderu przejdź do folderu Pulpit systemu Windows.
Jeśli masz inną lokalizację folderu, w której są utrzymywane projekty kodu, możesz zamiast tego użyć tej lokalizacji folderu. Na potrzeby tego szkolenia ważne jest, aby mieć lokalizację, która jest łatwa do zlokalizowania i zapamiętania.
W oknie dialogowym Otwieranie folderu wybierz pozycję Wybierz folder.
Jeśli zostanie wyświetlone okno dialogowe zabezpieczeń z pytaniem, czy ufasz autorom, wybierz pozycję Tak.
W menu Terminal programu Visual Studio Code wybierz pozycję Nowy terminal.
Zwróć uwagę, że wiersz polecenia w panelu Terminal wyświetla ścieżkę folderu dla bieżącego folderu. Na przykład:
C:\Users\someuser\Desktop>Uwaga
Jeśli pracujesz na własnym komputerze, a nie w piaskownicy lub w środowisku hostowanym i ukończono inne moduły Microsoft Learn w tej serii języka C#, być może utworzono już folder projektu dla przykładów kodu. Jeśli tak jest, możesz pominąć następny krok, który służy do tworzenia aplikacji konsolowej w folderze TestProject.
W wierszu polecenia terminalu, aby utworzyć nową aplikację konsolową w określonym folderze, wprowadź następujący monit:
dotnet new console -o ./CsharpProjects/TestProjectTo polecenie interfejsu wiersza polecenia platformy .NET używa szablonu programu .NET do utworzenia nowego projektu aplikacji konsolowej języka C# w określonej lokalizacji folderu. Polecenie tworzy foldery CsharpProjects i TestProject i używa elementu TestProject jako nazwy
.csprojpliku.Jeśli zostanie wyświetlony komunikat informujący o tym, że pliki już istnieją, przejdź do następnych kroków. Użyjesz ponownie istniejących plików projektu.
W widoku EKSPLORATOR rozwiń folder CsharpProjects .
Powinien zostać wyświetlony folder TestProject i dwa pliki, plik programu C# o nazwie Program.cs i plik projektu C# o nazwie TestProject.csproj.
W menu Plik programu Visual Studio Code wybierz pozycję Otwórz folder.
W oknie dialogowym Otwieranie folderu wybierz folder CsharpProjects , a następnie wybierz pozycję Wybierz folder.
W widoku EKSPLORATOR rozwiń folder TestProject, a następnie wybierz pozycję Program.cs.
Usuń istniejące wiersze kodu.
Ten projekt konsoli języka C# będzie używany do tworzenia, kompilowania i uruchamiania przykładów kodu w tym module.
Zamknij panel Terminal.
Używanie operatora równości
Upewnij się, że program Visual Studio Code jest otwarty i Program.cs wyświetlany w panelu Edytor.
Uwaga
Program.cs powinny być puste. Jeśli tak nie jest, zaznacz i usuń wszystkie wiersze kodu.
Wpisz następujący kod w edytorze programu Visual Studio Code.
Console.WriteLine("a" == "a"); Console.WriteLine("a" == "A"); Console.WriteLine(1 == 2); string myValue = "a"; Console.WriteLine(myValue == "a");W menu Plik programu Visual Studio Code wybierz pozycję Zapisz.
Przed utworzeniem lub uruchomieniem kodu należy zapisać plik Program.cs.
W panelu EKSPLORATOR, aby otworzyć terminal w lokalizacji folderu TestProject, kliknij prawym przyciskiem myszy pozycję TestProject, a następnie wybierz polecenie Otwórz w zintegrowanym terminalu.
Zostanie otwarty panel terminalu. Terminal powinien zawierać wiersz polecenia pokazujący, że terminal jest otwarty w lokalizacji folderu TestProject.
W wierszu polecenia terminalu, aby uruchomić kod, wpisz dotnet run , a następnie naciśnij Enter.
Uwaga
Jeśli zostanie wyświetlony komunikat "Nie można odnaleźć projektu do uruchomienia", upewnij się, że w wierszu polecenia terminalu zostanie wyświetlona oczekiwana lokalizacja folderu TestProject. Na przykład:
C:\Users\someuser\Desktop\csharpprojects\TestProject>.Powinny zostać wyświetlone następujące dane wyjściowe.
True False False True
Ulepszanie sprawdzania równości ciągów przy użyciu wbudowanych metod pomocnika ciągu
Być może zdziwisz się, że wiersz Console.WriteLine("a" == "A"); zwraca wartość false. Przy porównywaniu ciągów ma znaczenie wielkość liter.
Rozważ też następujący wiersz kodu:
Console.WriteLine("a" == "a ");
W tym miejscu dodano znak spacji na końcu ciągu. To wyrażenie spowoduje również dane wyjściowe false.
W niektórych przypadkach posiadanie znaku spacji przed tekstem lub po nim może być całkowicie akceptowalne. Jeśli jednak musisz zaakceptować dopasowanie, które nie jest dokładne, możesz najpierw "masować" dane. "Masowanie" danych oznacza, że przed wykonaniem porównania pod kątem równości należy wykonać czyszczenie.
Rozważmy na przykład przypadek zbierania danych wejściowych użytkownika wewnątrz pętli. Po wprowadzeniu każdej wartości można podać użytkownikowi monit o określenie, czy chcesz kontynuować, na przykład Do you want to continue (Y/N)?. Jeśli użytkownik chce kontynuować, prawdopodobnie wprowadzi wartość lub yY. Chcesz, aby kod interpretował obie wartości w równym stopniu, mimo że y nie jest odpowiednikiem Yelementu .
Przed sprawdzeniem dwóch wartości ciągu pod kątem równości, zwłaszcza gdy jedna lub obie wartości zostały wprowadzone przez użytkownika, należy:
- Użyj metody pomocniczej
ToUpper()lubToLower()dla wartości ciągów, aby zapewnić, że oba ciągi będą zawierać wyłącznie wielkie lub małe litery. - Usuń wszystkie wiodące lub końcowe puste spacje przy użyciu metody pomocniczej
Trim()dla dowolnej wartości ciągu.
Poprzednie sprawdzanie równości można poprawić, łącząc te dwie metody pomocnicze w obu wartościach, jak pokazano na poniższej liście kodu:
Zastąp kod w edytorze programu Visual Studio Code następującym kodem:
string value1 = " a"; string value2 = "A "; Console.WriteLine(value1.Trim().ToLower() == value2.Trim().ToLower());Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Zwróć uwagę, że po uruchomieniu kodu tym razem zwraca wartość True.
Używanie operatora nierówności
Użyj operatora komentarza wiersza
//, aby oznaczyć jako komentarz cały kod z poprzedniego kroku.Wpisz następujący kod w edytorze programu Visual Studio Code.
Console.WriteLine("a" != "a"); Console.WriteLine("a" != "A"); Console.WriteLine(1 != 2); string myValue = "a"; Console.WriteLine(myValue != "a");Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Powinny zostać wyświetlone następujące dane wyjściowe.
False True True False
Jak można się spodziewać, wynik użycia operatora nierówności jest przeciwieństwem tego, co zostało wyświetlone podczas korzystania z operatora równości. Oznacza to, że kod będzie również rozgałęzić się w odwrotny sposób, co może być dokładnie tym, co chcesz.
Ocenianie porównań
Podczas pracy z typami danych liczbowych warto określić, czy wartość jest większa lub mniejsza niż inna wartość. Użyj następujących operatorów, aby wykonać te typy porównań:
- Większe niż
> - Mniejsze niż
< - Większe niż lub równe
>= - Mniejsze niż lub równe
<=
== Oczywiście operatory i != użyte do porównywania powyższych wartości ciągów również będą działać podczas porównywania typów danych liczbowych.
Używanie operatorów porównania
Użyj operatora
//komentarza wiersza, aby oznaczyć jako komentarz cały kod z poprzedniego zadania.Wpisz następujący kod w edytorze programu Visual Studio Code.
Console.WriteLine(1 > 2); Console.WriteLine(1 < 2); Console.WriteLine(1 >= 1); Console.WriteLine(1 <= 1);Zapisz plik kodu, a następnie użyj programu Visual Studio Code, aby skompilować i uruchomić kod.
Powinny zostać wyświetlone następujące dane wyjściowe:
False True True True
Metody zwracające wartość logiczną
Niektóre metody zwracają wartość logiczną (true lub false). W poniższym ćwiczeniu użyjesz wbudowanej String metody klasy, aby określić, czy większy ciąg zawiera określone słowo lub frazę znaczącą dla aplikacji.
Uwaga
Niektóre typy danych mają metody wykonujące przydatne zadania pomocnicze. Typ String danych ma wiele z nich. Kilka z nich zwraca wartość logiczną, między innymi Contains(), StartsWith() i EndsWith(). Więcej informacji o nich znajdziesz w module Microsoft Learn „Manipulowanie danymi alfanumerycznymi przy użyciu metod klasy String w języku C#”.
Używanie metody zwracającej wartość logiczną
Użyj operatora komentarza wiersza
//, aby oznaczyć jako komentarz cały kod z poprzedniego kroku.Wpisz następujący kod w edytorze programu Visual Studio Code.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(pangram.Contains("fox")); Console.WriteLine(pangram.Contains("cow"));Zapisz plik kodu, a następnie użyj programu Visual Studio Code, aby skompilować i uruchomić kod.
Powinny zostać wyświetlone następujące dane wyjściowe.
True False
Co to jest negacja logiczna?
Termin "Negacja logiczna" odnosi się do jednoargumentowego operatora !negacji . Niektórzy ludzie nazywają ten operator operatorem "not". W przypadku umieszczania ! operatora przed wyrażeniem warunkowym (lub dowolnym kodem ocenianym na true wartość lub false) kod wymusza odwrócenie jego oceny operandu. Po zastosowaniu negacji logicznej ocena generuje true wartość , jeśli argument operand zwróci false wartość , i false , jeśli operand zwróci wartość true.
Oto przykład, który może pomóc ci zobaczyć połączenie między tymi pomysłami. Następujące dwa wiersze kodu generują ten sam wynik. Drugi wiersz jest bardziej zwięzły.
// These two lines of code will create the same output
Console.WriteLine(pangram.Contains("fox") == false);
Console.WriteLine(!pangram.Contains("fox"));
Używanie operatora negacji logicznej
Użyj operatora komentarza wiersza
//, aby oznaczyć jako komentarz cały kod z poprzedniego kroku.Wpisz następujący kod w edytorze programu Visual Studio Code.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(!pangram.Contains("fox")); Console.WriteLine(!pangram.Contains("cow"));Zapisz plik kodu, a następnie użyj programu Visual Studio Code, aby skompilować i uruchomić kod.
Powinny zostać wyświetlone następujące dane wyjściowe.
False True
Operator nierówności a negacja logiczna
Operator != nierówności zawiera ! znak, ale nie należy mylić z negacją logiczną. Operator nierówności zwraca wartość true , jeśli jego operandy nie są równe, i zwraca false wartość, jeśli operandy są równe. W przypadku operandów wbudowanych typów wyrażenie generuje taki sam wynik jak wyrażenie x != y!(x == y) (przykład negacji logicznej).
Poniższy przykładowy kod demonstruje użycie != operatora:
int a = 7;
int b = 6;
Console.WriteLine(a != b); // output: True
string s1 = "Hello";
string s2 = "Hello";
Console.WriteLine(s1 != s2); // output: False
Podsumowanie
Oto główne informacje o ocenianiu wyrażeń logicznych, które przedstawiono dotychczas:
- Istnieje wiele różnych rodzajów wyrażeń, których wynikiem jest wartość
truelubfalse. - Do oceniania równości służy operator
==. - Ocena równości ciągów wymaga rozważenia możliwości, że ciągi mają inny przypadek i spacje wiodące lub końcowe. Zależnie od sytuacji używaj metod pomocniczych
ToLower()lubToUpper()oraz metody pomocniczejTrim(), aby zwiększyć prawdopodobieństwo tego, że dwa ciągi są równe. - Do oceniania nierówności służy operator
!=. - Do oceniania porównań „większe niż”, „mniejsze niż” i podobnych operacji służą operatory porównywania, takie jak
>,<,>=i<=. - Jeśli metoda zwraca wartość logiczną, może być używana jako wyrażenie logiczne.
- Używaj operatora negacji logicznej
!, aby oceniać przeciwieństwo danego wyrażenia.