User Tools

Site Tools


appunti3s:introduzione_a_python

Python

Prerequisiti

  1. conoscere il concetto di variabile e costante
  2. conoscere il concetto di algoritmo
  3. saper trovare un algoritmo risolutore di un problema generico
  4. conoscere la differenza tra programmatore ed utente
  5. conoscere la differenza tra linguaggio compilato ed interpretato
  6. conoscere la differenza tra programma nel terminale e GUI.

Cosa faremo?

Sperimenteremo per la prima volta il lavoro del programmatore…

  • Quiz: qual è il lavoro del programmatore?

Python è un linguaggio di programmazione, cioè può essere usato per descrivere delle istruzioni. Le istruzioni sono scritte dal programmatore e il computer le esegue per risolvere automaticamente i problemi dell'utente.

Python è un linguaggio interpretato, si può far interpretar un comando alla volta (in modalità interattiva) oppure un elenco di comandi racchiudendoli in un file di testo. Perché il computer possa comprendere il linguaggio Python deve essere installato il programma interprete Python.

  • Quiz: Nel tuo computer è già installato questo programma?

Esempi di uso dell'inteprete dei comandi Python

L'inteprete è un programma che può funzionare in due modalità: la modalità interattiva e quella non interattiva.

  • La modalità interattiva si avvia digitando il comando “python” nel terminale dei comandi (la finestra “nera”). Nella modalità interattiva le istruzioni possono essere eseguite immediatamente, una alla volta, digitandole Si chiama modalità interattiva, perché l'utente digita manulamente l'istruzione e ne vede immediatamente il risultato. Esempio:
    •  >>> print 1 + 2
       3
       >>> 
  • La modalità non interattiva consiste nel preparare un file di testo contenente tutte le istruzioni da far eseguire al computer (questo file si chiama programma). Per i programmi scritti in linguaggio Python è consuetudine usare l'estensione .py e per eseguirli può essere sufficiente anche farci un semplice doppio clik. In alternativa si può avviare l'esecuzione scrivendo nel terminale il comando “python nome-del-file”.
sommare.py
print 1 + 2

Editor a sintassi evidenziata

Il testo del programma può essere scritto usando la tastiera e qualsiasi programma editor di testo.

  • Quiz: Quali programmi editor di testo conosci?
  • Quiz: Salvano il testo in modo formattato oppure in modo non formattato?
  • Quiz: In che codifica salvano?

Alcuni esempi di programmi che colorano le parole chiave sono:

Alcuni di questi programmi hanno una scorciatoia anche per eseguire il codice (RUN)

Traduzione

Le istruzioni scambiate tra gli uomoni sono descritte usando un linguaggio naturale. Le istruzioni contenute in un programma sono espresse in un linguaggio artificiale, per rendere più semplice la comunicazione tra uomini e macchine. Le istruzioni possono essere descritte a parola oppure tramite un diagramma. Ogni diverso tipo di istruzione, nei diagrammi di flusso, si rappresenta con una forma geometrica diversa (ad esempio, con un parallelogramma). Per poter far eseguire le istruzioni di un diagramma di flusso ad un computer, si deve effettuare una “traduzione” del diagramma in un testo.

Parole chiave

Leggendo un programma troveremo delle parole della lingua inglese, come print, che potrebbe essere tradotto come stampa. Il computer non comprende la lingua umana, nè l'italiano, nè l'inglese, ma alcune di queste parole hanno un significato speciale per il computer. Se per errore si sbaglia una sola lettera, anche su una sola riga, il programma può diventare completamente incomprensibile per il computer. Nel caso dei linguaggi interpretati come Python. Cosa accade nel caso di un errore di questo tipo? L'esecuzione procede in avanti e si arresta SOLO nel punto in cui c'è un problema. (cioè il programma viene sempre eseguito, fino a che è possibile farlo, anche se poi dentro si trova un errore)

Esempio (output)

Un programmatore deve dare delle istruzioni al computer. Ad esempio, può chiedere di stampare sul monitor il risultato di un calcolo difficile.

  • Quiz: Come si può dare questo tipo di istruzione (stampa) usando il linguaggio Python?

Stampa è un'istruzione di output. Come erano rappresentate nei diagrammi di flusso queste istruzioni? Come si traducono in Python? Per iniziare con qualcosa di molto semplice, proveremo delle stupide istruzioni che fanno solo output. Notare che il testo si può racchiudere tra virgolette.

Ad esempio:

01.py
print "un'istruzione che stampa sempre la stessa riga"
  • Esercizio: provare a scrivere prin invece di print e poi provare a dimenticare le virgolette.

Se il programmatore vuole descrivere un commento a fianco di un'istruzione usa il cancelletto

02.py
print "Ciao a tutti!" #istruzione di output

Nota: print è un costrutto predefinito del linguaggio e non ci sono le parentesi. Si vedrà più avanti che questo significa che print non è una funzione.

Esempio di assegnazione

Come memorizzare il risultato di un'espressione in una variabile?

03.py
totale = 2     # inizializzazione
print "la variabile usata si chiama totale"
print "il valore calcolato vale", totale
  • Esercizio: provare a spiegare il motivo per cui, nell'ultima istruzione, totale non è racchiuso dalle virgolette
  • Esercizio: per imparare a leggere le segnalazioni di errore, provare a ripetere il programma cancellando l'istruzione di inizializzazione

Assegnazioni

A volte capita che alcuni numeri debbano essere memorizzati, perché sono importanti per effettuare i calcoli.

  • Come si memorizza un numero nella memoria del computer?
  • A cosa serve una variabile?

Per memorizzare un valore temporaneamente, si usa una zona della memoria centrale. Una variabile è una zona di memoria delimitata. Una variabile può, durante la sua vita, contenere diversi valori.

x = 43

In Python la variabile viene creata quando si memorizza il primo valore. Questo istante si chiama “inizializzazione” della variabile. Una variabile non può essere usata se non è inizializzata perché non esiste. Il valore da memorizzare si trova a destra del segno di uguale, la variabile dove il valore viene memorizzato si trova a sinistra dell'uguale.

x = 44

L'assegnazione effettua la memorizzazione di un nuovo valore all'interno di una variabile, sostituendolo al precedente. Per vedere il contenuto di una variabile (che sia stata inizializzata) si può usare print (senza virgolette)

print x

Al posto di un valore numerico costante (come 44) ci può essere anche un'espressione mista di variabili, operatori e numeri. L'ordine di esecuzione è importante: prima viene valutata l'espressione a destra (44+y*2) e poi viene fatta l'assegnazione alla variabile a sinistra (x).

x = 44+y*2    # da eseguire da destra a sinistra del segno uguale

Per questo motivo spesso l'assegnazione viene rappresentata nei libri di testo anche con una freccia da destra a sinistra:

x = 44
x ← 44

È possibile assegnare una variabile su se stessa:

x = x        # assegnazione abbastanza inutile

Quello che segue è un esempio di un'istruzione di assegnazione su una variabile che modifica se stessa (attenzione! eseguire prima l'espressione a destra del segno uguale e poi quella a sinistra)

x = x + 1     # il nuovo valore di x è 45      

La precedente scrittura, ovviamente, non deve essere letta come se fosse un'equazione matematica… In Python, invece di scrivere

b = 8
c = 11

è più efficiente scrivere

b, c = 8, 11

Esempio (input)

Se invece il programmatore vuole ricevere i dati dall'esterno, deve usare un'istruzione di input, ma deve anche specificare la variabile dove memorizzare l'input.

04.py
# nome e' una variabile su cui si esegue un'istruzione di assegnazione
nome = raw_input("digita il tuo nome e cognome e premi invio, grazie.\n")
print "ciao a tutti, tranne che a", nome
  • Quiz: di che tipo è la variabile nome? Contiene un numero o un testo?
  • Esercizio: provare a togliere “\n” per capire a cosa serve

Nota: raw_input() usa le parentesi tonde, si vedrà più avanti che si tratta, quindi, di una funzione

raw_input() memorizza come testo una o più parole in input. Per chiedere in input dei numeri sarebbe necessario applicare una trasformazione, che rimandiamo a più avanti. Per ora, per semplicità, quando dobbiamo leggere dei numeri usiamo la funzione input()

05.py
# anno e' una variabile che contiene un numero intero
anno = input("digita il tuo anno di nascita e premi invio, grazie.\n")
print "sei nato nel", anno
  • Esercizio: cosa accade se l'utente digita un carattere non numerico?

Esempi di operazioni

Continuiamo con una serie di istruzioni molto semplici, solo per capire come il computer esegue le operazioni matematiche per i numeri interi e per i numeri con la virgola mobile. Nota: nel mondo anglosassone si usa il punto al posto della virgola.

06.py
print "la somma di 11 piu' 2 fa sempre", 11+2
print "il rapporto tra 11 e 2 fa sempre", 11/2
07.py
print "la somma di 11.0 piu' 2.0 fa sempre", 11.0+2.0
print "il rapporto tra 11.0 e 2.0 fa sempre", 11.0/2.0
  • Esercizio: provare a spiegare perchè i due programmi mostrano un risultato diverso
  • Esercizio: provare a scrivere un programma che chieda all'utente di inserire base ed altezza di un rettangolo (due numeri interi) e che visualizzi automaticamente l'area. (nota: tradurre il diagramma di flusso esempio
  • Quiz: cosa visualizzerà il seguente programma? Quanto fa 1.1 meno 1.0 ? Provare…
08.py
differenza = 1.1 - 1.0
print "differenza tra 1.1 e 1.0", differenza
print "ripeto: differenza tra 1.1 e 1.0", "%.19f" % differenza
  • Quiz: cosa visualizzerà il seguente programma ESEGUITO DA LINEA DI COMANDO?
 >>> 1.1-1.0   # non usare print...
  • Soluzione: il risultato della differenza è diverso per colpa di print che tronca le cifre decimali. Inoltre questo esempio mostra che la conversione dei numeri con la virgola in base 2 non è sempre esatta… abbiamo scoperto chè il computer è preciso, ma solo per la matematica in base due. Allora, il calcolo delle tasse da pagare, conviene farlo con carta e penna oppure al computer? :)

Cosa accade se proviamo a sommare due caratteri alfanumerici?

09.py
operazione = 'a' + 'b'
print "sommando a e b si ottiene", operazione

Il risultato è diverso dalla somma dei numeri per questo motivo questa operazione è detta “concatenazione”.

  • Esercizio: cosa si ottiene provando a sommare due caratteri come : '2' + '1' ?
  • Esercizio: cosa si ottiene provando a sommare un carattere e un numero: '2' + 1 ?

Tipo di dato

Il valore contenuto in una variabile può essere modificato, ma deve essere sempre dello stesso tipo. Abbiamo già usato diversi tipo di dato: nei precedenti esempi si è visto che le variabili possono contenere numeri interi e numeri con la virgola e che i risultati delle operazioni (come la divisione) possono essere diversi se non si presta attenzione al tipo di dato. Si è visto infatti che, se forniamo due numeri interi e li dividiamo, l'interprete Python propone un risultato a sua volta intero.

Quali tipi di dato abbiamo usato in Python?

  1. Tipo intero: -3, 44, …
  2. Tipo virgola mobile: 4.15, 980.00, …
  3. Tipo carattere alfanumerico: 'z', '?', …
  • Ogni tipo di dato (intero, carattere, ecc.) richiede una quantità di memoria diversa dall'altro. Ad esempio, per una variabile che contiene un numero intero (800) può essere necessario riservare 1 Byte, mentre, per una variabile che contiene un numero in virgola mobile (5.077e-3), può essere necessario riservare 4 Byte. La dimensione di questi tipi di dati in memoria dipende anche dal sistema operativo e dal tipo di CPU che utilizza il computer. Esempio: cpu a 32 bit, cpu a 64 bit
  • Ogni tipo di dato offre la possibilità di effettuare un certo tipo di operazioni invece di altre: il tipo carattere non può essere sommato come il tipo intero.

Esistono due tipi di linguaggi:

  • nei primi, detti fortemente tipizzati, una variabile può essere creata per contenere un solo tipo di dato, quindi il linguaggio è detto fortemente tipizzato
  • nei secondi, i debolmente tipizzati, il tipo di dato a cui appartiene una variabile si può cambiare più facilmente.

Esistono i tipi primitivi predefiniti (built-in), come bool, int, long, float, str, list, ma il programmatore può creare anche nuovi tipi di dati. Inoltre la libreria standard fornisce nuovi tipi di dati come array

Esercizi

Preparare una mappa concettuale con gli argomenti di questo capitolo (parole chiave)

Preparare programmi che devono essere copiati, ma senza fare copia incolla.

Scovare gli errori nei programmi

Indovinare il risultato dei programmi

appunti3s/introduzione_a_python.txt · Last modified: 2020/06/08 22:19 by 127.0.0.1