Okay. Så lad os nu tale om noget virkelig nyttige i programming-- betingede udsagn. Så betingede udtryk give dine programmer til at træffe beslutninger og tage forskellige gafler i vejen, noget Jeg hentydede til lidt tidligere, afhængigt af værdierne af variabler, eller baseret på, hvad brugeren input på programmøren, på kommandolinjen, eller hvis du har en prompt eller sådan noget. C har et par forskellige måder at udtrykke betingede udtryk, som vi også nogle gange vil kalde en betinget filial i dine programmer. Og nogle af disse kommer til at se temmelig velkendt for dig fra bunden, så vi vil endda trække dem op side om side, lige du kan gøre, at analogi i dit hoved. Så if-- hvis er en smuk simpel betinget. Hvis du husker fra ridse på højre her man kunne udfylde det er sekskant med en blå udtryk, hvis musen nede eller hvis x er mindre end 10, eller sådan noget. Og derefter, hvis x er mindre end 10, eller hvis musen var faktisk ned, hele koden indersiden af brik ville udføre. Alle de ting, der passer inde, at C form. Ligeledes har vi hvis venstre der. Hvis Boolesk udtryk, som jeg bare bruger som en erstatning for en af ​​de booleske udtryk vi tidligere diskuteret, åben krøllet klammeparentes tæt krøllet parentes. Så tænk på åben krøllet klampe og lukkede krøllet tandbøjle som en slags analog med sandwich virkning af IF blok på højre fra begyndelsen. Hvis Boolsk udtryk i hvis udsagn er sandt, så alle linjer kode mellem de krøllede parenteser vil udføre for fra top til bund. Hvis Boolsk udtryk er falsk, vi får springe over alt i mellem de krøllede parenteser, fordi kun vi ønsker at gå ned at gaffel i vejen hvis den booleske udtryk er sandt. Vi kan tage det et skridt yderligere med hvis andet. Så denne Scratch blok er temmelig ligner den vi så bare et sekund siden, bortset fra det tager to forskellige veje baseret på hvad der sker. Så hvis musen var nede, eller hvis x er mindre end 10, vi vil gøre alt, hvad der er i mellem den første gaffel, der først C., Ellers, hvis musen er op eller x ikke er mindre end 10, Vi vil gøre alt i det andet sæt. Og det er analogt med, hvad du ser her for C. Hvis boolesk udtryk, gøre de ting mellem første sæt krøllede parenteser. Else, gør de ting mellem andet sæt krøllede parenteser. Så hvis den booleske udtryk er sandt, vi får gøre, hvad der er mellem det første sæt. Hvis den booleske udtryk er falsk, vil der udløser andet, og vi vil gøre, hvad er i det andet sæt af krøllede parenteser. Igen, top til bund, alle linjer i mellem seler. I C, er det muligt at skabe en if-else if-else kæde. Faktisk kan du have if-else if-else if-else, hvis og så videre og så videre og så på. I Scratch, dette krævede indlejring blokkene. Du tilføjer en if-else, og du var nødt til at sætte en anden inde i andet, og så videre, og det fik slags af indlejret og kompliceret. Men C, behøver vi ikke at gøre det. Vi kan faktisk bare have det være en kæde som denne. Igen, som man kunne forvente, alle disse filialer udelukker hinanden. Du kan kun nogensinde gå ned ad en af ​​filialen. Hvis dette er sandt. Ellers, hvis dette er sandt. Ellers, hvis dette er sandt. Ellers gøre dette. Så alle fire af grenene i dette eksempel udelukker hinanden. Det er en if-else if-else kæde. Det er dog muligt, og til tider meget nyttigt, at skabe en kæde af ikke gensidigt udelukkende filialer. I dette eksempel kun den tredje og fjerde grene udelukker hinanden. Det kunne være, at du kunne opfylde den første betingelse, og du kunne tilfredsstille den anden betingelse, og du kunne tilfredsstille tredje Stand- i hvilket tilfælde ville du gå ned den første gren, så du går ned ad en anden gren, så ville du gå ned den tredje gren. Eller måske du opfylder den første tilstand, og den anden tilstand, men du ikke opfylder den tredje betingelse. I dette tilfælde skal du gå ned den første filial og den anden gren, og derefter den fjerde gren, Grunden til dette er, at andre vil kun binde til den nærmeste hvis. Så selv om der er en andet her, at skaber ikke nødvendigvis en gensidigt eksklusiv kæde af alt. Det er kun et udtryk der med Boolesk udtryk 3-- det er den gensidigt udelukkende med andet. Så det er muligt, og undertiden ganske nyttigt, som jeg sagde, for at skabe en kæde af ikke gensidigt udelukkende grene. Lad os tage et kig på en anden form for betinget, som du ikke har set før i Scratch. Der er noget, der hedder switch-statementet. Kontakten erklæring er slags neat fordi det er en betinget erklæring, der tillader du angive forskellige sager, i stedet for at stole på Boolesk udtryk til at træffe beslutninger for dig. Altså for eksempel, lad os sige at jeg har dette program, og jeg beder brugeren at give input til mig. Så jeg siger, int x = Get Int (), og hvis du ikke kender endnu, få int er en funktion, der er også inkluderet i CS50 bibliotek, så hvis du # include CS50.H har du adgang til Get Int () og alle dens cousins-- GetFloat, GetString, og så videre. Dybest set en få funktionen for hver datatype, som vi allerede har diskuteret. Så Int x lig GetInt. Dybest set, hvad der sker er jeg på terminalen. Jeg beder brugeren om at indtaste et nummer. Og her jeg skifter hvad jeg gør, afhængigt om hvad brugeren har skrevet ved prompten. Så hvis de har skrevet en, jeg udskrive en. Og så er jeg bryder. Hvis de skriver to, jeg udskrive to. Og så er jeg bryder. Det er vigtigt at pause mellem hvert tilfælde fordi ellers vil du falde igennem. Så hvis jeg ikke havde nogen pauser der, og brugeren maskinskrevet én, hvad der ville ske, er det ville udskrive en, to, tre, undskyld. Det er lidt underligt, ikke? Du tror måske det. Men der er faktisk nogle tilfælde, hvor dette kunne være en temmelig nyttig ting. Så her er et andet eksempel på en switch erklæring, hvor jeg udelade pauser. Men jeg gør det med vilje. Så hvad sker der her? Tænke et sekund. Du kan selv ønsker at holde pause i videoen. Hvad sker der her, hvis brugeren typer fire? Så jeg har bedt brugeren om input. Og de giver værdien 4. Hvad bliver trykt, når jeg gør det? På den forrige dias, var der pauser mellem alle tilfælde. Og så ville det bare udskrive fire og derefter stoppe. Men i dette tilfælde, vil det ikke. Hvad vil der ske, er du vil falde igennem hvert enkelt tilfælde. Så i dette tilfælde har jeg organiseret mine sager på en sådan måde, at hvis brugeren indtaster 4, Jeg vil udskrive fire, tre, to, en, blast off. Og hvis de har skrevet 5, ville jeg begynde på fem og gøre det samme. Hvis de har skrevet 1, ville jeg bare gøre en, blast off. Så i dette tilfælde, jeg bruger en omskifter slags ødelagde så at jeg har til hensigt at falde gennem alle sager. Men generelt er du sandsynligvis vil vil bryde mellem dem alle, medmindre du har en situation, som denne, hvor du er slags udnytte det faktum, at du får falder gennem sagerne uden pause. Så det er den anden af ​​de store typer af betingede udsagn. Hvoraf den sidste er:? Så jeg har to uddrag af C-kode her. En til venstre og en til højre. Den ene til venstre bør sandsynligvis være temmelig velkendt for dig. Jeg har Int x. Og jeg nok skulle har bedt brugeren for-- dette bør nok være Int x lig GetInt, eller noget lignende. Og så er jeg træffer en beslutning. Hvis nogle Boolsk udtryk er sandt, tildele x værdien 5. Ellers tildele x værdien 6. Det til venstre bør nok være temmelig velkendt fra vores diskussion af Hvis Else bare et øjeblik siden. Ville du blive overrasket over at vide, at på højre gør præcis de samme ting? Så dette kaldes:? Eller nogle gange kaldes ternære operatør. Og det er ret cool. Det er normalt bruges som en sød trick. Men hvad det giver dig mulighed for at gøre, er at simulere en Hvis Else med virkelig små, virkelig trivielt kort betingede grene. Du ville normalt ikke bruge:? Hvis du havde seks linjer kode mellem hvert sæt af krøllede parenteser. Men hvis du bare at gøre en hurtig beslutning, Hvis du kommer til at gøre én ting eller det andet, og det er meget simpelt, dette kunne være et eksempel på, hvordan man gøre det med:? den ternære operatør. Så Int x lig udtryk? De ting efter spørgsmålet mark er, hvad x værdi vil være, hvis udtryk er sandt. De ting efter kolon er hvad X'er værdi ville være, hvis ekspression var forkerte. Så jeg spørger mig selv, er udtryk sandt? Hvis det er, tildele x værdien 5. Hvis det ikke er, tildele x værdien 6. Igen, ligesom jeg sagde. Dette er normalt bare en sød trick. Og nogle gange, hvis du bliver virkelig komfortabel med det, du vil gøre dette, fordi det ser slags cool i dine programmer. Generelt jeg præsentere det til du nu, så du er fortrolig med det hvis du ser det. Men helt sikkert ved, du ikke har at skrive det i nogen af ​​din kode. Men det er noget at være bekendt med, fordi du vil helt sikkert støde uddrag af koden her og der, hvor det:? syntaks, AKA det ternære operatør, anvendes. Så hurtig oversigt på hvilke betingede er, og hvad mulighederne er tilgængelige til dig i C. Du er nødt Hvis og hvis-andet, og hvis ellers hvis, et cetera. Du kan bruge booleske udtryk for dem at træffe beslutninger. Med switch udsagn, du bruger diskrete tilfælde at træffe beslutninger. Du ville specifikt sige, hvis det er én, eller hvis det er to, eller hvis det er tre, Jeg vil gøre denne ting, eller denne ting, eller denne ting. Og:? Kan skal anvendes til at erstatte meget enkle if-else grene, eller if-else kæder til at din kode ser lidt fancy. Jeg er Doug Lloyd. Og det er CS50.