Computer_Zone
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.

CREARE IL PROPRIO VIDEOGAMES IN C#: NONA PARTE sezione seconda

Andare in basso

CREARE IL PROPRIO VIDEOGAMES IN C#: NONA PARTE sezione seconda Empty CREARE IL PROPRIO VIDEOGAMES IN C#: NONA PARTE sezione seconda

Messaggio  Admin Mar Mag 12, 2009 4:00 pm

Gli operatori di confronto

Questi operatori vengono chiamati anche operatori relazionali .
Come già spiegato per l'operatore == , questi operatori effettuano un test, cioè "si domandano" se un valore è uguale ad un altro, se è diverso o se è maggiore o minore di..
Anche questi operatori dovrebbero essere chiari, sia perché tutti noi abbiamo un'infarinatura di aritmetica scolastica, sia perché il loro utilizzo è largamente intuibile.
Facciamo comunque degli esempi riprendendo l'esercizio dove l'utente doveva inserire dei dati. Questa volta inseriremo dei numeri ma il funzionamento sarà identico. Controlliamo se il numero inserito dall'utente sia maggiore di 10:


using System;

class Evviva
{

static void Main()
{
int numero;

Console.WriteLine("Inserisci un numero: ");

numero = Console.ReadLine();



if (numero > 10)
{
Console.WriteLine("Si! Il numero è maggiore di 10 ");
}
else
{
Console.WriteLine("No, il numero non è maggiore di 10");
}



}

}



Errore 2 Impossibile convertire implicitamente il tipo 'string' in 'int'.
O no! Un'altro errore di conversione! Smile
E già, i numeri forniti da tastiera vengono visti anch'essi come delle strighe, in effetti sono comunque del testo. Dovremo convertirli da noi.
Questa volta però useremo un metodo apposito per le conversioni. Un metodo della classe Convert, anch'essa facente parte del namespace System.
Questa è la sua sintassi:
numero = Convert.xxxxx(variabile da convertire);

dove al posto del xxxxx dovremo scegliere il tipo di dati in cui vogliamo convertire e dentro la parentesi ciò che vogliamo sia convertito.
Il "To" sta significa "in", cioè converti in...
Nel nostro caso, ToInt32:

numero = Convert.ToInt32(Console.ReadLine());

Convertiremo ciò che ci viene restituito dal metodo ReadLine, ovvero, la stringa che l'utente inserirà. Lo convertiremo in int .
Come vedete però non c'è scritto int nel posto riservato al tipo di dati che vogliamo, ma Int32. Questo tipo di dati è l'equivalente di un numero intero a 32 bit, dunque a noi va più che bene. Dunque scegliamo ToInt32.

.

Come si nota dal menù a tendina le scelte possibili (ricordiamoci che quelli sono sempre tutti metodi, in questo caso della classe Convert) sono molte. Dunque le possibilità di conversione sono tante.

Il codice completo, che non ci darà errori, sarà dunque questo:


using System;

class Evviva
{

static void Main()
{
int numero;

Console.WriteLine("Inserisci un numero: ");

numero = Convert.ToInt32(Console.ReadLine());



if (numero > 10)
{
Console.WriteLine("E si, il numero è maggiore di 10 ");
}
else
{
Console.WriteLine("No, il numero non è maggiore di 10, hai inserito il numero: "+numero);
}



}

}


Cosa abbiamo aggiunto nel caso else? +numero.
In questo modo avremo visto anche che, si può stampare sul video il numero inserito dall'utente dopo la stringa, semplicemente usando l'operatore +.







Gli operatori logici

Se avete fatto le scuole superiori in qualche istituto tecnico li avrete sicuramente già incontrati.
Questi operatori lavorano sui dati di tipo bool che, come abbiamo già visto, possono avere il valore vero (true) o falso (false).

Facciamo un passo indietro. Avrete notato che abbiamo definito true o false anche la condizione all'interno di un if . Infatti, abbiamo detto che, se la condizione all'interno delle parentesi dell'if risultasse vera, allora faremo eseguire del codice, se risultasse falsa faremo eseguire altro codice. Dunque, possiamo dire che dopo aver usato un qualunque operatore di confronto, avremo sempre una condizione, o true o false.

(numero>10)

Questa riga produrrà una delle due condizioni, vero o falso. Se numero è maggiore di 10 allora avremo true, in tutti gli altri casi (se è minore o uguale a 10 ) avremo false .

Mettiamo ora il caso che volessimo verificare se la variabile numero sia maggiore di 10 ma anche minore di 20.
Ci troveremo con due condizioni: (numero>10) e (numero<20).
Useremo un operatore logico che verifica entrambe le condizioni bool, l'operatore &.






- L'operatore &.

Per verificare se numero sia maggiore di 10 ad anche minore di 20 useremo il'operatore & in questo modo:

(numero>10) & (numero<20)

Creiamo ora un'altra variabile bool, che chiameremo test e salviamoci il risultato dei due controlli.

bool test=(numero>10) & (numero<20) ;

La variabile test, di tipo bool, risulterà vera solo se entrambe le condizioni risulteranno vere.

Dunque, se la variabile test di tipo bool risultasse vera, la nostra verifica sarebbe stata confermata, numero sarebbe maggiore di 10 e minore di 20.

L'operatore & verifica due o più condizioni ma perché è diverso da &&?
In effetti, se sostituissimo & con && il risultato sarebbe identico.
Ciò che cambierebbe sarebbe solo a livello di prestazioni. Vediamo perchè.

L'operatore & si chiama AND completo perché esso verifica entrambe le condizioni. Cioè, nel nostro caso, verifica prima se numero>10 e poi, in qualunque caso, verificherà se numero<20.
Ma, se ci pensate bene, il secondo controllo risuterebbe inutile se al primo controllo (cioè verificando se numero>10) il risultato fosse false. Perchè è ovvio che, qualunque risultato tornasse dal secondo controllo, essendo il primo falso, test sarà comunque falso, perché, come abbiamo visto, per rendere test vero, entrambi i controlli devono essere veri. Dunque a che serve fare il secondo controllo se abbiamo già visto che il primo è già false? Non c'è nessuna necessità di controllare se il secondo controllo sia falso perché il risultato sarebbe comunque falso.
Per evitare questo inutile controllo è dunque preferibile utilizzare && che, al contrario di &, alla prima condizione falsa incontrata, non continuerà a fare altri controlli e porrà subito il risultato come false evitando tempi di calcolo inutili.




L'operatore logico | (oppure).

Prendiamo lo stesso test di poco fa:

bool test=(numero>10) | (numero<20) ;
Questo operatore restituisce vero (true) a condizione che almeno una delle due verifiche risulti vera.
Ponimano per esempio numero= 25;
In questo caso avremo che la prima condizione risulterà vera ma la seconda falsa perchè 25 è maggiore di 20.
Ma, avendo almeno una delle due condizioni vera, il risultato di test sarà vero (true) .
In termini pratici, l'operatore | viene chiamato oppure perché è come se facesse questa verifica:

perché test risulti vero basterà che numero sia maggiore di 10 oppure basterà che numero sia minore di 20.

Sarà dunque sufficiente che il numero sia maggiore di 10 per avere il risultato uguale a true.
Sarà anche sufficiente che il numero sia minore di 20 per avere il risultato uguale a true.
Solo se entrambi i casi risultassero falsi, il risultato sarebbe false.

Come descritto per l'operatore & anche l'operatore | farà sempre e comunque entrambe le verifiche, a prescindere dal risultato della prima verifica.
E' preferibile anche in questo caso, l'utilizzo di || che continuerà ad effettuare i controlli solo se sarà il caso.
Infatti, l'operatore || valuta la prima condizione e, se questa risultasse true, non avrebbe bisogno di valutare la seconda perché comunque il risultato sarebbe true.
Se invece la prima condizione risultasse false, sarebbe costretto a valutare anche la seconda.




L'operatore logico ! (negazione).

Questo operatore non fa altro che negare una condizione bool, ovvero, la inverte.
Dunque, se avessimo

bool test = true;

Se creassimo un'altra variabile (che chiameremo test2) e scrivessimo che:

bool test2 = !test;

test2 risulterebbe false. Sarebbe cioè test2, sempre il contrario di test.




Gli operatori aritmetici composti

Questi operatori sono, come si intuisce dal nome, composti dgli operatori aritmetici.

Operatori aritmetici composti
OPERAZIONE
SIMBOLO
variabile = variabile+variabile2
+=
variabile = variabile-variabile2
-=
variabile = variabile*variabile2
*=
variabile = variabile/variabile2
/=
variabile = variabile%variabile2
%=

Non sono nulla di complicato, anzi, risulteranno estremamente utili per molte delle nostre esigenze.

Spessissimo capiterà di voler aggiungere una certa quantità ad una variabile. Per esempio, se volessimo aggingere 25 ad una variabile (che noi chiameremo numero) dovremmo scrivere così:

numero = numero + 25;

Ciò sta a significare che a numero, qualsiasi esso sia, avremmo agginto 25.
Stessa cosa se a numero volessimo aggiungere un'altra variabile (che ora noi chiameremo numero2):

numero = numero + numero2;

Tale operazione è esatta e nessuno ci vieta di usare questa sintassi.
Il linguaggio C# però, così come tutti i linguaggi di alto livello, ci permette di fare questa operazione in maniera più sintetica, utilizzando gli operatori aritmetici composti.
In questo modo:

numero += numero2;

Questa istruzione farà la stessa identica cosa di quella vista sopra, aggingerà cioè numero2 a numero.
E' ovvio che questa operazione può essere effettuata nello stesso modo con tutti gli altri operatori aritmetici.





Gli operatori unitari

Anche questo tipo di operatori ci tornerà molto utile, sopratutto in presenza di cicli, che sono dei costrutti (come if) che vedremo in seguito.
Gli operatori unitari, come suggerisce il termine, permettono di operare su una singola unità, ovvero, di aggiungere o sottrarre il numero 1 ad una variabile.
Basta scrivere così:

numero++;

In questo caso, se numero fosse stato 10, sarebbe diventato 11, sarebbe cioè aumentato di 1.
La parola cicli ci fa subito pensare a qualche cosa che si ripete. Pensate dunque cosa potremmo fare se potessimo ripetere un certo numero di volte questa operazione. Ogni volta la nostra variabile aumenterebbe di 1 diventando così in tutto e per tutto, un contatore.

Ultima nota sugli operatori unitari.
Avremmo potuto anche scrivere così:

++numero;

Le cose non sarebbero cambiate, nel nostro caso, se numero fosse stato 10, sarebbe diventato 11.
La differenza tra questi due modi di scrivere sta in questioni che per ora a noi non interessano, per il momento possiamo utilizzare l'uno o l'altro modo.

Stessa cosa vale per la sottrazione ovvero:

numero--;

In questo caso se numero fosse stato 10, sarebbe diventato 9.

--------------------------------

La sessione numero 9 è appena terminata. Abbiamo aquisito le prime nozioni fondamentali per poter la vorare con XNA. E' da sottolineare il fatto che manca ancora molto prima da poterci definire programmatori. Quello che abbiamo visto fin'ora però può bastare per aprire un progetto XNA e non perderci tra i meandri di metodi già generati dai programmatori Microsoft.
Ho preferito tralasciare alcune questioni, anche se basilari, per non rendere troppo noiosa questa parte teorica. Quando saremo più al di dentro della programmazione XNA vedremo tutti i costrutti ed i concetti che non abbiamo ancora trattato nel momento in cui ci sbatteremo la testa.
Se qualcuno ha qualche dubbio sugli argomenti fin quì trattati, lo invito a spedirmi una email. Cliccando sullo schermetto in alto a destra giungerete al mio sito da cui sarà possibile inviarmi un messaggio.

Allora prepariamoci..stiamo per aprire un progetto XNA!
Admin
Admin
Admin

Messaggi : 17
Data di iscrizione : 14.02.09
Età : 32
Località : Vicenza

https://computerzone.elencoforum.com

Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.