1 / 16

Java – Tablouri si siruri

Java – Tablouri si siruri. Tablouri descriere creare unidimensional de primitive multidimensional de primitive unidimensional de obiecte Siruri creare utilizare. Tablouri. tabloul este o colectie de elemente de acelaşi tip stocate pe heap (locul in care exista toate obiectele Java);

margie
Download Presentation

Java – Tablouri si siruri

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java – Tablouri si siruri Tablouri descriere creare unidimensional de primitive multidimensional de primitive unidimensional de obiecte Siruri creare utilizare

  2. Tablouri • tabloul este o colectie de elemente de acelaşi tip stocate pe heap (locul in care exista toate obiectele Java); • tipul elementelor poate fi simplu (primitiv) sau obiect; un element poate stoca o singura valoare; • elementelese identifica unic printr-un numar întreg numit indice; • se zice că un tablou este multidimensional dacă foloseşte mai mulţi indici pentru accesarea unui element de tablou; un tablou cu o singură dimensiune este cunoscut sub numele de "vector", iar unul cu două dimensiuni sub denumirea de "matrice". • numarul de elemente de tablou se fixeaza în momentul crearii acestuia (Java trebuie sa stie cat spatiu sa aloce pe heap);

  3. Tablouri - creare • termenii de constructie, creare sau instantiere a tabloului se refera la stocarea tabloului pe heap; • declararea tabloului se face prin specificarea tipului elementelor, urmate de [] si numele tabloului, de exemplu: int [] a; aceasta linie insa nu aloca si spatiul de stocare pe heap; • crearea tabloului se face folosind operatorul new impreuna cu tipul si numarul de elemente: int [] a = new int[10]; se poate scrie in aceeasi linie cu declararea sau, separat, pe o linie urmatoare; • initializarea elementelor se face automat cu valori implicite (0 pentru tipurile numerice sau echivalent cu 0 pentru cele ne-numerice); initializarea cu valori ne-implicite se face prin enumerarea lor intre acolade, caz in care numarul de elemente se deduce din acolade.

  4. Tablouri unidimesionale - prelucrare Elementele sunt numerotate de la 0 la 9. O metode de initializare a elementelor de tablou este ciclul for. int [] a = new int[10]; for(int i=0;i<10;++i) a[i]=i; Numarul elementelor este fixat si se poate gasi cu nume.length. for (int i = 0; i < a.length; ++i) System.out.println(a[i]); Parcurgerea se poate realiza si cu o constructie de limbaj mai noua in care nu este nevoie de indice. Variabila element din ciclu parcurge automat toata colectia de valori din tabloul a. for (int element:a) System.out.println(element);

  5. Tablouri bidimesionale - creare • un tablou multidimensional este un tablou de tablouri; • pentru accesarea elementelor de folosesc mai multi indici; • declararea si crearea unui tablou cu 2 dimensiuni ([rand][coloana]): • initializare: • declarare şi initializare fara specificarea numarului de coloane (variabil): tip [][] numetablou = new tip[r][c]; int [][] a = new int[4][2]; a[0][0] = 1; a[0][1]=3; int[][] a ={ {1,3}, {0,0}, {0,0}, {0,0} }; tip [][] numetablou = new tip[r][]; … numetablou[il] = new tip[c];

  6. Tablouri bidimesionale - prelucrare Initializare. double [][] m = new double[5][7]; for (int r = 0; r < 5; ++r) for (int c = 0; c < 7; ++c) m[r][c] = r+c; Afisare cu metoda 1. for (int r = 0; r < m.length; ++r) { for (int c = 0; c <m[r].length; ++c) System.out.printf("%10.5f ",m[r][c]); System.out.println(); } Afisare cu metoda 2. for (double [] rand: m) { for (double element: rand) System.out.printf("%10.5f ", element); System.out.println(); }

  7. Tablouri bidimesionale – cu numar variabil de coloane public class TabMulti { public static void main(String[] args) { int k = 0; int tab2d [][] = new int [4][]; //4 randuri tab2d[0] = new int[5]; tab2d[1] = new int[2]; tab2d[2] = new int[4]; tab2d[3] = new int[7]; for(int i=0; i < tab2d.length; ++i) for(int j=0; j < tab2d[i].length; ++j) tab2d[i][j] = k++; for(int i=0; i < tab2d.length; ++i) { for(int j=0; j < tab2d[i].length; ++j) System.out.print(tab2d[i][j]+" "); System.out.println(); } } }

  8. Tablouri de obiecte Lucrul cu tablourile de obiecte este asemanator cu cel de primitive: • declarare • creare • initializare Diferenta apare la initializare, aici obiectele trebuie initializate fiecare in parte cu operatorul new, altfel ele nu exista (au valorea null). //declarare Punct puncte[]; //creare tablou de obiecte puncte = new Punct[3]; //initializare for (int i = 0; i < puncte.length; ++i) { //initializarea obiectelor din tablou puncte[i] = new Punct(i, 2 * i); } //afisarea elementelor de tablou for (int i = 0; i < puncte.length; ++i) System.out.println(puncte[i]); for (Punct p:puncte) System.out.println(p);

  9. Siruri • sirul de caractere = o secventa de caractere de lungime arbitrară cuprinsa intre ghilimele; • Java NU are implementat un tip primitiv şir de caractere; • String este o clasă Java predefinită în pachetul java.lang.String pentru manipularea şirurilor de caractere; are mai bine de 50 de metode; inspectarea acestora se face cel mai simplu utilizând documentaţia JDK (vezi pagina urmatoare); • compilatorul Java aloca spaţiu pentru literalii sir în memorie iar operatorul de atribuire va stoca adresa respectivă în variabila şir; din acest motiv, testarea egalitătii a două şiruri nu se poate face cu operatorul == ci cu o metoda dedicata numita equals; • sirurile nu pot fi modificate; desi unele operatii par sa faca aceasta in realitate se intoarce un nou obiect String String s; //declararea unei variabile sir String sal = ”Salut”; //decl. cu initializare

  10. Siruri - continuare

  11. Siruri – metode uzuale public class Siruri { public static void main(String[] args) { String s1, s2; String s3 = "Vasile"; //Vasile este un literal s2 ="Ion"; //Ion este un literal //concatenare s1 = s2 + s2; //lungimea unui sir de caractere System.out.println("Lungimea sirului: " +s1 +" este de " +s1.length()+" caractere"); //extagerea unui subsir System.out.println("Un subsir: " + s1.substring(0,3)); //editarea cu subsiruri s1 = s1.substring(0,3) + "-" + s1.substring(3,s1.length()); System.out.println("Editarea: " + s1); //testarea egalitatii sirurilor System.out.println("s1: " + s1+"\ns2: "+s2); System.out.println("Egalitatea lui s1 cu s2: " + s1.equals(s2)); System.out.println("Egalitatea lui Ion cu s2: " + "Ion".equals(s2)); /* comparatia sirurilor * intoarce < 0 daca s1 vine inainte de s2 in dictionar * intoarce 0 daca s1 si s2 sunt egale * intoarce > 0 daca s1 este dupa s2 in dictionar */ System.out.println("Compararea lui s1 cu s2: " + s1.compareTo(s2)); } }

  12. Aplicatia 1 Scrieti o aplicatie Java pentru citirea si afisarea elementelor unui tablou unidimensional a, de 5 elemente. import java.util.Scanner; import javax.swing.*; public class TablouPrimitive { public static void main(String[] args) { final int NRELEM = 5; //lungimea tabloului int [] a; //declararea tabloului Scanner intrare; String iesire = "Indice\tValoarea element\n"; intrare = new Scanner(System.in); a = new int[NRELEM]; //crearea tabloului; //citire interactiva in mod text a elementelor de tablou for(int i = 0; i < a.length;++i) { System.out.print("a[" + i +"] = "); a[i]= intrare.nextInt(); //pt. cea de a 2-a metoda de afisare iesire+= i +"\t"+ a[i] + "\n"; //sir de iesire } //metoda 1: afisare simpla de elemente tablou for(int i = 0; i < a.length;++i) System.out.println(a[i]); //metoda 2: afisare cu fereastra de dialog JTextArea fereastraiesire = new JTextArea(); fereastraiesire.setText(iesire); JOptionPane.showMessageDialog(null,fereastraiesire,"indice - valoare tablou", JOptionPane.INFORMATION_MESSAGE); } }

  13. Scrieti o aplicatie Java pentru sortarea crescatoare a elementelor unui tablou utilizand algoritmul bubblesort. Aplicatia 2/1 // Sortarea crescatoare a unui tablou de intregi import javax.swing.*; public class sortTab { int a []; //tabloul int asort[]; //clona int n; //numarul de elemente de tablou sortTab(int nrel) { n = nrel; //tabloul initial a = new int[n]; //tabloul sortat asort = new int [n]; //generam aleator n numere de la 0 la 100 //de tipul int si le stocam in a for(int i=0; i<n ; ++i) a[i] = (int)(100*Math.random()); //copiem tabloul a in asort try { System.arraycopy(a,0,asort,0,n); } catch(ArrayStoreException e) { System.out.println(e); } }

  14. Aplicatia 2/2 //sortarea public void bubbleSort( ) { boolean esteinterschimbare = true; while (esteinterschimbare) { esteinterschimbare = false; for ( int i = 0; i < asort.length-1; ++i ) { if ( asort[i] > asort[i+1] ) { swap(asort,i,i+1); esteinterschimbare = true; } } } } //interschimbarea a 2 elemente de tablou private void swap( int tablou[], int i, int j ) { int aux; aux = tablou[i]; tablou[i] = tablou[j]; tablou[j] = aux; } //afisare tablou initial public String afisare(String txt) { String rez; rez = txt; for (int i=0; i<a.length; ++i ) rez += " " + a[ i ]; return rez; } //afisarea tablou sortat public String afisaresort(String txt) { String rez; rez = txt; for (int i=0; i<asort.length; ++i ) rez += " " + asort[ i ]; return rez; }

  15. Aplicatia 2/3 public static void main(String args[]) { sortTab st; String rez; st = new sortTab(17); rez = st.afisare("a - Tablou initial:\n"); st.bubbleSort(); // sortare tablou rez += st.afisaresort("\n\nasort - Tabloul cu elementele sortate:\n"); JTextArea ferRez = new JTextArea(); ferRez .setText( rez ); JOptionPane.showMessageDialog(null, rez, "Sortare crescatoare",JOptionPane.INFORMATION_MESSAGE); } }

  16. Bibliografie • http://www.east.utcluj.ro/mb/mep/antal/downloads.html > Java: course, IDE (JDeveloper), JDK and JRE, JDeveloper labs. • http://docs.oracle.com/cd/E18941_01/tutorials/jdtut_11r2_50/jdtut_11r2_50.html > Getting Started With the JDeveloper IDE

More Related