Greit. Så nå la oss snakke om noe veldig nyttig i programming-- betinget utsagn. Så betingelsesuttrykk tillate programmene dine til å ta avgjørelser og ta annerledes gafler i veien, noe Jeg antydet litt tidligere, avhengig av verdiene av variablene eller basert på hva de bruker innganger på programmerer, på kommandolinjen, eller hvis du har en ledetekst eller noe sånt. C har et par forskjellige måter å uttrykke betingede uttrykk, som vi også noen ganger vil kalle en betinget gren i programmene dine. Og noen av disse kommer til å se ganske kjent for deg fra bunnen av, så vi vil også trekke dem opp side ved side, bare du kan gjøre som analogi i hodet ditt. Så, hvis er if-- en ganske enkel betinget. Hvis du husker fra ripe på høyre her du kan fylle i at det er sekskant med en blå uttrykk hvis musen ned eller hvis x er mindre enn 10, eller noe sånt. Og deretter, hvis x var mindre enn 10, eller hvis musen var faktisk ned all koden innside puslespill brikke ville utføre. Alle de tingene som passer innsiden som C form. Tilsvarende har vi hvis på venstre der. Hvis boolsk uttrykk, som jeg bare bruker som en erstatning for en av de boolske uttrykk vi tidligere diskutert, åpen klammeparentes, tett krøllete brace. Så tenk på åpen krøllete seler og lukket klammeparentes som en slags analog til sandwich Virkningen av om blokken til høyre fra bunnen av. Hvis den boolske uttrykk i hvis setningen er sann, deretter alle linjer med kode mellom klammeparentes vil utføre for fra topp til bunn. Hvis den boolske uttrykk er falsk, vil vi hoppe over alt i mellom klammeparentes, fordi vi bare ønsker å gå ned som veiskille hvis boolsk uttrykk er sant. Vi kan ta dette ett skritt videre med hvis annet. Så dette Scratch blokken er ganske lik den vi så bare et sekund siden, bortsett det tar to forskjellige baner basert på hva som skjer. Så hvis musa var nede, eller hvis x var mindre enn 10, vi vil gjøre alt som er i mellom at første gaffel, som først C., Ellers, hvis musa er opp, eller x er ikke mindre enn 10, vi vil gjøre alt i det andre settet. Og det er analogt til det du ser her for C. Hvis boolsk uttrykk, gjøre ting mellom første sett med klammeparentes. Else, gjør ting mellom andre sett av klammeparentes. Så hvis boolsk uttrykket er sant, vi vil gjøre hva er mellom det første settet. Hvis boolsk uttrykk er falsk, som ville utløse annet, og vi vil gjøre hva som står i det andre settet med klammeparentes. Igjen, topp til bunn, alt linjer i mellom tannregulering. I C, er det mulig å opprette en if-else if-else-kjeden. Faktisk kan du ha if-else if-else if-else, dersom, og så videre og så videre og så på. I Scratch, dette kreves hekkende blokkene. Du legger til en if-else, og du måtte sette en annen en innsiden av annet, og så videre, og det fikk slag nestede og komplisert. Men C, har vi ikke til å gjøre det. Vi kan faktisk bare ha det være en kjede som dette. Igjen, som du kanskje forventer, alle disse grenene er gjensidig utelukkende. Du kan alltid bare gå ned en av grenen. Hvis dette er sant. Ellers, hvis dette er sant. Ellers, hvis dette er sant. Ellers gjør dette. Så alle fire av grenene i dette eksempel er gjensidig utelukkende. Det er en if-else if-else-kjeden. Det er mulig selv om, og noen ganger svært nyttig, for å lage en kjede av ikke gjensidig utelukkende grener. I dette eksempel er det bare den tredje og fjerde grenene er gjensidig utelukkende. Det kan være at du kan tilfredsstiller den første betingelse, og du kan tilfredsstille det andre vilkåret, og du kan tilfredsstille tredje condition-- i hvilket tilfelle du vil gå ned den første grenen, så du gå ned en annen gren, så du vil gå ned i tredje grenen. Eller kanskje du tilfredsstille den første tilstand, og det andre vilkåret, men du trenger ikke tilfreds det tredje vilkåret. I dette tilfellet går du ned den første gren og den andre grenen, og deretter den fjerde gren, Grunnen til dette er at det annet vil bare bindes til nærmeste hvis. Så selv om det er et annet sted her, at ikke nødvendigvis skape en gjensidig eksklusive kjede av alt. Det er bare uttrykket der med boolsk uttrykk 3-- det er gjensidig utelukkende med andre. Så det er mulig, og noen ganger ganske nyttig, som jeg sa, for å lage en kjede av ikke gjensidig utelukkende grener. La oss ta en titt på en annen slags betinget, noe som du ikke har sett før i Scratch. Det er noe som heter bryteren uttalelse. Den bryter uttalelse er litt artig fordi det er en betinget utsagn som gjør at du angi forskjellige tilfeller, i stedet for å stole på boolsk uttrykk for å ta avgjørelser for deg. Så for eksempel, la oss si at jeg har dette programmet, og jeg spør brukeren å gi innspill til meg. Så jeg sier, int x = Få Int () og hvis du ikke er kjent ennå, får int er en funksjon som er også inkludert i CS50 biblioteket så hvis du #include CS50.H du vil ha tilgang til Get Int () og alle dens cousins-- GetFloat, GetString, og så videre. I utgangspunktet én Få funksjon for hver datatype som vi allerede har diskutert. Så Int x lik GetInt. I utgangspunktet hva som skjer er jeg på terminalen. Jeg ber brukeren om å taste inn et nummer. Og her Jeg bytter hva jeg gjør, avhengig på hva brukeren skrev ved ledeteksten. Så hvis de skrev en, jeg skrive ut en. Og da jeg bryte. Hvis de skriver to, jeg skrive ut to. Og da jeg bryte. Det er viktig å pause mellom hvert tilfelle fordi ellers vil du falle gjennom. Så hvis jeg ikke har noen pauser der, og brukeren skrevet en, hva som ville skje er det ville skrive ut én, to, tre, beklager. Det er slags merkelig oppførsel, ikke sant? Du tenker kanskje det. Men det er faktisk noen tilfeller der dette kan være en ganske nyttig ting. Så her er et annet eksempel på en bryter uttalelse hvor jeg utelate pausene. Men jeg gjør det med vilje. Så hva skjer her? Tenk for et sekund. Du kan selv ønsker å stanse videoen. Hva skjer her hvis brukeren taster fire? Så jeg har spurt brukeren om innspill. Og de gir verdien fire. Hva blir skrevet ut når jeg gjør det? På forrige lysbilde, var det pauser mellom alle sakene. Og så ville det bare skrive ut fire og så stoppe. Men i dette tilfellet, vil det ikke. Hva som vil skje er at du vil falle gjennom hvert enkelt tilfelle. Så i dette tilfellet har jeg organisert min tilfeller på en slik måte at dersom brukeren taster 4, Jeg vil skrive ut fire, tre, to, en, drar av gårde. Og hvis de har skrevet fem, ville jeg begynne på fem og gjøre det samme. Hvis de har skrevet en, ville jeg gjøre bare én, blast off. Så i dette tilfellet, jeg bruker en bryter slags snedig så at jeg har tenkt å falle gjennom alle tilfeller. Men generelt er du sannsynligvis kommer til ønsker å bryte mellom dem alle, med mindre du har en situasjon som dette hvor du er slags utnytte det faktum at du vil faller gjennom sakene uten pause. Så det er den andre av de store typer betinget utsagn. Den siste av disse er:? Så jeg har to utdrag av C-kode her. En på venstre og en på høyre. Den til venstre skal trolig være ganske kjent for deg. Jeg har Int x. Og jeg sannsynligvis burde har bedt brukeren for-- dette bør trolig være Int x lik GetInt, eller noe sånt. Og så skal jeg ta en avgjørelse. Hvis noen boolsk uttrykk er sant, tilordne x verdien 5. Ellers tildele x verdien seks. Som på venstre burde være ganske kjent fra vår diskusjon If Else bare et øyeblikk siden. Vil du bli overrasket over å vite at linjen på høyre gjør akkurat det samme? Så dette kalles? Eller noen ganger kalt trefoldig operatør. Og det er ganske kult. Det er vanligvis brukt som en søt trick. Men hva det tillater deg å gjøre er å simulere en If Else med veldig liten, virkelig trivielt kort betingede grener. Du vanligvis ikke ville bruke:? Hvis du hadde seks linjer med kode mellom hvert sett av klammeparentes. Men hvis du er bare gjøre en rask avgjørelse, Hvis du kommer til å gjøre en ting eller den andre, og det er veldig enkelt, dette kan være et eksempel på hvordan man gjøre det med? trefoldig operatør. Så Int x lik uttrykk? Ting etter spørsmålet mark er hva x verdi vil bli hvis uttrykket er sant. Saken etter kolon er hva x verdi ville være hvis den var uttrykket falsk. Så jeg spør meg selv, er uttrykket sant? Hvis det er, tilordne x verdien 5. Hvis det ikke er det, tilordne x verdien seks. Igjen, som jeg sa. Dette er vanligvis bare en søt trick. Og noen ganger hvis du blir veldig komfortabel med det, du vil gjøre dette fordi det ser ut litt kult i programmene dine. Vanligvis jeg presenterer det til du nå så du er kjent med det hvis du ser det. Men sikkert vet at du ikke trenger å skrive det på noen av koden din. Men det er noe å bli kjent med, fordi du vil definitivt møte kodebiter her og der hvor dette:? syntaks, AKA trefoldig operatøren, blir brukt. Så rask oppsummering på hva conditionals er, og hva alternativene er tilgjengelige til deg i C. Du har If og if-else, og hvis annet hvis, et cetera. Du kan bruke boolske uttrykk for dem å ta beslutninger. Med bryteren uttalelser bruker du diskrete tilfeller å ta beslutninger. Du vil spesielt si, hvis det er en, eller om det er to, eller om det er tre, Jeg skal gjøre dette, eller denne tingen, eller denne tingen. Og: kan brukes til å erstatte svært enkle if-else grener, eller hvis-annet kjedene å gjøre koden din ser litt fancy. Jeg er Doug Lloyd. Og dette er CS50.