[Powered by Google Translate] Tommy MACWILLIAM: Estu la diskuto pri cikloj, unu el la komuna
programado konstruas ni vidos tra CS50.
Ni uzos maŝojn kiam ni volas realigi
tasko pli ol unufoje.
Ekzemple, ni povus voli presi "hi" 100 fojojn aŭ presita
el ĉiuj literoj de la alfabeto.
En ambaŭ kazoj, ni havas unu aferon ni volas fari
plurfoje, presi ion.
Tamen, kion ni presi ĉiu tempo povas varii.
Do ni povas fari ion iomete malsama en ĉiu
ripeta, aŭ kuri tra, de la ciklo.
Ni vidos tri malsamaj tipoj de cikloj en C, dum
maŝojn, por bukloj, kaj faru dum cikloj.
Kvankam tiuj tri specoj de cikloj havas malsaman sintakso,
la ideojn malantaŭ ili estas la sama.
Ni difinas iujn bloko de kodo ene frizita krampoj,
nomata la korpo de la ciklo, ke ni volas esti ekzekutita
iu nombro da fojoj.
Por ŝanĝi la valorojn de variabloj uzis en la korpo, ni
povas fari nian buklo fari ion malsama ĉiufoje ĝi estas kuri.
Kun ajna buklo ni skribas, ni ankaŭ bezonas por decidi kiam la
buklo ĉesos kurante.
Se ni ne faras tion, tiam nia fidinda komputilo daŭrigos
kuri ke buklo ĝis ni mortigos la programo.
En Scratch, ni povus uzi la ripeto n fojoj
bloki krei buklo.
Ĉiuj pecoj ene de bloko kiu diris ripeto 10
estus kuri 10-foje.
Kaj tiam, ni volas movi al la pecoj post tiu ciklo.
Do nia halto kondiĉo estis simple, ĉi tiu bloko estis
kuri 10-foje.
Do ni rekrei tiun en C. En ordo por Scratch certigi
ke la pecoj en la ripeto bloko estas ekzekutitaj
ekzakte 10 fojoj, Scratch bezonas konservi trako de ĉiu
ekzekuto de la ripeto bloko.
Por kontroli kiu faras kio fojoj nia buklo korpo estis
ekzekutitaj, ni krei variablon vokis mi.
Ni komencu i for je nulo, ĉar nia ciklo
ne kuras ankoraux.
OK
Nun ni uzas la dum ŝlosilvorto dividi niajn buklo.
Nun ni bezonas eltrovi kiam nia buklo ĉesos, sed
ni lasu tion por nun kaj tiam revenu al tio.
Bone.
Ene de nia ciklo, ni nur presi mesaĝon ekstere, kiel
"Hi." Ni povas uzi la printf funkcio por ĉi tio.
Bone.
Do nun ni gravuri ke ripeto de la ciklo korpo havas
estis ekzekutita.
Ni povas fari tion per aldono 1 ĝis, aŭ pliigante, nia nombrilo
variablo, i.
Por fari tion, ni povas diri mi estas egala al i plus 1, aŭ pli
simple, mi pli pli.
Granda.
Do nun ni povas vidi ke ĉiu tempo nia buklo kuras, nia
nombrilo variablo levigxas al oni.
Do ni scias precize, kiom da iteraciones ni kuras ĝis nun.
Post unu ripeto de la ciklo, nia valoro
de i estos 1.
Post du iteraciones, i estos 2.
Kaj post 10 iteraciones, i estos 10.
Do, se ni volas kuri ĉi buklo ĝuste 10 fojojn, tiam
ĉi tio estas kiam ni volas halti.
Do ni volas kuri ĉi buklo dum i estas malpli ol 10, kaj
jen ĝuste kion ni skribas, dum i
estas malpli ol 10.
Ĉi tiu kondiĉo aspektas ĝuste tiel la kondiĉoj uzata en se
alie blokoj.
Post la korpon de nia ciklo estis ekzekutitaj, nia programo
saltos reen ĝis la maŝojn kondiĉo.
Se la kondiĉo estas vera, tiam la korpon de la
buklo estos funkcii denove.
Se la kondiĉo ne plu estas vera, tiam nia buklo ne estos
kuri plu kaj movos al la venonta linio de kodo
sub nia ciklo.
Bone.
Do ni rigardu duan tipon de
ciklo, la por buklo.
Apud la dum ŝlosilvorto, en krampoj, ni havis unu aferon,
kondiĉe ke bezonis esti vera por la
buklo korpon por kuri.
Tio signifas ni devis krei nian nombrilo variablo ekstere
de la ciklo kaj memori pliigo ĝin en iu momento
ene de la ciklo.
La kaplinio por nia por ciklo, aliflanke, havas tri
partoj, ĉiu el kiuj estos disigitaj per punktokomo.
En nia unua triono, ni povas deklari ajna nombrilo aŭ helpanto
variabloj ni deziras uzi en nia ciklo.
En praktiko, ĉi tiu povas esti vere utila.
Ni vere ne bezonas ke variablo, i, post nia tempo
buklo kuris, do ni vere ne havas por deklari ĝin
eksteren de la ciklo.
La dua triono estos la kondiĉo, ke devas esti vera
por ke la korpo estu ekzekutita denove, same kiel
en nia tempo buklo.
En nia lasta triono, ni povas kuri deklaron kiu estos
ekzekutitaj post ĉiu ripeto de la ciklo, tial ni ne havas
por konstrui ĝin en la ciklo korpo.
Do ni skribos por buklo kiu rakontas malsupren de 5 al 1.
Ni komencu per la ŝlosilvorto por.
Ni povas krei nombrilo variablo unua, kiun ni instruos vin
starigis al 5 ĉi tempo ekde ni rakonti sube,
sekvata de punktokomo.
Sekva estas nia kondiĉo, kiun ni revenos al.
Trie, ni ŝatus dekremento nia nombrilo variablo post
ĉiu ripeto de la ciklo.
Do anstataŭ diri i plus plus, ni diros i minus minus.
Bone.
Do ni volas ke la buklo korpo kuri dum mi estas ankoraŭ
pli granda ol 0.
En la korpo de la ciklo, ni presi la valoro de i.
Por tion fari, ni uzu la printf funkcion, uzante la% d
lokokupilo.
Memoru, ke lokokupilo estos anstataŭita per la
valoro de i.
Fine, ni aldonu komunikaĵo post nia por buklo.
Kiam ni kuros ĉi maŝo, i dividos je 5,
tiel 5 estos presita.
Iam mi alvenas al 0, la daŭrigo kondiĉo, i estas
pli granda ol 0, ne plu teni.
Do nia buklo ĉesos ekzekuti, kaj ni vidos la
komunikaĵo post la ciklo.
Do ni kuros ĉi tiu kodo.
Unue, ni kompili
countdown.c kun fari rakontas malantaŭen.
Nun, ni povas kuri ĉi tiu kodo per. / Rakontas malantaŭen.
En ambaŭ dum maŝojn kaj por bukloj, nia daŭrigo
kondiĉo estos kontrolata antaŭ la korpo
de la ciklo estas ekzekutitaj.
Tio signifas ke, se nia kondiĉo ne estas komence
vera, tiam la korpon de nia ciklo neniam kuri.
Do ĝi estas kelkfoje utila por kontroli la kondiĉo post la
korpo de la ciklo anstataŭ antaŭ ĝi.
Do ni skribos buklo al instigas la uzanton por nombro
ĝis pozitiva nombro estas provizita.
Se la uzanto enigas negativa nombro, ni volas peti ilin
por alia nombro.
Do ni volas ĉi prompto esti interne de la
korpo estis de la ciklo.
Tamen, kiam la ciklo kuras por la unua fojo, la uzanto
ne donis al ni la nombro ankoraŭ.
Do ĝi ne havas sencon por kontroli se ĝi estas pozitiva.
Anstataŭe, ni volas kontroli la nombro post la korpo de
la ciklo kuras.
Ni povas fari ĉi tion kun do dum ciklo.
Unue, ni krei variablon, n, kiu tenas
la uzanto enigo.
Nun ni uzas la do ŝlosilvorto, sekvita de frizita streĉaj kiu
dividos la korpon de nia ciklo.
En la korpo, ni povas instigas la uzanton por nombro kun la
GetInt funkcio.
Nun, ni volas ke la korpo de ĉi buklo ekzekuti denove se
la uzanto tajpas negativa nombro, do ni diros dum n
estas malpli ol 0.
Rimarki la punktokomo tie post la dum komunikaĵo.
Do ni kuros ĉi tiu kodo.
Unue, ni kompilos tion kun fari pozitiva.
Nun ni povas uzi la programon kun. / Pozitiva.
Se ni donas ĉi programo negativa nombro, kiel negativa
4, tiam ni estos instigis denove por nombro ekde la
kondiĉo de nia do dum buklo estis vera.
Iam ni donu pozitiva nombro, kiel 8, tiam la
kondiĉo de nia do dum buklo ne plu estos vera.
Do la buklo ne estos ekzekutita denove.
Kaj tio estas por la tri tipoj de cikloj ni uzos en C.
Mia nomo estas Tommy, kaj ĉi tiu estas CS50.