DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4: 15 Aprile 2013 Gianluca Durelli – [email protected] Marco D. Santambrogio – [email protected] Ver. aggiornata al 14 Aprile 2013 Argomenti DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Argomenti di questo laboratorio: Funzioni Passaggio parametri per valore/indirizzo Strutture dati • Obiettivo: Risolvere completamente un esercizio Cercare di impostarne un secondo 2 Esercizi DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Cifrario a scorrimento • Calcoli su triangolo • Libreria: Creazione catalogo libri Ricerca libro Ordinamento oggetti Acquisto libro 3 Esercizio 1 - Cifrario a scorrimento DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • I cifrari a scorrimento sono metodi di cifratura che agiscono su un testo in cui ogni lettera del testo in chiaro viene sostituita, nel testo cifrato, con la lettera che si trova un certo numero di posizioni dopo nell’alfabeto. • La sostituzione avviene lettera per lettera scorrendo il testo dall’inizio alla fine. • Un famoso cifrario a scorrimento è il cifrario di Cesare, usato da Cesare per cifrare le comunicazioni militari, che utilizzava uno spostamento di 3 caratteri. Testo in chiaro: abcdefghiklmnopqrstux Testo cifrato: DEFGHIKLMNOPQRSTVXABC • Un altro cifrario famoso è il ROT13 che utilizza uno spostamento di 13 caratteri. 4 Esercizio 1 - Cifrario a scorrimento DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma che, ricevuta in ingresso una stringa di testo, prima la cifri usando ROT13 e poi decifri la stringa così ottenuta per riavere la stringa iniziale. V1: Passaggio per copia • Si risolva l’esercizio definendo le funzioni crypt e decrypt che, ricevuto in ingresso un carattere passato per copia lo cifrino o decifrino secondo lo schema ROT13. V2: Passaggio per indirizzo • Si risolva l’esercizio definendo le funzioni crypt e decrypt che, ricevuto in ingresso un carattere passato per copia lo cifrino o decifrino secondo lo schema ROT13. Cosa succede se usate la funzione crypt anche per decifrare il testo? Perchè? 5 Esercizio 2 - Calcoli su triangolo DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma che chieda all’utente di inserire 3 punti del piano che identificano i vertici di un triangolo e calcoli perimetro ed area del triangolo stesso. Es.: A(0, 1) - B(1, 4) – C(2, 2) • • Perimetro: 7.634414 Area: 2.5 Si definiscano ed utilizzino tutte le strutture dati che si ritengono opportune, in particolare si definisca: • • • Punto Retta (definita da un punto ed il suo coefficiente angolare) Triangolo (definito dai suoi tre vertici e gli attributi perimetro ed area) V1: Si usi una funzione calcolaTriangolo che riceva in ingresso una struttura di tipo triangolo passata per copia e la aggiorni con perimetro ed area. V2: Si usi una funzione calcolaTriangolo che riceva in ingresso una struttura di tipo triangolo passata per indirizzo e la aggiorni con perimetro ed area. Si risolva il problema usando diverse funzioni come ad esempio: • • • • • lunghezzaSegmento calcolaPerimetro calcolaArea coeffAngolareRetta puntoIntersezioneRette 6 Libreria DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si definiscano le strutture ed i tipi di dato necessari a modellizzare un catalogo di libri per una libreria. • In particolare si definisca il tipo di dato libro identificato da: Codice numerico Titolo Costo Numero di copie disponibili • Sfruttando i tipi di dato qui definiti si affrontino i problemi successivi 7 Esercizio 3 - Libreria: Creazione catalogo DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma che permetta di creare il catalogo della libreria. • Il programma chiede all’utente quanti libri si vogliono inserire e poi procede con la richiesta dei dati sul singolo libro • Vincolo: Si risolva l’esercizio usando una funzione aggiungiAlCatalogo che ricevuto in ingresso un libro lo aggiunga nella prima posizione disponibile del catalogo. 8 Esercizio 4 - Libreria: Ricerca libro DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma che permetta la ricerca di un libro nel catalogo dei libri disponibili. • Il programma chiede all’utente di inserire un titolo, oppure un codice per effettuare la ricerca del libro. • Se il libro desiderato viene trovato nel catalogo si stampino a video le sue proprietà (codice, titolo, costo, copie disponibili). • Vincolo: Si utilizzino due funzioni cercaTitolo e cercaCodice per risolvere l’esercizio. Le funzioni devono ritornare un oggetto di tipo libro. 9 Esercizio 5 - Libreria: Ordinamento Oggetti DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma che permetta di ordinare il catalogo secondo una proprietà scelta dall’utente (codice, titolo, costo oppure copie disponibili). • Si ordini il catalogo e se ne effettui la stampa. • Vincolo: Si utilizzino quattro funzioni differenti per ordinare il catalogo secondo le diverse proprietà. • Suggerimento: Si usi una funzione scambia per scambiare le posizioni di due libri nel catalogo. 10 Esercizio 6 - Libreria: Acquisto libro DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma che permetta di effettuare l’acquisto di un libro. • Il programma chiede all’utente il libro che desidera comprare (titolo oppure codice) ed il numero di copie desiderate. • Se è possibile effettuare la vendita si presenti all’utente il totale da pagare, altrimenti si comunichi il motivo del mancato acquisto: Libro non presente nell’archivio Copie desiderate non disponibili • Vincolo: Si utilizzi la funzione acquista che ricevuto in ingresso un libro ed il numero di copie desiderate ritorni il risultato dell’acquisto. 11 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • BUON LAVORO! 12