• Non ci sono risultati.

Usare Python in Linux Introduzione Sara Zuppiroli

N/A
N/A
Protected

Academic year: 2021

Condividi "Usare Python in Linux Introduzione Sara Zuppiroli"

Copied!
39
0
0

Testo completo

(1)

Usare Python in Linux

Introduzione

Sara Zuppiroli

Università di Bologna

27 Febbraio e 1 Marzo 2013

(2)

Outline

1 Laboratorio

Struttura e programma delle lezioni

2 Sistema Operativo Definizione Mini tutorial

3 Python

Introduzione Programmazione

(3)

Outline

1 Laboratorio

Struttura e programma delle lezioni

2 Sistema Operativo Definizione Mini tutorial

3 Python

Introduzione Programmazione

(4)

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

(5)

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

(6)

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

(7)

Outline

1 Laboratorio

Struttura e programma delle lezioni

2 Sistema Operativo Definizione Mini tutorial

3 Python

Introduzione Programmazione

(8)

Sistema Operativo (SO) e interazioni con gli utenti

(9)

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

(10)

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.

(11)

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)

(12)

Comandi

I comandi sono specifici dei vari S.O.:

(13)

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

(14)

Outline

1 Laboratorio

Struttura e programma delle lezioni

2 Sistema Operativo Definizione Mini tutorial

3 Python

Introduzione Programmazione

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

Outline

1 Laboratorio

Struttura e programma delle lezioni

2 Sistema Operativo Definizione Mini tutorial

3 Python

Introduzione Programmazione

(23)

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).

(24)

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

(25)

Outline

1 Laboratorio

Struttura e programma delle lezioni

2 Sistema Operativo Definizione Mini tutorial

3 Python

Introduzione Programmazione

(26)

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

(27)

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)

(28)

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.

(29)

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.

(30)

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

(31)

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)

(32)

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

(33)

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

(34)

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

(35)

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)

(36)

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

(37)

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)

(38)

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

(39)

Cosa abbiamo fatto?

1 Laboratorio

Struttura e programma delle lezioni

2 Sistema Operativo Definizione Mini tutorial

3 Python

Introduzione Programmazione

Riferimenti

Documenti correlati

Nella scheda Generale nella parte inferiore della finestra fare clic sulla casella della proprietà Indicizzato, quindi fare clic su Sì (Duplicati possibili) oppure

Esso contiene: l’indirizzo di ritorno all’istruzione che il main dovrà eseguire dopo la conclusione della funzione fact (tale istruzione è y=valore di ritorno della

1 Definire una funzione che presa una sequenza come parametro restituisca il valore della media geometrica di tale sequenza.. 2 Definire una funzione che presa una terna di valori

1 Che ogni coppia (a, b) appartenente alla lista di coppie abbia il primo elemento diverso da ogni altro primo elemento delle coppie, o se é uguale ad uno o piú primi elementi

Il programma deve chiedere in input una targa, ricercarla nel vettore targhe e se esiste usare la funzione calcola_bollo per calcolare il bollo da pagare, tale

Definire una struct automobile che permetta di memorizzar il targa, la marca, il modello, il numero di kw, l’anno di immatricolazione di una automobile e

Definire una funzione scambia che ricevendo due parametri di tipo struct automobile scambi il contenuto delle due strutture (Attenzione! I due parametri hanno entrambi un ruolo

Uno sportello ha come dati membro una coda (queue) di persone (ogni persona è rappresentata con un carattere), se è aperto (true/false) ed il nome di un file..