Hallo en welkom. In deze lezing wil ik het hebben over
besluitvorming, in het bijzonder als uitspraken.
Dus de programmeertaal c biedt
een algemene besluitvormingsmogelijkheid in de vorm van een if-statement.
We weten welke uitspraken er tot nu toe zijn.
Dus nu gaan we er gewoon een trefwoord voor toevoegen en het ook tussen haakjes plaatsen.
Dus hoe het eruit ziet is zoiets als dit.
Als trefwoord en dan tussen haakjes links en rechts heb je iets
dat een uitdrukking wordt genoemd.
We weten wat uitdrukkingen zijn en wat het verschil is tussen uitspraken.
Die uitdrukking moet worden geëvalueerd als waar of onwaar.
En dan heb je een programmaverklaring.
En dus is dit de meest eenvoudige soort if-statement.
Dus als je expressie zegt en dan het programma-statement, zou
je dat kunnen vervangen door een of andere
pseudocode, zoiets als als het niet regent, dan ga ik zwemmen.
En als je die pseudocode in c vertaalt, is pseudocode geen echte
syntaxis, het is
een manier om iets in code in de Engelse taal te beschrijven.
Dus als we een
if-statement in c zeggen, dan zou je alleen de voorwaarde tussen haakjes zetten, het regent niet.
En dan na de if-instructie een
enkele verklaring of meerdere verklaringen.
Als u meerdere uitspraken heeft, plaatst u deze tussen accolades.
Maar in dit
geval hebben we één verklaring. Dus in het lichaam is de if-statement ik ga zwemmen.
Het hoeft dus niet te regenen om uit te voeren dat ik ga zwemmen.
Dit is waarom het in de controlestroom zit. Je voert niet altijd uit dat ik ga zwemmen.
Het hangt af van de voorwaarde en of het waar of onwaar is.
Het kan dus zijn dat u in dit geval code overslaat. Je hebt dus geen sequentieel proces.
Dus het if-statement wordt gebruikt om de
uitvoering van een programma-statement te bepalen op basis van een
gespecificeerde voorwaarde, een beslissingsvermogen. Je gaat dus alleen zwemmen als het niet regent.
Je gaat de code alleen uitvoeren in de body van het if-statement als het niet regent.
De accolades zijn vereist voor samengestelde instructies in het if-blok.
Dus als je bijvoorbeeld zou zeggen als het niet regent, ik ga zwemmen of voordat
je gaat zwemmen, trek je je badpak aan, kleed je je
aan en dan ga je zwemmen.
Dan zou je die accolades daar moeten zetten.
En nogmaals, we zullen specifieke voorbeelden hebben om dat te laten zien.
Maar de accolades zijn niet vereist als je maar één statement hebt, ze zijn optioneel.
Je kunt ze wel of niet verstrekken.
Ik gebruik meestal de accolades in al mijn if-statements, alleen voor consistentie.
Hier is een voorbeeld van een algemene if-instructie in de programmeertaal c.
In dit geval declareren we twee variabelen, een met de naam score en een met de naam groot.
Score is 95, groot als 90.
Hier hebben we slechts een eenvoudige verklaring in het lichaam
en het heeft geen haakjes. En eigenlijk zeggen we dat als de score groter is
dan groot, de score 95 is. Dus als 95 groter is
dan 90, is het een Booleaanse uitdrukking. In dit geval wordt het geëvalueerd als waar.
Dus wat er op het scherm wordt weergegeven, is de jackpot.
En dan hebben we hetzelfde voorbeeld, behalve dat we de accolades
gebruiken omdat we meer dan één instructie in de hoofdtekst van de if-instructie hebben.
Dus in het onderste voorbeeld, als de score groter is dan
groot, hebben we een accolade naar links om het blok van de if-statement te beginnen,
en we hebben een eindaccolade om het blok van de if-statement te beëindigen.
Dat wordt verwezen naar de hoofdtekst van de if-statement.
En dus hebben we in dit geval twee uitspraken. We gaan eerst de score met 1 verhogen en
dan laten we zien dat je wint.
Dus let hier op het verschil, haakjes versus niet-haakjes.
Je kunt de haakjes nog steeds in een enkele instructie plaatsen, ze zijn optioneel.
Maar als u meerdere verklaringen heeft, zijn de haakjes vereist.
Het linker haakje geeft het begin van het blok
aan, het rechter haakje geeft het einde van het blok aan.
If-instructies zijn vrij eenvoudig als ze slechts een
enkele lift zijn. If-trefwoord haakjes links en rechts, binnen de haakjes in een expressie.
En als uitspraken ingewikkelder worden, kunnen die uitdrukkingen meerdere uitdrukkingen worden.
U kunt dus enkele van de logische operatoren gaan gebruiken die we
hebben geleerd in termen van het gebruik van de en of de of.
Dus als de score groter is dan groot en er is iets
anders vereist.
We kunnen dus meerdere vragen in één if-statement hebben of ze opsplitsen.
Maar dit is een eenvoudig voorbeeld van een
if-statement, opnieuw een vrij eenvoudige syntaxis, je
ziet geen puntkomma's aan het einde van het if-statement,
de enige aan het einde van de printfs.
Dus je hebt alleen de eind- en beginhaakjes.
Nu kunt u ook een else-clausule aan uw if-statement toevoegen.
Dit wordt ondersteund door c. Je kunt het dus een
beetje uitbreiden met een kleine toevoeging waardoor je veel meer flexibiliteit hebt.
Dus als we bijvoorbeeld zouden zeggen dat als de regen van vandaag erger
is dan de regen
van gisteren, dan neem ik mijn paraplu. Anders, als het niet zo
erg regent als gisteren, pak ik mijn jas.
Dus de rest zegt wat er gebeurt als de vraag
op het antwoord onwaar is.
Dus anders pak ik mijn jas, dan ga ik aan het werk.
Dit is dus precies het soort besluitvorming dat de if else-verklaring biedt.
Doe iets als het waar is, doe ook iets als het niet waar is.
Dus je hebt het if, trefwoord en dan tussen haakjes heb je je Booleaanse uitdrukking, iets
dat evalueert naar waar of onwaar.
Dan heb je je statement dat uitgevoerd wordt als statement één waar is.
Anders gebruikt u het trefwoord else.
Het is optioneel, u hoeft niet altijd de else op te geven. Alleen als je iets wilt doen
als de Booleaanse uitdrukking onwaar is, zeg je stelling twee.
En nogmaals, in dit geval hebben we geen haakjes in
de hoofdtekst van het if-blok of het else-blok omdat
we slechts enkele instructies hebben.
Als we meer dan één verklaring in een van deze lichamen hebben,
moeten we een haakje geven voor het begin en het einde.
Dus hier is een voorbeeld van een else-statement met een if.
In dit geval gaan we bepalen of een getal even of oneven is.
Dus we hebben onze hoofdfunctie, dat is waar we binnenkomen.
En we maken een paar variabelen, één wordt een getal genoemd om te testen, één wordt rest genoemd.
Ze zijn allebei van het type int.
We declareren ze op dezelfde regel door ze te scheiden met komma's.
We hebben ze nog niet geïnitialiseerd.
Op de volgende regel code gaan we wat uitvoer afdrukken om de gebruiker te vragen wat informatie in te voeren.
We gebruiken dan de scanf-functie.
We lezen in een geheel getal zodat we procent i of procent d kunnen doen.
En we lezen geen string of woorden.
Dus we gaan de ampersand voor de variabele plaatsen waar we de gegevens gaan opslaan.
Dus de gebruiker gaat iets invoeren om te testen.
En dan krijgen we ook de rest van wat ze bij 2 hebben ingevoerd, want dat
zal ons
vertellen of iets even of oneven is. Als je een getal door
2 kunt delen en de rest is 0, dan
is het een even getal. Anders is het vreemd.
Het belangrijkste onderdeel van dit programma is de onderkant waar we de voorwaarde gebruiken.
Tot nu toe is elke regel uitgevoerd.
Maar als we een if-statement en een voorwaarde tussen haakjes hebben, als de
rest gelijk is aan nul en
je zult merken dat je altijd de equals is equals moet gebruiken ter
vergelijking, gebruik je geen equals. Onthoud dat gelijk is voor toewijzing,
het toewijzen van gegevens aan een waarde. Is gelijk aan is voor het vergelijken van getallen.
We vergelijken een restvariabele met nul.
En als het nul is, gaan we zelfs afdrukken.
Anders, het else-sleutelwoord staat op die volgende regel, we gaan vreemd afdrukken.
U zult merken dat er geen haakjes in de if of de else staan, omdat er slechts enkele instructies zijn.
Laten we dit uitvoeren en kijken hoe het werkt in codeblokken.
Nou, hier is ons programma. Het wordt beschreven, zoals ik net zei, op precies dezelfde manier.
We gaan gewoon even of oneven afdrukken. Dus laten we doorgaan en dit bouwen.
En we willen zeker weten dat we geen fouten hebben.
Je hebt hier een paar extra regelfeeds.
Als we dit programma nu uitvoeren, kunnen we in principe uitvoer
hebben voor even of oneven.
Het gaat ons het nummer vragen dat getest moet worden. Ik ga 33 invoeren, wat vreemd is.
Het zal zeggen dat het nummer oneven is. Het is dus een vrij eenvoudig programma.
Het belangrijkste hier is dat je bepaalde code niet uitvoert.
Je gaat ofwel regel 19 uitvoeren, als de rest gelijk is aan 0.
Als dat niet het geval is, ga je eigenlijk naar regel 21. En de haakjes zijn weer optioneel.
Je kunt die daarin
plaatsen, en de IDE zal een aantal automatische aanvullingen voor je doen, wat
best aardig is.
Maar nogmaals, ik vind het meestal leuk om ze toe te voegen omdat ze gemakkelijk
zijn en het de code nog leesbaarder maakt.
Het hangt af van uw opmaakstijl.
Sommige mensen vinden het prettig om het haakje aan het begin van de else-instructie te hebben, zoals deze.
Sommigen vinden het leuk om het op de andere regel te hebben, hangt af van hoe je formaat.
En eigenlijk kan dit automatisch voor je worden gedaan in de IDE door de code te formatteren.
Maar dit werkt op dezelfde manier, en het is bijna nog gemakkelijker te lezen.
En als u ooit meer uitspraken moet doen, kunt u ze
eenvoudig toevoegen en hoeft u zich geen zorgen te maken over het toevoegen van de haakjes.
Dus ik maak er een gewoonte van om haakjes toe te voegen.
Nogmaals, het andere belangrijke hier is dat dit gelijk is aan gelijken.
Je kunt geen gelijken doen. Als je gelijk doet en het programma uitvoert, zou je
zien dat er een groot verschil is. Dus een heel
simpele if else-statement, heel erg handig. Je gaat regel 19 alleen uitvoeren als de rest oneven is.
Anders voer je regel 22 uit.
Laten we het nog even hebben over een else if-statement.
Je kunt dus ook een andere hebben. Als dat zo is, hebben we geleerd over if, hebben we geleerd over else.
U kunt extra complexe besluitvorming aan door een if-statement aan uw else-clausule toe te voegen.
Het is dus alsof je een aanvullende vraag stelt.
Je gaat niet echt iets uitvoeren als de voorwaarde in de originele if onwaar is, je
gaat een andere vraag stellen.
Dus je zegt dat als expressie 1,
je een code hebt die wordt uitgevoerd als het waar is.
Anders, anders, zeg
je als erna, wat volkomen
legaal is. Dit is een if-statement in een else-statement.
Vervolgens voer je programma twee uit. Anders voer je iets anders uit.
Dus dit breidt het if-statement uit van een logische beslissing met twee waarden naar
een logische beslissing met drie waarden.
Hier stel je twee vragen.
En als de vraag op het eerste antwoord waar is,
voer je programma-instructie één uit.
Dan stel je je tweede vraag, alleen als de eerste vraag waar was of als
de eerste vraag niet waar was.
En als dat waar is, dan voer je eigenlijk wat code uit en voer je iets anders uit.
Dus je hebt hier in wezen
drie takken, drie afzonderlijke regels code die wel of niet kunnen worden uitgevoerd.
Programmaverklaring 1, programmaverklaring 2 of programmaverklaring 3.
U kunt deze code herschrijven om een else if te gebruiken.
Op dit moment staat de if op de aparte regel, maar je kunt eigenlijk gewoon zoiets doen als
dit, als uitdrukking één iets anders doet als.
Je hoeft het niet op een aparte regel te zetten. Het kan een enkele
regel zijn en daarbuiten kun je een andere hebben.
Het enige lastige hieraan is dat else-clausule wordt uitgevoerd.
En dit is hetzelfde. Dus deze else-clausule wordt voor
alle drie uitgevoerd.
Dus het is een beetje verwarrend
in het eerste voorbeeld omdat het lijkt alsof de
tweede else alleen wordt uitgevoerd als de andere if
false is.
Maar het wordt echt uitgevoerd als de eerste expressie ook onwaar is.
Als je daar haakjes zou hebben, had je die if-statements kunnen nesten.
En de buitenste, de laatste anders zou alleen worden uitgevoerd op
basis van de vraag van het tweede als antwoord.
We gaan in op nesten als we het hebben over geneste if-instructies en geneste lussen.
Geneste if-statements zijn gewoon een if-zijde en if, en je
moet voorzichtig zijn waar je
else-clausule is, omdat de else moet overeenkomen met de laatste if-statement.
Hier is nog een voorbeeld waarbij we gaan proberen de tekenfunctie te implementeren.
We gaan ofwel negatief 10 of 1 teruggeven.
Dit is dus een evaluatie met drie niveaus.
Wat dit programma in de hoofdroutine doet, is dat we
een aantal variabelen van het type int, nummer en teken maken.
We laten de gebruiker een getal invoeren en we slaan het op in de getalvariabele.
En als het getal kleiner is dan 0, wordt het teken gelijk aan min 1.
Anders, als het getal gelijk is aan 0, wordt het 0.
Anders, als beide onwaar zijn, wordt het teken gelijk aan 1, wat betekent dat het positief is.
Dit is dus een voorbeeld van hoe de else if erg handig kan zijn.
En je kunt meerdere ifs hebben. We zien er maar één, maar we zouden er 100 kunnen hebben als we wilden.
Anders als getal gelijk is aan 2, anders als getal gelijk is aan 3, anders als getal gelijk is aan 4.
En je kunt ook zien dat de haakjes hier niet worden
gebruikt, maar de haakjes worden gebruikt als je meerdere uitspraken in de body had.
En als je if-statements gebruikt, moet
je ook opmerken dat je veel logische operatoren
en vergelijkingsoperatoren en relationele operatoren gaat gebruiken.
Dus je gebruikt hier het kleiner dan-symbool. Logische operatoren, onthoud, zijn
de ampersands. Twee van hen voor
en of, en relationele operators zijn waar u waarden vergelijkt.
Dus als je dingen doet als kleiner dan of kleiner dan gelijk aan of groter dan.
Die worden nogal eens gebruikt als je getallen gebruikt in je if-statementexpressies.
Wanneer u het ampersand en het ampersand gebruikt, stelt u eigenlijk meerdere vragen.
Als dit waar is en dit is waar of als dit waar is of.
Het is een manier om ook andere else if-statements te verminderen.
Dus je zou deze code hier kunnen herschrijven als het getal kleiner is dan 0.
En ook, als u het bord wilde
hebben, zou u het niet kunnen zoals het nu is.
Maar als je daar een ampersand en ampersand in zou kunnen zetten en je zou kunnen
zeggen dat als getal kleiner is dan 0 en het is gelijk aan
0, dan is het teken min 1 en 0. Ik bedoel, je kunt dat niet specifiek doen,
maar je kunt zien hoe je hier meerdere vragen kunt toevoegen.
We hebben dus een specifieke uitdaging waarbij we een programma gaan schrijven dat if-statements gebruikt.
Dit zijn enkele goede voorbeelden. U wilt deze voorbeelden in uw IDE plaatsen en kijken wat er gebeurt.
Maar de else if is weer een manier om meerdere vragen te stellen.
Geneste if else-instructie.
Geneste if l-instructies betekent dat u een if- of else if-statement kunt
gebruiken in een ander if- of else if-statement.
Daarom wordt het ook wel nesten genoemd.
Je kunt meerdere dingen van binnen gebruiken en je kunt dat keer op keer blijven doen.
Er is geen limiet op het aantal nesten dat je niet hebt gezien.
Dus de syntaxis ziet er ongeveer zo uit.
Als een Booleaanse uitdrukking gelijk is aan
waar, dan wil je daarbinnen en als je nesten doet, meestal de haakjes gebruiken.
Ook al hoeft dat niet voor losse uitspraken omdat het veel leesbaarder wordt.
Dus als de Booleaanse uitdrukking 1 waar is,
dan daarbinnen zeg je of Booleaanse uitdrukking 2 waar is.
Je zou eigenlijk niet uitvoeren als Booleaanse expressie 2 niet waar
was, tenzij Booleaanse expressie 1 waar was.
En dan in de body van de Booleaanse uitdrukking 2, zou je code uitvoeren als dat waar is.
Dus een voorbeeld van een geneste if-statement ziet er ongeveer zo uit.
Als het spel voorbij is, is gelijk aan 0 en dan daarbinnen als de speler die moet bewegen gelijk is aan jou, dan
heb je een afdruk.
De sleutel hier is dat er geen haakjes zijn, en
het is een beetje moeilijker om te volgen. De enige manier waarop u dit kunt volgen, is
via de inspringing, wat ook iets is dat u wilt doen als u if-statements in codeblokken schrijft.
U wilt het blok altijd laten inspringen omdat het gemakkelijker leesbaar is.
Stel je voor dat als dit niet de inspringing
had, hoe moeilijker het zou zijn om de else en de ifs op elkaar af te stemmen.
Gebruik dus inspringing maar gebruik waarschijnlijk ook haakjes, haakjes helpen om het nog leesbaarder te maken.
En onthoud dat leesbaarheid een groot probleem is, omdat leesbaarheid u helpt uw fouten veel sneller te vinden en op te lossen.
Dus in dit geval gaan we je zet die op het scherm wordt afgedrukt
alleen uitvoeren als de te zetten speler gelijk is aan u en game over gelijk is aan 0.
We gaan mijn zet die op het scherm wordt weergegeven alleen uitvoeren
als het spel gelijk is aan 0, maar de te zetten speler niet gelijk is aan u.
En tot slot, we gaan het spel alleen uitvoeren
als het spel niet gelijk is aan 0.
We hebben hier dus drie voorwaarden om
drie verschillende verklaringen af te drukken.
En je zou eigenlijk kunnen schrijven dat als het spel voorbij
is gelijk is aan 0 en ampersand ampersand, de speler die beweegt gelijk is aan u.
Maar het probleem daarmee zou zijn dat jouw zet anders misschien niet goed
is, omdat je speler nog steeds moet vergelijken met zetten.
Dus er zijn momenten waarop je de ampersands kunt gebruiken om code te vereenvoudigen,
er zijn momenten dat je dat niet kunt. In dit geval kan dat niet omdat
de eerste else zich in de geneste if bevindt.
Nesten is dus heel toepasselijk, en je zult het gebruiken,
dus raak er vertrouwd mee. Nogmaals, de syntaxis voor de if-instructie is heel eenvoudig.
De Booleaanse expressie binnen en gebruik dan haakjes voor enkele instructies.
Anders gebruik je haakjes.
U gebruikt geen haakjes voor afzonderlijke staten. Gebruik anders haakjes.
Er is ook een derde
manier om vragen te stellen in je programma. Dit wordt de voorwaardelijke operator genoemd en waar we
het over hadden toen we het over operators hadden, maar
er is wat meer begrip voor nodig.
De voorwaardelijke operator is dus een zeer unieke operator.
Het is anders dan alle andere operators in c.
De meeste operatoren in c zijn ofwel unair of binair.
Unair betekent dat de operatoren een enkel argument of een enkele operand nemen.
Binair betekent dat ze aan beide kanten operanden hebben.
Dus de plus-operator is een binaire operator omdat je 5 plus 3, twee
operanden doet.
Het negatieve is een unaire operator omdat je zegt als negatief 3.
Wel, er is een derde optie, er is een ternaire operator, die drie operanden nodig heeft.
En dit is de voorwaardelijke operator.
U hebt twee symbolen die worden gebruikt om deze operator aan te duiden, deze voorwaardelijke operator.
Het is het vraagteken en de dubbele punt.
En het is echt gelijk aan een if else-statement.
Zoals het eruit ziet, is de eerste operand die vóór het vraagteken wordt
geplaatst, dat zou de voorwaarde zijn, de Booleaanse uitdrukking in de eerdere voorbeelden.
En dan zou het tweede ding tussen het vraagteken en de dubbele
punt in feite de hoofdtekst van de if-statement zijn als de if-statement waar was.
En dan is de dubbele punt de derde, en
dat zou zijn als de voorwaarde als onwaar evalueert, je die code
zou uitvoeren, dus dat is net als de hoofdtekst van de else-instructie.
Dus deze draaioperator is niets meer dan een if else-statement, gewoon een stenonotatie, je
kunt het veel sneller schrijven.
Het verschil hier is ook dat er geen haakjes zijn, dus je kunt alleen
enkele uitdrukkingen of enkele uitspraken binnen de hoofdtekst van het vraagteken of na de dubbele punt hebben.
Dus als de voorwaardelijke operator evalueert naar een van
de twee expressies, afhankelijk van of de logische expressie die is,
afhankelijk van of de voorwaarde waar is.
Als de voorwaarde onwaar is, wordt expressie 2 geëvalueerd.
Dus nogmaals, het gedraagt zich net als een if else-statement.
Merk ook op hoe de operator is gerangschikt in relatie tot de operanden.
Het vraagteken volgt de logische uitdrukkingsvoorwaarde.
Rechts van het vraagteken staan de twee operanden, uitdrukking één en uitdrukking twee.
Zij vertegenwoordigen de keuzes.
De waarde die uit de bewerking resulteert, is de waarde van de uitdrukking één
als de voorwaarde waar wordt geëvalueerd.
En dan de waarde van uitdrukking twee als deze onwaar is. Dus precies wat ik zei als anders.
Laten we een voorbeeld bekijken. Het ziet er grappig uit om te
lezen, maar wat dit zegt is dat als x gelijk is aan de
y groter is dan
7, dus wat doet dit? Is het een opdracht aan het doen?
X is gelijk aan y. Dus als x 5 is en y 9 is,
zal het zeggen dat als x groter is dan 9, het
getal dan op 25 x wordt gezet. Anders wordt x op 50 gezet.
Dus het is een beetje verwarrend om het eerst te lezen.
Dit resulteert erin dat x wordt ingesteld op 25 als y groter is dan 7 of anders op 50.
Het is dus een gemakkelijke manier om een toewijzing van de uitdrukking uit te voeren.
X is gelijk aan y is groter dan 7.
Als y groter is dan 7, is x gelijk aan 25, anders 50.
Daarom is de x gelijk aan er is een porno.
Dus de ternaire operator en de voorwaarden staan aan de rechterkant van de opdracht, en
dit is typisch hoe je het gebruikt. Je zegt dat x gelijk is aan, het resultaat
van die ternaire operator.
Dus de gehele ternaire operator is y groter dan 7. Dus het zegt gewoon of y groter is
dan 7, 25, anders 50. En dan wijs je dat toe aan x.
En dit is typisch hoe je het gebruikt. Het is hetzelfde als
zeggen dat je een if-statement gebruikt. Als y groter is dan 7, is x gelijk aan 25, anders is x gelijk aan 50.
Maar het is veel minder code.
De beperking van deze voorwaardelijke operator is
dat je maar twee variabelen kunt schrijven met de voorwaardelijke operator, een
maximum minimum.
Je kunt er niet zomaar een heleboel doen. Dus het is een beetje beperkend. Het wordt meestal gebruikt voor opdrachten.
Een behoorlijk lange lezing dus, veel verschillende voorbeelden.
Dit zal meer van toepassing zijn wanneer we onze uitdaging doen.
Maar als uitspraken gaan worden gebruikt ton, en ze
zijn heel, heel gemakkelijk te leren. Voordat je het
weet, ken je de syntaxis
als je broekzak, haakjes, haakjes of andere trefwoorden.
En af en toe ga je deze voorwaardelijke operator gebruiken.
Nogmaals, dat is misschien als je meer gevorderd bent in c, je zult beginnen te beseffen wauw, dit
als het me veel tijd heeft gekost om een verklaring te
schrijven, misschien kan ik in een enkele regel schrijven met behulp van de voorwaardelijke
operator met mijn vraagteken en mijn dubbele punt.
Nogmaals, erg handig voor het toewijzen van variabelen op basis van voorwaarden. Dank u.