Calcolatori Elettronici

Prova d'esame del 11 settembre 2000

Introduzione:

Il codice fiscale utilizzato in Italia è formato da 16 caratteri alfanumerici che codificano alcune informazioni sulla persona a cui fa riferimento il codice. Nell'ordine si hanno:

1. 3 lettere derivanti dal cognome (tipicamente consonanti),

2. 3 lettere derivanti dal nome (tipicamente consonanti),

3. le ultime due cifre dell'anno di nascita,

4. una lettera che codifica il mese (A=gennaio; B=febbraio; C=marzo; D=aprile; E=maggio; H=giugno; L=luglio; M=agosto; P=settembre; R=ottobre; S=novembre; T=dicembre),

5. le due cifre del giorno di nascita a cui viene sommato 40 per le donne;

6. 4 caratteri alfanumerici (nell'ordine una lettera e tre numeri) che codificano il comune di nascita,

7. una lettera finale di verifica del codice.

Ad esempio Teodora Arguti nata a Parma il 7 ottobre 1982 avrebbe come codice: RGTTDR82R47G337Q

Esercizio:

Scrivere un programma assembly che effettui un controllo (molto semplificato) di congruenza del codice fiscale.

Il programma dovrà prendere in ingresso un codice fiscale ed effettuare i seguenti controlli:

1. Verificare che il codice sia formato da 16 caratteri alfanumerici (solo lettere maiuscole e numeri);

2. Verificare che i primi sei caratteri siano consonanti;

3. Verificare che i successivi due caratteri siano numeri e stampare il relativo anno di nascita;

4. Verificare che la lettera che codifica il mese di nascita sia congruente con le indicazioni fornite e stampare il relativo mese;

5. Verificare che i successivi due caratteri siano numeri e stampare giorno di nascita e sesso indicati, controllare che il giorno di nascita sia congruente;

6. Verificare che i successivi 4 caratteri siano rispettivamente una lettera e tre cifre;

7. Verificare che l'ultimo carattere sia una lettera.

Si sviluppi il programma in maniera modulare, portando a termine inizialmente solo il punto 1 e successivamente integrando una ad una le altre operazioni di verifica.

Esempio:

Introdurre codice fiscale: RGTTDR82R87G337Q

Verifica lunghezza: corretto

Verifica cognome: corretto

Verifica nome: corretto

Verifica anno: 1982

Verifica mese: ottobre

Verifica giorno e sesso: ERRORE!