Fondamenti Di Programmazione

LAB Verifica PIN

Laboratorio pratico di programmazione: algoritmo per il controllo del PIN di sicurezza con un numero massimo di 3 tentativi, gestione del contatore di errore, strutture condizionali e messaggio di blocco card.

Durata

20 minuti

Software

Flowgorithm / Pseudocodice

Linguaggio

Diagrammi di Flusso

Laboratorio: Controllo PIN con Max 3 Tentativi

Argomenti: laboratorio pratico, controllo PIN, tentativi massimi, ciclo ESEGUI MENTRE (Do While), sicurezza informatica, pseudocodice, Flowgorithm

In questo laboratorio realizzeremo l'algoritmo di sicurezza utilizzato dai Bancomat e dagli smartphone: il controllo del PIN di accesso con un limite massimo di 3 tentativi. L'utente ha a disposizione fino a tre possibilità per inserire il codice segreto corretto; se sbaglia per 3 volte consecutive, la procedura si interrompe e il sistema blocca la carta.

SPECIFICA DI PROGETTO

Progettare un algoritmo di autenticazione che utilizzi un PIN segreto predefinito (es. 1234). L'algoritmo deve:

1. Inizializzare le Variabili: Impostare il contatore dei tentativi tentativi = 0 e stabilire il PIN_CORRETTO = 1234.
2. Richiesta ed Incremento (nel ciclo): Tramite la struttura ESEGUI, chiedere all'utente di digitare il PIN (pinInserito) ed incrementare il contatore tentativi = tentativi + 1.
3. Controllo in Coda (condizione MENTRE): Il ciclo deve ripetersi SOLO SE il PIN e' errato (pinInserito != PIN_CORRETTO) E non sono ancora stati consumati i 3 tentativi (tentativi < 3).
4. Verifica Finale (fuori dal ciclo): Verificare la motivazione dell'uscita:
  • Se pinInserito == PIN_CORRETTO: stampare "Accesso Consentito".
  • Altrimenti: stampare "Carta Bloccata! Hai superato i 3 tentativi".

1. Tabella delle Variabili e Dominio dei Dati

Memoria: Dichiarazione e Ruolo del Contatore Tentativi

Nome Variabile Tipo di Dato Categoria Ruolo, Descrizione e Dominio Presupposto
PIN_CORRETTO Intero COSTANTE Valore segreto memorizzato nel sistema (es. 1234).
pinInserito Intero INPUT Codice digitato dall'utente ad ogni singolo tentativo.
tentativi Intero CONTATORE Conta il numero di tentativi effettuati dall'utente (da 1 fino a max 3).
📌 Valore Iniziale: 0.

Focus: La Condizione Composta con Operatore AND (`E`)

Perché il ciclo continui a chiedere il PIN, entrambe le verifiche devono essere contemporaneamente VERE:
Mentre (pinInserito != PIN_CORRETTO E tentativi < 3)
Il ciclo si interrompe se accade almeno una di queste due cose:
1. L'utente indovina il PIN (pinInserito != PIN_CORRETTO diventa FALSO).
2. L'utente esaurisce i 3 tentativi (tentativi < 3 diventa FALSO).

2. Algoritmo in Pseudocodice

Implementazione: Ciclo ESEGUI...MENTRE con contatore tentativi ed esito finale

 1Inizio
 2    Dichiara pinInserito, tentativi, PIN_CORRETTO: Intero
 3    
 4    PIN_CORRETTO = 1234
 5    tentativi = 0
 6    
 7    // Struttura ESEGUI MENTRE (Do While)
 8    Esegui
 9        Scrivi "Inserisci il codice PIN (Tentativo " & (tentativi + 1) & " di 3):"
10        Leggi pinInserito
11        
12        tentativi = tentativi + 1
13        
14        // Se il PIN e' errato e ci sono ancora tentativi, mostra avviso
15        Se (pinInserito != PIN_CORRETTO E tentativi < 3) Allora
16            Scrivi "PIN Errato! Riprova."
17        Fine Se
18        
19    // Ripete solo se il PIN e' errato AND i tentativi sono inferiori a 3
20    Mentre (pinInserito != PIN_CORRETTO E tentativi < 3)
21    
22    // VERIFICA FINALE DELL'ESITO
23    Se (pinInserito == PIN_CORRETTO) Allora
24        Scrivi "✅ PIN Corretto! Accesso Consentito al Conto."
25    Altrimenti
26        Scrivi "⛔ CARTA BLOCCATA! Hai superato il numero massimo di 3 tentativi."
27    Fine Se
28Fine

3. Tavola di Traccia (Caso di Test: Fallimento con 3 PIN Errati)

Verifica: Inserimenti in sequenza: 0000, 1111, 2222 con PIN segreto = 1234

Iterazione Input pinInserito Incremento tentativi Test 1
pinInserito != 1234
Test 2
tentativi < 3
Condizione Totale
(Test 1 E Test 2)
1° Tentativo 0000 1 VERO (0000 != 1234) VERO (1 < 3) VERO → Ripete ciclo
2° Tentativo 1111 2 VERO (1111 != 1234) VERO (2 < 3) VERO → Ripete ciclo
3° Tentativo 2222 3 VERO (2222 != 1234) FALSO (3 < 3) FALSO (VERO E FALSO) → ESCE dal ciclo
Esito Finale Il controllo pinInserito == 1234 risulta FALSO → Stampa: "⛔ CARTA BLOCCATA!"

Metti in pratica il controllo del PIN con tentativi limitati su Flowgorithm:

Quiz di Verifica del Laboratorio

Rispondi alle 3 domande per verificare se hai compreso la logica del controllo del PIN a tentativi limitati.

1. Perché nella condizione del ciclo si usa l'operatore AND (E) tra pinInserito != PIN_CORRETTO e tentativi < 3?

2. Se l'utente digita il PIN corretto al 1° tentativo, cosa succede al ciclo MENTRE?

3. Come fa il programma fuori dal ciclo a capire se deve stampare "Accesso Consentito" o "Carta Bloccata"?


In sintesi

Argomenti: concetti principali, riepilogo, competenze

  1. Applicazione di sicurezza reale: richiesta PIN con limite massimo di 3 tentativi errati.
  2. Gestione congiunta di un contatore di tentativi (tentativi = tentativi + 1) e del controllo del PIN segreto.
  3. Condizione di uscita dal ciclo: il ciclo termina sia se il PIN e' corretto, sia se si raggiunge il terzo tentativo fallito.

Cosa hai imparato
  1. Coordinare la verifica dell'input con un contatore limite di tentativi.
  2. Formulare le condizioni logiche di permanenza nel ciclo (PIN errato AND tentativi < 3).
  3. Gestire le due strade di output finale fuori dal ciclo: Accesso Consentito oppure Carta Bloccata.


Laboratorio, Esercitazione, Validazione PIN, Tentativi Massimi, Ciclo Esegui Mentre, DO WHILE, Sicurezza, Flowgorithm, Pseudocodice,