Cosa vuol dire programmare?
- Dato un problema
- Si analizza il problema e si capisce cosa può costituire una soluzione (e cosa no)
- Si progetta una serie di passi che risolvono il problema (algoritmo)
- Si traducono i passi in istruzioni per il calcolatore seguendo la sintassi
- Si valuta l’implementazione sui casi di test per capire se le istruzioni risolvono il problema
Come approcciare un problema?
- Fase di analisi: Analisi del problema e comprensione approfondita
- Controllare tutti i casi di test per vedere se ci sono casistiche particolari non descritte
- Provare a darne una breve spiegazione in italiano
- Capire cosa può costituire una soluzione al problema
- Fase di definizione strutture dati e algoritmo꞉
- Capire quali strutture dati sono appropriate per il problema
- Capire quali sono le istruzioni per risolvere il problema (algoritmo)
- Implementazione in python꞉
- Rappresentazione dei dati
- Scrivere l’algoritmo secondo sintassi e potenzialità di Python
- Testing e debug di eventuali casi incorretti
- Capire velocemente eventuali errori in maniera da isolare la parte di codice non corretta
Approccio bottom-up
- Parto da piccoli sottoproblemi che ho localizzato nell’analisi e provo a scrivere piccole funzioni che risolvono questi sotto problemi
- Mi assicuro che le funzioni siano corrette (debug oppure prova nell’interprete ipython)
- Compongo le funzionalità al fine di risolvere il problema principale
Approccio top-down
- Fornisco una descrizione del problema ad alto livello oppure pseudo‐codice (descrivo in italiano cosa devo fare)
- Implemento l’infrastruttura globale (flusso del programma principale)
- Creo funzioni placeholder che NON implementano la semantica ma sono dei segnaposti
- Definisco l’interfaccia delle funzioni (parametri di ingresso e valore di ritorno) in maniera congruente al problema da risolvere
- A questo punto ho il sistema che “esegue” da cima a fondo ma senza la logica corretta. Passo ad implementare la logica specifica di ogni funzione segnaposto