>> DOUG LLOYD: Bone, do ni parolu pri cikloj.
Do cikloj estas speco de malvarmeta ĉar ili permesas via programo
ekzekuti liniojn de kodo denove kaj denove kaj super.
Ree, sen devi kopii kaj gluu aŭ alie ripeti ilin.
Ekzistas tri gravaj specoj de cikloj, vi vidos.
Vi probable trovos uzi ĉiu kiel vi progresi tra CS50.
Iuj de tiuj cikloj estas bela familiara al vi de Scratch,
tiom pli, kiel ni faris kun Conditionals, ni metos ilin flank
se estas analogio Ni atingu.
>> Unue estas eterne de Scratch, kiu komparas al dum (vera).
Jen kion ni nomas senfina ciklo.
La linioj de kodo inter la krispa krampoj, tre kiel la puzlo pecoj
ke tauxgas interne la C de la eterne bloki,
ekzekutos ree el supro sube, super kaj super kaj super,
ĉiam.
Post ĉiu, se vi memoras nian diskuto de Buleaj esprimoj,
veraj estas ĉiam vera.
Do se ni faras io tiel longa kiel vera
estas true-- ŝajnas iom silly-- vera estas ĉiam vera, do gxi devos ĉiam kuras.
Ĝi kuros eterne kaj ĉiam kaj eterne, ĝis ni
trovi rimedon por rompi el ĝi kun paŭzo deklaro, kiu denove,
ni vidis nelonge ni parolis pri ŝaltilo.
>> Aŭ alimaniere ĝuste mortigi nian programo, kiu por iu,
se vi iam trovos vin en situacio kun senfina ciklo
kaj vi ne scias kiel halti via programo kurado.
Nur batis kontrolo kaj C kaj ke mortigos vian programon por vi.
Sed tiu estas alia nomata senfina ciklo.
Estas ciklo kiu kuros eterne.
Nun, dum cikloj estas ne ĉiam senfina, ĉar ankaŭ
ni povas anstataŭigi la Bulea esprimon kun io
iom pli utila ol nur veraj.
Do jen alia ekzemplo.
Dum kaj kelkaj Buleaj esprimo kaj tiam buklaj krampoj.
Tio estas sufiĉe multe analoga ripeti ĝis, de nulo.
Kvankam en dua, mi klarigi la diferencon.
>> Do en C, se la Bulea esprimo ene de la dum buklo
taksas al vera, la linioj de kodo inter la krispa krampoj
ekzekutos ripete denove kaj denove kaj super ĝis Bulea esprimo
taksas al falsa.
Do ekzemple, vi eble havas ian vendotablo.
Do diru vi komence de tiu buklo diri int x egalas nulo.
Dum x estas malpli ol 100, do paro aferoj ene ol krispa krampoj,
tiam en la fino de via ciklo, vi diru x plus plus, vi pliigante x.
Eventuale x ricevos 100 kaj vi volas
halti ĉar la kondiĉo x estas malpli ol 100
ne plu estos vera kiel Kiam x estas egala al 100.
100 estas ne malpli ol 100.
>> Nun iom konfuze, la konduto de la grataĵo bloko estas inversa.
Do esti vere zorgema se tiu estas via unua incursión en uzanta cikloj.
Esence, la ripeto ĝis bloko en Scratch
ripetos ion super kaj denove kaj denove,
ĝis la esprimo, la booleana esprimo en la sesangulo estas vera.
Do estos teni faranta ĝin ĝis ĝi estas vera.
Dume, la dum buklo daŭre faros ĝin ĝis ĝi estas falsa.
Do ili estas sufiĉe similaj, sed ekzistas tiu malgranda distingo nur
bone gardi speciale kiel vi faras via unua incursión de transitioning
grati en c.
La sekva ia buklo estas efektive sufiĉe simila.
Ĝi nomiĝas la do dum ciklo.
Ĉi buklo ekzekutos ĉiuj linioj de kodo inter la krispa krampoj tuj,
kaj tiam kontrolos la Bulea esprimo.
Se la Bulea esprimo taksas al vera,
ĝi reiros kaj ripetu ke procezon denove kaj denove
kaj super ĝis la Bulea esprimo taksas al falsa.
Do tiu buklo, malkiel dum buklo, estas garantiita kuri almenaŭ unu fojon.
Tio povas esti bela utila.
>> Laste, ni havas por buklo.
Por bukloj estas speco de sintakse nealloga
kaj ekzistas multe irante sur tie, do toleru min
kiel ni provi kaj rompi tiujn pecojn aparte.
Ĝenerale, la uzkazo de a por buklo estas vi
volas ripeti ion specifa nombro da tempoj.
En tiu ekzemplo tie, Mi havas la ripeto bloko
From Scratch, kiu estas analoga al la por buklo
en C, ripetante io 10 fojojn.
Kaj la por buklo sur la maldekstra, kiu
Estas kvar buklo ke farus la samon.
Ĉi irus 10 fojojn.
Kalkulanta de nulo, ni pliigo ĉiu trairo de la buklo.
Kaj ni tenas faranta tion ĝis mi estas malpli ol 10.
>> Do kio okazas?
Ekzistas tuta multajn kodo tie.
Ni rompi ĝin malsupren al kio okazas paŝo
post paŝo kiel ni trarompos por buklo.
La unua afero kiu okazis estas la vendotablo variablo estas centro.
Ĉio maldekstren de tiu unua punktokomo ene la parantezoj
estas ekzekutita.
En tiu kazo, ni estas dirante int i egalas 0.
Deklarante nova variablo nomata mi, ke variabloj estas tipo entjero
kaj ni dirante la valoron ene ke variablo tuj estos nulo.
>> La dua afero ni fari estas ni tiam tuj taksi
la Bulea esprimo.
Bulea esprimo estas en la mezo de la du punktokomojn.
Mi estas malpli ol 10.
Tio estas vera ĉi tie, ĉu ne?
Ni ĵus diris i estas egala al nulo, kaj tiel 0 estas malpli ol 10,
kaj por ke kondiĉo estas veraj kaj ni nun
procedi ekzekuti la korpon de la banto.
Se ĝi estis falsa.
Se, ekzemple, mi diris anstataŭ i egalas 0 tie Mi diris i egalas 15,
int i egalas 15.
Nu 15 ne estas malpli ol 10, do ni neniam eniras la korpon de la ciklo
ĉar la Bulea esprimo tie taksus esti falsa.
>> Post ni trairu de supro al malsupro, ni renkontas ke fermante krispa krampoj,
tria afero okazas.
La vendotablo variablo estas incremented, aŭ prefere, la linioj
de kodo de komunikaĵo post la dua punktokomo ene de la
por bukloj parentezoj estas ekzekutita.
Do ni komencu marsxi per dirante int i egalas 0.
Tiam ni kontrolu ĉu la Bulea esprimo estas vera.
0 estas malpli ol 10 do ĝi estas vera.
Do ni tuj procedi en la korpon la buklo.
Aĵoj okazos ene la buklo, kaj kiam ni renkontas ke fermante krispa
streĉa, la sekva afero ni fari estas ni diru i plus, plus.
Mi estis nulo nun i estas unu.
Tiam, ni denove kontroli la valoron de la Bulea esprimo en la mezo.
Unu estas malpli ol 10.
Do ni iros tra ĉi procesi denove kaj denove.
Ni akiros la fermo krispa streĉa denove.
Ni pliigo i el 1 ĝis 2 kaj de 2 al 3.
Kaj tiel plu kaj tiel plu kaj tiel plu, ĝis eventuale i valoro iĝas 10.
Estas 10 malpli ol 10?
No.
Kalkulanta de 0, ni iris tra 10 ripetoj de buklo.
Ni ripetis 10 fojojn, nur kiel ni faris en la Scratch bloko.
Kaj tiel tio estas esence la procezo por kvar buklo.
>> Nun forprenanta la fakta kodo kaj metante ĝin
en nur kelkaj bazaj ĝeneralaj deklaroj.
Jen kio okazas.
Ĉiuj deklaroj en komenci estas ekzekutitaj unue.
Vi povus havi pli ol unu.
Tiam, la bulea esprimo estas markita.
Se la esprimo taksas al vera, ekzekuti la korpon la buklo iam.
Se la esprimo taksas falsa, ni faris.
Ni ne agos korpo de la iteracio ajn.
Post ni ekzekutitaj la korpo la buklo iam,
ni tiam agos en la pliigo parto tie.
Kiu estas kutime tuj estos ion kiel i plus, plus
aŭ io simila, ke modifas vendotablo variablo.
Tiam, post ni pliigo, ni kontroli la esprimo denove
kaj ripeti tiujn paŝojn denove kaj kaj super ĝis la esprimo estas
jam ne vera.
>> Do kio estas la uzo kazoj por buklo?
Uzu vi uzas dum buklo kiam vi volas buklo ripeti
nekonata nombro de fojoj, sed ĝi eble povus ne kuras.
Vere komuna ekzemplo de tempeto looping uzata
estas ekzekuti la kontrolo de fluo por ludo.
Vi eble ne scias, kiel longe la uzanto tuj ludos,
sed vi volas lasi fari la samon.
Ĝisdatigante la poziciojn de diversaj spiritoj sur la tabulo.
Vi volas subteni tion movanta ĉiutempe
sed vi ne scias, kiam la uzanto tuj ĉesas ludi
aŭ kiam ili estas tuj kuri el vivojn.
Do momenton buklo estas vere bona por io tia.
Jen bona uzo kazo.
>> Por fari dum buklo, estas sufiĉe simila.
Vi volas buklo ripeti nekonata numeron de fojoj, sed almenaŭ unufoje.
Vi povus uzi tiun por ludo tro, sed vere komuna uzo kazo
estas instigante la uzanto por enigo.
Ĝenerale, oni povas diri ion kiel, donu al mi pozitiva entjero,
kaj vi eble metis tiun ene de do dum buklo.
Do estos ĉiam peti ilin ĉe Almenaŭ unufoje por pozitiva entjero.
Se ili donas vin pozitiva entjero, vi eble rompi la buklo.
Vi povus esti farita.
La Bulea esprimo en la fari dum eble estos falsa.
>> Kaj vi ne petos ilin denove.
Se ili donas vin negativa nombro kie Ili tajpas iun vorton aŭ ion ke estas
ne vere utila al vi, vi povus uzi la
do dum buklo iri reen kaj fari ĝi denove kaj denove kaj denove.
Vi sendube volas demandi ilin doni vin nombro iam,
sed vi ne scias kiomfoje post tio ili eble estos plagoj.
Kaj tiel do dum ĝi estas granda uzo kazo por instigante la uzanto por enigo.
Kaj por bukloj uzi kazo tipe estas kiam
vi volas ripeti maŝo diskreta plurfoje,
kvankam vi ne fariĝu sciu la nombron de tempoj
la momento la programo estas kompilita.
>> Do ekzemple, eble vi havas programon kie vi instigas la uzanton por nombro.
Kaj ili eniras 100.
Kaj tiam via por buklo tiuokaze kuras 100 fojojn.
Aŭ eble ili eniras 1,000 en via programo
kaj poste ekzekuti la buklo 1.000 fojojn.
Ĝi estas specifa nombro da tempoj.
Ili ne nepre scias kion tiu nombro
estas la momento programo estas kompilita.
Ne estas kiel dum buklo kie povus esti malfinio.
Estas iom nombro ke vi simple ne scias.
Nun kvankam mi skizis ĉiuj tiuj uzon kazoj,
Vi devus scii ke en bela multe ĉiu cirkonstanco,
Vi povas interŝanĝi la tutan tri de ĉi tiuj cikloj.
Vi povas uzi por buklo kie alie uzas dum buklo.
Vi povas uzi por buklo kien oni kredus uzu do dum buklo kaj tiel plu.
Ĝi povas esti iom malfacila foje, do ĝenerale estas bona praktiko
adheri al tipa uzo kazo.
Uzu do dum buklo se vi volis iun fojon, almenaŭ.
Uzu por ciklo, se vi volas fari io specifa nombro da tempoj.
Post ĉiu, jen kial estas tri malsamaj specoj de cikloj.
>> Do ili povas esti uzataj en la dekstra kunteksto.
Sed vi povas interŝanĝi ili se vi volas.
Se vi sentas komforte kun dum cikloj kaj vi ĉiam volas uzi dum cikloj.
Estas iu kiu vi povas fari, kvankam ĝi
povus esti iom sintakse Tricky, kie por buklo
estus multe pli simpla.
>> Mi nomiĝas Doug Lloyd kaj ĉi tiu estas CS50.