Python:
- Installazione ambiente su Windows:
- Scaricare WinPython, una distribuzione 3.4. o 3.5 (non cambia molto), versione a 32/64 a seconda della vostra versione di Windows. Attenzione: seguite l’asterisco se installate la 3.5, e scaricate il pacchetto indicato in fondo alla pagina del sito, per windows 7 o 8, se ci sono problemi scaricatelo anche se avete windows 10. (Redistributable C++ Runtime).
Eseguire l’installazione e specificare come posizione C:\WinPython (non installate sulla cartella Downloads. Subito dopo l’installazione, seguite le indicazioni del sito sopra, andate nella cartella C:\WinPython e eseguite il “WinPython Control Panel” ed eseguite la registrazione, a quel punto avete nel menu di Windows i link alle applicazioni.
Quando eseguite Jupyter, la cartella di lavoro sarà: C:\WinPython\notebooks. Esplorate i vari elementi del menu. In particolare: Jupyter, Spyder. - Installate Notepad++ da qui.
- Create una cartella C:\programmazione o come volete chiamarla voi. Scaricate “Console2“. Potete cambiare la configurazione tramite i menu, per fare in modo che la console parta direttamente dentro la cartella di lavoro creata sopra. Nota: non potete eseguire python da console direttamente perche essa non troverà il comando, per farlo dovete prima eseguire c:\WinPython\script\env.bat, subito dopo potete eseguire ipython da console.
- Se volete vedere cosa sia possibile fare con un linguaggio come Python, sopratutto in ambito scientifico, vi segnalo:
- www.scipy.org (tutorial) (tutorial2)
- sympy
- best jupyter notebooks
- simulazione del pendolo caotico (guardate l’animazione, verso la metà dell’articolo).
- Scaricare WinPython, una distribuzione 3.4. o 3.5 (non cambia molto), versione a 32/64 a seconda della vostra versione di Windows. Attenzione: seguite l’asterisco se installate la 3.5, e scaricate il pacchetto indicato in fondo alla pagina del sito, per windows 7 o 8, se ci sono problemi scaricatelo anche se avete windows 10. (Redistributable C++ Runtime).
- Installazione su Mac OS X (qualunque versione):
- Leggete prima questo. (Per fare la tilde ~ dovete premere Alt+5)
- Un editor che io uso regolarmente è TextMate.
- Installare HomeBrew. Potete comunque usare python da console, perche è già disponibile, ma attenzione è la versione 2.xx del linguaggio ed è in parte diversa dalla 3.xx (la print ad esempio non è una funzione e quindi non ha le parentesi attorno agli argomenti), vi consiglio di installare la 3, con “brew install python3”, poi potete installare tramite “pip3 install ipython” e “pip3 install jupyter[all]” il resto, attenti a scrivere correttamente pip3 e non pip.
- Il compilatore C è già disponibile come vedremo. Guardatevi quando avete fatto, gli esempi dai link sopra.
- Installazione su Linux: usate il gestore di pacchetti della vostra distribuzione.
Radice Quadrata:
[python light=”false” title=”radice.py” highlight=”22″]
# Questo è un commento
# Tutto quello che segue il cancelletto è un commento
# Radice Quadrata, Algoritmo dei Babilonesi (wikipedia)
# costanti
C = 3 # devo trovare radice quadrata di C
EPS = 0.000001 # precisione
# variabili
x = 1.5 # stima iniziale
e = x*x – C # errore
if (e < 0): e = -e # modulo di |x^2 – c| i = 0 # contatore passi # iterazione: se l’errore è grande e non ho # eseguito almeno 10 passi allora continuo: while (e > EPS) and (i < 10):
# metodo babilonese, media tra x e C/x
x = (x + C/x) / 2.0
# x è cambiato, aggiorno l’errore:
e = x*x – C
if (e < 0): e = -e # aumentiamo il numero di iterazioni i = i + 1 # se arrivo qui allora: # 1) il ciclo sopra è corretto, nel senso che non diverge # 2) la guardia del while è False, quindi vale # not (e > eps) and (i < 10) cioè
# e <= eps or (i >= 10)
# quindi: l’errore è minore di EPS, oppure ho fatto
# già 10 iterazioni (da 0 a 9) e mi fermo
print("la radice quadrata di ", C, "è ", x)
print("Numero di iterazioni: ", i)
[/python]
Esercizi:
- Modificate il codice sopra (in un altro file) e inserite la funzione input(), questa funzione del linguaggio ha come argomento una stringa che viene mostrata all’utente, tipicamente una domanda per spiegare cosa inserire, esempio: input(“inserisci un intero: “), il risultato è una stringa. Per convertire la stringa in un intero, usare int(input(..)), mettete il risultato al posto della variabile C, e rieseguite il codice.
- Modificate il codice sopra, (in un altro file) e definite una funzione che calcola la radice, esempio di definizione di funzione:
[python]
def f(x):
return 2*x+1
def cubo(c):
return c*c*c
# uso:
print(f(4),cubo(3))
[/python] - Scrivere un programma Python che legge da input tre interi (a,b,c) e stampa il valore minimo e massimo.
- Scrivere un programma Python per l’algoritmo di Euclide, scrivete tre versioni: 1) definite prima due variabili m = 124422, n=23234 su cui volete calcolare mcd(m,n), e scrivete il codice che calcola il risultato nella variabile mcd. Alla fine stampate la variabile. 2) modificate il codice, e definite una funzione che prendere due parametri (m,n) e restituisce il massimo comune divisore, chiamate la funzione sui due valori precedenti e stampate il valore che ritorna. 3) modificate il programma precedente, prendendo, m,n in input usando input().
- Scrivete un programma che legge tre valori a,b,c (non interi) usate (float(input())) e calcola le soluzioni dell’equazione di secondo grado: $$ax^2+bx+c=0$$. Usate la funzione del modulo math: math.sqrt() per il calcolo della radice.
- Advanced: Leggete Collatz, scrivete la funzione che calcola Collatz, $$f(n) = n/2$$ se $$n$$ è pari, $$3n+1$$ se $$n$$ è dispari. Dato in intero $$n$$, scrivere un ciclo che calcola i valori della funzione fino a quando essa non arriva a $$1$$, stampando i valori per ogni iterazione. Mostrare la sequenza associata a $$123456789$$, in quanti passi si arriva ad $$1$$?. Suggerimento: tra gli operatori del linguaggio c’è il ‘a % b’ che calcola il resto della divisione intera tra a e b.
- Advanced 2: Sempre con Collatz, usate il codice fatto sopra, per scrivere un ciclo che calcola la successione di Collatz per tutti gli interi $$3 \leq n \leq 1000$$. Non dovete stampare come fatto sopra l’intera successione, ma per ogni valore di $$n$$ dovete stampare il valore massimo presente nella sua successione di Collatz. Alla fine si avrà una tabella con i valori da $$3,..,1000$$ con accanto il corrispondente massimo.
Hardware:
- studiate le seguenti pagine di wikipedia,se fate fatica con l’inglese usate la versione italiana (fatta peggio):
Algoritmi, Turing, Von Neumann, Radice Quadrata, Architettura di Von Neumann, Timeline, Memoria, RAM, CPU, Ciclo CPU, ALU, CPU CLock, Gigabyte, Data Size, Byte.Programmi. - Installate e Eseguite (su Windowz) il programma CPU-Z, cercate di capire il senso di ciò che mostra.
- Importante: Guardare questo Video, (trascurate gli sproloqui finali sui fogli di calcolo). Leggete qui.
- Ricapitolate con il fatto essenziale: la CPU è un interprete, quindi il suo programma è un ciclo in cui si legge un istruzione, si decodifica (si capisce cosa fare), se necessario si caricano i dati su cui l’istruzione deve agire (che devono essere in qualche modo specificati dall’istruzione stessa), si passa il tutto all’ALU e si esegue, infine si passa all’istruzione successiva. Semplice Pulito Efficiente.
- Scaricate e iniziate a studiare le note sulla rappresentazione dell’informazione, disponibili sulla pagina del programma del corso.