Jump to content

Invata C++ - Pasul 3


sinnoptic

Recommended Posts

Daca ai urmarit lectiile anterioare de introducere in programarea calculatoarelor, stii deja ca un calculator nu poate sa faca altceva decat sa execute o serie de instructiuni precise, una dupa alta (asa cum ai putut vedea in lectia 1 (partea 1 si partea a 2-a)). Ai vazut si experimentat pana aici instructiuni ce au un efect vizual imediat (instructiunile Aprinde si Stinge, ce aprind, respectiv sting, un punct negru situat la coordonatele specificate pe un “ecran” virtual), precum si instructiuni cu ajutorul carora poti defini variabile si stoca valori in ele (asa cum ai vazut in lectia a 2-a).

 

Niciuna dintre aceste instructiuni nu pare sa fie, insa, deosebit de inteligenta. Cum este posibil, atunci, ca un calculator sa poata executa operatii cu un grad semnificativ de “inteligenta”? Secretul consta in instructiunea “daca” (if — in limba engleza).

 

Cu ajutorul ei, calculatorul e capabil sa raspunda la comenzi exprimate intr-un limbaj foarte apropiat de cel uman, de genul “daca o anumita conditie e indeplinita, atunci executa o serie de instructiuni; altfel executa o alta serie de instructiuni”. Intr-un program aceasta s-ar scrie in felul urmator:

 

if (conditie)

 

{

 

       // instructiuni

 

       …

 

}

 

else

 

{

 

       // alte instructiuni

 

       …

 

}

 

In loc de conditie se pot pune verificari de egalitati sau inegalitati intre expresii ce pot contine valori, variabile si operatori. De exemplu, pentru a face un program de tip “ghiceste numarul”, am putea testa o conditie de genul if (nr_ghicit == nr_secret) …, unde nr_secret este o variabila in care am stocat numarul secret ce trebuie ghicit de catre jucator, iar nr_ghicit este numarul introdus de catre jucator in incercarea de a ghici numarul secret. (A se remarca faptul ca testarea egalitatii dintre doua valori numerice, valori de variabile sau expresii se face cu operatorul ==, si nu cu operatorul = (care este operatorul cu ajutorul caruia putem stoca o valoare intr-o variabila, asa cum ai vazut in lectia trecuta).)

 

In cazul in care egalitatea de mai sus este adevarata, putem sa-i afisam jucatorului un mesaj in care sa-i spunem ca a ghicit. In caz contrar, ar trebui sa verificam daca numarul introdus de catre jucator este mai mare sau mai mic decat numarul ce trebuie ghicit si sa afisam un mesaj adecvat. Programul ar putea arata in felul urmator:

 

// —————————

 

// Joc “Ghiceste numarul”

 

// —————————

 

// Definesc variabilele:

 

var nr_secret = 16; // numarul ce trebuie ghicit

 

var nr_ghicit = 10; // <– aici se introduc incercarile de ghicire a numarului

 

 // Si apoi testez daca s-a ghicit numarul sau nu:

 

if (nr_ghicit == nr_secret)

 

{

 

       // Daca s-a ghicit numarul secret, atunci afiseaza “DA” pe ecran

 

       Aprinde(2, 3); Aprinde(2, 4); Aprinde(2, 5); Aprinde(2, 6); 

 

       Aprinde(3, 3); Aprinde(3, 6); Aprinde(4, 4); Aprinde(4, 5);

 

       Aprinde(6, 3); Aprinde(6, 4); Aprinde(6, 5); Aprinde(8, 3);

 

       Aprinde(8, 4); Aprinde(8, 5); Aprinde(7, 6); Aprinde(7, 4);

 

}

 

else

 

{

 

       // Daca nu s-a ghicit numarul secret, atunci afiseaza

 

       //   “>” (mai mare) — daca numarul secret este mai mare,

 

       //   sau “<” (mai mic) — daca numarul secret este mai mic.

 

       if (nr_secret > nr_ghicit)

 

       {

 

              Aprinde(6, 3); Aprinde(7, 4); Aprinde(8, 5); Aprinde(7, 6); Aprinde(6, 7);

 

       }

 

       else

 

       {

 

              Aprinde(5, 3); Aprinde(4, 4); Aprinde(3, 5); Aprinde(4, 6); Aprinde(5, 7);

 

       } 

 

}

 

Te rog sa copiezi acest program si sa-l testezi folosind caseta de mai jos.

 

Reseteaza afisajul

 

1

 

 Executa programul

Ce a aparut de ecran?

 

Acum apasa butonul “Reseteaza afisajul” si modifica in program valoarea variabilei nr_ghicit, punand in loc de 10 valoarea 20. Ce se intampla acum daca apesi butonul “Executa programul”? Dar daca repeti operatiunile, folosind de asta data pentru nr_ghicit valoarea 16?

 

Asa cum ai putut observa in programul anterior, in cadrul unui bloc de instructiuni dintr-o instructiune if se pot pune alte instructiuni de tip if. (In programul dat ca exemplu, blocul de instructiuni din ramura else contine o instructiune if … else … .)

 

 

 

Desi instructiunea if este in esenta cea mai puternica instructiune pe care este capabil s-o execute un calculator, nu voi insista prea mult asupra ei aici.Ea va tot reveni in discutie in lectiile ulterioare, si va deveni din ce in ce mai clara pe masura ce o vei experimenta. Ca si in cazul jocului de Go, regulile in programare sunt destul de putine si simple, insa prin imbinarea lor in moduri ingenioase se pot obtine rezultate spectaculoase.

  • Like 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...