Në rregull. Pra, tani le të flasim për diçka të vërtetë të dobishme në programming-- Deklaratat e kushtëzuara. Shprehjet Pra kushtëzuara lejojë programet tuaja për të marrë vendime dhe për të marrë të ndryshme forks në rrugë, diçka Unë aludoi për pak më herët, varësisht nga vlerat e variablave, ose në bazë të asaj që inputet e përdoruesit në programues, në rreshtin e komandave, ose në qoftë se ju keni një të shpejtë ose diçka të tillë. C ka disa mënyra të ndryshme për të shprehin shprehje të kushtëzuara, të cilat ne gjithashtu ndonjëherë do të thërrasë një Dega e kushtëzuar në programet tuaja. Dhe disa prej tyre do të duken mjaft të njohura për ju nga e para, kështu që ne do të tërheqë ata edhe deri krah për krah, vetëm ju mund të bëni atë analogji në kokën tuaj. Pra, if-- nëse është një goxha thjeshtë kushtëzuar. Nëse ju kujtohet nga zeroja në të djathtë këtu ju mund të plotësoni në atë që është gjashtëkëndësh me një shprehje blu nëse miut poshtë ose kur x është më pak se 10, ose diçka të tillë. Dhe pastaj, në qoftë se x është më pak se 10, ose në qoftë se miu ishte në fakt, poshtë, të gjithë i kodit brendësi të copë mister do të ekzekutojë. Të gjitha gjërat që përshtaten brenda atë formë C. Në mënyrë të ngjashme, nuk kemi në qoftë se në të majtë atje. Nëse shprehje Boolean, që unë jam vetëm duke përdorur si një zëvendësim për një nga Boolean Shprehjet ne diskutuar më herët, mbajtëse hapur kaçurrel, mbajtëse afër kaçurrel. Pra, mendoj se e kaçurrel hapur mbajtëse dhe mbajtëse mbyllur kaçurrel si lloj i analoge me sanduiç Efekti i nëse bllokut në të djathtë nga e para. Nëse shprehja Boolean në qoftë se deklarata është e vërtetë, pastaj të gjitha linjat e kodit midis formatimin e teksteve kaçurrel do të ekzekutojë në mënyrë nga lart poshtë. Nëse shprehja Boolean është e rreme, ne do të kaloni mbi çdo gjë në mes formatimin e teksteve kaçurrel, sepse ne vetëm duan të shkojnë poshtë që pirun në rrugë nëse shprehja Boolean është e vërtetë. Ne mund të marrë këtë hap një më tej me nëse tjetër. Pra ky bllok Scratch është goxha i ngjashëm me atë ne pamë vetëm një sekondë më parë, me përjashtim të ai merr dy rrugë të ndryshme në bazë mbi atë që ndodh. Pra, nëse miu ishte poshtë, ose kur X është më pak se 10, ne do të bëjmë çdo gjë që është në mes që pirun së pari, se C. së pari, Përndryshe, nëse miu është lart, ose x është jo më pak se 10, ne do të bëjmë gjithçka në setin e dytë. Dhe kjo është analoge me atë që ju shihni këtu për C. Nëse Boolean shprehjes, bëjë gjëra në mes të vendosur për herë të parë e formatimin e teksteve kaçurrel. Tjetër, të bëjë gjëra në mes të Grupi i dytë i formatimin e teksteve kaçurrel. Pra, nëse Boolean shprehje është e vërtetë, ne do të bëjë çdo gjë që është në mes të grupit të parë. Nëse shprehja Boolean është rreme, që do të shkaktojë tjetër, dhe ne do të bëjë çdo gjë në Grupi i dytë i formatimin e teksteve kaçurrel. Përsëri, të lartë e deri në fund, të gjithë rreshta në mes të formatimin e teksteve. Në C, është e mundur për të krijuar një në qoftë se-tjetër në qoftë se-tjetër zinxhir. Në të vërtetë ju mund të keni në qoftë se-tjetër në qoftë se-tjetër nëse-tjetër, në qoftë se, dhe kështu me radhë e kështu me radhë e kështu me në. Në Scratch, kjo kërkohet shturë blloqe. Ju shtoni një në qoftë se-tjetër, dhe keni pasur për vënë një tjetër brenda të tjerët, dhe kështu me radhë, dhe ajo mori lloj i mbivendosur dhe i komplikuar. Por C, ne nuk kemi për të bërë këtë. Ne në fakt mund të ketë vetëm ajo të jetë një zinxhir si kjo. Përsëri, si ju mund të presin, të gjithë këto degë janë reciprokisht ekskluzive. Ju vetëm mund të ndonjëherë shkojnë poshtë një nga degës. Nëse kjo është e vërtetë. Përndryshe, në qoftë se kjo është e vërtetë. Përndryshe, në qoftë se kjo është e vërtetë. Përndryshe, e bëjnë këtë. Pra, të gjithë katër degët në këtë shembull janë reciprokisht ekskluzive. Kjo është një nëse-tjetër zinxhir nëse-tjetër. Është e mundur edhe pse, dhe nganjëherë shumë të dobishme, për të krijuar një zinxhir të mos Degët reciprokisht ekskluzive. Në këtë shembull, vetëm e tretë dhe degët e katërt janë reciprokisht ekskluzive. Kjo mund të jetë që ju mund të të plotësojë kushtin e parë, dhe ju mund të kënaqë Kushti i dytë, dhe ju mund të kënaqë condition-- i tretë në të cilin rast ju do të shkoni poshtë degën e parë, atëherë ju shkoni poshtë një degë të dytë, atëherë ju do të shkoni poshtë dega e tretë. Apo ndoshta ju të kënaqur e parë kusht, dhe gjendja e dyta, por ju nuk e kënaqin Kushti i tretë. Në këtë rast ju shkoni poshtë e parë degë dhe dega e dytë, dhe pastaj dega e katërt, Arsyeja për këtë është se tjetër do të lidhen vetëm më të afërt nëse. Pra, edhe pse nuk ka një tjetër këtu, që nuk do të krijojë një reciprokisht zinxhir ekskluzive e çdo gjëje. Kjo është vetëm shprehja atje me Boolean shprehje 3-- kjo është ekskluzive reciprokisht me tjetër. Pra, kjo është e mundur, dhe nganjëherë mjaft të dobishme, siç thashë, për të krijuar një zinxhir të degë jo reciprokisht ekskluzive. Le të marrin një vështrim në një tjetër lloj i kushtëzuar, e cila ju nuk e keni parë më parë në Scratch. Ka diçka të quajtur deklarata kaloni. Deklarata switch është lloj i zoti, sepse kjo është një deklaratë me kusht që lejon ju të specifikojë raste të veçanta, në vend të duke u mbështetur në Boolean shprehje për të marrë vendime për ju. Kështu për shembull, le të themi që unë kam këtë program, dhe unë jam duke kërkuar përdoruesit për të siguruar të dhëna për mua. Kështu që unë them, int x = Get Int (), dhe në qoftë se ju nuk jeni të njohur akoma, merrni int është një funksion që është përfshirë edhe në bibliotekë CS50, kështu që nëse ju #include CS50.H ju do të keni Qasje të Merrni INT () dhe të gjitha të saj cousins-- GetFloat, GetString, dhe kështu me radhë. Në thelb një Get funksionin për çdo lloj të dhënat që ne kemi diskutuar tashmë. Pra Int x është e barabartë GetInt. Në thelb ajo që po ndodh është që unë jam në terminalin. Unë jam duke kërkuar përdoruesit të shkruani në një numër. Dhe këtu unë jam kalimi çfarë jam duke bërë, në varësi në atë që përdoruesit shtypur në ftim. Pra, nëse ata shtypen një, unë të shtypura nga një. Dhe pastaj unë të thyer. Nëse ata shkruani dy, unë të shtypura nga dy. Dhe pastaj unë të thyer. Është e rëndësishme të pushim mes çdo rast sepse përndryshe ju do të dështoj. Pra, nëse unë nuk kam asnjë pushimet atje, dhe përdoruesi një typed, çfarë do të ndodhë është ajo do të shtypura një, dy, tre, sorry. Kjo është lloj i sjellje të çuditshme, apo jo? Ju mund të mendoni kështu. Por ka në fakt disa raste ku kjo mund të jetë një gjë shumë e dobishme. Kështu që këtu është një tjetër shembull i një switch Deklarata ku unë harroj prishet. Por unë bëj atë në qëllim. Pra, çfarë ndodh këtu? Mendoni për një të dytë. Ju madje mund të dëshironi të pauzë video. Çfarë ndodh këtu në qoftë se lloje përdorues katër? Kështu që unë kam kërkuar e përdoruesit për input. Dhe ato ofrojnë vlerën 4. Çfarë merr shtypura, kur unë bëj atë? Në rrëshqitje të mëparshëm, ka pasur prishet në mes të gjitha rastet. Dhe kështu ajo do të vetëm shtypura katër dhe pastaj ndalet. Por në këtë rast, ajo nuk do. Çfarë do të ndodhë është që ju do të bien nëpër çdo rast. Pra, në këtë rast unë kam organizuar rastet e mia në një mënyrë të tillë që në qoftë se llojet e përdoruesve 4, Unë do të shtypura katër, tre, dy, një, ik. Dhe në qoftë se ata shtypen 5, unë do të fillojë në pesë dhe të bëjë të njëjtën gjë. Nëse ata shtypur 1, unë do të vetëm të bëjë një të tillë, ik. Pra, në këtë rast, unë jam duke përdorur një switch lloj i cleverly kështu që unë kam ndërmend të bjerë nëpër të gjitha rastet. Por në përgjithësi ju jeni me siguri gonna të duan të thyejnë në mes të gjithë ata, nëse nuk keni një situatë si ky, ku ju jeni lloj i leveraging faktin se ju do të bien nëpër rastet e pa pushim. Pra, kjo është e dyta e madhe llojet e deklaratave të kushtëzuara. I fundit i cili është: Kështu kanë dy copra të kodit C këtu. Një në të majtë dhe një në të djathtë. Një në të majtë duhet ndoshta do të jetë goxha i njohur për ju. Kam Int x. Dhe unë ndoshta duhet kanë kërkuar përdoruesit for-- kjo ndoshta duhet të jetë Int x barabartë GetInt, ose diçka të tillë. Dhe atëherë unë jam duke e bërë një vendim. Nëse disa shprehje Boolean është vërtetë, të caktojë x vlera 5. Përndryshe, të caktojë vlerën e x 6. Që në të majtë ndoshta duhet të jetë mjaft të njohur nga diskutimit tonë i qoftë Tjetër vetëm një moment më parë. A do të jetë i befasuar për të dini që të vijë në të djathtë e bën të njëjtën gjë e saktë? Pra, kjo quhet:? Apo ndonjëherë quhet operatori tresh. Dhe kjo është pretty cool. Është përdorur zakonisht si një mashtrim bukur. Por ajo që ju lejon të bëni është që të simulojnë një Else nëse me të vërtetë të vogël, me të vërtetë trivially shkurtër Degët e kushtëzuara. Ju në përgjithësi nuk do të përdorim:? Nëse ju kishte gjashtë rreshta të kodit midis çdo grup formatimin e teksteve kaçurrel të. Por në qoftë se ju jeni vetëm të marrë një vendim të shpejtë, në qoftë se ju jeni duke shkuar për të bërë një gjë apo të tjera dhe kjo është shumë e thjeshtë, kjo mund të jetë një shembull se si të të bëjë atë me:? operatorin tresh. Pra Int x është e barabartë me shprehje? Gjëja pas pyetjes Mark është vlera e asaj x-së do të jetë në qoftë se shprehje është e vërtetë. Gjë pas zorrës së trashë është çfarë vlere X-it do të jetë në qoftë se shprehja ishte e rreme. Kështu që unë jam pyetur veten, është shprehja e vërtetë? Nëse kjo është, të caktojë x vlera 5. Nëse nuk është, të caktojë vlerën e x 6. Përsëri, si i tha. Kjo është zakonisht vetëm një mashtrim bukur. Dhe ndonjëherë, nëse ju bëhet të vërtetë të kënaqur me të, ju do të bëni këtë, sepse ajo duket lloj i ftohtë në programet tuaja. Në përgjithësi unë jam duke e paraqitur atë në ju tani kështu që ju jeni të njohur me të në qoftë se ju shohin atë. Por sigurisht e dini që ju nuk keni për të shkruar atë në ndonjë të kodit tuaj. Por kjo është diçka që të jenë të njohur me, sepse ju patjetër do të hasni copra të kodit këtu dhe aty ku kjo:? sintaksë, AKA operatorit tresh, është përdorur. Përmbledhje në mënyrë të shpejtë në çfarë conditionals janë, dhe çfarë janë mundësitë në dispozicion për ju në C. Ju keni në qoftë se dhe nëse-tjetër, dhe në qoftë se tjetër në qoftë se, e të tjera. Ju mund të përdorni shprehje boolean për ata për të marrë vendime. Me deklaratat e kaloni ju përdorni Rastet diskrete për të marrë vendime. Ju do të thoni në mënyrë specifike, nëse është e një, ose në qoftë se është dy, ose në qoftë se kjo është tre, Unë do të bëj këtë gjë, ose kjo gjë, apo kjo gjë. Dhe:? Mund të përdoret për të zëvendësuar Degët shumë të thjeshta nëse-tjetër, ose në qoftë se-tjetër zinxhirët për të bërë Kodi tuaj duken një dashuroj pak. Unë jam Doug Lloyd. Dhe kjo është CS50.