Linguaggio C Guida alla programmazione. Capitolo 2. Soluzioni degli esercizi (Applica le abilità)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Linguaggio C Guida alla programmazione. Capitolo 2. Soluzioni degli esercizi (Applica le abilità)"

Transcript

1 Soluzioni degli esercizi (Applica le abilità) Capitolo 2 1. a) Linux ls /home/gabriele/oro MS/DOS o Windows dir \home\gabriele\oro b) Linux ls /home/gabriele MS/DOS o Windows dir \home\gabriele c) Linux ls /bin MS/DOS o Windows dir \bin d) Linux ls /home/gabriele/oro/gioielli MS/DOS o Windows dir \home\gabriele\oro\gioielli e) Linux ls /home/gabriele/oro/a* MS/DOS o Windows dir \home\gabriele\oro\a* f) Linux ls /bin/l* MS/DOS o Windows dir \bin\l* 2. a) Linux ls MS/DOS o Windows dir b) Linux ls.. MS/DOS o Windows dir.. c) Linux ls../../../bin MS/DOS o Windows dir..\..\..\bin d) Linux ls gioielli MS/DOS o Windows dir gioielli e) Linux ls a* MS/DOS o Windows dir a* f) Linux ls../../../bin/l* MS/DOS o Windows dir..\..\..\bin\l* 3. La figura a cui si fa riferimento nell esercizio è Figura 2.3 (e non la 2.9 come erroneamente indicato). a) Linux cd /etc MS/DOS o Windows cd \etc b) Linux cd /home/pluto MS/DOS o Windows cd \home\pluto c) Linux cd /home MS/DOS o Windows cd \home d) Linux cd / MS/DOS o Windows cd \ e) Linux cd /bin ls cd /home/nora MS/DOS o Windows cd \bin dir cd \home\nora

2 4. a) Linux cd../../etc MS/DOS o Windows cd..\../etc b) Linux cd../pluto MS/DOS o Windows cd..\pluto c) Linux cd.. MS/DOS o Windows cd.. d) Linux cd../.. MS/DOS o Windows cd..\.. e) Linux cd../../bin ls cd../home/nora MS/DOS o Windows cd..\..\bin dir cd..\home\nora 5. La directory a cui si fa riferimento nei punti a e c è Gabriele (e non melodia come erroneamente indicato). a) Linux cd /home/gabriele MS/DOS o Windows cd \home\gabriele b) Linux cd../gabriele MS/DOS o Windows cd..\gabriele c) Linux mkdir /home/gabriele/programmi MS/DOS o Windows mkdir \home\gabriele\programmi d) Se la directory corrente è ancora nora: Linux mkdir../gabriele/programmi MS/DOS o Windows mk dir..\gabriele\programmi Se invece con i comandi indicati nei punti precedenti la directory corrente è ora Gabriele: Linux mkdir programmi MS/DOS o Windows mkdir programmi e) Se la directory corrente è ancora nora: Linux rmdir../gabriele/programmi MS/DOS o Windows rmdir..\gabriele\programmi Se invece, con i comandi indicati nei punti precedenti, la directory corrente è ora Gabriele: Linux rmdir programmi MS/DOS o Windows rmdir programmi 6. L esercizio presenta una difficoltà in quanto il nome del file contiene un carattere spazio al suo interno, C DOC, se al posto dello spazio ci fosse un carattere di sottolineatura, C02_2008.DOC, le soluzioni sarebbero le seguenti: a) Linux cp C02_2008.DOC C02BACKUP.DOC MS/DOS o Windows copy C02_2008.DOC C02BACKUP.DOC b) Linux cp C02_2008.DOC../C02COPIA.DOC MS/DOS o Windows copy C02_2008.DOC..\C02COPIA.DOC c) Linux rm C02_2008.DOC MS/DOS o Windows del C02_2008.DOC Per porter considerare lo spazio si deve porre il nome tra doppi apici: a) MS/DOS o Windows copy "C DOC" C02BACKUP.DOC b) MS/DOS o Windows copy "C DOC"..\C02COPIA.DOC c) MS/DOS o Windows del "C DOC" 7. a) Linux mkdir fileprecedenti MS/DOS o Windows mkdir fileprecedenti

3 b) Linux cp * fileprecedenti MS/DOS o Windows copy *.* fileprecedenti c) Linux rm *.DOC MS/DOS o Windows del *.DOC 8. a) Linux mkdir T08/filePrecedenti MS/DOS o Windows mkdir T08\filePrecedenti b) Linux cp T08/* T08/filePrecedenti MS/DOS o Windows copy T08\*.* T08\filePrecedenti c) Linux rm T08/*.DOC MS/DOS o Windows del T08\*.DOC

4 Capitolo 3 1 Si suppone che il cellulare utilizzato sia in grado di effettuare la ricerca di un nome digitandone in sequenza le lettere. a. Premi sul cellulare il tasto che attiva la rubrica b. premi la prima lettera del nome ricercato c. fintantoché non appare sullo schermo l intero nome ricercato oppure il messaggio nessuna corrispondenza premi la successiva lettera del nome d. Se è apparso sullo schermo l intero nome ricercato premere il tasto di avvio chiamata telefonica. d. fine 2 a. Scrivi 1 b. fintantoché il numero scritto è diverso da 100, scrivi il numero precedente + 1 c. fine 3 a. Scrivi 1 b. fintantoché il numero scritto è diverso da 99, scrivi il numero precedente + 2 c. fine 4 a. Scrivi -2 b. fintantoché il numero scritto è diverso da -50, scrivi il numero precedente - 2 c. fine 5 a. Scrivi 150 b. addiziona 1 al numero precedente c. se il resto della divisione intera del numero ottenuto per 4 è diverso da zero scrivi il numero d. fintantoché il numero ottenuto è diverso da -4 vai all istruzione b e. fine 6 a. Suddividi le carte in 4 mazzi, ognuno dei quali costituito da carte dello stesso seme b. per ogni seme ordina le carte dall asso al re c. prendi il mazzo di cuori, quadri, fiori e picche La descrizione può avere un maggior dettaglio, per esempio: a. Suddividi le carte in 4 mazzi, ognuno dei quali costituito da carte dello stesso seme b. per ogni seme prendi l asso, prendi il due, prendi il tre.. prendi il re c. prendi il mazzo di cuori, quadri, fiori e picche 7 Alla prima mossa si devono lasciare all avversario 9 oggetti (4i + 1, i = 2) a. Raccogli 2 oggetti b. il secondo giocatore raccoglie m oggetti (1 m 3) c. finché ci sono ancora oggetti sul tavolo: raccogli 4 m oggetti e vai all istruzione b d. fine (il secondo giocatore gioca sempre per ultimo e il primo giocatore vince sempre) 8 a. Il primo giocatore raccoglie m oggetti (m può essere 1 o 3) b. raccogli m oggetti c. il primo giocatore raccoglie m oggetti (1 m 3) d. finché ci sono ancora oggetti sul tavolo: raccogli 4 m oggetti e vai all istruzione c e. fine (il primo giocatore gioca sempre per ultimo e il secondo giocatore vince sempre)

5 9 Non è possibile scrivere un algoritmo vincente quando gli oggetti sono n = 4i + 1, per esempio 9, 13, 17, 21 ecc. In tali circostanze il primo giocatore non può lasciare al secondo un numero di oggetti della forma 4i + 1. Negli altri casi (n diverso da 4i + 1) l algoritmo è il seguente. a. Raccogli j oggetti, dove j = 2 se r = 3 (r è il resto della divisione intera di n per 4), j = 1 se r = 2, j = 3 se r = 0 b. il secondo giocatore raccoglie m oggetti (1 m 3) c. finché ci sono ancora oggetti sul tavolo: raccogli 4 m oggetti e vai all istruzione b d. fine (il secondo giocatore gioca sempre per ultimo e il primo giocatore vince sempre) 10 a. Prendi i coefficienti a, b e c b. calcola Δ = b 2 4ac c. se Δ < 0 non esistono radici reali, altrimenti se Δ = 0 allora x 1 = x 2 = b/2a, altrimenti x 1 = ( b + Δ)/2a, x 2 = ( b Δ)/2a 12 a. Scrivi 1 b. considera il primo numero naturale c. addiziona al numero scritto il successivo numero naturale d. fintantoché il numero ottenuto è minore di 1000 scrivi il numero e vai all istruzione b e. fine 13 a. Considera il primo numero naturale b. scrivi il numero naturale considerato moltiplicato due volte per se stesso c. fintantoché il numero ottenuto è minore di considera il successivo numero naturale e vai all istruzione b d. fine

6 Capitolo 4 2 numero = 1; while(numero<101) scrivi numero; numero = numero + 1; o, tra le tante alternative: numero = 0; do numero = numero + 1; scrivi numero; while (numero!=100); 3 numero = 1; while(numero<100) scrivi numero; numero = numero + 2; 5 numero = 150; while(numero<0) if(numero%4!=0) scrivi numero; numero = numero + 1; 7 n è la variabile che contiene il numero di oggetti con cui si gioca, mentre m è la variabile che contiene il numero di oggetti che preleva il secondo giocatore. Si dà per scontato che il secondo giocatore raccolga 1, 2 o 3 oggetti, per cui l istruzione prendi m; assegnerà a m un valore intero compreso tra 1 e 3. In realtà questi valori andrebbero controllati. n = 11; n = n 2; while(n>4) prendi m; n = n m; n = n (4 m); scrivi "Tocca al secondo giocatore, e il primo ha vinto" Naturalmente avremmo potuto scrivere al posto delle ultime due istruzioni n=n m (4 m). 8 Nota: si dà per scontato che il primo giocatore raccolga 1 o 3 oggetti al primo giro e 1, 2 o 3 oggetti ai giri successivi. In realtà questi valori andrebbero controllati.

7 n = 11; prendi m; n = n m; while(n>4) prendi m; n = n m; n = n (4 m); scrivi "Tocca al primo giocatore, e il primo ha vinto" 9 Non è possibile scrivere un algoritmo vincente quando gli oggetti sono n = 4i + 1, per esempio 9, 13, 17, 21 ecc. In tali circostanze il primo giocatore non può lasciare al secondo un numero di oggetti della forma 4i + 1. Negli altri casi (n diverso da 4i+1) l algoritmo è il seguente. prendi n; r = n % 4; if(r=3) j=2; if(r=2) j=1; if(r=0) j=3); n = n j; while(n>4) prendi m; n = n m; n = n (4 m); scrivi "tocca al secondo giocatore, e il primo ha vinto" Abbiamo utilizzato una sequenza di tre if per determinare il valore di j; avremmo potuto utilizzare una cascata di if (vedi Capitolo 7): if(r=3) j=2; else if(r=2) j=1; else j=3; Dato che nel nostro caso i valori ammissibili del resto della divisione intera di n per 4 possono essere solo 0, 2, 3 (1 non può essere, altrimenti n sarebbe della forma 4i + 1) possiamo evitare l ultima if: if(r=0) e mettere direttamente l else. 13 numero = 1; naturale = 2; while(numero<1000) scrivi numero; numero = numero + naturale; naturale = naturale + 1; 14 numero = 1; while(numero*numero*numero<10000) scrivi numero*numero*numero; numero = numero + 1;

8 Capitolo 5 5 #include <math.h> #define ZERO 0 #define TOP 1000 int a, b, c, x, y; printf("valore di x: "); scanf("%d", &x); printf("valore di y: "); scanf("%d", &y); a = ZERO abs(x); b = TOP abs(y); c = a*b; printf("valore di a: %d\n", a); printf("valore di b: %d\n", b); printf("valore di c: %d\n", c); SUGGERIMENTI DI PROGRAMMAZIONE Non si riescono a leggere i risultati nella finestra di esecuzione del programma Se eseguendo i programmi non si riescono a leggere i risultati, la causa potrebbe essere la chiusura immediata della finestra d esecuzione che non lascia il tempo per osservare l output del programma sul video. Per ovviare all inconveniente, si può utilizzare il seguente artifizio facile da interpretare, ma che comunque verrà spiegato nel proseguo dello studio. Inserire la dichiarazione della variabile carattere pausa: char pausa; Aggiungere come ultime due istruzioni del programma: che mettono in attesa il programma in esecuzione della pressione di un tasto da parte dell utente. Sarebbe meglio farle precedere da un messaggio esplicativo. printf("un tasto qualsiasi per continuare\n"); SUGGERIMENTI DI PROGRAMMAZIONE errore di compilazione 'abs' undeclared In alcune implementazioni la libreria math.h non contiene abs ma solo fabs, che restituisce il valore assoluto di valori in virgola mobile, in tal caso il compilatore ritorna un errore del tipo: `abs' undeclared (first use this function) in tal caso sostituire nel programma fabs ad abs. Il compilatore avvertirà (Warning) che viene effettuata una conversione da intero a double, ma in questo caso tutto funziona correttamente: [Warning] converting to `int' from `double'

9 11 Visualizza Visualizzano 48, -60, 6 e Visualizzano 24, -84, -6 e Visualizzano 37, -48, 5 e 2.

10 Capitolo #define A 2 #define B 545 char pausa; printf("%7d%4d\n", A, B); printf("%1d%3d\n", A, B); printf("%1d%2d\n", A, B); printf("%7d%4d%4d\n", A, B, A+B); printf("%7d%4d%4d\n", A, B, A*B); printf("%7d%4d%5d\n", A, B, A*B+A); printf("%7d%4d%9d\n", A, B, A*A*B*B); 6 char pausa; char c1, c2, c3; c1='p'; c2='&'; c3='f'; printf("%c%c%c\n", c1, c2, c3); printf("%c%c %c\n", c1, c2, c3); printf("%c %c %c\n", c1, c2, c3); printf("padre:%c %c Figlio:%c\n", c1, c2, c3); printf("padre: %c %c Figlio: %c\n", c1, c2, c3); 7 char pausa; char asso, re, donna; int a, r, d; asso='a'; re='r'; donna='d';

11 a=11; r=10; d=9; printf("%c %d %c %d %c %d\n", asso, a, re, r, donna, d); printf("%c%c%c %d %d %d\n", asso, re, donna, a, r, d); printf("%d %c %d %c %d %c\n", a, asso, r, re, d, donna); printf("%d %c %d %c %d %c\n", d, donna, r, re, a, asso); printf("asso %c%d RE %c%d Donna %c%d\n", asso, a, re, r, donna, d);

12 Capitolo 7 2 /* Determina il maggiore tra quattro valori */ int a, b, c, d; printf("\ndigita quattro valori interi distinti: "); scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); scanf("%d", &d); if(a>b) if(a>c) if(a>d) printf("il maggiore e': %d\n", a); else printf("il maggiore e': %d\n", d); else if(c>d) printf("il maggiore e': %d\n", c); else printf("il maggiore e': %d\n", d); else if(b>c) if(b>d) printf("il maggiore e': %d\n", b); else printf("il maggiore e': %d\n", d); else if(c>d) printf("il maggiore e': %d\n", c); else printf("il maggiore e': %d\n", d); 4 /* Determina il maggiore e il minore fra tre valori */ int a, b, c; printf("\ndigita tre valori interi distinti: "); scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); if(a>b) if(a>c) printf("il maggiore e': %d\n", a); if(b<c) printf("il minore e': %d\n", b); else printf("il minore e': %d\n", c);

13 else printf("il maggiore e': %d\n", c); printf("il minore e': %d\n", b); else if(b>c) printf("il maggiore e': %d\n", b); if(a<c) printf("il minore e': %d\n", a); else printf("il minore e': %d\n", c); else printf("il maggiore e': %d\n", c); printf("il minore e': %d\n", a); 5 /* Esempio visualizzazione menu e controllo scelte utente */ char scelta; printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf("\n MENU DI PROVA\n"); printf("\n a) Per immettere dati"); printf("\n b) Per determinare il maggiore"); printf("\n c) Per determinare il minore"); printf("\n d) Per ordinare"); printf("\n e) Per visualizzare"); printf("\n\n Scelta: "); scelta = getchar(); switch(scelta) case 'a': printf("\n In esecuzione l'opzione a"); case 'b': printf("\n In esecuzione l'opzione b"); case 'c': printf("\n In esecuzione l'opzione c"); case 'd': printf("\n In esecuzione l'opzione d"); case 'e': printf("\n In esecuzione l'opzione e"); default: printf("\n Opzione inesistente");

14 9 int punteggio = 0; char risposta; char pausa; printf("\nil matematico Kummer e' vissuto nel '700 (s/n)? "); scanf("%c", &risposta); if(risposta=='n') punteggio = punteggio + 1; printf("\nl'ultimo teorema di Fermat e' stato dimostrato alla fine del '900 (s/n)? "); scanf("%c", &risposta); if(risposta=='s') punteggio = punteggio + 1; printf("\nla cardinalita' di tutti gli interi e maggiore di quella dei soli interi pari(s/n)? "); scanf("%c", &risposta); if(risposta=='n') punteggio = punteggio + 1; printf("\npunteggio: %d su 3", punteggio); printf("\npremi un tasto per continuare."); 10 int punteggio = 0; char risposta; char pausa; printf("\nil matematico Kummer e' vissuto nel '700 (s/n)? "); scanf("%c", &risposta); if(risposta=='n') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\nl'ultimo teorema di Fermat e' stato dimostrato alla fine del '900 (s/n)? "); scanf("%c", &risposta); if(risposta=='s') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\nla cardinalita' di tutti gli interi e maggiore di quella dei soli interi pari(s/n)? "); scanf("%c", &risposta); if(risposta=='n') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\npunteggio: %d su 3", punteggio); printf("\npremi un tasto per continuare.");

15 11 int punteggio = 0; char risposta; char pausa; printf("\nil matematico Kummer e' vissuto nel '700 (s/n)? "); scanf("%c", &risposta); if(risposta=='n') punteggio = punteggio + 1; printf("\npitagora e' vissuto nel III secolo a.c. (s/n)? "); scanf("%c", &risposta); if(risposta=='n') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\neuclide e' vissuto nel III secolo a.c. (s/n)? "); scanf("%c", &risposta); if(risposta=='s') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\npunteggio: %d su 3", punteggio); else punteggio = punteggio - 1; printf("\nl'ultimo teorema di Fermat e' stato dimostrato alla fine del '900 (s/n)? "); scanf("%c", &risposta); if(risposta=='s') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\nla cardinalita' di tutti gli interi e maggiore di quella dei soli interi pari? "); scanf("%c", &risposta); if(risposta=='n') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\npunteggio: %d su 3", punteggio); printf("\npremi un tasto per continuare."); 12 int punteggio = 0; char risposta; char pausa; printf("\nil matematico Kummer e' vissuto nel '700 (s/n)? "); scanf("%c", &risposta); if(risposta=='n')

16 punteggio = punteggio + 1; printf("\npitagora e' vissuto nel III secolo a.c. (s/n)? "); scanf("%c", &risposta); if(risposta=='n') punteggio = punteggio + 1; printf("\ngauss e' vissuto dopo Galileo (s/n)? "); scanf("%c", &risposta); if(risposta=='s') punteggio = punteggio + 1; else punteggio = punteggio - 1; else punteggio = punteggio - 1; printf("\neuclide e' vissuto nel III secolo a.c. (s/n)? "); scanf("%c", &risposta); if(risposta=='s') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\npunteggio: %d su 3", punteggio); else punteggio = punteggio - 1; printf("\nl'ultimo teorema di Fermat e' stato dimostrato alla fine del '900 (s/n)? "); scanf("%c", &risposta); if(risposta=='s') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\nla cardinalita' di tutti gli interi e maggiore di quella dei soli interi pari? "); scanf("%c", &risposta); if(risposta=='n') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\npunteggio: %d su 3", punteggio); printf("\npremi un tasto per continuare."); 13 int punteggio = 0; char risposta; char pausa; printf("\nil matematico Kummer e' vissuto nel '700 (s/n)? "); scanf("%c", &risposta); if(risposta=='n') punteggio = punteggio + 1; printf("\npitagora e' vissuto nel III secolo a.c. (s/n)? "); scanf("%c", &risposta);

17 if(risposta=='n') punteggio = punteggio + 1; printf("\ngauss e' vissuto dopo Galileo (s/n)? "); scanf("%c", &risposta); if(risposta=='s') punteggio = punteggio + 1; else punteggio = punteggio - 1; else punteggio = punteggio - 1; printf("\neuclide e' vissuto nel III secolo a.c. (s/n)? "); scanf("%c", &risposta); if(risposta=='s') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\npunteggio: %d su 3", punteggio); else punteggio = punteggio - 1; printf("\nl'ultimo teorema di Fermat e' stato dimostrato alla fine del '900 (s/n)? "); scanf("%c", &risposta); if(risposta=='s') punteggio = punteggio + 1; printf("\nriemann e' nato dopo Gauss (s/n)? "); scanf("%c", &risposta); if(risposta=='s') punteggio = punteggio + 1; else punteggio = punteggio - 1; else punteggio = punteggio - 1; printf("\nla cardinalita' di tutti gli interi e maggiore di quella dei soli interi pari? "); scanf("%c", &risposta); if(risposta=='n') punteggio = punteggio + 1; else punteggio = punteggio - 1; printf("\npunteggio: %d su 3", punteggio); printf("\npremi un tasto per continuare.");

18 Capitolo 8 1 /* Verifica il valore delle espressioni date */ int a, b, c, ris; a = 5; b = 35; c = 7; ris = a+b*c; printf("\n a) %d", ris); ris = a>b; printf("\n b) %d", ris); ris = (a+b) * (a<b); printf("\n c) %d", ris); ris = (a+b) && (a<b); printf("\n d) %d", ris); ris = (a+b) (a>b); printf("\n e) %d", ris); ris = ((a*c) b) (a>b); printf("\n f) %d", ris); ris = ((a*c)!= b) (a>b); printf("\n g) %d", ris); ris = (a>b) (a<c) (c==b); printf("\n h) %d\n", ris); /* O ALTERNATIVAMENTE ALL'INTERNO DELLE PRINTF */ printf("\n a) %d", a+b*c); printf("\n b) %d", a>b); printf("\n c) %d", (a+b) * (a<b)); printf("\n d) %d", (a+b) && (a<b)); printf("\n e) %d", (a+b) (a>b)); printf("\n f) %d", ((a*c) b) (a>b)); printf("\n g) %d", ((a*c)!= b) (a>b)); printf("\n h) %d\n", (a>b) (a<c) (c==b)); I risultati visualizzati dal programma saranno i seguenti: a) 250 b) 0 c) 40 d) 1 e) 1 f) 0 g) 0 h) 1 2 I risultati visualizzati dal programma saranno i seguenti: a) Vero (1) b) Falso (0) c) Vero (1) d) Vero (1) e) Falso (0) f) Vero (1) 3 I risultati visualizzati dal programma saranno: a) vero (1) b) falso (0) c) vero (1) d) vero (1) e) vero (1) f) falso (0)

19 4 d = (a*2+b)!= c? a*b*c: a+b+c; 5 printf("\n Il maggiore e': %d", (x=(a>b)?a:b)>c?x:c); dove x è una variabile int.

20 Capitolo 9 1 /* Determina il fattoriale dei numeri minori o uguali all'intero immesso dall'utente */ int n, fat, aux; printf("calcolo DEI FATTORIALI DEI NUMERI <= N\n\n"); printf("inser. n: "); scanf("%d", &n); fat = 1; printf("il fattoriale di: 0 ha valore: %d\n", fat); for(aux=1; aux<=n; aux++) fat = fat*aux; printf("il fattoriale di: %d ha valore: %d\n", aux, fat); 2 /* Determina il maggiore, il minore e la media dei valori immessi */ #include <limits.h> int i, n, numero, max, min, media; printf("maggiore MINORE E MEDIA\n"); min = INT_MAX; max = INT_MIN; media = 0; i = 1; do printf("\nlunghezza della sequenza: "); scanf("%d", &n); while(n<1); for(i=1; i<=n; i++) printf("valore int.: \t"); scanf("%d", &numero); if(numero>max) max = numero; else if(numero<min) min = numero; media = media+numero; printf("maggiore: %d\n", max); printf("minore: %d\n", min); printf("media: %d\n", media/n);

21 3 /* Visualizza un rettangolo di cornice * e parte interna Q; le dimensioni del rettangolo sono decise dall'utente */ int i, j, linee, colonne; do printf("\nnumero di linee: "); scanf("%d", &linee); while(linee<1); do printf("\nnumero di colonne: "); scanf("%d", &colonne); while(colonne<1); for(i=1; i<=linee; i++) for(j=1; j<=colonne; j++) if(i==1 i==linee j==1 j==colonne) printf("*"); if(j==colonne) printf("\n"); else printf("q"); 4 /* Visualizza tanti rettangoli quanti ne desidera l'utente con caratteri e dimensioni scelti a tempo di esecuzione */ int i, j, y, linee, colonne, volte; char cornice, interno; do printf("\nnumero di linee: "); scanf("%d", &linee); while(linee<1); do printf("\nnumero di colonne: "); scanf("%d", &colonne); while(colonne<1); printf("\ncarattere della cornice: "); scanf("%1s", &cornice); printf("\ncarattere dell'interno: "); scanf("%1s", &interno); do printf("\nnumero di visualizzazioni: "); scanf("%d", &volte); while(colonne<1); for(y=1; y<=volte; y++)

22 for(i=1; i<=linee; i++) for(j=1; j<=colonne; j++) if(i==1 i==linee j==1 j==colonne ) printf("%c", cornice); if(j==colonne) printf("\n"); else printf("%c", interno); 12 int i; for(i=1; i<=99; i=i+2) printf("\n%d", i); 13 int i; for(i=-2; i>=-50; i=i-2) printf("\n%d", i); 14 int i; for(i=-150; i<=-1; i++) if(i%4!=0) printf("\n%d", i); 16 int i, j; int primo; for(i=1; i<=100; i++) primo=1; for(j=2; j<i; j++) if(i%j==0) primo=0; if(primo==1) printf("\nnumero primo: %d", i); 17 int i, j; j=1; for(i=2; j<1000; i++) printf("\n%d", j); j=j+i; 18 int i, j; j=1; for(i=2; j<10000; i++) printf("\n%d", j); j=i*i*i; Oppure con una sola variabile:

23 int i; for(i=1; i*i*i<10000; i++) printf("\n%d", i*i*i);

24 Capitolo 10 1 Il ciclo che effettua la somma deve essere realizzato in modo che l elemento del secondo array sia simmetrico rispetto al primo. for(i=0; i<n; i++) c[i] = a[i] + b[n i 1]; /* Somma incrociata di due vettori */ int n = 4; int a[n], b[n], c[n]; int i; char pausa; printf("\nvettore a\n"); for(i=0; i<n; i++) printf("elemento %d del primo vettore: ", i+1); scanf("%d", &a[i]); printf("\nvettore b\n"); for(i=0; i<n; i++) printf("elemento %d del secondo vettore: ", i+1); scanf("%d", &b[i]); /* Somma incrociata a+b */ for(i=0; i<n; i++) c[i] = a[i] + b[n-i-1]; printf("\nsomma incrociata a+b\n"); for(i=0; i<n; i++) printf("elemento %d della somma incrociata: %d\n", i+1, c[i]); 2 Se l elemento in esame risulta il maggiore if(voti[]>max) è inutile confrontarlo con il minore, altrimenti - else - lo si confronta. (Scegliamo di effettuare ii confronti, gli assegnamenti e i calcoli necessari a determinare il maggiore, il minore e la media all interno di un solo ciclo, per cui la scansione dell array avviene una sola volta.) max = voti[0]; min = voti[0]; media = voti[0]; for(i = 0;i <= 5; i++) if(voti[i]>max) max = voti[i]; else if(voti[i]<min) min = voti[i]; media = media+voti[i];

25 3 Diamo la soluzione per la prima parte dell esercizio lasciando al lettore l onere di completare l esercizio. /* Carica un vettore alternativamente di zeri e uni, visualizza il vettore */ #define MAX_ELE 1000 /* massimo numero di elementi */ int prova[max_ele]; int i, n; char invio; do printf("\nnumero elementi: "); scanf("%d", &n); while(n<1 n>max_ele); /* Si carica il vettori di zeri e uni */ prova[0] = 0; for(i=1; i<n; i++) if(i%2 == 1) prova[i] = 1; else prova[i] = 0; for(i=0; i<n; i++) printf("%d \n", prova[i]); printf("\nqualsiasi tasto per continuare..."); scanf("%c", &invio); scanf("%c", &invio); 4 /* Cerca l elemento del vettore piu prossimo a k */ #include <math.h> #define MAX_ELE 1000 /* massimo numero di elementi */ int v1[max_ele]; int i, n, k, prossimo, indice; char invio; do printf("\nnumero elementi: "); scanf("%d", &n); while(n<1 n>max_ele); printf("immissione ELEMENTI\n"); for(i=0; i<n; i++) printf("valore intero %d: ", i+1); scanf("%d", &v1[i]);

26 printf("immissione di k\n"); printf("valore intero k: "); scanf("%d", &k); /* Ricerca elemento piu' prossimo a k*/ prossimo = fabs(k-v1[0]); indice = 0; for(i=1; i<n; i++) if((fabs(k-v1[i])) < prossimo) prossimo = fabs(k-v1[i]); indice = i; printf("\nvalore piu' prossimo a k nel vettore: %d\n", v1[indice]); for(i=0; i<n; i++) printf("%d \n", v1[i]); printf("\nqualsiasi tasto per continuare..."); scanf("%c", &invio); scanf("%c", &invio); 12 Devono essere definite le dimensioni della matrice. #define N 10 #define P 10 #define M 10 int mat1[n][p]; int mat2[p][m]; int pmat[n][m]; Si devono richiedere all utente le reali dimensioni e si deve controllare che il loro valore non superi le dimensioni delle matrici. I valori da richiedere sono soltanto tre, in quanto le colonne della prima matrice devono essere in numero uguale alle righe della seconda. /* Richiesta delle dimensioni */ do printf("numero di linee I matrice: "); scanf("%d", &n); while((n>=n) (n<1)); do printf("numero colonne I matrice / righe II matrice: "); scanf("%d", &p); while((p>=p) (p<1)); do printf("numero di colonne II matrice: "); scanf("%d", &m); while((m>=m) (m<1)); Anteriormente devono essere state dichiarate le variabili n, m e p. int n, m, p;

27 Sostituire N, M e P con n, m e p nel resto del programma. 14 /* Calcolo media voti per studente e per prova. Nell'esemplificazione utilizziamo 3 studenti e 4 prove */ #define N 4 #define M 5 float voti[n][m]; int i, j, n, m; char pausa; n=n; m=m; printf("\n \n CARICAMENTO DEI VOTI \n \n"); for(i=0; i<n-1; i++) for(j=0; j<m-1; j++) printf("ins. studente %d prova %d: ", i+1, j+1); scanf("%f", &voti[i][j]); ; /* Calcolo medie per studente */ for(i=0; i<n-1; i++) voti[i][m-1] = 0; for(j = 0; j < m-1; j++) voti[i][m-1] = voti[i][m-1] + voti[i][j]; voti[i][m-1] = voti[i][m-1] / (m-1); /* Calcolo medie per prova */ for(j=0; j<m; j++) voti[n-1][j] = 0; for(i=0; i<n-1; i++) voti[n-1][j] = voti[n-1][j] + voti[i][j]; voti[n-1][j] = voti[n-1][j]/(n-1); printf("\n \n VISUALIZZAZIONE DELLA MATRICE \n "); for(i=0; i<n; i++) printf("\n"); for(j=0; j<m; j++) printf("%8.3f", voti[i][j]); Esempio di esecuzione: Ins. studente 1 prova 1: 4 Ins. studente 1 prova 2: 5 Ins. studente 1 prova 3: 4 Ins. studente 1 prova 4: 7 Ins. studente 2 prova 1: 8 Ins. studente 2 prova 2: 10 Ins. studente 2 prova 3: 8 Ins. studente 2 prova 4: 10 Ins. studente 3 prova 1: 6 Ins. studente 3 prova 2: 7 Ins. studente 3 prova 3: 8

28 Ins. studente 3 prova 4: 6 VISUALIZZAZIONE DELLA MATRICE

29 Capitolo 11 1 /* Funzione per il calcolo di una qualsiasi potenza con esponente >= zero */ double pot(double base, int esp) double po; po = 1; if(esp == 0) return(1); else while(esp ) po *= base; return(po); 2 void messaggio (int, int); char messaggio[] = "Ciao, baby"; int riga = 10; int colonna = 20; messaggio (riga, colonna); /* Funzione che visualizza un messaggio a un generica coordinata x,y dello schermo */ void messaggio(int r, int c) while(c ) printf("\n"); while(r ) putchar(' '); printf("%s\n\n", messaggio); 3 char buf[128]; void minmaiusc (void); printf("\ninserisci stringa: "); scanf("%s", buf); minmaiusc(); printf("%s\n", buf); /* Funzione che converte le lettere minuscole in maiuscole */ void minmaiusc(void) int i; for (i = 0; buf[i]!= '\0'; i++)

30 if (buf[i] >= 'a' && buf[i] <= 'z') buf[i] = buf[i] 'a' + 'A'; 4 int numeri = 0; int alfa = 0; char buf[80]; int i; char pausa; void numalfa(void); printf("\ninserisci stringa: "); scanf("%s", buf); numalfa(); printf("ci sono %2d caratteri nmerici\n", numeri); printf("ci sono %2d caratteri alfabetici\n", alfa); /* Funzione che conta il numero di caratteri e cifre */ void numalfa(void) for (i = 0; buf[i]!= '\0'; i++) switch(buf[i]) case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': numeri++; default: alfa++; 5 Esercizio: modificare la funzione realizzata nell esercizio 4 in modo che calcoli il numero di zeri, cifre pari e cifre dispari e il numero di caratteri che non sono cifre numeriche. int zeri = 0, pari = 0, dispari = 0; int alfa = 0; char buf[80]; int i; char pausa; void numalfa(void);

31 printf("\ninserisci stringa: "); scanf("%s", buf); numalfa(); printf("ci sono %2d zeri\n", zeri); printf("ci sono %2d cifre pari\n", pari); printf("ci sono %2d cifre dispari\n", dispari); printf("ci sono %2d caratteri alfabetici\n", alfa); /* Funzione che conta il numero di caratteri e cifre */ void numalfa(void) for (i = 0; buf[i]!= '\0'; i++) switch(buf[i]) case '0': zeri++; case '2': case '4': case '6': case '8': pari++; case '1': case '3': case '5': case '7': case '9': dispari++; default: alfa++; 14 void interipositivi(int); int i; i=50; interipositivi(i); /* Funzione che visualizza i numeri interi positivi da 1 a n */ void interipositivi(int n) int i; for(i=1; i<=n; i=i+2) printf("\n%d", i); 16 void interipositivi2(int, int);

32 int i, j; i=2; j=50; interipositivi2(i,j); /* Funzione che visualizza i numeri interi positivi da n a m con n minore di m */ void interipositivi2(int n, int m) int i; for(i=n; i<=m; i=i+2) printf("\n%d", i);

33 Capitolo 12 1 Qualsiasi soluzione si adotti tra quelle proposte nel testo, l operatore relazionale dell if che controlla lo scambio di valori tra gli elementi deve essere cambiato da > a <. if(vet[i]<vet[i+1]) Non ci sono altre modifiche da effettuare. 2 /* Ricerca di un valore in una matrice */ #define N 10 #define M 10 char alfa[n][m]; int n, m, i, j, k; char ric; /* Richiesta delle dimensioni */ do printf("numero di linee: "); scanf("%d", &n); while((n>=n) (n<1)); do printf("numero di colonne: "); scanf("%d", &m); while((m>=m) (m<1)); printf("\n \n CARICAMENTO DELLA MATRICE \n \n"); for(i=0; i<n; i++) for(j=0; j<m; j++) printf("ins.carattere nella linea %d colonna %d val:", i, j); scanf("%1s", &alfa[i][j]); ; /* Richiesta del carattere da ricercare */ printf("\n \n Carattere da ricercare: "); scanf("%1s", &ric); printf("\n \n VISUALIZZAZIONE DELLA MATRICE \n "); for(i=0; i<n; i++) printf("\n"); for(j = 0; j < m; j++) printf("%3c", alfa[i][j]); printf("\n\n"); /* Ricerca del carattere all'interno della matrice */ k = 0; for(i=0; i<n; i++) for(j=0; j<m; j++) if(alfa[i][j]==ric) printf("%c in linea %d colonna %d\n", ric, i+1, j+1); k = 1; ; if(k==0) printf("%c non presente nella matrice", ric);

34 Esempio di esecuzione: Carattere da ricercare: a VISUALIZZAZIONE DELLA MATRICE t b a m d g a k k d a m v f g a in linea 1 colonna 3 a in linea 3 colonna 1 a in linea 4 colonna 2

35 Caso di Studio I 1 Si deve inserire in gestionesequenza, dopo le dichiarazioni delle variabili e prima dell inizio del ciclo di gestione delle scelte dell utente la chiamata della funzione immissione. n = immissione(); 2 void gestionemenu(void); int gestionemenu(); void gestionemenu() int n; int scelta = 'z'; char invio; int ele, posizione; while(scelta!= 'x') printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf("\t\t\t BORRI & BIANCHI SpA"); printf("\n\t\t Sistema per la gestione integrata"); printf("\n\t\t\t OPZIONI DISPONIBILI"); printf("\n\n\n\t\t\t a. Magazzino"); printf("\n\t\t\t b. Clienti"); printf("\n\t\t\t c. Fornitori"); printf("\n\t\t\t x. Fine"); printf("\n\n\n\t\t\t\t Scegliere una opzione: "); scanf("%c", &scelta); scanf("%c", &invio); printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); switch(scelta) case 'a': printf("hai scelto a"); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); case 'b': printf("hai scelto b"); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); case 'c': printf("hai scelto c"); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); printf("hai scelto x"); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio);

36 3 Vanno effettuate due modifiche nelle funzioni di ordinamento e di ricerca binaria. void ordinamento(int n) int i, p, k, n1; int aux; p = n; n1 = p; do k = 0; for(i = 0; i < n1-1; i++) if(vet[i] < vet[i+1]) aux = vet[i]; vet[i] = vet[i+1]; vet[i+1] = aux; k = 1; p = i + 1; n1 = p; while (k == 1 && n1>1); /* ricerca binaria */ int ricbin(int n, int ele) int i, alto, basso, pos; alto = 0; basso = n - 1; pos = -1; do i = (alto+basso)/2; if(vet[i] == ele) pos = i; else if(vet[i] > ele) alto = i + 1; else basso = i - 1; while(alto <= basso && pos == -1); return(pos); 4 e 5 La funzione di ricerca sequenziale non restituisce la posizione dell elemento e non ha la necessità di prendere in ingresso il valore da ricercare. void ricerca(int); La chiamata alla funzione di ricerca sequenziale diventa: case 3: ricerca(n); La funzione di ricerca sequenziale diventa: /* Ricerca sequenziale */ void ricerca (int n) int i, ele; char invio; i = 0; printf("elemento da ricercare: "); scanf("%d", &ele); scanf("%c", &invio);

37 while (ele!= vet[i] && i < n-1) ++i; if(ele == vet[i]) printf("\nelem. %d presente in posizione %d\n", ele, i); else printf("\nelemento non presente!\n"); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); Modifiche analoghe devono essere apportate per la ricerca binaria. 6 #define MAX_ELE 1000 /* massimo numero di elementi */ int vet[max_ele]; /* array che ospita la sequenza */ void gestionesequenza(void); int immissione(void); void ordinamento(void); int ricerca(void); int ricbin(void); void visualizzazione(void); int n, ele; int gestionesequenza(); void gestionesequenza() int scelta = -1; char invio; int posizione; while(scelta!= 0) printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf("\t\t\t GESTIONE SEQUENZA"); printf("\n\n\n\t\t\t 1. Immissione"); printf("\n\n\t\t\t 2. Ordinamento"); printf("\n\n\t\t\t 3. Ricerca completa"); printf("\n\n\t\t\t 4. Ricerca binaria"); printf("\n\n\t\t\t 5. Visualizzazione"); printf("\n\n\t\t\t 0. Fine"); printf("\n\n\n\t\t\t\t Scegliere una opzione: "); scanf("%d", &scelta); scanf("%c", &invio); printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); switch(scelta) case 1: n = immissione(); case 2: ordinamento(); case 3: printf("elemento da ricercare: "); scanf("%d", &ele);

38 scanf("%c", &invio); posizione = ricerca(); if(ele == vet[posizione]) printf("\nelem. %d presente in posizione %d\n", ele, posizione); else printf("\nelemento non presente!\n"); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); case 4: printf("elemento da ricercare: "); scanf("%d", &ele); scanf("%c", &invio); posizione = ricbin(); if(posizione!= -1) printf("\nelem. %d presente in posizione %d\n", ele, posizione); else printf("\nelemento non presente!\n"); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); case 5: visualizzazione(); int immissione() int i, n; do printf("\nnumero elementi: "); scanf("%d", &n); while (n < 1 n > MAX_ELE); for(i = 0; i < n; i++) printf("\nimmettere un intero n.%d: ",i); scanf("%d", &vet[i]); return(n); void ordinamento() int i, p, k, n1; int aux; p = n; n1 = p; do k = 0; for(i = 0; i < n1-1; i++) if(vet[i] > vet[i+1]) aux = vet[i]; vet[i] = vet[i+1]; vet[i+1] = aux; k = 1; p = i + 1;

39 n1 = p; while (k == 1 && n1>1); /* Ricerca sequenziale */ int ricerca () int i; i = 0; while (ele!= vet[i] && i < n-1) ++i; return(i); /* ricerca binaria */ int ricbin() int i, alto, basso, pos; alto = 0; basso = n - 1; pos = -1; do i = (alto+basso)/2; if(vet[i] == ele) pos = i; else if(vet[i] < ele) alto = i + 1; else basso = i - 1; while(alto <= basso && pos == -1); return(pos); void visualizzazione() int i; char invio; for(i = 0; i < n; i++) printf("\n%d", vet[i]); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); 8 int immissione() int i, n; do printf("\nnumero elementi (si accettano solo numeri pari): "); scanf("%d", &n); while (n < 1 (n%2)!=0 n > MAX_ELE); for(i = 0; i < n; i++) printf("\nimmettere un intero n: %d: ",i); scanf("%d", &vet[i]);

40 return(n); 9 int immissione() int i, n; do printf("\nnumero elementi: "); scanf("%d", &n); while (n < 1 n > MAX_ELE); for(i = 0; i < n; i++) do printf("\nimmettere un intero n (nell'intervallo ): %d: ",i); scanf("%d", &vet[i]); while(vet[i]<-20 vet[i]>100); return(n);

41 Capitolo 13 3 /* Concatenazione di dei primi n caratteri di una stringa su di un'altra con strcat */ #include <string.h> char frase[160] = "Analisi, requisiti"; char dimmi[80]; int i; for(i=0; ((dimmi[i]=getchar())!='\n') && (i<80); i++) ; dimmi[i] = '\0'; strncat(frase, dimmi, 5); printf("%s \n", frase); 4 /* Confronto dei primi n caratteri di due stringhe con strncmp */ #include <string.h> char prima[160] = "Analisi, requisiti"; char seconda[80]; int i, x; for(i=0; ((seconda[i]=getchar())!='\n') && (i<80); i++) ; seconda[i]='\0'; if((x=(strncmp(prima, seconda, 5)))==0) printf("sono uguali\n"); else if(x>0) printf("la prima e' maggiore della seconda\n"); else printf("la seconda e' maggiore della prima\n");

42 Capitolo 14 1 /* Scansione e visualizzazione di un array di interi */ int a[5] = 1, 2, 3, 4, 5 ; int i, *p; p = a; printf("gli elementi del vettore sono:\n\n"); for (i = 0; i <= 4; i++) printf("a[%d] = %d\n", i, *p++); 2 /* Scansione e visualizzazione di un array di stringhe */ char *vet[] = "Messaggio #1\n", "Messaggio #2\n", "Messaggio #3\n", "Messaggio #4\n", "Messaggio #5\n", NULL ; char **p = vet; while(*p!= NULL) printf("%s", *p++); 3 /* Funzione che ritorna il puntatore alla prima occorrenza della stringa t in s */ char *strinstr(char *s, char *t) char *v; while(*s!= '\0') if(*s == *t) for(v = t; *s == *v;) if(*++v == '\0') return(s (v t)+1); if(*s++ == '\0') return(null); else s++; return(null); 4

43 /* versione 1 che usa gli array*/ strcop( char s[], char t[]) int i=0; while ((s[i] = t[i])!= '\0') i++; /*versione 1.1 che usa i puntatori*/ strcop(char *s, char *t) while ((*s = *t)!= '\0') s++; t++; /* versione 2 */ strcop(char *s, char *t) while ((*s++ = *t++)!= '\0') ; /* versione 3 */ strcop(char *s, char *t) while (*s++ = *t++); La migliore è la versione 3, anche se abbastanza criptica al primo impatto. 5 #include <malloc.h> char *s; int n; printf("inserire dimensione del buffer : "); scanf("%d", &n); s = (char*) malloc(n+1);... 6 /* Esempio di uso di memcpy */ #include <string.h> int main () char cifre[]=" "; char decimali[10]; char pausa; memcpy (decimali, cifre, 4); decimali[4]='\0'; printf ("decimali: %s\n", decimali); scanf("&c", pausa); Se non si inserisce nella giusta posizione il carattere di fine stringa:

44 decimali[4]='\0'; l istruzione printf ("decimali: %s\n", decimali); visualizza ulteriori caratteri dopo Vediamo una soluzione alternativa. /* II Esempio di uso di memcpy */ #include <string.h> int main () char cifre[]=" "; char decimali[10]; char pausa; int i; memcpy (decimali, cifre, 4); printf ("decimali: "); for(i=0;i<4;i++) printf ("%c", decimali[i]); printf ("\n"); scanf("&c", pausa); 7 /* Esempio di uso di memmove */ #include <string.h> int main () char y[100]= " "; char pausa; printf ("Prima: %s\n", y); memmove(y+4, y, 4); printf ("Dopo: %s\n", y); scanf("&c", pausa); 8 /* Esempio di uso di memcmp */ #include <string.h> int main () char uno[]= "santo"; char due[]= "santi"; int r; char pausa; r=memcmp(uno, due, strlen(uno)); if(r>0) printf ("%s maggiore di %s", uno, due); else printf ("%s maggiore di %s", due, uno); scanf("&c", pausa); 9 /* Esempio di uso di memchr */ #include <string.h>

45 int main () char numero[]= "1 2 3"; char cifra = '2'; char pausa; char * p; p = (char*) memchr(numero, cifra, strlen(numero)); if(p!= NULL) printf ("%c presente in %s in posizione %d", cifra, numero, p-numero+1); else printf ("%c non presente in %s", cifra, numero); scanf("&c", pausa); L istruzione: p = (char*) memchr(numero, cifra, strlen(numero)); effttua un cast, cioè una confersione del valore restituito da memchr in un puntatore a char come si vedrà nei capitoli successivi. 10 /* Esempio di uso di memset */ #include <string.h> int main () char cifre[]=" "; char cifra = '9'; char pausa; char * p; printf ("Prima: %s\n", cifre); memset(cifre, cifra, 2); printf ("Dopo: %s", cifre); scanf("&c", pausa);

46 Caso di studio II 1 /* Fusione di due sequenze ordinate */ #define MAX_ELE 1000 int immissione(int *); void ordinamento(int, int *); void visualizzazione(int, int *); void merge(int, int *, int, int *, int *); int vet1[max_ele]; /* prima sequenza */ int vet2[max_ele]; /* seconda sequenza */ int vet3[max_ele*2]; /* merge */ int n; /* lunghezza prima sequenza */ int m; /* lunghezza seconda sequenza */ n = immissione(vet1); m = immissione(vet2); ordinamento(n, vet1); ordinamento(m, vet2); merge(n, vet1, m, vet2, vet3); visualizzazione(n, vet1); visualizzazione(m, vet2); visualizzazione(n+m, vet3); int immissione(int *vet) int i, n; do printf("\nnumero elementi: "); scanf("%d", &n); while (n < 1 n > MAX_ELE); for(i = 0; i < n; i++) printf("\nimmettere un intero n.%d: ",i); scanf("%d", &vet[i]); return(n); void ordinamento(int n, int *vet) int i, p, k, n1; int aux; p = n; n1 = p; do k = 0; for(i = 0; i < n1-1; i++) if(vet[i] > vet[i+1]) aux = vet[i]; vet[i] = vet[i+1]; vet[i+1] = aux;

47 k = 1; p = i + 1; n1 = p; while (k == 1 && n1>1); void visualizzazione( int n, int *vet) int i; char invio; for(i = 0; i < n; i++) printf("\n%d", vet[i]); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); /* Fusione delle due sequenze (merge) */ void merge( int n, int *vet1, int m, int *vet2, int *vet3) int i = 0, j = 0, k = 0; do if(vet1[i]<=vet2[j]) vet3[k++] = vet1[i++]; else vet3[k++] = vet2[j++]; while(i<n && j<m); if(i<n) for(; i<n; vet3[k++] = vet1[i++]) ; else for(; j<m; vet3[k++] = vet2[j++]) ; 2 /* Fusione di piu sequenze ordinate */ #define MAX_ELE 1000 int immissione(int *); void ordinamento(int, int *); void visualizzazione(int, int *); void merge(int, int *, int, int *, int *); int vet1[max_ele]; /* prima sequenza */ int vet2[max_ele]; /* seconda sequenza */ int vet3[max_ele*2]; /* altri merge */ int n; /* lunghezza prima sequenza */ int m; /* lunghezza seconda sequenza */ int i, altrovettore; n = immissione(vet1); m = immissione(vet2);

48 ordinamento(n, vet1); ordinamento(m, vet2); merge(n, vet1, m, vet2, vet3); visualizzazione(n, vet1); visualizzazione(m, vet2); visualizzazione(n+m, vet3); do m = n+m; n = immissione(vet1); ordinamento(n, vet1); for(i = 0; i < m; i++) vet2[i] = vet3[i]; merge(n, vet1, m, vet2, vet3); visualizzazione(n, vet1); visualizzazione(m, vet2); visualizzazione(n+m, vet3); printf("\nse vuoi immettere un altro vettore scrivi 1 altrimeni 0: ", altrovettore); scanf("%d", &altrovettore); while (altrovettore > 0); int immissione(int *vet) int i, n; do printf("\nnumero elementi: "); scanf("%d", &n); while (n < 1 n > MAX_ELE); for(i = 0; i < n; i++) printf("\nimmettere un intero n.%d: ",i); scanf("%d", &vet[i]); return(n); void ordinamento(int n, int *vet) int i, p, k, n1; int aux; p = n; n1 = p; do k = 0; for(i = 0; i < n1-1; i++) if(vet[i] > vet[i+1]) aux = vet[i]; vet[i] = vet[i+1]; vet[i+1] = aux; k = 1; p = i + 1; n1 = p; while (k == 1 && n1>1); void visualizzazione( int n, int *vet)

49 int i; char invio; for(i = 0; i < n; i++) printf("\n%d", vet[i]); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); /* Fusione delle due sequenze (merge) */ void merge( int n, int *vet1, int m, int *vet2, int *vet3) int i = 0, j = 0, k = 0; do if(vet1[i]<=vet2[j]) vet3[k++] = vet1[i++]; else vet3[k++] = vet2[j++]; while(i<n && j<m); if(i<n) for(; i<n; vet3[k++] = vet1[i++]) ; else for(; j<m; vet3[k++] = vet2[j++]) ; 3 /* Modifica del programma di gestione seguenza del caso di Studio II, per impedire la ricerca binaria nel caso che la sequenza non sia stata ancora ordinata. */ #define MAX_ELE 1000 /* massimo numero di elementi */ void gestionesequenza(void); int immissione(int *); void ordinamento(int, int *); int ricerca(int, int, int *); int ricbin(int, int, int *); void visualizzazione(int, int *); int ordinato = 0; gestionesequenza(); void gestionesequenza() int sequenza[max_ele]; /* array che ospita la sequenza */ int n; int scelta = -1; char invio; int ele, posizione;

50 while(scelta!= 0) printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf("\t\t\t GESTIONE SEQUENZA"); printf("\n\n\n\t\t\t 1. Immissione"); printf("\n\n\t\t\t 2. Ordinamento"); printf("\n\n\t\t\t 3. Ricerca completa"); printf("\n\n\t\t\t 4. Ricerca binaria"); printf("\n\n\t\t\t 5. Visualizzazione"); printf("\n\n\t\t\t 0. fine"); printf("\n\n\n\t\t\t\t Scegliere una opzione: "); scanf("%d", &scelta); scanf("%c", &invio); printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); switch(scelta) case 1: n = immissione(sequenza); case 2: ordinamento(n, sequenza); case 3: printf("elemento da ricercare: "); scanf("%d", &ele); scanf("%c", &invio); posizione = ricerca(n, ele, sequenza); if(ele == sequenza[posizione]) printf("\nelem. %d presente in posizione %d\n", ele, posizione); else printf("\nelemento non presente!\n"); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); case 4: if (ordinato == 0) printf("\ricerca binaria non applicabile! \n"); printf("\nl arrai deve essere ordinato. \n"); else printf("elemento da ricercare: "); scanf("%d", &ele); scanf("%c", &invio); posizione = ricbin(n, ele, sequenza); if(posizione!= -1) printf("\nelem. %d presente in posizione %d\n", ele, posizione); else printf("\nelemento non presente!\n"); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); case 5: visualizzazione(n, sequenza); int immissione(int *vet)

51 int i, n; ordinato = 0; do printf("\nnumero elementi: "); scanf("%d", &n); while (n < 1 n > MAX_ELE); for(i = 0; i < n; i++) printf("\nimmettere un intero n.%d: ",i); scanf("%d", &vet[i]); return(n); void ordinamento(int n, int *vet) int i, p, k, n1; int aux; p = n; n1 = p; do k = 0; for(i = 0; i < n1-1; i++) if(vet[i] > vet[i+1]) aux = vet[i]; vet[i] = vet[i+1]; vet[i+1] = aux; k = 1; p = i + 1; n1 = p; while (k == 1 && n1>1); ordinato = 1; /* Ricerca sequenziale */ int ricerca(int n, int ele, int *vet) int i; i = 0; while (ele!= vet[i] && i < n-1) ++i; return(i); /* ricerca binaria */ int ricbin(int n, int ele, int *vet) int i, alto, basso, pos; alto = 0; basso = n - 1; pos = -1; do i = (alto+basso)/2; if(vet[i] == ele) pos = i; else if(vet[i] < ele) alto = i + 1;

52 else basso = i - 1; while(alto <= basso && pos == -1); return(pos); void visualizzazione( int n, int *vet) int i; char invio; for(i = 0; i < n; i++) printf("\n%d", vet[i]); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); 4 La soluzione che diamo esegue quanto richiesto dal problema: creazione e uso delle funzioni di immissione di matrici, calcolo della matrice prodotto e visualizzazione delle matrici. In questo modo si osserva il riuso delle funzioni su matrici diverse e il passaggio del parametro array bidimensionale. La soluzione non è pero completa in quanto non presenta il menu per porter ripetere l immissione delle matrici. La gestione del menu viene presentata in numerosissimi esercizi e soluzioni del libro e in questo caso la lasciamo al lettore. /* Calcolo del prodotto di due matrici con l'uso di funzioni */ #define MAX_ELE 10 #define N MAX_ELE #define P MAX_ELE #define M MAX_ELE void immissionematrice(int, int, int [MAX_ELE][MAX_ELE]); void prodottomatrici(int, int, int, int [MAX_ELE][MAX_ELE], int [MAX_ELE][MAX_ELE], int [MAX_ELE][MAX_ELE]); void visualizzazionematrice(int, int, int [MAX_ELE][MAX_ELE]); int mat1[n][p]; /* prima matrice */ int mat2[p][m]; /* seconda matrice */ int pmat[n][m]; /* matrice prodotto */ int n, m, p; char invio; do printf("\nnumero di righe prima matrice: "); scanf("%d", &n); while (n < 1 n > MAX_ELE); do

53 printf("\nnumero di colonne prima matrice / righe della seconda: "); scanf("%d", &p); while (p < 1 p > MAX_ELE); do printf("\nnumero di colonne della seconda matrice: "); scanf("%d", &m); while (m < 1 m > MAX_ELE); immissionematrice(n, p, mat1); immissionematrice(p, m, mat2); prodottomatrici(n, m, p, mat1, mat2, pmat); visualizzazionematrice(n, p, mat1); visualizzazionematrice(p, m, mat2); visualizzazionematrice(n, m, pmat); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); scanf("%c", &invio); void immissionematrice(int righe, int colonne, int mat[max_ele][max_ele]) int i, j; printf("\n \n CARICAMENTO MATRICE \n \n"); for(i=0; i<righe; i++) for(j=0; j<colonne; j++) printf("inserisci linea %d colonna %d val:", i, j); scanf("%d", &mat[i][j]); ; void prodottomatrici(int n, int m, int p, int mat1[max_ele][max_ele], int mat2[max_ele][max_ele], int pmat[max_ele][max_ele]) int i = 0, j = 0, k = 0; for(i=0; i<n; i++) for(j=0; j<m; j++) pmat[i][j] = 0; for(k=0; k<p; k++) pmat[i][j] = pmat[i][j] + mat1[i][k] * mat2[k][j]; ; void visualizzazionematrice(int righe, int colonne, int mat[max_ele][max_ele]) int i, j; printf("\n \n VISUALIZZA MATRICE \n "); for(i=0; i<righe; i++) printf("\n"); for(j=0; j<colonne; j++) printf("%5d", mat[i][j]); 5

54 Come per il precedente esercizio la soluzione che riportiamo non presenta il menu per porter ripetere l immissione della matrice e la ricerca di un elemento che lasciamo al lettore. /* Ricerca di un elemento in una matrice bidimensionale con l'uso di funzioni */ #define MAX_ELE 10 #define N MAX_ELE #define M MAX_ELE void immissionematrice(int, int, int [MAX_ELE][MAX_ELE]); void ricercaelementonellamatrice(int, int, int [MAX_ELE][MAX_ELE]); void visualizzazionematrice(int, int, int [MAX_ELE][MAX_ELE]); int mat1[n][m]; /* prima matrice */ int n, m; char invio; do printf("\nnumero di righe: "); scanf("%d", &n); while (n < 1 n > MAX_ELE); do printf("\nnumero di colonne: "); scanf("%d", &m); while (m < 1 m > MAX_ELE); immissionematrice(n, m, mat1); ricercaelementonellamatrice(n, m, mat1); visualizzazionematrice(n, m, mat1); printf("\n\n Premere Invio per continuare..."); scanf("%c", &invio); scanf("%c", &invio); void immissionematrice(int righe, int colonne, int mat[max_ele][max_ele]) int i, j; printf("\n \n CARICAMENTO MATRICE \n \n"); for(i=0; i<righe; i++) for(j=0; j<colonne; j++) printf("inserisci linea %d colonna %d val:", i, j); scanf("%d", &mat[i][j]); ; void ricercaelementonellamatrice(int n, int m, int mat[max_ele][max_ele]) int i = 0, j = 0, ele, trovato; printf("\nelemento da ricercare: ");

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore. 1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno

Dettagli

Esercizi di programmazione in C

Esercizi di programmazione in C Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal

Dettagli

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

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

Dettagli

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa Ricerche, ordinamenti e fusioni 5.1 Introduzione Questo capitolo ci permette di fare pratica di programmazione utilizzando gli strumenti del linguaggio introdotti finora. A una prima lettura possono essere

Dettagli

Corso di Laurea in Matematica

Corso di Laurea in Matematica Corso di Laurea in Matematica Laboratorio di Informatica (a.a. 2002-03) Esercizi 1 Docente: Monica Nesi 1. Scrivere un programma in C che, dati in ingresso due numeri naturali, calcola il loro prodotto

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

void funzioneprova() { int x=2; cout<<dentro la funzione x=<<x<<endl; } FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo

Dettagli

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

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

Dettagli

Funzioni in C. Violetta Lonati

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

Dettagli

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

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

Dettagli

Problem solving elementare su dati vettoriali

Problem 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

Dettagli

Breve riepilogo della puntata precedente:

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

Dettagli

Funzioni. Il modello console. Interfaccia in modalità console

Funzioni. Il modello console. Interfaccia in modalità console Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi

Dettagli

Laboratorio di Fondamenti di Informatica anno accademico 2015-2016. Esercizi proposti il 09-12-2015

Laboratorio di Fondamenti di Informatica anno accademico 2015-2016. Esercizi proposti il 09-12-2015 Laboratorio di Fondamenti di Informatica anno accademico 2015-2016 Esercizi proposti il 09-12-2015 ESERCIZI GUIDATI Gli esercizi saranno svolti in aula dal docente di laboratorio per illustrare alcuni

Dettagli

Vettori Algoritmi elementari di ordinamento

Vettori Algoritmi elementari di ordinamento Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Vettori Algoritmi elementari di ordinamento Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale

Dettagli

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 VINCENZO MARRA Indice Esercizio 1 1 Conversione di un numero naturale in base b.

Dettagli

ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma

ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma Calcolabilità problemi facili trovare la media di due numeri stampare le linee di un file che contengono una parola problemi difficili trovare il circuito minimo data una tabella determinare la migliore

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde?

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde? Leggete attentamente le domande del test e date la/le vostra/e risposta/e. 1) Per quanto tempo la memoria RAM di un personal computer conserva le informazioni? Finchè lo hard disk funziona in modo corretto

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 2 - Funzioni Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2.

Dettagli

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

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

Dettagli

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL In informatica il Pascal è un linguaggio di programmazione creato da Niklaus Wirth ed é un linguaggio di programmazione strutturata. I linguaggi di programmazione

Dettagli

NOZIONI BASE SHELL E SCRIPT LINUX

NOZIONI BASE SHELL E SCRIPT LINUX NOZIONI BASE SHELL E SCRIPT LINUX Aggiornato al 11 gennaio 2006 Ermes ZANNONI (ermes@zannoni.to.it) (http://www.zannoni.to.it) Indice : 1. Introduzione 2. La Shell 2.1 Comandida Shell 2.1.1 File e directory

Dettagli

Trattamento delle STRINGHE in C(++)

Trattamento delle STRINGHE in C(++) Trattamento delle STRINGHE in C(++) Le cose che qui vengono dette valgono sia per il linguaggio C che per il C++. Nel linguaggio C non esiste, a differenza di quel che avviene per altri linguaggi di programmazione

Dettagli

Uso di base delle funzioni in Microsoft Excel

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

Dettagli

Esercitazione 3. Corso di Fondamenti di Informatica

Esercitazione 3. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 3 Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

LISTE, INSIEMI, ALBERI E RICORSIONE

LISTE, INSIEMI, ALBERI E RICORSIONE LISTE, INSIEMI, ALBERI E RICORSIONE Settimo Laboratorio LISTE E RICORSIONE SVUOTALISTA: CONSIDERAZIONI Per svuotare una lista si devono eliminare i singoli nodi allocati con la malloc... Come fare? Per

Dettagli

Alcune regole di base per scrivere un programma in linguaggio C

Alcune regole di base per scrivere un programma in linguaggio C Alcune regole di base per scrivere un programma in linguaggio C Un programma il linguaggio C (listato) viene scritto in formato testo ed archiviato in un file: *.c Per scrivere un listato C si utilizza

Dettagli

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

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

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Introduzione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Argomenti trattati Che cosa è python Variabili Assegnazione Condizionale Iterazione in una lista di

Dettagli

Microsoft Excel. Il foglio elettronico Microsoft Excel Cartelle, Fogli di lavoro e celle Contenuto delle celle. Numeri, date, formule, testo, funzioni

Microsoft Excel. Il foglio elettronico Microsoft Excel Cartelle, Fogli di lavoro e celle Contenuto delle celle. Numeri, date, formule, testo, funzioni Microsoft Excel Sommario Il foglio elettronico Microsoft Excel Cartelle, Fogli di lavoro e celle Contenuto delle celle Numeri, date, formule, testo, funzioni Formattazione dei dati Creazione di serie di

Dettagli

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

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

Dettagli

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

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

Dettagli

EXCEL FUNZIONI PRINCIPALI

EXCEL FUNZIONI PRINCIPALI EXCEL FUNZIONI PRINCIPALI Funzione SE() Sintassi: SE(VERIFICA, VALORE SE VERO, VALORE SE FALSO): verifica un valore e ritorna una risposta in base al risultato vero/falso Esempio: =SE(A2=15; "OK"; "NO")

Dettagli

INFORMATICA - I puntatori Roberta Gerboni

INFORMATICA - I puntatori Roberta Gerboni 1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B 23.XI.2012 VINCENZO MARRA Indice Esercizio 1 1 Menu 1 Tempo: 35 min. 2 Commento 1 2 Esercizio 2 2 Ordinamento e ricerca binaria con la classe

Dettagli

Convertitori numerici in Excel

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

Dettagli

Gestione dei File in C

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

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

Utilizzo delle formule in Excel

Utilizzo delle formule in Excel Utilizzo delle formule in Excel Excel è dotato di un potente motore di calcolo che può essere utilizzato per elaborare i dati immessi dagli utenti. I calcoli sono definiti mediante formule. Ogni formula

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione VI Tatiana Zolo tatiana.zolo@libero.it 1 LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono

Dettagli

Prof. Nicola Cappuccio ing.nicola.cappuccio@gmail.com

Prof. Nicola Cappuccio ing.nicola.cappuccio@gmail.com Excel e le sue Funzioni Guida Pratica per la realizzazione di Progetti Prof. Nicola Cappuccio ing.nicola.cappuccio@gmail.com Ing. Nicola Cappuccio 1 Sommario INT (funzione INT)... 3 Descrizione... 3 Sintassi...

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 NOTA: Si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main. Inoltre, nei programmi è da sottintendere

Dettagli

Introduzione a ROOT. 1. Informazioni generali

Introduzione a ROOT. 1. Informazioni generali Introduzione a ROOT 1. Informazioni generali ROOT è un ambiente visualizzazione e trattamento dati interattivo sviluppato al CERN (si veda il sito ufficiale http://root.cern.ch interamente sviluppato in

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

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

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

Dettagli

Test Excel conoscenze di Base

Test Excel conoscenze di Base Test Excel conoscenze di Base 1)Che tipo di barra ha un foglio di calcolo, che un elaboratore testi non ha? a. La barra dei menu b. La barra della formula c. La barra del titolo d. La barra della formattazione

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base: LA STRUTTURA DI RIPETIZIONE La ripetizione POST-condizionale La ripetizione PRE-condizionale INTRODUZIONE (1/3) Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0.

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0. EQUAZIONI E DISEQUAZIONI Le uguaglianze fra espressioni numeriche si chiamano equazioni. Cercare le soluzioni dell equazione vuol dire cercare quelle combinazioni delle lettere che vi compaiono che la

Dettagli

FORMULE: Operatori matematici

FORMULE: Operatori matematici Formule e funzioni FORMULE Le formule sono necessarie per eseguire calcoli utilizzando i valori presenti nelle celle di un foglio di lavoro. Una formula inizia col segno uguale (=). La formula deve essere

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

Dimensione di uno Spazio vettoriale

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

Dettagli

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

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

Dettagli

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Soluzioni delle prove al calcolatore Esercizio 7 (esame del 08/01/2009) class TabellaDiNumeri{ private double[][] tabella;

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

Variabili e tipi di dato

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

Dettagli

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008 Se devo memorizzare più valori che sono in qualche modo parenti dal punto di vista logico, posso usare il concetto di vettore di variabili (array). Ad esempio, se devo memorizzare le temperature di tutti

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

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

Dettagli

LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL

LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL ESERCITAZIONE GUIDATA: LE RENDITE 1. Il montante di una rendita immediata posticipata Utilizzando Excel, calcoliamo il montante di una

Dettagli

Caratteri e stringhe Esercizi risolti

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

Dettagli

Lezione 8. La macchina universale

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

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

RICERCA DI UN ELEMENTO

RICERCA DI UN ELEMENTO RICERCA DI UN ELEMENTO Si legga da tastiera un array di N elementi (N stabilito dall utente) Si richieda un elemento x il programma deve cercare l elemento x nell array Se l elemento è presente, deve visualizzare

Dettagli

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

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

Dettagli

Utilizzo del Terminalino

Utilizzo del Terminalino Utilizzo del Terminalino Tasti: - ENT: funzionano come INVIO - SCAN: per attivare il lettore di barcode - ESC: per uscire dal Menù in cui si è entrati - BKSP: per cancellare l ultimo carattere digitato

Dettagli

Introduzione alla programmazione in C

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

Dettagli

Le stringhe. Le stringhe

Le stringhe. Le stringhe Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è

Dettagli

LAVORO ESTIVO DI INFORMATICA CLASSE 2O

LAVORO ESTIVO DI INFORMATICA CLASSE 2O LAVORO ESTIVO DI INFORMATICA CLASSE 2O PER COLORO CHE HANNO AVUTO LA SOSPENSIONE DEL GIUDIZIO, GLI ESERCIZI SVOLTI DEVONO ESSERE CONSEGNATI TASSATIVAMENTE IL GIORNO DELL'ESAME SCRITTO. A CHI È STATO ASSEGNATO

Dettagli

Kangourou della Matematica 2014 finale nazionale italiana Mirabilandia, 12 maggio 2014

Kangourou della Matematica 2014 finale nazionale italiana Mirabilandia, 12 maggio 2014 Kangourou della Matematica 2014 finale nazionale italiana Mirabilandia, 12 maggio 2014 LIVELLO STUDENT K,M N CD BC A S1. (5 punti ) In figura si vede una circonferenza della quale i segmenti AB, BC e CD

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

RAPPRESENTAZIONE GRAFICA E ANALISI DEI DATI SPERIMENTALI CON EXCEL

RAPPRESENTAZIONE GRAFICA E ANALISI DEI DATI SPERIMENTALI CON EXCEL RAPPRESENTAZIONE GRAFICA E ANALISI DEI DATI SPERIMENTALI CON EXCEL 1 RAPPRESENTAZIONE GRAFICA Per l analisi dati con Excel si fa riferimento alla versione 2007 di Office, le versioni successive non differiscono

Dettagli

Prova Scritta del 19/07/10

Prova Scritta del 19/07/10 Avvertenze Usare ESCLUSIVAMENTE penne ad inchiostro nero o blu (NO MATITE). Consegnare solo fogli formato A4 scritti da un solo lato. In testa a ciascun foglio scrivere: cognome, nome, numero progressivo

Dettagli

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

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

Dettagli

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera WORD per WINDOWS95 1.Introduzione Un word processor e` come una macchina da scrivere ma con molte più funzioni. Il testo viene battuto sulla tastiera ed appare sullo schermo. Per scrivere delle maiuscole

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture

Dettagli

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

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

Dettagli

Esame del 3 febbraio 2010

Esame del 3 febbraio 2010 Fondamenti di Informatica CdL in Ingegneria Gestionale a.a. 2009/2010 Docente: Andrea Prati Esame del 3 febbraio 2010 Esercizio 1 Vettori Sia data un vettore (array monodimensionale) di interi: int VETT[N];

Dettagli

Stream EDitor (sed) sed NON modifica l'input 2. L'output viene inviato allo standard output e puo' essere rediretto

Stream EDitor (sed) sed NON modifica l'input 2. L'output viene inviato allo standard output e puo' essere rediretto Sed & Awk Stream EDitor (sed) sed: editor di linea che non richiede l'interazione con l'utente sed può filtrare l'input che riceve da un file o una pipe La sintassi di sed NON definisce un output: L'output

Dettagli

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

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

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

Joker Poker - Regole di Gioco

Joker Poker - Regole di Gioco Joker Poker - Regole di Gioco Come giocare Il gioco Joker Poker utilizza un mazzo da 53 carte composto da 52 carte francesi più una carta Joker(Jolly) che quindi può assumere il valore di ogni altra carta.

Dettagli

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Esercitazione del 22/01/2013 Esercizio 1 Un sistema dispone di 16 pagine di memoria fisica e 64 di memoria virtuale. Sapo che l indirizzo

Dettagli

Regolamento Casinò Poker Joker Poker

Regolamento Casinò Poker Joker Poker Regolamento Casinò Poker Joker Poker Lo scopo del poker Joker è di ottenere una mano di poker da 5 carte che contenga una combinazione vincente (vedi la tabella dei pagamenti sulla macchina). Migliore

Dettagli

Verifica della correttezza formale del numero di partita IVA

Verifica della correttezza formale del numero di partita IVA Verifica della correttezza formale del numero di partita IVA A tutti i soggetti che intraprendono un attività rilevante ai fini Iva (impresa, arte, professione), al momento della presentazione della dichiarazione

Dettagli

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software: 1 SOFTWARE È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software: SOFTWARE DI SISTEMA (o di base), che deve gestire le funzioni

Dettagli

SPECIFICHE E LIMITI DI EXCEL

SPECIFICHE E LIMITI DI EXCEL SPECIFICHE E LIMITI DI EXCEL Un "FOGLIO DI CALCOLO" è un oggetto di un programma per computer costituito da un insieme di celle, organizzate in righe e colonne, atte a memorizzare dati ed effettuare operazioni

Dettagli