tutoriale photoshop, brushes, patterns, gradient
Site afiliat proiectului Wtricks.com
   
   
  REGULAMENT | Search | Members | Calendar | Help  
 


Post Reply  Post Thread 
JAVA
Author Message
CyKy
De al casei
***


Posts: 51
Group: Registered
Joined: Oct 2008
Status: Offline
Reputation: 0
Lei: 201.31
Post: #1
Smile  JAVA

am si io niste intrebari la tablouri??? (ce fac anumite sintaxe)

1.
float [][]multiTablou=new float [3][4];
int dimensiune1=multiTablou[2].length;
int dimensiune2=multiTablou.length;

DE CE dimensiune1 primeste val 4??? si nu val 3???Big Grin
*Dak ati puteam sami ziceti sau sami arati cum arata un tablou de forma:  int exemplu[]=new int[3]

2.
int[]tablou=new int[10];
tablou[3]=1;(dc al 4lea element primeste valoarea 1??)
float [][]reali=new float[3][4];
reali[2][3]=1.0f;
(dc al4lea element al celui de-al 3lea tablou primeste val 1??)Sad

VA ROG SAMI RASPUNDETI...Dar sami si explicati va rogWinkCoolSmile


In curs de cunoastere....
10-11-2008 02:40 AM
Find all posts by this user Quote this message in a reply
Mihai_Only
Moderator
*****


Posts: 396
Group: Moderators
Joined: Jul 2007
Status: Offline
Reputation: 1
Lei: 1210.99
Post: #2
RE: JAVA

Păi cam aşa se întâmplă când te bagi peste preactică fără să analizezi riguros teoria.Tu acolo vrei să creezi nişte tablouri(în limbaj de programator se foloseşte şi array) iar orice tablou începe de la 0.Aşadar,dacă ai declarat "int [] tablou=new tablou[10];" ai creat defapt un tablou capabil să reţină 10 valori(0,1,2,3,...10).(sper că asta îţi răspunde la prima întrebare)
Apoi,nu cred că în java poţi folosii sintaxa "int exemplu<b>[]</b>=new int[];".Dacă cumva te refereai la "int [] exemplu = new int[3];" poftim un mic desen:
0  1   2  3
0| 0| 0| 0
Ţine minte că în java orice variabile neiniţializate de tip int sau float au valoarea 0 şi cele de tip boolean,false.
Faptul că array-urile încep de la 0 explică şi nedumerirea ta de la punctul 2.

This post was last modified: 10-11-2008 03:30 AM by Mihai_Only.

10-11-2008 03:29 AM
Visit this users website Find all posts by this user Quote this message in a reply
adrstan
Ucenic
****


Posts: 137
Group: Registered
Joined: Jan 2008
Status: Offline
Reputation: 1
Lei: 746.96
Post: #3
RE: JAVA

Daca
int [] tablou=new tablou[10];

atunci tablou este, de exemplu, capabil sa retina valorile {0,1,2,3, ... 9}, nu {0,1,2 ,3 ... 10}
Primul index in array este 0, ultimul este 9, array-ul continand 10 elemente.

Daca
int [] exemplu = new int[3];

atunci exemplu poate contine 3 intregi, ultimul index in array este 2, primul fiind 0.
Adica poti avea:
0 1 2
0|0|0

nu

0  1 2 3
0| 0| 0| 0

Java accepta atat sintaxa:
int [] exemplu = new int[3];
cat si
int exemplu [] = new int[3];

E fix acelasi lucru.
In Java se prefera utilizarea primei variante:  int [] exemplu = new int[3];
A doua varianta: int exemplu [] = new int[3] e C++ like.

This post was last modified: 10-11-2008 06:54 AM by adrstan.

10-11-2008 06:38 AM
Find all posts by this user Quote this message in a reply
Mihai_Only
Moderator
*****


Posts: 396
Group: Moderators
Joined: Jul 2007
Status: Offline
Reputation: 1
Lei: 1210.99
Post: #4
RE: JAVA

Oops,aşa e Big Grin
Mulţumesc de corectare

10-11-2008 02:49 PM
Visit this users website Find all posts by this user Quote this message in a reply
CyKy
De al casei
***


Posts: 51
Group: Registered
Joined: Oct 2008
Status: Offline
Reputation: 0
Lei: 201.31
Post: #5
RE: JAVA

nu mam bagat pe progrmare direct sunt la partea teoreticaSmile)...dar in carte nu explica cu desen si fol niste cuvinte...si nam inteles ce vroia sa zic...am inteles  faza cum arata int [] tablou=new int[3] dar....float [][] multiTablou=new float[2][3] sunt 2 tablouri unite??adica:

0 1 2
0 1 2 3 sau cum???

1.Apropo de ce voi puneti |(bara) dupa 0?
2.Aratati tot asa cum arata un asemenea tablou va rog   int [][] multiTablou=new int[2][3]:!!!
3.mereu elementele de pe a 2a linie sunt 0?
4.stiu k elementele neinitializate la boolean sunt false la int 0 la byte 0 la long 0L la float 0.0f la double 0.0d...
5.Deci...k sa inteleg in sintaxa:

int [] tablou=new int[10];
tablou[3]=1;

int[10] arata:  0 1 2 3 4 5 6 7 8 9   corect?
                        0 0 0 0 0 0 0 0 0 0    
si tablou[3] arata: 0 1 2              corect?
                              0 0 0

Deci in carte zice ca al 4-lea element primeste valoarea 1 la sintaxa tablou[3]=1? adik elemntu 0(primu de pe a 2a linie) devine 1? si tabloul arata:

0 1 2
1 0 0    ??????????????????????????????

Oricum multumesc ca ma ajutati sa inteleg...am inteles cum arata un tablou pana la urma un fel de matrice cu a 2a linie 0.....

Va Multumesc pentru raspunsuri!


In curs de cunoastere....

This post was last modified: 10-11-2008 09:49 PM by CyKy.

10-11-2008 09:41 PM
Find all posts by this user Quote this message in a reply
adrstan
Ucenic
****


Posts: 137
Group: Registered
Joined: Jan 2008
Status: Offline
Reputation: 1
Lei: 746.96
Post: #6
RE: JAVA

Iti scriu un mic tutorial in 15 min

This post was last modified: 10-11-2008 09:59 PM by adrstan.

10-11-2008 09:58 PM
Find all posts by this user Quote this message in a reply
adrstan
Ucenic
****


Posts: 137
Group: Registered
Joined: Jan 2008
Status: Offline
Reputation: 1
Lei: 746.96
Post: #7
RE: JAVA

1. Array-uri unidimensionale

Un array este o secventa de elemente de acelasi tip.
Primul lucru pe care trebuie sa il intelegi este ca un array este un obiect
Un array de 10 elemente intregi se declara astfel:

Code:
int [] arr = new int [10];


Elementele in array se acceseaza folosind un indice
Intr-un array avand n elemente, primul element are indicele 0, ultimul element are indicele n-1
De exemplu, in cazul nostru, primul element este arr[0], iar ultimul element este arr[9]

In acest moment, nu am initializat array-ul, asa ca compilatorul a initializat fiecare element la valoarea 0
(deoarece elementele sunt numere intregi).

Continutul array-ului poate fi vizualizat astfel:

Code:
arr[0] = 0
arr[1] = 0
arr[2] = 0
arr[3] = 0
arr[4] = 0
arr[5] = 0
arr[6] = 0
arr[7] = 0
arr[8] = 0
arr[9] = 0


Sa presupunem ca vrem sa initializam array-ul arr astfel incat:

Code:
arr[i] = i * i


Este banal de facut folosind o bucla for

Code:
for (int i = 0; i < arr.length; i++)
    arr[i] = i * i;


Dupa acesta operatie, continutul array-ului arr va arata astfel:

Code:
arr[0] = 0
arr[1] = 1
arr[2] = 4
arr[3] = 9
arr[4] = 16
arr[5] = 25
arr[6] = 36
arr[7] = 49
arr[8] = 64
arr[9] = 81


Sa presupunem ca vrem sa setam al 5-lea element la valoarea 99

Code:
arr[4] = 99;

De ce arr[4] si nu arr[5] ? Pentru ca, precum am spus, primul indice in array este 0, deci al 5-lea element este arr[4]

In continuare iti dau un programel de test, care prezinta conceptele expuse pana in acest moment.

Code:
//UnidimensionalArray.java

public class UnidimensionalArray {

  int [] arr;

  public UnidimensionalArray(int n) {
        arr = new int[n];
  }

  public void printArray() {
        for (int i = 0; i < arr.length; i++)
             System.out.printf("arr[%d] = %d\n", i, arr[i]);
  }

  public void initArray() {
         for (int i = 0; i < arr.length; i++)
             arr[i] = i * i;
  }

  public static void main(String [] args) {
        UnidimensionalArray myArr = new UnidimensionalArray(10);
        System.out.println("Afisam elementele inainte de initializare");
        myArr.printArray();
        System.out.println("Initializam array-ul");
        myArr.initArray();
        System.out.println("Afisam elementele dupa initializare");
        myArr.printArray();
  }
}


Compilare:

Code:
javac UnidimensionalArray.java


Executie:

Code:
java UnidimensionalArray




1. Array-uri multidimensionale

Java suporta array-uri multidimensionale.
Pentru simplificare, vom discuta numai despre array-uri bidimensionale

Sa presupunem ca dorim sa definim un array avand 2 linii si 3 coloane
O facem astfel:

Code:
int [][] arr = new int[2][3];


Precum am spus, indicii intr-un array incep de la 0.
Intr-un array bidimensional arr[m][n], primul element este arr[0][0], iar ultimul este arr[m-1][n-1];
unde m este numarul de linii, iar n este numarul de coloane.
In cazul nostru, primul element este arr[0][0], iar ultimul element este arr[1][2]

In acest moment, noi nu am initializat array-ul arr.
Compilatorul a initializat fiecare element al arra-ului la valoarea 0.

Sa presupunem ca vrem sa initializam array-ul astfel:

Code:
arr[i][j] = i + j;

unde i este indicele curent pe linie iar j indicele curent pe coloana

Continutul array-ului poate fi vizualizat astfel:

Code:
arr[0][0] = 0
arr[0][1] = 1
arr[0][2] = 2
arr[1][0] = 1
arr[1][1] = 2
arr[1][2] = 3


E mai intuitiv sa vizualizezi continutul sub forma unei matrici (asa cum ai studiat la matematica):

Code:
0 1 2  --> prima linie: arr[0]
1 2 3  --> a doua linie: arr[1]


In momentul de fata ne putem pune intrebarea: care este lungimea array-ului arr ?.
Adica, care este valoarea lui arr.length
Raspunsul este 2. De ce ? Pentru ca avem 2 linii.

Pentru a intelege acest lucru, trebuie sa intelegi urmatorul fapt fundamental: orice array multidimensional in Java este de fapt implementat ca un array unidimensional care contine, ca si elemente, referinte la array-uri cu un ordin mai mic
Sa exemplificam pe cazul nostru:
- arr este implementat de fapt ca un array unidimensional de 2 elemente
- cele 2 elemente pot fi accesate sub forma arr[0] si arr[1]
- cele 2 elemente sunt de fapt referinte la un array unidimensional
arr[0] este o referinta la array-ul unidimensional (0, 1, 2)
arr[1] este o referinta la array-ul unidimensional (1, 2, 3)

Code:
arr[0] --> (0, 1, 2)
arr[1] --> (1, 2, 3)


Deci avem:

Code:
arr.length = 2
arr[0].length = 3
arr[1].length = 3


Ca si data trecuta, includ un program de test.
Citeste codul si comentariile cu atentie si ruleaza programul

Code:
//BidimensionalArray.java
class BidimensionalArray {

     private final static int NUM_LINES = 2;
     private final static int NUM_COLS = 3;

     public static void main (String [] args) {
           int [][] arr = new int[NUM_LINES][NUM_COLS];

           int i;  /// indice folosit sa parcurgem liniile
           int j;  /// indice folosit sa parcurgem coloanele

           // intializam array-ul
           for (i = 0; i < NUM_LINES; i++)
               for (j = 0; j < NUM_COLS; j++)
                   arr[i][j] = i + j;

           // afisam dimensiunea array-ului
           System.out.println("Dimeniunea array-ului este: " + arr.length);

           // afisam continutul array-ului
           for (i = 0; i < NUM_LINES; i++)
                          for (j = 0; j < NUM_COLS; j++)
                              System.out.printf("arr[%d][%d] = %d \n", i, j, arr[i][j]);

           // array-ul arr este de fapt un array unidimensional avand 2 elemente
           // fiecare din cele 2 elemente este o referinta catre un array
           // unidimensionalavand 3 elemente
                      // vezi codul de mai jos

                      // care este lungimea fiecarui array ? (arr[0], arr[1])
           for (i = 0; i < NUM_LINES ; i++)
               System.out.printf("arr[%d].length = %d\n", i, arr[i].length);

           // o alta modalitate de a parcurge array-ul bidimensional
           // care aplica ca am spus mai sus: array-ul arr este de fapt un array
           // unidimensional avand 2 elemente
                      System.out.println("Inca o modalitate de a parcurge array-ul");
               for (i = 0; i < arr.length; i++)
                 for (j = 0; j < arr[i].length; j++)
                   System.out.printf("arr[%d][%d] = %d \n", i, j, arr[i][j]);
           }
}


Compilare:

Code:
javac BidimensionalArray.java


Executie:

Code:
java BidimensionalArray

This post was last modified: 10-12-2008 12:12 AM by adrstan.

10-11-2008 11:47 PM
Find all posts by this user Quote this message in a reply
CyKy
De al casei
***


Posts: 51
Group: Registered
Joined: Oct 2008
Status: Offline
Reputation: 0
Lei: 201.31
Post: #8
Thumbs up  RE: JAVA

nu pot sa zic decat multumesc foarte mult pentru raspunsul tau...apreciez...am inteles un pic programele...nu in totalitate...fiindca nu am citit decat de declarare,initializare, tip de variabile,clasa de memorare....am inteles ceva fiindca la scoala faceam C++...

Creca o sa-mi placa sa fiu membru la acest forumBig Grin(ma ajutaBig Grin)...mersi foarte mult adrstan!!


In curs de cunoastere....
10-12-2008 01:14 AM
Find all posts by this user Quote this message in a reply
Post Reply  Post Thread 

View a Printable Version
Send this Thread to a Friend
Subscribe to this Thread | Add Thread to Favorites

Forum Jump:

 

 Invatam Net
Esti nou pe aici? Vorbeste-ne despre tine.
Citeste articole si tutoriale unice.
Ai un site? Iti putem oferi un review.

  Parteneri

  


-->