Cosa Sono
Sequenze finite, ordinate e non ambigue di istruzioni ed esecuzioni.
A Cosa Servono
A risolvere problemi trasformando dati di input in risultati di output.
Rappresentazione
Diagrammi di Flusso (Flowchart), Pseudocodice e Linguaggi Reali.
Obiettivi
Sviluppare il pensiero computazionale e modellare soluzioni efficienti.
Per essere definito tale, un algoritmo deve rispettare alcune proprietà formali indispensabili che garantiscono la correttezza del processo:
Finitezza & Chiarezza
Il numero di passi deve essere finito e ogni istruzione deve essere chiara e priva di ambiguità.
Esecutività & Input
Le operazioni devono essere materialmente eseguibili dall'esecutore in un tempo finito.
Determinismo
A parità di dati di ingresso (input), l'algoritmo deve produrre sempre i medesimi risultati (output).
Esplora gli strumenti e le metodologie usate per progettare e simulare gli algoritmi prima di scriverli in codice sorgente:
Diagrammi di Flusso
Rappresentazione grafica basata su blocchi geometrici e frecce direzionali.
Apri GuidaPseudocodice
Linguaggio intermedio informale ma strutturato per descrivere la logica a parole.
Apri GuidaNotazione Big-O
Analisi delle prestazioni dell'algoritmo in termini di tempo e spazio occupato.
Apri GuidaQuadri di sintesi e definizioni chiave per comprendere la struttura degli algoritmi, le strutture di controllo e la logica di risoluzione dei problemi:
Mappa Concettuale: Introduzione agli Algoritmi
INTRODUZIONE AGLI ALGORITMI │ ├── 1. FASI DI RISOLUZIONE (Ciclo di vita del problema) │ └── Definizione: Dalla formulazione del problema all'esecuzione automatica. │ ├── Analisi del Problema ────────> Individuazione di requisiti, dati di Input e dati di Output │ ├── Progettazione della Logica ──> Definizione del procedimento risolutivo mediante algoritmo │ └── Codifica & Testing ─────────> Traduzione in linguaggio di programmazione e verifica dei test case │ ├── 2. STRUTTURE FONDAMENTALI (BÖHM-JACOPINI) (Costrutti di base) │ └── Definizione: Qualsiasi algoritmo può essere espresso mediante tre sole strutture. │ ├── Sequenza ───────────────────> Esecuzione ordinata di istruzioni una dopo l'altra │ ├── Selezione / Condizione ─────> Scelta tra rami alternativi in base al valore di verità di una condizione │ └── Iterazione / Ciclo ─────────> Ripetizione di un blocco di istruzioni fino al soddisfacimento di una regola │ ├── 3. MODELLI DI RAPPRESENTAZIONE (Formalizzazione) │ └── Definizione: Strumenti per comunicare la logica dell'algoritmo. │ ├── Diagramma di Flusso (Flowchart) > Grafico con blocchi standard (Ovali, Rettangoli, Rombi, Parallelogrammi) │ └── Pseudocodice ───────────────────> Descrizione testuale ad alto livello simile al linguaggio naturale │ └── 4. EFFICIENZA & COMPLESSITÀ (Analisi delle prestazioni) └── Definizione: Misura del consumo di risorse al crescere della dimensione dei dati (N). ├── Complessità Temporale ─────────> Tempo stimato di esecuzione in funzione dell'input ├── Complessità Spaziale ──────────> Quantità di memoria occupata dalle strutture dati └── Notazione Big-O ───────────────> Classificazione asintotica delle prestazioni (es. O(1), O(N), O(N log N))
Glossario dei Termini (IT / EN)
| Termine Italiano | Termine Inglese | Definizione Sintetica |
|---|---|---|
| Algoritmo | Algorithm | Procedimento di calcolo finito ed ordinato per risolvere un dato problema. |
| Pensiero Computazionale | Computational Thinking | Processo mentale per formulare problemi e soluzioni in modo che un esecutore possa eseguirli. |
| Struttura di Controllo | Control Structure | Costrutto sintattico che determina l'ordine di esecuzione delle istruzioni (sequenza, selezione, ciclo). |
| Diagramma di Flusso | Flowchart | Rappresentazione grafica di un algoritmo mediante simboli geometrici convenzionali. |
| Pseudocodice | Pseudocode | Linguaggio di descrizione informale per la progettazione e documentazione degli algoritmi. |
| Traccia / Tavola di Traccia | Trace Table / Dry Run | Tecnica di verifica manuale passo-passo dello stato delle variabili durante l'esecuzione dell'algoritmo. |
| Complessità Computazionale | Computational Complexity | Studio dell'efficienza di un algoritmo in termini di risorse temporali e spaziali impiegate. |