PC Laborator 6

De la WikiLabs
Jump to navigationJump to search

Obiective

La sfârșitul acestui laborator studenții vor fi capabili:

  • să înțeleagă funcționarea blocurilor repetitive;
  • să conceapă programe care folosesc blocuri repetitive.

Structura repetitivă

Structura repetitivă, cunoscută și sub numele de loop sau buclă, reprezintă o bucată de cod care poate fi executată în mod repetat. Structurile repetitive trebuie sa aibă o condiție de continuare. La fiecare iterație a codului această condiție este verificată, iar în momentul în care condiția devine falsă se oprește execuția buclei și se trece mai departe în program. Există 2 tipuri de structuri repetitive:

  • structuri repetitive cu număr cunoscut de pași;
  • structuri repetitive cu număr necunoscut de pași.

Structuri repetitive cu număr cunoscut de pași

Instrucțiunea for creează o structură repetitivă cu număr cunoscut de pași. Sintaxa instrucțiunii for este următoarea:
a)

for (inițializare contor; condiție logică; modificare contor)
        instrucțiune;

b)

for (inițializare contor; condiție logică; modificare contor){
        instrucțiune1;
        instrucțiune2;
..............................
}

Instrucțiunea for se parcurge conform schemei următoare:

Exemplu
Ce va afisa acest program?

#include <stdio.h>

int main() {
  int x;
  for (x = 0; x < 10; x++) {
    printf("%d\n", x);
  }
  return 0;
}

Structuri repetitive cu număr necunoscut de pași

Există două instrucțiuni pentru a crea structuri repetitive cu număr necunoscut de pași:

  • instrucțiunea while;
  • instrucțiunea do..while;

Instrucțiunea while

Instrucțiunea while verifică înainte de fiecare iterație condiția de intrare: dacă această condiție este îndeplinită se execută codul din corpul instrucțiunii, iar dacă nu se îndeplinește condiția se iese din această buclă. Sintaxa instrucțiunii este următoarea:
a)

while (condiție)
        instrucțiune;

b)

while (condiție){
        instrucțiune1;
        instrucțiune2;
..............................
}

Organigrama instrucțiunii while se regăsește în imaginea următoare:

Exemplu
Ce va afișa următorul cod în urma execuției?

#include <stdio.h>

int main() {
  int x = 0;  
  while (x < 10) {
    printf("%d\n", x);
    x++;       
  }
  return 0;
}

Instrucțiunea do while

Instrucțiunea do while verifică după fiecare iterație condiția de continuare. Sintaxa instrucțiunii "do while este următoarea:
a)

do {
      instrucțiune;
} while (condiție);

b)

do {
      instrucțiune1;
      instrucțiune2;
..............................
} while (condiție);
Atenție: Se observă că sintaxa instrucțiunii do while este puțin diferită:
  • indiferent de numărul de instrucțiuni din cadrul structurii repetitive, se folosesc acoladele;
  • după condiția de continuitate se folosește obligatoriu semnul de punctuație ; .

Organigrama instrucțiunii do-while se regăsește în imaginea următoare:

Atenție: Se observă că datorită faptului că se verifică abia la sfârșitul structurii condiția de continuitate, orice structură iterativă de tip do while va fi executată întotdeauna cel puțin o dată.

Exemplu
Ce se va afișa în urma execuției?

#include <stdio.h>

int main() {
  int x;
  x = 0;
  do {
    printf("Hello, world!\n");
  } while (x != 0);
  return 0;
}

Cuvintele cheie break și continue

Pentru structurile repetitive există două cuvinte cheie de mare importanță: break și continue.
break va ieși din bucla cea mai apropiată indiferent de condițiile de continuare ale acesteia. Utilitatea acestei instrucțiuni apare atunci când trebuie părăsită bucla în anumite circumstanțe.
continue oprește iterația curentă, face update contorului (în cazul buclei for) și continuă cu execuția structurii repetitive de la prima instrucțiune. Cu alte cuvinte, continue ignoră tot ceea ce urmează după el în cadrul buclei și trece la următoarea iterație a buclei.

Exemplu
Ce va afisa acest program?

#include <stdio.h>
 
int main() {
   int a = 10;
   while (a < 20) {
      a++;
      if (a == 13) {
         continue;
      }
      printf("value of a: %d\n", a);
      if (a > 16) {
         break;
      }
   }
   return 0;
}

Exerciții

  1. Să se afișeze pe o linie toate literele în ordine alfabetică, scrise cu majuscule, și pe o altă linie toate literele în ordine invers alfabetică, scrise cu litere mici. Rezolvați exercițiul în 3 moduri (folosind toate tipurile de bucle).
  2. Să se citească un număr întreg fără semn n<20 de la tastatură. Afișați rezultatul operației n!.
  3. Să se citească un număr întreg fără semn de la tastatură și să se verifice dacă acesta este palindrom.
  4. Să se citească un număr întreg fără semn n de la tastatură. Să se afișeze primele n numere impare.
  5. Să se citească un număr întreg fără semn n de la tastatură. Să se citească apoi n numere întregi de la tastatură și să se afișeze suma numerelor pare introduse.
  6. Refaceți exercițiul anterior în așa fel încât să folosiți instrucțiunea continue.
  7. Să se citească de la tastatură o serie de numere întregi până la întâlnirea numărului 0. Să se afișeze apoi media aritmetică a acestor numere.
  8. Verificați dacă un număr întreg fără semn introdus de la tastatură este prim.
  9. Să se afișeze cmmdc și cmmmc a două numere întregi fără semn citite de la tastatură.
  10. Să se citească un număr întreg fără semn n de la tastatură. Să se afișeze primele n numere prime.
  11. Să se citească un număr întreg fără semn n de la tastatură. Să se convertească în baza 2.
  12. Să se realizeze un joc în care un jucător introduce un număr între 1 și 100 de la tastatură, apoi alt jucător încearcă să-l ghicească. Calculatorul va oferi indicii ("prea mic", "prea mare"), până la ghicirea numărului. La final se va afișa numărul de încercări de care a fost nevoie pentru a ghici numărul.