Menu
Coddy logo textTech

Pseudocodice: esempi svolti

15 esempi svolti in pseudocodice Cambridge IGCSE e A-Level, da un primo OUTPUT fino al bubble sort. Ognuno mostra il suo output e puoi eseguirlo nell'editor qui sotto.

Come leggere questi esempi

Lo pseudocodice descrive i passi di un programma in un inglese strutturato, senza le regole rigide di un vero linguaggio di programmazione. Tutti gli esempi qui sotto usano lo stile Cambridge richiesto dagli esami IGCSE e A-Level: DECLARE per le variabili, ← per l'assegnazione, OUTPUT per stampare, e blocchi chiusi con ENDIF, NEXT o ENDWHILE.

Ogni esempio presenta un problema, fornisce lo pseudocodice, mostra l'output che produce e spiega come funziona. Premi Eseguilo nell'editor per caricare un esempio nell'editor in cima alla pagina, dove puoi eseguirlo riga per riga e guardare le variabili cambiare. Prima volta con questa sintassi? L'editor di pseudocodice ha una libreria cliccabile con tutti i costrutti.

1. Hello, World

Stampa un messaggio sullo schermo.

Pseudocodice
OUTPUT "Hello, World!"
Output
Hello, World!

OUTPUT stampa tutto ciò che lo segue, e il testo va tra virgolette doppie. Questa sola riga è un programma completo: lo pseudocodice non ha bisogno di una funzione principale né di import.

2. Somma due numeri

Memorizza due numeri interi, sommali e stampa il totale.

Pseudocodice
DECLARE a : INTEGER
DECLARE b : INTEGER
DECLARE total : INTEGER
a ← 12
b ← 30
total ← a + b
OUTPUT "The total is ", total
Output
The total is 42

Ogni variabile viene dichiarata con un nome e un tipo prima di essere usata. La freccia ← memorizza un valore, quindi leggi total ← a + b come "total diventa a più b". Una virgola in OUTPUT unisce il testo e il valore sulla stessa riga.

3. Pari o dispari

Stabilisci se un numero è pari o dispari.

Pseudocodice
DECLARE n : INTEGER
n ← 17
IF n MOD 2 = 0 THEN
    OUTPUT n, " is even"
ELSE
    OUTPUT n, " is odd"
ENDIF
Output
17 is odd

MOD restituisce il resto della divisione. Un numero pari diviso per 2 non lascia resto, quindi la verifica è n MOD 2 = 0. IF sceglie uno dei due rami e ENDIF chiude il blocco. In pseudocodice un singolo = confronta due valori; non assegna mai.

4. Assegna un voto a un compito

Trasforma un punteggio su 100 in un voto: A da 80 in su, B da 60 a 79, C sotto 60.

Pseudocodice
DECLARE score : INTEGER
DECLARE grade : CHAR
score ← 74
IF score >= 80 THEN
    grade ← 'A'
ELSE
    IF score >= 60 THEN
        grade ← 'B'
    ELSE
        grade ← 'C'
    ENDIF
ENDIF
OUTPUT "Score ", score, " gets grade ", grade
Output
Score 74 gets grade B

I controlli partono dalla soglia più alta e scendono, quindi un punteggio di 74 non supera la prima verifica e supera la seconda. Mettere un IF dentro l'ELSE di un altro è il modo in cui lo pseudocodice Cambridge scrive una catena di else-if. Un CHAR contiene un solo carattere tra virgolette singole.

5. Somma i numeri da 1 a 10

Somma tutti i numeri interi da 1 a 10.

Pseudocodice
DECLARE total : INTEGER
DECLARE i : INTEGER
total ← 0
FOR i ← 1 TO 10
    total ← total + i
NEXT i
OUTPUT "Sum of 1 to 10 is ", total
Output
Sum of 1 to 10 is 55

Un ciclo FOR viene eseguito un numero fisso di volte: i assume i valori 1, 2, 3 e così via fino a 10, e NEXT i segna la fine del corpo del ciclo. Il totale parziale parte da 0 e cresce a ogni passaggio. Il risultato, 55, coincide con la formula n(n + 1) / 2.

6. Stampa una tabellina

Stampa le prime cinque righe della tabellina del 7.

Pseudocodice
DECLARE i : INTEGER
FOR i ← 1 TO 5
    OUTPUT "7 x ", i, " = ", 7 * i
NEXT i
Output
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35

Il contatore del ciclo i viene usato nel calcolo, quindi ogni passaggio stampa una riga diversa. OUTPUT può unire più testi e più valori con le virgole.

7. Conto alla rovescia con un ciclo WHILE

Conta alla rovescia da 5 a 1, poi stampa un messaggio finale.

Pseudocodice
DECLARE count : INTEGER
count ← 5
WHILE count > 0 DO
    OUTPUT count
    count ← count - 1
ENDWHILE
OUTPUT "Liftoff!"
Output
5
4
3
2
1
Liftoff!

Un ciclo WHILE controlla la sua condizione prima di ogni passaggio e si ferma appena la condizione diventa falsa. Qui la condizione è count > 0, e il corpo diminuisce count di uno ogni volta. Se togli la riga che lo diminuisce, il ciclo non finisce mai. Usa WHILE quando non sai in anticipo quanti passaggi ti servono.

8. Trova il numero più grande in un array

Trova il valore più grande in una lista di sei numeri.

Pseudocodice
DECLARE nums : ARRAY[1:6] OF INTEGER
DECLARE i : INTEGER
DECLARE largest : INTEGER
nums[1] ← 14
nums[2] ← 3
nums[3] ← 27
nums[4] ← 9
nums[5] ← 21
nums[6] ← 6
largest ← nums[1]
FOR i ← 2 TO 6
    IF nums[i] > largest THEN
        largest ← nums[i]
    ENDIF
NEXT i
OUTPUT "The largest number is ", largest
Output
The largest number is 27

ARRAY[1:6] dichiara sei posizioni numerate da 1 a 6, perché negli esami Cambridge gli array di solito partono da 1. Il programma presume che il primo elemento sia il più grande, poi confronta con esso ogni altro elemento e tiene quello maggiore. Dopo un passaggio sull'array, largest contiene la risposta.

9. Calcola una media

Calcola la media di quattro voti.

Pseudocodice
DECLARE marks : ARRAY[1:4] OF INTEGER
DECLARE i : INTEGER
DECLARE total : INTEGER
marks[1] ← 70
marks[2] ← 85
marks[3] ← 64
marks[4] ← 91
total ← 0
FOR i ← 1 TO 4
    total ← total + marks[i]
NEXT i
OUTPUT "Average mark: ", total / 4
Output
Average mark: 77.5

Il ciclo somma ogni elemento dell'array a total, poi il programma divide per il numero dei voti. L'operatore / dà un risultato decimale, ed è per questo che l'output è 77.5. Usa invece DIV quando vuoi una divisione intera.

11. Bubble sort

Ordina cinque numeri in ordine crescente.

Pseudocodice
DECLARE nums : ARRAY[1:5] OF INTEGER
DECLARE i : INTEGER
DECLARE j : INTEGER
DECLARE temp : INTEGER
nums[1] ← 5
nums[2] ← 1
nums[3] ← 4
nums[4] ← 2
nums[5] ← 8
FOR i ← 1 TO 4
    FOR j ← 1 TO 5 - i
        IF nums[j] > nums[j + 1] THEN
            temp ← nums[j]
            nums[j] ← nums[j + 1]
            nums[j + 1] ← temp
        ENDIF
    NEXT j
NEXT i
FOR i ← 1 TO 5
    OUTPUT nums[i]
NEXT i
Output
1
2
4
5
8

Il bubble sort confronta ogni coppia di elementi vicini e li scambia quando sono nell'ordine sbagliato. Dopo ogni passaggio del ciclo esterno, il valore più grande rimasto è arrivato in fondo, quindi il ciclo interno può fermarsi un elemento prima ogni volta. Lo scambio richiede una terza variabile, temp, che tiene un valore mentre l'altro viene copiato.

Guarda questo algoritmo animato

12. Fattoriale con una funzione

Scrivi una funzione che restituisca il fattoriale di n (n!), poi usala per calcolare 5!.

Pseudocodice
FUNCTION Factorial(n : INTEGER) RETURNS INTEGER
    DECLARE result : INTEGER
    DECLARE i : INTEGER
    result ← 1
    FOR i ← 2 TO n
        result ← result * i
    NEXT i
    RETURN result
ENDFUNCTION

OUTPUT "5! = ", Factorial(5)
Output
5! = 120

Una FUNCTION riceve dei parametri, fa il suo lavoro e restituisce un valore con RETURN; la sua intestazione indica il tipo restituito. Le variabili dichiarate al suo interno esistono solo mentre è in esecuzione. 5! è 5 × 4 × 3 × 2 × 1, cioè 120.

13. Conta le vocali di una parola

Conta quante vocali contiene la parola PSEUDOCODE.

Pseudocodice
DECLARE word : STRING
DECLARE letter : CHAR
DECLARE vowels : INTEGER
DECLARE i : INTEGER
word ← "PSEUDOCODE"
vowels ← 0
FOR i ← 1 TO LENGTH(word)
    letter ← SUBSTRING(word, i, 1)
    IF letter = 'A' OR letter = 'E' OR letter = 'I' OR letter = 'O' OR letter = 'U' THEN
        vowels ← vowels + 1
    ENDIF
NEXT i
OUTPUT word, " has ", vowels, " vowels"
Output
PSEUDOCODE has 5 vowels

LENGTH restituisce il numero di caratteri di una stringa, e SUBSTRING(word, i, 1) prende un carattere a partire dalla posizione i. Il ciclo visita ogni carattere e aggiunge uno al contatore ogni volta che è A, E, I, O o U.

14. FizzBuzz

Stampa i numeri da 1 a 15, ma scrivi Fizz per i multipli di 3, Buzz per i multipli di 5 e FizzBuzz per i multipli di entrambi.

Pseudocodice
DECLARE i : INTEGER
FOR i ← 1 TO 15
    IF i MOD 15 = 0 THEN
        OUTPUT "FizzBuzz"
    ELSE
        IF i MOD 3 = 0 THEN
            OUTPUT "Fizz"
        ELSE
            IF i MOD 5 = 0 THEN
                OUTPUT "Buzz"
            ELSE
                OUTPUT i
            ENDIF
        ENDIF
    ENDIF
NEXT i
Output
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

L'ordine dei controlli conta. 15 è multiplo sia di 3 sia di 5, quindi la verifica per 15 deve venire per prima; altrimenti il programma stamperebbe Fizz e non arriverebbe mai a FizzBuzz. È un classico esercizio di riscaldamento nei colloqui di lavoro proprio perché mette alla prova questo tipo di ragionamento.

15. Tentativi di password con REPEAT UNTIL

Prova fino a tre password una dopo l'altra e concedi l'accesso se una di esse è corretta.

Pseudocodice
DECLARE attempts : ARRAY[1:3] OF STRING
DECLARE tries : INTEGER
DECLARE guess : STRING
attempts[1] ← "hunter1"
attempts[2] ← "letmein"
attempts[3] ← "open sesame"
tries ← 0
REPEAT
    tries ← tries + 1
    guess ← attempts[tries]
    OUTPUT "Try ", tries, ": ", guess
UNTIL guess = "open sesame" OR tries = 3
IF guess = "open sesame" THEN
    OUTPUT "Access granted"
ELSE
    OUTPUT "Locked out"
ENDIF
Output
Try 1: hunter1
Try 2: letmein
Try 3: open sesame
Access granted

Un ciclo REPEAT ... UNTIL controlla la sua condizione alla fine, quindi il corpo viene eseguito sempre almeno una volta. Si ferma quando la password corrisponde o dopo il terzo tentativo. I tentativi arrivano da un array, così l'esempio funziona senza digitare nulla; in una risposta d'esame di solito leggeresti ciascuno con INPUT.

Domande frequenti sugli esempi di pseudocodice

Qual è un esempio di pseudocodice?

Uno breve decide se un compito è superato: IF score >= 50 THEN OUTPUT "Pass" ELSE OUTPUT "Fail" ENDIF. Si legge quasi come l'inglese ma segue regole fisse, quindi si può trasformare in Python, Java o qualsiasi altro linguaggio riga per riga. I 15 programmi di questa pagina vanno da una sola riga fino alla ricerca e all'ordinamento.

Come si scrive lo pseudocodice?

Decidi cosa deve fare il programma, poi scrivi i passi in ordine con un piccolo insieme di parole chiave: DECLARE per le variabili, ← per assegnare, IF per le decisioni, FOR o WHILE per ripetere e OUTPUT per i risultati. Indenta il corpo di ogni blocco, chiudilo con la sua parola chiave di fine e scrivi una sola azione per riga.

Lo pseudocodice è uguale in tutti gli esami?

No. Cambridge (IGCSE e A-Level) usa DECLARE e la freccia ←, AQA usa ← senza dichiarazioni, l'Exam Reference Language di OCR somiglia a Python ed Edexcel scrive SET ... TO. Questi esempi usano Cambridge; l'editor di pseudocodice ti fa passare da uno all'altro dei quattro stili.

Posso eseguire lo pseudocodice?

Sì, in questa pagina. Lo pseudocodice non è un vero linguaggio di programmazione, quindi non esiste un compilatore ufficiale, ma l'editor qui esegue lo pseudocodice Cambridge nel tuo browser, mostra l'output e lo esegue riga per riga. Premi Eseguilo nell'editor sotto qualsiasi esempio.

Che differenza c'è tra pseudocodice e diagramma di flusso?

Entrambi descrivono un algoritmo prima di scriverne il codice. Un diagramma di flusso disegna i passi come riquadri e frecce, il che si adatta a processi brevi con poche decisioni. Lo pseudocodice li scrive come testo strutturato, che funziona anche per programmi più lunghi e si trasforma in codice vero in modo più diretto.

Devo dichiarare le variabili nello pseudocodice?

Nello pseudocodice Cambridge, sì: i criteri di correzione si aspettano DECLARE name : TYPE prima di usare una variabile. Altri stili, come quello di AQA, non usano dichiarazioni. Dichiarare una variabile dice anche a chi legge che tipo di valore contiene.

Illustrazione dei linguaggi di programmazione di Coddy

Passa dallo pseudocodice al codice vero con Coddy

INIZIA