1. Bucle în viața noastră

De foarte multe ori viețile noastre ne cer să facem aceleași acțiuni de multe ori. De exemplu, să presupunem că trebuie să scanez un document format din multe pagini. Repetăm ​​aceeași procedură iar și iar:

  • Pune prima pagină pe scaner
  • Apăsați butonul de scanare
  • Puneți următoarea pagină pe scaner

Acest lucru este dificil de făcut manual. Ar fi bine dacă acest proces ar putea fi cumva automatizat.

Sau luați în considerare un alt exemplu: să presupunem că vreau să marchez toate e-mailurile necitite din căsuța mea de e-mail ca spam. Cândva, trebuia să selectez fiecare e-mail pe rând și să-l marchez ca spam.

Dar programatorii sunt leneși, așa că au automatizat acest proces cu mult timp în urmă: acum pur și simplu selectați orice listă de litere și faceți clic pe „marcați ca spam”, iar apoi clientul dvs. de e-mail parcurge lista și mută fiecare e-mail în dosarul de spam.

Ce putem spune aici? Este foarte convenabil când un computer sau un program poate executa sute sau mii de operații monotone cu un singur clic. Și acum vei învăța cum să faci și asta.


2. whilebuclă

Declarația if-else a extins semnificativ capacitățile noastre de programare, făcând posibilă scrierea de programe care efectuează diferite acțiuni în diferite situații. Dar mai există un lucru care va face programele noastre cu un ordin de mărime mai puternice - bucle .

Java are 4 tipuri de bucle: while, for, for-eachși do-while. Vom cerceta acum chiar primul dintre acestea.

O whilebuclă este foarte simplă. Este format din doar două părți: o condiție și un corp buclă . Corpul buclei este executat din nou și din nou atâta timp cât condiția este true. În general, o whilebuclă arată astfel:

while (condition)
   statement;
Notație pentru o whilebuclă cu o singură instrucțiune
while (condition)
{
   block of statements
}
Notație pentru o whilebuclă cu un bloc de instrucțiuni

E foarte simplu. Instrucțiunea sau blocul de instrucțiuni este executată din nou și din nou atâta timp cât condiția buclei este egală cu .true

Iată cum funcționează: mai întâi, se verifică starea . Dacă este adevărat, atunci corpul buclei este executat ( instrucțiunea sau blocul de instrucțiuni ). Apoi condiția este verificată din nou și corpul buclei este executat din nou. Și așa mai departe până când condiția devine falsă.

Dacă condiția este întotdeauna adevărată , atunci programul nu se va opri niciodată. Va fi blocat permanent în buclă.

Dacă condiția este falsă chiar de prima dată când este verificată , atunci corpul buclei nu va fi executat nici măcar o dată.


3. Exemple de bucle

Iată câteva exemple practice de bucle în acțiune.

Cod Explicaţie
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
Pe ecran vor fi afișate 5 linii:
5
4
3
2
1
Cod Explicaţie
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
Pe ecran vor fi afișate 10 linii:
0
1
...
8
9
Cod Explicaţie
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
Programul citește numerele de la tastatură atâta timp cât sunt introduse numere.
Cod Explicaţie
while (true)
   System.out.println("C");
Programul va imprima la nesfârșit litera Cpe ecran.
Cod Explicaţie
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Programul va citi linii de la tastatură

până când exiteste introdus.

În exemplul anterior, equals()metoda este folosită pentru a compara șiruri. Dacă șirurile sunt egale, funcția va returna true. Dacă șirurile nu sunt egale, atunci va reveni false.



4. Buclă într-o buclă

Pe măsură ce ați aflat despre instrucțiunile condiționate, ați văzut că le puteți utiliza pentru a implementa o logică complexă prin combinarea mai multor instrucțiuni condiționate. Cu alte cuvinte, prin utilizarea unei ifdeclarații în interiorul unei ifdeclarații.

Puteți face același lucru cu bucle. Pentru a scrie o buclă într-o buclă, trebuie să scrieți a doua buclă în corpul primei bucle. Va arata cam asa:

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
whilebuclă (cu un bloc de instrucțiuni ) în interiorul unei alte whilebucle

Să ne uităm la trei sarcini.

Sarcina 1 . Să presupunem că vrem să scriem un program care afișează cuvântul Mompe ecran de 4 ori. O buclă este exact ceea ce avem nevoie. Și codul nostru va arăta cam așa:

Cod Explicaţie
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
Pe ecran vor fi afișate 4 linii:
Mom
Mom
Mom
Mom

Sarcina 2 . Vrem să scriem un program care să afișeze 5 litere As pe o singură linie. Pentru a face acest lucru, avem nevoie din nou de o buclă. Iată cum va arăta codul:

Cod Explicaţie
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
În loc de println(), vom folosi print(). În caz contrar, fiecare literă A ar ajunge pe o linie separată.

Ieșirea ecranului va fi:
AAAAA

Sarcina 3 . Vrem să afișăm un dreptunghi format din litera As. Dreptunghiul trebuie să fie format din 4 rânduri pe 5 coloane. Pentru a realiza acest lucru, acum avem nevoie de o buclă imbricată. Vom lua pur și simplu primul nostru exemplu (cel în care scoatem 4 linii) și vom înlocui codul pentru ieșirea unei linii cu codul din al doilea exemplu.

Cod Explicaţie
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
Bucla exterioară este violet. Utilizează nvariabila pentru a număra numărul de iterații ale buclei.

Bucla interioară este verde. Folosește mvariabila pentru a număra numărul de iterații ale buclei.

Trebuie să mutăm în mod explicit cursorul pe linia următoare după ce bucla interioară este completă. În caz contrar, toate literele pe care programul le imprimă vor ajunge pe o singură linie.

Ieșirea ecranului va fi:
AAAAA
AAAAA
AAAAA
AAAAA

Buclele exterioare și interioare trebuie să utilizeze variabile diferite pentru a număra numărul de iterații ale buclei. De asemenea, a trebuit să adăugăm System.out.println()comanda după bucla interioară, deoarece acea buclă afișează litera As pe aceeași linie. Odată ce literele de pe o linie sunt afișate, cineva trebuie să mute cursorul pe o nouă linie.



5. Compararea buclelor Java vs Pascal

Mulți dintre voi l-ați studiat pe Pascal în liceu. Pentru a vă facilita înțelegerea materialului de aici, aruncați o privire la această comparație a whilebuclelor scrise în Pascal și Java. Dacă nu îl cunoașteți pe Pascal, atunci treceți peste această parte.

Pascal Java
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}