Visti gli operatori aritmetici compositi, gli operatori unitari vi risulteranno molto facili da comprendere. Perché in effetti sono la stessa identica cosa, con l’unica differenza che con gli operatori aritmetici compositi
potremmo aumentare un valore di una quantità arbitraria scelta da noi,
invece, con gli operatori unitari, come dice la parola stessa,
lavoreremo solo l’unità.
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.
Se per esempio mettessimo questo codice all’interno di un if che verifica la pressione di un tasto, avremmo calcolato quante volte verrà premuto quel tasto.
Ora avrete capito perché il linguaggio più famoso del mondo si chiama C++.
Molto facile.
In pratica come abbiamo visto per gli operatori aritmetici compositi, potremmo creare un contatore utilizzando gli operatori unitari.
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.
Così come abbiamo fatto nella lezione precedente, creiamo un contatore utilizzando questa volta l’operatore unitario ++. Rispetto allo script precedente, cambiano solo le righe evidenziate.
int secondi=0 //Inizia da zero //Metodo che andrà eseguito ad ogni secondo che passa void AggiungiUnSecondo() { secondi++; }
Stessa cosa potremmo farla per i minuti e le ore:
int secondi=0 //Inizia da zero int minuti=0 //Inizia da zero int ore=0; //Inizia da zero //Metodo che andrà eseguito ad ogni secondo che passa void AggiungiUnSecondo() { secondi++; //Quando i secondi sono uguali a 60 if(secondi==60) { AggiungiUnMinuto(); //Eseguo il metodo che aggiunge un minuto secondi=0;//azzero i secondi } } //Metodo che verrà eseguito ogni 60 secondi, richiamato dal metodo sopra, appunto ogni 60 secondi void AggiungiUnMinuto() { minuti++; //Quando i minutisono uguali a 60 ;if(minuti==60) { AggiungiUnOra();//Eseguo il metodo che aggiunge un'ora minuti=0;//azzero i minuti } } //Metodo che verrà eseguito ogni 60 minuti, richiamato dal metodo sopra, ogni 60 minuti void AggiungiUnOra) { ore++; }
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.
Conclusioni finali sugli operatori
Mamma mia quanta roba! Siete un po’ confusi? Non mi stancherò mai di dire: continuate ad andare avanti, anche se alcuni concetti non sono chiarissimi.
Non c’è guida migliore dell’esperienza. Facendo le prime prove inizierete ad entrare nella mentalità giusta e vedrete che avrete tutto più chiaro.
Ricordatevi che qui stiamo facendo programmazione, mica pizza e fichi, roba seria e professionale. E vi ricordo anche che, se non avete capito qualche cosa, potete tranquillamente lasciare un commento sotto ad ogni lezione.
4 pensieri su “Operatori Unitari”
Una domanda: nei vari pezzi di codice prima dichiari la variabile “secondi”, poi nel metodo inserisci la variabile “secondo”. E’ una tua svista? complimenti per le lezioni.
Hai ragione, svista mia 😉
Corretto.
Nell’esempio del meno dovrebbe essere
numero –;
Giusto?
Altra cosa che non mi è Chiara. Se sono nel metodo update() e il programma gira a 30 fps al secondo, la variabile si aggiornerebbe 30 volte al secondo.
Quindi se volessi un orologio dovrei scrivere:
Numero +=1/30
O sbaglio?
Ciao, io non sono un informatico e come te sto (re)imparando, però vorrei provare a risponderti, quindi prendi con le pinze quello che ti dico. Per il punto e virgola quello va messo sempre alla fine di un’operazione. Per quanto riguarda riga “Numero += 1/30” credo non sia del tutto sbagliato, ma non trovo che sia la soluzione più adeguata, poiché il framerate è abbastanza instabile (certo lo puoi bloccare su 30). Bisognerebbe fare un ciclo che vada in secondo e sia svincolato dalla frequenza di aggiornamento del metodo update, ma credo sia inutile anche perdere tempo a ragionarci in quanto questo “orologio” spiegato dal maestro fosse un semplice esempio per farci comprendere gli operatori unitari.