Esercitazione n. 3. Linguaggio C base Tipi di dati
|
|
- Adelaide Moroni
- 5 anni fa
- Visualizzazioni
Transcript
1 Esercitazione n. 3 Linguaggio C base Tipi di dati Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2.5 Italia
2 Linguaggio C: Ripasso... Fare riferimento alle dispense del docente... Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini 2
3 C/1: Resto divisione tra interi Codice sorgente/1 /* Il programma calcola il resto di una divisione fra numeri interi. Input: dividendo e divisore Output: valore del resto Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 3
4 C/1: Resto divisione tra interi Codice sorgente/2 #include <stdio.h> main() { int dividendo, divisore, resto; printf ("Dividendo: "); scanf ("%d", ÷ndo); printf ("Divisore: "); scanf ("%d", &divisore); resto = dividendo - (dividendo / divisore) * divisore; /* il simbolo '/', nel caso di divisione tra variabili di tipo 'int', rappresenta la divisione INTERA (per cui, per esempio, se 'dividendo' contiene il valore 9, e 'divisore' il valore 2, il risultato della divisione intera è 4. Vedremo che nel caso di variabili 'float' il simbolo '/' rappresenta la divisione tra reali. printf ("Resto: %d\n", resto); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 4
5 C/1: Resto divisione tra interi Codice eseguibile Come si rende eseguibile un programma C a partire dal codice sorgente? 1. Stesura del codice sorgente 2. Compilazione 3. Esecuzione Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 5
6 C/2: Verifica terna pitagorica Codice sorgente/1 /* Verifica se una terna di numeri è pitagorica (o, meglio, se i tre numeri in input corrispondono ai cateti e all'ipotenusa di un triangolo rettangolo). Input: valori dei cateti e dell'ipotenusa Output: messaggio che indica se la terna è pitagorica o no Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 6
7 C/2: Verifica terna pitagorica Codice sorgente/2 #include <stdio.h> main() { int c1, c2, ip; printf ("Misura del primo cateto: "); scanf ("%d", &c1); printf ("Misura del secondo cateto: "); scanf ("%d", &c2); printf ("Misura dell'ipotenusa: "); scanf ("%d", &ip); if (c1*c1+c2*c2 == ip*ip) { printf ("Il triangolo è rettangolo\n"); else { printf ("I valori inseriti non corrispondono a un triangolo rettangolo\n"); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 7
8 C/3: Verifica equidistanza Codice sorgente/1 /* Date le coordinate x e y di 3 punti, verificare se i punti 2 e 3 sono equidistanti dal punto 1 (quindi se i punti 2 e 3 si trovano su una circonferenza con centro nel punto 1). La verifica viene fatta controllando se i quadrati delle distanze 1-2 e 1-3 sono uguali. Input: coordinate x ed y dei 3 punti Output: messaggio che indica se i punti sono equidistanti oppure no Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 8
9 C/3: Verifica equidistanza Codice sorgente/2 #include <stdio.h> main() { float x1, y1, x2, y2, x3, y3; float distq12, distq13; c'è l'esigenza di gestire numeri reali printf ("Coordinata x del punto 1: "); scanf ("%f", &x1); printf ("Coordinata y del punto 1: "); scanf ("%f", &y1); printf ("Coordinata x del punto 2: "); scanf ("%f", &x2); printf ("Coordinata y del punto 2: "); scanf ("%f", &y2); printf ("Coordinata x del punto 3: "); scanf ("%f", &x3); printf ("Coordinata y del punto 3: "); scanf ("%f", &y3); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 9
10 C/3: Verifica equidistanza Codice sorgente/3 distq12 = (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); distq13 = (x1-x3)*(x1-x3)+(y1-y3)*(y1-y3); if (distq12 == distq13){ printf ("I punti 2 e 3 sono equidistanti da 1\n"); else { printf ("I punti 2 e 3 NON sono equidistanti da 1\n"); /* In realtà con il problema che i float sono comunque approssimazioni finite dei numeri reali, è meglio usare, nella condizione dell'if, una verifica di appartenenza a un intervallo, invece che l'uguaglianza semplice. Una condizione migliore quindi è if (distq12-distq13<tol && distq12-distq13>-tol) dove TOL sarà una costante definita all'inizio del file come, per esempio #define TOL Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 10
11 C/4: Calcolo circonferenza Codice sorgente/1 /* Dato il raggio di una circonferenza, calcolare il valore di circonferenza ed area. Input: raggio Output: circonferenza ed area Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini 11
12 C/4: Calcolo circonferenza Codice sorgente/2 #include <stdio.h> main() { const double pi = ; c'è l'esigenza di gestire numeri reali in doppia precisione /* La costante potrebbe anche essere dichiarata con una define: #define PI però le due cose sono diverse. Da una parte ho una cella di memoria (pi) che contiene un valore, che però è costante, per cui se tento di fare pi = 4; a runtime (NON ALLA COMPILAZIONE) ho un errore. Dall'altra invece viene semplicemente effettuata, IN FASE DI COMPILAZIONE, una sostituzione tra l'identificatore PI ed il valore PI NON corrisponde a una cella di memoria, per cui se tento di fare PI = 4 ho un errore IN FASE DI COMPILAZIONE. (Nota: il fatto che abbia chiamato la cella di memoria costante con lettere minuscole (pi) ed invece l'identificatore usato nella define con lettere maiuscole è PURA CONVENZIONE, potevo fare l'inverso, o chiamarli entrambi alla stessa modo.) Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 12
13 C/4: Calcolo circonferenza Codice sorgente/3 double raggio, area, circonf; printf ("Raggio della circonferenza: "); scanf ("%lf", &raggio); circonf = 2*pi*raggio; area = pi*raggio*raggio; printf ("Circonferenza: %lf\narea: %lf\n", circonf, area); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 13
14 C/5: Calcolo potenza Codice sorgente/1 /* Data una base ed un esponente, calcolare base elevato ad esponente. Sia la base che l'esponente sono valori interi. Input: base, esponente (deve essere >0) Output: base elevato ad esponente Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini 14
15 C/5: Calcolo potenza Codice sorgente/2 #include <stdio.h> main() { int base, esp, i, ris; printf ("Base: "); scanf ("%d", &base); printf ("Esponente (>0): "); scanf ("%d", &esp); if (esp < 0) { printf ("Errore: l'esponente deve essere > 0\n"); else { ris = 1; i = 0; while (i < esp) { ris = ris * base; i = i+1; printf ("Risultato base^esponente = %d\n", ris); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 15
16 C/5.1: Calcolo potenza (con for) Codice sorgente/1 /* data una base ed un esponente, calcolare base elevato ad esponente. Sia la base che l'esponente sono valori interi. Utilizzare la struttura di controllo for Input: base, esponente (deve essere >0) Output: base elevato ad esponente Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini 16
17 C/5.1: Calcolo potenza (con for) Codice sorgente/2 /* A livello sintattico, il costrutto for è costituito da: - la parola chiave for seguita da - un coppia di () comprendente tre espressioni separate dal carattere ; (valore iniziale della variabile di conteggio, espressione booleana sulla variabile di conteggio, incremento della variabile di conteggio). Queste sono seguite da - una qualsiasi istruzione oppure una sequenza di istruzioni racchiuse tra { Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 17
18 C/5.1: Calcolo potenza (con for) Codice sorgente/3 #include <stdio.h> main() { int base, esp, i, ris; printf ("Base: "); scanf ("%d", &base); printf ("Esponente (>0): "); scanf ("%d", &esp); if (esp < 0){ printf ("Errore: l'esponente deve essere > 0\n"); else { ris = 1; /* Con l'uso del ciclo for invece del ciclo while for (i=0; i<esp ; i=i+1){ ris = ris * base; Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 18
19 C/5.1: Calcolo potenza (con for) Codice sorgente/4 /* Altri modi per scrivere i=i+1: i+=1 i++ (il valore viene prima utilizzato e poi incrementato) ++i (il valore viene prima incrementato e poi utilizzato) Quindi attenzione perchè i++ e ++i NON SONO la stessa cosa! In questo caso avrebbero lo stesso effetto, ma in altri no! Per esempio, potrei scrivere la condizione del while (e quindi lo statement di mezzo del for) come i++<esp questo è corretto, mentre la scrittura ++i<esp non lo è, crea confusione! Notate come scrivere while(i++<esp){ ris*=base; sia in effetti molto più compatto di quanto scritto prima, ma, in compenso, sia già meno leggibile. Altro modo per scrivere ris = ris * base: ris*=base Notare come il C può essere compatto (e quindi illeggibile!) Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 19
20 C/5.1: Calcolo potenza (con for) Codice sorgente/5 /* Forma classica per scrivere quel ciclo for: for (i=0 ; i<esp ; i++){... Domanda: cosa fa il ciclo while ();?????? E il ciclo for (;;);?????? printf ("Risultato base^esponente = %d\n", ris); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 20
21 C/6: Calcolo MCD con Euclide Codice sorgente/1 /* Il programma calcola il massimo comun divisore tra due numeri n1 e n2, usando l'algoritmo di Euclide. Il principio di funzionamento dell'algoritmo è il seguente: MCD(n1, n2) = n1 (o n2) se n1 = n2 MCD(n1, n2) = MCD(n1-n2, n2) se n1>n2 Nota: risolvere in autonomia la seconda proprietà discende da ciò: 1) se n1 > n2 e k è un divisore comune a n1 ed n2, allora k è anche un divisore di n1-n2. Infatti esistono degli interi positivi d ed r per cui n1=k*d e n2=k*r. Dunque n1-n2=k(d-r) con d-r>0 2) si può dimostrare che se k è divisore comune a n1-n2 e n2, k è anche divisore di n1 3) dunque tutti i divisori comuni di n1 e n2 coincidono con i divisori comuni di n1-n2 e n2; quindi anche i massimi divisori comuni tra le due coppie di numeri coincidono Input: numeri di cui calcolare il MCD Output: MCD dei numeri Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 21
22 C/6: Calcolo MCD con Euclide Codice sorgente/2 #include <stdio.h> main() { unsigned int n1, n2; printf ("Inserire il primo numero positivo: "); scanf ("%u", &n1); printf ("Inserire il secondo numero positivo: "); scanf ("%u", &n2); while (n1!= n2){ if (n1>n2){ n1 = n1 - n2; else { n2 = n2 - n1; printf ("Il massimo comun divisore e': %u\n", n1); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 22
23 C/7: Calcolo massimo di una sequenza Codice sorgente/1 Nota: risolvere in autonomia /* Data una sequenza di interi positivi, terminata dal valore 0, calcolare il massimo della sequenza. Input: sequenza di interi positivi Output: massimo della sequenza Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini 23
24 C/7: Calcolo massimo di una sequenza Codice sorgente/2 #include <stdio.h> main() { unsigned int curr, max = 0; printf ("Inserire il prossimo numero positivo (0 per terminare): "); scanf ("%u", &curr); while (curr!= 0) { if (curr > max){ max = curr; printf ("Inserire il prossimo numero positivo (0 per terminare): "); scanf ("%u", &curr); printf ("Il numero massimo inserito e': %u\n", max); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 24
25 C/7.1: Calcolo massimo di una sequenza (do... while) Codice sorgente/1 Nota: risolvere in autonomia /* Data una sequenza di interi positivi, terminata dal valore 0, calcolare il massimo della sequenza. Utilizzare la struttura di controllo do... while Input: sequenza di interi positivi Output: massimo della sequenza Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini 25
26 C/7.1: Calcolo massimo di una sequenza (do... while) Codice sorgente/2 /* La sintassi della struttura di controllo do... while è la seguente: - la parola chiave do, seguita da - una qualsiasi istruzione oppure una sequenza di istruzioni racchiuse tra {, seguita da - la parola chiave while seguita dall'espressione di verifica della condizione di uscita dal ciclo, racchiusa tra () Nota: a differenza di while e for, il ciclo interno viene eseguito almeno una volta Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 26
27 C/7.1: Calcolo massimo di una sequenza (do... while) Codice sorgente/3 #include <stdio.h> main() { unsigned int curr, max = 0; /* Questa è una versione più compatta del programma precedente. Poiché il ciclo di lettura DEVE essere eseguito almeno una volta, si può usare, invece del ciclo 'while' classico, la versione seguente: do... while do { printf ("Inserire il prossimo numero positivo (0 per terminare): "); scanf ("%u", &curr); if (curr > max){ max = curr; while (curr!= 0); printf ("Il numero massimo inserito e': %u\n", max); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 27
28 C/7.2: Calcolo massimo di una sequenza (anche numeri negativi) Codice sorgente/1 Nota: risolvere in autonomia /* Data una sequenza di interi (anche negativi), terminata dal valore 0, calcola il massimo della sequenza. Input: sequenza di interi (anche negativi) Output: massimo della sequenza Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini 28
29 C/7.2: Calcolo massimo di una sequenza (anche numeri negativi) Codice sorgente/2 #include <stdio.h> #include <limits.h> main() { int curr, max = INT_MIN; /* In questo caso si sfrutta il fatto che gli int abbiano un limite inferiore per inizializzare la variabile 'max', quindi si possono utilizzare gli interi invece degli unsigned. Notare che se il primo numero che viene inserito è lo 0 allora viene stampato il valore di INT_MIN. printf ("Inserire il prossimo numero (0 per terminare): "); scanf ("%d", &curr); while (curr!= 0) { if (curr > max) { max = curr; printf ("Inserire il prossimo numero (0 per terminare): "); scanf ("%d", &curr); printf ("Il numero massimo inserito è: %d\n", max); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 29
30 C (e altri linguaggi): Sicurezza /1 Se occorre costruire una recinzione di 100 metri con paletti di sostegno distanziati di 10 metri, quanti paletti sono necessari? 10? 11! Tipico errore off-by-one Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini 30
31 C (e altri linguaggi): Sicurezza /2 Nel marzo del 2002 il cosiddetto OpenSSH Channel Code Off by One Privilege Escalation mette in serio pericolo i server connessi in rete che utilizzano OpenSSH (dalla versione 2.0 alla versione 3.0.2) permettendo a qualsiasi utente remoto di essere autenticato come amministratore. Il codice includeva la seguente istruzione: if (id < 0 id > channels_alloc) che avrebbe dovuto essere: if (id < 0 id >= channels_alloc) Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 31
32 Tipi di dati del linguaggio C: Ripasso... Sono già stati utilizzati alcuni tipi di dati del linguaggio C int (unsigned int): per rappresentare numeri interi float: per rappresentare numeri reali double: per rappresentare numeri reali in precisione doppia Introduciamo un nuovo tipo di dato semplice: char: per rappresentare i caratteri alfanumerici (lettere, numeri e una serie di simboli) Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 32
33 Nota: il codice ASCII 032 0x x x50 P 104 0x68 h 033 0x21! 057 0x x51 Q 105 0x69 i 034 0x22 " 058 0x3a : 082 0x52 R 106 0x6a j 035 0x23 # 059 0x3b ; 083 0x53 S 107 0x6b k 036 0x24 $ 060 0x3c < 084 0x54 T 108 0x6c l 037 0x25 % 061 0x3d = 085 0x55 U 109 0x6d m 038 0x26 & 062 0x3e > 086 0x56 V 110 0x6e n 039 0x27 ' 063 0x3f? 087 0x57 W 111 0x6f o 040 0x28 ( x58 X 112 0x70 p 041 0x29 ) 065 0x41 A 089 0x59 Y 113 0x71 q 042 0x2a * 066 0x42 B 090 0x5a Z 114 0x72 r 043 0x2b x43 C 091 0x5b [ 115 0x73 s 044 0x2c, 068 0x44 D 092 0x5c \ 116 0x74 t 045 0x2d x45 E 093 0x5d ] 117 0x75 u 046 0x2e x46 F 094 0x5e ^ 118 0x76 v 047 0x2f / 071 0x47 G 095 0x5f _ 119 0x77 w 048 0x x48 H 096 0x60 ` 120 0x78 x 049 0x x49 I 097 0x61 a 121 0x79 y 050 0x x4a J 098 0x62 b 122 0x7a z 051 0x x4b K 099 0x63 c 123 0x7b { 052 0x x4c L 100 0x64 d 124 0x7c 053 0x x4d M 101 0x65 e 125 0x7d 054 0x x4e N 102 0x66 f 126 0x7e ~ 055 0x x4f O 103 0x67 g Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 33
34 C/8: crittografia - Problema Si vuole realizzare un programma che dato un carattere in ingresso, lo trasforma in un altro carattere, che si trova OFFSET posizioni più avanti nell'alfabeto (per esempio con OFFSET = 4, il carattere 'a' diventa 'e'). E' il cifrario di Cesare Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 34
35 C/8: crittografia Codice sorgente/1 /* Dato un carattere in ingresso, lo trasforma in un altro carattere, che si trova OFFSET posizioni più avanti nell'alfabeto (per esempio con OFFSET = 4, il carattere 'a' diventa 'e'). L'alfabeto considerato è: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz Per esempio, con OFFSET = 4, la lettera 'X' diventa 'b'. La complessità del programma sta nel fatto che nella codifica ASCII le sequenze 'A'..'Z' e 'a'..'z' (viene prima la sequenza di caratteri maiuscoli) non sono consecutive, ma tra loro c'è un altro insieme di caratteri, per cui occorre spezzare il programma in 2 if. Input: un carattere da convertire Output: il carattere convertito Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 35
36 C/8: crittografia Codice sorgente/2 #include <stdio.h> #define OFFSET 4 main() { char curr, new; printf ("Inserisci il carattere alfabetico da convertire: "); scanf ("%c", &curr); if (curr >= 'A' && curr <= 'Z') { new = curr + OFFSET; if (new > 'Z') { new = 'a' + (new - 'Z'-1); printf ("Il nuovo carattere dopo la conversione è: %c\n", new); else if (curr >= 'a' && curr <= 'z') { new = curr + OFFSET; if (new > 'z') { new = 'A' + (new - 'z'-1); printf ("Il nuovo carattere dopo la conversione è: %c\n", new); else { printf ("Non è stato immesso un carattere valido\n"); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 36
37 C/8.1: crittografia (do... while) - Problema Si vuole realizzare una variante al programma precedente in grado di continuare l'esecuzione dell'algoritmo finché vengono inseriti caratteri (la conversione viene comunque fatta un carattere alla volta). L'uscita dal programma è prevista nel caso venga inserito un carattere al di fuori dell'alfabeto dei caratteri consentiti per la conversione. Utilizzare la struttura di controllo do... while. Nota: esercizio da svolgere in aula Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 37
38 C/8.1: crittografia (do... while) Codice sorgente/1 /* Dato un carattere in ingresso, lo trasforma in un altro carattere, che si trova OFFSET posizioni più avanti nell'alfabeto (per esempio con OFFSET = 4, il carattere 'a' diventa 'e'). A differenza del precedente, questa versione del programma si basa su un ciclo do..while, per cui è possibile inserire (uno alla volta) più caratteri da convertire. Per uscire dal ciclo è sufficiente digitare un carattere non alfabetico (per esempio '1', o '%', o anche lo spazio). L'alfabeto considerato e': ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz Per esempio, con OFFSET = 4, la lettera 'X' diventa 'b'. La complessità del programma sta nel fatto che nella codifica ASCII le sequenze 'A'..'Z' e 'a'..'z' (viene prima la sequenza di caratteri maiuscoli) non sono consecutive, ma tra loro c'è un altro insieme di caratteri, per cui occorre spezzare il programma in 2 if. Input: un sequenza di caratteri da convertire Output: i caratteri convertiti Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 38
39 C/8.1: crittografia (do... while) Codice sorgente/2 #include <stdio.h> #define OFFSET 4 main() { char curr, new; do { printf ("Inserisci il carattere alfabetico da convertire: "); scanf ("%c%*c", &curr); /* Perché il programma funzioni correttamente è cruciale il codice '%*c' nella stringa della scanf. La combinazione "%c%*c" obbliga la scanf a leggere 2 caratteri in input, di cui però solo il primo viene memorizzato (in questo caso nella variabile 'curr'), mentre il secondo (il carattere di 'a capo') viene eliminato. Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 39
40 C/8.1: crittografia (do... while) Codice sorgente/3 if (curr >= 'A' && curr <= 'Z') { new = curr + OFFSET; if (new > 'Z') { new = 'a' + (new - 'Z'-1); printf ("Il nuovo carattere dopo la conversione è: %c\n", new); else if (curr >= 'a' && curr <= 'z') { new = curr + OFFSET; if (new > 'z') { new = 'A' + (new - 'z'-1); printf ("Il nuovo carattere dopo la conversione è: %c\n", new); while ((curr >= 'A' && curr <= 'Z') (curr >= 'a' && curr <= 'z')); Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 40
41 C linguaggi in generale: considerazioni La codifica dei caratteri riveste un ruolo fondamentale nelle applicazioni dell'informatica, soprattutto ora che Internet collega buona parte dei PC presenti nel mondo! Es: Approfondimento: codifica UNICODE Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini 41
42 C linguaggi in generale: buona formattazione? #include <ncurses.h>/**************************************************** int m[256 ] [ 256 ],a,b ;;; ;;; WINDOW*w; char*l="" "\176qxl" "q" "q" "k" "w\ xm" "x" "t" "j" "v" "u" "n",q[ ]= "Z" "pt!ftd`" "qdc!`eu" "dq!$c!nnwf"/** *** "t\040\t";c( int u, int v){ v?m [u] [v- 1] =2,m[u][v-1] & 48?W][v-1 ] & 15]]):0:0;u?m[u -1][v] =1,m[ u- 1][ v]& 48? W-1 ][v ]& 15] ]):0:0;v< 255?m[ u][v+1] =8,m[u][v+1]& 48? W][ v+1]&15]] ):0 :0; u < 255?m[ u+1 ][v ] = 4,m[u+1][ v]&48?w+1][v]&15]]):0:0;w][ v]& 15] ]);cu(char*q){ return *q?cu (q+ 1)& 1?q [0] ++: q[0 ]-- :1; d( int u, int/*v, int/*x, int y){ int Y=y -v, X=x -u; int S,s ;Y< 0?Y =-Y,s, s=- 1:( s=1);x<0?x=-x,s =-1 :(S= 1); Y<<= 1;X<<=1; if(x>y){ int f=y -(X >>1 );; while(u!= x){ f>= 0?v+=s,f-=X:0;u +=S ;f+= Y;m[u][v] =32;mvwaddch(w,v,u, m[u ][ v]& 64? 60: 46) ;if (m[ u][ v]&16){c(u,v);; ;;; ;;; return; else{int f=x -(Y>>1);; while (v!=y ){f >=0?u +=S, f-= Y:0 ;v +=s ;f+=x;m[u][v] = 32;mvwaddch(w,v,u,m[u][v]&64?60:46);if(m[u ][ v]& 16) {c( u,v ); ; return;;;z( int/*a, int b){ e( int/*y,int/* x){ int i ; for (i= a;i <=a +S;i++)d(y,x,i,b),d(y,x,i,b+L);for(i=b;i<=b+L;i++)d(y,x,a,i),d(y,x,a+ S,i ); ;;; ;;; ;;; ;;; ; mvwaddch(w,x,y,64); ;;; ;;; ;;; prefresh( w,b,a,0,0,l- 1,S-1 ); main( int V, char *C[ ] ){FILE*f= fopen(v==1?"arachnid.c"/* :C[ 1],"r");int/*x,y,c, v=0 ;;; initscr (); Z(Z (raw (),Z( curs_set(0),z(1,noecho()))),keypad( stdscr,true));w =newpad ( 300, 300 ) ; for (x= 255 ; x >=0 ;x-- ) for (y= 255 ;y>=0;y-- )m[ x][ y]= 0;x=y=0;refresh( );while ( (c= fgetc (f) )+1) {if( 0 c==10 x== 256){x=0;y++;if(y==256 )break;; else{m[x][y]=(c == '~'?64 : c ==32?0: 16) ;;x ++; for(x=0 ;x< 256;x++)m [x][0]=16,m[ x][ 255]=16;for(y=0 ;y< 256 ; y ++) m[0 ][y ] = 16, m[255][y] =16 ;a=b=c=0; x=y =1; do{v++;mvwaddch (w, y,x,m[ x][ y]& 32? m[x ][y ] & 16? 0 acs_map[l[m[x][y]&15]]:46 : 32);c==0163&&!(m[x][y+1]&16)?y++: 0;c == 119 &&! (m[ x][ y- 1]& 16)?y--:0;;c ==97 &&!(m[x-1][y]&16)?x--:0;c==100&&!(m[x+1 ][ y]& 16)? x ++:0 ;if( c== ){endwin( );; return(0) ;x -a<5?a>s- 5?a-=S-5:(a=0): 0;x -a> S-5?a<255 -S* 2?a +=S -5:(a=256-S):0; y-b<5?b>l-5?b-=l-5:(b =0) :0; y-b>l-5?b<255-l *2? b+= L-5 :(b =256 -L) :0;e(x,y);if(m[x][y]&64)break;while((c=getch())!=-1);endwin();cu(Q); printf(q,v); Che cosa è? arachnid The International Obfuscated C Code Contest Esercitazioni di Fondamenti di Informatica Politecnico di Milano sede di Cremona A.A. 2010/2011 Carlo Todeschini tode@cremona.polimi.it 42
HOMEWORKS. 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
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
DettagliDichiarazioni e tipi predefiniti nel linguaggio C
Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo. Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori:
DettagliTipi di dato semplici
Tipi di dato semplici Perché dichiarare una variabile? 2 Una variabile rappresenta uno spazio di memoria centrale Prima dell esecuzione del programma deve essere chiaro quanto spazio serve al programma
DettagliStruttura dei programmi C
Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte
DettagliIntroduzione alla programmazione in linguaggio C
Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008
DettagliLab 04 Programmazione Strutturata"
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 04 Programmazione Strutturata" Lab04 1 Valutazione in cortocircuito (1)" In C, le espressioni booleane sono valutate
DettagliFondamenti di Informatica T1. Lab 03 Istruzioni. Lab03 1
Fondamenti di Informatica T1 Lab 03 Istruzioni Lab03 1 Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. Lab03 2 #include main()
DettagliEsercizi. La funzione swapint() primo tentativo
Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include
DettagliRealizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.
Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. #include Esercizio 1 - Soluzione int main() int num1, num2, num3, somma; float
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliEsercitazione 5. Procedure e Funzioni Il comando condizionale: switch
Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliEsercizio 1" input tre numeri interi e stampi a video la loro somma e la media. n Realizzare un programma che legga da. Lab03 2
Fondamenti di Informatica e Laboratorio T-AB e Fondamenti di Informatica T1 Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2011/2012 Lab 03 Istruzioni" Lab03 1 Esercizio
DettagliTipi di dato semplici
Tipi di dato semplici Informatica B Tipi di dati q In C esistono diversi tipi di dato built-in, tra cui int: numeri interi float: numeri con virgola (singola precisione) double : numeri con virgola (doppia
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
DettagliFondamenti di Informatica. Ingegneria elettronica
Fondamenti di Informatica Ingegneria elettronica Prima esercitazione Cecilia Catalano Sistema Operativo Il S.O. è costituito da un insieme di programmi che permettono di utilizzare e gestire tutte le risorse
DettagliInformatica A (per gestionali) A.A. 2004/2005. Esercizi C e diagrammi a blocchi. Preparazione prima prova intermedia
Informatica A (per gestionali) A.A. 2004/2005 Esercizi C e diagrammi a blocchi Preparazione prima prova intermedia Indice 1 Array... 3 1.1 Filtraggio...3 1.2 Trasformazione...3 2 Struct e array... 5 2.1
DettagliFondamenti di Informatica T1. Lab 03 Istruzioni. Lab03 1
Fondamenti di Informatica T1 Lab 03 Istruzioni Lab03 1 Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. Lab03 2 scanf: STRINGA DI FORMATO
DettagliLab 03 Istruzioni Prima Parte"
Fondamenti di Informatica e Laboratorio T-AB e Fondamenti di Informatica T1 Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione Lab 03 Istruzioni Prima Parte" Lab03 1 Esercizio 1"
DettagliIntroduzione al C. Lez. 1 Elementi. Rossano Venturini
Introduzione al C Lez. 1 Elementi Rossano Venturini rossano@di.unipi.it Pagine del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start http://algoritmica.spox.spoj.pl/alglab2013 Lezioni
DettagliFondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 Obiettivi di questa lezione 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Valutazione in cortocircuito In C, le espressioni booleane sono
DettagliI cicli. Iterazioni Calcolo della media Istruzioni break e continue
I cicli Iterazioni Calcolo della media Istruzioni break e continue Ciclo while p Vero A while() ; Falso Esegue una istruzione mentre una condizione è verificata Programmazione
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
DettagliLab 04 (parte A) Programmazione Strutturata
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 04 (parte A) Programmazione Strutturata Lab04 1 Valutazione in cortocircuito (1) In C, le espressioni booleane
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,
DettagliEsempi comparati while, do...while
Esempi comparati while, do...while Algoritmo. - inizializza Somma a zero - finchè la risposta è "continuazione" - visualizza messaggio - acquisisci un numero I - aggiungi I a Somma - domanda se continuare
DettagliProgrammare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi
MASTER Information Technology Excellence Road (I.T.E.R.) Programmare in C Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di Dati Valori Un insieme
DettagliIntroduzione al C. Lezione 1 Elementi. Rossano Venturini. Pagina web del corso
Introduzione al C Lezione 1 Elementi Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso C Mercoledì 19 Giovedì
DettagliL AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using
DettagliIntroduzione al linguaggio C Primi programmi
Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliI/O da tastiera + Alessandra Giordani Lunedì 2 maggio
I/O da tastiera + costrutti while e if Alessandra Giordani agiordani@disi.unitn.it Lunedì 2 maggio 2011 http://disi.unitn.it/~agiordani/ Ripasso funzione printf() Usata per stampare il contenuto di una
DettagliProgrammazione C Massimo Callisto De Donato
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
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 2018 2019 20.III.2019 VINCENZO MARRA Indice Parte 1. L algoritmo euclideo 3 Esercizio 1 3 L algoritmo euclideo
Dettaglidel Linguaggio C Istruzioni di iterazione
Istruzioni i Iterative ti del Linguaggio C Istruzioni di iterazione Le istruzioni di iterazione forniscono strutture di controllo che esprimono la necessità di ripetere una certa istruzione durante il
DettagliLinguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
DettagliTutorato Elementi di Informatica 2018
Università degli Studi di Cagliari Pattern Recognition & Application Lab Dipartimento di Ingegneria Elettrica ed Elettronica Tutorato Elementi di Informatica 2018 Esercitazione 2 Introduzione e Tipi di
DettagliStruttura di un. Struttura dei programmi C
Parte 4 Struttura di un Programma Struttura dei programmi C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume in un file): 1. Una parte contenente direttive
DettagliStrutture di Controllo Iterative: Istruzione FOR
Linguaggio C Strutture di Controllo Iterative: Istruzione FOR 1 Istruzioni iterative n Anche dette cicli n Prevedono l esecuzione ripetitiva di altre istruzioni (corpo del ciclo) n Ad ogni iterazione del
DettagliPrimi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione
Primi esempi di programmi Il tipo int Le variabili Altri tipi interi Operatori di assegnazione Il tipo int Un int permette di trattare numeri interi 4 byte (32 bit) con la tecnica del complemento a 2 (ma
DettagliCorso sul linguaggio C
Corso sul linguaggio C Modulo 1 1.1 Istruzioni semplici 1 Prerequisiti Saper progettare algoritmi Saper descrivere algoritmi (NLS, ddf) Conoscere il concetto di espressione 2 1 Introduzione In questa lezione
DettagliStrutture di Controllo Iterative: Istruzione FOR
Linguaggio C Strutture di Controllo Iterative: Istruzione FOR 1 Istruzioni iterative! Anche dette cicli! Prevedono l esecuzione ripetitiva di altre istruzioni (corpo del ciclo)! Ad ogni iterazione del
DettagliLaboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:
Corso di Ingegneria Biomedica Corso di Ingegneria Elettronica Insegnamento di Informatica I a.a. 2007-08 Laboratorio 1 Durante le esercitazioni verra utilizzato il compilatore a riga di comando DJGPP,,
DettagliLezione 22: Input/Output e Files
Lezione 22: Input/Output e Files Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università di Salerno Struttura della lezione Esami: date e modalità Funzioni di libreria standard
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
DettagliEsercizi. Filtraggio
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)
DettagliFondamenti di Informatica L-A. Esercitazione 2
Fondamenti di Informatica L-A Esercitazione 2 Variabili ed Espressioni: Dichiarazione, Coercizione, Overloading, Overflow, Underflow, Divide by Zero e Casting. Input-Output: printf e scanf. Paolo Torroni
Dettagli1
Manuali di C Linguaggio C B. W. Kernigan, D. M. Ritchie Jackson La guida completa al C H. Schildt McGraw-Hill Fondamenti di Informatica 1 Linguaggio C Creato nei primi anni 70 per sviluppare il S.O. Unix
DettagliIntroduzione al C. Lez. 1 Elementi. Rossano Venturini
Introduzione al C Lez. 1 Elementi Rossano Venturini rossano.venturini@isti.cnr.it URL del corso http://www.cli.di.unipi.it/doku/doku.php/informatica/all-b/start Lezioni - Lunedì 16-18 Aula M - Martedì
DettagliIntroduzione alla programmazione. Alice Pavarani
Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello
DettagliInformatica A (per gestionali) A.A. 2004/2005. Esercizi C. Strutture di controllo
Informatica A (per gestionali) A.A. 2004/2005 Esercizi C Strutture di controllo 1 Indice 1 Strutture di controllo...3 1.1 Multiplo...3 1.2 Massimo Comun Divisore...3 1.3 Valutazione triangolo...4 1.4 Calcolatrice...5
DettagliESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliAspetti fondamentali della programmazione (con riferimento al linguaggio C e C++)
Aspetti fondamentali della programmazione (con riferimento al linguaggio C e C++) 1 Codifica degli algoritmi algoritmo formulato per essere eseguito automaticamente preciso ed eseguibile linguaggio macchina
DettagliNuovi tipi di dato e. Alessandra Giordani Lunedì 26 marzo
Nuovi tipi di dato e costrutto condizionale Alessandra Giordani agiordani@disi.unitn.it Lunedì 26 marzo 2012 http://disi.unitn.it/~agiordani/ Tipi di dato fondamentali int e il tipo di dato che consente
DettagliSTRUTTURE DI CONTROLLO IN C. Docente: Giorgio Giacinto AA 2009/2010
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
DettagliPolitecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University
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
DettagliLinguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C Tipi predefiniti e operatori Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 RICHIAMI char 8 bit Valori interi
DettagliFondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 Obiettivi di questa lezione 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Valutazione in cortocircuito In C, le espressioni booleane sono
Dettagliciclo di vita della soluzione (informatica) di un problema
Università di Roma Tor Vergata L2-1 ciclo di vita della soluzione (informatica) di un problema errori run-time errori sintattici codice editor codice C++ compilatore esegui eseguibile OK risultati scorretti
DettagliLinguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin
Linguaggio C Tipi predefiniti Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Il concetto di tipo (reprise) Nome che indica
DettagliLaboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi
Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Università degli Studi La Sapienza Fondamenti di
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliParte Input e output in linguaggio i C. 3. Programmazione strutturata 1 (if, switch, comunque segnalare dei warning
Obiettivi di questa esercitazione Fondamenti di Informatica T-1 Parte 2 Laboratorio 01 1. Input e output in linguaggio i C 2. Espressioni 3. Programmazione strutturata 1 (if, switch, do while) 1 2 Warning
DettagliCodifica dell informazione
Codifica dell informazione Informatica B Come memorizzo l informazione nel calcolatore? 1 bit di informazione 1 bit di informazione La memoria del calcolatore L informazione nel calcolatore q Il calcolatore
DettagliIngresso ed Uscita in C. Informatica 1 / 15
Ingresso ed Uscita in C Informatica 1 / 15 Input e Output in C Linguaggio C: progettato per essere semplice e con poche istruzioni Non esistono istruzioni di ingresso / uscita (I/O)!!! Ingresso ed uscita
DettagliStrutture di Controllo Iterative: Istruzioni While e Do
Linguaggio C Strutture di Controllo Iterative: Istruzioni While e Do 1 Istruzioni iterative! Anche dette cicli! Prevedono l esecuzione ripetitiva di altre istruzioni (corpo del ciclo)! Ad ogni iterazione
DettagliLa Programmazione. Cos è la programmazione? Concetti preliminari
La Programmazione Cos è la programmazione? Concetti preliminari 1 Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione 1 C-Introduzione.tex: Versione 1.0, aa 2005-2006 Linguaggi di programmazione (1) Sono linguaggi che permettono la codifica di algoritmi in modo da renderli eseguibili, direttamente
DettagliEsercitazione n. 7. Gestione dei file (seconda parte)
Esercitazione n. 7 Gestione dei file (seconda parte) dott. Carlo Todeschini tode@cremona.polimi.it Politecnico di Milano A.A. 2010/2011 Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non
DettagliIntroduzione al C. Lez. 1 Elementi
Introduzione al C Lez. 1 Elementi Introduzione al C Strumento che adotteremo in queste esercitazioni per implementare e testare gli algoritmi visti a lezione Configurazione minimale suggerita: Editing
DettagliEsercizi Programmazione I
Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=
DettagliLaboratorio di Informatica
Laboratorio di Informatica Ingegneria Meccanica Esercitazione 3, 23 ottobre 2007 versione 3 novembre 2007 Limiti per tipi int #include rende visibili le costanti simboliche SHRT_MIN, SHRT_MAX,
DettagliProgrammazione in C. La struttura del programma Variabili, espressioni, operazioni
Programmazione in C La struttura del programma Variabili, espressioni, operazioni Struttura del programma // Area quadrato circoscritto // circonferenza /* Author: Lorenzo Course: info */ #include
DettagliLaboratorio di informatica Ingegneria meccanica
Laboratorio di informatica Ingegneria meccanica Esercitazione 8 21 Novembre 2007 Funzioni in C Un programma C si compone di funzioni E' disponibile una collezione predefinita di funzioni che possono essere
DettagliUn esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);
Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i
DettagliFondamenti di Informatica L-A
Fondamenti di Informatica L-A Esercitazione del 30/10/07 Ing. Giorgio Villani Ripasso Teoria Ciclo do while do {istruzioni while(espressione); int i; do { printf( Scegli un numero tra 1 e 3 ); scanf( %d,
DettagliCominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi
Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono l algoritmo Cominciamo ad analizzare la
DettagliInformatica 2 modulo C Massimo Callisto De Donato
Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Informatica 2 modulo C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE
Dettagli7. Strutture di controllo
Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Gestionale (L-Z) 7. Ing. Michele Ruta 1 di 17 Indice Istruzioni di selezione Mappate dal costrutto switch Istruzioni cicliche (di iterazione)
DettagliESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
DettagliAlcuni esercizi. 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli
Alcuni esercizi 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Stampa di voti Esempio 1 (switch) Realizzare un programma che legge da input un voto (carattere tra A ed E ) e ne
DettagliTipi strutturati in C. Stringhe
Tipi strutturati in C Stringhe Stringhe Una stringa di caratteri in C è un array di caratteri terminato dal carattere \0 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1 caratteri,
DettagliOgni parte non cancellata a penna sarà considerata parte integrante della soluzione.
Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 13 Novembre 2012 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene
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
DettagliPrimi programmi in C
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Uso del compilatore gcc Struttura di un programma
DettagliCorso di Informatica
Corso di Informatica CdL in Matematica e CdL in Matematica per le Applicazioni Prof. G. Nicosia Dipartimento di Matematica e Informatica Facoltà di Scienze MM.FF.NN. Università degli Studi di Catania A.
DettagliOgni parte non cancellata a penna sarà considerata parte integrante della soluzione.
Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 13 Novembre 2012 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene
DettagliCorso Programmazione
Corso Programmazione 2009-2010 (docente) E-mail: aiolli@math.unipd.it Web: www.math.unipd.it/~aiolli Dipartimento di Matematica Pura ed Applicata Torre Archimede, Via Trieste 63 PARTE 3 2 Variabili Le
DettagliIntroduzione al C. Informatica Generale - Introduzione al C Versione 1.0, aa p.1/17
Introduzione al C Informatica Generale - Introduzione al C Versione 1.0, aa 2005-2006 p.1/17 Linguaggi di programmazione Sono linguaggi che permettono la codifica di algoritmi in modo da renderli eseguibili,
DettagliSistemi di sviluppo integrati
Elementi di Informatica e Programmazione Ingegneria Informatica Ingegneria dell'automazione Industriale Ingegneria Elettronica e delle Telecomunicazioni Alessandro Saetti (email: alessandro.saetti@unibs.it)
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 3: Istruzioni ed operatori booleani. Vittorio Scarano Corso di Laurea in Informatica Università di Salerno Soluzioni agli esercizi Istruzioni (statement) semplici e di controllo
Dettagli