Vai al contenuto


Toggle Chat RM - Chat Apri la Chat in un popup

E' severamente vietato richiedere supporto su RPG Maker in chat!
@  NoxChibi : (18 May 2012 - 01:54 PM) http://rpgmkr.net/fo...4025#entry24025
@  Abadon : (18 May 2012 - 10:08 AM) saaalveee
@  Melosx : (17 May 2012 - 09:51 PM) Cambiato Avatar,,, premete CTRL + F5 se vedete ancora Roxas ^.^
@  NoosiTD : (17 May 2012 - 08:42 PM) evvai
@  kekkorider : (17 May 2012 - 08:40 PM) @NoosiTD eccoti accontentato
@  Melosx : (17 May 2012 - 08:30 PM) E7: Astral Ocean è bellisimo... e come lo subbavano i Nostrano non lo subba nessuno... devo vedere gli anime magic se sono buoni o no
@  NoosiTD : (17 May 2012 - 08:26 PM) e voglio i risultati del contest
@  NoosiTD : (17 May 2012 - 08:24 PM) Il problema è che non ne ho mai capito un accidenti
@  NoosiTD : (17 May 2012 - 08:24 PM) lo guardavo anch'io E7
@  Melosx : (17 May 2012 - 08:23 PM) non puoi capire...
@  Melosx : (17 May 2012 - 08:23 PM) un capolavoro distrutto
@  NoosiTD : (17 May 2012 - 08:21 PM) ma calmino
@  Melosx : (17 May 2012 - 08:21 PM) minchia quanto sono incazato
@  Melosx : (17 May 2012 - 08:20 PM) devo provare l'ultimo che riamane
@  Melosx : (17 May 2012 - 08:20 PM) gli altri subber subbano a cachio di cane morto
@  Melosx : (17 May 2012 - 08:20 PM) gli omoshiroi ci stanno secoli per subbare quegli episodi... oltretutto sbagliano pure il nome di una ragazza
@  Melosx : (17 May 2012 - 08:19 PM) subbato come si deve??
@  Melosx : (17 May 2012 - 08:19 PM) dove lo scarico ora E7:AO
@  Melosx : (17 May 2012 - 08:19 PM) ma chissene di soul eater
@  NoosiTD : (17 May 2012 - 08:17 PM) io facevo così quando mi accorgevo che Soul Eater era finito

[004]Array-Pt.1


  • Per cortesia connettiti per rispondere
4 risposte a questa discussione

#1 OFFLINE   Takobon

Takobon

    Recensori

  • Recensori
  • 415 Messaggi:
  • Tool:
    VS+C#+Xna(Con i quali nascerà Inferdaen)

Inviato 06 December 2010 - 10:09 PM

Premessa:
Mi scuso per la lentezza nel postare le lezioni,purtroppo sono molto occupato con la scuola,problemi personali e studio di XNA(eh si.appena lo inizieremo non lo finiremo più XD).


Argomenti:
    -Introduzione;
    -Dalla teoria alla pratica;
    -Proprietà;
    -Fine

Introduzione:
Per array(tradotto in italiano "matrice") è una struttura di dati,contenente una serie di variabili(anche detti "elementi della matrice") indicizzati(ossia,nella matrice,ogni elemento ha un indice di riferimento per essere "ricercato" e utilizzato a nostro piacimento).

Una matrice ha una dimensione(stiamo già entrando nell'ottica di programmazione a oggetti),cioè determina il numero di indici assegnati ad ogni elemento della matrice(Questo lo vedremo dopo,quando vi parlerò della proprietà .Length).
Quindi,una matrice con dimensione pari ad :
    -0 è detta vuota;
    -1 è detta unidimensionale;
    -2 è detta bidimensionale;
    -3 è detta tridimensionale;
    e così via...


Dalla teoria alla pratica
Bene,dopo una laboriosa teoria,passiamo direttamente alla pratica.
Per dichiarare una matrice dobbiamo seguire questa semplice sintassi:

tipo di dato []   identificatore(nome della variabile) ;

Analizziamo la riga di codice:
Nulla di diverso,tranne l'aggiunta delle parentesi quadre [].Queste hanno il compito di segnalare all'IDE che stiamo dichiarando una matrice e non una semplice variabile.

Esempio:

int[] arrayx; //abbiamo dichiarato una matrice di nome "arrayx" di tipo int

Settiamo la dimensione della matrice:
Si può benissimo effettuare durante la dichiarazione o dopo,vediamo come:

int[] arrayx; //dichiaro una matrice di tipo int
arrayx = new int[5]; //ora la matrice "arrayx" ha una dimensione di 5 elementi

o più direttamente:

int[] arrayx = new int[5];

Semplice no?(;
(Il tutto è introdotto dalla parola chiave new che crea una nuova istanza del tipo int).

Matrici di diversa dimenzione:
Come ho già menzionato prima,vi ho mensionato che in base alla dimensione della matrice,possiamo avere diversi tipi di essa :
    -Unidimensionale (1 sola dimensione);
    -Bidimensionale (2 dimensioni);
    -Tridimensionale(3 dimensioni);
    -Matrice di matrici(non le tratteremo,se vi interessano,andate qui http://msdn.microsof...y/2s05feca.aspx )
    ecc..(anche se le ultime due rientrano nella categoria di matrici multidimensionali)

Le unidimensionali le abbiamo appena viste,possiamo immaginarle come una riga di numeri che si sussegono.
Es.
int[] numb = new int[] {0,5,7,8,9};

0  5  7  8  9  

NOTA:
-I valori/variabili vengono racchiuse nelle parentesi graffe;
-Qui ho inizializzato e dichiarato la matrice nello stesso momento,attraverso la parola chiave new,ma volendo potremmo sintetizzare il tutto così:

int[] numb = {0,5,7,8,9};

ATTENZIONE: Questo è valido solo al momento della dichiarazione!
In un momento diverso avremmo errore dall'IDE.
Es.

int[] numb;
numb = new int[]  {0,5,7,8,9}; //Ok!
numb =  {0,5,7,8,9}; //Errato!

Volendo potremmo assegnare diversi elementi ad ogni indice separatamente:

int[] x;
x[0] = 5;
x[1] = 7;
x[2] = 1;
e così via..

-Vi ricordo che l'indicizzazione,in una matrice,parte da zero.Dove una matrice con n elementi viene indicizzata da 0 a n-1(Se assegniamo alla matrice una dimensione di 5 elementi,l'ultimo di essi non avrà indice 5,ma 4!);
-Se si supera la dimensione della matrice prestabilita avremo un'errore(es.

int[] numb = new int[3] {0,1,2,3,} //Avremo un'errore,abbiamo 4 elementi e non tre!)
-Se si utilizza una variabile per indicare la dimensione della matrice,deve essere definita come costante:

int i = 3;
int[] numb = new int[i] {valori } //i non è costante!


Bene dopo aver introdotto un la base(complicata all'inizio XD),passiamo a discutere sugli altri tipi di matrice.

Bidimensionali;
Il nome dice tutto,l'unica differenza è l'identificatore,ossia nelle parentesi quadre,al momento della dichiarazione va inserita la virgola ,:

int[,] numb2D = new int[2,2]; //Creerà una matrice bidimensionale composta da due "righe" e da due "colonne";

Eh si!Quando parliamo di matrici dobbiamo immaginarle come una sorta di griglia(quando si passa al tipo multidimensionale) formata da righe e colonne,dove il primo valore corrisponde alle righe e il secondo alle colonne.

Quindi se scrivessimo:

int[,] numb2D = new int[1,1] {{a,b},{c,d}}

Astrattamente sarebbe :

               
    | 0 | 1 | 
0  | a | b |
1  | c | d |

Ho preferito usare le lettere per non creare confusioni.

Quindi a avrà "coordinate" 0,0;
b(0,1), c(1,0) , d(1,1).

Le stesse regole dette prima,valgono anche qui.


Tridimensionale:
Tre dimensioni,nulla di nuovo.Fra le parentesi quadre,non metteremo una virgola,ma due.

int[,,] numb3D = new int[,,];


Proprietà:
La proprietà che vi parlerò è .Length.Essa restituisce la lunghezza di una matrice.

int[] numb = new int[5];
Console.WriteLine(numb.Length); //Ciò restituirà 5

Semplice proprietà che risulterà utile quando svilupperemo la Dialogbox del nostro Rpg.Ossia,per poter "spezzare" il testo(andare a capo) si pone una condizione che se la lunghezza della matrice contenente il testo supera il riquadro del dialogo,ristamperà il testo a capo(con coordinate x=0 e y += 1).


Fine:
La prima parte finisce qui,per la seconda ci servirà conoscere l'uso dei cicli(che tratteremo nella prossima lezione,a breve spero).Ora compiti!.
No,scherzo,per farmi perdonare,niente compiti,vi lascio svagare nelle matrici a vostro piacimento^^
http://nexuseden.tumblr.com/Immagine inseritaSono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
Spoiler

#2 OFFLINE   3xter

3xter

    Fondatori

  • Amministratori
  • 1006 Messaggi:
  • Progetto VX:
    Rain's Legacy
  • Tool:
    Rpg Maker VX / Sharp Develop

Inviato 06 December 2010 - 10:20 PM

Solo un appunto.
La Matrici sono Array Multidimensionali. Gli Array vengono chiamati Vettori e sono sempre Monodimensionali.

Le "matrici di matrici" vengono chiamate didatticamente "Array di record" se hanno celle di diverso tipo.

Per il resto, buona lezione!
Immagine inserita Burle Simpatiche
Spoiler
Ecco perchè Rain's Legacy va avanti rapidamente
Spoiler

#3 OFFLINE   herupty

herupty

    Apprendista Maker

  • Utenti RM
  • 640 Messaggi:
  • LocalitàMilano
  • Tool:
    S.E.R.P.E. ;P

Inviato 14 December 2010 - 03:30 PM

compiti?

comunque buona lezione ;)
lool
Spoiler

#4 OFFLINE   Takobon

Takobon

    Recensori

  • Recensori
  • 415 Messaggi:
  • Tool:
    VS+C#+Xna(Con i quali nascerà Inferdaen)

Inviato 14 December 2010 - 04:11 PM

Citazione

Ora compiti!.
No,scherzo,per farmi perdonare,niente compiti,vi lascio svagare nelle matrici a vostro piacimento^^

http://nexuseden.tumblr.com/Immagine inseritaSono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
Spoiler

#5 OFFLINE   herupty

herupty

    Apprendista Maker

  • Utenti RM
  • 640 Messaggi:
  • LocalitàMilano
  • Tool:
    S.E.R.P.E. ;P

Inviato 14 December 2010 - 05:18 PM

ah scusa ^^'
non avevo letto :P
lool
Spoiler




1 utente(i) stanno leggendo questa discussione

0 utenti, 1 ospiti, 0 utenti anonimi