>> DOUG LLOYD: Allt í lagi, svo við skulum tala um lykkjur.
Svo lykkjur eru góður af kaldur vegna þess að þeir leyfa program
að framkvæma línur af kóða aftur og aftur og aftur.
Endurtekið án þess að þurfa að afrita og líma eða annars endurtaka þau.
Það eru þrjár helstu konar lykkjur sem þú sérð.
Þú munt sennilega hafa tækifæri til að nota hver eins og þú framfarir í gegnum CS50.
Sum þessara lykkjur eru nokkuð þekki þig frá grunni,
svo aftur, eins og við gerðum með conditionals, við munum setja þá upp hlið við hlið
ef það er hliðstæðan við getum draga.
>> Fyrst er að eilífu frá grunni, sem jafnast á við á meðan (satt).
Þetta er það sem við köllum óendanlega lykkju.
Línurnar kóða milli hrokkið axlabönd, líkt og stykki púsluspil
að passa inni í C af eilífu loka,
mun framkvæma ítrekað frá toppi til botn, aftur og aftur og aftur,
að eilífu.
Eftir allt saman, ef þú manst okkar umfjöllun um Boolean tjáning,
satt er alltaf satt.
Þannig að ef við erum að gera eitthvað svo lengi sem sannur
er true-- það virðist svolítið silly-- satt er alltaf satt, svo það verður alltaf að keyra.
Það verður keyrt eilífu og aldur og ævi þar til við
finna leið til að brjótast út úr því með brjótast yfirlýsingu, sem aftur,
við sáum smá stund síðan við var að tala um skipta.
>> Eða annars bara drepa okkar program, sem fyrir tilviljun,
ef þú finnur alltaf sjálfur í Ástandið með óendanlega lykkju
og þú veist ekki hvernig á að stöðva program frá hlaupandi.
Bara högg stjórn og C og að drepa program fyrir þig.
En þetta, aftur, er kallað óendanlega lykkju.
Það er lykkja sem mun keyra að eilífu.
Nú, á meðan lykkjur eru ekki alltaf óendanlega, því einnig
við getum skipta um Boolean tjáning með eitthvað
aðeins meira gagni en bara satt.
Svo hér er annað dæmi.
Þó sumir Boolean tjáning og þá hrokkið axlabönd.
Það er ansi mikið hliðstætt að endurtaka þangað til, frá grunni.
Þótt í annað, ég útskýra muninn.
>> Svo í C ef Boolean tjáningu inni á meðan lykkja
metur að sanna, línurnar númer á milli hrokkið axlabönd
mun framkvæma endurtekið aftur og aftur og aftur þangað til Boolean tjáningu
metur að rangar.
Svo til dæmis, þú gætir hafa einhvers konar borðið.
Svo segja þér í upphafi Þessi lykkja segja int x jafnt núlli.
Þó x er minna en 100, gera a par það inni að hrokkið axlabönd,
þá í lok lykkja, þú segir x plús plús, þú ert incrementing x.
Loksins x vilja fá að 100 og þú verður
hætta vegna þess að ástand x er stærra en 100
mun ekki lengur vera satt eins og fljótt og x er jafnt og 100.
100 er ekki minna en 100.
>> Nú nokkuð villast, hegðun af grunni blokk er snúið við.
Svo vera mjög varkár ef þetta er Fyrsta skyndiárás inn nota lykkjur.
Í grundvallaratriðum, the endurtaka þar blokk í grunni
mun endurtaka eitthvað aftur og aftur og aftur,
þar til tjáningar, sem Boolean tjáning í sexhyrningi er satt.
Þannig að það verður að halda að gera það þar til það er satt.
Á sama tíma, á meðan lykkja mun halda áfram að gera það þangað til það er ósatt.
Svo þeir eru alveg svipuð, en það er þessi litla greinarmun bara
að vera varkár af sérstaklega eins og þú gerir Fyrsta skyndiárás þinn frá breyting
að klóra í c.
Næsta konar lykkju er reyndar mjög svipuð.
Það er kallað do while lykkju.
Þessi lykkja mun framkvæma allar línur af kóða milli hrokkið axlabönd einu sinni,
og þá mun athuga Boolean tjáningu.
Ef Boolean tjáningu metur satt
það mun fara til baka og endurtaka sem ferli aftur og aftur
og aftur þangað til að Boolean tjáning metur false.
Þannig að þetta lykkja, ólíkt while lykkju, er tryggt að hlaupa að minnsta kosti einu sinni.
Þetta getur verið nokkuð gagnlegt.
>> Loks höfum við til hliðar.
Fyrir lykkjur eru eins konar setningafræðilega óaðlaðandi
og það er mikið um að vera hér, svo bera með mér
og við reynum og brjóta þessi stykki í sundur.
Almennt er nota málið af a for lykkju er þér
vil endurtaka eitthvað tilteknum fjölda skipta.
Í þessu dæmi hér, Ég hef endurtekið blokk
frá grunni, sem er hliðstætt for lykkju
í C, endurtaka eitthvað 10 sinnum.
Og til hliðar á vinstri þar sem
er fjögurra lykkja sem myndi gera það sama.
Þetta myndi fara 10 sinnum.
Talið frá núlli, við hækka hvert skot lykkju.
Og við höldum að gera það þangað til I er minni en 10.
>> Svo gerist það?
There er a heild einhver fjöldi af kóða þar.
Við skulum brjóta hann niður til hvað er að gerast skref
skref sem við grafa í gegnum for lykkju.
The fyrstur hlutur sem gerðist er teljarinn breyta er sent.
Allt vinstra megin við sem fyrst semíkomma inni í sviga
er keyrð.
Í þessu tilfelli, við erum segja int i jafngildir 0.
Lýsa nýja breytu sem heitir i, sem breytur er gerð heiltala
og við erum að segja verðmæti inni sem breyta er að fara að vera núll.
>> The second hlutur sem við gerum er við þá strax meta
Boolean tjáningu.
Boolean tjáning er í miðja af tveimur semikommum.
I er minni en 10.
Það er satt hér, ekki satt?
Ég sagði bara ég er jafn núll, og svo 0 er minna en 10,
og svo að ástand er satt og við munum nú
halda áfram að framkvæma líkama lykkju.
Ef það var rangt.
Ef, til dæmis, segir I stað þess að Ég jafngildir 0 þar sem ég sagði að ég jafngildir 15,
int i jafngildir 15.
Vel 15 er ekki minna en 10, þannig að við myndi aldrei komast inn í líkama lykkju
vegna Boolean tjáningu það myndi meta það ósatt.
>> Eftir að við að fara í gegnum frá toppur til botn, við lendum að loka hrokkið Brace,
þriðja hlutur gerist.
Teljarinn breyta er hækkaður, eða öllu heldur, línur
af kóða á yfirlýsingu eftir Annað semíkomma innan í
fyrir lykkjur sviga er keyrð.
Svo við byrjum á segja int i jafngildir 0.
Þá erum við að athuga hvort Boolean tjáning er satt.
0 er minna en 10 svo það er satt.
Þannig að við erum að fara að halda áfram inn í líkamann í lykkju.
Það mun gerast inni í lykkju, og þegar við lendum í að loka hrokkið
spelka, næsta sem við gera er að við segja að ég plús, plús.
Ég var núll nú er ég einn.
Þá, athuga við aftur gildi Boolean tjáning í miðjunni.
Ein er minna en 10.
Þannig að við munum fara í gegnum þetta ferlið aftur og aftur.
Við munum komast að lokun hrokkið Brace aftur.
Við munum hækka i frá 1 til 2 og frá 2 til 3.
Og svo framvegis og svo framvegis og svo framvegis, þar til loksins gildi sem ég er verður 10.
Er 10 minna en 10?
Nei
Talið frá 0, við höfum farið í gegnum 10 endurtekningar lykkju.
Við höfum endurtekin 10 sinnum, bara eins og við gerðum í grunni blokk.
Og svo er það í rauninni að Aðferð til fjögurra lykkju.
>> Nú taka burt Raunveruleg kóða og setja það
á aðeins grunnupplýsingar almennum yfirlýsingum.
Hér er það sem gerist.
Allar yfirlýsingar í byrja eru keyrð fyrst.
Þú gætir haft fleiri en einn.
Þá er Boolean tjáningu er köflóttur.
Ef tjáning metur satt framkvæmdur lykkja einu sinni.
Ef tjáning metur rangar, við erum að gera.
Við framkvæma ekki Lík lykkju á öllum.
Eftir að við höfum gengið frá líkami lykkja eitt sinn,
við gerum þá hvað er í vöxtur hluti þar.
Sem er yfirleitt að fara að vera eitthvað eins og i plús, auk
eða eitthvað svoleiðis, sem breytir a gegn breytu.
Þá, eftir að við hækka, við athuga tjáningu aftur
og endurtaka þessi skref aftur og aftur og aftur þangað til orðið er
ekki lengur satt.
>> Svo það eru nota tilvikum um lykkju?
Notar þú notar while lykkju þegar þú vilt lykkju til að endurtaka
óþekkt nokkrum sinnum, en það hugsanlega gæti ekki keyrt alla.
A mjög algeng dæmi um a meðan lykkja notuð
er að keyra stjórna flæði í leik.
Þú might ekki vita hversu lengi notandi er að fara að spila,
en þú vilt halda gera slíkt hið sama.
Uppfæra stöðu ýmsar sprites á borðinu.
Þú vilt halda það færa á öllum tímum,
en þú veist ekki þegar notandi er að fara að hætta að spila
eða þegar þeir eru að fara að keyra út af lífi.
Svo er á meðan lykkja raun gott fyrir eitthvað svoleiðis.
Það er gott að nota málið.
>> Fyrir að gera á meðan lykkja, það er nokkuð svipað.
Þú vilt lykkju til að endurtaka óþekkt nokkrum sinnum, en að minnsta kosti einu sinni.
Þú gætir notað þetta fyrir leik of, en mjög algengar málið
er vekur notandi til inntak.
Almennt, gætir þú sagt eitthvað eins, gefa mér jákvæð heiltala,
og þú gætir sett það inni í do while lykkju.
Þannig að það verður alltaf að spyrja þá á kosti einu sinni fyrir jákvæða heiltölu.
Ef þeir gefa þér jákvæða heiltölu, þú gætir brjóta út úr lykkja.
Þú gætir verið að gera.
The Boolean tjáning í sem gera á meðan gæti verið röng.
>> Og þú munt ekki spyrja þá aftur.
Ef þeir gefa þér neikvæð tala hvar þeir slá nokkur orð eða eitthvað sem er
ekki mjög gagnlegt að þú, þú gætir notað
ekki meðan lykkja til að fara til baka og gera það aftur og aftur og aftur.
Þú vilt örugglega að spyrja þá að gefa þér númerið einu sinni,
en þú veist ekki hversu oft eftir að þeir gætu verið meindýr.
Og svo do meðan það er mikill notkun Rökin fyrir vekur notandi til inntak.
Og fyrir lykkjur nota Málið er oftast þegar
þú vilt að endurtaka lykkju stakur fjöldi af sinnum,
þó að þú gætir ekki vita hversu oft
Um leið og forritið er unnin.
>> Svo til dæmis, kannski þú hafa a program þar sem þú hvetja notandann til fjölda.
Og þeir fara inn 100.
Og síðan þín fyrir lykkju mun í því tilviki að keyra 100 sinnum.
Eða kannski þeir inn 1000 í forritinu
og þá hlaupa lykkju 1.000 sinnum.
Það er sérstök tala af sinnum.
Þeir gera ekki endilega vita hvað að tala
er stund program er unnin.
Það er ekki eins og while lykkju þar sem það gæti verið óendanlega.
Það er frekar að tala að þú bara veist það ekki.
Nú jafnvel þó að ég hef lýst allar þessar nota tilvikum,
þú ættir að vita að í nokkuð mikið á hverjum aðstæður,
þú getur skipti öllu þrír af þessum lykkjur.
Þú getur notað fyrir lykkju þar sem þú myndi annars nota while lykkju.
Þú getur notað fyrir lykkju hvar sem þú vilt nota gera á meðan lykkja og svo framvegis.
Það getur verið svolítið erfiður stundum, svo yfirleitt er það gott starf
að fylgja dæmigerðu nota málið.
Notaðu do while lykkju ef þú vildi eitthvað einu sinni, að minnsta kosti.
Nota fyrir lykkju ef þú vilt gera eitthvað tiltekið nokkrum sinnum.
Eftir allt saman, það er hvers vegna það eru þrjár mismunandi tegundir af lykkjur.
>> Þannig að þeir geta vera notaður í réttu samhengi.
En þú getur skipti þá ef þú vilt.
Ef þú ert ánægð með meðan lykkjur og þú vilt alltaf að nota á meðan lykkjur.
Það er eitthvað sem þú getur gert, þótt það
gæti verið smá setningafræðilega erfiður, þar sem fyrir lykkja
væri miklu meira einfalt.
>> Mitt nafn er Doug Lloyd og þetta er CS50.