Università degli Studi di Milano

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Università degli Studi di Milano"

Transcript

1 Università degli Studi di Milano Corso di Laurea in Sicurezza dei Sistemi e delle Reti Informatiche Lezione 1 Crittazione e decrittazione. Parte I: Cesare ed Alberti FABIO SCOTTI Laboratorio di programmazione per la sicurezza

2 Indice 1. ORIGINI DELLA CRITTOGRAFIA TERMINOLOGIA E CIFRARIO DI JULIUS CAESAR Terminologia Cifrario di Julius Caesar (50 a.c. circa) Programmi per la crittazione secondo Cesare ROTTURA DEL CODICE DI CESARE E FREQUENZA DELLE LETTERE Rottura del codice di Cesare Programmi il calcolo della frequenza delle lettere CRITTAZIONE E DECRITTAZIONE SECONDO ALBERTI Il codice di Alberti Primo modo di utilizzo del disco di Alberti Il vero metodo di crittazione di Alberti Programmi per il calcolo della frequenza delle lettere Crittazione e decrittazione - parte I Pagina 2 di 15

3 1. Origini della crittografia L etimologia del nome CRITTOGRAFIA deriva dal greco kryptos-grafein: (kryptos), aggettivo = occulto, segreto (grafo), verbo, infinito (grafein) = (1) graffiare, scalfire, incidere; (2) scrivere I primi metodi crittografici sono molto antichi e diffusi in tutto il mondo. Sono presenti esempi di crittografia già in Egitto 4000 anni fa, in Cina, in Mesopotamia, in Tibet ed in Indonesia. Esempi particolarmente famosi si trovano nella Grecia antica (Erodoto narra dell'espediente della tavoletta di cera per nascondere un messaggio segreto) e nella Bibbia (nel libro di Geremia vi è una crittazione della parola Babilonia, ed elementi di crittografia sono presenti anche nell alfabeto Atbash, ossia rovesciato). Nella storia la crittografia si è diffusa in tutte le culture "evolute" per scopi militari e diplomatici. Oggi e' in ogni PC e serve per infiniti scopi quali transazioni economiche, trasmissioni e memorizzazione di dati riservati, firma digitale, ecc. 2. Terminologia e cifrario di Julius Caesar 2.1 Terminologia La crittanalisi e' l'insieme dei metodi per forzare un testo cifrato. Gli algoritmi di crittazione a chiavi simmetriche (gli unici che esamineremo nel corso) sono i sistemi di crittazione dove i due interlocutori concordano preventivamente un algoritmo e una chiave di crittazione. Per i sistemi a chiavi simmetriche, queste due informazioni (algoritmo e chiave) sono sufficienti sia per crittare, sia per decrittare il messaggio. Tipicamente il file da crittare si dice in chiaro. In gergo, trovare un metodo che permetta di ricostruire un testo in chiaro da uno crittato senza avere tutte le informazioni previste (algoritmo e chiave) si dice rompere il codice. Tipicamente, il crittoanalista (colui che studia i codici crittografici e cerca o previene i metodi per romperli) conosce il codice (anche parzialmente) che è stato usato, ma non la chiave. Un esempio di questa situazione è la rottura da parte dei crittoanalisti inglesi del codice crittografico tedesco Enigma durante la seconda guerra mondiale. Un tentativo di rompere un codice viene detto attacco al codice, sia esso eseguito manualmente, sia usando macchine calcolatrici meccaniche, elettromeccaniche o calcolatori elettronici. Un attacco a forza bruta è un tipo di attacco che prova tutte le possibili combinazioni per decrittare un messaggio crittato una volta che si è stabilito l algoritmo, ma non si conosce la chiave. Solitamente un metodo crittografico si dice tanto più robusto quanto più numerosi sono i tentativi necessari per romperlo mediante un attacco con forza bruta. Quando un mittente A manda un messaggio a B ed un terzo personaggio cerca di decrittare il messaggio con le informazioni che riesce a trovare, i fantasiosi crittanalisti si riferiscono rispettivamente a Alice (A), Bob (B), ed Eva (lo spione). I cifrari o codici si dividono in monoalfabetici e polialfabetici. Crittazione e decrittazione - parte I Pagina 3 di 15

4 Nei monoalfabetici ogni lettera del testo chiaro viene cifrata sempre con la stessa lettera cifrata, (o con lo stesso gruppo di lettere) secondo una lista cifrante convenuta, ad esempio come avviene nel metodo di Cesare. Nei cifrari polialfabetici alla singola lettera del testo chiaro non corrisponde sempre la stessa lettera nel cifrato, ma l'alfabeto cifrante viene cambiato secondo una qualche regola convenuta, come ad esempio avviene nel metodo di Vigenère 2.2 Cifrario di Julius Caesar (50 a.c. circa) Il cifrario di cui ci occupiamo è un esempio di cifratura per sostituzione a chiave fissa. Cesare scambiava in modo segreto con i suoi generali un numero intero (la chiave). Tutte le lettere del messaggio venivano traslate in avanti nell'alfabeto di un numero di lettere pari alla chiave, ottenendo il testo crittato. Ad esempio se abbiamo Chiave = 1, attaccateora diventa buubddbufpsb Il metodo e' sicuro solo per messaggi brevissimi ed e' meglio cambiare la chiave ogni volta che si critta un nuovo messaggio. Perchè sono necessarie queste raccomandazioni? Se il messaggio è lungo -con dei metodi che saranno spiegati nel corso della lezione- è possibile calcolare la chiave con la quale è stato crittato e quindi decrittare il messaggio stesso, essendo il metodo di Cesare un metodo a chiave simmetrica. Anche nel caso di messaggio corti ma composti dalla stessa chiave potrebbe essere possibile unirli e riottenere ugualmente un messaggio lungo abbastanza da riuscire a calcolare la chiave. Non è certo se l'inventore di questo algoritmo sia stato veramente Giulio Cesare, ma sicuramente l imperatore romano lo utilizzò ampiamente per i dispacci militari durante la campagna di Gallia. Nel 55 a.c. pochissimi conoscevano la scrittura, il latino, e probabilmente non possedevano nemmeno l'idea stessa della crittografia, pertanto questo sistema era molto adatto ai tempi. 2.3 Programmi per la crittazione secondo Cesare I programmi che verranno studiati nel corso crittano/decrittano file testuali contenenti caratteri alfanumerici del codice ASCII. I caratteri vengono rappresentati in C mediante la dichiarazione di variabili di tipo char. Si ricorda che il codice ASCII associa ad ogni carattere un intero, ad esempio al carattere # è associato il numero 35 e alle lettere 0 9 della nostra tastiera i numeri dal 48 al 57. Ad esempio, per quanto riguarda le lettere a z della nostra tastiera sono stati associati i numeri dal 97 al 122. La cosa più importante da ricordare è che i caratteri in C possono essere usati come interi se ci ricordiamo la corrispondenza fra il carattere ed il suo valore nel codice (es: a 97) Per creare un programma che critta un file di testo secondo il metodo di Cesare seguiremo le seguenti fasi: 1) apriamo in lettura il file in chiaro da crittare; 2) apriamo in scrittura/creiamo ex-novo il file crittato; 3) leggiamo il file in chiaro carattere per carattere; 4) ad ogni carattere sommiamo la chiave e lo salviamo nel file crittato; Crittazione e decrittazione - parte I Pagina 4 di 15

5 5) chiudiamo i file. Il codice C che implementa le fasi descritte potrebbe essere il seguente. #include <stdio.h> #include <stdlib.h> int main() int chiave ; // chiave di cesare char c; // buffer temporaneo per il carattere letto char nomefile1[]="testo_in_chiaro.txt" ; char nomefile2[]="testo_cifrato.txt" ; FILE * Fp1 ; FILE * Fp2 ; // apertura dal file in lettura Fp1 = fopen(nomefile1, "r"); if (Fp1==NULL) printf("file %s not found\n", nomefile1); getchar(); return(-1); // apertura del file in scrittura Fp2 = fopen(nomefile2, "w"); if (Fp2==NULL) printf("problemi nella apertura/creazione del file %s \n", nomefile2); getchar(); return(-1); fflush(stdin); printf("immettere la chiave di cifratura --->"); scanf( "%d", &chiave ); ///////////////////////////////// // Crittazione e scrittura del risultato carattere per carattere while ( fscanf(fp1, "%c", &c)== 1 ) c = c + (char) chiave; fprintf( Fp2, "%c", c ); fclose (nomefile1); fclose (nomefile2); getchar(); exit(0); // main La parte interessante per la crittazione è semplicemente questa while ( fscanf(fp1, "%c", &c)== 1 ) c = c + (char) chiave; fprintf( Fp2, "%c", c ); Crittazione e decrittazione - parte I Pagina 5 di 15

6 E evidente come al carattere corrente letto dal file in chiaro venga semplicemente sommata la chiave. Ricordo che questa semplice somma è possibile in quanto i caratteri in C sono rappresentati come interi. L uso del cast nella riga c = c + (char) chiave; è una buona norma di programmazione in quanto per il C chiave è stata definita come intero mentre c come carattere. Prima di eseguire delle operazioni fra due variabili è meglio riportarle esplicitamente allo stesso tipo usando un cast. Immaginiamo di avere nel file testo_in_chiaro.txt il seguente testo tratto da Debello Gallico: Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Dopo aver compilato e lanciato il nostro programma, troviamo nel file testo_cifrato.txt i seguenti caratteri. Jdoold#hvw#rpqlv#glylvd#lq#sduwhv#wuhv/#txduxp#xqdp#lqfroxqw#Ehojdh/#dol dp#dtxlwdql/#whuwldp#txl#lsvruxp#olqjxd#fhowdh/#qrvwud# Jdool#dsshoodqwxu1 Appare evidente che il programma ha impiegato la chiave di crittazione con valore 3 in quanto la G è stata tradotta in J, ecc. Il programma che decritta secondo Cesare dovrà semplicemente leggere i caratteri del file crittato e sottrarre la chiave, ovvero: c = c - (char) chiave; Crittazione e decrittazione - parte I Pagina 6 di 15

7 3. Rottura del codice di Cesare e frequenza delle lettere 3.1 Rottura del codice di Cesare La semplicità con la quale il codice di Cesare può essere rotto è legata al fatto che la chiave ha soltanto 26 possibili valori nel caso di solo lettere maiuscole. Ovviamente è facile rompere il codice se siamo proprio sicuri del metodo con il quale è stato crittato. Immaginiamo che arrivi il seguente messaggio crittato ad un crittoanalista. Quello che probabilmente il crittoanalista farebbe è provare a sommare tutte le chiavi al messaggio e scriversi i tentativi di decrittazione del messaggio fino a quando appare il testo in chiaro. CIPHER:..K H P G Y H Q C N F I L H O X K M A X.. ===================================== L I Q H Z I R D O G J M I P Y L N B Y M J R I A J S E P H K N J Q Z M O C Z N K S J B K T F Q I L O K R A N P D A O L T K C L U G R J M P L S B O Q E B P M U L D M V H S K N Q M T C P R F C Q N V M E N W I T L O R N U D Q S G D SOLUTION: R O W N F O X J U M P S O V E R T H E S P X O G P Y K V N Q T P W. S U I F T Q Y P H Q Z L W O R U Q X. T J G U.. Q I R A M X P S V R Y.. V.. R J S B N Y Q T. S S K T C O Z R U U D P A S V..... V E Q B T..... W F R... X G S.. Y T Z Come è possibile notare, il messaggio non è proprio evidente, anzi se non si controllassero bene tutti i tentativi, il messaggio in chiaro passerebbe inosservato. La soluzione infatti è R O W N F O X J U M P S O V E R T H E ovvero una parte della frase the rown fox jumps over the fence. Togliendo gli spazi e usando una lingua diversa da quella attesa, chi ha prodotto il testo crittato stava per eludere gli sforzi del crittoanalista. A parte questi metodi manuali esistono metodi automatici per la rottura del codice di Cesare basati sul calcolo delle frequenze delle lettere. Ogni lingua ha, infatti, la sua peculiare frequenza delle lettere. L idea è quella di calcolare la frequenza con cui appare nel messaggio la a, la b eccetera e confrontare poi queste frequenze cosi ottenute con quelle della lingua del messaggio. Ovviamente, se la lettera b compare 32,33 volte su 100 nel messaggio crittato e nella lingua la lettera d compare 32,31 volte su 100, possiamo provare a decrittare il messaggio con chiave = 2. Crittazione e decrittazione - parte I Pagina 7 di 15

8 Perché la frequenza delle lettere che è stata rilevata nel messaggio abbia un significato statistico interessante rispetto alla frequenza delle lettere nella lingua, appare evidente che il messaggio debba essere abbastanza lungo. Diversamente potremmo avere molti messaggi crittati con la stessa chiave nella stessa lingua (il crittoanalista era pigro, poco furbo oppure per molti motivi non è stato possibile avvisare il destinatario del messaggio che la chiave sarebbe cambiata). In questo caso basta unire i messaggio per ottenere una statistica migliore delle lettere. 3.2 Programmi il calcolo della frequenza delle lettere Un programma che calcoli le frequenze delle lettere in un file testuale deve essenzialmente conteggiare tutte le lettere ed il numero di caratteri totali. La frequenza di una lettera sarà semplicemente il rapporto fra il conteggio e il numero totale di caratteri letti. Il nostro programma ha pertento necessità di una variabile che conteggi tutti caratteri letti (di tipo long è meglio per leggere anche file molto lunghi), di un buffer temporaneo per il carattere letto (meglio unsigned char per poter leggere e quindi conteggiare tutti caratteri della tabella ASCII estesa). Le frequenze (ovviamente float) possono essere memorizzate in un array lungo quanti sono i caratteri che vogliamo conteggiare. Se vogliamo rilevare le frequenze di tutti i possibili caratteri della tabella ASCII estesa (che sono 256) allora dichiareremo un array di 256 float. Pertanto ecco il codice che può essere utile. long totale; unsigned char c; // buffer temporaneo per il carattere letto float frequenze[256]; // float visto che saranno numeri del tipo 0.123% // inizializzazione del vettore for (i=0; i<256; i++) frequenze[i] = 0 ; totale = 0; Ovviamente TUTTI I CONTATORI DEVONO ESSERE INIZIALIZZATI a zero, se non vogliamo produrre valori errati nei conteggi. Immaginiamo di avere aperto in lettura con un puntatore a file Fp1 il file di caratteri di cui vogliamo calcolare le frequenze. Per prima cosa controlliamo se il carattere letto cade nella tabella ASCII. Se vogliamo considerare i 256 caratteri della tabella, controlleremo che il valore numerico del carattere letto sia maggiore di 0 e minore di 256, altrimenti rileveremo un errore e fermeremo il programma con una chiamata a exit(-1). ///////////////////////////////// // controllo delle frequenze while ( fscanf(fp1, "%c", &c)== 1 ) if ( ( c < 0 ) ( c > 256 ) ) // e'nella tabella ASCII? printf("il carattere %c non e'fra 0-255!\n", c); getchar(); exit(-1); temp = (int) c; // meglio usare un cast per essere sicuri // di leggere come intero il carattere Crittazione e decrittazione - parte I Pagina 8 di 15

9 Il conteggio dei caratteri può avvenire in modo molto semplice nel modo seguente: se il carattere letto dal file è il carattere numero 34 della tabella ASCII, andiamo ad incrementare di uno la cella numero 34 del vettore frequenze[], e così via. Aumentiamo il conteggio totale dei caratteri. frequenze[temp]= frequenze[temp]+1; totale = totale + 1 ; // chiusura del while (ciclo di lettura dei caratteri da file) All uscita del ciclo while quello che abbiamo nel vettore di float frequenze[] è il numero di occorrenze per ognuno dei caratteri della tabella ASCII, un valore intero quindi. Per ottenere le vere frequenze è sufficiente dividere tutte le celle del vettore per il numero totale di caratteri conteggiati. for (i=0; i<256; i++) // normalizzazione dei conteggi frequenze[i] = frequenze[i] / totale * 100 ; Analizziamo ad esempio il seguente brano tratto dai Promessi sposi di Alessandro Manzoni con il codice che abbiamo commentato CAPITOLO I Quel ramo del lago di Como, che volge a mezzogiorno, tra due catene non interrotte di monti, tutto a seni e a golfi, a seconda dello sporgere e del rientrare di quelli, vien, quasi a un tratto, a ristringersi, e a prender corso e figura di fiume, tra un promontorio a destra, e un'ampia costiera dall'altra parte; e il ponte, che ivi congiunge le due rive, par che renda ancor più sensibile all'occhio questa trasformazione, e segni il punto in cui il lago cessa, e l'adda rincomincia, per ripigliar poi nome di lago dove le rive, allontanandosi di nuovo, lascian l'acqua distendersi e rallentarsi in nuovi golfi e in nuovi seni. Così facendo otterremmo le seguenti frequenze dei caratteri sotto riportate.... n=65, A, freq= n=66, B, freq= n=67, C, freq= n=68, D, freq= n=69, E, freq= n=70, F, freq= n=71, G, freq= n=72, H, freq= n=73, I, freq= n=74, J, freq= n=75, K, freq= n=76, L, freq= n=77, M, freq= n=78, N, freq= n=79, O, freq= n=80, P, freq= n=81, Q, freq= n=82, R, freq= n=83, S, freq= n=84, T, freq= n=85, U, freq= n=86, V, freq= Crittazione e decrittazione - parte I Pagina 9 di 15

10 n=87, W, freq= n=88, X, freq= n=89, Y, freq= n=90, Z, freq= n=91, [, freq= n=92, \, freq= n=93, ], freq= n=94, ^, freq= n=95, _, freq= n=96, `, freq= n=97, a, freq= n=98, b, freq= n=99, c, freq= n=100, d, freq= n=101, e, freq= n=102, f, freq= n=103, g, freq= n=104, h, freq= n=105, i, freq= n=106, j, freq= n=107, k, freq= Come è possibile vedere, abbiamo il 9.55% di possibilità di incontrare una e, il 7,99% di incontrare una a, ecc.. Crittazione e decrittazione - parte I Pagina 10 di 15

11 4. Crittazione e decrittazione secondo Alberti 4.1 Il codice di Alberti Leon Battista Alberti (Genova 1406-Roma 1472) è una delle maggiori figure del Rinascimento, elaboratore della prospettiva matematica, teorico dell'arte, filosofo, architetto, musicista, pittore, scultore ed anche crittoanalista. Leon Battista Alberti scoprì che le frequenze delle lettere nei testi non sono casuali. Alcune sue osservazioni riguardano i testi latini dove ad esempio scoprì che ogni 300 vocali si hanno 400 consonanti, oppure che se una parola finisce con una consonante, l'ultima lettera deve essere per forza una c,s,t o x. Nell ambito dei messaggi crittografati osservò che se in un testo si incontravano più di 20 simboli diversi, si doveva essere in presenza di crittografia che utilizzava codici privi di significato utilizzati come disturbo, oppure si stava usando crittografia omofona, ovvero un sistema crittografico che associa alla stessa lettera più simboli. In base alle sue deduzioni e scoperte sui punti deboli della crittografia dell'epoca, inventò quello che è considerato come il primo sistema polialfabetico della storia della crittanalisi. L apparato crittografico da lui inventato è molto semplice, ma nello stesso tempo molto avanzato, tanto è vero che dovettero passare 1500 anni dal codice di Cesare per avere una scoperta di tale portata. L apparato è composto da 2 dischi di rame, uno più piccolo dell'altro, collegati al centro e liberi di ruotare indipendentemente. Sul disco più esterno erano riportate tutte le lettere dell'alfabeto ad esclusione di H,Y e K. Erano invece aggiunte le cifre 1, 2, 3 e 4. Sul disco interno erano invece presenti tutte le lettere dell'alfabeto più "et", in ordine casuale. Mittente e destinatario devono avere lo stesso apparato Primo modo di utilizzo del disco di Alberti Il primo modo di impiegare i dischi di Alberti è molto semplice ed è quello che impiegheremo negli esercizi di programmazione (il nostro corso non vuole essere un corso di crittanalisi). Ecco i passi del procedimento: 1. Si considerino due dischetti concentrici con le lettere dell'alfabeto stampate sul bordo esterno. Sia la sequenza esterna [ A B C D E F... X Y Z], mentre la sequenza sul dischetto interno venga creata in modo casuale, es: [ A Y D X W F... Y ] Crittazione e decrittazione - parte I Pagina 11 di 15

12 2. Si sceglie una posizione iniziale, nella quale, ad esempio, la A esterna si accoppia con la X del dischetto interno. A quel punto i due dischi non si fanno più ruotare. 3. Si inizia a cifrare il messaggio semplicemente guardando i dischi. Ad esempio se i dischi si sono stati bloccati accoppiando la A sul disco esterno con la X sul disco interno si ottiene dalla stringa in chiaro ABC la stringa crittata XWF. Ricordiamoci di togliere gli spazi nel messaggio in chiaro e di scrivere i numeri a parole. Quelle che fanno i due dischetti non è null altro che sostituire una lettera del messaggio in chiaro con un'altra usando una tabella di conversione. Semplicemente, al posto che usare la tabella, Alberti usò i due dischi con le lettere. Infatti una volta che i dischi sono solidali (immaginiamo di bloccarne la rotazione) i dischi funzionano esattamente come la tabella seguente. Lettera sul disco esterno A B C Lettera sul disco intero s r d Usato in questo modo appare evidente che il disco di Alberti è un metodo di sostituzione. Altro modo di vedere questo metodo di sostituzione è immaginare che ogni lettera venga crittata alla Cesare, ognuna con la sua chiave. Ad esempio, immaginando la posizione dei dischi come quella fissata in figura, la A diventa s e quindi potremmo dire che è stata spostata di 15 in avanti, la C solo di uno, ecc. Il difetto di questo utilizzo è che la frequenza delle lettere in un messaggio lungo rimane quella della lingua italiana (o latina nel caso di Alberti). Infatti anche se tutte le A del messaggio diventano s, la loro frequenza di apparizione nel testo crittato sarà la stessa della lingua. Quindi è ancora possibile attaccare il metodo usando le frequenze delle lettere. Questo inconveniente era noto a Leon Battista Alberti, infatti inventò una variazione dell uso dei dischi che rende impossibile l attacco diretto mediante analisi delle frequenze delle lettere. Questo metodo è presentato brevemente nel prossimo paragrafo Il vero metodo di crittazione di Alberti Alberti riuscì a neutralizzare gli attacchi al suo codice mediante il metodo dell analisi delle frequenze delle lettere trovando il sistema per cambiare PER OGNI PAROLA CRITTATA la tabella di conversione. Come è possibile questo? Semplicemente girando il disco ogni nuova parola, e trasmettendo prima di ogni parola crittata la posizione raggiunta del disco interno: semplice, ma geniale. Mittente e riceventi dovevano quindi possedere lo stesso congegno e dovevano conoscere la lettera che sarebbe stata la chiave di partenza. Crittazione e decrittazione - parte I Pagina 12 di 15

13 Per crittare il messaggio, il mittente iniziava ruotando il disco interno in maniera casuale. Iniziava quindi a scrivere il testo cifrato, riportando per prima cosa la lettera sul disco piccolo in corrispondenza della chiave concordata sul disco grande. Passava quindi ad eseguire la sostituzione del testo prelevando i caratteri sul disco più piccolo in corrispondenza dei caratteri da cifrare sul disco più grande. Terminata la prima parola, ruotava di nuovo in maniera casuale il disco interno ed iniziava a scrivere la nuova parola riportando nel cifrato la lettera sul disco piccolo in corrispondenza della chiave concordata sul disco grande, seguita dalla parola le cui lettere venivano ancora sostituite dalla corrispondenza tra disco grande e disco piccolo. In questo modo, ogni parola utilizzava un proprio alfabeto di sostituzione. Con i dischi di Alberti ve ne sono 24 disponibili. Per questo motivo il metodo crittografico di Alberti è classificato tra i polialfabetici. Facendo in questo modo, Leon Battista Alberti di fatto impediva l'analisi statistica basata sulla frequenza delle lettere che lui stesso aveva studiato. L'unico svantaggio del metodo è che la sicurezza è affidata ad una chiave di cifratura di un solo carattere (e dal possesso dei dischi ). Possedendo un apparecchio, sarebbe semplicissimo decifrare il messaggio anche senza sapere che la prima lettera di ogni parola e la chiave di cifratura, basterebbe provare per ogni parola le 24 posizioni del disco. Questo se è disponibile l informazione di come i dischi venivano usati (ossia l algoritmo), altrimenti vi è un grado di difficoltà maggiore. 4.2 Programmi per il calcolo della frequenza delle lettere Nei nostri esercizi ci occupiamo solo del primo metodo, ovvero del cifrario per sostituzione. Il cuore di un programma per la crittazione e descrittazione secondo il metodo più semplice di Alberti è quindi basato su una tabella. Una possibile soluzione è evidente se si scrive la tabella di sostituzione indicando anche il valore dei caratteri nella tabella ASCII. Scriviamola per i 26 caratteri maiuscoli. La nostra ipotesi di lavoro è che i testi da crittare sono composti da solo caratteri maiuscoli e gli spazi non vengono considerati. Indice INGRESSO CRITTATO 1 65 A 83 S 2 66 B 79 O 3 67 C 90 Z 4 68 D 65 A 5 69 E 89 Y 6 70 F 67 C 7 71 G 88 X 8 72 H 78 N 9 73 I 68 D J 71 G K 74 J L 66 B M 76 L N 77 M Crittazione e decrittazione - parte I Pagina 13 di 15

14 15 79 O 75 K P 80 P Q 69 E R 87 W S 86 V T 82 R U 70 F V 84 T W 85 U X 81 Q Y 72 H Z 73 I Nella soluzione scriveremo un vettore di sostituzione Alberti[26] contenente i caratteri da sostituire espressi come interi della tabella ASCII, quindi i valori seguenti. i Alberti[i] Immaginiamo che la variabile c (definita come unsigned char) contenga il carattere da crittare. Sappiamo trovare il carattere da sostituire con queste semplici righe di codice: indice = ( (int) c ) 64; // 64 e il numero dove le lettere MAIUSCOLE //iniziano nella tabella ASCII c_crittato = ( char ) Alberti[indice]; Crittazione e decrittazione - parte I Pagina 14 di 15

15 Nel caso della decrittazione invece è necessario scandire il vettori di interi Alberti[indice] cercando in che posizione si trova il carattere da decrittare. La posizione nella quale il carattere crittato si trova sommata a 64 (la base di partenza nella tabella ASCII dove iniziano i caratteri maiuscoli) produce il numero del carattere in chiaro. Ecco un esempio c_crittato = s ; i = 0; while (i < 26) // c_crittato contiene il carattere da decrittare // scandiamo il vettore Alberti[] if ( ((int) c_crittato ) == Alberti[i] ) break ; i = i + 1; c_decrittato = (char) (i + 64) ; // ricalcalo il carattere in chiaro Crittazione e decrittazione - parte I Pagina 15 di 15

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Crittografia. Appunti a cura del prof. Ing. Mario Catalano

Crittografia. Appunti a cura del prof. Ing. Mario Catalano Crittografia Appunti a cura del prof. Ing. Mario Catalano La crittografia La crittografia è la scienza che studia la scrittura e la lettura di messaggi in codice. Solitamente, i meccanismi crittografici

Dettagli

Analisi di programmi: Crittografia

Analisi di programmi: Crittografia Analisi di programmi: Crittografia Come caso concreto di sistema, proviamo ad abbozzare e a vedere una prima implementazione di un sistema di crittografia a chiave pubblica La crittografia studia le tecniche

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

PROGETTO LAUREE SCIENTIFICHE -MATEMATICA 2006/2007 Modelli Matematici per la Società Incontro del 15.02.07

PROGETTO LAUREE SCIENTIFICHE -MATEMATICA 2006/2007 Modelli Matematici per la Società Incontro del 15.02.07 PROGETTO LAUREE SCIENTIFICHE -MATEMATICA 2006/2007 Modelli Matematici per la Società Incontro del 15.02.07 CODICI MONOALFABETICI E ANALISI DELLE FREQUENZE (organizzata da Francesca Visentin) Riprendiamo

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo Logica Numerica Approfondimento E. Barbuto Minimo Comune Multiplo e Massimo Comun Divisore Il concetto di multiplo e di divisore Considerato un numero intero n, se esso viene moltiplicato per un numero

Dettagli

Analisi del testo letterario 1

Analisi del testo letterario 1 Analisi del testo letterario 1 discipline Analisi del testo letterario 1 - Isabella Chiari 2 esempio 1 Promessi sposi (A. Manzoni) Quel ramo del lago di Como, che volge a mezzogiorno, tra due catene non

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

UNA LEZIONE SUI NUMERI PRIMI: NASCE LA RITABELLA

UNA LEZIONE SUI NUMERI PRIMI: NASCE LA RITABELLA UNA LEZIONE SUI NUMERI PRIMI: NASCE LA RITABELLA Tutti gli anni, affrontando l argomento della divisibilità, trovavo utile far lavorare gli alunni sul Crivello di Eratostene. Presentavo ai ragazzi una

Dettagli

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

Interesse, sconto, ratei e risconti

Interesse, sconto, ratei e risconti TXT HTM PDF pdf P1 P2 P3 P4 293 Interesse, sconto, ratei e risconti Capitolo 129 129.1 Interesse semplice....................................................... 293 129.1.1 Esercizio per il calcolo dell

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi.

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi. Iniziamo con definizione (capiremo fra poco la sua utilità): DEFINIZIONE DI VARIABILE ALEATORIA Una variabile aleatoria (in breve v.a.) X è funzione che ha come dominio Ω e come codominio R. In formule:

Dettagli

Analisi e diagramma di Pareto

Analisi e diagramma di Pareto Analisi e diagramma di Pareto L'analisi di Pareto è una metodologia statistica utilizzata per individuare i problemi più rilevanti nella situazione in esame e quindi le priorità di intervento. L'obiettivo

Dettagli

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Plate Locator Riconoscimento Automatico di Targhe

Plate Locator Riconoscimento Automatico di Targhe Progetto per Laboratorio di Informatica 3 - Rimotti Daniele, Santinelli Gabriele Plate Locator Riconoscimento Automatico di Targhe Il programma plate_locator.m prende come input: l immagine della targa

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Dettagli

RISOLUTORE AUTOMATICO PER SUDOKU

RISOLUTORE AUTOMATICO PER SUDOKU RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU

Dettagli

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio

Dettagli

Interesse, sconto, ratei e risconti

Interesse, sconto, ratei e risconti 129 Interesse, sconto, ratei e risconti Capitolo 129 129.1 Interesse semplice....................................................... 129 129.1.1 Esercizio per il calcolo dell interesse semplice........................

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

1. PRIME PROPRIETÀ 2

1. PRIME PROPRIETÀ 2 RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,

Dettagli

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu

Dettagli

RC4 RC4. Davide Cerri. Davide Cerri CEFRIEL - Politecnico di Milano cerri@cefriel.it http://www.cefriel.it/~cerri/

RC4 RC4. Davide Cerri. Davide Cerri CEFRIEL - Politecnico di Milano cerri@cefriel.it http://www.cefriel.it/~cerri/ POLITECNICO DI MILANO CEFRIEL - Politecnico di Milano cerri@cefriel.it http://www.cefriel.it/~cerri/ è un cifrario a flusso progettato da Ron Rivest (la R di RSA) nel 1987. Era un segreto commerciale della

Dettagli

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 I CODICI 1 IL CODICE BCD 1 Somma in BCD 2 Sottrazione BCD 5 IL CODICE ECCESSO 3 20 La trasmissione delle informazioni Quarta Parte I codici Il codice BCD

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Parte 1. Vettori di bit - AA. 2012/13 1.1

Parte 1. Vettori di bit - AA. 2012/13 1.1 1.1 Parte 1 Vettori di bit 1.2 Notazione posizionale Ogni cifra assume un significato diverso a seconda della posizione in cui si trova Rappresentazione di un numero su n cifre in base b: Posizioni a n

Dettagli

Statistica. Lezione 6

Statistica. Lezione 6 Università degli Studi del Piemonte Orientale Corso di Laurea in Infermieristica Corso integrato in Scienze della Prevenzione e dei Servizi sanitari Statistica Lezione 6 a.a 011-01 Dott.ssa Daniela Ferrante

Dettagli

STAMPA DI UNA PAGINA SEMPLICE

STAMPA DI UNA PAGINA SEMPLICE Pagina 11 copiati nel proprio sistema (disco fisso o floppy). Questa operazione è detta download o scaricamento. Il modo più semplice per effettuare un download di un file (a meno che non sia specificato

Dettagli

Guida Compilazione Piani di Studio on-line

Guida Compilazione Piani di Studio on-line Guida Compilazione Piani di Studio on-line SIA (Sistemi Informativi d Ateneo) Visualizzazione e presentazione piani di studio ordinamento 509 e 270 Università della Calabria (Unità organizzativa complessa-

Dettagli

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Rappresentazione di numeri Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Un numero e un entità teorica,

Dettagli

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015 VINCENZO MARRA Indice Parte 1. Input/Output standard dalla console 2 Esercizio 1 2 Eco

Dettagli

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda

Dettagli

11010010 = 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210

11010010 = 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210 Il sistema BINARIO e quello ESADECIMALE. Il sistema di numerazione binario è particolarmente legato ai calcolatori in quanto essi possono riconoscere solo segnali aventi due valori: uno alto e uno basso;

Dettagli

I CIRCUITI ELETTRICI. Prima di tutto occorre mettersi d accordo anche sui nomi di alcune parti dei circuiti stessi.

I CIRCUITI ELETTRICI. Prima di tutto occorre mettersi d accordo anche sui nomi di alcune parti dei circuiti stessi. I CIRCUITI ELETTRICI Prima di tutto occorre mettersi d accordo anche sui nomi di alcune parti dei circuiti stessi. Definiamo ramo un tratto di circuito senza diramazioni (tratto evidenziato in rosso nella

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

ISTRUZIONI PER LA GESTIONE BUDGET

ISTRUZIONI PER LA GESTIONE BUDGET ISTRUZIONI PER LA GESTIONE BUDGET 1) OPERAZIONI PRELIMINARI PER LA GESTIONE BUDGET...1 2) INSERIMENTO E GESTIONE BUDGET PER LA PREVISIONE...4 3) STAMPA DIFFERENZE CAPITOLI/BUDGET.10 4) ANNULLAMENTO BUDGET

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Elementi di Psicometria con Laboratorio di SPSS 1

Elementi di Psicometria con Laboratorio di SPSS 1 Elementi di Psicometria con Laboratorio di SPSS 1 12-Il t-test per campioni appaiati vers. 1.2 (7 novembre 2014) Germano Rossi 1 germano.rossi@unimib.it 1 Dipartimento di Psicologia, Università di Milano-Bicocca

Dettagli

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede

Dettagli

Caratteri e stringhe Esercizi risolti

Caratteri e stringhe Esercizi risolti Esercizi risolti 1 Esercizio: Conta vocali e consonanti Scrivere un programma in linguaggio C che legga una frase introdotta da tastiera. La frase è terminata dall introduzione del carattere di invio.

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

ANALISI DELLE FREQUENZE: IL TEST CHI 2

ANALISI DELLE FREQUENZE: IL TEST CHI 2 ANALISI DELLE FREQUENZE: IL TEST CHI 2 Quando si hanno scale nominali o ordinali, non è possibile calcolare il t, poiché non abbiamo medie, ma solo frequenze. In questi casi, per verificare se un evento

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE

APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE 1. Proporzionalità diretta e proporzionalità inversa Analizziamo le seguenti formule Peso Lordo = Peso Netto + Tara Ricavo = Utile + Costo Rata = Importo + Interesse

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo

Dettagli

Calcolo del Valore Attuale Netto (VAN)

Calcolo del Valore Attuale Netto (VAN) Calcolo del Valore Attuale Netto (VAN) Il calcolo del valore attuale netto (VAN) serve per determinare la redditività di un investimento. Si tratta di utilizzare un procedimento che può consentirci di

Dettagli

da chi proviene un messaggio?

da chi proviene un messaggio? da chi proviene un messaggio? in un crittosistema simmetrico solo Alice e Bob conoscono la chiave se Bob riceve un messaggio di Alice e la decifratura del messaggio ha senso, il messaggio proviene certamente

Dettagli

OSSERVAZIONI TEORICHE Lezione n. 4

OSSERVAZIONI TEORICHE Lezione n. 4 OSSERVAZIONI TEORICHE Lezione n. 4 Finalità: Sistematizzare concetti e definizioni. Verificare l apprendimento. Metodo: Lettura delle OSSERVAZIONI e risoluzione della scheda di verifica delle conoscenze

Dettagli

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...

Dettagli

II.f. Altre attività sull euro

II.f. Altre attività sull euro Altre attività sull euro II.f È consigliabile costruire modelli in carta o cartoncino di monete e banconote, e farli usare ai bambini in varie attività di classe fin dal primo o al più dal secondo anno.

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare

Dettagli

Informatica pratica. File e cartelle

Informatica pratica. File e cartelle Informatica pratica File e cartelle Riassunto della puntata precedente Abbiamo visto a cosa serve un word processor: Quali sono i suoi benefici rispetto alla macchina da scrivere tradizionale Quali sono

Dettagli

Elementi di Psicometria con Laboratorio di SPSS 1

Elementi di Psicometria con Laboratorio di SPSS 1 Elementi di Psicometria con Laboratorio di SPSS 1 29-Analisi della potenza statistica vers. 1.0 (12 dicembre 2014) Germano Rossi 1 germano.rossi@unimib.it 1 Dipartimento di Psicologia, Università di Milano-Bicocca

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

FIRMA DIGITALE Cos'è e come funziona

FIRMA DIGITALE Cos'è e come funziona FIRMA DIGITALE Cos'è e come funziona Maurizio Giungato Firma digitale Cosa NON E' Cosa E' A cosa serve Come funziona Tipologie di firma Altre applicazioni (cifratura dei documenti) Firma digitale: cosa

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Dettagli

Biblioteca di Cervia NOZIONI BASE DI INFORMATICA

Biblioteca di Cervia NOZIONI BASE DI INFORMATICA Biblioteca di Cervia NOZIONI BASE DI INFORMATICA NOZIONI DI INFORMATICA Il PC è composto solitamente di tre parti principali: - Il Case, ovvero il contenitore del cuore del computer, da qui si accende

Dettagli

Olga Scotti. Basi di Informatica. File e cartelle

Olga Scotti. Basi di Informatica. File e cartelle Basi di Informatica File e cartelle I file Tutte le informazioni contenute nel disco fisso (memoria permanente del computer che non si perde neanche quando togliamo la corrente) del computer sono raccolte

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione 4 LEZIONE: Programmazione su Carta a Quadretti Tempo della lezione: 45-60 Minuti. Tempo di preparazione: 10 Minuti Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione SOMMARIO:

Dettagli

INTRODUZIONE AI CICLI

INTRODUZIONE AI CICLI www.previsioniborsa.net INTRODUZIONE AI CICLI _COSA SONO E A COSA SERVONO I CICLI DI BORSA. Partiamo dalla definizione di ciclo economico visto l argomento che andremo a trattare. Che cos è un ciclo economico?

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014 LUdeS Informatica 2 EXCEL Seconda parte AA 2013/2014 STAMPA Quando si esegue il comando FILE STAMPA, Excel manda alla stampante tutte le celle del foglio di lavoro corrente che hanno un contenuto. Il numero

Dettagli

http://www.programmiamo.altervista.org/c/oop/o...

http://www.programmiamo.altervista.org/c/oop/o... PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli