PROGRAMMIAMO
Algoritmi - Variabili e assegnazioni

Variabili

Osservando gli esempi di algoritmi presentati nelle lezioni precedenti è interessante notare come, nella scrittura, siano state usate delle variabili. Le variabili negli algoritmi sono simili alle variabili usate in matematica e in fisica: in pratica sono dei nomi usati per indicare dei valori numerici. Per esempio nell'algoritmo per il calcolo della differenza fra due orari, abbiamo usato le variabili ora1, ora2, min1, min2 e dif.

L'uso delle variabili semplifica la scrittura degli algoritmi, ma, soprattutto, la rende di validità generale. In altre parole: un algoritmo scritto usando le variabili (al posto dei valori numerici) può essere usato per qualsiasi valore numerico; viceversa se i valori numerici fossero indicati esplicitamente dentro l'algoritmo (in questo caso si parla di costanti, per distinguerle dalle variabili), l'algoritmo sarebbe valido per un unico caso.

Si può definire una variabile come un contenitore, dotato di un nome, al cui interno è possibile memorizzare un valore.

Le variabili sono comunemente usate in matematica con questo significato.

Per quanto riguarda i nomi, utilizzando le convenzioni usate normalmente dai linguaggi di programmazione, il nome di una variabile può essere composto da una sequenza di lettere (minuscole e/o maiuscole), dalle cifre da 0 a 9 e dal simbolo di sottolineatura ( _ ). Il primo carattere del nome deve essere sempre una lettera oppure il simbolo di sottolineatura e all'interno del nome non devono essere presenti spazi o punti.

Esempi di nomi di variabili validi sono: num, ris, area_cerchio, val2, baseMaggiore.

Esempi di nomi di variabili errati sono: %, 12a, numero primo.

 

Assegnazione

L'operazione fondamentale che si può eseguire su una variabile è l'assegnazione. L'assegnazione si indica col simbolo di uguaglianza (=), come nel seguente esempio:

risultato = 255

L'assegnazione precedente "mette" il valore 255 nel contenitore di nome "risultato".

Ogni variabile può contenere solo un numero alla volta, perciò assegnazioni successive, eseguite sulla stessa variabile, cancellano i valori precedenti. Per esempio:

var = 4
var = 65
var = 7

alla fine var contiene il numero 7.

Assegnazione di una variabile a un'altra variabile

Mediante un'assegnazione è anche possibile copiare il valore di una variabile in un'altra. Così per esempio

a = b

copia il valore contenuto nella variabile b nella variabile a. Nella figura seguente è mostrato il risultato dell'assegnazione "a = b" supponendo che a contenesse inizialmente il numero 12 e b il numero 45:

 

Attenzione! Sarebbe stato diverso scrivere

b = a

In questo caso il valore di a sarebbe stato copiato in b e il risultato sarebbe stato il seguente:

Dunque l'uguale usato nell'assegnazione ha un verso: il valore (sorgente ovvero il contenuto della variabile) che si trova a destra viene copiato nella variabile che si trova a sinistra (destinazione).

Espressioni matematiche

L'assegnazione permette anche di calcolare il valore di una variabile per mezzo di una espressione matematica. Un esempio semplice è il seguente:

a = b + c

Il significato è: il valore di b viene sommato al valore di c e il risultato viene memorizzato in a.

I simboli usati per scrivere le espressioni matematiche nei linguaggi di programmazione simili a quelli usati in matematica. L'operazione di moltiplicazione, come già detto, viene però indicata con l'asterisco * invece che con il x. Bisogna inoltre prestare attenzione all'uso delle parentesi (sempre e solo le parentesi tonde!) per indicare la precedenza fra le operazioni.

Esempio:

ris = a + b * 10/(d +e)

 

Assegnazione di una variabile... a se stessa (variabili di accumulo)

Un aspetto molto interessante delle variabili è che è possibile assegnare una variabile a se stessa o, più precisamente, usare la stessa variabile a sinistra e a destra di una assegnazione. Si consideri il seguente semplice esempio:

num = num + 1

In questo caso la stessa variabile num compare sia a sinistra che a destra del simbolo di assegnazione e dunque è sia la sorgente che la destinazione di una assegnazione. Si presti particolare attenzione al significato di questa scrittura che, tradotta a parole, sarebbe: prendi il valore di num, aggiungi uno a tale valore e rimetti il risultato in num. In pratica se ad es. num valeva 4 prima dell'istruzione precedente, dopo l'istruzione il suo valore è diventato 5.

Incremento

Questa semplice istruzione (che aumenta di uno il valore di una variabile) viene detta incremento (l'istruzione opposta, quella che diminuisce di uno, è detta decremento).

Un esempio un po' più complesso di variabile usata sia a destra che a sinistra dell'uguale di assegnazione è il seguente, che potrebbe servire per calcolare l'aumento della somma depositata su un conto corrente con un certo tasso di interesse:

somma = somma + tasso * somma

In questo caso la stessa variabile compare addirittura tre volte nella stessa espressione!

Quando una variabile, come in questi esempi, è sia la sorgente che la destinazione di una assegnazione, si dice che si tratta di una variabile di accumulo. Una variabile di accumulo, come suggerisce il nome, è una variabile nella quale vengono accumulati dei valori.

Le variabili di accumulo sono estremamente importanti nei cicli, in quanto consentono la modifica ripetuta di un valore in un ciclo in dipendenza dal valore che aveva in precedenza. A titolo di esempio si consideri di nuovo il programma per il calcolo della moltiplicazione con solo somme. Come è facile notare ci sono ben due variabili di accumulo nel ciclo: A e C.

Variabili di accumulo in un ciclo

 

Il simbolo di uguale... non sempre è un'uguaglianza!

A scanso di possibili equivoci, prestiamo fin da ora attenzione al fatto che il simbolo di uguale (=) usato nelle assegnazioni, non rappresenta una uguaglianza nel senso matematico. Consideriamo per esempio la seguente assegnazione (incremento):

a = a + 1

Matematicamente la precedente espressione non avrebbe senso, dal momento che in nessun caso "a" può essere uguale ad "a+1". Invece, se considerata come assegnazione (e non come uguaglianza), l'espressione precedente ha senso ed è effettivamente utilizzata in molti programmi.

Per evitare possibili confusioni, praticamente tutti i linguaggi di programmazione (e di scrittura di algoritmi) distinguono fra due diversi simboli di uguaglianza e precisamente:

Si osservi ad esempio il seguente algoritmo che, se una data variabile vale 5, ne incrementa il valore di uno:

Il significato dei due "uguali" è completamente diverso. Il primo infatti è un uguale di confronto, cioè confronta il valore di numero col valore 5 (numero = 5). Tale operazione non modifica il contenuto della variabile numero. Il secondo uguale (numero = numero + 1) è invece un uguale di assegnazione, il quale modifica il valore della variabile numero.

E' abbastanza facile imparare a distinguere i due casi poiché l'uguale di confronto si può trovare solo in un blocco di test, mentre l'uguale di assegnazione si trova solo nei blocchi di elaborazione.

Spesso nella scrittura dei flow chart si usa il simbolo di uguaglianza (=) solo per i confronti, mentre le assegnazioni vengono indicate con una freccia (←). Esempio: numero ← numero + 1.

Anche i linguaggi di programmazione distinguono i due simboli in modi differenti. Per esempio il C (e tutti i linguaggi da esso derivati, C++, javascript, java, php etc.) usa l'uguale (=) per le assegnazioni e il doppio uguale per i confronti (==).

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it