Cum funcționează în timpul programării calculatoarelor
Când învățați să programați Cum să învățați programarea fără stres Cum să învățați programarea fără toate stresul Poate că ați decis să continuați programarea, fie pentru o carieră, fie ca un hobby. Grozav! Dar poate că începi să te simți copleșit. Nu prea grozav. Iată ajutorul pentru a vă ușura călătoria. Citiți mai mult, înțelegerea blocurilor de bază este cheia succesului timpuriu. Veți primi subiectele dificile mai târziu, dar dacă nu înțelegeți tipurile de variabile, buclele și funcțiile, este greu să ajungeți departe.
Majoritatea programatorilor noi invata despre dacă-altceva declarații, în timp ce buclele, și pentru bucle înainte de mult timp. Dar unul din tipurile de buclă pe care probabil nu le înțelegeți este în buclă. Să discutăm despre modul în care funcționează această buclă, când veți dori să o utilizați și să analizați câteva exemple.
Cele elementare
O buclă de timp execută un bloc de cod cel puțin o dată, verifică dacă o condiție este adevărată, apoi continuă să ruleze codul interior în funcție de condiție. Să aruncăm o privire la un exemplu simplu de pseudocode (deoarece te ajută să înveți!) 10 Exemple Python de bază care te vor ajuta să înveți rapid 10 exemple Python de bază care te vor ajuta să înveți rapid Acest articol de exemple de bază python este pentru cei care au deja unele programări experiență și pur și simplu doriți să treceți la Python cât mai repede posibil.
do output "Variabila x este egală cu" + x; x ++; în timp ce (x < 5); output "The loop has ended.";
În acest bit de cod, liniile din interiorul lui do parantezele se execută întotdeauna cel puțin o dată. Aceasta înseamnă că X ar putea fi orice valoare la începutul buclei.
Dacă X este egal cu 1 atunci când bucla începe, se va repeta până la X nu îndeplinește condiția de lângă in timp ce. Astfel, ar fi un total de 5 ori. Cand X nu este mai mică de 5, bucla se termină și continuă după cod. Această producție ar arăta după cum urmează:
Variabila x este egală cu 1 Variabila x este egală cu 2 Variabila x este egală cu 3 Variabila x este egală cu 4 Variabila x este egală cu 5 Buclele s-au încheiat.
În schimb, dacă X a fost egal cu 20 atunci când a început această buclă, ar fi rulat doar o singură dată. Deci, ați vedea o declarație de ieșire, X incremente la 21, iar buclă s-ar termina pentru că 21 nu este mai mic de 5. Ieșirea ar fi:
Variabila x este egală cu 20 Bucla sa încheiat.
Contrast cu timp și pentru buclă
Cum se face a face în timp ce bucla diferă de alte bucle? Cea mai importantă distincție este că buclele "do-while" testează o condiție după executând un bloc de cod, în timp ce alte bucle verifică o condiție inainte de rularea codului înăuntru.
Luați în considerare acest pseudocod de bază in timp ce buclă pentru comparație:
x = 10; în timp ce (x < 5) output "The loop has run!"; x++;
Aici, X este setat la 10 și in timp ce buclă verifică asta X este mai puțin de 5 înainte de a se executa. Din acest motiv, codul interior nu rulează niciodată. Aplicând aceeași logică într-o buclă de tip "do-while" ne dă ceva de genul:
x = 10; do output "Buclele au rulat!"; x ++; în timp ce (x < 5)
Această buclă va transmite textul o dată, incrementare X, apoi continuați.
Rețineți că puteți re-crea funcționalitatea "do-while" cu o instrucțiune extra în fața a in timp ce cum ar fi:
ieșire "Bună ziua!"; x ++; în timp ce (x < 5) output "Hello!"; x++;
Cu toate acestea, acest lucru este clunky și nu există nici un motiv pentru a face acest lucru atunci când există-bucle existente.
Pentru Loops
Buclele "Do-while" au o distincție similară cu pentru bucle. A pentru buclă definește o variabilă, specifică durata de funcționare a buclă și stabilește un comportament pentru sfârșitul fiecărei iterații.
Iată un simplu pentru buclă pentru comparație:
pentru (int i = 0; i < 5; i++) output "The loop has run " + i + " times.";
Acest lucru evidențiază un contrast bun între face în timp ce și pentru bucle - știți exact de câte ori a pentru buclă va rula pentru că ați configurat condițiile de la început. Dacă modificați codul de mai sus într-o buclă de tip "do-while" astfel:
nu output "Buclele rulează ori" + i + "."; i ++; in timp ce eu < 5);
S-ar putea să ajungeți la o problemă atunci când se execută buclă. Dacă nu ați inițializat eu în altă parte, nu știți ce valoare va fi atunci când do porțiunea rulează - și va funcționa cel puțin o dată. Dacă eu a fost 500 atunci când această buclă a fugit, ieșirea aici ar fi inexactă.
În concluzie:
- A în buclă este util atunci când doriți să executați o comandă cel puțin o dată și continuu până când o condiție este falsă.
- A în timp ce bucla vă permite să repetați un bloc de cod atâta timp cât o condiție este adevărată și să se oprească imediat ce condiția nu mai este adevărată.
- A pentru buclă vă permite să specificați exact de câte ori ar trebui să se execute buclă prin setarea propriilor parametri.
Lăsând o buclă Do-While
Desigur, trebuie să aveți o condiție de ieșire pentru buclele de tip "do-while", la fel ca oricare altul. Dacă nu, ați putea ajunge cu o buclă infinită. Luați în considerare următorul fragment:
x = 5; nu output "Aceasta nu se termina niciodată!"; în timp ce (x < 10);
Dacă nu creșteți X oriunde altundeva în cod, atunci această buclă va rula pentru totdeauna. Acum, uneori buclele infinite sunt utile deoarece programatorul stabilește un cod pentru a ieși din bucla în altă parte. Dar, de cele mai multe ori, codificatorii începători se întâmplă accidental în bucle infinite Cele 10 cele mai grave greșeli de programare din istorie Cele mai grele 10 greșeli de programare din istorie În trecutul său vechi, codificarea distrugerii cauzate de asemenea. Instanțele unui pic de cod rău au provocat dezastre la un nivel major. Următoarele sunt 10 dintre cele mai grave greșeli de programare din istorie. Citeste mai mult .
Iată un exemplu de buclă infinită potrivită. Să presupunem că proiectați un joc 5 Instrumente gratuite de dezvoltare software pentru jocuri pentru a vă face propriile jocuri 5 Instrumente gratuite de dezvoltare software pentru jocuri pentru a vă face propriile jocuri Iată cele mai bune programe și instrumente de dezvoltare gratuite a jocului pe care le puteți utiliza pentru a începe să vă faceți jocul de vis astăzi . Citiți mai multe în cazul în care utilizatorul rotește un mor și trebuie să obțineți un 6 pentru a părăsi baza de origine. Vreți să continuați să răsuciți mor până când acesta va ateriza pe 6, și, evident, trebuie să vă rotiți cel puțin o dată. Astfel, puteți utiliza acest cod:
do int roll = aleatoare (1, 2, 3, 4, 5, 6); dacă (roll == 6) se rupe; în timp ce (adevărat);
în timp ce (adevărat) condiție înseamnă că această buclă va rula pentru totdeauna, pe care le dorim pentru că utilizatorul trebuie să se rotească până devine 6 ani pauză , ar fi blocat. Dar, odată ce utilizatorul a rulat un 6, dacă declarația devine adevărată, iar secvența se desprinde din bucla și se mișcă asupra a ceea ce urmează.
Nu trebuie să utilizați o declarație de pauză dacă nu doriți. De fapt, probabil că este mai bine să eviți declarațiile de pauză dacă poți. Acestea fac ca codul dvs. să fie mai greu de întreținut, iar încheierea unei condiții este mai ușor de urmărit. Astfel, codul modificat de mai jos atinge același scop:
do int roll = aleatoare (1, 2, 3, 4, 5, 6); în timp ce (roll! = 6);
O bucle infinite rău
O buclă infinită pe care aveți un plan de ieșire este bine. Dar uneori veți crea din greșeală o buclă infinită, ca în exemplul de mai jos:
int x = 7; nu x = 1; x = x + 2; ieșire "x este egală" + x; în timp ce (x < 10);
Acest lucru ar putea părea că crește X de câte 2 bucăți fiecare și se repetă până când x nu este mai mică de 10, dar priviți mai aproape. Deoarece buclele se fixează X egal cu 1 de fiecare dată când rulează, aceasta este o buclă infinită. Observa asta x = 1 și x = x + 2 înseamnă că X este întotdeauna 3 la sfârșitul blocului, indiferent de câte ori acest lucru rulează, adică X nu este mai mică de 10 ani.
Urmăriți declarațiile din bucla dvs. care modifică neintenționat o variabilă de fiecare dată când rulează, pentru a evita situațiile de genul acesta.
Exemple din lumea reală
Am discutat câteva exemple ipotetice de mai sus, dar să aruncăm o privire rapidă asupra câtorva exemple utile din lumea reală despre buclele făcute în timp.
Dacă creați o buclă pentru a citi date dintr-un fișier până la atingerea sfârșitului, ați folosi o buclă de timp. Evident, trebuie să apucați cel puțin un caracter dacă intenționați să citiți dintr-un fișier, astfel încât să puteți folosi o astfel de buclă (grație utilizatorului Stack Exchange Steven Burnap pentru acest exemplu):
do result = readData (tampon); în timp ce (rezultat! = EOF);
Fără a face-o, ar trebui să utilizați o soluție ușor mai urâtă:
în timp ce (true) result = readData (tampon); dacă (rezultat == EOF) se rupe;
Un alt exemplu implică apucarea intrărilor de la un utilizator. Să presupunem că scrieți un program care cere utilizatorului să introducă un număr pozitiv. Folosind o do-while, puteți să vă asigurați că intrarea lor este adecvată:
do output "Introduceți un număr pozitiv:"; int intrare = getInput (); în timp ce (intrare < 0);
Cu această buclă, utilizatorul vede solicitarea de introducere a unui număr și introduce o dată o valoare. Dacă introduc un număr negativ, ciclul rulează din nou și li se va cere să introduceți un număr pozitiv până când acestea se conformează. Alte bucle pur și simplu nu au sens pentru acest tip de acțiune.
Sunt gata de utilizare în timpul buclelor?
Am realizat un sondaj despre buclele "do-while", inclusiv principiile lor de bază, cum să le folosim cel mai bine și cum se compară cu celelalte bucle. Dacă nu vă mai aduceți aminte de altceva de la acest articol, știți că există buclă în timp când trebuie să rulați ceva cel puțin o dată, dar nu știți de câte ori veți avea nevoie de ea înainte de a iniția buclele.
Gândiți-vă la astfel de situații în programele dvs. și veți găsi cu ușurință locurile în care se potrivesc buclele de tip "do-while". Aproape toate cele mai bune limbi începător 6 Limbi de programare mai ușor de învățat pentru începători 6 Limbi de programare mai ușor de învățat pentru începători Învățarea de a programa este despre găsirea limbii potrivite la fel de mult ca și despre procesul de edificare. Iată primele șase limbi de programare cele mai bune pentru începători. Citește mai multe suporturi în timp, deci nu ar trebui să ai probleme cu implementarea acestora.
Dacă învățați elementele de bază, asigurați-vă că revizuiți trucurile noastre de top pentru mastering un nou limbaj de programare 7 Trucuri utile pentru mastering un nou limbaj de programare 7 Trucuri utile pentru mastering un nou limbaj de programare Este bine să fiți copleșiți când învățați să codificați . Probabil veți uita lucrurile cât de repede le veți învăța. Aceste sfaturi vă pot ajuta să păstrați mai bine toate informațiile noi. Citeste mai mult .
Ce alte situații vă puteți gândi de unde are un sens în timp? Discutați și anunțați-ne dacă utilizați buclele "do-while" în programele dvs. în secțiunea de comentarii!
Image Credit: Aaban prin intermediul Shutterstock.com
Explorați mai multe despre: Programare.