Alles reg.
So nou, laat ons praat oor iets werklik nuttig in programming--
voorwaardelike stellings.
So voorwaardelike uitdrukkings toelaat dat jou programme
om besluite te neem en verskillende vurke in die pad, iets
Ek verwys na bietjie vroeër, afhangende van die waardes van veranderlikes,
of op grond van wat die gebruiker insette by die programmeerder, op die opdrag lyn,
of as jy 'n vinnige of iets soos dit.
C het 'n paar van die verskillende maniere om druk voorwaardelike uitdrukkings, wat
ons soms ook noem 'n voorwaardelike tak in jou programme.
En 'n paar van hierdie gaan kyk mooi aan u bekend van nuuts af,
so ons sal hulle selfs te trek up langs mekaar, net
wat jy kan analogie in jou kop te maak.
>> So, as if-- is 'n mooi eenvoudige voorwaardelik.
As jy onthou uit nuuts op die regte hier
jy kan vul in wat heksagoon met 'n blou uitdrukking as muis af
of as x is minder as 10, of iets soos dit.
En dan, as x is minder as 10, of indien die muis was in werklikheid, af,
al die kode binnekant van die legkaart stuk sal voer.
Al die dinge wat pas binne-in dat C vorm.
>> Net so, het ons As aan die linkerkant is daar.
As Boole-uitdrukking, wat ek net die gebruik van
as 'n plaasvervanger vir een van die Boole uitdrukkings wat ons voorheen bespreek,
oop krullerige brace, naby krullerige brace.
So dink van 'n oop krullerige stut en geslote krullerige brace
as 'n soort van analoog aan die toebroodjie effek van die as blok op die regte
van die begin af.
>> As die Boole-uitdrukking in die as stelling waar is,
dan sal al die reëls van die kode tussen die krulhakies
sal voer ten einde van bo tot onder.
As die Boole-uitdrukking vals is, sal ons
spring oor alles tussenin die krulhakies, want net ons
wil om te gaan dat vurk in die pad indien die Boole-uitdrukking is waar.
>> Ons kan dit 'n stap te neem verder met as anders.
So hierdie Scratch blok is mooi soortgelyk aan die een
ons het net gesien 'n tweede gelede nie, behalwe dit neem twee verskillende paaie gebaseer
oor wat gebeur.
So as die muis af was, of as x is minder as 10,
ons sal alles wat tussen in doen dat die eerste vurk, wat die eerste keer C.,
>> Andersins, as die muis is up, of x is nie minder nie as 10,
Ons sal alles in die tweede stel te doen.
En dit is analoog aan wat jy sien hier vir C. As Boole-uitdrukking,
doen die dinge tussen die eerste stel krullerige draadjies.
Anders, doen die dinge tussen die tweede stel krullerige draadjies.
So as die Boole uitdrukking is waar, ons sal
doen wat is tussen die eerste stel.
As die Boole-uitdrukking is valse, sou die ander sneller,
en ons sal alles in ons doen die tweede stel krullerige draadjies.
Weereens, bo na onder, al lyne tussen die draadjies.
>> In C, is dit moontlik om te skep 'n if-else if-else ketting.
In die feit dat jy kan hê if-else if-else if-else, indien, en so aan en so aan en so
op.
In Scratch, hierdie vereiste nes die blokke.
Jy voeg 'n if-else, en jy het om te sit nog een binnekant van die ander,
en so aan, en dit soort het van geneste en ingewikkeld.
Maar C, ons het nie om dit te doen.
Ons kan eintlik net dit 'n ketting soos hierdie.
Weereens, as jy kan verwag, al hierdie takke is onderling uitsluitend.
Jy kan net ooit gaan af een van die tak.
As dit waar is.
Anders, as dit waar is.
Andersins, doen dit.
So al vier van die takke in hierdie Byvoorbeeld onderling uitsluitend.
Dit is 'n if-else if-else ketting.
>> Dit is moontlik al is, en soms baie nuttig,
'n ketting van skep nie wedersyds eksklusiewe takke.
In hierdie voorbeeld, slegs die derde en vierde takke onderling uitsluitend.
Dit kan wees dat jy kan voldoen aan die eerste voorwaarde,
en jy kan bevredig die tweede voorwaarde,
en jy kan voldoen aan die derde condition-- in welke geval
jy sou afgaan die eerste tak, gaan dan af 'n tweede tak,
dan sou jy afgaan die derde tak.
Of dalk het jy voldoen aan die eerste toestand, en die tweede voorwaarde,
maar jy het nie voldoen die derde toestand.
In hierdie geval sal jy in die eerste tak en die tweede tak
en dan die vierde tak
>> Die rede hiervoor is dat die ander sal slegs bind aan die naaste as.
So selfs al is daar 'n anders hier, wat
nie noodwendig te skep 'n wedersyds eksklusiewe ketting van alles.
Dit is net die uitdrukking daar met Boole
uitdrukking 3-- dit is die wedersyds eksklusiewe met die anders.
So is dit moontlik, en soms baie nuttig,
soos ek gesê het, 'n ketting van skep nie wedersyds uitsluitend takke.
Kom ons neem 'n blik op 'n ander soort voorwaardelike, wat
het jy nie gesien voor in Scratch.
Daar is iets genoem die skakelaar verklaring.
Die skakelaar stelling soort van netjies, want dit is
'n voorwaardelike verklaring wat toelaat jy duidelike gevalle spesifiseer,
in plaas van vertroue op Boole uitdrukkings om besluite te neem vir jou.
So byvoorbeeld, kom ons sê dat ek hierdie program
en ek vra die gebruiker om insette te lewer vir my.
So ek sê, int x = Kry Int (), en as jy nog nie vertroud is,
kry int is 'n funksie wat ook ingesluit in die CS50 biblioteek,
so as jy include CS50.H jy het Kry toegang tot Int () en al sy
cousins-- GetFloat, GetString, en so aan.
Basies een Kry funksie vir elke tipe data wat ons reeds bespreek het.
>> So Int x gelyk GetInt.
Basies wat gebeur is ek by die terminale.
Ek is die gebruiker vra om te tik in 'n nommer.
>> En hier is die skakel ek wat ek doen, afhangende
oor wat die gebruiker getik op die instruksielyn.
So as hulle getik een, ek druk een.
En dan breek ek.
As hulle twee tik, ek druk twee.
En dan breek ek.
Dit is belangrik om breek tussen elke geval
want anders sal jy deur middel van val.
So as ek nie het nie breek daar, en die gebruiker
getikte een wat sou gebeur is dit sou druk een, twee, drie, jammer.
Dit is soort van vreemde gedrag, reg?
Jy kan so te dink.
Maar daar is eintlik 'n paar gevalle waar dit kan 'n baie handig ding wees.
So hier is nog 'n voorbeeld van 'n skakelaar verklaring waar ek laat die breek.
Maar ek doen dit met 'n doel.
>> So wat gebeur hier?
Dink vir 'n tweede.
Jy kan selfs wil breek die video.
>> Wat gebeur hier as die gebruiker vier?
So ek het die gebruiker vir insette gevra.
En hulle die waarde 4.
Wat kry gedruk toe ek dit doen?
Op die vorige skyfie, was daar breek tussen al die gevalle.
En so het dit sou net druk vier en dan te stop.
Maar in hierdie geval, dit sal nie.
Wat sal gebeur is dat jy sal deur middel van elke geval val.
>> So in hierdie geval Ek het my gevalle georganiseer in so 'n manier dat as die gebruiker tipes 4,
Ek sal druk vier, drie, twee, een, blaas af.
En as hulle getik 5, sou ek begin vyf en doen dieselfde ding.
As hulle getik 1, sou ek doen net een ontploffing af.
>> So in hierdie geval, ek gebruik van 'n skakelaar soort slim so
dat ek nie van plan om te val deur al die gevalle.
Maar oor die algemeen is waarskynlik gaan jy wil breek tussen almal van hulle,
tensy jy 'n situasie soos hierdie een waar jy
soort gebruik te maak van die feit dat jy val deur die gevalle sonder 'n pouse.
So dit is die tweede van die groot tipes voorwaardelike stellings.
Die laaste van wat is:? So ek het twee stukkies van C-kode hier.
Een aan die linkerkant en een aan die regterkant.
Die een aan die linkerkant moet waarskynlik redelik bekend aan jou.
>> Ek het Int x.
En ek waarskynlik sou die gebruiker gevra
for-- dit moet waarskynlik Int x gelyk GetInt, of iets soos dit.
En dan is ek 'n besluit neem.
As sommige Boole-uitdrukking is ware, toewys x die waarde 5.
Anders, toewys x die waarde 6.
>> Dit aan die linkerkant moet waarskynlik mooi vertroud uit ons bespreking
van As Else net 'n oomblik gelede.
Wil jy verbaas wees om te weet dat die lyn op die regte
doen presies dieselfde ding?
>> So is dit genoem: of soms genoem die drieledige operateur.
En dit is pretty cool.
Dit is gewoonlik gebruik as 'n oulike truuk.
>> Maar wat dit laat jou toe om te doen, is om simuleer 'n As Else met baie klein,
regtig trivially kort voorwaardelike takke.
Jy sal oor die algemeen nie gebruik:? As jy het ses reëls van die kode tussen elke stel
krullerige draadjies.
Maar as jy net maak 'n vinnige besluit,
As jy gaan om een ​​ding te doen of die ander en dit is baie eenvoudig,
hierdie dalk 'n voorbeeld van hoe om te wees doen dit met:? die drieledige operateur.
So Int x gelyk uitdrukking?
Die ding na die vraag merk is wat x se waarde
sal wees as uitdrukking waar is.
>> Die ding na die kolon is wat x se waarde
sou wees as die uitdrukking vals was.
So ek myself vra, is die uitdrukking waar?
As dit is, toewys x die waarde 5.
As dit is nie, wys x die waarde 6.
Weereens, soos ek gesê het.
Dit is gewoonlik net 'n oulike truuk.
En soms as jy ' regtig gemaklik met dit,
jy sal dit doen omdat dit lyk gaaf in jou programme.
Algemeen ek dit aan jy nou so jy vertroud is met dit is
as jy dit sien.
Maar beslis weet jy hoef nie om dit te skryf in enige van jou kode.
Maar dit is iets om vertroud wees met, omdat jy sal beslis teëkom
stukkies van die kode hier en daar waar dit:? sintaksis,
AKA die drieledige operateur, gebruik word.
>> So vinnige opsomming op wat conditionals is,
en wat die opsies is beskikbaar om jou in C. Jy het As en if-else,
en as anders as, ensovoorts.
Jy kan Boolse uitdrukkings te gebruik vir diegene om besluite te neem.
>> Met skakelaar stellings wat jy gebruik diskrete gevalle om besluite te neem.
Jy sal spesifiek sê, as dit een is, of indien dit is twee, of as dit is drie,
Ek sal hierdie ding doen, of hierdie ding, of hierdie ding.
En: kan gebruik word om te vervang baie eenvoudige if-else takke,
of if-else kettings te maak jou kode kyk 'n bietjie fancy.
>> Ek is Doug Lloyd.
En dit is CS50.