AVVISI


Chi pu inserire l'esame nel Piano degli Studi?




Esercitazione straordinaria

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.




DevC++ NO PROBLEM

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.




Quali esercizi per l'esame?

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 -




TRACCE DEGLI ELABORATI

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.


Inciampo

ATTENZIONE: errori nel materiale delle lezioni (ora corretti).

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:


Inoltre vale la pena osservare che:




MINI CORSO JAVA: NON MANCATE!

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




Da luned 19 Aprile 2004 il server PHP.WEBLAB funziona di nuovo corretamente

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.




ATTENZIONE! CAMBIO DI AULA

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.




IMPORTATISSIMO!

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




Soluzione esercizio BONUS del 15 Marzo

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:

  1. Utilizzare un font differente per la console. Come si fa: cliccate con il tasto destro sul titolo della finestra di console (la scritta "Prompt dei comandi"), selezionate la scheda "Tipo di carattere" e scegliete come "Carattere", "Lucida Console".
  2. Cambiare la code page utilizzata dalla console (in modo che sia la stessa utilizzata da Windows). Come si fa: al prompt digitate chcp 1252.

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.







Informazioni sul sito