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 1pinInserito != 1234 |
Test 2tentativi < 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.
In sintesi
Argomenti: concetti principali, riepilogo, competenze
- Applicazione di sicurezza reale: richiesta PIN con limite massimo di 3 tentativi errati.
- Gestione congiunta di un contatore di tentativi (tentativi = tentativi + 1) e del controllo del PIN segreto.
- Condizione di uscita dal ciclo: il ciclo termina sia se il PIN e' corretto, sia se si raggiunge il terzo tentativo fallito.
- Coordinare la verifica dell'input con un contatore limite di tentativi.
- Formulare le condizioni logiche di permanenza nel ciclo (PIN errato AND tentativi < 3).
- Gestire le due strade di output finale fuori dal ciclo: Accesso Consentito oppure Carta Bloccata.