4.4.6 Vectori

Vectorii memorează elemente de același tip de date.

Vectorii reprezinta o variabila de tip referinta (pointer)

Valoarea implicita este egala cu null. null reprezinta un cuvant cheie in Java care indica o adresa inexistenta avand valoarea 0.

Vectorii (sau array-urile) sunt structuri de date fundamentale în Java care permit stocarea unui număr fix de elemente de același tip. În contextul FTC, vectorii pot fi foarte utili pentru gestionarea mai multor componente hardware sau pentru stocarea și procesarea datelor de la senzori.

Declarația și Inițializarea Vectorilor

Vectorii în Java sunt declarați specificând tipul elementelor pe care le vor stoca, urmat de paranteze pătrate [].

Declarație

int[] vectorDeIntregi;
DcMotor[] motoare;

Inițializare

Vectorii pot fi inițializați fie în momentul declarării, fie ulterior, utilizând cuvântul cheie new.

int[] vectorDeIntregi = new int[5]; // Vector de 5 elemente de tip int
DcMotor[] motoare = new DcMotor[4]; // Vector de 4 motoare

// Inițializare în momentul declarării
int[] altVectorDeIntregi = {1, 2, 3, 4, 5};

Accesarea Elementelor Vectorilor

Elementele unui vector pot fi accesate și modificate utilizând indexul lor, care începe de la 0.vectorDeIntregi[0] = 10; // Setează primul element la 10


int valoare = vectorDeIntregi[0]; // Accesează primul element

motoare[0] = hardwareMap.get(DcMotor.class, "motor1"); // Inițializare motor

Exemple în Contextul FTC

Gestionarea Mai Multor Motoare

Într-un robot FTC, este comun să folosești vectori pentru a gestiona mai multe motoare sau alte componente hardware.

public class MultiMotorOpMode extends LinearOpMode {

private DcMotor[] motoare = new DcMotor[4];

@Override
public void runOpMode() {
// Inițializarea motoarelor
motoare[0] = hardwareMap.get(DcMotor.class, "left_front");
motoare[1] = hardwareMap.get(DcMotor.class, "right_front");
motoare[2] = hardwareMap.get(DcMotor.class, "left_rear");
motoare[3] = hardwareMap.get(DcMotor.class, "right_rear");

waitForStart();

// Setarea puterii pentru toate motoarele
for (DcMotor motor : motoare) {
motor.setPower(0.5);
}

sleep(2000); // Rulează motoarele pentru 2 secunde

// Oprirea tuturor motoarelor
for (DcMotor motor : motoare) {
motor.setPower(0);
}
}
}

Procesarea Datelor de la Senzori

Vectorii pot fi folosiți și pentru a stoca și procesa datele de la mai mulți senzori.

public class MultiSensorOpMode extends LinearOpMode {

private ColorSensor[] senzoriCuloare = new ColorSensor[3];

@Override
public void runOpMode() {
// Inițializarea senzorilor de culoare
senzoriCuloare[0] = hardwareMap.get(ColorSensor.class, "sensor1");
senzoriCuloare[1] = hardwareMap.get(ColorSensor.class, "sensor2");
senzoriCuloare[2] = hardwareMap.get(ColorSensor.class, "sensor3");

waitForStart();

// Citirea și afișarea valorilor de la toți senzorii
for (int i = 0; i < senzoriCuloare.length; i++) {
telemetry.addData("Sensor " + i + " Red", senzoriCuloare[i].red());
telemetry.addData("Sensor " + i + " Blue", senzoriCuloare[i].blue());
}
telemetry.update();
}
}

Bucla for-each pentru Vectori

Java oferă o buclă for-each, care este utilă pentru a itera prin toate elementele unui vector fără a folosi un index.

for (DcMotor motor : motoare) {
motor.setPower(0.5);
}

Dimensiunea Vectorilor

Poți afla dimensiunea unui vector utilizând atributul length.

int dimensiune = motoare.length; // Obține dimensiunea vectorului de motoare

Vectori de Obiecte

În FTC, deseori vei lucra cu vectori de obiecte, cum ar fi motoare, senzori sau servouri.

Servo[] servos = new Servo[2];
servos[0] = hardwareMap.get(Servo.class, "servo1");
servos[1] = hardwareMap.get(Servo.class, "servo2");

Recomandări pentru Utilizarea Vectorilor

  1. Inițializarea Corectă: Asigură-te că fiecare element al vectorului este corect inițializat înainte de utilizare.
  2. Accesarea în Limite: Verifică întotdeauna ca indexul să fie în limitele vectorului pentru a evita erorile ArrayIndexOutOfBoundsException.
  3. Modificarea Vectorilor: Dacă ai nevoie de o structură de date dinamică, consideră utilizarea altor colecții din Java, cum ar fi ArrayList.

Vectorii sunt instrumente puternice și versatile în Java, esențiale pentru gestionarea și organizarea datelor și componentelor în programarea FTC. Utilizarea lor eficientă poate duce la cod mai clar, mai organizat și mai ușor de întreținut.