[Powered by Google Translate] TOMMY MACWILLIAM: Să vorbim despre bucle, una din comun
de programare construiește vom vedea pe parcursul CS50.
Vom folosi bucle atunci când doriți să efectuați o
sarcină mai mult de o dată.
De exemplu, am putea dori pentru a imprima "hi", de 100 de ori sau de imprimare
din toate literele din alfabet.
În ambele cazuri, avem un singur lucru vrem să facem
de mai multe ori, imprima ceva.
Cu toate acestea, ceea ce ne imprima de fiecare data poate varia.
Astfel încât să putem face ceva ușor diferit pe fiecare
iterație, sau a alerga prin intermediul, de bucla.
Vom vedea trei tipuri diferite de bucle în C, în timp ce
bucle, bucle pentru, și în timp ce face bucle.
Deși aceste trei tipuri de bucle au o sintaxă diferită,
ideile din spatele lor sunt aceleași.
Vom defini unele bloc de cod în cadrul acolade,
numit corpul buclei, pe care dorim să fie executat
un numar de ori.
Prin schimbarea valorilor variabilelor folosite în organism, am
poate face bucla nostru facem ceva diferit de fiecare dată când este rulat.
Cu orice bucla ne scrie, vom avea nevoie, de asemenea, să decidă când
bucla se va opri.
Dacă nu facem asta, atunci calculatorul nostru de încredere va continua
pentru a rula ca bucla până când vom ucide programului.
În Scratch, am putea folosi repeta de n ori
bloca pentru a crea o buclă.
Toate piesele din interiorul unui bloc care a spus Repeta de 10
ar fi rulat de 10 ori.
Și apoi, ne-ar trece la piesele după care bucla.
Deci, starea noastră oprire a fost pur și simplu, acest bloc a fost
a alerga de 10 ori.
Deci, haideți să recreeze acest lucru în C. Pentru a se asigura Scratch
că piesele din cadrul blocului repetare sunt executate
exact 10 de ori, Scratch trebuie să țină evidența fiecărei
executarea blocului repeta.
Pentru a ține evidența de câte ori organismul nostru bucla a fost
executat, să creați o variabilă numită i.
Vom începe i de la zero, deoarece bucla nostru
nu a fost încă executați.
Bine
Acum vom folosi cuvântul cheie în timp ce pentru a începe bucla nostru.
Acum, vom avea nevoie să ne dăm seama când bucla noastră se va opri, dar
să-i lăsăm asta pentru acum și apoi te întorci la ea.
Bine.
In interiorul buclei noastre, să imprimați doar un mesaj de afară, cum ar fi
"Hi". Putem folosi funcția printf pentru acest lucru.
Bine.
Deci, acum, vom înregistra ca o repetare a corpului buclă are
a fost executat.
Putem face asta prin adăugarea de la 1 la, sau incrementare, contra noastră
variabilă, i.
Pentru a face acest lucru, putem spune i este egal cu I, plus 1, sau mai mult
pur si simplu, am plus plus.
Mare.
Deci, acum putem vedea că de fiecare dată când se execută bucla nostru, noastră
variabila contor merge de unul.
Deci, noi știm exact câte iterații am fugi până acum.
După o iterație a buclei, valoarea noastră
de i va fi de 1.
După două iterații, i va fi 2.
Și, după 10 iterații, i va fi de 10.
Deci, dacă ne dorim să rulați această buclă exact 10 de ori, apoi
acest lucru este atunci când vrem să se oprească.
Așa că vrem să rulați acest buclă în timp ce i este mai mic de 10, și
asta e exact ceea ce vom scrie, în timp ce eu
este mai mic de 10.
Această condiție arata la fel ca și condițiile le-am folosit în cazul în care
Blocuri altceva.
După corpul buclei nostru a fost executat, programul nostru
va sări înapoi până la starea bucle.
În cazul în care condiția este adevărată, atunci corpul
buclă va fi rulat din nou.
În cazul în care condiția nu mai este adevărată, atunci bucla nostru nu va fi
alerga mai și se va trece la următoarea linie de cod
sub bucla nostru.
Bine.
Deci, haideți să aruncăm o privire la un al doilea tip de
buclă, pentru bucla.
De lângă cuvântul cheie în timp ce, în paranteze, am avut un singur lucru,
condiția ca să fie adevărat necesară pentru
corpul buclei pentru a fi rulat.
Asta înseamnă că am avut de a crea variabila noastră contra afara
de buclă și amintiți-vă să-l incrementa la un moment dat
interiorul buclei.
Antet de nostru pentru bucla, pe de altă parte, are trei
părți, fiecare dintre care vor fi separate cu punct și virgulă.
În prima noastră treilea, putem declara orice ghișeu sau helper
variabile am dori să le folosească în buclă nostru.
În practică, acest lucru poate fi foarte util.
Noi chiar nu au nevoie de acea variabilă, i, după un timp ne
bucla a alerga, așa că într-adevăr nu ar trebui să-l declare
în afara buclei.
Cea de a treia a doua va fi condiție care trebuie să fie adevărat
pentru ca organismul să fie executată din nou, la fel ca
în buclă în timp ce noastre.
În ultimul nostru treilea, putem rula o declarație care va fi
executat după fiecare iterație a buclei, deci nu avem
să-l construiască în corpul buclei.
Deci, haideți să scrie o buclă pentru care contează jos de la 5 la 1.
Vom începe cu cuvântul cheie pentru.
Putem crea o variabila contor în primul rând, pe care le vom
setat la 5 de data asta, deoarece suntem de numărare în jos,
urmat de un punct și virgulă.
Următorul este starea noastră, pe care ne vom întoarce la.
În al treilea rând, am dori să ne decrementeze variabila contor, după
fiecare iterație a buclei.
Deci, mai degrabă decât să spui că, plus, plus, vom spune că minus minus.
Bine.
Deci, vrem corpul buclei pentru a rula în timp ce i este încă
mai mare decât 0.
În corpul buclei, să imprimați valoarea lui i.
Pentru a face acest lucru, vom utiliza funcția printf, folosind% d
substituent.
Amintiți-vă, că substituent vor fi înlocuite cu
valoarea lui i.
În cele din urmă, să adauge o declarație, după nostru de buclă.
Când vom rula aceasta bucla, i se va incepe de la 5,
deci 5 va fi imprimat.
După ce am ajunge la 0, condiție continuarea, i este
mai mare decât 0, nu va mai ține.
Deci bucla nostru va opri de executare, și vom vedea
declarație după bucla.
Așa că hai să executați acest cod.
În primul rând, vom compila un
countdown.c cu marca numărătoarea inversă.
Acum, putem rula acest cod cu / numărătoarea inversă..
În ambele bucle timp și pentru bucle, ne continuarea
condiție va fi verificată înainte de organism
a bucla este executat.
Asta înseamnă că, în cazul în care starea noastră nu este inițial
adevărat, atunci corpul buclei nostru nu va fi rulat.
Deci, este uneori utilă pentru a verifica starea după
corpul buclei, mai degrabă decât înainte.
Deci, haideți să scrie o buclă pentru a solicita utilizatorului pentru un număr de
până la un număr pozitiv este furnizat.
Dacă utilizatorul introduce un număr negativ, vom dori să-i întreb
pentru un alt număr.
Așa că veți dori acest prompt să fie în interiorul
Organismul de pe bucla.
Cu toate acestea, atunci când bucla se execută pentru prima dată, utilizatorul
nu a dat încă ne numărul.
Deci nu are sens pentru a verifica dacă acesta este pozitiv.
În schimb, vom dori să verificați numărul de după corpul
bucla se execută.
Putem face acest lucru cu un do while.
În primul rând, vom crea o variabila, n, care va deține
utilizatorului de intrare.
Acum, vom folosi cuvântul cheie do, urmată de acoladele care
va începe corpul buclei nostru.
În organism, putem solicita utilizatorul pentru un număr cu
GetInt funcție.
Acum, ne vom dori corpul această buclă de a executa din nou în cazul în care
utilizatorul tastat un număr negativ, deci vom spune în timp ce n
este mai mică decât 0.
Observați punct și virgulă aici după declarația timp.
Așa că hai să executați acest cod.
În primul rând, vom compila acest lucru cu a face pozitiv.
Acum putem rula programul cu. / Pozitiv.
Dacă vom da acest program un număr negativ, cum ar fi negativ
4, atunci vom solicita din nou pentru un număr de la
condiție a face noastre în timp ce bucla era adevărat.
După ce vom da un număr pozitiv, cum ar fi 8, apoi
condiție a face noastre în timp ce bucla nu va mai fi valabil.
Deci bucla nu va fi executat din nou.
Și asta e tot pentru cele trei tipuri de bucle vom folosi în C.
Numele meu este Tommy, iar acest lucru este CS50.