Il giorno Luned 31 Maggio 2004 sar in laboratorio EST dalle 14:30 alle 18:00 per rispondere ad eventuali domande e correggere esercizi rimasti arretrati dalle esercitazioni. Una sorta di ricevimento studenti davanti al calcolatore.
Sar essere un'ottima occasione per iniziare (o continuare) i progetti per l'esame.
ATTENZIONE: alla pagina Note DevC++ sono state aggiunte alcune informazioni sull'ambiente di sviluppo DevC++, utili per risolvere alcuni dei problemi avuti durante le esercitazioni.
All'esame ogni studente deve portare una copia degli esercizi asseganti durante le esercitazioni (su dischetto, chiavetta, CD-ROM, ...). Infatti, all'esame potrebbe essere richiesto di commentare la soluzione ad uno di questi esercizi.
La lista degli esercizi da portare la seguente (di fatto sono quasi tutti gli esercizi delle esercitazioni):
Lez. 2 | es 3, 4 e 5 |
Lez. 4 | es 1, 2, 3, 4 e 5 |
Lez. 6 | es 1, 2, 3, 4 |
Lez. 8 | es 1, 2, 3, 4 e 5 |
Lez. 10 | es 1, 2, 3, 4 e 5 |
Lez. 12 | es 3 e 4 |
Lez. 14 | es 1, 2, 3 e 4 |
Lez. 16 | es 3 e 4 |
Lez. 18 | es 1, 2 e 3 |
Lez. 20 | - |
Luned 10 Maggio 2004 sono state pubblicate
alla pagina elaborati.htm le tracce
degli elaborati, sia C che PHP, da svolgere per il superamento
dell'esame e valide fino alla sessione di Settembre inclusa.
Ringrazio tutti coloro che hanno inviato la soluzione ai due esercizi della lezione 12. I programmi hanno rivelato la presenza di errori nel materiale delle lezioni. In particolare:
#include <stdlib.h>[mancava in alcuni esempi sul materiale di una lezione e in alcuni esercizi]
Inoltre vale la pena osservare che:
void main() { ... }
Luned 26 Aprile 2004 la lezione sar sostituita da una delle lezioni
del mini corso Java. Il corso sar tenuto dalla dott.ssa Olga Scotti
con il seguente orario:
Data | Orario | Aula |
---|---|---|
Luned 19 Aprile 2004 | 11:00-13:00 | D SUD |
Mercoled 21 Aprile 2004 | 11:00-13:00 | D SUD |
Luned 26 Aprile 2004 | 14:00-16:00 | D SUD |
Luned 26 Aprile 2004 | 16:00-18:00 | LAB EST |
Grazie a Luciano Colosio, Graziano Panzera, Davide Rebeccani
e Michele Vetturi, i problemi ai servers del WEBLAB sono stati risolti.
Un grazie per l'impegno ed il tempo che vi hanno profuso.
Da oggi possibile ottenere gli account necessari a partecipare alle
esercitazioni. ATTENZIONE!: senza gli account impossibile fare l'upload
sul server WEB del vostro script PHP.
A partire dalla lezione di luned 29 Marzo 2004 compresa,
le lezioni del corso
"Laboratorio di Informatica Applicata" si terranno
in aula D SUD, dalle ore 14.30 alle 16.00.
Le esercitazioni saranno sempre il luned nel laboratorio
EST dalle ore 16.30 alle 18.00.
Non ci sar nessun cambiamento di orario per il corso
"Laboratorio di programmazione per la sicurezza" che continuer ad
essere il luned pomeriggio in
C SUD dalle ore 14.30 alle 16.00.
A partire dalle prossime lezioni cominceremo ad occuparci di PHP,
un linguaggio di scripting integrato nell'HTML e
particolarmente adatto allo sviluppo di applicazioni Web.
Per poter partecipare alle esercitazioni occorre avere un account sulla macchina
server.
Vi suggeriamo di richiederlo al pi presto in WEBLAB (Lab. Von Neumann).
Per informazioni:
http://php.weblab.crema.unimi.it
Una possibile soluzione dell'esercizio 5 della lezione del 15 Marzo la seguente:
#include <stdio.h> #include <stdlib.h> #define NOME_FILE "costituz.txt" main() { FILE *file_in; int carattere_letto; unsigned int numero_caratteri_r=0; // Apro il file in modalità testo file_in = fopen(NOME_FILE, "rt"); if(file_in == NULL) { printf( "Non trovo il file.\n" ); exit(-1); } // Conto le lettere r. Notate che assegno il carattere letto // alla variabile carattere_letto in modo da poterlo utilizzare // nei due confronti. while( (carattere_letto=fgetc(file_in)) != EOF) { if(((char)carattere_letto == 'r') || ((char)carattere_letto == 'R')) numero_caratteri_r++; } printf("La costituzione contiene %u lettere r\n", numero_caratteri_r); fflush(stdin); getch(); }
La costituzione contiene 3114 lettere r
Alternativamente si potevano contare tutte le lettere sfruttando il carattere letto (ricordate che un intero) come indice in un array.
#include <stdio.h> #include <stdlib.h> #define NOME_FILE "costituz.txt" main() { FILE *file_in; int carattere_letto, i, j, k; unsigned int numero_caratteri[256]; // Apro il file in modalità binaria (conto proprio tutti i caratteri) file_in = fopen(NOME_FILE, "rb"); if(file_in == NULL) { printf( "Non trovo il file.\n" ); exit(-1); } // Inizializzo a zero for(i=0; i<256; i++) numero_caratteri[i]=0; // Conto tutte le lettere. while( (carattere_letto=fgetc(file_in)) != EOF) numero_caratteri[carattere_letto]++; // Stampo una tabella con il conteggio. Metto 4 caratteri e il numero // di occorrenze su ogni linea. I primi 32 caratteri sono caratteri di // controllo (come il fineriga, per esempio) e li indico con il loro codice // esadecimale for(i=0; i<64; i++) { for(j=0; j<4; j++) { k=4*i+j; if(k<32) printf("%2Xx0(%3d):%5u ", (unsigned)k, k, numero_caratteri[k]); else printf("%3c (%3d):%5u ", k, k, numero_caratteri[k]); } printf("\n"); } }
Il risultato a video pu sembravi strano. Il carattere 232 (apparentemente
la lettera thorn maiuscola Þ presente nell'alfabeto finlandese) stato contato
88 volte e la cosa decisamente improbabile.
Il problema sta nel fatto che la console e le
applicazioni di Windows utilizzano una differente codifica per i caratteri >127.
Nella codifica ANSI-Windows (quella utilizzata per scrivere il file) il carattere
232 corrispondo alla lettera .
Per visualizzare il risultato correttamente dovete effettuare due operazioni:
Eseguendo il programma dalla linea di comando dovreste avere qualcosa del genere:
C:\>elenca.exe 0x0( 0): 0 1x0( 1): 0 2x0( 2): 0 3x0( 3): 0 4x0( 4): 0 5x0( 5): 0 6x0( 6): 0 7x0( 7): 0 8x0( 8): 0 9x0( 9): 0 Ax0( 10): 602 Bx0( 11): 0 Cx0( 12): 0 Dx0( 13): 602 Ex0( 14): 0 Fx0( 15): 0 10x0( 16): 0 11x0( 17): 0 12x0( 18): 0 13x0( 19): 0 14x0( 20): 0 15x0( 21): 0 16x0( 22): 0 17x0( 23): 0 18x0( 24): 0 19x0( 25): 0 1Ax0( 26): 0 1Bx0( 27): 0 1Cx0( 28): 0 1Dx0( 29): 0 1Ex0( 30): 0 1Fx0( 31): 0 ( 32):10369 ! ( 33): 0 " ( 34): 0 # ( 35): 0 $ ( 36): 0 % ( 37): 0 & ( 38): 0 ' ( 39): 206 ( ( 40): 0 ) ( 41): 0 * ( 42): 0 + ( 43): 0 , ( 44): 440 - ( 45): 64 . ( 46): 591 / ( 47): 0 0 ( 48): 24 1 ( 49): 96 2 ( 50): 42 3 ( 51): 39 4 ( 52): 33 5 ( 53): 26 6 ( 54): 30 7 ( 55): 24 8 ( 56): 31 9 ( 57): 34 : ( 58): 8 ; ( 59): 54 < ( 60): 0 = ( 61): 0 > ( 62): 0 ? ( 63): 0 @ ( 64): 0 A ( 65): 42 B ( 66): 3 C ( 67): 232 D ( 68): 7 E ( 69): 40 F ( 70): 14 G ( 71): 43 H ( 72): 3 I ( 73): 179 J ( 74): 0 K ( 75): 0 L ( 76): 167 M ( 77): 23 N ( 78): 49 O ( 79): 25 P ( 80): 122 Q ( 81): 5 R ( 82): 156 S ( 83): 93 T ( 84): 34 U ( 85): 8 V ( 86): 23 W ( 87): 0 X ( 88): 10 Y ( 89): 0 Z ( 90): 10 [ ( 91): 0 \ ( 92): 0 ] ( 93): 0 ^ ( 94): 0 _ ( 95): 0 ` ( 96): 0 a ( 97): 4760 b ( 98): 578 c ( 99): 1636 d (100): 2090 e (101): 6282 f (102): 364 g (103): 1247 h (104): 229 i (105): 6650 j (106): 0 k (107): 0 l (108): 3604 m (109): 1179 n (110): 3622 o (111): 4381 p (112): 1246 q (113): 116 r (114): 2958 s (115): 2377 t (116): 3327 u (117): 1402 v (118): 626 w (119): 0 x (120): 2 y (121): 0 z (122): 720 { (123): 0 | (124): 0 } (125): 0 ~ (126): 0 (127): 0 (128): 0 (129): 0 (130): 0 (131): 0 (132): 0 (133): 0 (134): 0 (135): 0 (136): 0 (137): 0 (138): 0 (139): 0 (140): 0 (141): 0 (142): 0 (143): 0 (144): 0 (145): 0 (146): 0 (147): 0 (148): 0 (149): 0 (150): 0 (151): 0 (152): 0 (153): 0 (154): 0 (155): 0 (156): 0 (157): 0 (158): 0 (159): 0 (160): 0 (161): 0 (162): 0 (163): 0 (164): 0 (165): 0 (166): 0 (167): 0 (168): 0 (169): 0 (170): 0 (171): 0 (172): 0 - (173): 0 (174): 0 (175): 0 (176): 1 (177): 0 (178): 0 (179): 0 (180): 0 (181): 0 (182): 0 (183): 0 (184): 0 (185): 0 (186): 0 (187): 0 (188): 0 (189): 0 (190): 0 (191): 0 (192): 0 (193): 0 (194): 0 (195): 0 (196): 0 (197): 0 (198): 0 (199): 0 (200): 0 (201): 0 (202): 0 (203): 0 (204): 0 (205): 0 (206): 0 (207): 0 (208): 0 (209): 0 (210): 0 (211): 0 (212): 0 (213): 0 (214): 0 (215): 0 (216): 0 (217): 0 (218): 0 (219): 0 (220): 0 (221): 0 (222): 0 (223): 0 (224): 133 (225): 0 (226): 0 (227): 0 (228): 0 (229): 0 (230): 0 (231): 0 (232): 88 (233): 16 (234): 0 (235): 0 (236): 3 (237): 0 (238): 0 (239): 0 (240): 0 (241): 0 (242): 65 (243): 0 (244): 0 (245): 0 (246): 0 (247): 0 (248): 0 (249): 6 (250): 0 (251): 0 (252): 0 (253): 0 (254): 0 (255): 0
Sommando le occorrenze della lettere 'R' e 'r', abbiamo ancora 156+2958=3114.
©2004 Roberto Sassi