sâmbătă, 18 ianuarie 2025

Masive bidimensionale în Java

O matrice este o colecție de elemente de același tip, organizate în formă de tabel în care fiecare element este indexat de o pereche de numere ce identifică numărul de rând și numărul de coloană la intersecția cărora se află elementul.

În Java o matrice este formată din mai mulți vectori fiecare reprezentând câte un rând din matrice și mai este numită vector de vectori. 

O matrice bidimensională se declară în felul următor (asemănător ca la vectori): 

int[][] m; // declarația unei matrice bidimensională

sau

int m[][];

Ambele metode de declarare sunt corecte și produc același efect.

Înainte de a folosi o matrice aceasta trebuie creată, trebuie să îi fie alocat spațiu de memorie. De exemplu, următoarele doua secvențe de creare a unei matrici sunt echivalente: 

m = new int [3][5]; //se alocă spațiu pentru o matrice cu dimensiune 3 râduri și 5 coloane

sau
m = new int[3][]; //se alocă spațiu pentru o matrice cu dimensiune 3 râduri
m[0] = new int[5]; // se crează un rândul 0 din matrice cu 5 coloane
m[1] = new int[5]; // se crează un rândul 1 din matrice cu 5 coloane
m[2] = new int[5]; // se crează un rândul 2 din matrice cu 5 coloane
Rețineți faptul că, dacă utilizați prima modalitate forțați toate rândurile să conțină 5 coloane, pe când în cea de a doua rândurile pot avea număr de coloane diferit. 

De asemenea o matrice poate fi declarată și inițializată direct, ca în exemplul de mai jos: 
int[][] a = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
În acest caz compilatorul reține automat dimensiunea matricei în variabila length, despre care vorbim un pic mai jos. 

Pentru a accesa un element din matrice este necesar de a specifica indicele de rând și coloană la intersecția căruia se află elementul dorit folosind construcția: 

variabila_matrice[indice_rând][indice_coloană]
Exemplu:
int[][] m = new int [3][5];
m[1][2] = 39; // se atribuie elementului din rândul 1 coloana 2 valoarea 39
m[0][0] = 44; // se atribuie elementului din rândul 0 coloana 0 valoarea 44
System.out.println(m[1][2]); // se accesează elementul din rândul 1 coloana 2, se afișează 39

Folosind variabila length,  aveți posibilitatea de a obține numărul de rânduri și coloane a matricei. 
Fie ca m este o referință către o matrice, atunci:
  • m.length denotă numărul de rânduri
  • m[i].length denotă numărul de coloane a rândului i din matricea m
Rețineți faptul că, dacă toate rândurile au același număr de coloane puteți folosi expresia m[0].length.

De exemplu: 
double[][] v;
v = new double[15][20];
System.out.println(v.length); // afișează 15
System.out.println(v[0].length); // afișează 20
În exemplul ce urmează este ilustrat cum se lucrează cu un masiv bidimensional în Java folosind date introduse de la tastatură.

Programul începe prin citirea numărului de rânduri și de coloane, apoi creează masivul cu aceste dimensiuni. După aceea, utilizatorul introduce valorile elementelor, rând cu rând, ca într-un tabel.

La final, masivul este afișat pe ecran, pentru a verifica dacă toate datele au fost introduse corect.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.print("Introduceti numarul de randuri: ");
int n = sc.nextInt();
System.out.print("Introduceti numarul de coloane: ");
int m = sc.nextInt();

int[][] a = new int[n][m];

for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print("a[" + i + "][" + j + "] = ");
a[i][j] = sc.nextInt();
}}

System.out.println("Masivul introdus este:");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print(a[i][j] + " ");}
System.out.println();}
}}

Masivele bidimensionale reprezintă un element de bază în programare și se utilizează frecvent în rezolvarea problemelor reale. Înțelegerea modului în care sunt declarate, completate și parcurse în Java este foarte importantă pentru a putea lucra ulterior cu algoritmi mai complecși.

Prin micile exemple prezentate, scopul a fost de a oferi o explicație clară și accesibilă, pas cu pas, astfel încât orice începător să poată înțelege logica matricilor. Recomand exersarea cu diferite dimensiuni și valori, deoarece doar prin practică aceste concepte devin ușor de utilizat.

Succes!
❤️

Niciun comentariu:

Trimiteți un comentariu

Vă mulțumesc pentru feedback!