Dati: nomi e oggetti

Come memorizzare dei dati e richiamarli quando serve.

Abbiamo visto il modo di far eseguire delle istruzioni al calcolatore, ma ciò servirebbe ben a poco se non potessimo anche inserire dei dati nei nostri programmi. In Python i dati sono degli oggetti che l’interprete memorizza da qualche parte (e si premura di cancellare, per liberare memoria, quando non servono più). Alcuni di questi oggetti sono immutabili, il numero 5 sarà sempre 5, non può diventare 7. Altri sono mutabili: la lista che contiene il numero 5 può diventare una lista che contiene il numero 7. In un programma, noi possiamo fare riferimento a questi oggetti usando dei nomi detti identificatori. Il meccanismo che permette di collegare un identificatori ad un oggetto si chiama assegnazione e, in Python, viene indicata dal simbolo: “=”.

>>> data = "13-10-2001"

data è l’identificatore = è l’operatore di assegnazione e 13-10-2001 è un oggetto stringa. La riga precedente significa:

collega all'identificatore data l'oggetto "13-10-2001"

Per l’identificatore ci sono alcune restrizioni: non può iniziare con una cifra e non può contenere lettere accentate o alcuni altri caratteri particolari. Così per memorizzare il nome e cognome di una persona, la sua età e il suo indirizzo posso scrivere:

>>> nome = "Mario Rossi"
>>> eta = 45
>>> indirizzo = "via Verdi, 4"

Python sembra non reagire ai comandi precedenti, il fatto che non stampi messaggi di errore è comunque confortante. Python ha scritto le due stringhe e il numero intero in una zona di memoria e ha associato a questi oggetti tre nomi. In questo modo abbiamo legato all’identificatore nome la stringa “Mario Rossi”, all’identificatore eta il numero 45 e all’identificatore indirizzo la stringa “via Verdi, 4”. Dati questi comandi possiamo usare l’identificatore al posto dell’oggetto:

>>> print(nome, eta, indirizzo)
Mario Rossi 45 via Verdi, 4

Ora se volessimo stampare una scheda in formato “burocratichese”, con i dati di Mario Rossi, usando un solo comando, potremmo scrivere:

>>> print "Sig.", nome, "\nabitante in", indirizzo, "\ndi anni", eta
Sig. Mario Rossi
abitante in via Verdi, 4
di anni 45

Riprendiamo le espressioni matematiche. Se voglio scrivere un’espressione e il suo risultato, posso dare il comando:

>>> print "2 + 3 =", 2+3
2 + 3 = 5

Ma se devo cambiare gli operandi, devo intervenire in più punti dell’istruzione precedente e questo non è carino. Posso usare invece le variabili:

>>> a=7
>>> b=5
>>> print(a, "+", b, "=", a+b)
7 + 5 = 12

In questo modo, cambiando il valore delle variabili posso usare sempre la stessa istruzione per visualizzare un gran numero di espressioni diverse:

>>> a = 73584784689
>>> b = 5647468959
>>> print(a, "+", b, "=", a+b)

A prima vista, può sembrare che non vi sia un gran vantaggio in questo modo di procedere. Comandare le tre linee precedenti sembra più lungo, complicato e noioso che utilizzare direttamente i valori, come sarebbe per esempio:

>>> print(73584784689, "+", 5647468959, "=", 73584784689+5647468959)

È un modo barbaro, ma, in fondo, dà lo stesso risultato. Tra i due metodi c’è una importante differenza di impostazione. Con un paio di righe di comando in più si ottiene la separazione dei dati dal loro uso. Una volta assegnate le variabili a, b, esse sono riutilizzabili per altri calcoli. Prova:

>>> a = 100
>>> b = -2
>>> print("somma =",a+b, "prodotto =", a*b, "potenza =", a**b)

A questo punto, la linea di comando può essere riusata con altri dati. Per esempio:

>>> a = 27.5
>>> b = -34.21

e poi si ricopia la linea (con un clic e <Invio>, come già visto) e la si conferma con <Invio>.

Riassumendo

  • Una variabile è un nome associato ad un oggetto.

  • L’uso di variabili rende più flessibili i programmi.

  • Ad una variabile si può associare un valore con l’istruzione di assegnazione:

    <nome> = <oggetto>
    
  • Gli oggetti che abbiamo usato finora sono: numeri interi e numeri in virgola mobile.

Prova tu

  1. Usando le variabili scrivi l’espressione per calcolare l’area dei quadrilateri notevoli.
  2. Dopo aver messo in una variabile di nome “n” un numero intero scrivi l’istruzione che ne stampi la sua tabellina. (>>> print 1*n, 2*n, ...). Stampa la stessa tabellina in colonna.
  3. Un gioco dice così: “Prendi un numero intero. Raddoppialo. Aggiungi 10. Poi dimezza il risultato. Togli il numero che hai pensato. Scommetti che risulta 5?” Scrivi l’espressione e prova con diversi valori della variabile. Secondo te perché è proprio vero che risulta 5?