Laboratorio di Python

Размер: px
Начинать показ со страницы:

Download "Laboratorio di Python"

Транскрипт

1 Algoritmo, sulle liste Università di Bologna 3 e 5 aprile 2013

2 Sommario Correzione esercizi 1 Correzione esercizi 2 3 4

3 Correzione Correzione esercizi scrivere e documentare un programma con un menu dove: la funz prende in input una tupla e restituisce il primo valore presente nella lista che massimizzi la distanza dal valore m=(max+min)/2 la funz prende in input due tuple e restituisce la somma delle due tuple solo se le tuple hanno lunghezza uguale la funz prende in input tre punti A(x1,y1) B(x2,y2) C(x3,y3) e restituisce True se questi punti possono formare un triangolo. False altrimenti la funz prende in input due liste e restituisce la lista dei valori appartenenti ad entrambe le tuple per uscire dal programma

4 Correzione Correzione esercizi def menu_2(): print("seleziona 1...") print("seleziona 2...") print("seleziona 3...") print("seleziona 4...") print("seleziona 5...") #ricevo la scelta# x=int(input("digita la tua scelta \t")) while 1<=x<=5: if x==1:#caso sel:1# A=tuple(input("inserisci la tupla"))#ricevo i dati# def sel1_(b): for i in range(len(b)): if B[i] is max(b) or B[i] is min(b): #il valore che massimizza e' per forza o il minimo o il massimo# print(b[i]) return B[i] sel1_(a) x=int(input("digita la tua scelta \t")) La struttura di questo codice come vi sembra? Cosa accade con (6,10)?

5 Correzione Correzione esercizi o def triangle(x,y,z): l1=lenght(x,y) l2=lenght(y,z) l3=lenght(x,z) if l1<l2+l3: return True else: return False Cosa manca?

6 Fase di progettazione La fase di progettazione, consistente nel determinare il metodo per la soluzione problema. Le sequenza di operazioni finite che descrivono il procedimento di soluzione a un determinato problema é detto algoritmo. L algoritmo non é legato al linguaggio di programmazione che si utilizzerá per implementare la soluzione.

7 Algoritmo Deterministico Un algoritmo é definito da una lista finita di istruzioni che specificano il procedimento esatto da eseguire per ottenere un determinato risultato. In ogni momento di esecuzione dell algoritmo si sa esattamente quale sia l operazione successiva da eseguire e quale sia lo stato del sistema.

8 Esempi di algoritmo Problema: Date due matrici calcolarne il prodotto. Algoritmo risolutivo: 1 Memorizzare le matrici A n,k, B k,m 2 Verificare che il numero di colonne della prima, sia uguale al numero di righe della seconda: Se vero Allora calcolare ogni elemento m r,c della matrice M n,m come: m k r,c= i=0 a r,i b i,c, calcolato per ogni 1 r n e per ogni 1 c m. Se Falso Rilevo un errore e lo memorizzo come risultato 3 Restituisco il risultato

9 Passare dall algoritmo alla sua implementazione Per fare questo passaggio bisogna prendere in considerazione alcune informazioni: La rappresentazione che si sta utilizzando per salvare i dati. Come rappresento le matrici? I comandi e le funzioni che ho a mia disposizione per la risoluzione del mio problema. Riconoscere e scomporre in sotto-problemi piú facili. (es. [Se vero] non é altro che il prodotto scalare tra due vettori eseguito m*n volte)

10 La nostra rappresentazione La matrice A n,m é una sequenza di sequenze cosí rappresentata: R i = (a i,1,, a i,m ) La matrice risulta essere quindi: A n,m = R 1,, R n

11 Quindi moltiplicare le due matrici significa Abbiamo la matrice A n,m rappresentata come: A Ri = (a i,1,, a i,m ) A n,m = A R1,, AR n e la matrice B m,r rappresentata come: B Ri = (b i,1,, b i,r ) quindi: B m,r = B R1,, B Rm Eseguire il prodotto di AxB significa costruire la seguente matrice C n,r : Ogni riga della nostra matrice avrá la seguente struttura dove B[r] é la nostra colonna: C Rk = A Rk Ḃ[1],, A Rk Ḃ[r] e quindi C n,r = C R1, C Rn

12 Come calcolare tutte le C Rk? Per calcolare C Rk ad esempio dobbiamo eseguire queste operazioni: 1 per tutti gli i compresi tra 0 e le r 1 colonne di B: 2 Si inserisce nella sequenza al posto i esimo il valore di C Rk [i] che é dato dal risultato del prodotto scalare tra A Rk Ḃ[i] Dobbiamo poi calcolare tutte le n-righe della nostra matrice. Quindi: 1 per tutti i k compresi tra 0 e le n 1 righe di A: 2 si inserisce nella sequenza che rappresenta le righe della matrice la k esima riga calcolata come abbiamo visto al punto precedente.

13 Come calcolare tutte le C Rk? In definitiva devo usare due cicli, uno dentro l altro (annidati): 1 per tutti i k compresi tra 0 e le n 1 righe di A: 1 per tutti gli i compresi tra 0 e le r 1 colonne di B: 2 Si inserisce nella sequenza al posto i esimo il valore di C Rk [i] che é dato dal risultato del prodotto scalare tra A Rk xb[i] 2 si inserisce nella sequenza che rappresenta le righe della matrice la k esima riga calcolata come abbiamo visto al punto precedente.

14 Le funzioni a mia disposizione Abbiamo giá implementato il prodotto scalare tra due vettori Per una maggiore facilitá nella gestione delle colonne nella matrice B possiamo calcolarne la trasposta. (la matrice trasposta ha come generico elemento di indici (i,j) l elemento di indici (j,i) della matrice originaria.)

15 Calcolo della matrice trasposta def trasposta(v): a=[] #sequenza in cui memorizzo la mia trasposta for i in range (0, len(v[0])): # ciclo sugli elementi della colonna c=[] for j in range(0, len(v)): # ciclo su tutte le righe c.append(v[j][i]) #elemento (i,j) che diviene l'elemento (j,i) a.append(c) #inserisco la riga alla mia matrice trasposta a return a

16 Calcolare AxB Ecco come risulta la sequenza di istruzioni finali. 1 verifico se sia possibile eseguire la moltiplicazione (funzione giá implementata) Se falso Restituisco errore Se Vero Eseguo le seguenti istruzioni: 1 Calcolo la trasposta di B (B T ) 2 per tutti i k compresi tra 0 e le n 1 righe di A: 1 per tutti gli i compresi tra 0 e le r 1 righe di B T : 2 Si inserisce nella sequenza al posto i esimo il valore di C Rk [i] che é dato dal risultato del prodotto scalare tra A Rk xb T R i 3 si inserisce nella sequenza che rappresenta le righe della matrice la k esima riga calcolata come abbiamo visto al punto precedente. 4 Restituisco la sequenza che mi rappresenta la matrice

17 Esprimiamo in python questo algoritmo..

18 TxV Correzione esercizi def molt_mat(t,v): if se_molt(t,v): # se posso eseguire la molt c=[] #sequenza di output r=trasposta(v) #trasposta di r for i in range(0,len(t)): rig=[] for j in range(0, len(r)):#ciclo sulle righe della trasposta k=molt_vet(t[i],r[j]) #prodotto scalare rig.append(k) #inseriesco elemento nella riga c.append(rig) #inserisco la riga in c return(c) #restituisco il ris else: return(false)

19 o Correzione esercizi Si scriva la funzione iterativa che preso come argomento una sequenza restituisca la sequenza dove tutti gli elementi adiacenti uguali siano stati ridotti a un solo elemento. Esempio: rimdup([1,2,3,3,3,2,4,4,3]) [1,2,3,2,4,3]

20 Soluzione Correzione esercizi def rimdup(s): if len(s)<=1: return(s) else: o=[] conf=s[0] o.append(conf) for i in range(1,len(s)): if conf<>s[i]: conf=s[i] o.append(conf) return o

21 Correzione esercizi Scrivere e documentare le funzioni che risolvano i seguenti problemi: 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 come parametro mi dica se questa é una terna pitagorica o meno 3 Definire una funzione che presa un sequenza mi restituisca tutti i possibili suffissi di tale sequenza (es. (1,4,3) (), (3,), (4,3), (1,4,3)) usare l iterazione e la ricorsione 4 Definire una funzione che presa un sequenza e un parametro intero mi restituisca tutti i possibili suffissi di tale sequenza fino alla lunghezza definita dal parametro intero (es. preso (1,4,3), 1 (), (3,)) usare l iterazione e la ricorsione Inviate gli esercizi svolti a: [email protected]

22 Cosa abbiamo fatto? 1 Correzione esercizi 2 3 4

Laboratorio di Python

Laboratorio di Python 25 marzo 2015 Sommario 1 2 Esercizi a casa Scrivere un unico programma, che attraverso un menù di selezione restituisca i risultati delle funzioni che seguono, senza uscire dal programma se non selezionando

Подробнее

Laboratorio di Python

Laboratorio di Python 19 marzo 2015 Sommario 1 2 3 4 Esercizi Scrivere e documentare le funzioni che risolvano i seguenti problemi: 1 Definire una funzione che presa una sequenza come parametro restituisca il valore della media

Подробнее

Laboratorio di Python

Laboratorio di Python Problem solving, Ricorsione, Università di Bologna 13 e 15 marzo 2013 Sommario 1 2 3 4 Errore di semantica Esercizio def vocali(s): voc='' for c in s: if c in 'aeiou': voc=voc+c return voc Cerchiamo di

Подробнее

Laboratorio di Python

Laboratorio di Python , Input da tastiera, Iterazione incondizionata 7 marzo 2014 Sommario 1 2 3 Outline 1 2 3 Definizione di funzione import modulo Si importa il modulo specificato def nome_f(par 1,, par n ) : Si definiscono

Подробнее

Laboratorio di Python

Laboratorio di Python Laboratorio di Python Matrici con Liste Lab09 5 Aprile 2017 Outline Correzione esercizi per oggi Matrici Teoria Esercizi Esercizi per casa Esercizio 1 per casa Scrivere una funzione che verifica se una

Подробнее

Laboratorio di Python

Laboratorio di Python Istruzione di condizione, Input da tastiera, Università di Bologna 6 e 8 marzo 2013 Sommario 1 Tipi di errore e Debugging 2 3 4 Outline Tipi di errore e Debugging 1 Tipi di errore e Debugging 2 3 4 Esercizio

Подробнее

Laboratorio di Python

Laboratorio di Python Correzione esercizi Alcuni moduli utili, Esercizi vari Università di Bologna 10 e 12 aprile 2013 Sommario Correzione esercizi 1 Correzione esercizi 2 3 4 Esercizi Correzione esercizi Scrivere e documentare

Подробнее

Laboratorio di Python

Laboratorio di Python Problem solving, Ricorsione, 14 marzo 2014 Sommario 1 2 3 4 Sintassi ed Esempi Esercizi Lunedì il numero di studenti che avevano consegnato gli esercizi era 13. Martedì il numero di esercizi ricevuti,

Подробнее

Laboratorio di Python

Laboratorio di Python Iterazione determinata, 12 marzo 2015 Sommario 1 2 3 Sintassi ed Esempi 4 Input da tastiera Sintassi = raw_input('stringa descrittiva') #versione 2.* = input('stringa descrittiva') #versione

Подробнее

Laboratorio di Python

Laboratorio di Python Correzione esercizi Alcuni moduli utili, Esercizi vari Università di Bologna 4 aprile 2014 Sommario Correzione esercizi 1 Correzione esercizi 2 3 4 Esercizi Correzione esercizi Scrivere e documentare le

Подробнее

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi

Подробнее

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

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Подробнее

laboratorio di python

laboratorio di python laboratorio di python iterazione in python 22 Marzo 2019 1/31 Correzione esercizi per oggi esercizio 1 per casa Scrivere una funzione che restituisce True se una stringa passata come parametro è palindroma

Подробнее

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso Domanda 1 1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso x n+1 = x n f(x n), n = 0, 1, 2,... K dove x 0 è il punto iniziale, f(x) = x 3 cos(x) e K è una costante assegnata.

Подробнее

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura

Подробнее

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Подробнее

Laboratorio di Python (con Linux)

Laboratorio di Python (con Linux) Indeterminata,,,... Università di Bologna 14, 16 marzo 2012 Sommario 1 2 3 4 5 Modularità Quando si deve fare un programma complicato è meglio suddividerlo in più parti. Per ridurre la complessità (più

Подробнее

Laboratorio di Python

Laboratorio di Python Laboratorio di Python Iterazione determinata Lab05 17 Marzo 2017 Variazione data laboratorio! Mercoledì 22 marzo ci sarà laboratorio Mercoledì 3 maggio non ci sarà laboratorio (si terrà lezione regolare)

Подробнее

Laboratorio di Python

Laboratorio di Python Laboratorio di Python Esercizi di debug Lab07 27 Marzo 2018 Outline Correzione esercizi per oggi Debug Strategia Esercizi di debug Esercizi per casa Outline Correzione esercizi per oggi Debug Strategia

Подробнее

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Seconda lezione a Python Dottore Paolo Parisen Toldin - [email protected] Dottoressa Sara Zuppiroli - [email protected] L'importanza di capire Perché non dobbiamo dichiarare

Подробнее

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica AlgoBuild: Strutture iterative e selettive Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 AlgoBuild: Strutture iterative

Подробнее

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Подробнее

Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly

Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly Scrivere il codice ARM che implementi le specifiche richieste e quindi verificarne il comportamento usando il simulatore

Подробнее

Laboratorio di Python

Laboratorio di Python Laboratorio di Python Code Lab13 28 Aprile 2017 Outline Correzione esercizi per oggi Code Teoria Esercizi Esercizi per casa Esercizio 1 per casa Scrivere una funzione che determina se uno studente può

Подробнее

Aritmetica dei Calcolatori 2

Aritmetica dei Calcolatori 2 Laboratorio di Architettura 1 aprile 2011 1 Operazioni bit a bit 2 Rappresentazione binaria con segno 3 Esercitazione Operazioni logiche bit a bit AND OR XOR NOT IN OUT A B A AND B 0 0 0 0 1 0 1 0 0 1

Подробнее

INFORMATICA. Strutture iterative

INFORMATICA. Strutture iterative INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale

Подробнее

Progetto Matlab N 2. Calcolo Numerico 6 CFU. Corso di Laurea in Ingegneria delle Comunicazioni 31/05/2014

Progetto Matlab N 2. Calcolo Numerico 6 CFU. Corso di Laurea in Ingegneria delle Comunicazioni 31/05/2014 Progetto Matlab N 2 Calcolo Numerico 6 CFU Corso di Laurea in Ingegneria delle Comunicazioni 31/05/2014 Procedimento 1. Scrivere una function che implementi il prodotto matrice-vettore AX con A matrice

Подробнее

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

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 Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)

Подробнее

Fondamenti di Informatica

Fondamenti di Informatica Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile

Подробнее

Laboratorio di Python

Laboratorio di Python , Istruzione di condizione 3 marzo 2015 Sommario 1 Outline 1 Scrivere uno script 1 Aprire IDLE di Python. 2 Dal menù del programma aprire un nuovo file. 3 Scrivere la funzione. 4 Salvare ed eseguire il

Подробнее

E17 Esercizi sugli Array in Java

E17 Esercizi sugli Array in Java E17 Esercizi sugli Array in Java Esercizio 1 (esercizio 9.1 del libro di testo). Implementare un metodo statico di nome stringacorta che prende come parametro un array di oggetti String e che restituisce

Подробнее

Esercizi in Python. Docente: Domenico Daniele Bloisi

Esercizi in Python. Docente: Domenico Daniele Bloisi Esercizi in Python Docente: Domenico Daniele Bloisi http://profs.scienze.univr.it/~bloisi/asl/asl.html Esercizio 1 Utilizzare il linguaggio di programmazione Python per stampare a video la scritta "prima

Подробнее

Risoluzione di un problema

Risoluzione di un problema Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito

Подробнее

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

Cicli. S i a i = a 1 + a 2 + a a n Cicli Esprimono in modo compatto e generali l'esecuzione di uno stesso blocco di codice per più volte Anche in matematica sono presenti operatori che eseguono di fatto un ciclo (ad es. sommatoria e produttoria)

Подробнее

Laboratorio di Python

Laboratorio di Python Correzione esercizi Alcuni moduli utili, Esercizi vari Università di Bologna 9 aprile 2015 Sommario Correzione esercizi 1 Correzione esercizi 2 3 4 Correzione esercizi Scrivere e documentare le funzioni

Подробнее

Informatica (A-K) 5. Algoritmi e pseudocodifica

Informatica (A-K) 5. Algoritmi e pseudocodifica Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Подробнее

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Подробнее

PROGRAMMAZIONE: Le strutture di controllo

PROGRAMMAZIONE: Le strutture di controllo PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l

Подробнее

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Подробнее

Calcolo Parallelo. Domanda. In particolare. Qual è l algoritmo parallelo. PROBLEMA: Prodotto Matrice-Vettore

Calcolo Parallelo. Domanda. In particolare. Qual è l algoritmo parallelo. PROBLEMA: Prodotto Matrice-Vettore Calcolo Parallelo Algoritmi Paralleli per il prodotto Matrice-Vettore Laura Antonelli PROBLEMA: Prodotto Matrice-Vettore Progettazione di un algoritmo parallelo per architettura MIMD a memoria distribuita

Подробнее

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive

Подробнее

CORSO DI LAUREA IN INGEGNERIA ELETTRICA

CORSO DI LAUREA IN INGEGNERIA ELETTRICA CORSO DI LAUREA IN INGEGNERIA ELETTRICA Informatica B anno accademico 2013-2014 Prof. Danilo ARDAGNA Esercitazione 05.06.2014 Esercizio 1. (Agenzia di viaggi - accesso ai file) Un'agenzia di viaggi possiede

Подробнее

Matrici. Matrici.h Definizione dei tipi. Un po di esercizi sulle matrici Semplici. Media difficoltà. Difficili

Matrici. Matrici.h Definizione dei tipi. Un po di esercizi sulle matrici Semplici. Media difficoltà. Difficili Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo del determinante Difficili Soluzione di sistemi lineari È veramente difficile? 1 Matrici.h

Подробнее

Programmare con MATLAB c Parte 5 Cicli: for e while

Programmare con MATLAB c Parte 5 Cicli: for e while Programmare con MATLAB c Parte 5 Cicli: for e while Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 La notazione due punti 2 Ciclo: for 3 Ciclo con controllo: while

Подробнее

Come scrivere bene codice? (1 di 1)

Come scrivere bene codice? (1 di 1) DIAGRMMI DI FLUSSO Come scrivere bene codice? (1 di 1) Prima di iniziare a scrivere un programma: Acquisire profonda comprensione del problema; Progettare un approccio per la risoluzione del problema.

Подробнее