Usare Python in Linux
Introduzione
Sara Zuppiroli
Università di Bologna
27 Febbraio e 1 Marzo 2013
Outline
1 Laboratorio
Struttura e programma delle lezioni
2 Sistema Operativo Definizione Mini tutorial
3 Python
Introduzione Programmazione
Outline
1 Laboratorio
Struttura e programma delle lezioni
2 Sistema Operativo Definizione Mini tutorial
3 Python
Introduzione Programmazione
Lezione tipo
Correzione degli esercizi svolti autonomamente e consegnati all’indirizzo di posta elettronica:labinfo.mat.unibo@gmail.com Veloce rassegna di alcuni concetti spiegati a lezione
Assegnazione di alcuni esercizi da svolgere in laboratorio/aula Assegnazione di esercizi da svolgere in autonomamente
Progetto
Da svolgere singolarmente
Consegna delle specifiche di progetto circa a metà aprile Valutazione:
insufficiente → si deve ripresentare il progetto a una data di consegna successiva
sufficiente → si assegna un valore compreso tra 0 e 5 da sommare al voto dello scritto
Programma delle lezioni di Laboratorio
Introduzione a Linux e Python; esercizi sui comandi di assegnazione, print, import e definizione di funzione Comando di condizione, comando di input, iterazione incondizionata: concetti, esempi ed esercizi
Sequenze immutabili e iterazione condizionata: concetti, esempi ed esercizi
Ricorsione: concetto, esempi ed esercizi
Confronto tra le diverse possibili soluzioni di uno stesso problema: esempi ed esercizi
Liste: concetti, esempi ed esercizi Dizionari: concetti, esempi ed esercizi
Code pile ed alberi: concetti, esempi ed esercizi
Outline
1 Laboratorio
Struttura e programma delle lezioni
2 Sistema Operativo Definizione Mini tutorial
3 Python
Introduzione Programmazione
Sistema Operativo (SO) e interazioni con gli utenti
Definizione di Sistema Operativo
Un Sistema Operativo (SO) è:
un programma che agisce come intermediario tra Utente, Software Applicativo e Hardware.
Obiettivi e compiti:
fornire un ambiente nel quale un utente possa eseguire
programmi in modo conveniente ed efficiente su un determinato hardware.
fornire un’interfaccia utente (grafica e non) per poter eseguire applicazioni
evitare che i programmi in esecuzione contemporanea entrino in conflitto
fornisce sevizi ai programmi in esecuzione
Il SO come Macchina Astratta
Il SO consente di utilizzare l’hardware e di gestire la comunicazione con l’utente, in modo efficiente, corretto e sicuro, fornendo una visione astratta della macchina reale. Attraverso questa visione di macchina astratta si riesce a gestire un adeguato insieme di risorse tramite un linguaggio semplice, che è il linguaggio fornito dal SO.
Il SO e il suo linguaggio
Il linguaggio del SO è rappresentato da tutti i comandi che possono essere riconosciuti dall’interprete del SO. Ogni comando ha:
una sintassi (come devono essere scritti per essere riconosciuti) una semantica (quale operazione sarà effettuata)
Comandi
I comandi sono specifici dei vari S.O.:
Cos’è Linux?
È un SOOpen Source
Ricordiamo che i SO moderni hanno tra le altre anche le seguenti funzionalità:
presentano un’interfaccia (grafica e a linea di comando) per gestire le richieste dell’utente
gestiscono i vari programmi in esecuzione gestiscono le richieste di I/O
Outline
1 Laboratorio
Struttura e programma delle lezioni
2 Sistema Operativo Definizione Mini tutorial
3 Python
Introduzione Programmazione
Come usare Linux da riga di comando
shell La shell/terminale è l’interfaccia dell’interprete del SO dove un utente inserisce i comandi che vuole eseguire.
comandi Possiamo suddividerli in:
1 Documentali
2 Gestionali:
archivi file e directory processi stampa testo
3 Operazionali su file di dati
4 Informativi:
di spazio su disco su di noi e sul sistema
5 Operazionali di ricerca
Documentali
MAN
sintassi man [section] [option...] NAME.
descrizione man formatta e visualizza le possibili pagine del manuale che riguardano NAME. NAME può essere: un comando, una funzione, un file di configurazione. Se section viene specificata, man cerca la
documentazione soltanto in quella sezione. La sezione è la suddivisione in categorie dei comandi
esempio man man → entra nel manuale del comando man, per uscire dal manuale usare q
APROPOS
sintassi apropos NAME.
descrizione apropos da informazioni riguardo la voce NAME
Gestione file e directory
LS
sintassi ls [option...] [NAME_DIRECTORY...] [NAME_FILE...]
descrizione ls lista il contenuto di ogni directory indicata in [NAME_DIRECTORY...] e i file individuati da [NAME_FILE...].
esempi ls → visualizza tutti i file e le directory presenti nella directory corrente
MKDIR
sintassi mkdir [option...] NAME_DIRECTORY...
descrizione mkdir crea le directory specificate con (NOME_DIRECTORY...).
esempio mkdir /home/nome.cognome/python → crea la directory python nella nostra home
Gestione file e directory
RM
sintassi rm [option...] [NAME_FILE...]
descrizione rm cancella i file specificati, ma non le directory.
esempio rm prova.txt → rimuove se esiste il file prova.txt RMDIR
sintassi rmdir [option...] NAME_DIRECTORY...
descrizione rkdir cancella le directory specificate con (NOME_DIRECTORY...).
esempio rmdir prova → rimuove se esiste la directory prova
Gestione file e directory
CD
sintassi cd [DIRECTORY]
descrizione cd entra nella directory specificata. NB. bisogna descrivere il percorso corretto. Se non è fornita alcuna directory allora entra nella home directory dell’utente.
esempi cd /usr/include → entra nella directory /usr/include CP
sintassi cp [option...] FILE_ORIGINE... DIRECTORY|| cp [option...] FILE_ORIGINE FILE_DESTINAZIONE descrizione Copia i file specificati con FILE_ORIGINE nella
directory DIRECTORY.|| Copia il file FILE_ORIGINE nel file FILE_DESTINAZIONE.
esempi cp x.* y.* /home/nome.cognome → copia x,y nella nostra home|| cp prova.* prova2.*→copia il file prova in
Lanciare un programma da shell
Per lanciare un programma da shell, indicare il nome del file eseguibile.
Per esempio apriamo un editor di testo col comando NANO
nano nomefile.* → si apre l’editor sul file specificato da nomefile.*
’E → indica la combinazione di tasti Ctrl E VIM
un altro esempio di editor è VIM VIM opera in due modalità:
di comando: permette di interagire col programma, utilizzando specifiche combinazioni di tasti che corrispondono ai comandi riconosciuti da VIM; come ad esempio: aprire un file, salvare un file, uscire, ricercare e sostituire parole
VIM
Passaggio da una modalità all’altra:
VIM si apre in modalità comando, per cambiare contesto si edita il carattere ’i’
per tornare alla modalità comando si usa il tasto ’esc’
Comandi principali:
:r nomefile → per aprire un file
:w → per salvare un file senza uscire :w nomefile → per salvare con nome
:wq → per salvare ed uscire
:q → per uscire (solo se non si sono apportate modifiche) q! → per uscire senza salvare
VIM nomefile.* → si apre il file nomefile.* con l’editor VIM
Outline
1 Laboratorio
Struttura e programma delle lezioni
2 Sistema Operativo Definizione Mini tutorial
3 Python
Introduzione Programmazione
Cos’è Python?
È un linguaggio di programmazione:
interpretato multi-piattaformaq multi-paradigma.
La versione
Useremo Python 3.* (il libro di testo è riferito a 2.6 o 2.7).
Python
Per programmare useremo IDLE (Ambiente di sviluppo integrato di Python) Per mandare in esecuzione il IDLE si devono eseguire le seguenti operazioni da terminale:
accediamo alla directory corretta → cd /usr/lib/python2.7/idlelib mandiamo in esecuzione il programma digitando → python idle si apre un editor su cui scriveremo e salveremo i nostri (file) programmi
Outline
1 Laboratorio
Struttura e programma delle lezioni
2 Sistema Operativo Definizione Mini tutorial
3 Python
Introduzione Programmazione
Definizione di funzione
import modulo→ Si importa il modulo specificato
def nome_f(par1, · · · ,parn) : →Si definiscono nome e parametri di f
#la mia funzione calcola qualcosa→Commento Codice→Blocco della funzione
return ris, ris2, ecc... →Si definiscono i risultati di f
Import Modulo
Comando per richiamare funzioni implementate in un programma già salvato. Esempi di moduli sono:
math:
sono implementate funzioni matematiche ad esempio: sin(x), cos(x),sqrt(x) ecc· · ·
sono definite le costanti e, pi rispettivamente il numero di Nepero e pigreco
string:
sono implementate alcune funzioni sulle stringhe come ad esempio: find(mela, a)
Per usare in un programma una o più funzioni appartenenti a un modulo:
importare il modulo prima del suo utilizzo es: import math
richiamare la funzione coi valori di input in riferimento al modulo es.
math.sin(90)
Codice
Si inseriscono i comandi che implementano l’algoritmo risolutivo della nostra funzione.
In particolare avremo una sequenza di passi ordinata che ci permette di assegnare il risultato atteso partendo da dei dati di input.
Comandi
Riprendiamo alcuni comandi:
print ('Hello World!')(scrive Hello World!) x=2(assegna il valore intero 2 a X)
x=x+5(assegna a x il valore di x a cui è sommato il valore 5) Ogni operazione definisce un comando specifico a seconda del tipo di dato che si sta usando per questo li riprendiamo brevemente.
Tipo di dato
Semplici:
interi (int) → operazioni tra interi
numeri in virgola mobile (float) → operazioni tra float numeri complessi (complex) → operazioni tra complessi valori booleani (bool) → operazioni tra booleani
Composto:
valori stringa (str) → operazioni tra stringhe
Operazioni su interi, virgola mobile, complessi
Rappresentazioni:
interi: M=3 float: M=3.0
complessi: M=(3+1j) Operazioni:
M+M → somma (interi, float, complessi) M*M → prodotto (interi, float, complessi)
M/M → divisione con risultato intero, float, o complesso M%M → modulo (solo tra interi)
M**M → elevamento a potenza (interi, float,complessi)
Operazioni boolean
Rappresentazioni:
M=True N = False Operazioni:
M and N→ prodotto tra boolean M or N →somma tra boolean not M → nega il valore di M
X>Y → confronto tra X e Y (possono essere di qualsiasi tipo non necessariamente omogeneo) restituisce True se X>Y; False altrimenti
X==Y → confronto tra X e Y (possono essere di qualsiasi tipo non necessariamente omogeneo) restituisce True se sono uguali (e hanno lo stesso tipo); False altrimenti
X!=Y; X<>Y → confronto tra X e Y (possono essere di qualsiasi
Operazioni stringhe
Rappresentazioni:
M = ’Prova’; N=’casa’
Operazioni:
M+N → concatenazione tra la stringa M e N es. Provacasa M*3 → concatena 3 volte la stringa contenuta in M es.
ProvaProvaProva
len(M) → restituisce la lunghezza di M es. 5
M[0], · · · M[len(M)-1] → restituisce i singoli caratteri della stringa.
es: M[0] → P
M[x:y] → restituisce una sotto-striga di quella di partenza partendo dalla posizione x fino alla posizione y-1. es. M[:2] Pr
Esempio
Definire una funzione perimetro_quadrato che prende come argomento un lato e restituisce il valore del perimetro
def perimetro_quadrato(lato) : →definisco il nome della mia funzione
#la mia funzione calcola il perimetro del quadrato che ha come valore del lato, il valore associato alla variabile di input lato
p = lato ∗ 4 →assegno a p il valore del perimetro del quadrato return p→restituisco il valore della variabile p
Salvare e interpretare il file
salvare con nome il file nella directory python aprire il menù run e selezionare Run Module
accedere a python_shell per poter richiamare la mia funzione:
es. perimetro_quadrato(5) → 20
provare a richiamare la mia funzione dopo l’assegnazione di valori a variabili es:
x=20
perimetro_quadrato(x) → 80
provare ad assegnare a una variabile il valore di ritorno della mia funzione es:
y=perimetro_quadrato(4) → il sistema non visualizza il risultato perchè è stato assegnato alla variabile y
print y → 16
provare a fare entrambe le operazioni es:
x=3
y=perimetro_quadrato(x)
Esempio
Definire una funzione radice_quadrata_somma che prenda due valori come parametri, ne faccia la somma, la stampi a video e infine restituisca la radice quadrata della somma
import math→ importo il modulo math
def radice_quadrata_somma(a, b) : →definisco il nome della funzione
#la mia funzione la radice quadrata della somma di due valori
p = a + b →assegno a p il valore della somma di a e b print(p) →stampo la somma a video
r = math.sqrt(p) →richiamo sqrt da math e assegno a r l’output return r→restituisco il valore di r
Esercizio
Verificare la funzione radice_quadrata_somma coi seguenti input.
x=3 y=5;
c=300, b=220
(20,30); (16,9); (x,y); (c,b)
Esercizi
Definire una funzione che prenda come parametri la lunghezza di due cateti e restituisca la lunghezza dell’ipotenusa
Definire una funzione che prenda come parametri due stringhe e restituisca la concatenazione delle due stringhe
Definire una funzione che prenda come parametri due valori a, b ne stampi il valore a video infine restituisca il valore di b a cui è stato sommato il quadrato di a.
Definire una funzione che prenda come parametri due valori qualsiasi e restituisca il valore True se sono uguali e False se sono diversi
Definire una funzione che prenda come parametri due valori e restituisca i valori scambiati. Es. parametri: (3, 4); risultato: (4, 3) Definire una funzione che risolva l’equazione di secondo grado
Cosa abbiamo fatto?
1 Laboratorio
Struttura e programma delle lezioni
2 Sistema Operativo Definizione Mini tutorial
3 Python
Introduzione Programmazione