>> DOUG LLOYD: Alle reg, sodat laat ons praat oor loops.
So loops is gaaf omdat hulle jou program toelaat
om reëls van die kode uit te voer oor en oor en oor.
Herhaaldelik, sonder om te kopieer en plak of hulle anders te herhaal.
Daar is drie groot soorte loops wat jy sal sien.
Jy sal waarskynlik 'n geleentheid om te gebruik elkeen soos jy vorder deur middel van CS50.
Sommige van hierdie loops is redelik bekend aan jou van nuuts af,
so weer, soos ons gedoen het met conditionals, ons sal hulle sit langs mekaar
indien daar 'n analogie kan ons trek.
>> Eerste is vir ewig van nuuts af, wat kan vergelyk word met terwyl (true).
Dit is wat ons 'n oneindige lus bel.
Die reëls van die kode tussen die krullerige draadjies, baie soos die stukke van die legkaart
wat pas in die C van die ewigheid te sluit,
sal herhaaldelik uit te voer van bo na onder, oor en oor en oor,
vir ewig.
Na alles, as jy onthou ons bespreking van Boole uitdrukkings,
waar is altyd waar.
So as ons doen iets so lank as ware
is true-- dit lyk 'n bietjie silly-- ware is altyd waar is, so dit sal altyd loop.
Dit sal vir ewig hardloop en alle ewigheid totdat ons
vind 'n manier om uit dit te breek met 'n breek verklaring, weer, wat
ons 'n rukkie gelede het ons gesien praat oor skakelaar.
>> Of andersins net doodmaak ons program, wat toevallig,
as jy ooit vind jouself in 'n situasie met 'n oneindige lus
en jy weet nie hoe om op te hou jou program uit hardloop.
Net getref beheer en C en wat sal jou program vir jou doodmaak.
Maar dit, weer, is genoem 'n oneindige lus.
Dit is 'n lus wat vir ewig sal loop.
Nou, terwyl loops is nie altyd oneindig, omdat ook
kan ons die Boole vervang uitdrukking met iets
'n bietjie meer nuttig as net waar.
So hier is nog 'n voorbeeld.
Terwyl sommige Boole en uitdrukking en dan krullerige draadjies.
Dit is pretty much analoog herhaal totdat van nuuts af.
Hoewel dit in 'n tweede, sal ek verduidelik die verskil.
>> So in C, indien die Boole-uitdrukking binnekant van die while lus
evalueer waar, die lyne van kode tussen die krulhakies
sal oor en oor herhaaldelik uit te voer en oor totdat Boole-uitdrukking
evalueer vals.
So byvoorbeeld, kan jy het 'n soort van die toonbank.
So sê jy aan die begin van hierdie lus sê int x is gelyk aan nul.
Terwyl x is minder as 100, doen 'n paar dinge binne-in dat krulhakies,
dan in die einde van jou lus, sê jy x plus plus, jy die verhoog x.
Uiteindelik x kry 100 En jy sal
stop nie, want die toestand x is minder as 100
sal nie meer waar as wees Sodra x is gelyk aan 100.
100 is nie minder nie as 100.
>> Nou ietwat verwarrend, die gedrag van die kras blok omgekeer word.
So regtig versigtig as dit is jou eerste inval in die gebruik van loops.
Basies, die herhaling totdat blok in Scratch
iets herhaal oor en oor en oor,
totdat die uitdrukking, die Boole uitdrukking in die seskant is waar.
So sal dit aanhou doen totdat dit is waar.
Intussen het die while lus sal voortgaan om dit te doen totdat dit vals is.
So hulle is baie soortgelyk, maar daar is dat daar min onderskeid net
versigtig te wees van veral as jy jou eerste inval van die oorgang
te krap in c.
Die volgende soort lus is eintlik redelik soortgelyk.
Dit is bekend as die doen terwyl loop.
Dit loop al die lyne te voer van die kode tussen die krulhakies keer,
en dan sal dit gaan die Boole-uitdrukking.
As die Boole-uitdrukking evalueer waar,
dit sal terug te gaan en herhaal dat die proses oor en oor
en oor totdat die Boole uitdrukking evalueer vals.
So hierdie lus, in teenstelling met 'n rukkie loop, is gewaarborg om ten minste een keer te hardloop.
Dit kan baie handig.
>> Ten slotte, ons het 'n lus.
Vir loops is soort van sintakties onaantreklike
en daar is 'n baie gaan hier, so met my dra
as ons probeer en breek hierdie stukke uitmekaar.
Oor die algemeen, die gebruik geval van 'n lus vir 'jy
iets wil 'n herhaling spesifieke aantal kere.
In hierdie voorbeeld hier, Ek het die herhaling blok
van nuuts af, wat is analoog aan die lus
in C, herhaal iets 10 keer.
En die lus op links daar, wat
is 'n vier lus wat sou dieselfde ding te doen.
Dit sou gaan 10 keer.
Tel van nul, ons inkrementeer elke pass van die lus.
En ons hou doen wat totdat ek is minder as 10.
>> So wat gebeur?
Daar is 'n hele klomp van die kode is daar.
Kom ons breek dit af te wat gebeur stap
stap as ons grawe deur 'n lus.
Die eerste ding wat gebeur het, is die toonbank veranderlike sentrum.
Alles aan die linkerkant van die eerste kommapunt binne die hakies
uitgevoer word.
In hierdie geval, ons is sê int i gelyk 0.
Waarby 'n nuwe veranderlike genoem i, dat veranderlikes is 'n tipe integer
en ons is die waarde binnekant sê daardie veranderlike gaan wees nul.
>> Die tweede ding wat ons doen, is Ons het toe onmiddellik te evalueer
die Boole-uitdrukking.
Boole-uitdrukking in die middel van die twee kommapunte.
Ek is minder as 10.
Dit is hier waar, reg?
Ons het net gesê ek is gelyk aan nul, en so 0 minder as 10,
en sodat toestand waar is en ons sal nou
voortgaan om die liggaam van die lus te voer.
As dit is onwaar.
As, byvoorbeeld, het ek in plaas van i gelyk 0 daar het ek gesê ek is gelyk aan 15,
int i gelyk 15.
Wel 15 is nie minder nie as 10, so ons sou nooit die liggaam van die lus betree
omdat die Boole-uitdrukking daar sal evalueer vals te wees.
>> Na gaan ons deur van bo tot onder, ons teëkom wat die sluiting van krullerige brace,
'n derde ding gebeur.
Die toonbank veranderlike geïnkrementeer, of liewer, die lyne
van die kode van 'n verklaring ná die tweede kommapunt binnekant van die
vir loops hakies uitgevoer word.
Sodat ons begin deur sê int i gelyk 0.
Dan gaan ons of die Boole-uitdrukking is waar.
0 minder as 10 so dit is waar.
So ons gaan om voort te gaan in die liggaam van die lus.
Dinge sal gebeur binne-in die lus, en wanneer ons teëkom wat die sluiting van krullerige
stut, die volgende ding wat ons doen is ons sê ek plus, plus.
Ek was nul nou i is een.
Dan het ons weer te keur die waarde van die Boole-uitdrukking in die middel.
Een daarvan is minder as 10.
So ons gaan deur middel van hierdie verwerk weer en weer.
Ons sal na die sluitingsdatum te kry krullerige brace weer.
Ons sal Ek inkrementeer uit 1-2 en 2-3.
En so aan en so aan en so aan, totdat Uiteindelik het ek se waarde word 10.
Is 10 minder as 10?
Geen.
Tel van 0, het ons weg deur 10 iterasies van lus.
Ons het 10 keer herhaal, net soos ons gedoen het in die Scratch blok.
En so dit is basies die proses vir 'n vier lus.
>> Nou weg te neem die werklike kode en sit dit
in net 'n paar basiese algemene stellings.
Hier is wat gebeur.
Al die stellings in begin eers uitgevoer word.
Jy kan meer as een hê.
Dan is die Boole-uitdrukking nagegaan.
As die uitdrukking evalueer waar, voer die liggaam van die lus een keer.
As die uitdrukking evalueer vals, ons gedoen het.
Ons het nie die voer liggaam van die lus nie.
Nadat ons het uitgevoer om die liggaam van die lus 'n tyd,
ons dan doen wat in die inkrement deel daar.
Wat gewoonlik gaan wees iets soos i plus, plus
of iets soos dit, wat verander 'n toonbank veranderlike.
Dan, nadat ons inkrementeer, ons check die uitdrukking weer
en oor en oor herhaal die stappe en oor totdat die uitdrukking is
nie meer waar nie.
>> So, wat is die gebruik gevalle vir 'n lus?
Gebruik jy 'n rukkie loop wanneer gebruik jy wil 'n lus om te herhaal
'n onbekende aantal kere, maar dit moontlik nie al loop.
'N baie algemene voorbeeld van 'n rukkie herhaling gebruik word
is om die beheer vloei vir 'n wedstryd uit te voer.
Jy kan nie weet hoe lank die gebruiker gaan speel,
maar wat jy wil hou doen dieselfde ding.
Die posisies van die opdatering verskeie sprites op die bord.
Jy wil om te hou dinge beweeg ten alle tye,
maar jy weet nie wanneer die gebruiker gaan ophou speel
of wanneer hulle gaan uit lewens te hardloop.
So 'n rukkie lus is regtig goed vir iets soos dit.
Dit is 'n goeie gebruik geval.
>> Vir 'n doen terwyl loop, dit is redelik soortgelyk.
Jy wil 'n lus aan 'n onbekende herhaal aantal kere, maar ten minste een keer.
Jy kan dit gebruik vir 'n spel ook, maar 'n baie algemene gebruik geval
is waarna die gebruiker vir die insette.
Oor die algemeen, kan jy iets sê , gee my 'n positiewe heelgetal is,
en jy kan sit dit binnekant van 'n doen terwyl loop.
So, dit sal hulle altyd vra minste een keer vir 'n positiewe heelgetal.
As hulle gee jou 'n positiewe heelgetal is, jy dalk uit die lus te breek.
Jy kan gedoen word.
Die Boole-uitdrukking in die doen terwyl dalk onwaar.
>> En jy sal hulle nie weer vra nie.
As hulle gee jou 'n negatiewe getal waar hulle tik sommige woord of iets wat
nie regtig nuttig om jy is, kan jy gebruik maak van die
doen terwyl lus om terug te gaan en te doen dit weer en weer en weer.
Jy wil beslis vra hulle te gee jy 'n aantal keer,
maar jy weet nie hoeveel keer nadat hulle dalk peste.
En so 'n doen terwyl dit is 'n groot gebruik geval vir waarna die gebruiker vir die insette.
En 'n vir loops gebruik geval is tipies wanneer
jy wil 'n lus herhaal 'n diskrete aantal kere,
al het jy dalk nie weet wat die aantal kere
die oomblik wat die program saamgestel is.
>> So byvoorbeeld, miskien het jy 'n program waar jy die gebruiker vir 'n aantal vinnige.
En hulle kom 100.
En dan jou lus sal in daardie geval hardloop 100 keer.
Of miskien hulle kom 1000 in jou program
en dan loop die lus 1000 keer.
Dit is 'n spesifieke aantal kere.
Hulle doen nie noodwendig weet wat dat die getal
is die oomblik program saamgestel is.
Dit is nie soos 'n rukkie lus waar dit kan wees oneindig.
Dit is eerder 'n aantal dat jy net nie weet nie.
Nou, selfs al het ek uiteengesit al hierdie gebruik gevalle,
moet jy weet dat in mooi veel elke omstandigheid,
kan jy al wisselaar drie van hierdie loops.
Jy kan 'n gebruik vir lus waar jy andersins sou gebruik om 'n while lus.
Jy kan 'n gebruik vir lus waar jy 'n doen terwyl loop en so aan gebruik.
Dit kan soms 'n bietjie lastig wees, so algemeen is dit 'n goeie praktyk
om te voldoen aan 'n tipiese gebruik geval.
Gebruik 'n doen terwyl loop as jy wou iets een keer, ten minste.
Gebruik 'n lus vir die as jy wil om dit te doen iets wat 'n spesifieke aantal kere.
Na alles, dit is hoekom daar drie verskillende soorte loops.
>> Sodat hulle kan gebruik word in die regte konteks.
Maar jy kan omruil hulle as wat jy wil.
As jy gemaklik met terwyl loops voel en jy wil altyd om te gebruik, terwyl loops.
Dit is iets wat wat jy kan doen, alhoewel dit
dalk 'n bietjie sintakties wees lastig, waar 'n lus vir die
sou 'n baie meer eenvoudig wees.
>> My naam is Doug Lloyd en dit is CS50.