Oefening: een expressie evalueren
- 11 minuten
Beslissingslogica wordt gebruikt voor het instellen van alternatieve trajecten via uw code, waarbij de beslissing over welk pad moet worden gevolgd, is gebaseerd op de evaluatie van een expressie. U kunt bijvoorbeeld code schrijven waarmee een van de twee paden wordt uitgevoerd op basis van de invoer van een gebruiker. Als de gebruiker de letter a invoert, voert uw code één codeblok uit. Als ze de letter 'b' invoeren, voert uw code een ander codeblok uit. In dit voorbeeld beheert u het uitvoeringspad op basis van de waarde die is toegewezen aan een tekenreeks. Uw code selecteert een uitvoeringspad op basis van een expressie, hoe die expressie wordt geëvalueerd en de onderliggende logica die wordt gebruikt om de paden te definiëren.
Het is een goede plek om te beginnen met het maken en evalueren van een expressie.
Wat is een expressie?
Een expressie is een combinatie van waarden (letterlijke waarde of variabele), operators en methoden, die één waarde retourneren. Een instructie is een volledige instructie in C# en instructies bestaan uit een of meer expressies. De volgende ifinstructie bevat bijvoorbeeld één expressie die één waarde retourneert:
if (myName == "Luiz")
U denkt misschien dat de waarde die door een expressie wordt geretourneerd, een getal is of misschien een tekenreeks. Het is waar dat toepassingsontwikkelaars verschillende soorten expressies gebruiken voor verschillende doeleinden. In dit geval gebruikt u bij het ontwikkelen van een if selectie-instructie een expressie die een of truemeer retourneertfalse. Ontwikkelaars verwijzen naar dit type expressie als een Boole-expressie. Wanneer uw code een Boole-expressie bevat, is de retourwaarde altijd één of true één false waarde.
Booleaanse expressies zijn belangrijk omdat uw code deze expressies kan gebruiken om te bepalen welk codeblok moet worden uitgevoerd.
Er zijn veel verschillende typen operators die u kunt gebruiken binnen een Boole-expressie. In de if bovenstaande instructie wordt bijvoorbeeld de gelijkheidsoperator == gebruikt om te controleren of een tekenreeksvariabele is toegewezen aan een bepaalde waarde. De operator die u kiest, is afhankelijk van de beschikbare codepaden, de voorwaarden die zijn gekoppeld aan de paden en de onderliggende toepassingslogica.
Gelijkheid en ongelijkheid evalueren
Een van de meest voorkomende code-evaluaties is een controle om te zien of twee waarden gelijk zijn. Wanneer u controleert op gelijkheid, zoekt u de gelijkheidsoperator == tussen de twee waarden die worden gecontroleerd. Als de waarden aan beide zijden van de gelijkheidsoperator gelijkwaardig zijn, wordt de expressie geretourneerd true. Als dat niet het geval is, wordt false geretourneerd.
Omgekeerd moet u mogelijk ook controleren of twee waarden niet gelijk zijn. Als u wilt controleren op ongelijkheid, gebruikt u de ongelijkheidsoperator != tussen de twee waarden.
U vraagt zich misschien af waarom u zowel gelijkheids- als ongelijkheidsoperators nodig hebt. De reden hiervoor zal duidelijker worden naarmate u leert hoe u vertakkingsinstructies maakt en echte code gaat schrijven. Met twee operators die tegenovergestelde taken uitvoeren, kunt u expressiever en compacter zijn.
Nu is het tijd om uw codeomgeving voor te bereiden en code te schrijven waarmee Boole-expressies worden geëvalueerd.
Uw coderingsomgeving voorbereiden
Deze module bevat praktische activiteiten die u begeleiden bij het bouwen en uitvoeren van demonstratiecode. U wordt aangeraden deze activiteiten uit te voeren met Behulp van Visual Studio Code als uw ontwikkelomgeving. Het gebruik van Visual Studio Code voor deze activiteiten helpt u om comfortabeler code te schrijven en uit te voeren in een ontwikkelomgeving die wordt gebruikt door professionals wereldwijd.
Open Visual Studio Code.
U kunt de Windows-Startmenu (of een equivalente resource voor een ander besturingssysteem) gebruiken om Visual Studio Code te openen.
Selecteer Map openen in het menu Visual Studio Code-bestand.
Navigeer in het dialoogvenster Map openen naar de map Windows-bureaublad.
Als u een andere maplocatie hebt waar u codeprojecten bewaart, kunt u die maplocatie gebruiken. Voor deze training is het belangrijk om een locatie te hebben die gemakkelijk te vinden en te onthouden is.
Selecteer Map selecteren in het dialoogvenster Map openen.
Als u een beveiligingsdialoogvenster ziet waarin u wordt gevraagd of u de auteurs vertrouwt, selecteert u Ja.
Selecteer In het menu Visual Studio Code Terminal de optie Nieuwe terminal.
U ziet dat in een opdrachtprompt in het terminalvenster het mappad voor de huidige map wordt weergegeven. Bijvoorbeeld:
C:\Users\someuser\Desktop>Notitie
Als u op uw eigen pc werkt in plaats van in een sandbox of gehoste omgeving en u andere Microsoft Learn-modules in deze C#-serie hebt voltooid, hebt u mogelijk al een projectmap gemaakt voor codevoorbeelden. Als dat het geval is, kunt u de volgende stap overslaan, die wordt gebruikt om een console-app te maken in de map TestProject.
Voer bij de terminalopdrachtprompt de volgende prompt in om een nieuwe consoletoepassing in een opgegeven map te maken:
dotnet new console -o ./CsharpProjects/TestProjectDeze .NET CLI-opdracht maakt gebruik van een .NET-programmasjabloon om een nieuw C#-consoletoepassingsproject te maken op de opgegeven maplocatie. Met de opdracht worden de mappen CsharpProjects en TestProject voor u gemaakt en wordt TestProject gebruikt als de naam van uw
.csprojbestand.Als er een bericht wordt weergegeven waarin wordt aangegeven dat de bestanden al bestaan, gaat u verder met de volgende stappen. U gebruikt de bestaande projectbestanden opnieuw.
Vouw in de EXPLORER-weergave de map CsharpProjects uit .
U ziet de map TestProject en twee bestanden, een C#-programmabestand met de naam Program.cs en een C#-projectbestand met de naam TestProject.csproj.
Selecteer Map openen in het menu Visual Studio Code-bestand.
Selecteer in het dialoogvenster Map openen de map CsharpProjects en klik vervolgens op Map selecteren.
Vouw in de explorer-weergave de map TestProject uit en selecteer Program.cs.
Verwijder de bestaande coderegels.
U gebruikt dit C#-consoleproject om codevoorbeelden te maken, te bouwen en uit te voeren tijdens deze module.
Sluit het deelvenster Terminal.
De gelijkheidsoperator gebruiken
Zorg ervoor dat Visual Studio Code is geopend en Program.cs weergegeven in het deelvenster Editor.
Notitie
Program.cs moet leeg zijn. Als dat niet het is, selecteert en verwijdert u alle coderegels.
Typ de volgende code in de Visual Studio Code Editor.
Console.WriteLine("a" == "a"); Console.WriteLine("a" == "A"); Console.WriteLine(1 == 2); string myValue = "a"; Console.WriteLine(myValue == "a");Selecteer Opslaan in het menu Visual Studio Code File.
Het Program.cs-bestand moet worden opgeslagen voordat u de code bouwt of uitvoert.
Klik in het deelvenster EXPLORER om een Terminal te openen op de locatie van de map TestProject met de rechtermuisknop op TestProject en selecteer Vervolgens Openen in geïntegreerde terminal.
Er wordt een terminalvenster geopend. De Terminal moet een opdrachtprompt bevatten waarin wordt aangegeven dat de terminal is geopend voor de locatie van de map TestProject.
Typ dotnet-run bij de Terminal-opdrachtprompt en druk op Enter om uw code uit te voeren.
Notitie
Als er een bericht wordt weergegeven met de tekst 'Kan een project niet vinden om uit te voeren', controleert u of in de Terminal-opdrachtprompt de verwachte locatie van de testprojectmap wordt weergegeven. Bijvoorbeeld:
C:\Users\someuser\Desktop\csharpprojects\TestProject>De volgende uitvoer wordt weergegeven.
True False False True
De controle op gelijkheid van tekenreeksen verbeteren met behulp van de ingebouwde helpermethoden van de tekenreeks
U zult misschien verbaasd zijn dat de lijn Console.WriteLine("a" == "A"); wordt uitgevoerd false. Bij het vergelijken van tekenreeksen is het hoofdlettergebruik van belang.
Bekijk ook de volgende regel code:
Console.WriteLine("a" == "a ");
Hier hebt u een spatieteken toegevoegd aan het einde van de tekenreeks. Deze expressie wordt ook uitgevoerd false.
In sommige gevallen is het mogelijk dat een spatie voor of na de tekst perfect acceptabel is. Als u echter een overeenkomst wilt accepteren die niet exact is, kunt u eerst de gegevens 'masseren'. 'Massaging' van de gegevens betekent dat u wat opschoning uitvoert voordat u een vergelijking voor gelijkheid uitvoert.
Denk bijvoorbeeld aan het geval wanneer u gebruikersinvoer in een lus verzamelt. Nadat elke waarde is ingevoerd, kunt u de gebruiker een prompt geven om te bepalen of ze willen doorgaan, zoals Do you want to continue (Y/N)?. Als de gebruiker door wil gaan, wordt deze waarschijnlijk ingevoerd y of Y. U wilt dat uw code beide waarden gelijk interpreteert, ook al y is dit niet gelijk aan Y.
Voordat u twee tekenreekswaarden controleert op gelijkheid, met name wanneer een of beide waarden door een gebruiker zijn ingevoerd, moet u het volgende doen:
- Zorg ervoor dat beide tekenreeksen helemaal in hoofdletters of kleine letters zijn met behulp de Help-methode
ToUpper()ofToLower()voor een willekeurige tekenreekswaarde. - Verwijder eventuele voorloop- of volgspaties met behulp van de
Trim()helpermethode voor een tekenreekswaarde.
U kunt de vorige gelijkheidscontrole verbeteren door deze twee helpermethoden op beide waarden te koppelen, zoals wordt weergegeven in de volgende codevermelding:
Vervang de code in de Visual Studio Code Editor door de volgende code:
string value1 = " a"; string value2 = "A "; Console.WriteLine(value1.Trim().ToLower() == value2.Trim().ToLower());Sla uw codebestand op en gebruik Visual Studio Code om uw code uit te voeren.
U ziet dat wanneer u de code deze keer uitvoert, waar wordt uitgevoerd.
De ongelijkheidsoperator gebruiken
Gebruik de operator voor commentaar
//om alle code uit de vorige stap uit te sluiten.Typ de volgende code in de Visual Studio Code Editor.
Console.WriteLine("a" != "a"); Console.WriteLine("a" != "A"); Console.WriteLine(1 != 2); string myValue = "a"; Console.WriteLine(myValue != "a");Sla uw codebestand op en gebruik Visual Studio Code om uw code uit te voeren.
De volgende uitvoer wordt weergegeven.
False True True False
Zoals u zou verwachten, is het resultaat bij het gebruik van de ongelijkheidsoperator het tegenovergestelde van wat u hebt gezien bij het gebruik van de gelijkheidsoperator. Dat betekent dat uw code ook op de tegenovergestelde manier vertakt, wat precies kan zijn wat u wilt.
Vergelijkingen evalueren
Wanneer u met numerieke gegevenstypen werkt, kunt u bepalen of een waarde groter of kleiner is dan een andere waarde. Gebruik de volgende operators om deze typen vergelijkingen uit te voeren:
- Groter dan
> - Kleiner dan
< - Groter dan of gelijk aan
>= - Kleiner dan of gelijk aan
<=
De operators == die u hierboven hebt gebruikt om tekenreekswaarden te vergelijken, != werken natuurlijk ook bij het vergelijken van numerieke gegevenstypen.
De vergelijkingsoperatoren gebruiken
Gebruik de operator
//voor regelopmerking om alle code uit de vorige taak als commentaar te geven.Typ de volgende code in de Visual Studio Code Editor.
Console.WriteLine(1 > 2); Console.WriteLine(1 < 2); Console.WriteLine(1 >= 1); Console.WriteLine(1 <= 1);Sla uw codebestand op en gebruik Vervolgens Visual Studio Code om uw code te bouwen en uit te voeren.
U moet de volgende uitvoer zien:
False True True True
Methoden die een Booleaanse waarde retourneren
Sommige methoden retourneren een Booleaanse waarde (true of false). In de volgende oefening gebruikt u een ingebouwde methode van de String klasse om te bepalen of een grotere tekenreeks een specifiek woord of een bepaalde woordgroep bevat die van belang is voor uw toepassing.
Notitie
Sommige gegevenstypen hebben methoden waarmee handige hulptaken kunnen worden uitgevoerd. Het String gegevenstype heeft veel van deze. Diverse methoden retourneren een Booleaanse waarde, waaronder Contains(), StartsWith() en EndsWith(). U vindt meer informatie over deze methoden in de Microsoft Learn-module Manipulate alphanumeric data using String class methods in C# (Alfanumerieke gegevens manipuleren met methoden voor de tekenreeksklasse in C#).
Een methode gebruiken die een Booleaanse waarde retourneert
Gebruik de operator voor commentaar
//om alle code uit de vorige stap uit te sluiten.Typ de volgende code in de Visual Studio Code Editor.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(pangram.Contains("fox")); Console.WriteLine(pangram.Contains("cow"));Sla uw codebestand op en gebruik Vervolgens Visual Studio Code om uw code te bouwen en uit te voeren.
De volgende uitvoer wordt weergegeven.
True False
Wat is logische negatie?
De term 'Logische negatie' verwijst naar de unaire negatie-operator !. Sommige mensen noemen deze operator de 'not operator'. Wanneer u de ! operator vóór een voorwaardelijke expressie plaatst (of code die wordt geëvalueerd op een of truefalse), dwingt u de code af om de evaluatie van de operand om te draaien. Wanneer logische negatie wordt toegepast, produceert true de evaluatie , als de operand resulteert false in , en false , als de operand resulteert in true.
Hier volgt een voorbeeld waarmee u de verbinding tussen deze ideeën kunt zien. De volgende twee regels code produceren hetzelfde resultaat. De tweede regel is compacter.
// These two lines of code will create the same output
Console.WriteLine(pangram.Contains("fox") == false);
Console.WriteLine(!pangram.Contains("fox"));
De logische negatie-operator gebruiken
Gebruik de operator voor commentaar
//om alle code uit de vorige stap uit te sluiten.Typ de volgende code in de Visual Studio Code Editor.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(!pangram.Contains("fox")); Console.WriteLine(!pangram.Contains("cow"));Sla uw codebestand op en gebruik Vervolgens Visual Studio Code om uw code te bouwen en uit te voeren.
De volgende uitvoer wordt weergegeven.
False True
Ongelijkheidsoperator versus logische negatie
De ongelijkheidsoperator != bevat een ! teken, maar moet niet worden verward met logische negatie. De ongelijkheidsoperator retourneert true als de operanden niet gelijk zijn en retourneert false als de operanden gelijk zijn. Voor de operanden van de ingebouwde typen produceert de expressie x != y hetzelfde resultaat als de expressie !(x == y) (een voorbeeld van logische negatie).
In het volgende codevoorbeeld ziet u het gebruik van de != operator:
int a = 7;
int b = 6;
Console.WriteLine(a != b); // output: True
string s1 = "Hello";
string s2 = "Hello";
Console.WriteLine(s1 != s2); // output: False
Samenvatting
Dit zijn de belangrijkste punten die u hebt geleerd over de evaluatie van Booleaanse expressies:
- Er zijn veel verschillende typen expressies waarmee u
trueoffalsekunt evalueren. - Evalueer de gelijkheid met behulp van de operator
==. - Voor het evalueren van gelijkheid van tekenreeksen moet u rekening houden met de mogelijkheid dat de tekenreeksen verschillende hoofdletters en voorloop- of volgspaties hebben. Afhankelijk van de situatie gebruikt u de Help-methode
ToLower()ofToUpper()en de Help-methodeTrim()om de kans te vergroten dat twee tekenreeksen gelijk zijn. - Evalueer de ongelijkheid met behulp van de operator
!=. - Evalueer de bewerkingen groter dan, kleiner dan en gelijk aan met behulp van vergelijkingsoperators als
>,<,>=en<=. - Als een methode een Booleaanse waarde retourneert, kan deze worden gebruikt als een Booleaanse expressie.
- Gebruik de logische negatie-operator
!om het tegenovergestelde van een bepaalde expressie te evalueren.