Structura repetitivă for

Spre deosebire de while, bucla for are o sintaxă mai simplă pentru a repeta codul de mai multe ori în cazul în care cunoaştem de câte ori vrem să îl repetăm. De exemplu, afişarea unui mesaj de 10 ori este realizată mult mai simplu.

Putem spune pe scurt că bucla for este o structură repetitivă cu număr cunoscut de paşi.

Sintaxa de bază este următoare. O vei înţelege mai bine din exemplele de mai jos.

for (initializare; conditie; increment) {
    instructiuni;
}

Unde

  • iniţializare – sunt oricât de multe iniţializări necesare
  • condiţie – orice condiţie cât de complicată care rezultă în true sau false; instrucţiunile se vor executa cât timp condiţia este adevărată; este acelaşi principiu ca şi la if şi while
  • increment – instrucţiuni care modifică valori şi care se execută la fiecare pas, după terminarea instrucţiunlor din interiorul buclei

În general, în buclele simple pe care le vom folosi la început, singurul lucru pe care trebuie să îl schimbi este numărul de paşi executaţi.

for (int i = 0; i < 7; i++) {
    System.out.println("mesaj " + i);
}

În exemplul de mai sus, mesajul este afişat de 7 ori. De aceea am scris numărul 7 în a doua jumătate a for-ului. Dacă vrem ca mesajul să fie afişat de 100 de ori, atunci schimbăm numărul 7 cu 100.

De reținut! Ordinea în care sunt executate elementele unei bucle for este următoarea:

  1. Se inițializează variabila/variabilele de control
  2. Se verifică condiția
  3. Dacă rezultatul este true, se execută setul de instrucțiuni din interiorul buclei
  4. Se incrementează variabila/variabilele de control
  5. Se verifică din nou condiția; dacă rezultatul este true, bucla se repetă, daca nu, repetarea este întreruptă

Exemplul de mai jos afişează un mesaj introdus de 100 de ori.

import java.util.Scanner;

public class CountingFor {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        System.out.println("Type in a message, and I'll display it 100 times.");
        System.out.print("Message: ");
        String message = keyboard.nextLine();

        for (int n = 0; n < 100; n++) {
            System.out.println(n + ". " + message );
        }

    }
}

Deosebire între for şi while

Bucla for este folosită atunci când ştim de câte ori vrem să repetăm ceva (de 5 ori, de 10 ori), iar bucla while este folosită atunci când ştim până când vrem să repetăm setul de instrucțiuni (cât timp nu ghicim un număr, cât timp nu am am introdus 0).

Un for poate fi scris in felul urmator:

for (int i = 0; i < 6; i++) {
    // ...
}

Un while care îndeplineşte aceeaşi funcţionalitate arată în felul următor:

int i = 0;
while (i < 6) {
    // ...
    i++;
}

Exerciţii

1. Scrie un program care afişează mesajul "I KNOW JAVA!!!!" de 10 ori. Numerotează fiecare afişare a mesajului.

Soluţie

Soluţie

public class Fors {

    public static void main(String[] args) {
        for(int i = 0; i < 10; i++) {
            System.out.println(i + ". I KNOW JAVA!!!!!!");
        }
    }

}


2. Scrie un program care citeşte un număr întreg şi numără de la 0 până la acesta. (0 1 2 3 …)

Soluţie

Soluţie

public class Fors {

    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    	System.out.println("Introduceti un numar");
    	int nr = sc.nextInt();
        for(int i = 0; i < nr; i++) {
            System.out.print(i + " ");
        }
    }

}


3. Scrie un program care citeşte un număr şi afişează toate numele până la acesta. Programul va afişa un semn în dreptul numerelor pare şi alt semn în dreptul numerelor impare.

Soluţie

Soluţie

import java.util.Scanner;

public class Fors {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Introduceti un numar");
        int nr = sc.nextInt();
        for(int i = 0; i < nr; i++) {
            if (i % 2 == 0) {
        	    System.out.println("& " + i);
            } else {
                System.out.println("^ " + i);
            }
        }
    }

}


4. Scrie un program care adună n numere citite de la tastatură (n este şi el citit de la tastatură). De exemplu: a + b + c + d + …. + k.

Soluţie

Soluţie

import java.util.Scanner;

public class Fors {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Cate numere vrei sa aduni?");
        int n = sc.nextInt();
        int suma = 0;

        for(int i = 0; i < n; i++) {
            System.out.println("Introdu urmatorul numar:");
            int numar = sc.nextInt();
            suma += numar;
        }

        System.out.println("Suma numerelor introduse este " + suma);
    }

}


Resurse

You could leave a comment if you were logged in.