Laboratorio Programmazione Anno Lezione 3

Documenti analoghi
Laboratorio 04. Programmazione - CdS Matematica. Michele Donini 19 Novembre 2013

Laboratorio 04. Programmazione - CdS Matematica. Michele Donini 17 Novembre 2015

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

PROGRAMMAZIONE: Le strutture di controllo

Istruzioni di controllo

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

Programmazione in Python. Moreno Marzolla

Laboratorio di Python

Programmazione in Python per la bioinformatica

laboratorio di python

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Laboratorio di Python

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

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

Strutture di Controllo

laboratorio di python

Laboratorio di Python

Laboratorio di Informatica I

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

Esercizi in Laboratorio

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

PROGRAMMAZIONE: La selezione

Introduzione a Python e Gurobi

Java SE 7. Strutture di programmazione (2)

STRUTTURE DI CONTROLLO DEL C++

Esercitazione 4. Comandi iterativi for, while, do-while

Matlab. Istruzioni condizionali, cicli for e cicli while.

Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI

Costrutti di iterazione

Fondamenti di Informatica A. A. 2018/19

CORSO DI LABORATORIO DI INFORMATICA

VBA Principali Comandi

Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse

Ing. Lorenzo Vismara

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

Laboratorio di Python

Esercitazione 2. Espressioni booleane Il comando if-else

Matematica con Python

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Tutorato di Fondamenti di Informatica TUTOR: DAVIDE GHIANI, GIULIA ORRU

Fondamenti di Informatica

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Laboratorio Progettazione Web Il linguaggio PHP le istruzioni. Andrea Marchetti IIT-CNR 2013/2014

Diagrammi di flusso - Flowcharts. E un formalismo che consente di rappresentare graficamente gli algoritmi

Appunti di informatica. Lezione 8 anno accademico Mario Verdicchio

Risoluzione di un problema

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOIGNEGNERIA. INFORMATICA B Ingegneria Elettrica. Script in Matlab

Fondamenti di informatica T-1 (A K) Esercitazione 4: controllo del flusso

Primi script in MATLAB

Strutture di controllo condizionali in Matlab

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

02/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 8 STRUTTURE DI CONTROLLO (1)

Introduzione Il costrutto if: else: Il costrutto while: Il costrutto for: Sommario FONDAMENTI DI INFORMATICA. Avviso. Introduzione

Cicli. S i a i = a 1 + a 2 + a a n

Università degli Studi di Ferrara

Le strutture di controllo

I cicli. Iterazioni Calcolo della media Istruzioni break e continue

If Statement. Il costrutto condizionale if ha la seguente sintassi:

Programmare. Condizioni logiche. Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo

Sviluppo di programmi

Laboratorio di Python

ISTRUZIONI ISTRUZIONI SEMPLICI

Dichiarazione di variabili

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Esercitazione n 2. Obiettivi

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

Controllo di flusso negli script: if-then-else

Fondamenti di Informatica

Quando usiamo Python in modo interattivo in genere e' lo shell utilizzato che gestisce l'indentazione e la deindentazione.

Laboratorio di Matematica e Informatica 1

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Laboratorio di Python

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:

Nozioni fondamentali su Algoritmi e programmazione

Laboratorio di Python

Laboratorio di programmazione

Laboratorio di Python

Lab 04 Programmazione Strutturata"

Laboratorio di Python

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

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

Usare Python in Linux

Università degli Studi di Ferrara

Lezione 6 programmazione in Java

Strutture di controllo

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Transcript:

Laboratorio Programmazione Anno 2012-2013 Lezione 3

Scripting Fino ad ora, per fare esercizi, abbiamo utilizzato l ambiente interattivo di python. È possibile creare dei file contenenti (lunghe) sequenze di istruzioni che possono essere eseguite senza doverle ridigitare ogni volta Per creare i file potete utilizzare notepad++ se siete sotto Windows gedit se siete sotto linux Per utilizzare gedit: cercate il programma tra le applicazioni oppure aprite una finestra di terminale e digitate: gedit & Lab3 @ Progr. I 2012/2013 2 of 27

Il mio primo script apriamo l editor gedit ditigiamo una serie di comandi come li digiteremmo nell ambiente interattivo salviamo il file con un nome significativo, ad es. primo.py digitare da terminale python primo.py corrisponde a: aprire l ambiente python (ovvero digitare python da terminale) digitare le istruzioni nel file in sequenza uscire dall ambiente python più o meno... mentre nell ambiente interattivo la valutazione di un espressione è stampata a video automaticamente, in uno script è necessario utilizzare il comando print Lab3 @ Progr. I 2012/2013 3 of 27

Input dall utente Un modo per poter modificare il valore di variabili all interno dello script è quello di richiedere tali valori all utente: x=r a w i n p u t ( messaggio ) ; raw input stampa la stringa messaggio e salva i caratteri digitati dall utente nella stringa x Lab3 @ Progr. I 2012/2013 4 of 27

Modifica del flusso di programma: IF I programmi che abbiamo scritto finora consistono di un unica sequenza di istruzioni che vengono eseguite in ordine È possibile eseguire una (sotto)sequenza di istruzioni solo se una condizione risulta vera: i f cond : comando1 comando2 comando3 comando4 le istruzioni comando1 e comando2 vengono eseguite solamente se cond è vera le istruzioni if, comando3 e comando4 vengono eseguite indipendentemente dal valore di cond. Lab3 @ Progr. I 2012/2013 5 of 27

Modifica del flusso di programma: IF i f cond : comando1 comando2 e l s e : comando3 comando4 comando1-4 è una qualsiasi istruzione (anche un altro if) Tutti i comandi appartenenti alla stessa sequenza di istruzioni inziano dalla stessa colonna (ma non è vero il contrario) il carattere : introduce una nuova sequenza di istruzioni, che termina quando un istruzione inizia da una colonna precedente nell esempio abbiamo tre distinte sequenze di istruzioni (comando1,comando2), (comando3) ed infine (if, comando4). Lab3 @ Progr. I 2012/2013 6 of 27

Esempio di istruzione condizionale Assumiamo che x sia un intero definito prima delle seguenti istruzioni i f x <0: p r i n t ( x e n e g a t i v a ) e l i f x==0: p r i n t ( x v a l e 0 ) e l s e : p r i n t ( x e p o s i t i v a ) x=x +1; Al termine di esse troviamo stampato x e negativa, x vale 0, x e positiva se, rispettivamente, x < 0, x = 0, x > 0. Lab3 @ Progr. I 2012/2013 7 of 27

Esempio di istruzione condizionale Le linee cancellate sono quelle che non vengono eseguite x= 1; i f x <0: p r i n t ( x e n e g a t i v a ) elif x==0: print( x vale 0 ) else: print( x e positiva ) x=x +1; Output a video: x e negativa. valore di x alla fine: x = 0; Lab3 @ Progr. I 2012/2013 8 of 27

Esempio di istruzione condizionale Le linee cancellate sono quelle che non vengono eseguite x =0; i f x <0: print( x e negativa ) e l i f x==0: p r i n t ( x v a l e 0 ) else: print( x e positiva ) x=x +1; Output a video: x vale 0. valore di x alla fine: x = 1; Lab3 @ Progr. I 2012/2013 9 of 27

Esempio di istruzione condizionale Le linee cancellate sono quelle che non vengono eseguite x =3; i f x <0: print( x e negativa ) e l i f x==0: print( x vale 0 ) e l s e : p r i n t ( x e p o s i t i v a ) x=x +1; Output a video: x e positiva. valore di x alla fine: x = 4; Lab3 @ Progr. I 2012/2013 10 of 27

Condizioni Vi ricordo che per i confronti potete utilizzare gli operatori <, >, <=, >=, == (uguale),! = (diverso) Per creare condizioni più complesse, potete collegare le condizioni sopra tramite gli operatori and, or, not Ad esempio x =4; p r i n t ( x>2 and x <6) restituisce True Ricordate che, per x and y, se x e falso y non viene valutato. Allo stesso modo, per x or y, se x e vero y non viene valutato Lab3 @ Progr. I 2012/2013 11 of 27

Esempio di Script creare uno script guess.py che chiede all utente di inserire un carattere tramite tastiera stampando a video il messaggio Inserisci un carattere: stampare un messaggio di congratulazione se il carattere e a Lab3 @ Progr. I 2012/2013 12 of 27

Esempio di Script: Soluzione creare uno script guess.py che chiede all utente di inserire un carattere tramite tastiera stampando a video il messaggio Inserisci un carattere: stampare un messaggio di congratulazione se il carattere e a x=r a w i n p u t ( I n s e r i s c i un c a r a t t e r e : ) ; i f x == a : p r i n t ( Bravo, mi h a i l e t t o n e l p e n s i e r o ); Lab3 @ Progr. I 2012/2013 13 of 27

Esercizi 1 creare lo script inputanumber.py che inizializza una variabile n al valore 4 chiede all utente di inserire un numero naturale maggiore o uguale a n tramite tastiera stampa un messaggio di rimprovero nel caso che il numero sia minore di n oppure di felicitazioni in caso contrario 2 creare lo script simulaand.py che, senza utilizzare l operatore and inizializza due variabili, a e b, all interno dello script ad un valore a scelta tra False,True stampa vero se sia a che b valgono True, falso altrimenti 3 creare lo script simulaor.py che sia l equivalente di simulaand.py per l operatore or le due variabili a e b, devono essere numeri letti da standard input. Utilizzate la corrispondenza 0=False, 1=True Lab3 @ Progr. I 2012/2013 14 of 27

Esercizi 1 a partire dallo script inputanumber.py, creare lo script inputanumber2.py che chiede all utente di inserire un numero naturale minore di 10 tramite tastiera stampa un messaggio di errore nel caso in cui il numero sia maggiore o uguale a 10 in ogni caso stampa se il numero è uguale o diverso da 4, e una delle seguenti possibilità: se è minore di 3, se è compreso tra 3 e 6 (inclusi) e se è maggiore di 6. Le stampe a video devono provenire ciascuna da un solo comando print (il che non significa che deve esserci un solo comando print in tutto lo script). Esempi: per 1 stampa diverso da 4 e minore di 3 per 4 stampa uguale a 4 e compreso tra 3 e 6 per 5 stampa diverso da 4 e compreso tra 3 e 6 per 8 stampa diverso da 4 e maggiore di 6 Lab3 @ Progr. I 2012/2013 15 of 27

Moduli È possibile utilizzare funzionalità scritte da altri nei proprio programmi tramite i moduli. Ad esempio, Il modulo random mette a disposizione comandi per generare numeri casuali import random n = random. r a n d i n t ( 1, 1 0 ) il comando random.randint permette di generare un numero intero casuale x.1 x 10 Lab3 @ Progr. I 2012/2013 16 of 27

Iterazioni: While Se abbiamo la necessità di ripetere più volte una serie di istruzioni, possiamo utilizzare i comandi while e for w h i l e cond : comandi ripete comandi fino a che cond è vera. Esempio: w h i l e x >0: x=x 1; p r i n t ( x ) ; p r i n t ( f i n e ) ; Lab3 @ Progr. I 2012/2013 17 of 27

Iterazioni: While w h i l e x >0: x=x 1; p r i n t ( x ) ; p r i n t ( f i n e ) ; può essere pensato mentalmente come segue (se assumete l esistenza di un magico comando vai all istruzione x) 1 i f x >0: 2 x=x 1; 3 p r i n t ( x ) ; 4 v a i a l l i s t r u z i o n e 1 5 p r i n t ( f i n e ) ; Lab3 @ Progr. I 2012/2013 18 of 27

Iterazioni: While w h i l e cond : comandi ripete comandi fino a che cond è vera: da 0 volte se cond è inizialmente falsa a infinite se rimane sempre vera w h i l e True : p r i n t ( redrum ) ; Utilizzate la combinazione di tasti Ctrl C per uscire da uno script che non termina Lab3 @ Progr. I 2012/2013 19 of 27

Iterazioni: For f o r x i n ITERABILE : comandi ripete comandi per ogni elemento di ITERABILE: ad ogni iterazione x assume il valore dell elemento corrente di ITERABILE. Esempi: f o r x i n [ 1, 4, 5 ] : p r i n t ( x +1); equivale a x=1;print(x+1);x=4;print(x+1);x=5;print(x+1); somma=0; f o r x i n range ( 0, 5 ) : somma+=x ; p r i n t (somma) il secondo esempio calcola la somma dei primi 4 numeri Lab3 @ Progr. I 2012/2013 20 of 27

Esempio Creare uno script max.py che legge n numeri naturali dall utente (con n una variabile inizializzata a piacere all interno dello script) restituisce il maggiore dei numeri inseriti Lab3 @ Progr. I 2012/2013 21 of 27

Esempio: Soluzione Creare uno script max.py che legge n numeri naturali dall utente (con n una variabile inizializzata a piacere all interno dello script) restituisce il maggiore dei numeri inseriti massimo=? n=3 f o r i i n range ( 0, n ) : x=i n t ( r a w i n p u t ( I n s e r i s c i un numero : ) ) ; i f x > massimo : massimo = x ; Lab3 @ Progr. I 2012/2013 22 of 27

Esempio: Soluzione Creare uno script max.py che legge n numeri naturali dall utente (n una variabile inizializzata a piacere all interno dello script) restituisce il maggiore dei numeri inseriti massimo= 1 n=3 f o r i i n range ( 0, n ) : x=i n t ( r a w i n p u t ( I n s e r i s c i un numero : ) ) ; i f x > massimo : massimo = x ; Lab3 @ Progr. I 2012/2013 23 of 27

Esempio Creare uno script ricercacerta.py che definisce la lista valori=[9,5,3,4,1,2,6,8,7]; chiede un numero positivo minore di 10 all utente restituisce l indice del numero nella lista (notate che siamo certi di trovare il numero nella lista) vogliamo che il programma esamini gli elementi della lista da sinistra a destra e che non esamini più elementi del dovuto Lab3 @ Progr. I 2012/2013 24 of 27

Esempio: Soluzione Creare uno script ricercacerta.py che chiede un numero positivo minore di 10 all utente restituisce l indice del numero nella lista [9,5,3,4,1,2,6,8,7] n=3 l i s t a = [ 9, 5, 3, 4, 1, 2, 6, 8, 7 ] ; x=i n t ( r a w i n p u t ( I n s e r i s c i x. 0<x <10: ) ) ; t r o v a t o=f a l s e i =0; w h i l e t r o v a t o==f a l s e : i f l i s t a [ i ]==x : t r o v a t o=true ; p r i n t ( i l numero e i n p o s i z i o n e %d % i ) ; i +=1; Lab3 @ Progr. I 2012/2013 25 of 27

Esercizi 1 Creare uno script factorial.py che chiede all utente di inserire un numero naturale controlla che il numero inserito sia maggiore di 0 stampa il fattoriale del numero, es. 4!=4*3*2=24 2 creare uno script tabelline.py che calcola le tabelline dei primi 10 numeri. L output deve essere della forma x*y=xy (con 1 x 10, 1 y 10): es. 4*6=24 3 Creare uno script verifyrand.py che simula n volte il lancio di un dado e stampa le frequenze con cui ciascuna faccia del dado è uscita verificate a occhio se, per n sufficientemente grande, il nostro dado virtuale è truccato esempio di output: Dopo 10000 tiri, ecco il numero di volte che ogni faccia del dado e uscita: [1691, 1620, 1703, 1664, 1726, 1596] Lab3 @ Progr. I 2012/2013 26 of 27

Esercizi 1 Creare uno script orderlist.py che chiede all utente di inserire n numeri (n fissato all interno dello script) restituisce la lista, ordinata numericamente, dei numeri inseriti Lab3 @ Progr. I 2012/2013 27 of 27