9 java limbajul java. tablouri - runceanu.ro · 16.11.2016 curs - programare orientată pe obiecte...

of 67 /67
Programare orientat ă pe obiecte # 9 Adrian Runceanu www.runceanu.ro/adrian 2016 JAVA Limbajul JAVA. Tablouri

Author: others

Post on 20-Sep-2019

27 views

Category:

Documents


2 download

Embed Size (px)

TRANSCRIPT

  • Programare orientată pe obiecte

    # 9

    Adrian Runceanuwww.runceanu.ro/adrian

    2016

    JAVALimbajul JAVA. Tablouri

  • [email protected]

    Curs 9

    Limbajul JAVA. Tablouri

    16.11.2016 Curs - Programare orientată pe obiecte 2

  • [email protected]

    Tablouri in Java

    1. Tablouri unidimensionale(vectori)2. Tablouri bidimensionale(matrici)3. Tablouri multidimensionale

    16.11.2016 Curs - Programare orientată pe obiecte 3

  • [email protected]

    Un tablou este o structura de date carepoate sa pastreze mai multe valori deacelasi tip (primitiv sau referinta),memorate intr-o zona de memorie contiguasi reunite sub un nume simbolic comun(numele tabloului).

    16.11.2016 Curs - Programare orientată pe obiecte 4

  • [email protected]

    Un tablou poate fi:

    1. unidimensional sau vector

    2. bidimensional sau matrice

    3. multidimensional

    In Java, un tablou este tratat ca un obiect, deciel este un tip referinta.

    16.11.2016 Curs - Programare orientată pe obiecte 5

  • [email protected]

    Declararea si crearea unui tablou unidimensional

    Declararea si crearea tablourilor unidimensionale se realizeaza in doi pasi de catre compilatorul Java:

    1. Se declara o variabila referinta la tablou de unanumit tip (primitiv sau referinta).

    Prin declaratia unei referinte se aloca zona dememorie necesara stocarii referintei in sine (adica aunei adrese de memorie).

    In consecinta, dupa ce se declara o variabilareferinta la un tablou, aceasta va contine valoareanull, ceea ce inseamna ca referinta inca nu indicaun tablou valid.

    16.11.2016 Curs - Programare orientată pe obiecte 6

  • [email protected]

    Sintaxa folosita pentru declararea unei variabile referinta catre un tablou unidimensional este:

    sau

    unde:- - specifica tipul de date primitiv sau tipul de obiecte

    (dat de clasa) al elementelor tabloului;- - reprezinta numele unei variabile

    referinta la tabloul de tipul ; acesta variabilareferinta la un tablou contine valoarea null.

    Nota: parantezele drepte sunt obligatorii, nu delimiteaza oconstructie optionala

    16.11.2016 Curs - Programare orientată pe obiecte 7

    [ ] ;

    [ ];

  • [email protected]

    2. Se aloca, efectiv, zona de memorie pentru tabloul declarat la pasul 1 si se initializeaza tabloul.

    Exista doua modalitati pentru a face acest lucu:

    a) folosind operatorul new

    b) initializand direct continutul tabloului

    16.11.2016 Curs - Programare orientată pe obiecte 8

  • [email protected]

    a) Sintaxa folosita pentru alocarea zonei de memorie a unui tablou unidimensional folosind operatorul new este:

    unde:- - reprezinta numele variabilei

    referinta declarata la pasul 1;- - specifica tipul de date primitiv sau tipul de

    obiecte (dat de clasa) al elementelor tabloului;- - reprezinta numarul de elemente ale

    tabloului; poate fi: - o variabila de un tip primitiv- o expresie de un tip primitiv- sau o constanta de un tip primitiv

    16.11.2016 Curs - Programare orientată pe obiecte 9

    = new [];

  • [email protected]

    Nota:1. De cele mai multe ori programatorii combina declararea

    si alocarea zonei de memorie pentru un tablou intr-o singura instructiune, astfel:

    sau

    2. La crearea unui tablou folosind operatorul new, toateelementele sale vor fi initializate automat cu:

    • 0 pentru cele numerice• false pentru boolean• ‘\0’ pentru tablouri tip caracter• null pentru obiecte

    16.11.2016 Curs - Programare orientată pe obiecte 10

    [ ] = new [];

    [ ] = new [];

  • [email protected]

    De exemplu, pentru declararea si alocareazonei de memorie pentru un tablouunidimensional cu numele temp de tipul int cu 100 de elemente se foloseste instructiunea:

    int [ ] temp = new int[100];

    16.11.2016 Curs - Programare orientată pe obiecte 11

  • [email protected]

    b) Alocarea zonei de memorie pentru tablou se poateface initializand direct continutul tabloului (la fel cain limbajul C/C++), dupa urmatoarea sintaxa:

    sau

    unde:- , , …. - reprezinta valorile de

    initializare al caror numar determina si numarul de elemente ale tabloului.

    16.11.2016 Curs - Programare orientată pe obiecte 12

    [ ] ; = {, , ….};

    [ ] = {, , ….};

  • [email protected]

    De exemplu, pentru declarea si alocarea zonei de memorie pentru un tablou unidimensional cu numele temp de tip int cu patru elemente se foloseste instructiunea:

    int [ ] temp = {3, 4, 6, 19};

    16.11.2016 Curs - Programare orientată pe obiecte 13

  • [email protected]

    Declararea si alocarea zonei de memorie pentru un

    tablou unidimensional de obiecte (deci nu tipuri

    primitive) foloseste aceeasi sintaxa.

    Trebuie retinut insa ca dupa alocarea zonei de memorie

    pentru tabloul de referinte la obiectele respective,

    fiecare element (de tip referinta) din tablou va avea

    valoarea null.

    Apoi, pentru fiecare element-tip referinta din tablou

    trebuie alocata memorie, separat, corespunzatoare

    fiecarui obiect referit.

    Aceasta se intampla, deoarece un tablou de obiecte in

    Java este un tablou de referinte la obiectele respective.

    16.11.2016 Curs - Programare orientată pe obiecte 14

  • [email protected]

    De exemplu, pentru declararea si alocarea memoriei

    pentru un tablou de tip Cerc cu numele tablouDeCercuri

    care are ca elemente 5 obiecte (instante) se foloseste

    urmatoarea secventa de instructiuni:

    Cerc [ ] tablouDeCercuri; // declaram un tablou de referinte de tip Cerc

    tablouDeCercuri = new Cerc[5]; //alocam memorie pentru 5 referinte la obiecte de tip Cerc

    for (int i = 0; i < 5; i++)

    {

    tablouDeCercuri[i] = new Cerc(); // se aloca memorie pentru un obiect de tip Cerc in elementul i al tabloului cu numele tablouDeCercuri

    }

    16.11.2016 Curs - Programare orientată pe obiecte 15

  • [email protected]

    Lungimea tablourilor unidimensionale

    Tablourile Java sunt alocate dinamic, ceea ceinseamna ca ele isi pot schimba dimensiunile peparcursul executiei programului.

    Numarul de elemente care pot fi stocate intr-un tablou oarecare, este permanent retinut invariabila .length.

    De exemplu:float [] tablou = new float [25];int dimensiune = tablou.length; // dimensiune primeste

    valoarea 25

    16.11.2016 Curs - Programare orientată pe obiecte 16

  • [email protected]

    Accesarea (identificarea) unui element al tabloului unidimensional

    Deoarece elementele unui tablou sunt memorate in ordine, unul dupa altul, intr-o zona contigua, pentru a accesa (sau a referi) un element al unui tablou se specifica numele tabloului din care face parte elementul si pozitia sa in tablou, prin numarul sau de ordine (numerotarea incepe de la 0), astfel:

    in care: reprezinta numarul de ordine al elementului in

    tablou, cuprins intre 0 si - 1; parantezele patrate ([ ]) constituie operatorul de indexare.

    16.11.2016 Curs - Programare orientată pe obiecte 17

    []

  • [email protected]

    Exemple:

    int punctaje[5];elementele tabloului sunt: punctaje[0], punctaje[1],

    punctaje[2], …. punctaje[4].

    Nota:Toate pozitiile unui tablou sunt verificate, de

    interpretorul Java, daca se incadreaza in limitele tabloului asacum s-au specificat la crearea tabloului.

    In Java este imposibil sa se acceseze sau sa se atribuie ovaloare unei pozitii a tabloului aflata in afara graniteloracestuia.

    Pentru a se evita, in programe, depasirea accidentala asfarsitului tabloului se testeaza lungimea acestuia prinfolosirea variabilei de instanta length.

    16.11.2016 Curs - Programare orientată pe obiecte 18

  • [email protected]

    O parcurgere a unui tablou unidimensional se face cu ajutorulinstructiunii for astfel:

    for (int i = 0 ; i < numere.length; i++)numere[i] = i;

    Observatie: Dat fiind ca tabloul este un tip referinta, operatorul de

    atribuire (=) nu copiaza tablouri. De aceea, daca x si y sunt tablouri, efectul secventei de

    instructiuni:int [ ] x = new int [50];int [ ] y = new int [50];…x = y;este ca x si y refera acum al doilea tablou cu numele y.

    16.11.2016 Curs - Programare orientată pe obiecte 19

  • [email protected]

    Tablouri in Java

    1. Tablouri unidimensionale(vectori)2. Tablouri bidimensionale(matrici)3. Tablouri multidimensionale

    16.11.2016 Curs - Programare orientată pe obiecte 20

  • 16.11.2016 Curs - Programare orientată pe obiecte 21

    2. Tablouri bidimensionale

    Tablourile bidimensionale in Java sunt tablouriunidimensionale de referinte catre tablouriunidimensionale (adica, sunt tablouri de referintela tablouri unidimensionale).

    Declararea si crearea tablourilor bidimensionale se realizeaza tot in doi pasi:

    1. declararea tabloului de un anumit tip (primitiv sau referinta)

    2. alocarea zonei de memorie pentru tabloul declarat si initializarea lui

  • 16.11.2016 Curs - Programare orientată pe obiecte 22

    1. Sintaxa folosita pentru declararea unei variabile referinta catre un tablou bidimensional este:

    [ ][ ];sau

    [ ][ ] ;sau

    [ ] [ ];

  • 16.11.2016 Curs - Programare orientată pe obiecte 23

    unde:- - specifica tipul de date primitiv sau tipul de

    obiecte (dat de clasa) al elementelor tabloului- - reprezinta numele unei variabile

    referinta la tabloul de tipul acesta variabila referinta la un tablou bidimensional

    contine valoarea null, la fel ca si variabila referinta [i] care contine valoarea nullpentru referinta la linia i a tabloului

    Nota: parantezele drepte sunt obligatorii, nu delimiteaza o constructie optionala.

  • 16.11.2016 Curs - Programare orientată pe obiecte 24

    2. Alocarea zonei de memorie pentru tabloul declarat si initializarea lui se face in doua feluri ca si la tablourile unidimensionale:

    a) folosind operatorul new

    b) initializand direct continutul tabloului

  • 16.11.2016 Curs - Programare orientată pe obiecte 25

    a) Sintaxa folosita pentru alocarea zonei de memorie unui tabloubidimensional folosind operatorul new este:

    unde:- - reprezinta numele variabilei referinta declarata

    la pasul 1- - specifica tipul de date primitiv sau tipul de obiecte (dat de

    clasa) al elementelor tabloului- - reprezinta numarul de linii ale tabloului- - reprezinta numarul de coloane ale tabloului- si pot fi:

    – o variabila de un tip primitiv– o expresie de un tip primitiv– sau o constanta de un tip primitiv

    = new [][];

  • 16.11.2016 Curs - Programare orientată pe obiecte 26

    Nota:De cele mai multe ori programatorii combina

    declararea si alocarea zonei de memorie pentru untablou intr-o singura instructiune, astfel

    sau

    [ ][ ] = new [][];

    [ ][ ] = new [][];

  • 16.11.2016 Curs - Programare orientată pe obiecte 27

    De exemplu, urmatoarea instructiune de declarare si alocare de memorie pentru un tabloubidimensional de caractere:

    char [][] caractere = new char [5][];

    Variabila referinta numita caractere contine deocamdata un tablou de 5 referinte la tablouri de caractere.

    Tabloul de referintecaractere

  • 16.11.2016 Curs - Programare orientată pe obiecte 28

    Cele cinci referinte sunt initializate implicit la valoarea null.

    Putem aloca cele 5 tablouri de caractere folosindoperatorul new astfel:

    caractere[0] = new char [3];…caractere[4] = new char[5];

  • 16.11.2016 Curs - Programare orientată pe obiecte 29

    Noile tablouri sunt referite din interiorultabloului original.

    Elementele noilor tablouri sunt caractere:

    Tabloul de referinte originalcaractere

    Noile tablouri alocate

    Elemente de tip caracter

  • 16.11.2016 Curs - Programare orientată pe obiecte 30

    La fel, putem scrie:char [] tablouDeCaractere = caractere[0];

    Variabilele de tip referinta caractere[0] sitablouDeCaractere trimit spre acelasi tablou de caractere rezervat in memorie.

    caractere

    tablouDeCaractere

    Tabloul de referinte original

  • 16.11.2016 Curs - Programare orientată pe obiecte 31

    Un alt exemplu se refera la declararea sialocarea zonei de memorie pentru un tabloubidimensional cu numele temp de tipul int cu 100 de elemente pe linie si 100 de elemente pecoloane se poate folosi instructiunea:

    int [][] temp = new int[100] [100];

  • 16.11.2016 Curs - Programare orientată pe obiecte 32

    b) Alocarea zonei de memorie pentru untablou bidimensional se poate face initializanddirect continutul tabloului (la fel ca in limbajulC/C++).

    De exemplu, pentru declarea si alocarea zoneide memorie pentru un tablou bidimensional cu numele b de tip int cu doua linii si trei coloane se foloseste instructiunea:

    int b[][]={{1, 2, 3}, {7, 8, 9}};

  • 16.11.2016 Curs - Programare orientată pe obiecte 33

    Eliberarea memoriei ocupate de un tablou

    Pentru eliberarea memoriei ocupate de un tablou,este suficient sa anulam toate referintele catretablou.

    Interpretorul Java va sesiza automat ca tabloul numai este referit si mecanismul de colectare degunoaie va elibera zona.

    Pentru a anula o referinta catre un tablou se da oalta valoare variabilei care refera tabloul.

    Valoarea poate fi null sau o referinta catre un alttablou.

  • 16.11.2016 Curs - Programare orientată pe obiecte 34

    Lungimea tablourilor bidimensionale

    Numarul de linii care poate fi stocat intr-un tabloubidimensional oarecare, este permanent retinut invariabila .length

    Numarul de coloane ale fiecarei linii i estepermament retinut in variabila[i].length

  • 16.11.2016 Curs - Programare orientată pe obiecte 35

    De exemplu:

    float [][] matrice = new float [3][4];

    int dimensiune1 = matrice.length; // dimensiune1 stocheaza valoarea 3

    int dimensiune2 = matrice[1].length; // dimensiune2 stocheaza valoarea 4 pentru linia 1

  • 16.11.2016 Curs - Programare orientată pe obiecte 36

    Accesarea (identificarea) unui element al tabloului bidimensional

    Pentru a accesa un element al unei matrice se specifica numele matricei din care face parte elementul si pozitia sa in matrice, prin numarul liniei si numarul coloanei corespunzatoare (numerotarea incepe de la linia 0 si coloana 0), astfel:

    Nota: Parantezele patrate reprezinta operatorul de indexare.

    [] [

  • 16.11.2016 Curs - Programare orientată pe obiecte 37

    Exemplu:int a[4][3];

    elementele tabloului sunt:

    a[0][0], a[0][1], a[0][2], a[1][1], a[1][2], …, a[3][2].

  • 16.11.2016 Curs - Programare orientată pe obiecte 38

    O parcurgere a unui tablou bidimensional se face cu ajutorul instructiunii for astfel:

    for (int i = 0 ; i < matrice.length; i++)for (int j = 0; j < matrice[i].length; j++)

    matrice[i][j] = j;

  • 16.11.2016 Curs - Programare orientată pe obiecte 39

    ExempluSa se citeasca elemente de tip intreg si sa se

    stocheze intr-un tablou bidimensional, iar apoi sa se

    afiseze aceste elemente.

    Codul sursa al programului cu numele

    matrice.java este urmatorul:

    import java.util.*;

    public class matrice

    {

    public static void main(String[] args)throws

    IOException

    {

  • 16.11.2016 Curs - Programare orientată pe obiecte 40

    /* declararea si citirea variabilelor de memorie in care se vor retine numarul de linii, respectiv numarul de coloane ale tabloului bidimensional */

    int n,m;

    Scanner input = new Scanner(System.in);

    System.out.print("dati numarul de linii: ");n = input.nextInt();System.out.print(" dati numarul de coloane: ");m = input.nextInt();

    Exemplu

  • 16.11.2016 Curs - Programare orientată pe obiecte 41

    /* declararea variabilei de tip tablou bidimensional A[][] */

    int A[ ][ ]= new int[n][m];// citirea elementelor in tabloul datint i,j;for(i=0;i

  • 16.11.2016 Curs - Programare orientată pe obiecte 42

    // afisarea elementelor tablouluiSystem.out.println ("Matricea citita este: ");for(i=0;i

  • 16.11.2016 Curs - Programare orientată pe obiecte 43

    Executia programului dat, pentru urmatoarele date de intrare are ca efect obtinerea urmatorului rezultat:

    Exemplu

  • 16.11.2016 Curs - Programare orientată pe obiecte 44

    Transmiterea de parametri tablou catre metodeleunui obiect

    Sa presupunem, ca avem o metoda numitafunctie care are ca parametru un tablouunidimensional de tip int.

    Apelul si definitia metodei arata astfel:

    functia(tablouActual); //apelul metodeivoid functia(int [ ] tablouFormal); //declaratia metodei

  • 16.11.2016 Curs - Programare orientată pe obiecte 45

    Conform conventiilor de transmitere a parametrilorin Java pentru tipurile referinta, variabileletablouActual si tablouFormal refera acelasi obiect-tablou.

    Adica, la transmiterea parametrului se copiazavaloarea lui tablouActual, care este o adresa.

    Astfel, accesul metodei la elementultablouFormal[i] este de fapt un acces la elementultablouActual[i].

    Aceasta inseamna ca variabilele continute in sir pot fi modificate de catre metoda.

    Observatie: Deoarece tablourile sunt de tip referinta,o metoda poate sa returneze un tablou.

  • 16.11.2016 Curs - Programare orientată pe obiecte 46

    Prelucrari elementare pe tablouri

    Programul urmator (loto.java) ilustreaza modul defolosire al tablourilor in Java.

    In jocul de loterie, se selecteaza saptamanal sasenumere de la 1 la 49.

    Programul alege aleator numere pentru 1000 dejocuri si afiseaza apoi de cate ori a aparut fiecarenumar in cele 1000 de jocuri.

  • 16.11.2016 Curs - Programare orientată pe obiecte 47

    import java.io.*;public class loto{

    public static void main(String[ ] args) throws IOException{

    int[ ] numere = new int[50];for (int i = 0; i < numere.length; ++i)

    numere[i] = 0;for (int i = 0; i < 1000; ++i)

    for (int j = 0; j < 6; ++j) //genereaza numere de loterie intre 1 si 49

    numere[(int) (Math.random() * 49) +1]++ ; //numara aparitiile de numere pe joc

    for (int k = 1; k

  • 16.11.2016 Curs - Programare orientată pe obiecte 48

    O executie a programului, in mediul de dezvoltareECLIPSE, are ca efect obtinerea urmatoarelorrezultate:

    31: 11332: 12033: 10534: 13035: 13436: 12837: 10938: 12639: 10340: 131

    11: 12112: 11613: 13314: 14815: 14216: 12917: 13718: 12919: 12020: 124

    21: 13122: 11423: 12724: 12425: 11126: 14127: 12228: 10729: 12130: 121

    41: 12842: 14943: 12144: 14245: 11946: 10747: 12248: 10749: 123

    1: 1392: 1183: 1154: 1085: 1136: 977: 1088: 1359: 11810: 114

  • [email protected]

    Tablouri in Java

    1. Tablouri unidimensionale(vectori)2. Tablouri bidimensionale(matrici)3. Tablouri multidimensionale

    16.11.2016 Curs - Programare orientată pe obiecte 49

  • [email protected]

    Tablouri multidimensionale

    In Java tablourile multidimensionale sunt de fapt vectori de tablouri.

    De exemplu, crearea si instantierea unui tablou cu 3 dimensiuni va fi realizata astfel:

    tablou[i] este linia i a tabloului si reprezinta o matrice cu dim2*dim3 elemente

    iar tablou[i][j][k] este elementul de pe pozitia i, linia j, coloana k.

    16.11.2016 Curs - Programare orientată pe obiecte 50

    Tip tablou[][][] = new Tip[dim1][dim2][dim3];

  • [email protected]

    Copierea vectorilor

    Copierea elementelor unui vector a intr-un alt vector b se poate face:

    1. fie element cu element

    2. fie cu ajutorul metodei System.arraycopy

    Dupa cum vom vedea, o atribuire de genul b = a are alta semnificatie decat copierea elementelor lui a in b si nu poate fi folosita in acest scop.

    16.11.2016 Curs - Programare orientată pe obiecte 51

  • [email protected]

    Copierea vectorilor

    int a[] = {1, 2, 3, 4};int b[] = new int[4];// Varianta 1for(int i=0; i

  • [email protected]

    Sortarea vectorilor - clasa Arrays

    In Java s-a pus un accent deosebit pe implementarea unor structuri de date si algoritmi care sa simplifice procesul de creare a unui algoritm, programatorul trebuind sa se concentreze pe aspectele specifice problemei abordate.

    16.11.2016 Curs - Programare orientată pe obiecte 53

  • [email protected]

    Sortarea vectorilor - clasa Arrays

    Clasa java.util.Arrays ofera diverse metode

    foarte utile in lucrul cu vectori cum ar fi:

    int v[]={3, 1, 4, 2};

    java.util.Arrays.sort(v); // Sorteaza vectorul v// Acesta va deveni {1, 2, 3, 4}

    16.11.2016 Curs - Programare orientată pe obiecte 54

    sort - sorteaza ascendent un vector, folosind un algoritm de tip Quick-Sort performant, de complexitate O(n*log(n)).

  • [email protected]

    import java.util.Arrays;

    public class SortIntArrayExample {

    public static void main(String[] args) {

    int[] i1 = new int[]{3,2,5,4,1};

    System.out.print("Vector initial: ");

    for(int index=0; index < i1.length ; index++)

    System.out.print(" " + i1[index]);

    Arrays.sort(i1);

    System.out.print("Vectorul sortat: ");

    for(int index=0; index < i1.length; index++)

    System.out.print(" " + i1[index]); } }

    16.11.2016 Curs - Programare orientată pe obiecte 55

    Executia programului

    Vector initial: 3 2 5 4 1Vectorul sortat: 1 2 3 4 5

    Sortarea vectorilor - clasa Arrays

  • [email protected]

    Sortarea vectorilor - clasa Arrays

    import java.util.Arrays;

    public class ArrayDemo {

    public static void main(String[] args) {

    int intArr[] = {30,20,5,12,55};

    Arrays.sort(intArr);

    System.out.println("Numerele sortate din vector sunt:");

    for(int index=0; index < intArr.length ; index++) {

    System.out.println("Numar = " + index);

    }

    int searchVal = 12;

    int retVal = Arrays.binarySearch(intArr,searchVal);

    System.out.println("Pozitia valorii 12 este : " + retVal);

    }

    }16.11.2016 Curs - Programare orientată pe obiecte 56

    Numerele sortate din vector sunt:Numar = 5Numar = 12Numar = 20Numar = 30Numar = 55Pozitia valorii 12 este : 1

    binarySearch - cautarea binara a unei anumite valori intr-un vector sortat

  • [email protected]

    Sortarea vectorilor - clasa Arrays

    16.11.2016 Curs - Programare orientată pe obiecte 57

    equals - testarea egalitatii valorilor a doi vectori (au aceleasi numar de elemente si pentru fiecare indice valorile corespunzatoare din cei doi vectori sunt egale)

  • [email protected]

    Sortarea vectorilor - clasa Arrays

    import java.util.*;public class FillTest {

    public static void main(String args[]) {int array[] = new int[6];Arrays.fill(array, 100);for (int i=0, n=array.length; i < n; i++) {

    System.out.println(array[i]); }System.out.println();Arrays.fill(array, 3, 6, 50);for (int i=0, n=array.length; i< n; i++) {

    System.out.println(array[i]); }}

    }16.11.2016 Curs - Programare orientată pe obiecte 58

    100100100100100100

    100100100505050

    fill - atribuie fiecarui element din vector o valoare specificata

  • [email protected]

    Exemplu de program cu vectori

    Se citeste un numar n.

    Sa se calculeze si sa se afiseze un vector care sa contina cifrele numarului dat.

    16.11.2016 Curs - Programare orientată pe obiecte 59

  • [email protected]

    Exemplu program cu vectori

    import java.util.*;

    public class VectorCifre {

    public static void main(String[] args) throws IOException

    {

    int n;

    Scanner input = new Scanner(System.in);

    System.out.print("dati numarul n: ");

    n = input.nextInt();

    16.11.2016 Curs - Programare orientată pe obiecte 60

  • [email protected]

    Exemplu de program cu vectori

    int V[]= new int[20];

    int i=0;

    while(n!=0) {

    V[i]=n%10;

    n=n/10;

    i++;

    }

    int cifre=i;

    for(i=0;i

  • [email protected]

    Exemplu de program cu vectori

    Executia programului:

    16.11.2016 Curs - Programare orientată pe obiecte 62

  • [email protected]

    Exemplu de program cu matrici

    Se consideră o matrice A cu nxm numere întregi. Se cere să se obţină transpusa sa.

    import java.util.*;public class matrice {

    public static void main(String[] args)throws IOException{

    int n,m;Scanner input = new Scanner(System.in);System.out.print("dati numarul de linii: ");n = input.nextInt();System.out.print("dati numarul de coloane: ");m = input.nextInt();

    16.11.2016 Curs - Programare orientată pe obiecte 63

  • [email protected]

    Exemplu de program cu matrici

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

    int i,j;

    for(i=0;i

  • [email protected]

    Exemplu de program cu matrici

    int B[][]= new int[m][n];for(i=0;i

  • [email protected]

    Exemplu de program cu matriciExecutia programului:

    16.11.2016 Curs - Programare orientată pe obiecte 66

  • [email protected]

    Întrebări?

    16.11.2016 Curs - Programare orientată pe obiecte 67