Fahrenheit e viceversa. Enjoy!" />

Vai al contenuto


Toggle Chat RM - Chat Apri la Chat in un popup

E' severamente vietato richiedere supporto su RPG Maker in chat!
@  NoxChibi : (22 May 2012 - 07:33 PM) bene
@  Pech93 : (22 May 2012 - 06:48 PM) Night l'hai visto???
@  Pech93 : (22 May 2012 - 06:42 PM) night MP
@  Pech93 : (22 May 2012 - 06:42 PM) Ciaoooooooooo
@  Night : (22 May 2012 - 06:35 PM) bene, mi sto allenando sui disegni, ho in mente molte scene disegnate da presentare nel gioco
@  Night : (22 May 2012 - 06:35 PM) so di essere un po' in ritardo, ma rispondo lo stesso XD
@  NoxChibi : (22 May 2012 - 02:59 PM) hi night come procede il tuo progetto?
@  Night : (22 May 2012 - 02:56 PM) buongiornooo :3
@  MihaChan : (22 May 2012 - 01:20 PM) lol
@  MihaChan : (22 May 2012 - 01:20 PM) !!oaiC
@  Melosx : (22 May 2012 - 12:47 PM) ^.^ !!nahCahiM oaiC
@  MihaChan : (22 May 2012 - 12:41 PM) buonsalve
@  Melosx : (22 May 2012 - 12:28 PM) cmq buongiorno a tutti
@  Melosx : (22 May 2012 - 12:28 PM) Dimmi Nox
@  MihaChan : (22 May 2012 - 12:07 PM) Illusi ghgh
@  MihaChan : (22 May 2012 - 12:06 PM) Gli piacerebbe.... xDDDD
@  MihaChan : (22 May 2012 - 12:06 PM) e Francesi che dicono che il Ferrero Rocher è Francese....
@  MihaChan : (22 May 2012 - 12:06 PM) Tedeschi che dicono che la Nutella, il Kinder Cioccolato e L'ovetto Kinder sono tedeschi...
@  MihaChan : (22 May 2012 - 12:06 PM) Ah
@  NoxChibi : (21 May 2012 - 10:20 PM) melosx

[003]Conversioni-Pt.1


  • Per cortesia connettiti per rispondere
5 risposte a questa discussione

#1 OFFLINE   Takobon

Takobon

    Recensori

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

Inviato 10 October 2010 - 10:41 PM

Premessa:
In questa lezione vi parlerò delle conversioni,non poco importanti nella programmazione^^.
Mi scuso del ritardo delle lezioni,ma ho vari problemi personali(inclusa la scuola -.-)


Cos'è?
Molti di voi,che sono alle prime armi,si staranno chiedendo che cosa si intende per Conversione.É bene partire con un piccolo esempio:

Mettiamo il caso che noi vogliamo convertire un tipo di dato(es. int) in un'altro(es. string),così da poter operare come meglio crediamo(tipo concatenazione,stampare a video,ecc).Oppure potremmo convertire in termini di unità di misura(esempio Fahrenheit in Celsius e viceversa).

Quindi le conversioni ci aiutano a "cambiare" il tipo di una variabile in un'altro.



ALT!
Prima di iniziare a mostrare i vari metodi di conversione,è bene sapere che in C# esistono due tipi di conversione:

-Esplicita;
-Implicita;

La prima avviene tramite l'uso di casting,ovvero con l'aggiunta di un prefisso che definisce il tipo di dati che si vuole convertire.
Mentre la seconda avviene senza l'uso di casting,ma automaticamente,a patto che il valore della variabile non cambi.E bene si!La differenza fra le due risiede proprio in questo!Vediamo di spiegare al meglio:

Nel caso in cui vorremmo convertire un tipo di dato,ad esempio int in float ci basterebbe una conversione implicita:

int x = 9;
float f = x;

Benissimo!L'IDE non ci darà nessun errore,proprio perchè il valore della variabile x(che è 9) convertito in float è 9.000!)

Mentre nel caso in cui vorremmo convertire una variabile di tipo long
in int,dovremo usare una conversione esplicita,poichè il tipo long contiene molte più cifre rispetto al tipo int!(long ha una dimensione di 64 bit,mentre int 32).Quindi dovremo essere abbastanza cauti,anche perchè nelle conversioni esplicite c'è il rischio di perdita di qualche dato.
Vediamo un piccolo esempio:

long l = 489;
int x = (int) l;

Ok,non avremo nessun errore,andrà tutto al meglio.

Mentre se provassimo a fare questa conversione:

long l = 9999999999999
int x = (int) l;

Attenzione!In questo caso la conversione non avverrà al meglio,poichè come ho già detto c'è il rischio di perdita di qualche dato,come in qiesto caso.Infatti,ho dato alla variabile l di tipo long un valore di 13 cifre,dopo di che ho convertito questo valore nel tipo int.Ma quest'ultimo accetta un massimo di 10 cifre!Quindi bisogna essere cauti,ma per fortuna in C# c'è la possibilità di controllare queste eccezioni.(Che vi illustrerò dopo).


Bene,dopo avervi spiegato i tipi di conversione esistenti,vediamo come utilizzarli:

Implicita:
Su questo tipo non c'è molto da illustrare.I metodi per utilizzare questo tipo di conversione sono due(vi mostro solo il primo,perchè l'altro richiede l'uso delle classi):

Vi ho mostrato prima la sua sintassi,ma ora vediamo di analizzarla:

int x = 9;
float f ;
f = x;

Be,non c'è molto da dire!Si comprende da subito che assegniamo alla variabile f di tipo float,il valore della variabile x di tipo int.Così avverrà una conversione implicita.
(Volendo potremmo effettuare una conversione implicita anche assegnado ad una variabile di un determinato tipo,un valore di un tipo diverso).

float f = 458;



Esplicita:
Anche essa come la conversione implicita ha diverse modalità di utilizzo(fra cui l'uso delle classi).Vediamo i vari cast che possiamo usare:

I° Metodo:
Questo a mio parere è il più intuitivo e meno lungo nella sua sintassi.

Prendiamo una variabile di tipo long che vogliamo convertirla nel tipo int(come già detto prima serve un casting (: ):

long l = 147952187156;
int x = (int) l;

La sintassi di questo primo metodo è molto semplice ed intuitiva,come potete vedere.
Come avrete di certo intuito converto un valore di tipo long in un tipo int(assegnandola ad una variabile).
Per poter usare questo tipo di casting basta ricordarsi di seguire questa sintassi:

tipo_dato iniziale nome variabile = (tipo_dato iniziale) valore o variabile di tipo diverso;

Bene,mettiamo un po' di ordine:
tipo_dato iniziale : è un determinato tipo di dato;

nome variabile : mi sembra sciocco spiegarlo;

(tipo_dato iniziale) : TADAN!Questo è il cast che permette la conversione! Ovviamente dev'essere uguale al tipo della variabile la quale sta venendo convertita.



II° Metodo:
In questo useremo i metodi forniti dalla classe System.Convert.
Vediamo come usarli:
Per richiamare questi metodi basta digitare "Convert" e dopo di che(senza spazi) il punto "." .Facendo così vi mostrerà un menù a tendina con i vari metodi contenuti da quella classe.Prendiamone uno,tanto la sintassi è la stessa per tutti.

Ho deciso di prende ToInt32(converte un determinato tipo di dato in int).

Prendiamo una variabile di tipo double e convertiamola nel tipo int:

double dnum= 147.15;

int x = Convert.ToInt32(dnum);

Bene!Bene!Analizziamo la sintassi,molto semplice anche questa (:

tipo_dato iniziale nome variabile = Convert.Membro della classe Convert(nome variabile) ;

Come sempre mettiamo un po' di ordine (:
I primi due campi sono inutili da commentare,si commentano da sè(e li ho spiegati prima);

Convert.Membro della classe Convert : Qui si utilizza uno dei metodi di conversione contenuti dalla classe Convert.Ovviamente dovrete usare i metodi adatti per il tipo di dato che vorrete convertire(a fine lezione vi darò la lista dei metodi).

(nome variabile) : Il metodo della classe Convert richiede un argomento da assegnarli,in questo caso una variabile il quale valore verrà convertito in un altro tipo di dato.


III° Metodo:
Questo metodo è più usato per convertire un inisieme di caratteri in un tipo integrale.Ad esempio convertire una variabile di tipo string in int.

Vi mostro subito come fare:
Prendiamo una varibile di tipo string che vogliamo convertire in un tipo int:

string a = "500";
int x = Int.Parse(a);

Questo convertirà un tipo di dato string in int!
La sua sintassi è molto semplice,anzi è come quella della classe Convert (:,eccetto che si usa il metodo "Parse" contenuto,come dice la MSDN,in ogni tipo integrale.(Quindi anche i tipo double,float,byte ecc avranno questo metodo).

Da quel che ho letto googlando,fra il II° e il III° metodo,l'ultimo risulta essere più pratico e più veloce nell'elaborazione.

Bene!Credo di avervi detto tutto(o quasi),manca soltanto la parte nell'uso di conversione tramite le classi.

Vi lascio alcuni link che vi aiuteranno nelle conversioni (:

Tabella conversioni implicite : http://msdn.microsof...ry ... 80).aspx

Tabella conversioni esplicite : http://msdn.microsof...ry ... 80).aspx

Metodi della classe Convert : http://msdn.microsof...ry ... 90).aspx

Esercizi:
Eheheh!Ci saranno sempre!
COME SEMPRE,POSTATE I VOSTRI ESERCIZI NELLA SEZIONE "SALA ESERCIZI C#" NELLA DISCUSSIONE INERENTE ALLA LEZIONE!!

1° Quanto sei alto?:
-Richiedere l'inserimento l'input dell'altezza(in CM!)
-Convertire i dati ottenuti,convertendoli in unità usata dagli inglesi,ovveri in piedi e pollici(sapendo che
1 piede = 0,3048 m = 30,48 cm
e
1 in =

0,0254 m = 2,54 cm
)
-Mostrare il risultato in output

P.S. Per constatare l'efficienza dell'applicazione usate un convertitore online.


2° Che Freddo/Caldo!:
-Richiesta della temperatura(In Celsius!);
-Gestire i dati ottenuti,convertendoli in Fahrenheit(usate questa formula per convertire da Celsius a Fahrenheit

°F = °C × 1,8 + 32
)
-Mostrare il tutto in output;


3° É identico al secondo solo che vi è la possibilità di convertire da Celsius-->Fahrenheit e viceversa.

Enjoy!
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 12 October 2010 - 04:18 PM

Takobon, dice:

[...]
III° Metodo:
Questo metodo è più usato per convertire un inisieme di caratteri in un tipo integrale.Ad esempio convertire una variabile di tipo string in int.

Vi mostro subito come fare:
Prendiamo una varibile di tipo string che vogliamo convertire in un tipo int:

string a = "500";
int x = Int.Parse(a);

Questo convertirà un tipo di dato string in int!
La sua sintassi è molto semplice,anzi è come quella della classe Convert (:,eccetto che si usa il metodo "Parse" contenuto,come dice la MSDN,in ogni tipo integrale.(Quindi anche i tipo double,float,byte ecc avranno questo metodo).
[...]

non ho capito come trasforma un input di tipo string in un integer...
cioè nè capisco come
nè a cosa serva
(per ora non ne vedo l'utilità)
lool
Spoiler

#3 OFFLINE   Takobon

Takobon

    Recensori

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

Inviato 12 October 2010 - 04:55 PM

Convertire una stringa in un intero serve se ad esempio ti viene la voglia(e vi mostrerò come fare) di creare un'applicazione,la cui funzione sia di convertire una stringa con caratteri unicode(o valori esadecimali) in int.

Tipo in hex 8E2 equivale a 227.

Non so se mi sia spiegato ^^
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 12 October 2010 - 04:57 PM

sisi
perfettamente
e, in un certo senso, mi può servire ;)
lool
Spoiler

#5 OFFLINE   Ally

Ally

    Fondatori

  • Amministratori
  • 5558 Messaggi:
  • Localitàrpgmkr
  • Ruolo:
    Scripter
  • Progetto VX:
    Essence
  • Tool:
    RM2k/2k3

Inviato 16 November 2010 - 10:09 AM

Per immergermi in questa lezione,dovrò rileggermi tutte le altre xD (ho perso un pò il filo).
Immagine inserita
Spoiler

#6 OFFLINE   Takobon

Takobon

    Recensori

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

Inviato 16 November 2010 - 02:14 PM

Ally, dice:

Per immergermi in questa lezione,dovrò rileggermi tutte le altre xD (ho perso un pò il filo).

Eh si XD
Ma tanto la riprenderò quando inizieremo a trattare delle classi :3
Purtroppo sono pieno di impegni fra scuola e l'engine in sviluppo(sshh)
Fra poco nuova lezione,sulle array,sarebbe meglio non perdersela ^^
http://nexuseden.tumblr.com/Immagine inseritaSono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
Spoiler




1 utente(i) stanno leggendo questa discussione

0 utenti, 1 ospiti, 0 utenti anonimi