PLS Programma Operativo Regionale 2007/2013 ALGO…DOG (giochiamo con l’informatica) RISOLUZIONE DI UN PROBLEMA Vediamo due semplici esempi: Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 2 ESEMPIO 1 : Cercare un nome e la sua posizione, all’interno di una lista di n nomi ordinati. I passi necessari alla risoluzione del problema sono: 1.Costruire un modello matematico che permetta di risolvere il problema 2.Scomporre il modello in passi semplici e direttamente eseguibili 3.Costruire l’algoritmo risolutivo 4.Tradurlo nel linguaggio di programmazione scelto Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 3 Il problema chiede di verificare che il nome sia nella lista ed in caso positivo di darne la posizione. Si deve costruire un modello matematico che lo risolva: Algoritmo 1 (ricerca sequenziale): Si possono confrontare direttamente i nomi in modo sequenziale ma, se il nome cercato è uno degli ultimi e la lista è molto lunga, ciò comporta un gran numero di operazioni. In alternativa Algoritmo 2 (ricerca binaria): Confrontando il nome da cercare con il termine centrale della lista, si possono avere tre possibilità: a) Il nome coincide con l’elemento centrale: si è trovata la posizione ed il problema è risolto b) Il nome precede l’elemento centrale: si elimina la seconda metà dei nomi e si ripete la procedura c) Il nome segue l’elemento centrale: si elimina la prima metà dei nomi e si ripete la procedura d) Si ripetono i punti a), b), c) fino a quando il nome cercato non coincide con l’elemento centrale Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 4 ESEMPIO: Dato il seguente elenco: ADA; BARBARA; CARLO; DOMENICO; ELISA; LORENZA; MARIA; NICOLA , si vuole sapere la posizione relativa al nome MARIA. ALGORITMO SEQUENZIALE ALGORITMO BINARIO IL COMPUTER IL COMPUTER 1. Prende il primo nome e lo confronta con quello cercato: ADA≠MARIA 2. Prende il secondo nome e lo confronta con quello cercato: BARBARA≠MARIA Calcola la posizione centrale 4 1. Confronta il nome di posto 4 con il nome cercato: DOMENICO≠MARIA e DOMENICO precede MARIA Elimina i primi quattro nomi ed a partire da 5 a 8 ricalcola la posizione centrale 6 ……………………….. 6. Prende il sesto nome e lo confronta con quello cercato: LORENZA≠MARIA 7. Prende il settimo nome e lo confronta con quello cercato: MARIA = MARIA Comunica che il nome cercato occupa la posizione 7 su 8 2. Confronta il nome di posto 6 con il nome cercato: LORENZA≠MARIA e LORENZA precede MARIA Elimina i primi sei nomi ed a partire da 7 a 8 ricalcola la posizione centrale 7 3. Confronta il nome di posto 7 con il nome cercato: MARIA = MARIA Comunica che il nome cercato occupa la posizione 7 su 8 Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 5 Come si fa a scegliere tra i due algoritmi costruiti? Uno dei parametri che permetterà di scegliere tra i due è l’EFFICIENZA . L’EFFICIENZA di un algoritmo dipende dal numero di operazioni richieste per ottenere il risultato. Dall’esempio fatto si può vedere che: • l’algoritmo sequenziale prevede un numero di confronti della stessa grandezza del numero di elementi dati (per avere la posizione occupata dal nome MARIA sono stati fatti 7 confronti avendo in totale 8 elementi) •L’algoritmo binario prevede un numero di confronti molto più piccolo (sono stati fatti solo 3 confronti) Ripetendo l’operazione con l’aumentare dei numeri si vede che l’algoritmo binario ha un numero di confronti pari a log2n. Dalla tabella seguente si evince quanto sia più efficiente l’algoritmo binario n. elementi 8 16 32 64 128 ….. 1024 2048 4096 8192 16384 n ALG. SEQ. 8 16 32 64 128 ….. 1024 2048 4096 8192 16384 n ALG. BIN. 3 4 5 6 7 ….. 10 11 Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 12 13 14 log2n 6 Si è scelto di utilizzare la seconda tecnica e quindi si passa a costruire l’algoritmo risolutivo, cioè in una serie finita di istruzioni non ambigue. Una volta costruito, l’algoritmo risolverà non solo il problema di partenza ma, al cambiare del nome e del numero di elementi della lista, tutte le ricerche simili Si devono perciò definire gli oggetti matematici da utilizzare: 1. l’elenco dei nomi è definito da una variabile con indice E(i) con i=1,…,n 2. NOME indica l’elemento di cui si deve trovare la posizione 3. POS indica la posizione dell’elemento da cercare 4. Si ha poi bisogno di una serie di postazioni di memoria necessarie per i calcoli e quindi si useranno le variabili: INIZIO, FINE, M. Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 7 Algoritmo Binario leggi NOME, n metti in i il valore 0 Ripeti n volte metti in i il valore i +1 leggi ELENCO(i) Fino a qua metti in INIZIO il valore 1 metti in FINE il valore n metti in POS il valore 0 Ripeti metti in M il valore (INIZIO+FINE)/2 Se NOME = ELENCO(M) allora metti in POS il valore M stampa POS fine Altrimenti Se NOME < ELENCO(M) allora metti in FINE il valore M-1 Altrimenti metti in INIZIO il valore M+1 Fino a quando INIZIO FINE Le istruzioni: • leggi e stampa sono istruzioni di ingresso e uscita dei dati • metti in è un’istruzione di assegnazione • Ripeti …. Fino a qua è un’istruzione che, mediante un controllo, permette di rifare le stesse operazioni un certo numero di volte o fino a quando non si verifica una certa condizione • Se …. Allora …. Altrimenti è una istruzione di scelta che permette di effettuare operazioni diverse al cambiare del verificarsi della condizione Dopo aver costruito l’algoritmo lo si dovrà provare e poi tradurre in un linguaggio di programmazione per poterlo far eseguire da un computer Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 8 ESEMPIO 2 : Costruire un gioco che permetta di fare delle somme con un aspetto grafico adatto a dei bambini Il nostro piccolo animale: •Si muoverà •Ci chiederà i numeri •Ci darà il risultato della somma Risolviamo tale problema utilizzando il linguaggio di programmazione didattico Scratch Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 9 SCRATCH: “immagina, programma, condividi” É una piattaforma virtuale che offre la possibilità di emulare un linguaggio di programmazione e che consente di elaborare storie interattive, giochi, animazioni. Scratch mette a disposizione gli “Sprite”: personaggi che svolgono le diverse operazioni richieste. Scratch offre diversi sfondi dove ambientare le proprie creazioni. Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 10 Queste sono tutte le categorie presenti in scratch: Ne osserveremo le più importanti. Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 11 Situazioni Questi “mattoncini”, al verificarsi della condizione definita, ci permettono di iniziare una determinata serie di operazioni. Esempio: Questo blocco consente di eseguire alcune operazioni dopo aver premuto il tasto spazio. Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 12 Controllo Queste strutture consentono di controllare e ripetere delle azioni. Esempio: Questo blocco permette di compiere un’operazione solo se una determinata condizione è soddisfatta. La condizione andrà inserita nell’esagono vuoto. Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 13 Movimento Questi elementi permettono il movimento del soggetto (sprite). Esempio: Questo blocco consente allo sprite di avanzare di 10 passi. Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 14 Aspetto Questi elementi permettono di modificare l’aspetto degli sprite. Esempio: Questo blocco consente di aumentare la dimensione dello sprite. Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 15 Sensori Definiscono delle condizioni che consentono agli sprite di compiere determinate azioni. Esempio: È una condizione che viene soddisfatta quando lo sprite tocca il bordo. Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 16 Operatori Permettono di svolgere diverse operazioni matematiche. Esempio: Questo blocco esegue la somma di due numeri. Video somma Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 17 Progetti realizzati con Scratch NOME COGNOME NICKNAME PROGETTO/I Ascione Antonio ascio97 Star Wars Piscinnis Fisica Liguoro Vincenzo vizzforzanapoli Gattino che fa goal! Pignalosa Camillo 19max96 The last flight of IVB plane Pinbal01 Planet Maze Labirinto1 AlgoDog Reccia Luca lucareccia Multiplayer race hitTheBat tennis con mario AlgoDog Scognamiglio Mauro mauro24 fish war MAURO’S FROGGER CATEINSTEIN Filosa Veronica Veronica35 Questionario ;) Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 18 Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 19 Partecipanti al PLS ALUNNI Giovanni ACAMPORA Raffaella ACAMPORA Antonio ASCIONE Gennaro COLOMBA Luciana COZZOLINO Maria Rosaria D’AMBROSIO Ilaria FALANGA Veronica FILOSA Francesco FORMISANO Antonio GAMEN Giulia GAMEN Vincenzo LIGUORO Vincenzo MAIELLO Maria MARINO’ Emanuela MASUCCI Camillo PIGNALOSA Luca RECCIA Luisabel ROTONDO Gennaro RUSSO Sergio SANNINO Mauro SCOGNAMIGLIO DOCENTI – Istituto Tilgher: Prof.ssa Norina Di Fiore Prof.ssa Rita Punzo Piano Lauree Scientifiche - Liceo Scientifico "Adriano Tilgher" - Ercolano (NA) 20