Vai al contenuto


Toggle Chat RM - Chat Apri la Chat in un popup

E' severamente vietato richiedere supporto su RPG Maker in chat!
@  MihaChan : (23 May 2012 - 09:19 PM) a parte i denti -che stanno decidendo di darmi noia in questi giorni-, tutto okay~
@  Melosx : (23 May 2012 - 09:18 PM) bene ^.^ ... Tu??
@  MihaChan : (23 May 2012 - 09:17 PM) come va? xD
@  MihaChan : (23 May 2012 - 09:16 PM) okay
@  MihaChan : (23 May 2012 - 09:16 PM) ah
@  Melosx : (23 May 2012 - 09:14 PM) ciao miha... ai dont spic inglisc
@  MihaChan : (23 May 2012 - 09:12 PM) how'sa goin'?
@  MihaChan : (23 May 2012 - 09:12 PM) ciao Mel!
@  Melosx : (23 May 2012 - 09:07 PM) ciao
@  MihaChan : (23 May 2012 - 09:06 PM) salve D:
@  Pech93 : (23 May 2012 - 08:05 PM) MIk?
@  Melosx : (23 May 2012 - 07:51 PM) VIENI SU MSN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@  Melosx : (23 May 2012 - 07:51 PM) MIIIIIIIIIIIIIIIIIIIKKKKKKKKKKKK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@  Melosx : (23 May 2012 - 07:46 PM) *iù
@  Melosx : (23 May 2012 - 07:38 PM) iu spin mi rai rau bebi rai rau laic a record bebi rau rau rau rau
@  Melosx : (23 May 2012 - 07:37 PM) lalalallalallalallallllllllllalalalallaaaaaaaaaaaaaaaaaaaaaa!!!!!!!!!!!!!!!!!!
@  Melosx : (23 May 2012 - 07:37 PM) lalalalala
@  Melosx : (23 May 2012 - 07:37 PM) naoinvaoèvpodlnvvrovnovnondpppppppppmvdgdvjomvmvpe
@  Melosx : (23 May 2012 - 07:36 PM) che coa che robaé
@  Abadon : (23 May 2012 - 07:34 PM) dopo che il forum è andato fuori servizio si è persa un po' la chat D:

[006]Istruzione di iterazione-Pt.1


  • Per cortesia connettiti per rispondere
8 risposte a questa discussione

#1 OFFLINE   Takobon

Takobon

    Recensori

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

Inviato 20 December 2011 - 02:51 PM

Intro:
Ne è passato di tempo eh?Ormai sapete che sono un uomo impegnato,come tutti^^
In questa lezione vi insegnerò i cicli!(o anche chiamati "istruzioni di iterazione").


Definizione:
Un'istruzione di iterazione permette la creazione di cicli,al cui interno vengono eseguite le istruzione contenute un n numero di volte.Ma questi cicli sono determinati da delle condizioni e dalla possibile presenza di istruzioni di spostamento(ve li mostrerò dopo).

N.B. I cicli vengono formalmente usati per scorrere i dati contenuti nelle matrici o per una semplice sequenza(per le matrici for o foreach).

Indice:

    For;
    While;
    Do;
    Foreach.

Let's go:

For:
Questa keyword esegue ripetutamente un n numero di istruzioni finchè non restituirà false.

for ( int i =1; i <= 5; i++)
{
Console.WriteLine(i); //vi ricordate ancora di queste istruzioni?XD
}

Analizziamo la sintassi (:

for: la keyword che richiama l'istruzione;
int i = 1: inizializzo e dichiaro una variabile di tipo int;
i <= 5 : pongo la condizione che i sia minore-uguale a 5;
i++ : incremento i di 1(questo avviene alla fine di ogni ciclo);

Vi starete chiedendo come lavori for e vi posso comprendere che all'inizio vi sentiate dispersi,ma no problem!Usando,come sempre,la logica vi illustrerò tutto per bene:

For ha bisogno,non necessariamente, di tre condizioni :
1-Dichiarare e inizializzare una variabile che farà da contatore;
2-Porre la condizione per l'intero ciclo(io ho posto i < 5 in modo che il ciclo venga eseguito finchè questa condizione sia vera.Quando i sarà maggiore di 5,il ciclo terminerà.)
3-Incrementare il nostro contatore;

Tutto chiaro ora? (:

Per chi fosse interessato l'output di quel ciclo è :
1
2
3
4
5


N.B. Il test della condizione avviene prima dell'esecuzione del ciclo(diversamente dal ciclo do,lo vedremo dopo).

Inoltre è possibile non scrivere alcun parametro per il ciclo for:

for ( ; ;)

{
//blocco di istruzione
//Attenzione!Questo ciclo verrà eseguito all'infinito!!A meno che non inseriate un'istruzione di spostamento o il programma si "freezerà",con eventuale crash
}


While:
Simile all'istruzione for,ma varia per i parametri:

int i = 1;
while ( i < 5)
{
Console.WriteLine(i);
i ++
}

Come potete osservare i parametri sono divisi:
-Il contatore viene dichiarato e inizializzato al di fuori del ciclo;
-La condizione rimane come argomento dell'istruzione;
-L'incremento avviene alla fine del ciclo;

ma volendo avremmo potuto scriverlo così(con differente output ):
int i = 1;
while ( i++ < 5)
{
Console.WriteLine(i);

}

Infatti i due output sarebbero questi :
Output #1:
1
2
3
4

Output #2
2
3
4
5

N.B. In tutti i cicli valgono le stesse regole più o meno.


Do:
Anche questo ciclo è simile agli altri descritti,ma,come vi ho già accennato,il test della condizione avviene dopo l'esecuzione del ciclo,quindi il ciclo dev'essere eseguito almeno una volta.

Andiamo ad analizzare la sua sintassi(simile a quella di while (: ) :


int i = 0;
do
{
            Console.WriteLine(i);
            i++;
        } while (i < 5);


Output
0
1
2
3
4

Come potete osservare la condizione è posta alla fine del ciclo (:


Foreach:
Questa istruzione ripete un blocco di istruzioni,i quali elementi facciano parte di una matrice o di un insieme di oggetti che implementi l'interfaccia IEnumerable.

Dopo questa premessa importante,passiamo alla sintassi!


int[] numbers = new int[] {1,5,9,12,19,20}

foreach( int i in numbers)
{
Console.WriteLine(i);
}


Come potete vedere ho inizializzato una matrice al di fuori del ciclo(credo abbiate capito il motivo) e dopo di che ho fatto "scorrere" tale matrice all'interno dell'istruzione foreach.Quest ultimo richiede un contatore che sia dichiarato nei parametri.

Se provassimo a "tradurre" tale istruzione avremmo :
Per ogni(foreach) elemento di tipo int (int i) che si trovi all'interno(in) della matrice(numbers),fai questo(Console.WriteLine(i);).

Vi andrà a stampare gli elementi contenuti nella matrice,in breve (:

N.B. L'istruzione foreach non viene usata per aggiungere o rimuovere elementi,per questo si usa for.


Ta-dan!:
Vi ho descritto tutti i cicli!Contenti?Ma non è finita qui!Infatti ci sarebbe altre cose di cui trattare(istruzione di spostamento e analizzare al meglio lo scorrere delle matrici).
Ma questo ve lo mostrerò nella prossima parte o la lezione sarebbe troppo lunga e noiosa <.<.

Detto questo,mi scuso per la solita lunghezza esagerata e vi auguro un buon Natale!(E si nemmeno stavolta compiti,perchè mi aspetto da voi che vi stiate esercitando,ma con la prossima lezione ve ne assegnerò tipo una o due valanghe :P )

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

#2 OFFLINE   herupty

herupty

    Apprendista Maker

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

Inviato 20 December 2011 - 03:06 PM

in tutti i cicli si nota il nostro tanto amato
i++
ma in questo modo si aumenta di 1 il valore di i;
se volessi aumentarlo di due è possibile? se si, andando per logica (probabilmente errata) mi viene da pensare che si possa fare così i+n, dove n = numero

se avrò altre domande editerò :D
lool
Spoiler

#3 OFFLINE   Takobon

Takobon

    Recensori

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

Inviato 20 December 2011 - 03:12 PM

herupty, dice:

in tutti i cicli si nota il nostro tanto amato
i++
ma in questo modo si aumenta di 1 il valore di i;
se volessi aumentarlo di due è possibile? se si, andando per logica (probabilmente errata) mi viene da pensare che si possa fare così i+n, dove n = numero

se avrò altre domande editerò :D


Mmh bella domanda,non ci avevo mai pensato.Non avendoci mai provato,non so risponderti,bisognerebbe provarci,ma se non ricordo male è obbligatorio l'incremento di 1(ma potrei sbagliarmi).
http://nexuseden.tumblr.com/Immagine inseritaSono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
Spoiler

#4 OFFLINE   herupty

herupty

    Apprendista Maker

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

Inviato 20 December 2011 - 03:17 PM

l'alunno mette in difficoltà il maestro xD
dopo provo e ti faccio sapere ;)
lool
Spoiler

#5 OFFLINE   herupty

herupty

    Apprendista Maker

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

Inviato 24 December 2011 - 04:11 PM

chiedo venia x il doppio post..
per fare in modo che la variabile aumenti di una quantità maggiore a uno si deve omettere all'inizio e inserire nel ciclo di quanto si vuole farla aumentare ogni volta
Esempio
Se prima avevamo
for (int i = 1; i <= 10; i++)
            {
                Console.WriteLine(i);
                Console.ReadLine();
            }
ogni volta k premevamo invio (per il codice Console.ReadLine()) il valore di i aumentava di uno e l'output fornitoci dal comando Console.WriteLine(i) ci mostrava l'incremento di uno

se invece noi volessimo far aumentare di 2 il valore di i dovremmo semplicemente estrarre il comando che aumenta di uno e trasformarlo in questo modo
for (int i = 0; i <= 10;)
            {
                Console.WriteLine(i);
                Console.ReadLine();
                i = i + 2;
            }
in questo modo si aumenta di 2 il valore di i ogni volta che viene premuto invio =))
(ho messo i = 0 in modo da arrivare a 10 precisi, se avessi voluto avrei potuto lasciare 1 in quanto il ciclo non si interrompe fino a quando i è minore o uguale a 10)
lool
Spoiler

#6 OFFLINE   Takobon

Takobon

    Recensori

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

Inviato 24 December 2011 - 04:26 PM

herupty, dice:

chiedo venia x il doppio post..
per fare in modo che la variabile aumenti di una quantità maggiore a uno si deve omettere all'inizio e inserire nel ciclo di quanto si vuole farla aumentare ogni volta
Esempio
Se prima avevamo
for (int i = 1; i <= 10; i++)
            {
                Console.WriteLine(i);
                Console.ReadLine();
            }
ogni volta k premevamo invio (per il codice Console.ReadLine()) il valore di i aumentava di uno e l'output fornitoci dal comando Console.WriteLine(i) ci mostrava l'incremento di uno

se invece noi volessimo far aumentare di 2 il valore di i dovremmo semplicemente estrarre il comando che aumenta di uno e trasformarlo in questo modo
for (int i = 0; i <= 10;)
            {
                Console.WriteLine(i);
                Console.ReadLine();
                i = i + 2;
            }
in questo modo si aumenta di 2 il valore di i ogni volta che viene premuto invio =))
(ho messo i = 0 in modo da arrivare a 10 precisi, se avessi voluto avrei potuto lasciare 1 in quanto il ciclo non si interrompe fino a quando i è minore o uguale a 10)

Sì,dopo tutto è normale che tu possa incrementare di quanto vuoi il contatore.Però è meglio aumentare sempre di uno(poi dipende da cosa tu voglia fare).Poi lo capirai quando li applicheremo nell uso della classe "List" o "Array" ^^
http://nexuseden.tumblr.com/Immagine inseritaSono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
Spoiler

#7 OFFLINE   herupty

herupty

    Apprendista Maker

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

Inviato 24 December 2011 - 04:41 PM

esercizi x questa lezione?
lool
Spoiler

#8 OFFLINE   Takobon

Takobon

    Recensori

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

Inviato 24 December 2011 - 06:20 PM

Citazione

Detto questo,mi scuso per la solita lunghezza esagerata e vi auguro un buon Natale!(E si nemmeno stavolta compiti,perchè mi aspetto da voi che vi stiate esercitando,ma con la prossima lezione ve ne assegnerò tipo una o due valanghe :P )

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

#9 OFFLINE   herupty

herupty

    Apprendista Maker

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

Inviato 24 December 2011 - 06:31 PM

come al solito mi era sfuggita sta parte >.<
allora aspetto la prox lezione :DD
nn vedo l'ora *-*
lool
Spoiler




1 utente(i) stanno leggendo questa discussione

0 utenti, 1 ospiti, 0 utenti anonimi