Problema 1 (18 punti) Una spia invia al suo capo messaggi composti di sole lettere maiuscole, senza spazi né segni di interpuzione. Prima di inviare un messaggio, la spia lo trasforma usando un codice crittografico. Il codice crittografico, rappresentato in un file, è composto da una sequenza di linee, dove ogni linea ha il formato:
L XYZ
dove L, X, Y e Z sono lettere maiuscole dell'alfabeto inglese. L'ovvio significato del codice è che la lettera L deve essere tradotta con la sequenza di lettere XYZ. Ad esempio, se il codice è il seguente:
C XXX I QWE O OPA A EMU L CAR S ONEed il messaggio è il seguente:
CIAOLISAil testo tradotto è il seguente:
XXXQWEEMUOPACARQWEONEEMUSi noti che (come evidenziato nell'esempio) non necessariamente tutte le 26 lettere dell'alfabeto inglese sono codificate.
Due aspetti che devono essere presi in considerazione sono i seguenti:
O USA
il codice sarebbe incoerente.
CIAOANNA
il codice visto in precedenza sarebbe incompleto, perché la lettera N non è codificata.
In particolare, si richiede di risolvere i seguenti punti:
Problema 2 (4 punti)
Descrivere gli aspetti fondamentali della ricorsione, fornendo almeno un esempio di unità di programma Pascal ricorsiva. Descrivere inoltre la maniera in cui la ricorsione è implementata in Pascal.
Problema 3 (4 punti)
Scrivere un programma Pascal che costruisca in memoria la lista illustrata in figura. Il programma deve essere completo, cioè deve essere compilabile.
____ __________ __________ _________ _________ | | | | | | | | | | | | | /| | --------->| 'c' | ----->| 'i' | ----->| 'a' | ----->| 'o' | / | |____| |_______|__| |_______|__| |______|__| |_____|/__|
Problema 4 (4 punti)
Scrivere un sottoprogramma Fortran che, ricevendo come parametro una matrice quadrata di interi positivi di dimensione n per n, calcoli e restituisca in modo opportuno al programma chiamante: