Questa estate, e per circa due mesi, ho trascorso almeno un paio di ore al giorno per scrivere codici in Python che riguardassero la Matematica.

Inizialmente avevo realizzato degli script che fossero finalizzati alla statistica ed all’analisi dei dati, poi ho iniziato a simulare moti di particelle e ad affrontare l’analisi matematica.

E’ stato quasi per caso, ma con consapevolezza, che mi sono deciso a scrivere una serie di programmi che riguardassero l’algebra o quanto meno concetti basilari, mi riferisco a cose quali media, fattoriale, somma tra numeri e così via.

Sono nati, giorno dopo giorno, una serie di programmi ragionati, con un loro filo logico.

E la mia idea è chiara: è la matematica, è il fare matematica, che farà la differenza tra le future generazioni lavorative.

In questa serie di lezioni, l’attenzione non sarà mai sull’informatica, a dire il vero di programmazione spinta ve ne sarà poca, ma vi sarà tanta modellistica, sia fisica, sia soprattutto matematica.

In queste lezioni vedremo diverse applicazioni fisiche ed ingegneristiche, dal moto del proiettile, alla correlazione tra dati etc., alcune applicazioni si possono fare anche con carta e penna, ma altre come i frattali possono essere apprezzate solo grazie all’ausilio di un pc.

Ed a proposito di pc, in tutte le lezioni utilizzerò sempre un pc tuttofare, il Raspberry Pi3, con il quale sto pubblicando anche una serie di lezioni scientifiche utilizzando  sensori esterni.

In queste lezioni utilizzerò Python 3 e darò per scontato che il lettore sappia un minimo di programmazione con Python, ma se così non fosse non preoccupatevi, cercherò nelle prime lezioni di fare alcuni richiami, ma se proprio non basta consiglio la lettura di questa facile dispensa:  http://www.cs.unibo.it/~gaspari/www/teaching/tic2.pdf

Iniziamo.

 

IL MONDO DEI NUMERI

Avviamo l’IDLE di Pythn 3 dal nostro Raspberry (ma vale per qualsiasi ps, solo che dovrete scaricarvi l’ultima versione di Python 3, e se riuscite anche la 2, Raspberry li ha già installati , almeno nell’OS Raspbian che utilizzo)

La prima cosa da fare è fargli stampare a schermo qualcosa.

Scriviamo

print(‘benvenuti alla prima lezione’)

andiamo su Run e su Run module, ci chiederà di salvare il file e ….

a schermo apparirà il nostro primo messaggio.

Il comando print è molto utile in molti prgrammi che realizzeremo sia quando ci verrà chiesto di immettere dati sia quando dovremo visualizzarli.

In realtà possiamo scrivere direttamente nella shell di Python, senza salvare nulla.

Se scriviamo 2+5, allora ci verrà restituito il valore 7, come se fosse una normale calcolatrice.

Analogamente utilizzeremo * e / per le moltiplicazioni e divisioni, il cui risultato sarà in decimali (si usa il ., esempio 2.33 er 2,33), ** è usato come elevamento a potenza, così 2**3= 8.

Definire una costante in python è molto semplice , se scriviamo

a= 5

a+6

ci verrà restituito il valore 11.

In merito ai numeri, essi possono essere interi o decimali (che i programmatori chiamano floating numbers), per capire di che tipo è il nostro numero (ma varrà anche per cose più strane tipo liste, matrici etc.) usiamo il comando type

così

type(3.5)

ci restitutirà

<class ‘float’)

 

Un interessante comando è quello che si utilizzerà per inserire un valore a schermo

esempio

a = input(‘immetti un valore : ‘)

E’ possibile anche assegnare un tipo al valore immesso

così

a = int(input())

assegna il tipo intero al valore immesso

se scriviamo 5

e poi digitiamo

a+8

ci restituirà il valore 13.

Se immettiamo 1,4 o 1.4 allora ci restituirà un errore, perchè riconosce solo il valore intero.

 

Calcolare il divisore (fattore) di un numero intero

In questo programma vogliamo capire se un numero è un divisore di un intero

ad esempio dato il numero 40, allora 2 è un divisore perchè 40/2 fornirà resto 0, mentre 3 non è un divisore perchè il resto non è zero!

Capiamo subito che la questione è nel resto.

Dato un numero a, per capire se b è un suo divisore allora a/b dovrà fornire resto zero.

Come realizzare tutto questo con Python?

Innanzitutto dobbiamo sapere che % restituisce il rest tra due numeri

7%5 sarà così pari a 2

Definiamo quella che si chiama una funzione

Il programma sarà il seguente

def fattore(b, a):

        if a%b==0:

           return True

       else:

          return False

 

premiamo Run , assegniamo un nome al programma

a questo punto nella shell occorrerà solo digitare il comando fattore

così se scrivo

fattore(5,100)

restituirà Vero

perchè 5 è un divisiore di 100

se scrivo

fattore(3,100)

restituirà False invece.

 

Sapreste modificare il programma in maniera tale che vi si chiederà prima di immettere il valore del dividendo poi del divisore, in maniera da calcolare se il fattore è vero o falso?

 

I cicli

La ripetizione di una certa operazione è alla base di molti programmi che restituiremo.

Supponiamo di voler stampare a schermo i primi 5 numeri, in sostanza detto i il numero iesimo, vogliamo ripetere il comando print(i) 5 volte a partire dal valore 1 fino a 5.

In Python il ciclo for si scrive in questo modo:

for i in range(valore)

così

for i in range(5) partirà dal valore i=0 fino al valore i=4 (il precedente di 5)

 

Se scriviamo

 

si avrà

0

1

2

3

4

 

Se volessi invece stampare tutti i numeri interi e dispari da 3 a 9 scriverò:

 

for in in range(3,9,2)

    print(i)

3

5

7

9

dove i primi due argomenti sono i valori iniziali e finali, il terzo argomento il passo.

 

Direi che per questa lezione ci siamo, nelle prime lezioni lavoreremo con la Matematica e Python come se fossimo dei bambini, perchè è solo guardando la matematica con gli occhi di un bambino si apprezza tutta la sua bellezza!

 

 

 

 

 

 

 

 

Vai alla barra degli strumenti