Gioco e programmazione

16
GIOCO E PROGRAMMAZIONE DISCLIC Facoltà di Lingue e Letterature Straniere Giornata di studio a conclusione del ciclo di incontri sul gioco applicato alla didattica delle lingue e alla tecnologia Didattica 2.gioc0 Università degli Studi di Genova – DIST ing. Lidia Stanganelli

description

DISCLIC Facoltà di Lingue e Letterature Straniere Giornata di studio a conclusione del ciclo di incontri sul gioco applicato alla didattica delle lingue e alla tecnologia Didattica 2.gioc0. Gioco e programmazione. Università degli Studi di Genova – DIST . ing. Lidia Stanganelli. - PowerPoint PPT Presentation

Transcript of Gioco e programmazione

Page 1: Gioco e programmazione

GIOCO E PROGRAMMAZIONE

DISCLICFacoltà di Lingue e Letterature StraniereGiornata di studio a conclusione del ciclo di incontri sul gioco applicato alla didattica delle lingue e alla tecnologia

Didattica 2.gioc0

Università degli Studi di Genova – DIST ing. Lidia Stanganelli

Page 2: Gioco e programmazione

Sommario Introduzione Programmazione e gioco: quale

comune denominatore? Comparazione di alcuni linguaggi di

programmazione: l’istruzione C=A+B Affinità tra linguaggi dichiarativi e

gioco. Un esempio: il prolog Conclusioni

Page 3: Gioco e programmazione

Introduzione Esistono in rete una moltitudine di giochi

didattici per l’apprendimento di diverse discipline (matematica, lingue etc.)

Giochi per imparare i linguaggi di programmazione?

In questo lavoro si vuole realizzare uno studio su come si possa trasmettere la conoscenza relativa alla programmazione attraverso una attività “ludica” come quella del gioco.

Page 4: Gioco e programmazione

Programmazione e gioco: il Logo

È possibile pensare a diversi linguaggi di programmazione per avvicinarsi al mondo dei computers, non solo da semplici utenti ma da “progettisti” in grado di realizzare tools (giochi)

Negli ultimi cinquant’anni per trasmettere la disciplina della programmazione in modo semplice sono stati utilizzati linguaggi come il Logo.

Logo è un linguaggio di programmazione per l’insegnamento di molte discipline, dalla matematica alla logica, dalla musica al disegno e naturalmente la programmazione stessa.

Page 5: Gioco e programmazione

Programmazione e gioco: il Prolog

Un linguaggio che si pone ad un alto livello di espressività logico-matematico è il Prolog. È un linguaggio al quale possono avvicinarsi tutti gli individui che abbiano le capacità logico-matematiche di descrizione dei problemi.

Infatti al contrario dei linguaggi procedurali (come Pascal, Fortran, C, etc.), e dei linguaggi ad oggetti (C++, Java, Ruby etc.), Prolog è un linguaggio di alto livello più vicino al modo di pensare di un essere umano.

ha l'enorme vantaggio di essere sintetico, e fortemente espressivo.

Page 6: Gioco e programmazione

Che relazione c’è tra gioco e programmazione?

In realtà i linguaggi di programmazione e le attività di un gioco sono molto simili, intanto perché entrambe le attività sono costituite da un algoritmo (una sequenza di azioni elementari eseguite allo scopo di raggiungere un determinato obiettivo) ed anche per il risvolto di gratificazione psicologica che anche la programmazione, al pari del gioco, fornisce: chi scrive un buon programma e lo vede funzionare è gratificato allo stesso modo con il quale si sente soddisfatto dopo aver superato un livello di un gioco di abilità!

Sia in gioco che la programmazione sono processi vicini anche perché hanno entrambi l’obiettivo di risolvere i problemi e di usare un linguaggio diverso da quello naturale.

Page 7: Gioco e programmazione

Quale linguaggio scegliere? Disseminare i concetti piuttosto che

uno o più linguaggi di programmazione.

Comparare diversi linguaggi è un lavoro impegnativo, per cui prendiamo una semplice istruzione e vediamo come viene rappresentata nei vari linguaggi.

Useremo un approccio pragmatico

Page 8: Gioco e programmazione

Un approccio comparato (1) Istruzione C=A+B Obiettivo: scegliere il linguaggio più

espressivo

Concetti da spiegare, pro e contro: Basic: n.ri linee, variabili. Semplice, vecchio, carenti

costrutti linguistici C: direttive processore…, per programmatori esperti

Page 9: Gioco e programmazione

Un approccio comparato (2) Istruzione C=A+B Obiettivo: scegliere il linguaggio più

espressivo

Concetti da spiegare, pro e contro: Java: classi e molto altro. Vasta libreria di

classi….scoraggiante Prolog: è il miglior linguaggio a livello concettuale

Page 10: Gioco e programmazione

…in definitiva

Page 11: Gioco e programmazione

Un esempio: il prolog (1) Un semplice esempio di funzionamento di tale

linguaggio, e come per gioco l’apprendimento delle potenzialità e dei primi rudimenti.

Scriviamo un programma Prolog che simuli l’imbarco delle carrozze di un treno su di un traghetto per superare lo Stretto di Messina

Il programma deve dare la possibilità di effettuare le seguenti operazioni mediante opportuni predicati: Inserimento di una o più carrozze Estrazione di una o più carrozze Ricerca della carrozza più vecchia Calcolo del numero medio di posti a sedere

Le informazioni relative alla singola carrozza sono: un codice seriale il numero di posti a sedere l’anno di costruzione

Page 12: Gioco e programmazione

Un esempio: il prolog (2) Si consideri il traghetto come una pila, nella quale le carrozze entrano ed escono dallo

stesso varco, quindi la politica di inserimento ed estrazione delle carrozze è LIFO (last in first out).

La carrozza viene rappresentata con un fatto prolog del tipo: carrozza(Cod ,Posti, Anno) Di seguito si mostrano le soluzioni dei quattro punti suddetti. L’operazione di inserimento di una o più carrozze viene effettuata dal predicato:

push(Lista1, Lista2, Lista3). Questa operazione permette di inserire gli elementi della Lista1 in testa alla Lista2. Lista3, conterrà

il risultato della chiamata push. L’operazione di estrazione di una o più carrozze viene effettuata dal predicato:

pop(N, Lista1, Lista2). Questa operazione permette di estrarre N elementi dalla testa della pila Lista1. Lista2, conterrà il

risultato della chiamata pop, cioè la lista di carrozze estratte da Lista1. L’operazione che ricerca la carrozza con l’anno di costruzione più vecchio è eseguita

dal predicato: search(Lista, CarrVecchia)

Questa operazione effettua la scansione di tutta la Lista confrontando gli anni di costruzione di ogni elemento carrozza(Cod ,Posti, Anno) e scrivendo nella variabile di uscita CarrVecchia quella con l’anno di costruzione più piccolo.

L’operazione che calcola il numero medio di posti a sedere tra le carrozze del traghetto è: seats_average(Lista,Media)

Questa operazione effettua la divisione tra il numero dato dalla somma di tutti i posti di tutte le carrozze e il numero di carrozze presenti nell’argomento Lista. Il risultato è restituito nella variabile Media.

Page 13: Gioco e programmazione

Un esempio: il prolog (3) La lista è una metafora di come si potrebbe

simulare un gioco costruttivo nel quale si tratta di comporre oggetti complessi a partire da oggetti semplici (nell’esempio il concetto di carrozza è l’elemento semplice il concetto di treno è l’elemento complesso).

Inoltre agli studenti può essere insegnato il meccanismo del comporre e scomporre il treno attraverso delle operazioni elementari (inserisci in lista ed estrai dalla lista che corrisponde a stacca e attacca la carrozza). Una volta progettata l’interfaccia di tale gioco gli studenti potranno comprendere strutture del linguaggio anche complesse. Un gioco di composizione un po’ come quello del Lego.

Page 14: Gioco e programmazione

Conclusioni Qualcuno ha detto "se tutto quello che hai è un martello allora ogni

problema ti sembrerà un chiodo". L’obiettivo è quello di ampliare il repertorio di strumenti a

disposizione per costruire programmi di qualità e che quindi si ha bisogno di conoscere più linguaggi, ma da dove cominciare? Ovviamente a partire dal martello e cioè da un linguaggio semplice.

Spesso la prima scelta, quella più alla moda, è sui linguaggi imperativi. Questi sono importanti per insegnare concetti e per le classi di problemi che risolvono. Complicazione in termini di concetti da insegnare e di tempo, inoltre gli studenti devono mostrare un profondo radicamento nella conoscenza del linguaggio prima di poter scrivere qualcosa senza errori.

La seconda scelta, meno frequente, potrebbe essere un linguaggio di scripting , ma non a studenti alle prime armi n quanto non sono buoni linguaggi dal punto di vista della "pulizia" delle strutture logiche.

La migliore scelta è utilizzare un linguaggio dichiarativo, in quanto conserviamo lo stesso livello di astrazione del modo in cui pensiamo il concetto: la somma in questo caso ed impariamo giocando. Un linguaggio che preservi l'astrazione concettuale, è il Prolog. Esso è realmente uno strumento potente per la risoluzione dei problemi

Page 15: Gioco e programmazione

Grazie per l’attenzione

Didattica 2.gioc0

Page 16: Gioco e programmazione

Any Questions ?