🎯 Obiettivi del modulo
- Applicare concretamente le conoscenze acquisite nei moduli precedenti.
- Acquisire competenze nella progettazione, sviluppo e testing di un'applicazione software.
- Sviluppare capacità di collaborazione, organizzazione del lavoro, gestione del tempo e dei ruoli.
- Familiarizzare con strumenti di supporto alla programmazione: diagrammi di flusso, pseudocodice, debugging.
📚 Contenuti del modulo
1. Analisi del problema e stesura dei requisiti
- Cosa vuol dire “analizzare un problema”: esigenze, utenti finali, contesto d’uso.
- Come si scrive un documento dei requisiti: funzioni essenziali, optional, vincoli.
- Esempi: diario digitale, quiz interattivo, calcolatrice evoluta.
2. Scelta del linguaggio e degli strumenti
- Come scegliere il linguaggio (es. Python per semplicità e sintassi leggibile).
- IDE e ambienti consigliati: Thonny, Replit, Visual Studio Code, Jupyter.
- Librerie utili (Tkinter per GUI,
random
,datetime
,math
).
3. Progettazione e pianificazione
- Pseudocodice: che cos’è e come scriverlo.
- Diagrammi di flusso: come rappresentano visivamente la logica.
- Divisione del lavoro in fasi: input, elaborazione, output, salvataggio dati, ecc.
4. Implementazione graduale
- Sviluppo incrementale: partire dal nucleo minimo funzionante.
- Debugging continuo: testare ogni passaggio.
- Versioni successive: aggiunta di funzioni extra, miglioramenti grafici, validazione input.
🛠️ Attività pratiche
🔹 Attività 1: Tracce guidate (a scelta)
Ogni traccia può essere proposta individualmente o in gruppi.
A. Il Diario Digitale
- L’utente può scrivere una nuova nota, rileggere le note passate, cancellare una voce.
- Usa data/ora per indicizzare le note.
- Salva le note su file
.txt
.
B. Il Gioco Quiz
- Presenta una domanda e 3 risposte possibili.
- Valuta la risposta e dà un punteggio finale.
- Funzioni aggiuntive: tempo limite, livelli di difficoltà, classifica locale.
C. Calcolatrice Intelligente
- Operazioni base: somma, sottrazione, moltiplicazione, divisione.
- Funzioni avanzate: radice quadrata, potenza, media di n numeri.
- Versione con GUI: interfaccia semplice con bottoni (opzionale, per avanzati).
🔹 Attività 2: Lavoro in gruppo (facoltativo per contesti formativi)
- Ogni gruppo sceglie un progetto tra quelli proposti o ne inventa uno.
- I ruoli:
- Developer: scrive il codice.
- Tester: verifica ogni funzione, registra i bug.
- Designer: cura l’interfaccia (testuale o grafica).
- Scrittore (opzionale): documenta il progetto.
- Riunioni periodiche di revisione con feedback del tutor.
🔹 Attività 3: Diario di bordo
- Ogni partecipante tiene un diario del progetto: idee, problemi, soluzioni trovate.
- Alla fine, ogni gruppo o individuo presenta il progetto e il percorso fatto.
🧪 Esercizi di supporto
Esercizio 1 – Analisi dei requisiti (per tutti i progetti)
Compila questo schema per uno dei tre progetti proposti:
- Nome del progetto: ___________
- Obiettivo principale: ___________
- Utente tipo: ___________
- Funzionalità richieste: ___________
- Requisiti opzionali: ___________
- Limiti tecnici (es. solo testo, no database): ___________
Esercizio 2 – Scrivi il pseudocodice di una funzionalità
Esempio: pseudocodice per "inserisci una nuova nota nel diario"
Inizio
Chiedi all’utente di inserire il testo della nota
Ottieni la data e ora attuali
Apri il file delle note in modalità scrittura
Scrivi la data, ora e testo nel file
Chiudi il file
Mostra “Nota salvata con successo”
Fine
Esercizio 3 – Crea un diagramma di flusso
Rappresenta con un diagramma la logica di una delle funzioni chiave (es. verifica risposta nel quiz, o scelta dell’operazione nella calcolatrice).
✅ Test di autovalutazione finale
1. Qual è la funzione di un diagramma di flusso in fase progettuale?
a. Aiuta a scrivere direttamente il codice
b. Mostra visivamente la logica e i passaggi di un processo ✅
c. È obbligatorio per tutti i progetti
d. Serve solo ai designer
2. Qual è la differenza tra pseudocodice e codice vero?
a. Nessuna, sono sinonimi
b. Il pseudocodice è scritto in linguaggio naturale strutturato ✅
c. Il codice vero è più semplice
d. Il pseudocodice funziona anche se non lo esegui
3. Cos’è il “debugging”?
a. Un tipo di programma per costruire interfacce
b. L’eliminazione dei bug (errori) nel codice ✅
c. La scrittura automatica di funzioni
d. La scelta del linguaggio
4. Cosa indica il termine “implementazione incrementale”?
a. Sviluppare il programma tutto in una volta
b. Iniziare da funzioni facili e aggiungere poi quelle complesse ✅
c. Sviluppare una versione per ciascun utente
d. Usare più linguaggi nello stesso progetto
📈 Valutazione finale
- Presentazione del progetto (orale o scritta)
- Funzionalità del codice (verifica tutor o test automatici)
- Organizzazione del lavoro e documentazione
- Capacità di debugging e problem solving
Nessun commento:
Posta un commento