>> DOUG LLOYD: Lahat ng mga karapatan, kaya makipag-usap tungkol loops ipaalam.
Kaya loop ay uri ng cool dahil pinapayagan nila ang iyong programa
upang maipatupad linya ng code nang paulit-ulit.
Paulit-ulit, nang hindi na kinakailangang upang kopyahin at i-paste o kung hindi man ulitin ang mga ito.
May tatlong mga pangunahing uri ng mga loop makikita mo.
Ikaw marahil ay may pagkakataon na gumamit ng ang bawat isa bilang pagsulong sa pamamagitan CS50.
Ang ilan sa mga loops ay medyo pamilyar sa iyo mula sa simula,
kaya muli, tulad ng ginawa namin sa conditionals, maglalagay kami ng mga ito hanggang magkatabi
kung may isang pagkakatulad makukuha natin.
>> Una ay magpakailanman mula sa simula, na naghahambing sa habang (true).
Ito ay kung ano ang tawag namin sa isang walang-katapusang loop.
Ang mga linya ng code sa pagitan ng mga kulot braces, na halos tulad ng mga piraso ng puzzle
na magkasya sa loob ng C ng magpakailanman harangan,
ay execute nang paulit-ulit mula sa tuktok hanggang sa ibaba, paulit-ulit,
magpakailanman.
Pagkatapos ng lahat, kung ang pagpapabalik sa iyo ang aming talakayan ng Boolean expression,
totoo ay palaging totoo.
Kaya kung ang aming ginagawa kaya hangga't totoo ang isang bagay
ay true-- tila isang maliit silly-- totoo ay totoo ng nakasanayan, kaya makikita ito palaging patakbuhin.
Makikita ito tumakbo magpakailanman at magpakailan pa man hanggang sa kami
makahanap ng isang paraan upang magsimula ng ito sa ng pahinga statement, na muli,
Nakita namin ang isang maliit na habang nakaraan namin ay nag-uusap tungkol sa switch.
>> O kung hindi man patayin lang ang aming programa, na hindi sinasadya,
kung sakaling mahanap ang iyong sarili sa sitwasyon na may isang walang-katapusang loop
at hindi mo alam kung paano itigil iyong programa mula sa pagtakbo.
Pindutin lamang control at C at na makikita pumatay ng iyong programa para sa iyo.
Ngunit ito, muli, ay tinatawag na isang walang-katapusang loop.
Ito ay isang loop na tatakbo habang panahon.
Ngayon, habang loop ay hindi palaging walang katapusan, at dahil din
maaari naming palitan ang Boolean expression sa isang bagay
isang maliit na mas kapaki-pakinabang na lamang totoo.
Kaya narito ang isa pang halimbawa.
Habang at ilang Boolean expression at pagkatapos ay curly braces.
Iyan ay medyo marami kahalintulad ulitin hanggang, mula sa simula.
Kahit na sa isang segundo, kukunin ko ipaliwanag ang mga pagkakaiba.
>> Kaya sa C, kung ang Boolean expression sa loob ng loop habang
sinusuri sa totoo, ang mga linya ng code sa pagitan ng mga kulot tirante
ay execute nang paulit-ulit nang paulit-ulit ulit hanggang Boolean expression
sinusuri sa false.
Kaya halimbawa, maaari mong may ilang mga uri ng counter.
Kaya sabihin mo sa simula ng ito loop sabihin int x ay katumbas ng zero.
Habang x ay mas mababa sa 100, gawin ang isang pares mga bagay-bagay sa loob na curly braces,
pagkatapos ay sa dulo ng iyong mga loop, sabihin mo x plus plus, ikaw ay incrementing x.
Sa kalaunan x ay makakakuha ng sa 100 at ikaw ay
itigil dahil sa kalagayan x ay mas mababa sa 100
ay hindi na tunay na bilang madaling x ay katumbas ng 100.
100 ay hindi mas mababa sa 100.
>> Ngayon medyo confusingly, ang pag-uugali ng scratch block ay baligtad.
Kaya maging tunay maingat kung ito ay iyong unang pandarambong sa gamit loops.
Karaniwang, ang paulit-ulit na hanggang block sa simula
ulitin ang isang bagay nang paulit-ulit,
hanggang sa expression, ang Boolean expression sa heksagono ay totoo.
Kaya ito ay patuloy na paggawa ng ito hanggang sa ito ay totoo.
Samantala, habang loop ay patuloy na gawin ito hanggang sa ito ay hindi totoo.
Kaya ito ay lubos na katulad, ngunit may na maliit na pagkakaiba lamang
mag-ingat ng lalo habang isinasagawa mo iyong unang pandarambong mula sa paglipat
upang Kaskasin sa c.
Ang susunod na uri ng loop ay tunay na medyo katulad.
Ito ay tinatawag na gawin habang loop.
Loop na ito ay isakatuparan ang lahat ng mga linya ng code sa pagitan ng mga kulot braces sabay,
at pagkatapos ito ay suriin ang Boolean expression.
Kung ang Boolean expression sinusuri sa totoo,
makikita ito bumalik at ulitin na proseso nang paulit-ulit
ulit hanggang ang Boolean expression sinusuri sa false.
Kaya ito loop, hindi katulad ng isang habang loop, ay garantisadong upang tumakbo ng hindi bababa sa isang oras.
Ito ay maaaring medyo kapaki-pakinabang.
>> Sa wakas, kami ay may isang para sa loop.
Para sa mga loop ay uri ng syntactically hindi nakaaakit
at mayroong isang pulutong ng pagpunta sa dito, kaya makisama sa akin
bilang subukan at masira ang mga piraso ng sandata namin.
Sa pangkalahatan, ang pagkakataon ng paggamit ng isang para sa loop ay sa iyo
gusto mong ulitin ang isang bagay ng isang tiyak na bilang ng beses.
Sa halimbawang ito dito, Mayroon akong mga umuulit block
mula sa simula, na kung saan ay kahalintulad sa para sa loop
sa C, paulit-ulit ang isang bagay na 10 beses.
At ang para sa loop sa kaliwang doon, na
ay isang apat na loop na ay gawin ang parehong bagay.
Ito ay pumunta sa 10 beses.
Nagbibilang mula sa zero, tayo paglakas bawat pass ng loop.
At patuloy na namin ang paggawa na hanggang i ay mas mababa sa 10.
>> Kaya kung ano ang mangyayari?
May isang buong pulutong ng code doon.
Masira ni ito pababa sa Hayaan kung ano ang nangyayari hakbang
sa pamamagitan ng hakbang na namin maghukay sa pamamagitan ng isang para sa loop.
Ang unang bagay na nangyari ay counter variable ay center.
Lahat ng bagay sa kaliwa ng na unang semicolon sa loob ng panaklong
ay naisakatuparan.
Sa kasong ito, kami ay sinasabi int i katumbas ng 0.
Ang pagdeklara ng isang bagong variable na tinatawag na i, na mga variable ay isang integer uri
at sinasabi natin ang halaga sa loob variable na ito ay pagpunta sa maging zero.
>> Ang ikalawang bagay na ginagawa namin ay pagkatapos ay agad naming suriin
ang Boolean expression.
Boolean expression ay sa gitna ng dalawang tuldok-kuwit.
Ako ay mas mababa sa 10.
Iyan ay totoo dito, right?
Lang sinabi naming i ay katumbas ng zero, at iba 0 ay mas mababa sa 10,
at iba kondisyon na ay totoo at kami ngayon
magpatuloy upang maipatupad ang katawan ng loop.
Kung ito ay hindi totoo.
Kung, halimbawa, sinabi ko sa halip ng i katumbas ng 0 doon sinabi ko i katumbas 15,
int i ay katumbas ng 15.
Well 15 ay hindi mas mababa sa 10, kaya kami ay hindi kailanman ipasok ang katawan ng loop
dahil ang Boolean expression doon ay suriin na hindi totoo.
>> Pagkatapos namin pumunta sa pamamagitan ng mula sa itaas hanggang sa ibaba, nakatagpo kami na ang pagsasara ng kulot suhay,
isang ikatlong bagay ang mangyayari.
Ang counter variable ay incremented, o sa halip, ang mga linya
ng code ng isang pahayag pagkatapos ng pangalawang semicolon sa loob ng
para sa mga loop panaklong ay naisakatuparan.
Kaya simulan out namin sa pamamagitan ng sinasabi int i katumbas ng 0.
Pagkatapos suriin namin kung o hindi ang Boolean expression ay totoo.
0 ay mas mababa sa, 10 kaya ito ay totoo.
Kaya kami ay pagpunta upang magpatuloy sa katawan ng loop.
Mga bagay na mangyayari sa loob ng loop, at kapag nakatagpo kami na ang pagsasara ng mga kulot
suhay, ang susunod na bagay kami gawin ay sabihin namin i plus, plus.
Ako ay zero na ngayon ay i isa.
Pagkatapos, muli naming suriin ang halaga ng ang Boolean expression sa gitna.
Ang isa ay mas mababa sa 10.
Kaya makikita namin pumunta sa pamamagitan ng iproseso muli at muli.
Babalikan ka namin sa pagsasara muli kulot suhay.
Susubukan naming dagdagan i mula sa 1 hanggang 2 at mula 2 hanggang 3.
At iba pa at iba pa at iba pa, hanggang sa kalaunan halaga i ay nagiging 10.
Ay 10 mas mababa sa 10?
Hindi.
Nagbibilang mula sa 0, kami ay wala na sa pamamagitan ng 10 mga iteration ng loop.
Paulit-ulit na kami ng 10 beses, na lamang tulad ng ginawa namin sa scratch block.
At kaya na talaga ang proseso para sa isang apat na loop.
>> Ngayon ang pagkuha ang layo ng aktwal na code at ilagay ito
sa loob lamang ng ilang mga pangunahing pangkalahatang pahayag.
Narito ang kung ano ang mangyayari.
Ang lahat ng mga pahayag sa simulan ay unang naisakatuparan.
Maaari mong magkaroon ng higit sa isa.
Pagkatapos, ang mga Boolean expression ay naka-check.
Kung ang expression sinusuri sa totoo, maipatupad ang mga katawan ng loop isang panahon.
Kung sinusuri ang expression sa false, tapos na kami.
Hindi namin maipatupad ang mga katawan ng loop sa lahat.
Pagkatapos na naisakatuparan namin ang katawan ng loop isang pagkakataon,
namin at pagkatapos ay gawin kung ano ang sa paglakas bahagi doon.
Na kung saan ay karaniwang magiging isang bagay tulad ng i plus, plus
o isang bagay tulad na, na Binabago ng isang counter variable.
Pagkatapos, pagkatapos naming dagdagan, kami suriin muli ang expression
at ulitin ang mga hakbang sa loob at higit ulit hanggang ang expression ay
hindi na totoo.
>> Kaya ano ang mga kaso ng paggamit para sa isang loop?
Gamitin gumamit ka ng isang habang loop kapag nais mo ang isang loop upang ulitin
isang hindi kilalang bilang ng mga beses, ngunit ito ay marahil ay hindi maaaring tumakbo sa lahat.
Ang isang tunay na karaniwang halimbawa ng isang habang looping ginagamit
ay upang patakbuhin ang kontrol ng daloy ng laro.
Maaaring hindi mo alam kung gaano katagal ang user ay pagpunta sa pag-play,
ngunit nais mong panatilihin ang paggawa ng parehong bagay.
Ina-update ang mga posisyon ng iba't-ibang mga sprites sa board.
Gusto mong panatilihin ang mga bagay-bagay paglipat sa lahat ng oras,
ngunit hindi mo alam kung kailan ang user ay pagpunta sa itigil ang paglalaro
o kapag sila ay pagpunta pagka-ubos ng mga buhay.
Kaya isang habang loop ay talagang mabuti para sa isang bagay na tulad ng.
Iyan ay isang magandang pagkakataon ng paggamit.
>> Para sa isang gawin habang loop, ito ay medyo katulad.
Gusto mo ng isang loop upang ulitin ang isang hindi kilalang bilang ng beses, ngunit hindi bababa sa isang beses.
Maaari mong gamitin ito para sa isang laro masyadong, ngunit ang isang tunay na karaniwang pagkakataon ng paggamit
ay pagdikta sa gumagamit para sa input.
Sa pangkalahatan, maaari mong sabihin ng isang bagay like, bigyan ako ng isang positibong integer,
at maaari mong ilagay na sa loob ng isang gawin habang loop.
Kaya ito ay palaging hilingin ang mga ito sa bababa sa isang beses para sa isang positibong integer.
Kung bigyan ka nila ng isang positibong integer, maaari mong lumalabag sa labas ng loop.
Maaari mong gawin.
Ang Boolean expression sa ang gagawin habang maaaring hindi totoo.
>> At hindi ka na tatanungin ang mga ito muli.
Kung bigyan mo sila ng isang negatibong numero kung saan type nila ang ilang mga salita o ng isang bagay na
hindi tunay na kapaki-pakinabang sa sa iyo, maaari mong gamitin ang
huwag habang loop upang bumalik at gawin muli at muli at muli ito.
Ikaw ay tiyak na magtanong ang mga ito na magbigay sa iyo ng isang numero ng sabay-sabay,
ngunit hindi mo alam kung gaano karaming beses pagkatapos na sila ay maaaring maging peste.
At kaya isang gawin habang ito ay isang mahusay na paggamit kaso para sa pagdikta ang user para sa input.
At ang isang para sa mga loop gamitin kaso kadalasan ay kapag
gusto mong ulitin ang isang loop isang hiwalay na bilang ng beses,
kahit na hindi mo maaaring malaman ang dami ng beses
sa sandaling ang programa ay pinagsama-sama.
>> Kaya halimbawa, baka mayroon ka ng isang programa kung saan mo i-prompt ang user para sa isang numero.
At ipinasok nila 100.
At pagkatapos ang iyong kalooban para sa loop sa kasong iyon tumakbo 100 ulit.
O baka ipasok sila 1,000 sa inyong programa
at pagkatapos patakbuhin ang loop 1000 beses.
Ito ay isang tiyak na bilang ng beses.
Gawin nila ang hindi kinakailangang malaman kung ano na ang numero
ay ang sandali na programa ay pinagsama-sama.
Hindi ito tulad ng isang habang loop kung saan maaaring maging walang hanggan.
Ito ay sa halip ng isang numero na ikaw lamang ang hindi alam.
Ngayon kahit na hindi ko na binalangkas lahat ng mga kaso na paggamit,
Dapat mong malaman na sa pretty magkano ang bawat pangyayari,
maaari mong pagpalitin ang lahat tatlong ng mga loop.
Maaari mong gamitin ang isang para sa loop na kung saan kayo sa kabilang banda ay gumamit ng isang habang loop.
Maaari mong gamitin ang isang para sa loop kung saan man Gusto mong gamitin ang isang gawin habang loop at iba pa.
Maaari itong maging isang maliit na nakakalito kung minsan, kaya sa pangkalahatan ito ay isang mahusay na kasanayan
upang sumunod sa isang tipikal na kaso na paggamit.
Gumamit ng isang gawin habang loop kung ikaw Nais ng isang beses sa isang bagay, hindi bababa sa.
Gumamit ng isang para sa loop kung gusto mong gawin isang bagay sa isang tiyak na bilang ng beses.
Pagkatapos ng lahat, ang dahilan kung bakit may mga tatlong iba't ibang mga uri ng mga loop.
>> Kaya maaari nilang magamit sa tamang konteksto.
Ngunit maaari mong pagpalitin ang mga ito kung nais mo.
Kung sa tingin mo ay kumportable sa habang loop at gusto mong palaging gamitin habang loop.
Ito ay isang bagay na na maaari mong gawin, kahit na ito
maaaring maging isang maliit syntactically nakakalito, kung saan para sa isang loop
ay magiging mas tapat ng maraming.
>> Ang pangalan ko ay Doug Lloyd at ito ay CS50.