La tabella dei bigrammi è la frequenza con la quale compaiono COPPIE di lettere in una lingua.
|
|
- Dionisia Valeri
- 7 anni fa
- Visualizzazioni
Transcript
1 Lezione 19 e 20 Crittografia I A) Tabella dei bigrammi B) Riconoscimento automatico della lingua C) Rottura dei codici Fabio Scotti Laboratorio di programmazione per la sicurezza 1
2 Lezione 19 e 20 Fabio Scotti Laboratorio di programmazione per la sicurezza Tabella dei bigrammi Obiettivi : Comprendere come la tabella dei bigrammi sia composta e come possa essere usata per il riconoscimento automatico di una lingua sia uno strumento utile e per la rottura dei codici crittografici 2
3 Tabella dei bigrammi La frequenza delle lettere in una lingua èuna peculiarità che, se misurata da un programma, aiuta a riconoscere la lingua e a rompere il codice di Cesare. La tabella dei bigrammi è la frequenza con la quale compaiono COPPIE di lettere in una lingua. La tabella dei bigrammi è uno strumento che discrimina ancora meglio una lingua e può essere utile nella rottura di altri codici crittografici. 3
4 Esempio Frequenza lettere:... 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= Tabella bigrammi: Spazio A B C D... Spazio A B C D
5 Lettura della tabella Tabella bigrammi: Spazio A B C D... Spazio A B C D Come finiscono le parole in questa lingua Come iniziano le parole in questa lingua 5
6 Creazione della tabella (1) E una tabella che deve contenere percentuali (rapporto fra interi, quindi numeri razionali). La rappresentiamo in memoria come una matrice di float: float bigrammi [256][256]; // ascii float bigrammi [512][512]; // ascii estesa 6
7 char c1, c2 ; float bigrammi[256][256]; int numero_bigram, temp1, temp2, i1, i2; Creazione della tabella (2) // apro in lettura il file e memorizzo il puntatore in Fp // inizializzo la matrice bigrammi a zero while ( fscanf(fp, "%c", &c1) == 1 ) { while ( fscanf(fp, "%c", &c2) == 1 ) { if (( c1 < 0 ) ( c1 > 256 )) (( c1 < 0 ) ( c1 > 256 )) { // sono nella tabella ASCII? // inserire codice } temp1 = (int) c1; // cast raccomandabile temp2 = (int) c2; // cast raccomandabile bigrammi[temp1][temp2] = bigrammi[temp1][temp2] + 1; } } numero_bigram = numero_bigram + 1 ; 7
8 Creazione della tabella (3) // normalizazzione della matrice for (i=0; i1<256; i1++) // normalizzazione dei conteggi { for (i=0; i2<256; i2++) // normalizzazione dei conteggi { bigrammi[i1][i2] = bigrammi [i1][i2] / numero_bigram * 100 ; } } 8
9 Utile funzione Uscita Ingressi A a à B b C c D d E e è é F f G g H h I i ì J j K k L l M m N n O o ò P p Q q R r S s T t U u ù V v W w X x Y y Z z char converti(char); Con questa funzione, si converte, carattere per carattere, un testo in una sequenza di caratteri maiuscoli prima di calcolare la frequenza delle lettere. 9
10 Lezione 19 e 20 Fabio Scotti Laboratorio di programmazione per la sicurezza Riconoscimento della lingua automatco Obiettivi : Essere in grado di scrivere programmi per l'identificazione automatica della lingua di un testo 10
11 Riconoscimento automatico Il riconoscimento automatico della lingua è utile in molte applicazioni quali: gli editor di testo (l impiego dei dizionari dei sinonimi, la correzione automatica, ecc..); in campo crittografico (rottura codici crittografici semplici). In particolare ci focalizziamo sul riconoscimento automatico della lingua in base alla distribuzione delle lettere. Vengono esaminati i testi non crittati. 11
12 Tabella delle frequenze Frequenza lettere: Lingua a b Francese Inglese 26 21,2 Italiano 26 20,5 Russo 31 26,5 Spagnolo Tedesco 26 21,2 12
13 Metodo di riconoscimento (1) Frequenza lettere: Lingua a b Francese Inglese 26 21,2 Italiano 26 20,5 Esamino il file Calcolo la frequenza delle lettere Russo 31 26,5 Spagnolo Tedesco 26 21,2 Confronto le frequenze con quelle note Determino la lingua 13
14 Metodo di riconoscimento (2) Frequenza lettere: Lingua a b Francese Inglese 26 21,2 Italiano 26 20,5 Russo 31 26,5 Spagnolo Tedesco 26 21,2 Esamino il file Calcolo la frequenza delle lettere Confronto le frequenze con quelle note Nel mezzo del cammin di nostra vita A = 25,6% B = 19,8% La lingua più vicina è l italiano Determino la lingua 14
15 Usando tutte le frequenze PERCENTUALE DI OCCORRENZA (frequenza lettera) LINGUA INCOGNITA ITALIANO 10% 5% A A B B C C D D E E Lettere 10% 5% Scarto percentuale La somma totale degli scarti èla distanza fra la lingua incognita e l italiano A B C D E Lettere 15
16 Progettazione del programma (1) Cosa serve: una funzione produci_frequenza() che dato un file ritorna il vettore delle frequenze delle lettere; una funzione calcola_distanza() che dati due vettori di frequenze ritorna una distanza fra le due lingue. 16
17 Progettazione del programma (2) Come funzionerà il programma: usando produci_frequenza(): dati dei file di testo in italiano, inglese, francese, ecc..., si calcolano le loro frequenze; si calcola la frequenza delle lettere del file di lingua incognita; usando calcola_distanza() si confrontano le frequenze del file di lingua incognita con quelle dei file di lingua nota; Possiamo affermare che il file di lingua incognita è scritto nella lingua che ha minore scarto totale. 17
18 Programma riconoscimento (2) // qui carichiamo le frequenze di riferimento produci_frequenza( "promessisposi.txt, frequenze_ita, LUN_ALFABETO ); produci_frequenza( "othello.txt", frequenze_eng, LUN_ALFABETO ); produci_frequenza( "marsigliese.txt", frequenze_fra, LUN_ALFABETO ); produci_frequenza( "sconosciuta.txt", frequenze_incognita, LUN_ALFABETO ); // confrontiamo le frequenze // (aggiungere il codice che controlla il massimo) distanza = calcola_distanza(frequenze_incognita, frequenze_ita, LUN_ALFABETO ); printf("la lingua incongnita dista %f dall'italiano \n", distanza ) ; distanza = calcola_distanza(frequenze_incognita, frequenze_fra, LUN_ALFABETO ); printf("la lingua incongnita dista %f dal FRANCESE \n", distanza ) ; distanza = calcola_distanza(frequenze_incognita, frequenze_eng, LUN_ALFABETO ); printf("la lingua incongnita dista %f dall'inglese \n", distanza ) ; getchar(); exit(0); } // main 18
19 Programma riconoscimento (3) float calcola_distanza(float frequenze_1[], float frequenze_2[], int lunghezza_alfabeto ) { float distanza; distanza = 0 ; // distanza euclidea (applico Pitagora in N dimensioni con N= lunghezza_alfabeto) for( i = 0; i < lunghezza_alfabeto ; i = i+1 ) { distanza = distanza + (frequenze_1[i]- frequenze_2[i])*(frequenze_1[i]- frequenze_2[i]); } distanza = sqrtf( distanza ); // sqrtf radice quadrata per float return distanza; } 19
20 Lezione 19 e 20 Fabio Scotti Laboratorio di programmazione per la sicurezza Rottura dei codici Obiettivi : Comprendere come il riconoscimento automatico di una lingua sia uno strumento utile per la rottura dei codici crittografici Essere in grado di scrivere programmi per l'identificazione automatica della lingua di un testo e la rottura dei codici 20
21 Esempi di rottura di codice Iniziamo ad esplorare le tecniche per rompere i codici crittografici più semplici: il codice di Cesare e i codici a sostituzione. In questa lezione descriviamo i procedimenti e vediamo alcuni programmi ausiliari utili. Nelle prossime lezioni scriveremo programmi che automaticamente romperanno il codice. Lavoriamo nell ipotesi di conoscere la lingua nel quale è stato scritto il messaggio crittato (ipotesi successivamente rimuovibile). 21
22 Rottura del codice di Cesare 1. Calcolare le frequenze delle lettere nella lingua in cui si immagina sia scritto il messaggio crittato. 2. Calcoliare le frequenze delle lettere nel messaggio crittato. 3. Sovrapporre le distribuzioni: una delle due viene fatta traslare fino a quando si ottiene la migliore sovrapposizione. 4. La quantità di lettere di cui si è dovuto traslare l'alfabeto della distribuzione costituisce la chiave del cifrario. 22
23 Esempio MESSAGGIO CRITTATO ITALIANO 10% PERCENTUALE DI OCCORRENZA (frequenza lettera) Chiave = 0 5% Z Z A A B B C C D D E E Lettere 10% 5% A Z B A C B D C E D F E Chiave = 1 Lettere 10% Chiave = 15 P A 5% Q B R C O Z S D T E Lettere 23
24 Rottura del codice con sostituzione (1) Nel caso del codice di Cesare basta trovare UNA chiave per decrittare tutto il codice. Nei codici con sostituzione occorre trovare la chiave con la quale è stata crittata ogni lettera. A c B & 24
25 Rottura del codice con sostituzione (2) Si utilizza l approccio con le frequenze di lettera oppure con i bigrammi. Perché la statistica possa essere di supporto, occorre che il testo cifrato sia abbastanza lungo. E anche possibile unire molteplici testi crittati, ma occorre essere certi che siano stati crittati con lo stesso metodo e con la stessa chiave. 25
26 Rottura del codice con sostituzione (3) In primis si cerca di associare le vocali (frequenza maggiore) guardando le frequenze di lettera, poi le consonanti. Crittato Lingua Decrittazione k : 25,8% a :26% k a b :20% c : 7% s : 20,1% b :20% s b 26
27 Rottura del codice con sostituzione (4) In secundis si risolvono eventuali dubbi confrontando la tabella dei bigrammi ottenuta dal codice crittato e quella della lingua. Crittato Lingua Decrittazione df : 0,25% ab :0,26% d a e f b Questo approccio permette dei controlli incrociati. Ad esempio si controlla se tutti i bigrammi mostrano d a ecc.. (si usa la conversione maggiormente presente). 27
28 Controllo del successo Per automatizzare il tutto, occorre un criterio per stabilire automaticamente se la rottura del codice ha avuto successo. Quando i programmi di decrittazione propongono una soluzione, è possibile verificare che le parole presenti nella soluzione appartengano a dei dizionari. Ad esempio se nessuna parola decrittata appartiene ad un dizionario, allora la chiave è sbagliata e occorre provare a decrittare con altre chiavi. 28
Università degli Studi di Milano
Università degli Studi di Milano Corso di Laurea in Sicurezza dei Sistemi e delle Reti Informatiche FABIO SCOTTI I cifrari polialfabetici: Vigenère Laboratorio di programmazione per la sicurezza Indice
Dettagli1 S t u d i o l e g a l e T e d i o l i v i a F r a t t i n i, M a n t o v a s t u d i o t e d i o l l i b e r o.
D. L g s. 2 7-0 5-1 9 9 9, n. 1 6 5 S o p p r e s s i o n e d e l l ' A I M A e i s t i t u z i o n e d e l l ' A g e n z i a p e r l e e r o g a z i o n i i n a g r i c o l t u r a ( A G E A ), a n o
DettagliEsercizi di programmazione in linguaggio C English Dictionary
Esercizi di programmazione in linguaggio C English Dictionary Il file di testo wordnet.txt contiene un certo numero di parole (word) e il corrispondente significato (meaning) secondo il seguente formato:
Dettagli( 4 ) I l C o n s i g l i o e u r o p e o r i u n i t o s i a T a m p e r e i l 1 5 e 1 6 o t t o b r e h a i n v i t a t o i l C o n s i g l
R e g o l a m e n t o ( C E ) n. 4 / 2 0 0 9 d e l C o n s i g l i o, d e l 1 8 d i c e m b r e 2 0 0 8, r e l a t i v o a l l a c o m p e t e n z a, a l l a l e g g e a p p l i c a b i l e, a l r i c
DettagliElementi di Algebra e di Matematica Discreta Cenno di un applicazione alla crittografia
Elementi di Algebra e di Matematica Discreta Cenno di un applicazione alla crittografia Cristina Turrini UNIMI - 2015/2016 Cristina Turrini (UNIMI - 2015/2016) Elementi di Algebra e di Matematica Discreta
DettagliW I L L I A M S H A K E S P E A R E G I U L I O C E S A R E. T r a g e d i a i n 5 a t t i
W I L L I A M S H A K E S P E A R E G I U L I O C E S A R E T r a g e d i a i n 5 a t t i T r a d u z i o n e e n o t e d i G o f f r e d o R a p o n i T i t o l o o r i g i n a l e : J U L I U S C A E
Dettagli1 S t u d i o l e g a l e T e d i o l i v i a F r a t t i n i, M a n t o v a m a i t e d i o l i. c o m
C o n v e n z i o n e d e l l A j a 2 5-1 0-1 9 8 0 C o n v e n z i o n e s u g l i a s p e t t i c i v i l i d e l l a s o t t r a z i o n e i n t e r n a z i o n a l e d i m i n o r i P r e a m b o l
DettagliC assazione civile, sezione. III, 11 ottobre 2005, n
C assazione civile, sezione. III, 11 ottobre 2005, n. 19757 P r e s. V i t t o r i a P - R e l. P e r c o n t e L i c a t e s e R - P. M. S c a r d a c c i o n e E V ( C o n f. ) C. c. R. e d a l t r i
DettagliArray multidimensionali e stringhe
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi
DettagliCaratteri e stringhe
Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
DettagliLABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO III Indice
LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 18.III.2015 VINCENZO MARRA Indice Parte 1. L algoritmo euclideo 3 Esercizio 1 3 L algoritmo euclideo
DettagliGli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento
Linguaggio C Gli Operatori Gli Operatori Gli operatori sono simboli (sia singoli caratteri che loro combinazioni) specificano come devono essere manipolati gli operandi dell espressione Operatori aritmetici
DettagliProblem solving elementare su dati vettoriali
Problem solving elementare su dati vettoriali Introduzione Verifiche su sequenze di dati Selezione o ricerca di dati 2 2006 Politecnico di Torino 1 Introduzione (1/2) I problemi di verifica consistono
Dettagli18/01/16. Soluzione degli esercizi svolti in aula alla lavagna. Seconda lezione. Cast
Soluzione degli esercizi svolti in aula alla lavagna Seconda lezione Cast 1 Esempio Scriviamo un programma che converte temperature Fahrenheit in temperature Celsius La formula è cels = (fahr 32) * 5 *
DettagliAPPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014 VINCENZO MARRA Indice Esercizio 1 1 Leggere stringhe e caratteri 1 Esercizio 2 2
DettagliIndovina la lettera...
Indovina la lettera... La lezione di oggi consiste nel preparare un programma che chiede all'utente di indovinare quale sia il carattere generato dal programma stesso in modo casuale. Il numero totale
DettagliEsame di Ricerca Operativa - 25 febbraio 2009 Facoltà di Architettura - Udine - CORREZIONE -
E R O - Fà A - U - CORREZIONE - P ( ): U. O à,,. S k, ( ),. T,, à,. D, PL. (k) /. () /. /. A. B.. S A B A B. S A B A B. L é R = A + A + B + B, : á A, B, A, B. à A + A +. B +. B. á. A +. A + B + B. á A
DettagliCorso sul linguaggio C Modulo Tipi di dato
Corso sul linguaggio C Modulo 1 1.3 - Tipi di dato 1 Prerequisiti Concetto di espressione Cenni sulla struttura del calcolatore 2 1 Introduzione In questa lezione si esaminano i tipi di dato. I tipi di
DettagliLe Funzioni e la Ricorsione
Aula V Dip. di Matematica G. Castelnuovo Univ. di Roma La Sapienza Le Funzioni e la Ricorsione Igor Melatti Slides disponibili (assieme ad altro materiale) in: http://www.dsi.uniroma1.it/ melatti/programmazione1.2007.2008.html
DettagliProvincia di Latina. Piano di Bacino del Trasporto Pubblico Locale
Provincia di Latina Piano di Bacino del Trasporto Pubblico Locale L E G G E R E G I O N A L E N. 30 DEL 1998 Relazione di Piano C e n t r o L. U. P. T. U n i v e r s i t à d e g l i S t u d i d i N a p
DettagliTipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.
Tipi di dati fondamentali Tipi di dati fondamentali Linguaggi di Programmazione I Ferdinando Cicalese caratteri: char signed char unsigned char interi short int long interi unsigned short unsigned unsigned
DettagliStringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliProva di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:
Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 16 ottobre 2007 1 Rappresentazioni di caratteri in C In C un carattere è una costante intera il cui valore è dato dal codice ASCII
DettagliIntroduzione al MATLAB c Parte 3 Script e function
Introduzione al MATLAB c Parte 3 Script e function Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 M-file di tipo Script e Function Script Function 2 Gestione dell
DettagliARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.
3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il
DettagliSottospazi vettoriali. Nota Bene: Questo materiale non deve essere considerato come sostituto delle lezioni.
Politecnico di Torino. Sottospazi vettoriali. Nota Bene: Questo materiale non deve essere considerato come sostituto delle lezioni. Argomenti: Sottospazi. Generatori. Confrontando sottospazi: intersezione.
DettagliIntroduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica
Corso di Fondamenti di Informatica Ingegneria Clinica Esercitazione 6 Raffaele Nicolussi Esercizio 1 Si scriva una funzione in linguaggio C che riceve in ingresso un numero intero A letto da tastiera,
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione II Tatiana Zolo zolo@cs.unipr.it 1 IL PROGRAMMA C++ Istruzioni (espressioni terminate da ; ) istruzioni di dichiarazione (es. int x = 0;); istruzioni di assegnamento
DettagliSoluzione/* PROGRAMMAZIONE IN C */ #include <stdio.h> #include <stdlib.h>
Ricerca di un elemento in vettore Scrivere un programma in linguaggio C che riceve in ingresso una sequenza di N numeri interi. I numeri sono memorizzati in un vettore. Il valore N è inserito dall utente,
DettagliLaboratorio di Python
Laboratorio di Python Matrici con Liste Lab09 5 Aprile 2017 Outline Correzione esercizi per oggi Matrici Teoria Esercizi Esercizi per casa Esercizio 1 per casa Scrivere una funzione che verifica se una
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliArgomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili
Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto
Dettagli! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente
! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente!!la loro esistenza deve essere prevista e dichiarata a priori! Questo può rappresentare un problema soprattutto per variabili
DettagliStringhe di caratteri
Linguaggio C Stringhe di caratteri 1 Variabili e costanti stringa! Una stringa letterale è una sequenza di caratteri racchiusa tra doppi apici! Può essere scritta su più righe utilizzando il backslash
DettagliEsercizi. I File ed il C
Politecnico di Milano Esercizi File di testo,, file binari I File ed il C Insieme omogeneo di dati, memorizzato su disco e caratterizzato da un nome La lunghezza di un file non è fissata a priori Astrazione
DettagliEsercitazione 4. Comandi iterativi for, while, do-while
Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti
DettagliEsercizio 1 - cicli. Esercizio 1 cicli - Soluzione
Sequenze di cifre Esercizio 1 - cicli Realizzare un programma che prende in input una sequenza di cifre (tra 1 e 9) e calcola la somma massima fra le sotto- sequenze di cifre non decrescente Il programma
DettagliLaboratorio di Python (con Linux)
8 a lezione Università di Bologna 2, 4 maggio 2012 Sommario 1 2 3 Diversi Python 2.6 vs 2.7 v.s 3.x La versione di Python installata sulle macchine del laboratorio è la 2.6 (per l esattezza 2.6.6 ). Versioni
DettagliUna stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0
STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1
DettagliAnno 4 Matrice inversa
Anno 4 Matrice inversa 1 Introduzione In questa lezione parleremo della matrice inversa di una matrice quadrata: definizione metodo per individuarla Al termine della lezione sarai in grado di: descrivere
DettagliInformatica 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,
Dettaglia + 2b + c 3d = 0, a + c d = 0 c d
SPAZI VETTORIALI 1. Esercizi Esercizio 1. Stabilire quali dei seguenti sottoinsiemi sono sottospazi: V 1 = {(x, y, z) R 3 /x = y = z} V = {(x, y, z) R 3 /x = 4} V 3 = {(x, y, z) R 3 /z = x } V 4 = {(x,
DettagliIL PRIMO PROGRAMMA IN C
IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE
DettagliHOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.
HOMEWORKS Questi esercizi saranno proposti di tanto in tanto e forniti sempre SENZA soluzioni. Come materiale complementare ai libri di testo e alle lezioni frontali e di esercitazione, si consiglia di
DettagliIl linguaggio C - Introduzione
Il linguaggio C - Introduzione Il C è un linguaggio imperativo legato a Unix, adatto all implementazione di compilatori e sistemi operativi. È stato progettato da D. Ritchie per il PDP-11 (all inizio degli
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
DettagliIntroduzione a Visual Basic Lezione 2 Cicli e anomalie
a Visual Basic Lezione 2 Mario Alviano Introduzione all informatica Università della Calabria http://alviano.net/introinfo A.A. 2008/09 Introduzione Perché i cicli? Un esempio concreto Finora abbiamo visto
DettagliStrutture di Controllo
Strutture di Controllo Informatica B Istruzioni condizionali #include int main() char c; printf("inserire il carattere maiuscolo: "); scanf("%c", &c); printf("la traduzione e' %c\n",c+32); return
DettagliAritmetica dei Calcolatori 3
Laboratorio di Architettura 31 maggio 2013 1 Numeri Floating Point 2 Standard IEEE754 3 Esercitazione Numeri Floating Point (FP) Il termine Floating Point (virgola mobile) indica la codifica usata per
Dettagli5 Stringhe. Esiste una libreria di C che gestisce le stringhe string.h essa ci permette di:
Le stringhe di caratteri sono gestite in C come dei vettori di char con alla fine un tappo dato dal carattere \0. E possibile acquisire un intera stringa di caratteri in una sola istruzione grazie all
DettagliFunzioni, puntatori, strutture. Lab. Calc. AA 2006/07
Funzioni, puntatori, strutture sommario In questa lezione integriamo le informazioni fornite su puntatori e funzioni approfondendo i seguenti punti Puntatori a puntatori Puntatori e array come parametri
DettagliAlgoritmi in C++ (prima parte)
Algoritmi in C++ (prima parte) Alcuni algoritmi in C++ Far risolvere al calcolatore, in modo approssimato, problemi analitici Diverse tipologie di problemi generazione di sequenze di numeri casuali ricerca
Dettagli( x) Definizione: si definisce dominio (o campo di esistenza) di una funzione f ( x) l insieme dei valori
Definizione: si definisce dominio (o campo di esistenza) di una funzione f ( ) l insieme dei valori che la variabile può assumere affinché la funzione f ( ) abbia significato. Vediamo di individuare alcune
DettagliAnno 3 Equazione dell'ellisse
Anno Equazione dell'ellisse 1 Introduzione In questa lezione affronteremo una serie di problemi che ci chiederanno di determinare l equazione di un ellisse sotto certe condizioni. Al termine della lezione
DettagliUniversità degli Studi di Milano
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
DettagliEsercizi di programmazione in linguaggio C - Caratteri e operatori logici
Esercizi di programmazione in linguaggio C - Caratteri e operatori logici prof. Roberto Fuligni 1. [carattere1] Dato in ingresso un carattere, visualizzare a video se si tratta di una cifra numerica, una
Dettaglia.a Codice corso: 21012, HOMEWORKS
HOMEWORKS Questi esercizi saranno proposti ogni 2 settimane e forniti sempre SENZA soluzioni. Come materiale complementare ai libri di testo e alle lezioni frontali e di esercitazione, si consiglia di
DettagliLA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2
LA CODIFICA DELL INFORMAZIONE Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 Codifica dati e istruzioni Per scrivere un programma è necessario rappresentare istruzioni
DettagliLinguaggio C: introduzione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi
DettagliConfronto tra stringhe. (modulo) Calcolo della media e della varianza. Ecco un elenco di codici Matlab: - Calcolo valore assoluto (modulo)
Ecco un elenco di codici Matlab: - Calcolo valore assoluto (modulo) - Calcolo media e varianza - Concatenare stringhe e conversione da numero a stringa - Numero di Eulero - Modificare un file fig in Matlab
DettagliRappresentazione dell Informazione
Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo
DettagliStatistica inferenziale. La statistica inferenziale consente di verificare le ipotesi sulla popolazione a partire dai dati osservati sul campione.
Statistica inferenziale La statistica inferenziale consente di verificare le ipotesi sulla popolazione a partire dai dati osservati sul campione. Verifica delle ipotesi sulla medie Quando si conduce una
DettagliRappresentazione binaria delle variabili (int e char)
Rappresentazione binaria delle variabili (int e char) int e char son i due tipi utilizzati dal linguaggio C per la rappresentazione di valori interi; ai valori delle variabili del primo tipo sono assegnati
DettagliFILE BINARI FILE BINARI
FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni di
Dettagli[PRIMA DI VIDEOSCRIVERE ]
Manuale di preparazione alla videoscrittura per bambini e persone che non hanno mai usato una tastiera. by Cinzia [PRIMA DI VIDEOSCRIVERE ] Una piccola guida di preparazione alla scrittura col computer,
DettagliCRITTOGRAFIA 2014/15 Appello del 13 gennaio Nome: Cognome: Matricola:
CRITTOGRAFIA 2014/15 Appello del 13 gennaio 2015 Esercizio 1 Crittografia ellittica [9 punti] 1. Descrivere l algoritmo di Koblitz per trasformare un messaggio m, codificato come numero intero, in un punto
DettagliNon ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
DettagliPROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 17/2/2009
PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 7/2/2009 MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO (5 punti) Esprimere
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E03 Esempi di algoritmi e programmi A. Miola Novembre 2011 1 Contenuti q Progettazione di algoritmi q Problemi di ingresso - uscita
DettagliMATLAB Elementi di grafica Costrutti di programmazione
MATLAB Elementi di grafica Costrutti di programmazione Operazioni punto Le operazioni punto agiscono su array che abbiano le stesse dimensioni:.* prodotto elemento per elemento./ divisione elemento per
DettagliUn ripasso di aritmetica: Conversione dalla base 10 alla base 2
Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo: c m c m-1... c 1 c 0 (le c i sono cifre
DettagliPROGRAMMAZIONE: Le strutture di controllo
PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l
Dettaglix 1 Fig.1 Il punto P = P =
Geometria di R 2 In questo paragrafo discutiamo le proprietà geometriche elementari del piano Per avere a disposizione delle coordinate nel piano, fissiamo un punto, che chiamiamo l origine Scegliamo poi
DettagliSTRINGHE: ARRAY DI CARATTERI! a p e \0
STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più
DettagliCorso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2011-12 17 settembre 2012 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
DettagliLa gestione dei caratteri in C
in C In C i caratteri sono gestiti mediante variabili di tipo char (interi a 8 bit) Ad ogni carattere corrisponde un codice numerico ASCII (American Standard Code for Information Interchange) Un esempio
DettagliEsercizio n.1 FONDAMENTI DI INFORMATICA 1. Esercizio n.2. Soluzione. LINGUAGGIO C Funzioni e gestione file: esercitazione
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti
DettagliUNITÀ DIDATTICA 5 LA RETTA
UNITÀ DIDATTICA 5 LA RETTA 5.1 - La retta Equazione generica della retta Dalle considerazioni emerse nel precedente capitolo abbiamo compreso come una funzione possa essere rappresentata da un insieme
DettagliGli Operatori. Università degli Studi di Brescia
Linguaggio C Gli Operatori 1 Gli operatori! Costruiscono le espressioni del C! Specificano come devono essere manipolati gli operandi dell espressione! Il C definisce una moltitudine di operatori, quali
DettagliCorso di Geometria BIAR, BSIR Esercizi 2: soluzioni
Corso di Geometria 2- BIAR, BSIR Esercizi 2: soluzioni Esercizio Calcolare il determinante della matrice 2 3 : 3 2 a) con lo sviluppo lungo la prima riga, b) con lo sviluppo lungo la terza colonna, c)
DettagliIl generatore di numeri casuali
Il generatore di numeri casuali file di libreria: stdlib.h int rand(void) La funzione restituisce un numero casuale di tipo intero compreso tra 0 e RAND_MAX (estremi compresi) Esempio: scriviamo un programma
DettagliCaratteri 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.
DettagliEsercizi su algebra lineare, fattorizzazione LU e risoluzione di sistemi lineari
Esercizi su algebra lineare, fattorizzazione LU e risoluzione di sistemi lineari 4 maggio Nota: gli esercizi più impegnativi sono contrassegnati dal simbolo ( ) Esercizio Siano 3 6 8 6 4 3 3 ) determinare
DettagliEsercizi. Stringhe. Stringhe Ricerca binaria
Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)
DettagliPIANO CARTESIANO e RETTE classi 2 A/D 2009/2010
PIANO CARTESIANO e RETTE classi 2 A/D 2009/2010 1) PIANO CARTESIANO serve per indicare, identificare, chiamare... ogni PUNTO del piano (ente geometrico) con una coppia di valori numerici (detti COORDINATE).
Dettagli4 GLI ARRAY E LE STRINGHE
13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e
DettagliPuntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a
Puntatori in C Puntatori Variabili tradizionali indirizzo int a = 5; A00E... Proprietà della variabile a: nome: a A010 A012 5 tipo: int A014 valore: 5 indirizzo: A010 Finora abbiamo usato solo le prime
Dettagli= elemento che compare nella seconda riga e quinta colonna = -4 In generale una matrice A di m righe e n colonne si denota con
Definizione di matrice Una matrice (di numeri reali) è una tabella di m x n numeri disposti su m righe e n colonne. I numeri che compaiono nella tabella si dicono elementi della matrice. La loro individuazione
DettagliRACCOLTA DI ALCUNI ESERCIZI TRATTI DA COMPITI D ESAME SUL SISTEMA CRITTOGRAFICO RSA
RACCOLTA DI ALCUNI ESERCIZI TRATTI DA COMPITI D ESAME SUL SISTEMA CRITTOGRAFICO RSA Attenzione: questi sono alcuni esercizi d esame, sugli argomenti di questa dispensa. Non sono una selezione di quelli
DettagliIL MIO PRIMO IPERTESTO CON POWERPOINT
IL MIO PRIMO IPERTESTO CON POWERPOINT 1. Realizzare la prima diapositiva 1. Dal menu File fai clic su Nuovo, quindi dalla finestra Nuova Presentazione fai clic su Da modello struttura. 2. Scegli il modello
DettagliPuntatori. Fondamenti di Programmazione
Puntatori Fondamenti di Programmazione Funzioni utili stdio.h c = getchar(); restituisce un carattere letto da tastiera. Equivale a: scanf( %c, &c); putchar(c); scrive un carattere sullo schermo. Equivale
DettagliElementi di C++ di base
Elementi di C++ di base Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 10 ottobre, 2001 Gino Perna Esempi di semplici programmi in C++ Il programma più semplice consiste
DettagliTipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010
Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi
DettagliFondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 13 File Binari
Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 13 File Binari Esercizio 1 Un registratore di cassa registra su di un file binario alcuni dati relativi agli
Dettagli