💻 INFORMATICA · LEZIONE 10 — ALGORITMI & PROBLEM SOLVING

Gli Algoritmi e il Problem Solving: Diagrammi di Flusso & Pseudocodice

Dalla definizione logica alla traduzione esecutiva: come un calcolatore trasforma un insieme di dati iniziali (Input) in un risultato finale (Output) attraverso sequenze finite e non ambigue, con l'ausilio di flowchart standard e pseudocodice.

👨‍🏫 Docente: Prof. Aliberti
🏫 Scuola: IIS Olivetti Ivrea
⏱️ Durata stimata: 50 minuti
🎯 Argomento: Logica algoritmica, flowchart e pseudocodice

1. La Definizione Rigorosa di Algoritmo

Il concetto di algoritmo costituisce il fondamento concettuale su cui poggia l'intera programmazione moderna. Se l'hardware rappresenta il corpo fisico del sistema, l'algoritmo ne esprime la logica operativa, indicando con assoluta precisione quale strada seguire per giungere alla soluzione di un problema.

📝 La Definizione Formale "UN ALGORITMO È UNA SEQUENZA FINITA E ORDINATA DI ISTRUZIONI NON AMBIGUE CHE TRASFORMA UN INSIEME DI DATI INIZIALI (INPUT) IN UN RISULTATO FINALE (OUTPUT) PER RISOLVERE UN DETERMINATO PROBLEMA."

Ogni termine di questo enunciato racchiude un vincolo indispensabile per il calcolo elettronico:

  • Stato Iniziale (INPUT): Rappresenta la condizione di partenza, formata dai dati grezzi forniti dall'utente o da sensori esterni.
  • Sequenza Ordinata: L'ordine temporale delle istruzioni è tassativo; alterare la successione significa modificare il risultato o impedire alla macchina di proseguire.
  • Stato Finale (OUTPUT): L'obiettivo prefissato, ovvero la soluzione utile attesa dall'utente.
Slide del corso: L'Anatomia di un Algoritmo (Dati di Ingresso, Procedura, Dati di Uscita)
📐 Slide del Corso: L'Anatomia di un Algoritmo — Sequenza finita e ordinata di passi che trasforma i dati di ingresso (Input) in dati di uscita (Output) in modo riproducibile.

2. Le 5 Proprietà Fondamentali di un Algoritmo

Non basta scrivere un elenco disordinato di passi per ottenere un algoritmo valido. Nel contesto computazionale, qualsiasi procedura deve soddisfare contemporaneamente 5 requisiti formali:

1. FINITEZZA

Numero Finito di Passi

Il calcolo non può cadere in un loop perpetuo; deve arrestarsi tassativamente dopo un numero finito di operazioni elementari.

2. NON AMBIGUITÀ

Determinismo Assoluto

Ogni singola istruzione deve ammettere una sola interpretazione possibile, senza zone d'ombra o valutazioni soggettive per la CPU.

3. ESEGUIBILITÀ

Fattibilità Operativa

L'esecutore deve essere fisicamente e logicamente in grado di compiere l'azione richiesta (es. non è consentita una divisione per zero).

4. GENERALITÀ

Intera Classe di Problemi

L'algoritmo non deve risolvere un singolo calcolo specifico, ma funzionare correttamente per qualsiasi combinazione di input ammissibili.

5. EFFICIENZA & MODULARITÀ

Troubleshooting & Blocchi

La procedura deve minimizzare il tempo di calcolo e l'uso di memoria, organizzandosi in moduli chiari per isolare e correggere i bug logici.

3. La Metodologia del Problem Solving & Troubleshooting

In laboratorio, prima ancora di digitare codice al computer, l'informatico impara a ragionare secondo l'approccio ingegneristico del Problem Solving:

🛠️ I 4 Passaggi Verso la Soluzione
  1. Comprensione del Problema: Individuare quali dati sono già noti (Input) e cosa viene effettivamente richiesto come risultato (Output).
  2. Scomposizione Analitica (Divide et Impera): Frammentare il problema principale in compiti più circoscritti e facili da dominare singolarmente.
  3. Progettazione della Strategia: Tracciare il flusso delle decisioni attraverso diagrammi grafici o bozze di pseudocodice.
  4. Troubleshooting e Verifica (Debugging): Testare la procedura simulando valori limite (edge cases), isolando i blocchi difettosi per correggerli.

4. I Diagrammi di Flusso (Flowchart)

Il Flowchart è il linguaggio grafico standard che consente di visualizzare ad un solo colpo d'occhio l'evoluzione temporale dell'algoritmo. Ogni figura geometrica possiede una funzione codificata a livello internazionale:

Slide del corso: La Grammatica Visiva dei Diagrammi di Flusso
📊 Slide del Corso: La Grammatica Visiva dei Diagrammi di Flusso — Terminale (Inizio/Fine), Input/Output, Processo/Calcolo e Rombo di Decisione.
🟢

Ovale Arrotondato

INIZIO (Start) / FINE (End)
Segna l'apertura e la conclusione della sequenza esecutiva.

▱

Parallelogramma

INPUT / OUTPUT (Leggi / Scrivi)
Lettura di dati immessi da periferica o invio del responso all'esterno.

▭

Rettangolo

AZIONE / ELABORAZIONE
Assegnazione di variabili, calcoli aritmetici o trasformazioni logiche.

◇

Rombo

CONDIZIONE / BIVIO LOGICO
Domanda booleana (Vero/Falso) che sdoppia il flusso in due rami distinti.

🎬 Video Lezione: Algoritmi & Problem Solving

Videolezione Ufficiale

🎯 Quiz di Autovalutazione (10 Domande)

Seleziona una risposta per ogni domanda e premi il pulsante finale per vedere il punteggio, l'esito e le spiegazioni.

1. Qual è la definizione corretta di "algoritmo" in informatica?
2. Tra le proprietà fondamentali di un algoritmo, cosa stabilisce il principio di "determinatezza" (o non ambiguità)?
3. In un diagramma di flusso (flowchart), quale figura geometrica standard rappresenta una decisione o condizione logica?
4. Quale blocco grafico si utilizza nei flowchart standard per rappresentare un'operazione di lettura o scrittura (Input/Output)?
5. Nella fase di Problem Solving, cosa si intende per approccio "Top-Down"?
6. Nel paradigma della programmazione strutturata (Teorema di Böhm-Jacopini), quali sono le tre strutture di controllo basilari?
7. Qual è la principale differenza tra una condizione con ciclo a "pre-condizione" (While) e uno a "post-condizione" (Do-While)?
8. Che cos'è lo "Pseudocodice"?
9. Cosa accade se un algoritmo iterativo non presenta una condizione di terminazione valida e raggiungibile?
10. Perché una sequenza di istruzioni come: "1. Mescola; 2. Se non è cotto, aspetta un po'; 3. Spegni" non è un algoritmo rigoroso?

Esito Finale del Questionario

0 / 10

5. Lo Pseudocodice e il Diagramma a Blocchi

Prima di tradurre un algoritmo nei formalismi rigidi di un linguaggio di programmazione (come C++, Python o Java), gli sviluppatori utilizzano lo Pseudocodice e lo schema a blocchi:

Slide del corso: Esempio visivo di Flowchart - Calcolo della promozione
💡 Slide del Corso: Esempio visivo del Flowchart — Calcolo della media dei voti con blocco condizionale di decisione (Media < 60?).
// Esempio di Pseudocodice: Calcolo della promozione scolastica
INIZIO
  LEGGI votoTeoria, votoLaboratorio
  media = (votoTeoria + votoLaboratorio) / 2
  SE media >= 6 ALLORA
    SCRIVI "Obiettivo Raggiunto! Media: " + media
  ALTRIMENTI
    SCRIVI "Recupero Formativo Richiesto. Media: " + media
  FINE SE
FINE

6. Applicazione Pratica: Troubleshooting e Protocolli di Rete

La logica degli algoritmi e dei diagrammi di flusso si applica tanto alla diagnosi rapida di problemi fisici (troubleshooting) quanto all'architettura delle reti digitali:

Esempio pratico di diagramma di flusso: algoritmo di troubleshooting per la risoluzione del guasto alla lampada
💡 Esempio di Diagramma di Flusso: Algoritmo decisionale di troubleshooting per risolvere il problema 'La lampada non funziona', con sequenza deterministica, condizioni booleane e ramificazioni operative.
🌐
Domain Name (Nomi di Dominio): L'indirizzo mnemonico testuale (es. scuola.it) tradotto automaticamente dall'algoritmo DNS nell'indirizzo numerico del server.
🔢
Indirizzo IP (es. 192.168.1.1): La targa logica numerica che identifica univocamente ciascun calcolatore collegato a una rete locale o geografica.
🔑
Token Digitale: Una stringa alfanumerica generata crittograficamente per identificare e proteggere le sessioni di autenticazione degli utenti.
⛓️
Blockchain: Registro contabile distribuito e immutabile retto da algoritmi crittografici di consenso e concatenazione di blocchi di dati.

▶️ Simulatore di Esecuzione: Ricerca del Valore Massimo

Digita due valori numerici e avvia l'algoritmo per osservare come la CPU attraversa i singoli blocchi del flowchart:

Premi il pulsante per osservare il tracciamento dettagliato dei registri e dei blocchi decisionali...

7. Scheda di Ripasso & Autoverifica

È una sequenza finita, ordinata e deterministica di istruzioni univoche e non ambigue che riceve un insieme di dati di input e li trasforma in un risultato finale di output per risolvere un problema.
Significa che ha un unico significato interpretabile in modo univoco da chi la esegue, senza alcuna discrezionalità o possibilità di dubbio (determinismo).
Rappresenta una condizione o decisione logica. Contiene una domanda booleana (con risposta SI/NO, VERO/FALSO) che sdoppia il flusso di esecuzione su due percorsi differenti.
È il processo logico e sistematico di individuazione, isolamento e correzione di guasti tecnici o bug logici all'interno di un sistema software o hardware.
📌 Dispensa Didattica:
Area Informatica · Lezione 10 — Algoritmi e Problem Solving (Triennio) · Docente: Prof. Aliberti
← Torna all'Indice Lezioni