Adesso che abbiamo iniziato a comprendere cosa sono i dati e come possiamo usarli ed abbiamo installato sul computer Python, proviamo ad usarlo sia per dare al calcolatore semplici comandi che vengono eseguiti uno per volta, sia per dare sequenze di istruzioni più o meno lunghe, che verranno eseguite tutte insieme, secondo l’ordine di sequenza.
Chiameremo programmi le sequenze di istruzioni che realizzeremo.
In Python ci sono diversi modi di lavorare, tra questi si può:

  • Utilizzare IDLE (Integrated DeveLopment Environment) che significa “ambiente di sviluppo integrato”, ossia insieme di strumenti collegati tra loro per la scrittura di programmi.
  • Scrivere linee di comando di Python (command line)

La differenza tra i due è questa:

  • in IDLE in una sola finestra troviamo sia l’editor per scrivere il programma sia l’interprete per farlo eseguire. (Le versioni di IDLE per Windows e per Linux sono sostanzialmente uguali).
  • scrivere linee di comando significa invece fare le seguenti cose:
    a. scrivere il programma con un editor qualsiasi, ad esempio BloccoNote
    b. dare al programma scritto un nome (ad esempio PROGRAMMA1)
    c. SCRIVERE IL COMANDO Python seguito dal nome del programma per eseguire il programma stesso (ad esempio: Python PROGRAMMA1).o Python, appare una finestra, che si chiama "Python Shell": essa è la finestra principale di IDLE, la finestra "INTERPRETE".

L’interprete ci permette di inserire i comandi direttamente in Python: non appena immettiamo un comando, Python lo esegue e ne restituisce immediatamente il risultato. Ciò è molto comodo e funzionale al nostro lavoro.
>>> print 1 + 1
2
La prima linea di questo esempio è il comando che fa partire l’interprete Python in ambiente Linux; la seconda linea fornisce informazioni di copyright mentre la terza inizia con >>>: questa è l’indicazione di “prompt” che l’interprete usa per indicare che è pronto a ricevere istruzioni.
Noi abbiamo inserito l’istruzione print 1+1 e l’interprete risponderà con 2.

Da una scatola all’altra
COPIATURA
Supponiamo di avere a disposizione due scatole di nome pippo e pluto, con pippo = 5 e pluto = 15.
Vediamo che cosa succede quando diamo al computer un'istruzione come questa:

pippo = pluto

Il computer fa le seguenti operazioni:

  1. mette a disposizione la scatola di nome pippo
  2. mette a disposizione la scatola di nome pluto
  3. legge il contenuto di pluto e lo mette nella scatola pippo.

Al termine di queste operazioni le due scatole pippo e pluto contengono lo stesso numero 15.
(Prima dell'esecuzione dell'istruzione):


(Dopo l'esecuzione dell'istruzione)

pippo = pluto

Notare  che il contenuto di pluto (la scatola che si trova a destra del segno uguale) viene inserito in pippo (nella scatola a sinistra dell’uguale) e non viceversa.
Non si tratta di un trasferimento ma di una copiatura, infatti pluto non perde il suo contenuto.

Cosa succede invece se scriviamo: pluto = pippo, quando pippo = 5 e pluto = 15? Che le due scatole
conterranno il numero 5. Vediamo in dettaglio i due programmi corrispondenti a queste due istruzioni:

Programma 1 - pippo = pluto Il risultato sarà:
pippo=5
pluto=15
print "pippo = ", pippo
print "pluto = ", pluto
pippo = pluto
print "Dopo l’esecuzione dell’istruzione pippo = ", pippo
print "Dopo l’esecuzione dell’istruzione pluto = ", pluto
pippo = 5
pluto = 15
Dopo l’esecuzione dell’istruzione
pippo = 15
Dopo l’esecuzione dell’istruzione
pluto = 15

 

Programma 2 - pluto = pippo Il risultato sarà:
pippo=5
pluto=15
print "pippo = ", pippo
print "pluto = ", pluto
pluto = pippo
print "Dopo l’esecuzione dell’istruzione pluto = ", pluto
print "Dopo l’esecuzione dell’istruzione pippo = ", pippo
pippo = 5
pluto = 15
Dopo l’esecuzione dell’istruzione
pluto = 5
Dopo l’esecuzione dell’istruzione
pippo = 5

INCREMENTO

Adesso  si provi ad immaginare cosa fa il computer per eseguire la seguente istruzione:

pippo = pluto + 3

Utilizzando Python, si scriva un programma che esegua questa istruzione.

Il computer opererà così:
Mette a disposizione una scatola di nome pippo        pippo = 5
Cerca pluto e ne legge il contenuto                         pluto = 15
Aggiunge 3 al contenuto di pluto e                         pippo = pluto + 3
mette in pippo il risultato dell’operazione a destra dell’uguale.

A questo punto, che cosa conterrà pippo e che cosa conterrà pluto?
pippo
conterrà il numero 18 e pluto conterrà sempre il numero 15.

In pratica il computer inizia a lavorare sull’operazione a destra dell’uguale e il risultato viene messo nella scatola a sinistra.
Osservare ancora che il nome della scatola a destra dell’uguale indica il suo contenuto, mentre il nome della scatola a sinistra precisa la scatola che conterrà il risultato.

SCAMBIO
Un po’ più complessa è l’operazione di scambio del contenuto di due scatole.
Ad esempio se minni = 10 e mickey = 12 come posso scambiare il contenuto di minni e mickey, cioè inserire 12 in minni e 10 in mickey?
Ci serve una terza scatola che possiamo chiamare PARK, nella quale accantoniamo il contenuto di una delle due scatole.
Cosa fa il computer?

  1. Mette a disposizione una scatola di nome minni e una di nome mickey.
  2. Mette a disposizione una scatola di nome PARK e ci inserisce il contenuto di minni.
  3. Legge il contenuto di mickey e lo mette in minni.
  4. Legge il contenuto di PARK (che era quello di minni) e lo mette in mickey.
minni =10
mickey = 12
PARK = minni
minni = mickey
mickey = PARK

input e raw_input
Finora abbiamo visto come inserire un numero o una stringa in una scatola, cioè un dato in una variabile utilizzando le istruzioni di assegnazione del tipo:
scatola1 = 37,5
oppure
scatola1 = "Viva l'Inter"
Oltre a questo, esiste un altro modo, molto importante, rappresentato dalle istruzioni input e raw_input.
input, che significa letteralmente “inserisci”, si usa nel modo seguente:

scatola = input(prompt)

Dove:
scatola è il nome della scatola che intendiamo utilizzare,
input è il comando che diamo al computer e che serve a inserire un numero nella scatola,
prompt è un messaggio che diamo all'utilizzatore perché sappia che cosa deve inserire.

Ad esempio con:

pluto = input ("Quanti anni hai? ")

chiediamo all'utilizzatore di indicare i propri anni, il computer leggerà il numero e lo inserirà nella scatola di nome pippo.
Si lascia uno spazio perché cosi il numero indicato non risulterà attaccato al punto interrogativo, ma sarà allontanato di uno spazio. Python non sa scrivere in modo ordinato, dobbiamo dirgli noi come visualizzare le informazioni sul video e anche come stamparle.

Quando il computer legge la parola input, che in Python identifica una “funzione”, riceve l’ordine di fermarsi e attende che l'operatore inserisca un numero dalla tastiera.
Per far capire al computer quando il numero è finito, l’operatore preme il
tasto Invio (o Enter). A questo punto il programma riprende e input interpreta ciò che l'operatore ha inserito come un numero e lo mette nella scatola indicata.
Il programma prosegue poi con le istruzioni successive.
Il messaggio tra le due parentesi dopo input, che abbiamo chiamato “prompt”, avvisa l'operatore di ciò che deve essere inserito.

Input è molto utile nella costruzione dei programmi perché ci permette di trasmettere dei dati al calcolatore durante l’esecuzione del programma.

Finora abbiamo sempre inserito tutti i dati prima dell'esecuzione di un programma e poi abbiamo eseguito il programma stesso; con input, invece, i dati possono essere inseriti durante l'esecuzione.
Vediamo in dettaglio cosa succede nel programma seguente quando usiamo la “funzione” input:

Anni = input("Quanti anni hai? ")
print "Tu hai ", Anni, " anni"

Anni = input("Quanti anni hai? ") 1. il computer mette a
disposizione una scatola;
2. la battezza scrivendo sul
coperchio “Anni”;
3. si ferma nell’attesa che
venga inserito un dato dalla
tastiera;
4. inserisce il dato nella
scatola indicata.
print "Tu hai ", Anni, " anni" Stampa prima la stringa
“Tu hai”, poi il contenuto
della scatola Anni e
infine la stringa “anni”.

Si provi ad eseguire il programma seguente:

Programma 3 – Stampa il triplo di un numero
numero = input ("Introduci un numero ")
numero = numero *3
print "Il triplo del numero introdotto è : ", numero

Prova ora ad inserire dei caratteri che non rappresentino un numero e osserva cosa succede.
Sfortunatamente se i caratteri inseriti dall'operatore non rappresentano un numero, il programma stampa un messaggio d'errore e si blocca perché input funziona soltanto con i numeri e quindi con le variabili numeriche (cioè le variabili di tipo numero). Questo vuol dire che l'interprete raccoglie il dato inserito e cerca di interpretarlo come un numero.
Ad esempio se l'utilizzatore scrive '1 2 3', la funzione input leggerà i tre caratteri e li convertirà nel valore numerico 123.

raw_input
Questa funzione, a differenza della precedente input, accetta qualunque carattere immesso dall'utilizzatore;
“raw input” significa letteralmente “inserisci qualcosa”.
La differenza consiste nel fatto che raw_input raccoglie i caratteri immessi dall'utilizzatore e li presenta sotto forma di stringa, mentre input li raccoglie e cerca di interpretarli come numero.
Il funzionamento e' lo stesso della funzione input, cambia il valore del risultato. Vediamo qualche esempio.
Il programma seguente:

s = raw_input("Come ti chiami? ")
print "Ciao ", s

darà come risultato:
Ciao Paola (o qualunque nome sia stato inserito)
Se si manderà in esecuzione il programma tante volte inserendo sempre un nome diverso il risultato sarà:
Ciao Paola
Ciao Alda
Ciao Marco

NOTA BENE!
La scatola è sempre la stessa, nelle esecuzioni successive alla prima il computer cancella il vecchio dato e inserisce quello nuovo.