Un po” di vocabolario¶
Dove ci si allontana un dalla tastiera per riflettere e capire meglio.
Computer¶
Ora vediamo alcune parole che possono essere utili per capire meglio questo linguaggio di programmazione.
Possiamo pensare il computer formato da:
- Il microprocessore: un circuito in grado di leggere e modificare il contenuto della memoria RAM e di eseguire alcune operazioni logiche o matematiche.
- La memoria RAM (Random Acces Memory, Memoria ad Accesso Casuale): contiene le istruzioni che devono essere eseguite dal microprocessore e i dati necessari al programma. La memoria RAM è realizzata con circuiti elettronici, ha una velocità paragonabile a quella del microprocessore, è volatile cioè quando si spegne il computer, perde irrimediabilmente il suo contenuto.
- La memoria di massa: generalmente costituita da dischi magnetici (hard disk), ottici (CDRom) o memorie flash (USB Disk), mantiene le informazioni memorizzate anche quando viene spento il computer, ma è piuttosto lenta.
- Le periferiche: dispositivi che permettono al computer di comunicare con l’esterno: tastiera, monitor, mouse, stampante, modem, …
Linguaggi di programmazione¶
Le istruzioni che il microprocessore deve eseguire sono scritte nella memoria RAM.
Quando un computer funziona, il microprocessore legge una ad una le istruzioni scritte nella memoria RAM e le esegue. Scrivere un programma vuol dire mettere nella memoria RAM le istruzioni giuste per far fare al microprocessore quello che vogliamo noi. Purtroppo il microprocessore non capisce comandi sensati, ma solo il linguaggio macchina che è composto da numeri binari cioè scritti usando solo le due cifre: zero e uno.
Perciò non potremmo scrivere nella RAM:
Somma 3 a 5
ma dovremmo scrivere qualcosa di questo genere:
1000110011101010
0000000000000011
0000000000000101
Ovviamente scrivere un programma, magari fatto da migliaia o milioni di istruzioni, utilizzando numeri binari è un’impresa da super eroi! I programmatori hanno ben presto scritto dei programmi che leggono comandi sensati e li traducono in numeri binari. In questo modo si possono scrivere programmi utilizzando linguaggi più vicini al linguaggio dell’uomo che a quello della macchina: linguaggi di alto livello.
Ci sono due modi per trasformare un programma scritto con linguaggio di alto livello in un programma scritto in linguaggio macchina: tradurlo tutto e poi eseguirlo oppure tradurre ogni singolo comando ed eseguirlo immediatamente. Nel primo caso si parla di compilatori che traducono tutto un programma scritto con linguaggio di alto livello trasformandolo in un programma scritto in linguaggio macchina e perciò eseguibile da un dato computer senza più la necessità della presenza del compilatore stesso. Nel secondo caso si parla di interpreti: per eseguire un programma interpretato, nel computer deve essere presente l’interprete del linguaggio che legge, traduce e fa eseguire istruzione per istruzione.
Python
¶
Python
è un linguaggio interpretato (in realtà le cose sono un
po’più complicate di così):
non si può eseguire un programma scritto in Python
se sul computer non è presente l’interprete. Il nucleo del linguaggio
Python
è piuttosto limitato: può capire e far eseguire pochi (si fa per
dire!) comandi. Ma è dotato di un meccanismo per cui può essere ampliato
all’infinito: si possono scrivere librerie che contengono nuove funzioni e
che allargano le possibilità del linguaggio.
In effetti Python
viene fornito con un gran numero di librerie già
scritte e notevolmente sicure perché già utilizzate e messe alla prova da
programmatori di tutto il mondo. Molte di queste librerie sono scritte in
Python
stesso e perciò si possono facilmente studiare e, magari,
modificare. Altre, per ragioni di efficienza e di velocità, sono scritte
usando linguaggi compilati.
Le librerie sono dunque dei programmi che ampliano le possibilità del linguaggio mettendo a disposizione del programmatore delle nuove funzioni non presenti nel nucleo del linguaggio.
Per utilizzare il contenuto di una libreria si deve dire all’interprete che la si vuole usare, il comando per includere nell’interprete le funzioni di una libreria è:
>>> import <nome della libreria> [as <abbreviazione>]
Ad esempio, il comando:
>>> import pygraph.pyturtle as tg
significa: carica tutta la libreria pyturtle
chiamandola tg
.
A questo punto possiamo creare tutti gli oggetti forniti dalla libreria
pyturtle
.
Per incominciare ce ne servono due che vogliamo associare a due nomi:
>>> piano = tg.TurtlePlane()
>>> tina = tg.Turtle()
Bisogna prestare attenzione alle maiuscole e alle parentesi.
Se tutto fila liscio a questo punto appare una nuova finestra sullo schermo
è l’oggetto piano della tartaruga collegato all’identificatore piano
.
Con, al centro un triangolino che rappresenta la tartaruga tina
.
Ora: piano
è un oggetto della classe tg.TurtlePlane
e tina
è un oggetto della classe tg.Turtle
.
La classe TurtlePlane
ha un metodo che crea e dà come risultato una
nuova tartaruga. Per creare una tartaruga si può anche scrivere:
>>> tina = piano.newTurtle()
Gli oggetti possiedono degli attributi e dei metodi. Gli attributi sono delle caratteristiche che possono variare da un oggetto ad un altro come il colore, la posizione, lo spessore della penna, … i metodi sono i comandi che l’oggetto è in grado di eseguire.
Gli attributi fondamentali della classe Turtle
sono:
<tartaruga>.color
<tartaruga>.width
<tartaruga>.position
<tartaruga>.direction
e i metodi:
<tartaruga>.forward(<numero>)
<tartaruga>.back(<numero>)
<tartaruga>.left(<numero>)
<tartaruga>.right(<numero>)
<tartaruga>.up()
<tartaruga>.down()
Della classe TurtlePlane
abbiamo visto i metodi:
<piano>.reset()
<piano>.newTurtle()
Riassumendo¶
Python
è un linguaggio (compilato e) interpretato.È arricchito da numerose librerie. Una libreria che contiene la grafica della tartaruga è
pyturtle
.Si può caricare una libreria con il comando:
import <nome libreria> [as <abbreviazione>]
Ad esempio:
import pygraph.pyturtle as tg
Nella libreria
pyturtle
sono descritte le classiTurtlePlane
eTurtle
.È possibile creare un oggetto scrivendo un nome, il simbolo di uguale e il nome della classe seguito da una coppia di parentesi tonde. Ad esempio:
mondoditina = tg.TurtlePlane() tina = tg.Turtle()
È possibile fare eseguire ad un oggetto un suo metodo scrivendo il nome dell’oggetto seguito dal punto e dal nome del metodo completo di parentesi contenenti, se necessario, uno o più valori (argomenti):
<oggetto>.<nome_meodo>()
Ad esempio:
tina.forward(100)