📘 CodingMarble Learn

Introduzione al problem solving

Risolvere un problema con il computer richiede alcune fasi: analizzare il problema (dati in ingresso, risultati e regole), costruire un algoritmo (una sequenza finita, chiara e ordinata di passi), scriverlo in un linguaggio di programmazione, provarlo con dati diversi e fare il debug (cercare ed eliminare gli errori). Un algoritmo si può disegnare come diagramma di flusso (ovale = inizio/fine, parallelogramma = input/output, rettangolo = elaborazione, rombo = decisione, frecce = percorso) oppure scrivere in pseudocodice (italiano o inglese semplice e ordinato). La scomposizione divide un problema grande in problemi più piccoli, che si risolvono separatamente e poi si uniscono.

🎬 Storia passo dopo passo

  1. Risolvere un problema ha cinque fasi: analizzare, scrivere un algoritmo, programmare, testare e fare il debug.
  2. Scomporre significa dividere un problema grande in tante parti piccole. Si risolve ogni parte e poi si uniscono.
  3. I diagrammi di flusso usano forme. L'ovale è inizio o fine. Il parallelogramma è input o output. Il rettangolo è un'elaborazione. Il rombo è una decisione.
  4. Ecco un diagramma di flusso che stampa il maggiore tra A e B. Il segnalino segue il percorso SÌ perché 7 è più grande di 4.
  5. Il pseudocodice scrive gli stessi passi in parole semplici, una riga alla volta.
  6. Tocca a te: scegli A e B. Guarda quale percorso fa il segnalino.

Suggerimento: trascina la scena 3D per ruotarla. Usa due dita per zoomare.

🤔 Dubbi comuni, chiariti

Perché scrivere un algoritmo prima di programmare?

Se pensi prima ai passi, programmi l'idea giusta. Correggere un piano è molto più facile che correggere un programma lungo.

La scomposizione serve solo per i software grandi?

No. Anche un programma piccolo è più facile se lo dividi in input, elaborazione e output.

Perché una decisione ha bisogno del rombo?

Il rombo mostra una domanda sì/no con due uscite. Il rettangolo ha una sola uscita, quindi non può dividere il percorso.

Che cosa succede quando A è uguale a B?

A > B è falso, quindi il segnalino prende il percorso NO e stampa B, che ha lo stesso valore. Provalo nel gioco libero.

Diagramma di flusso o pseudocodice: quale è meglio?

I diagrammi di flusso sono più facili da vedere nei problemi piccoli; il pseudocodice è più veloce da scrivere e più vicino al codice vero nei problemi più grandi.

Le fasi del problem solving

  1. Analizzare il problema: capire che cosa è dato (input), che cosa si vuole (output) e quali sono le regole.
  2. Costruire un algoritmo: scrivere la soluzione in passi chiari e ordinati.
  3. Programmare: trasformare l'algoritmo in un programma in un linguaggio come Python.
  4. Testare: eseguirlo con molti dati diversi, compresi i casi limite (0, numeri negativi, valori molto grandi).
  5. Fare il debug: trovare e correggere gli errori; poi testare di nuovo.

Un algoritmo deve avere: input e output chiari, un numero finito di passi (deve fermarsi), passi precisi (senza dubbi) e deve dare il risultato corretto.

Diagrammi di flusso

Un diagramma di flusso è il disegno di un algoritmo, fatto con simboli standard uniti da frecce.

I diagrammi di flusso si capiscono bene a colpo d'occhio, ma diventano enormi quando il problema è grande.

Pseudocodice

Il pseudocodice scrive un algoritmo con frasi semplici, simili al linguaggio di tutti i giorni, e parole chiave come INPUT, COMPUTE, PRINT, IF…ELSE, WHILE. Non è un vero linguaggio, quindi non servono regole di scrittura rigide.

INPUT A, B
IF A > B THEN
    PRINT A
ELSE
    PRINT B

Gli algoritmi possono avere sequenza (passi uno dopo l'altro), selezione (decisioni con IF) e ripetizione (cicli).

Scomposizione

La scomposizione significa dividere un problema complesso in problemi più piccoli e semplici. Ogni parte viene risolta (spesso da una persona o da una funzione diversa) e poi le parti si uniscono.

Esempio: un sistema di prenotazione dei treni si scompone in: cercare i treni, controllare i posti, prenotare il biglietto, incassare il pagamento, stampare il biglietto.

Vantaggi: si capisce meglio, il lavoro si può dividere, gli errori si trovano più facilmente e le parti si possono riutilizzare.

Cosa chiedono a scuola e all'esame

Di solito si chiede di: disegnare un diagramma di flusso o scrivere il pseudocodice di compiti semplici (il maggiore tra due numeri, la somma dei primi n numeri, pari/dispari, un voto a partire dal punteggio), dare il nome ai simboli, elencare le fasi del problem solving e spiegare la scomposizione con un esempio.

Formule e definizioni chiave

Esempi svolti

1. Scrivi un algoritmo per trovare l'area di un rettangolo.

1. Inizio. 2. Input lunghezza L e larghezza B. 3. Area = L × B. 4. Stampa Area. 5. Fine.

2. Scrivi il pseudocodice per controllare se un numero è pari o dispari.

INPUT N IF N MOD 2 = 0 THEN PRINT "Pari" ELSE PRINT "Dispari"

3. Descrivi un diagramma di flusso che stampa la somma dei numeri da 1 a 10.

Inizio → elaborazione: sum = 0, i = 1 → decisione: i <= 10? → Sì: elaborazione sum = sum + i, i = i + 1, freccia che torna alla decisione → No: output sum → Fine.

4. Scomponi il problema 'organizzare una giornata sportiva a scuola'.

Sotto-problemi: elencare le gare, iscrivere gli studenti, preparare il campo e le attrezzature, fare il calendario, giudicare e registrare i risultati, consegnare i premi. Ogni parte può essere gestita da un gruppo e poi tutto si unisce.

5. Segui il diagramma di flusso del numero maggiore per A = 5, B = 12.

Inizio → input A = 5, B = 12 → 5 > 12? No → stampa B = 12 → Fine.

6. Scrivi il pseudocodice per stampare il voto: punteggio ≥ 90 → A, ≥ 75 → B, altrimenti C.

INPUT M IF M >= 90 THEN PRINT "A" ELSE IF M >= 75 THEN PRINT "B" ELSE PRINT "C"

Errori comuni

Quiz di allenamento

1. Quale simbolo si usa per una decisione in un diagramma di flusso?
2. Trovare ed eliminare gli errori si chiama:
3. Un algoritmo deve essere:
4. Input e output in un diagramma di flusso usano un:
5. Dividere un problema in parti più piccole è:

Esercizi: rispondi da solo

Scrivi o scegli la risposta, poi premi Controlla. Usa un suggerimento se sei bloccato; la soluzione completa appare dopo la tua risposta.

Domande frequenti

Quali sono le fasi del problem solving in informatica?

Analizzare il problema, costruire un algoritmo, programmarlo, testarlo e fare il debug.

Qual è la differenza tra algoritmo e diagramma di flusso?

L'algoritmo è la soluzione passo per passo scritta a parole; il diagramma di flusso è il disegno degli stessi passi con dei simboli.

Che cos'è la scomposizione?

Dividere un problema complesso in problemi più piccoli, che si risolvono separatamente e poi si uniscono.

Dove si studia

Canada (Ontario)Grade 10C. Programming
Canada (Ontario)Grade 11B. Software Development
Canada (Ontario)Grade 11B. Software Development
ItalySecondaria di secondo grado – classe 1ªComputer basics and programming
ItalySecondaria di secondo grado – classe 1ªElements of computer science
ItalySecondaria di secondo grado – classe 1ªElements of computer science
ItalySecondaria di secondo grado – classe 1ªElements of computer science
ItalySecondaria di secondo grado – classe 2ªComputer basics and programming
ItalySecondaria di secondo grado – classe 2ªElements of computer science
ItalySecondaria di secondo grado – classe 2ªElements of computer science
ItalySecondaria di secondo grado – classe 2ªElements of computer science
NetherlandsVWO 3 (onderbouw)Mathematical thinking
NetherlandsHAVO 4 (bovenbouw, 2e fase)Foundations
NetherlandsVWO 4 (bovenbouw, 2e fase)Foundations
PolandLiceum ogólnokształcące, klasa IUnderstanding, analysing and solving problems
PolandLiceum ogólnokształcące, klasa IIIDesigning and programming algorithms (I + II)
RomaniaClasa a VIII-aAlgorithms
RomaniaClasa a IX-aMilitary profile (mathematics-informatics, military)
RomaniaClasa a X-aFundamental algorithms on arrays
Spain2º ESOComputational thinking, programming and robotics
Spain3º ESOComputational thinking, programming and robotics
Spain1º BachilleratoAlgebraic Sense
Spain1º BachilleratoAlgebraic Sense
Spain1º BachilleratoAlgebraic sense and computational thinking
CBSE (India)Class 11Computational Thinking and Programming - 1
England (GCSE, A level)Year 103.1 Fundamentals of algorithms
USA (Common Core, NGSS, AP)Grade 8Algorithms and Programming
USA (Common Core, NGSS, AP)Grade 9Algorithms and Programming
USA (Common Core, NGSS, AP)Grade 10Big Idea 3: Algorithms and Programming
USA (Common Core, NGSS, AP)Grade 11Algorithms and Programming
Japan高校(専門学科)1〜3年Programming
Japan高校(専門学科)1〜3年Programming Technology
South Korea중학교 2학년Algorithms and programming
South Korea중학교 3학년Abstraction and algorithms
South Korea고등학교 3학년Abstraction and algorithms
FrancePremièreAlgorithms
FranceTerminaleAlgorithms
FranceTerminaleSpecific option — management information systems
Russia7 классAlgorithms and programming
Russia8 классAlgorithms and programming
Russia10 классAlgorithms and programming
China高一Comp.1 Ch.2 Algorithms and programs

Da studiare dopo