Prima. Dus nu laten we praten over iets echt nuttig in programming-- voorwaardelijke verklaringen. Zo voorwaardelijke uitdrukkingen laat je programma's om beslissingen te nemen en verschillende vorken in de weg, wat Ik zinspeelde iets eerder, Afhankelijk van de waarden van variabelen of op basis van wat de gebruiker inputs de programmeur, op de opdrachtregel, of als u een prompt of zoiets. C heeft een paar verschillende manieren uitdrukken voorwaardelijke uitdrukkingen, die we soms ook zullen noemen conditionele vestiging in uw programma's. En sommige van deze gaan kijken redelijk bekend om u vanuit het niets, dus we zullen ze nog te trekken naast elkaar, net U kunt die analogie in je hoofd maken. Dus, if-- als een vrij eenvoudige voorwaardelijk. Misschien herinner je je uit kras op de hier je zou kunnen vullen in die zeshoek met een blauwe uitdrukking als muis naar beneden of als x kleiner is dan 10, of zoiets. En dan, als x minder dan 10, of als de muis was in feite neer, alle van de code in van de puzzelstukje zou voeren. Al de dingen die passen binnen dat C-vorm. Ook hebben we Als aan de linkerkant. Als Booleaanse uitdrukking, die ik alleen met behulp als vervanging voor een van de Boolean uitdrukkingen we eerder besproken, geopend accolade, dicht accolade. Dus denk open krullend brace en gesloten accolade als een soort analoog aan de sandwich effect van de-blok rechts vanaf nul. Als de Booleaanse uitdrukking in de if waar is, dan zijn alle regels code tussen de accolades zal uitvoeren met het oog van boven naar beneden. Als de Booleaanse uitdrukking vals is, zullen we overslaan alles daartussenin de accolades, omdat alleen wij wil naar beneden te gaan, dat splitsing in de weg Als de Booleaanse uitdrukking waar is. We kunnen nog een stap te nemen verder met als anders. Dus dit Scratch blok redelijk vergelijkbaar met degene we zagen slechts een seconde geleden, behalve duurt het twee verschillende wegen gebaseerd over wat er gebeurt. Als de muis daalde, of indien x minder dan 10, we zullen alles wat daar tussenin doen die eerste vork, die eerste C., Anders, als de muis up of x is ten minste 10, we zullen alles in de tweede set te doen. En dat is analoog aan wat je ziet hier voor C. Als Booleaanse uitdrukking, doen het spul tussen de eerste set van accolades. Anders, doe het spul tussen de tweede set van accolades. Als de Booleaanse expressie is waar, we zullen doen wat is tussen de eerste set. Als de Booleaanse expressie vals, dat zou anders leiden, en we willen alles wat we doen in de tweede set accolades. Ook boven naar beneden, alle lijnen tussen de haakjes. In C is het mogelijk te maken een if-else if-else keten. In feite kun je hebben als-else if-else if-else, zo, en zo voort en zo voort en zo op. In Scratch, dit vereist nesting blokken. U voegt een if-else, en je moest zet nog één binnen de ander, en ga zo maar door, en het kind kreeg geneste en ingewikkeld. Maar C, we hebben niet om dat te doen. We kunnen eigenlijk alleen maar hebben het zijn een keten als deze. Nogmaals, zoals je zou verwachten, allemaal deze takken elkaar uitsluiten. Je kunt alleen maar gaan van een van de tak. Als dit waar is. Anders, als dit waar is. Anders, als dit waar is. Anders doen. Dus alle vier de takken in deze Zo sluiten elkaar uit. Het is een if-else if-else keten. Het is wel mogelijk, en soms zeer nuttig, een keten van maken niet elkaar uitsluitende takken. In dit voorbeeld wordt alleen de derde en vierde takken elkaar uit. Het kan zijn dat je kon voldoen aan de eerste voorwaarde, en je kon voldoen de tweede voorwaarde, en je kon voldoen aan de derde Staat- in welk geval je zou gaan op de eerste vestiging, dan ga je naar beneden een tweede tak, dan zou je gaan op de derde tak. Of misschien aan de eerste conditie, en de tweede voorwaarde, maar je hoeft niet te voldoen de derde voorwaarde. In dit geval ga je naar beneden de eerste tak en de tweede tak, en dan is de vierde tak, De reden hiervoor is dat anders alleen binden aan de dichtstbijzijnde indien. Dus zelfs al is er een anders hier, dat niet noodzakelijk maken wederzijds exclusieve keten van alles. Het is slechts de uitdrukking daar met Boolean uitdrukking 3-- dat is de wederzijds exclusief met het anders. Zo is het mogelijk, en soms heel nuttig, zoals ik al zei, een keten van maken sluiten elkaar niet uit takken. Laten we eens een kijkje nemen op een ander soort voorwaardelijke, die je nog niet eerder gezien in de Scratch. Er is iets genaamd de instructie switch. Het switch statement is soort netjes omdat het een voorwaardelijke verklaring die het mogelijk maakt u verschillende gevallen te specificeren, in plaats van te vertrouwen op Booleaanse uitdrukkingen om beslissingen te nemen voor je. Dus bijvoorbeeld, laten we zeggen dat ik dit programma, en ik vraag de gebruiker om input te leveren voor mij. Dus ik zeg, int x = Get Int (), en als je nog niet bekend, krijgen int is een functie die is Ook opgenomen in de CS50 bibliotheek dus als je #include CS50.H je hebt toegang te krijgen Int () en al zijn cousins-- GetFloat, GetString, enzovoort. Eigenlijk een te krijgen voor elke functie data type dat we al hebben besproken. Dus Int x gelijk getint. Eigenlijk wat er gebeurt is dat ik ben op de terminal. Ik ben de gebruiker vragen om te typen in een getal. En hier ben ik het inschakelen wat ik doe, afhankelijk op wat de gebruiker getypt op de prompt. Dus als ze getypt een, print ik één. En dan breek ik. Als ze twee typen, print ik twee. En dan breek ik. Het is belangrijk om verbreken tussen telkens want anders zul je vallen door. Dus als ik had er geen pauzes daar, en de gebruiker getypte een, wat er zou gebeuren is dat zou afdrukken één, twee, drie, sorry. Dat is een soort van vreemd gedrag, toch? Je zou zo denken. Er zijn eigenlijk een aantal gevallen waarin dit zou een vrij nuttig ding. Dus hier is een ander voorbeeld van een schakelaar statement waar ik weglaten de pauzes. Maar ik doe het op doel. Dus wat gebeurt er hier? Denk voor een tweede. U kunt zelfs om de video te pauzeren. Wat gebeurt hier als de gebruiker vier types? Dus ik heb de gebruiker om input gevraagd. En ze bieden de waarde 4. Wat wordt er afgedrukt als ik dat doen? Op de vorige dia, waren er pauzes tussen alle gevallen. En dus het zou net afdrukken vier en dan stoppen. Maar in dit geval niet. Wat er zal gebeuren is dat je zal door elk geval vallen. Dus in dit geval heb ik mijn gevallen georganiseerd zodanig dat indien de gebruiker typt 4, Ik zal afdrukken vier, drie, twee, een, ontploffing af. En als ze getypt 5, zou ik beginnen op vijf en hetzelfde doen. Als ze getypt 1, zou ik gewoon doen een, ontploffing weg. Dus in dit geval, ik gebruik een schakelaar soort slim dus dat ik niet van plan om te vallen in alle gevallen. Maar over het algemeen ben je waarschijnlijk gaat willen breken tussen hen allen, tenzij je een situatie als dit een waar je bent soort gebruik te maken van het feit dat je zult vallen door de gevallen zonder een pauze. Dus dat is de tweede van de grote soorten voorwaardelijke verklaringen. Waarvan de laatste is:? Dus ik twee fragmenten van C-code hier. Één aan de linker- en één aan de rechterkant. De ene aan de linkerkant moet waarschijnlijk erg bekend voor. Ik heb Int x. En ik moet waarschijnlijk de gebruiker gevraagd voor-- dit moet waarschijnlijk Int x zijn gelijk getint, of iets dergelijks. En dan ben ik het maken van een beslissing. Als sommige Booleaanse expressie waar, wijs x de waarde 5. Anders toewijzen x de waarde 6. Dat aan de linkerzijde moet waarschijnlijk redelijk bekend uit onze discussie Als Else van zojuist. Zou je verbaasd zijn om te weten dat de lijn op de rechter doet precies hetzelfde? Dus dit heet:? Of soms genaamd de ternaire operator. En het is vrij cool. Het wordt meestal gebruikt als een leuke truc. Maar hoe staat het u te doen is om simuleren van een If Else met echt klein, echt triviaal kort voorwaardelijke takken. Je zou over het algemeen niet te gebruiken:? Als u had zes regels code tussen elke set van accolades. Maar als je gewoon het maken van een snelle beslissing, als je gaat om een ​​ding te doen of het ander en het is heel simpel, Dit zou een voorbeeld van hoe te zijn doe het met:? de ternaire operator. Dus Int x gelijk is aan expressie? Het ding na de vraag mark is wat x de waarde van zal zijn als de expressie waar is. Het ding na de colon is wat x de waarde van zijn als de expressie vals was. Dus ik vraag me af, is de uitdrukking waar? Als het toewijzen x de waarde 5. Als het niet, toewijzen x de waarde 6. Nogmaals, zoals ik al zei. Dit is meestal gewoon een leuke truc. En soms als je geworden echt comfortabel met het, zult u dit doen omdat het eruit ziet wel cool in uw programma's. Over het algemeen ben ik presenteren aan u nu zo u bekend bent met het als je het ziet. Maar zeker weet dat je niet hebt op te schrijven in een van uw code. Maar het is iets om vertrouwd te raken met zijn, want je zult zeker tegenkomen stukjes code hier en daar waar dit:? syntax, AKA de ternaire operator, wordt gebruikt. Dus snelle samenvatting op wat conditionals zijn, en wat de opties zijn beschikbaar om u in C. Je hebt Indien en if-else, en indien anders als, et cetera. U kunt Booleaanse uitdrukkingen gebruiken voor degenen om beslissingen te nemen. Met schakelaar verklaringen die u gebruikt discrete gevallen om beslissingen te nemen. Je zou specifiek zeggen, als het één, of als het twee of als het drie, Ik zal dit doen, of dit ding, of dit ding. En: kan worden gebruikt ter vervanging heel simpel if-else takken, of indien anders ketens te maken uw code er een beetje fantasie. Ik ben Doug Lloyd. En dit is CS50.