Bone.
Do nun ni parolu pri io vere utila en programming--
kondiĉa deklaroj.
Do kondiĉaj esprimoj permesi viajn programojn
preni decidojn kaj preni malsamajn forkoj en la vojo, iom
Mi aludis al iom pli frua, Dependanta sur la valoroj de variabloj,
aŭ bazita sur kio la uzanto enigas en la programisto, ĉe la komandlinio,
aŭ se vi havas prompto aŭ io simila.
C havas paron de malsamaj manieroj por esprimi kondiĉaj esprimoj, kiuj
Ni ankaŭ kelkfoje nomos kondiĉa branĉo en viaj programoj.
Kaj iuj de tiuj tuj serĉos bela familiara al vi de nulo,
do ni eĉ tiri ilin supren flanko ĉe flanko, ĵus
vi povas fari tiun analogion en via kapo.
>> Do, if-- se estas bela simpla kondicionalo.
Se vi memoras de nulo dekstre tie
vi povus plenigi ke estas seslatero kun blua esprimo se muso malsupren
aŭ se x estas malpli ol 10, aŭ io simila.
Kaj tiam, se x estis malpli ol 10, aŭ se la muso estis fakte, malsupren,
ĉiuj la kodo ene de la enigmo peco ekzekutus.
Ĉiuj aferoj kiuj persvadas ene ol C formon.
>> Simile, ni havas se maldekstre tie.
Se Bulea esprimo, kiun mi simple uzante
kiel anstataŭaĵo por unu el la Bulea esprimojn ni antaŭe diskutis,
malfermita krispa streĉa, proksime frizita streĉa.
Do pensu pri malfermita krispa krampoj kaj fermitaj krispa streĉa
kiel ia analoga al la sandviĉo efiko de la se bloko dekstre
el nenio.
>> Se la Bulea esprimo en la se aserto estas vera,
tiam ĉiuj linioj de kodo inter la krispa krampoj
ekzekutos en ordo de supro al fundo.
Se la Bulea esprimo estas falsaj, ni
salti super ĉio inter la krispa krampoj, ĉar ni nur
volas iri malsupren ke forko en la vojo se la Bulea esprimo estas vera.
>> Ni povas preni tiun unu paŝo cetere kun se alie.
Do tiu Scratch bloko estas bela simila al la
ni vidis nur dua antaŭe, krom prenas du malsamajn padojn bazita
sur kio okazas.
Do se la muso subiris, aŭ se x estis malpli ol 10,
Ni faros ĉion jen intere ke unua forko, kiuj unuaj C.,
>> Alie, se la muso estas supren, aŭ x estas ne malpli ol 10,
Ni faros ĉion en la dua aro.
Kaj tio estas analoga al kion vi vidas tie por C. Se Bulea esprimo,
fari la aĵojn inter la unua aro de frizita krampoj.
Alie, fari la aĵojn inter la dua aro de frizita krampoj.
Do se la Bulea esprimo estas vera, ni
Kion ajn estas inter la unua aro.
Se la Bulea esprimo estas falsa, kiu deĉenigi la alian,
kaj ni devus fari kion ajn estas en la dua aro de frizita krampoj.
Denove, supre sube, ĉiuj linioj en inter la krampoj.
>> En C, eblas krei an se-alia se-alia ĉeno.
Fakte vi povas havi se-alia se-alia se-alia, se, kaj tiel plu kaj tiel plu kaj tiel
sur.
En Scratch, tio postulis nestumante la blokoj.
Vi aldonas se-alie, kaj vi devis meti alian ene de la alia,
kaj tiel plu, kaj alvenis speco de nestitaj kaj komplika.
Sed C, ni ne devos fari tion.
Ni povas fakte nur devas prezentigxas ĉeno kiel ĉi.
Denove, kiel vi povus atendi, ĉiuj tiuj branĉoj estas reciproke ekskluzivaj.
Vi nur povas iam iri malsupren unu de la branĉo.
Se tio estas vera.
Alie, se tio estas vera.
Alie, faru tion.
Do ĉio kvar el la branĉoj en tiu ekzemplo estas reciproke ekskluzivaj.
Ĝi estas kvazaŭ-alie se-alia ĉeno.
>> Eblas tamen, kaj foje tre utila,
krei ĉenon de ne reciproke ekskluziva branĉoj.
En tiu ekzemplo, nur la tria kaj kvara branĉoj estas reciproke ekskluzivaj.
Ĝi eblus ke vi povus kontentigi la unuan kondiĉon,
kaj vi povus kontentigi la dua kondiĉo,
kaj vi povus kontentigi la tria condition-- tiaokaze
vi irus malsupren la unuan branĉon, Tiam vi iros malsupren duan branĉon,
tiam vi irus malsupren la tria branĉo.
Aŭ eble vi kontentigi la unua kondiĉo, kaj la dua kondiĉo,
sed vi ne kontentigi la tria kondiĉo.
En tiu kazo vi iros malsupren la unua branĉo kaj la dua brancxo,
kaj tiam la kvara branĉo,
>> La kialo estas, ke la alia nur ligu al la plej proksima se.
Do kvankam ekzistas an alian tie, ke
ne nepre kreos reciproke ekskluziva ĉeno de ĉio.
Ĝi estas nur la esprimo tie kun Bulea
esprimo 3-- jen la reciproke ekskluziva kun la alia.
Do ĝi estas ebla, kaj foje tre utila,
kiel mi diris, por krei ĉenon de Ne reciproke ekskluzivaj branĉoj.
Ni rigardu alian speco de kondiĉa, kiu
Vi ne vidis antaŭe en Scratch.
Estas io nomita la ŝaltilo deklaro.
La ŝaltilo deklaro estas speco de neta ĉar ĝi estas
kondiĉa deklaro kiu permesas vi specifi apartajn kazojn,
anstataŭ dependi Buleaj esprimoj por fari decidojn por vi.
Do ekzemple, ni diru ke mi havas tiun programon,
kaj mi petas la uzanto provizi enigon al mi.
Do mi diras, int x = Get Int (), kaj se vi ne estas familiara tamen,
atingi int estas funkcio kiu estas Ankaŭ inkluzivita en la CS50 biblioteko,
do se vi include cs50.h vi devos aliro al Get Int () kaj ĉiuj ĝiaj
kuzoj GetFloat, GetString, kaj tiel plu.
Esence unu Get funkcio por ĉiu datumtipo ke ni jam diskutis.
>> Do int x egalas GetInt.
Esence, kio okazas Estas mi estas ĉe la terminalo.
Mi demandas al la uzanto tajpas en nombro.
>> Kaj tie mi ŝaltanta kion mi faras, depende
sur kion la uzanto tajpas ĉe la prompto.
Do se oni tajpas, mi presi unu.
Kaj tiam mi rompos.
Se ili tajpu du, mi elprinti du.
Kaj tiam mi rompos.
Estas grave rompi inter ĉiu kazo
ĉar alie vi falos tra.
Do, se mi ne havas ajnan paŭzoj ekzistas, kaj la uzanto
tajpita unu, kio okazus estas estus presi unu, du, tri, pardonon.
Tio estas speco de stranga konduto, ĉu ne?
Vi povus pensi tiel.
Sed ekzistas fakte kelkaj kazoj kie tio povus esti bela utila afero.
Do jen alia ekzemplo de ŝaltilo deklaro kie mi preterlasas la paŭzoj.
Sed mi faros ĝin sur celo.
>> Do kio okazas ĉi tie?
Pensu dum sekundo.
Vi povas eĉ volas paŭzi la video.
>> Kio okazas tie se la uzanto tajpas kvar?
Do mi demandis la uzanto por enigo.
Kaj ili provizas la valoro 4.
Kio gets presitaj kiam mi faras tion?
Sur la antaŭa glitejo, ekzistis paŭzoj inter ĉiuj kazoj.
Kaj tiel ĝi estus nur presi kvar kaj tiam halti.
Sed en ĉi tiu kazo, ĝi ne volas.
Kio okazos estas vi falos tra ĉiu kazo.
>> Do ĉi-kaze mi organizas mian kazoj tiel ke se la uzanto tajpas 4,
Mi presos kvar, tri, du, unu, Blast Off.
Kaj se ili tajpita 5, mi komencus ĉe kvin kaj faru la samon.
Se ili tajpitaj 1, mi volus nur faru unu, blast for.
>> Do en ĉi tiu kazo, Mi uzas ŝaltilo ia lerte tiel
ke mi intencas fali tra ĉiuj kazoj.
Sed ĝenerale vi verŝajne gonna volas rompi inter ĉiuj ili,
krom se vi havas situacion tiel unu kie vi estas
speco de ekspluatanta la fakto ke vi falas tra la kazoj sen paŭzo.
Do jen la dua el la gravaj tipoj de kondiĉaj deklaroj.
La lasta de kiu estas?: Do mi havas du fragmentojn de C kodo tie.
Unu maldekstre kaj unu dekstre.
La unu maldekstre devus probable estos bela familiara al vi.
>> Mi havas int x.
Kaj mi verŝajne devus demandis la uzanto
for-- ĉi devus verŝajne esti Mez x egalas GetInt, aŭ io simila.
Kaj poste mi preni decidon.
Se iuj Bulea esprimo estas vera, atribui x la valoron 5.
Alie, atribui x la valoron 6.
>> Ke maldekstre devus verŝajne esti bela familiara el nia diskuto
de Se Else nur antaŭ momento.
Ĉu vi estus surprizita scii ke la linio sur la dekstra
faras precize la saman aferon?
>> Do tio nomiĝas?: Aŭ kelkfoje vokis la triargumenta operatoro.
Kaj estas sufiĉe freŝa.
Ĝi estas kutime utiligita kiel cute truko.
>> Sed kion ĝi al vi permesas fari estas simuli Se Else kun vere malgranda,
vere bagatele mallonga kondiĉa branĉoj.
Vi ĝenerale ne uzus?: Se vi havis ses linioj de kodo inter ĉiu aro
de frizita krampoj.
Sed se vi estas nur farante rapidan decidon,
se vi tuj faros unu afero aŭ la alia kaj ĝi estas tre simpla,
ĉi povus esti ekzemplo de kiel faru kun?: la triargumenta operatoro.
Do int x egalas esprimo?
La afero post la demando marko estas kio iksoj valoro
estos se esprimo estas vera.
>> La afero post la dupunkto diras x valoro
estus se la esprimo estis falsa.
Do mi demandas min mem, estas la esprimo estas vera?
Se jes, atribui x la valoron 5.
Se ĝi ne estas, atribui x la valoron 6.
Denove, kiel mi diris.
Tio estas kutime nur bela truko.
Kaj kelkfoje se vi fariĝas vere komforta kun ĝi,
vi faros tion ĉar ĝi aspektas speco de cool en viaj programoj.
Ĝenerale mi prezenti gxin al vi nun tiom vi konas lin
se vi vidos.
Sed certe scias ke vi ne havas skribi ĝin en ia via kodo.
Sed estas io esti familiara kun, ĉar vi sendube renkontos
fragmentojn de kodo tie kaj tie kie tio?: sintakso,
AKA la triargumenta operatoro, estas uzata.
>> Do rapidan resumon sur kio Conditionals estas,
kaj kion la ebloj estas disponeblaj al vi en C. Vi havas Se se-alia,
kaj se alia se, kaj tiel plu.
Vi povas uzi Bulea esprimoj por tiuj fari decidojn.
>> Kun ŝaltilo deklaroj vi uzas diskreta kazoj preni decidojn.
Vi estus specife diri, se ĝi estas unu, aŭ se ĝi estas du, aŭ se ĝi estas tri,
Mi faros tion, aŭ tiu afero, aŭ tiun aferon.
Kaj?: Povas esti uzata por anstataŭi tre simpla se-alia branĉoj,
aŭ se-ajn ĉenojn fari via kodo aspektas iom imago.
>> Mi Doug Lloyd.
Kaj tiu estas CS50.