Lezione 1 Richiami di Python

Documenti analoghi
Lezione 3. Ing. Giuseppe Chiapparo - Università di Roma Tor Vergata Corso di ingegneria degli algoritmi (parte pratica) A.A.

Linguistica Computazionale: esercitazioni

Le basi del linguaggio Java

Input/Output. Console e File.

L utility Unix awk [Aho-Weinberger-Kernighan]

Avviate l interprete Python selezionandolo dal menu dei programmi. Una volta avviato, l interprete presenta un cursore in cui inserire comandi

File binari e file di testo

STRUTTURE DI CONTROLLO DEL C++

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2014/2015

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2015/2016

Laboratorio di Python

Si può scrivere un programma anche utilizzando un editor di testo (Blocco Note, WordPad, ) ricordandosi comunque di salvarlo con l estensione.py.

Corso di Laboratorio di Sistemi Operativi

Usare Python in Linux

Introduzione a Matlab

Programmazione in Python per la bioinformatica

Laboratorio di Python

Laboratorio Progettazione Web Il linguaggio PHP Lezione 6. Andrea Marchetti IIT-CNR 2011/2012

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Introduzione alla programmazione in Python: Parte II

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Fondamenti di Informatica T-1

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Introduzione al MATLAB c Parte 3 Script e function

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Il linguaggio di programmazione Python

INTRODUZIONE. ALLA PROGRAMMAZIONEColonna 1. in linguaggio C

Rappresentazione degli algoritmi

Introduzione alla programmazione

Un esempio di if annidati

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

4. I moduli in Access 2000/2003

Funzioni, Stack e Visibilità delle Variabili in C

RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA

Breve introduzione al linguaggio R

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Programmazione web lato client con JavaScript. Marco Camurri 1

Operazioni su file di caratteri

CORSO DI LABORATORIO DI INFORMATICA

Laboratorio di Python (con Linux)

Indice generale Prefazione...xiii Capitolo 1 Introduzione...1 Capitolo 2 Sviluppo del software, tipi di dati ed espressioni...31

Ingegneria degli Algoritmi (II parte pratica)

Esonero di Informatica I. Ingegneria Medica

Shell: variabili di sistema. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande / VERSIONE 1

Mini-Corso di Informatica

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Gestione di files Motivazioni

Esercitazione n 2. Obiettivi

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Laboratorio di Informatica

Le strutture di controllo in C++

Corso di Fondamenti di Informatica

Informazioni sul corso

Fondamenti di Informatica T-1. Introduzione al linguaggio Java Input/output, variabili, tipi

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Funzioni e moduli. Andrea Passerini Informatica. funzioni e moduli

Java SE 7. Strutture di programmazione (2)

Programmazione in Python. Moreno Marzolla

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Lezione 6 Introduzione al C++ Mauro Piccolo

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

1) Matlab e simulazione. 2) Esempi di utilizzo. Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Reporting Aziendale e Sistemi Informativi

CORSO DI PROGRAMMAZIONE

Introduzione alla programmazione in linguaggio C

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

Strutture di Controllo

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Logica booleana, Costrutto IF

Sviluppare un programma in FORTRAN

Raccolta di tutorial Python #1: basi e Tkinter dal sito francescomilanese.com SOMMARIO

Indice. Prefazione. 3 Oggetti e Java 53

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Informatica! Appunti dal laboratorio 1!

File e puntatori a file

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Introduzione al linguaggio Python

Sommario FONDAMENTI DI INFORMATICA. File e Python. Gestione di file. LINGUAGGIO Python Gestione dei file

Introduzione alla programmazione in C++

Costrutti condizionali e iterativi

Strutture dati e loro organizzazione. Gabriella Trucco

Automazione Excel con Visual Basic (base)

Elementi di Informatica

Linguaggio C: introduzione

MINIMANUALE VBA PER CREARE MACRO NEI FOGLI EXCEL

Capitolo 4. Tipi di dati fondamentali. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Transcript:

Lezione 1 Richiami di Python Ing. Giuseppe Chiapparo - Università di Roma Tor Vergata Corso di ingegneria degli algoritmi (parte pratica) A.A. 2016/2017 11/10/2016 1

Informazioni generali Ing. Giuseppe Chiapparo Sitoweb: https://sites.google.com/site/algoritmipython/ Email: giuseppe.chiapparo@outlook.it Oggetto: [tutoraggio IA] Ricevimento: dopo le lezioni o per appuntamento. 2

Modalità prova pratica Premessa: Si può decidere di consegnare la prova pratica solo una volta l'anno. La prova pratica consiste nell'implementazione di soluzioni a problemi di natura algoritmica in Python. Questa prova influirà sul 25% del voto di Ingegneria degli algoritmi. Potrete decidere di svolgere la prova pratica in due diverse modalità: Lo svolgimento di due test durante il corso. La prima prova (prova intermedia) consisterà in una consegna individuale e peserà per circa il 25% rispetto all'intera parte pratica. La seconda prova (prova finale) consisterà in una consegna di gruppo (3 persone) e peserà per il restante 75% della prova pratica. Oppure la realizzazione di un unico progetto finale. Essendo un unico progetto, quest'ultimo avrà un più alto coefficiente di difficoltà rispetto ai due test pratici. Può essere svolto in gruppo (3 persone). Nota bene: le due precedenti modalità sono mutualmente esclusive, non sarà quindi possibile svolgere il progetto se si è già partecipato ai test. 3

Python e perché usarlo Linguaggio di programmazione ad alto livello sviluppato agli inizi degli anni 90. Sviluppato per aumentare la produttività degli sviluppatori software. Sintassi snella Molte funzionalità insite nelle librerie del linguaggio Permette di concentrarsi di più sul cosa fare, e meno sul come fare. È dunque più semplice tradurre la logica di un algoritmo in Python. Curiosità: Il nome non deriva dal «Pitone», bensì dalla serie televisiva «Il circo volante dei Monty Python» amata da Van Rossum (creatore del linguaggio). 4

Dietro le quinte: come funziona Python Alcune note: L interprete svolge il ruolo di controllore sintattico e di traduttore. Il codice byte è una forma equivalente del codice Python, solo che è in un linguaggio di basso livello. È la Python Virtual Machine ad eseguire il codice byte Codice Python Controllore sintattico e traduttore Messaggi di errori sintattici Codice byte Input dell utente Python Virtual Machine (PVM) Output del programma Altri messaggi di errore

Installazione Si ha bisogno di: Un interprete Python, la PVM e i relativi moduli di base Per equipaggiare il proprio sistema operativo con questi elementi si può andare su: http://www.python.org (oppure su http://www.python.it ) nella sezione download. I sistemi Unix-based dovrebbero avere già installato Python, ma potrebbero aver bisogno di aggiornare la versione di Python preinstallata nel sistema. Un adeguato editor o meglio un ambiente di sviluppo integrato (IDE) Non indispensabile, ma comunque molto utile. Va bene anche l ide integrato con Python. 6

Documentazione Il libro «Programmazione in Python» di Kenneth A. Lambert Apogeo Education. Si tratta del libro usato nel corso di Fondamenti d informatica. La documentazione online ufficiale di Python: http://www.python.it/doc/ per la documentazione in italiano. https://www.python.org/doc/ per la documentazione in inglese. Documentazione nella shell di Python: Funzione help usata per visualizzare le informazioni su di un modulo o su di una funzione. Prima di ricercare qualcosa con help assicurarsi di aver importato la risorsa cercata. Esempio: help(math) oppure help(math.cos) 7

Progettazione di un programma Modello a cascata: Richiesta del cliente ricevere una dettagliata descrizione di un problema. Analisi Determinare cosa farà il programma, chiarendo le specifiche. Progettazione Determinare come il programma dovrà svolgere il suo compito. Implementazione Scrivere il programma (ovvero la fase di codifica). Integrazione e test Assemblare le varie parti del programma in un blocco funzionante. Manutenzione Apportare diverse modifiche per aggiornare il programma. 8

Come scrivere il codice Commento introduttivo in cui includere almeno il nome dell autore e una breve descrizione programma Import dei moduli richiesti dal programma subito dopo il commento introduttivo Inizializzazione di eventuali variabili di modulo Definizione delle funzioni, tra cui la funzione main Docstring per ogni funzione definita nel programma. Uso di nomi significativi. Attenzione alle convenzioni: Nomi di funzioni, metodi e di variabili iniziano sempre con la lettera minuscola. Nomi di classi con la lettera maiuscola. Usare in entrambi i casi la notazione CamelCase. Nel caso di costanti scrivere il nome tutto in maiuscolo. 9

Quale è la giusta struttura di un programma? Solitamente in fase di progettazione si segue un approccio top-down, che consiste nel suddividere il problema iniziale da risolvere in piccoli sottoproblemi. La struttura del codice che viene prodotto deve riflettere questa suddivisione dei problemi. Si ha un file in cui è inserito il codice del main e pochi altri dettagli. Tutte le funzioni necessarie per lo sviluppo del codice possono essere raggruppate in diversi moduli. 10

I moduli in Python Un modulo è un particolare script Python. Sono utili per decomporre un programma di grande dimensione in più files, oppure per riutilizzare codice scritto precedentemente. Le definizioni presenti in un modulo possono essere importate in uno script (o in altri moduli) attraverso il comando import. Il nome di un modulo è il nome del file script (escusa l estensione «.py»). All interno di un modulo si può accedere al suo nome tramite la variabile globale name 11

L istruzione import (esempio con il modulo math) Il modulo math contiene al proprio interno: numerose funzioni matematiche tra cui coseno (cos), numero assoluto (fabs) diversi elementi tra cui il numero pi greco (pi) il numero di Nepero (e) import math per importare tutto il modulo math. Questa tecnica di importazione è la migliore. Ad esempio per richiamare la funzione sqrt si deve scrivere math.sqrt(<numero>). Esiste anche la tecnica from math import pi, sqrt che permette di importare solo alcune risorse da un modulo. In questo modo si può evitare l uso del qualificatore math. Questo secondo modo è sconsigliato in quanto l uso del qualificatore ricorda anche al lettore lo scopo della funzione. 12

Importare i propri moduli Importare i propri moduli: import <percorso relativo del file rispetto alla posizione di python e nome del file senza.py>. Una volta effettuato l import, se lo script prevede un programma interattivo e non solo delle funzioni, allora verrà eseguito lo script. Per eseguire lo script solo quando quest ultimo è stato direttamente eseguito, e non quando si è eseguito un semplice import del modulo è bene eseguire il seguente controllo: 13

Importare i propri moduli Infatti, se un modulo viene eseguito direttamente la variabile globale name sarà uguale alla stringa " main ". Viceversa, questa identità non è verificata Ne segue che se un modulo viene importato l uguaglianza tra name e " main " non sarà verificata, e quindi il codice del main() non sarà eseguito. Ciò consente di impostare diversi comportamenti dello script nel caso in cui esso venga imporato come un modulo o direttamente eseguito. 14

Passaggio degli argomenti ad uno script Si apre il terminale e ci si posiziona all interno della cartella che contiene il file python.exe Si può digitare il seguente comando: python.exe <percorso relativo del file con estensione.py> arg1.. argn Esempio: Python.exe Scripts/data.py Giuseppe Chiapparo 1/1/2001 In questo modo si eseguirà lo script contenuto nel file data.py e sto passando come argomenti il nome il cognome e la data di nascita. 15

Accedere agli argomenti passati All interno dello script per accedere agli argomenti passati tramite linea di comando: Importare il modulo sys. All interno dello script si può accedere alla lista degli argomenti tramite sys.argv Nota bene: L argomento in posizione 0 è il nome del file che si sta eseguendo. Si controlla se il numero degli argomenti passato è proprio quello che ci aspettavamo Ad esempio if len(sys.argv) == 4: Si accede ad ogni singolo elemento attraverso sys.argv[<indice>] 16

Tipizzazione dinamica Python è caratterizzato da una forte tipizzazione dinamica Python gestisce diversi tipi base, oltre quelli definiti attraverso classi. Una volta che una variabile viene inizializzata, Python ne desume il giusto tipo e lo assegna alla variabile in questione. Alcuni tipi gestiti nativamente da Python: Variabili numeriche: interi (int e long), virgola mobile (float) Boolean: può assumere una delle due costanti True o False Strutture dati: liste, insiemi, dizionari, 17

Istruzioni di controllo Ciclo for: for <variabile> in <sequenza>: <operazione con la variabile La sequenza può essere espressa da: [1, 2, 3] una sequenza di numeri Una stringa che viene vista come una sequenza di caratteri Un file che viene visto come una sequenza di righe di testo. Con la funzione range range(10) indica la sequenza da 0 a 9 range(1, 10) indica la sequenza da 1 a 9 range(10, 0, -1) indica la sequenza decrescente da 10 a 1 range(0, 10, 2) indica la sequenza [0, 2, 4, 6, 8] 18

Istruzioni di controllo Il costrutto if elif else permette di scegliere tra diverse alternative: if <condizione1>: <sequenza di istruzioni 1> elif <condizionen>: <sequenza di istruzioni N> else: <sequenza di istruzioni di default> Il ciclo while permette di creare un ciclo controllato da contatore while <condizione>: <sequenza di istruzioni> Per uscire da un ciclo while oltre al fatto che la condizione diventa falsa si può usare l istruzione break. 19

Stringhe Una stringa è una struttura dati immutabile, vista come una sequenza di 0 o più caratteri. I caratteri in una stringa vanno dalla posizione 0 alla posizione len(<stringa>) 1. Operatore subscript: <stringa>[<indice>] per accedere al carattere di posto <indice> <stringa>[len(<stringa> - 1] o <stringa>[-1] per accedere all ultimo carattere della stringa Estrazione delle sottostringhe: <stringa>[<limite inferiore>:<limite superiore] La sottostringa prodotta si estende dalla posizione <limite inferiore> fino a <limite superiore> - 1 20

Stringhe Esempio, data la stringa name: name[0:] tutti i caratteri dalla pos. 0 alla fine. name[:len(name)] tutti i caratteri dalla pos. 0 a len(name) -1. name[-3:] gli ultimi tre caratteri. Operatore in restituisce True se la stringa è stata trovata: <stringa cercata> in <stringa in cui cercare> Ci sono diversi metodi per l elaborazione delle stringhe: Vedi help(str) per tutti gli approfondimenti s.split() restituisce la lista di parole contenuta nella stringa s che sono separate da uno spazio. s.split(<stringa>) restituisce una lista di parole contenute nella stringa s e separate da <stringa>. Una stringa può essere concatenata ad altre stringhe con l operatore +. Non si può concatenare una stringa ad un numero, si deve usare la funzione di conversione str(<numero>). 21

Input e output da standard I\O Per scrivere sullo standard output si usa la funzione print() Per poter leggere da standard input si usa funzione input() Att: se si usa una versione di Python precedente alla 3, per poter leggere dallo standard input si usava la funzione raw_input() Esempio: nome = input("inserisci il nome") print("benvenuto ", nome) Si può accedere allo standard input e output attraverso i due oggetti sys.stdin e sys.stdout ed utilizzare su di essi le funzioni membro valide per gli oggetti file, in lettura e scrittura. 22

Gestione dei file Per aprire un file: f= open( pathname, modalità ) N.B. open non ha la notazione dot(.) Apre il file che si trova nel path indicato e restituisce un oggetto file. Il pathname può essere relativo o assoluto. Se il file definito dal pathname non esiste, viene creato. La modalità può essere: r (read only) r+ (read and write) w (write only) w+ (write and read) a (append, only write) a+ (append, read and write) Esempio: f = open( myfile.txt, r ) Viene aperto il file myfile.txt in modalità di sola lettura 23

Gestione dei file f.write(<stringa>) per scrivere una stringa in un file Restituisce il numero di caratteri che sono stati scritti. Se non si scrive a partire dalla fine del file, si sovrascrive il file. f.read() Legge tutto il contenuto del file f e lo restituisce in una singola stringa. Restituisce (la stringa vuota) se raggiunge la fine del file. Una volta completata la lettura del file, un ulteriore chiamata di read restituirebbe una stringa vuota. Per ripetere l operazione di lettura del file, il file deve essere riaperto (non è necessario chiudere il file). f.readline() Legge una singola riga di testo dal file e la restituisce compresa di carattere di accapo. Restituisce se raggiunge la fine del file. f.close() Chiude un file. Questa operazione serve per liberare le risorse occupate dal file quando è aperto. f.seek(<offset>, <position>) Per modificare la pos. corrente. <position> può essere 0 (inizio), 1(pos.corrente) e 2 (fine). 24

Gestione dei file In che modalità aprire il file?? 25

Gestione dei file Questa tabella mostra quali operazioni vengono eseguite in base al tipo di modalità scelta per aprire un file. read write create truncate Position at start Position at end r r+ w w+ a a+ x x x x x x x x x x x x x x x x x x x x x N.B. Se si apre un file con modalità r o r+, se il file non esiste non verrà creato in automatico, bensì verrà lanciato l errore FileNotFoundError N.B. Se si apre un file in modalità a o a+, la scrittura avverrà sempre a partire dalla posizione finale, anche se ci si sposta con seek. 26