ANALISI: cicli e funzioni. Non sarà consentito consultare appunti o testi di qualunque tipo durante la prova intermedia

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "ANALISI: cicli e funzioni. Non sarà consentito consultare appunti o testi di qualunque tipo durante la prova intermedia"

Transcript

1 Esercizi di preparazione alla I Prova Intermedia di Fondamenti di Informatica L-A a.a. 2003/2004 Prof. Paola Mello, Prof. Paolo Bellavista ANALISI: cicli e funzioni Il compitino comprenderà uno o più esercizi (simili a uno di quelli qui esemplificati) su ciascuno dei seguenti argomenti: ESERCIZI DI ANALISI: Cicli e Funzioni ESERCIZI DI SINTESI: Cicli e Funzioni ESERCIZI SU FUNZIONI RICORSIVE e RECORD DI ATTIVAZIONE ESERCIZI SULLE GMMATICHE DOMANDE DI TEORIA Non sarà consentito consultare appunti o testi di qualunque tipo durante la prova intermedia Al termine degli esercizi è presente sia un compito intermedio di un anno accademico precedente, sia alcune domande di teoria che possono essere molto utili per verificare la propria comprensione e preparazione degli argomenti svolti finora. Si ricorda agli studenti che altri esercizi possono essere comunque reperiti sul sito web del corso. Dato il seguente programma C: main() { int A=0; int i; for (i=1; i<6; i+=3) A = A + i; if (A) printf("%d\n", i-a); else printf("%d\n", A); Qual è l'uscita del programma? La risposta deve essere opportunamente motivata. Nel ciclo for nel main si modificano i valori di A con indice i = 1 e 4. A diventa = 5; i esce con valore 7; l istruzione if, essendo A non nulla (valore vero), stampa 7-5 cioè

2 Si indichino, nel giusto ordine, i valori stampati dal seguente programma C, motivando la risposta data. void main () { int i, j; for (i=0; i<5; i=i+2) { for (j=0; j<3; j++) printf(" %d", i+j); printf("\n"); All interno del primo ciclo for si assegna il valore 0 a i e di conseguenza si stampa: successivamente a i si assegna il valore 2 e si stampa: ancora, si assegna a i il valore 4 e si stampa: Poi si termina. Si indichino, nel giusto ordine, i valori stampati dal seguente programma C, motivando la risposta data. main() { int i,j,x,y; printf("inserire valori interi compresi fra 1 e 20: "); scanf("%d:%d", &x, &y); for (i=1; i<=y; i++) { for (j=1; j<=x; j++) printf("@"); printf("\n"); Dopo aver inserito i due numeri interi separati fra loro da :, il programma stampa un numero di righe pari a y (secondo valore inserito, ciclo for esterno), ciascuna delle quali contiene un numero x (primo valore inserito, ciclo for interno) di caratteri '@'. N.B.: In realtà il programma non effettua nessun controllo sul fatto che gli interi inseriti siano compresi nell'intervallo [1, 20]. 3 4

3 Dato il seguente programma C: int Dim=8; int f(int k) {int i, s=dim; for(i=dim-1; i>=0; i-=k) s+=i; return s; main() {printf("%d\n", f(3)); Qual è l'uscita del programma? La risposta deve essere opportunamente motivata. Soluzione L'uscita del programma è 20. La funzione f() viene infatti invocata con valore attuale di k=3. Il ciclo for viene eseguito con i inizialmente uguale a 7 e decrementato ogni volta di k fino a che i non diventa minore di 0. Ad ogni ciclo viene sommato ad s il valore corrente di i. La funzione poi restituisce s al programma principale. Quindi: s = Dim + (Dim-1) +(Dim-1-k) + (Dim-1-2*k) = = 20 Dato il seguente programma C: void f(int a, int * b) { int limit = a; int i; for(i=0; i<limit; i++) { *b = (*b) * (*b); a++; return; main() { int Esp = 2; int Num = 2; f(esp,&num); printf("%d, %d\n", Esp, Num); Qual è l'uscita del programma? La risposta deve essere opportunamente motivata. Soluzione L'uscita del programma è: 2, 16 La funzione f riceve due argomenti, il primo passato per valore ed il secondo passato per riferimento. Di conseguenza ogni 5 6

4 azione compiuta sulla prima variabile, a, non avrà side-effects sull originale presente nel main, mentre qualsiasi operazione compiuta sulla seconda variabile, b, modificherà anche la variabile originale nel main. Per tale ragione la prima istruzione all interno del ciclo for modifica il contenuto della variabile b e quindi il contenuto della variabile Num presente nel main, mentre la seconda istruzione del ciclo for ha effetti sulla variabile a locale alla funzione f, ma nessun effetto secondario sulla variabile Esp presente nel main. Da notare infine che la prima istruzione del ciclo for assegna immediatamente il risultato del prodotto alla variabile b, e quindi questo valore verrà usato nei cicli successivi. Alla prima iterazione del ciclo for, i vale 0, la condizione di continuazione è soddisfatta, *b vale 2 prima dell assegnamento, e 4 subito dopo. Alla seconda iterazione del ciclo for, i vale 1, la condizione di continuazione è soddisfatta, *b vale 4 prima dell assegnamento e 16 subito dopo. La terza iterazione del ciclo non avviene perché la condizione di continuazione (i<2) non è verificata, e quindi la funzione termina. Il main si limita poi a stampare i valori delle variabili Esp e Num. Per quanto già detto, Esp risulta essere invariata (vale 2), mentre Num risulta avere valore 16. Dato il seguente programma C: int f(int * a, int * b) { int result = 1; for( ; *a > 0 ; (*a)-- ) { result = result * (*b); return result; main() { int base = 3; int esp = 3; int power; power = f(&esp, &base); printf("%d ^ %d = %d\n", base, esp, power); Qual è l'uscita del programma? La risposta deve essere opportunamente motivata. Soluzione L'uscita del programma è: 3 ^ 0 = 27 Nel corpo del main sono inizialmente dichiarate tre variabili (le prime due sono anche istanziate al valore 3); subito dopo viene invocata la funzione f, il cui valore di ritorno è assegnato alla 7 8

5 variabile power, e quindi viene stampato il valore delle tre variabili. La funzione f riceve due argomenti, entrambi passati per riferimento. E dunque importante prestare particolare attenzione a ciò che succede all interno di questa funzione, in quanto potrebbero esserci dei side-effects sui valori delle variabili originali presenti nel main. La funzione f computa l elevamento a potenza di un numero, dove esponente e base sono rispettivamente il primo ed il secondo parametro ricevuti in ingresso da f. Da notare però il modo con cui esegue questo calcolo: utilizza un ciclo (istruzione for), dove non c è l istruzione di inizializzazione, e dove si utilizza come variabile indice proprio uno dei parametri ricevuti per riferimento. Particolare attenzione deve essere prestata all espressione di modifica del ciclo for, che operando su uno dei due parametri origina un side-effect. Siccome la funzione f e invocata con parametri 3 e 3, il risultato è ovviamente 27, mentre il primo parametro ricevuto all interno della funzione ha subito un decremento fino a 0. Per tal motivo al ritorno della funzione esp vale 0, mentre base vale ancora 3. Dato il seguente programma C: int f (int * a, int * b) { if ( ++(*a) < 10) return (*b)++; else return ++(*b); main() { int a = 8; int b = 4; printf("a=%d \nb=%d\n", a, b); printf("f restituisce:%d\n", f(&a, &b)); printf("a=%d \nb=%d\n", a, b); printf("f restituisce:%d\n", f(&a, &b)); printf("a=%d \nb=%d\n", a, b); Qual è l'uscita del programma? La risposta deve essere opportunamente motivata. Soluzione L uscita del programma è la seguente: a=8 b=4 f restituisce:4 a=9 b=5 f restituisce:6 a=10 b=6 9 10

6 Il main non fa altro che dichiarare (ed istanziare) le variabili a e b (la cui visibilità è ristretta al solo main). Quindi stampa il loro valore una prima volta: a=8 b=4 Poi viene stampato il risultato della funzione f, invocata con gli attuali valori di a e b. La funzione f riceve i parametri per riferimento, e quindi potrebbero esserci dei side-effects. La funzione f contiene subito un istruzione condizionale, il cui test è un espressione con un pre-incremento del valore di a (questo comporta sicuramente un side-effect). Quindi il valore di a viene prima incrementato, e poi testato nella condizione. Il pre-incremento porta a al valore 9, che soddisfa la condizione di test: quindi si esegue la prima parte dell istruzione if. Questa contiene solo l istruzione di ritorno del valore contenuto in b post-incrementato. Siccome abbiamo un post-incremento, b prima viene valutato per sapere che valore ritornare, e poi viene incrementato. Quindi f restituisce il valore corrente di b (che vale 4) e poi il valore di b è incrementato a 5 (con side effect). seconda parte dell istruzione if. Questa restituisce il valore di b pre-incrementato (ancora con side-effect), e quindi viene stampato: f restituisce:6 Alla fine il main ristampa ancora i valori di a e b, che a causa dei side-effects di cui prima, ora valgono: a=10 b=6 Viene stampato: f restituisce:4 Il main ristampa i valori di a e b, che in seguito ai side-effects avvenuti nella funzione f, risultano valere: a=9 b=5 A questo punto la funzione f viene invocata una seconda volta: il valore di a viene dapprima incrementato (perché c è un preincremento) e viene a valere 10 (con side-effect), e poi viene testato. La condizione di test fallisce, e quindi viene eseguita la 11 12

7 (tratto dal compito del 13/11/2002) Dato il seguente programma C: int f1(int b, int y) { if (b%2) return b; else { b++; return y; main() { int a=-8, b=0; while (a++ < 0) { a+=2; b = f1(a,b); printf("%d\n", b++); Che cosa fa la funzione f1? Che cosa stampa il programma (motivare opportunamente la risposta)? La terza esecuzione del ciclo comincia dunque con a=-1 e b=-4; a viene subito incrementato di 2 e f1() viene invocata con parametri attuali 1 e -4. Poiché il primo parametro di invocazione è dispari, questa volta f1() restituisce 1; tale valore viene assegnato a b nel main() e stampato a video. La variabile a ha ora valore +1, la condizione del ciclo while non è più verificata, quindi il corpo del ciclo non è eseguito e il programma termina. Soluzione Il programma stampa a video la sequenza di interi, ciascuno su una linea diversa: Infatti, la prima esecuzione del ciclo avviene con a inizialmente uguale a -7 e poi immediatamente incrementato di 2 (prima istruzione del ciclo). La funzione f1() viene quindi invocata con parametri attuali -5, 0. f1() non fa altro che restituire il primo parametro in caso di primo parametro dispari, il secondo parametro altrimenti (l'incremento di b prima di return y non può influire in alcun modo sul parametro b del chiamante). printf() stampa il valore di b nel main() e quindi -5, e l'incremento di b avviene solo dopo la stampa. La seconda esecuzione del ciclo comincia dunque con a=-4 e b=-4; a viene subito incrementato di 2 e f1() viene invocata con parametri attuali -2 e -4. Poiché il primo parametro di invocazione è pari, f1() restituisce -4; tale valore viene assegnato a b nel main() e stampato a video

8 ESERCIZI DI SINTESI: Cicli e Funzioni Si scriva una funzione: int dispari(int num) che restituisca il valore 1 se num è dispari, 0 altrimenti. Si scriva poi una funzione ricorsiva: int quad(int tot) che calcoli la somma dei primi tot numeri dispari, a partire da 0. Si scriva poi un programma che, letto da input un valore intero minore di 10 (si controlli che sia tale: in caso contrario si richieda il numero all utente), stampi a video il risultato della funzione quad() applicata a tutti i numeri pari minori del valore inserito dall utente (per determinare se un numero è pari si riutilizzi la funzione dispari()). int dispari(int num) { return num%2; int quad(int tot) { int i = 0; int count = 0; int result = 0; while (count < tot) { if ( dispari(i) ) { result += i; count++; i++; return result; main() { int numuser; int i; do { printf( Inserire un numero: ); scanf( %d, &numuser); while (numuser > 10); for (i=0; i<numuser; i++) { if (! dispari(i)) printf( Il risultato di quad() di %d è: %d\n, i, quad(i)); 15 16

9 Si realizzi una funzione: int power(int base, int esp); che calcoli la potenza di un numero data base ed esponente. Si realizzi poi una funzione: double pigreco(int precision); che restituisca come valore il risultato della seguente formula matematica: precision i 4 pi = ( 1) 2i i= Si realizzi una terza funzione: void cylinder(double pi, double radius, double length, double * volume) che calcoli il volume di un cilindro, dove pi è appunto il numero pigreco, radius è il raggio, length è l altezza del cilindro, ed il risultato viene messo nella variabile volume. Si scriva infine un programma che: 1. Chieda all utente un valore di precisione, calcoli pigreco utilizzando tale valore e stampi a video il valore calcolato (si controlli che la precisione sia > 0; in caso contrario si ripeta la richiesta all utente) 2. Chieda all utente un valore intero come raggio della base di un cilindro (si controlli che sia > 0; in caso contrario si ripeta la richiesta all utente) 3. Chieda all utente un valore intero come altezza del cilindro (si controlli che sia > 0; in caso contrario si ripeta la richiesta all utente) 17 Si calcoli quindi il volume del cilindro, se ne stampi il risultato, e quindi si chieda all utente se vuole calcolare un nuovo volume (si chieda all utente di digitare un carattere y/n). In caso affermativo si ricominci il programma a partire dal punto 1. int power(int base, int esp) { if (esp==0) return 1; else return base * power(base, esp-1); double pigreco(int precision) { int i; double result = 0; for (i=0; i<=precision; i++) result = result + power(-1, i)*(4.0/(2*i +1)); return result; void cylinder(double pi, double radius, double length, double * volume) { *volume = radius * radius * pi * length; main() { char answer; int precision; int radius; int length; double pi; double volume; 18

10 do { /* lettura della precisione */ do { printf("\ninserire la precisione: "); scanf("%d", &precision); while (precision < 0); pi = pigreco(precision); printf("pi greco vale: %f\n", pi); /* lettura del raggio */ do { printf("\ninserire il raggio: "); scanf("%d", &radius); while (radius < 0); /* lettura dell'altezza del cilindro */ do { printf("\ninserire l'altezza: "); scanf("%d", &length); while (length < 0); /* calcolo del volume */ cylinder(pi, radius, length, &volume); printf("\nil volume del cilindro è: %f\n", volume); printf("vuoi calcolare un altro volume [y/n]? "); scanf("\n%c", &answer); while (answer == 'y'); Una ditta specializzata nell organizzazione di feste di capodanno vuole regalare come promozione un programma che, presi in ingresso l ora e la data attuale, restituisce quanti secondi sono passati dall ultimo capodanno, e quanti ne mancano al prossimo. Si realizzi a tale che: 1. implementi una funzione: int month_to_days(int month); che restituisce il numero di giorni dato il mese (si faccia uso dell istruzione switch). 2. una funzione: long month_to_seconds(int month); che riceve in ingresso un mese e restituisce il numero di secondi di cui è composto quel mese. 3. una funzione: long time_elapsed(int month, int day, int hour, int minute, int sec); che restituisce il numero di secondi passati fino ad ora. 4. una funzione: long time_remaining(int month, int day, int hour, int minute, int sec); che calcola il numero di secondi rimanenti al prossimo capodanno. Il programma deve chiedere tutti i dati all utente (nella forma hh:mm:ss gg/mm). Qualora uno di questi dati sia incorretto, il programma deve provvedere a richiedere solo il dato errato. Ottenuti i dati, il programma deve stampare a video i secondi trascorsi, i secondi rimanenti al prossimo capodanno e, se mancano meno di 10 secondi, stampare a video la scritta AUGURI!!! tante volte quanti sono i secondi mancanti

11 #define JAN 1 #define FEB 2 #define MAR 3 #define APR 4 #define MAY 5 #define JUN 6 #define JUL 7 #define AUG 8 #define SEP 9 #define OCT 10 #define NOV 11 #define DEC 12 int month_to_days(int month) { long result; switch (month) { case FEB: result = 28; break; case APR: case JUN: case SEP: case NOV: result = 30; break; case JAN: case MAR: case MAY: case JUL: case AUG: case OCT: case DEC: result = 31; break; default: result = -1; return result; long month_to_seconds(int month) { long result; result = month_to_days(month) * 24 * 60 * 60; return result; long time_elapsed(int month, int day, int hour, int minute, int sec) { long result = 0; int i; for (i=1; i<month; i++) result = result + month_to_seconds(i); result = result + (day-1)*24*60*60 + hour*60*60 + minute*60 + sec; return result; long time_remaining(int month, int day, int hour, int minute, int sec) { long result = 0; int i; for (i=1; i<=12; i++) result = result + month_to_seconds(i); result = result - time_elapsed(month, day, hour, minute, sec); return result; main() { int month; int day; int hour; int minute; int sec; long elapsed_time; long remaining_time; int i; printf("inserire la data completa (hh:mm:ss gg/mm): "); scanf("%d:%d:%d %d/%d", &hour, &minute, &sec, &day, &month); while ((hour<0) (hour>23)) { 21 22

12 printf("ora non corretta. Per favore ripetere: "); scanf("%d", &hour); while ((minute<0) (minute>59)) { printf("minuti non corretti. Per favore ripetere: "); scanf("%d", &minute); while ((sec<0) (sec>59)) { printf("secondi non corretti. Per favore ripetere: "); scanf("%d", &sec); while ((month<1) (month>12)) { printf("mese non corretto. Per favore ripetere: "); scanf("%d", &month); while ((day<1) (day>month_to_days(month))) { printf("giorno non corretto. Per favore ripetere: "); scanf("%d", &day); elapsed_time = time_elapsed(month, day, hour, minute, sec); remaining_time = time_remaining(month, day, hour, minute, sec); printf("dallo scorso capodanno sono trascorsi %d secondi\n", elapsed_time); printf("al prossimo capodanno mancano %d secondi.\n", remaining_time); if (remaining_time < 10) for (i=0; i<remaining_time; i++) printf("auguri!!!!.\n"); Si scriva un programma C che legga da terminale una sequenza di numeri interi terminati dal valore 0 e stampi a terminale la media degli interi positivi pari letti. main() { float media; int num, n_pos_pari; media=0; n_pos_pari=0; do { printf("inserisci un numero (0 per terminare)\n"); scanf("%d", &num); if (num>0) if (num%2==0) {media=media+num; n_pos_pari++; while (num!=0); media = media/n_pos_pari; printf("la media vale: %f\n", media); 23 24

13 Si realizzi un programma C che legga da standard input i dati relativi ai corsi tenuti presso un'università. In particolare, l utente inserisce per ogni corso (si supponga che il numero dei corsi sia inserito dall utente all inizio della computazione) un intero che indica il numero di studenti che frequentano il corso ed un altro intero che ne indica il codice. Il programma deve stampare il codice di tutti i corsi che hanno il numero di iscritti maggiore o uguale al valore 30. Soluzione main() { int isc, corso, i, nc; printf("inserisci il numero dei corsi: "); scanf("%d", &nc); /* inserimento dati */ for (i=0; i<nc; i++) { printf("iscritti e codice corso ); scanf("%d%d", &isc, &corso); if (isc>=30) printf("corso con più di 30 iscritti: %d\n",corso); : Numeri Primi Si scriva una funzione C che calcola se un numero è primo, utilizzando la seguente specifica definita ricorsivamente: 2 è primo. un numero N è primo se non è divisibile per alcun numero primo strettamente compreso fra 2 ed N/2. int div(int N,int M) { return (N % M) == 0; int primo(int N) { int i, Trovato = 1; if (N==2) return 1; else{ for (i=2; i<n/2; i++) if (primo(i)) Trovato = Trovato &&!div(n, i); return Trovato; 25 26

14 Si scrivano le versioni ricorsiva ed iterativa (utilizzo di while) di una funzione: che calcoli il seguente valore: n Σ (a - i\a) i=1 double f(double a, int n); Si scrivano le versioni ricorsiva ed iterativa (ciclo while) di una funzione: che calcoli il seguente valore m n/i i=1 double f(int m, double n); Soluzione ricorsiva double f(double a, int n) { if (n==1) return a 1/a; else return a n/a + f(a, n-1); Soluzione ricorsiva : double f(int m, double n) { if (m==1) return n; else return n/m * f(m-1,n); Soluzione iterativa double f(double a, int n) { int i=1; double sum=0; while(i<=n) {sum = sum + a i/a; i++; return sum; Soluzione iterativa : double f(int m, double n) { int i=1; double prod=1; while (i<=m) { prod = prod * (n/i); i++; return prod; 27 28

15 ESERCIZI su FUNZIONI RICORSIVE e RECORD di ATTIVAZIONE if (N<=0) return 1; else return -1+4*F(N-1) + F(N-2); Si consideri la seguente funzione F la cui specifica è data in modo ricorsivo (si supponga N intero): F(N) = restituisce 1 se N <= 0, -1+4*F(N-1) + F(N-2), altrimenti N=3 N=2 Viene invocata F con N=3, che richiama F(2), che richiama F(1), infine F(0). F(0) restituisce 1 al chiamante 1. Si scriva la funzione C che realizza tale specifica; 2. Si scriva il risultato della funzione quando chiamata con N=3 e si mostri la sequenza dei record di attivazione; 3. Si scriva il programma main che chiama tale funzione con N=3 e ne stampa il risultato a terminale. 1 N=1 N=0 Soluzione int F(int N) { if (N<=0) return 1; else return -1+4*F(N-1) + F(N-2); main (){ printf( risultato %d, F(3)) ; oppure: int F(int N); 1 4 N=3 N=2 N=1 N=-1 F(1), terminata l esecuzione di F(0), invoca F(-1), poi termina e fornisce il risultato 4 al chiamante. F(1)=4 main (){ printf( risultato %d, F(3)) ; int F(int N) { 29 30

16 16 1 N=3 N=2 N=0 F(2) invoca F(0), che restituisce 1. F(2)=-1+4*F(1)+F(0) = *4 +1 =16 F(2) restituisce il valore 16 al chiamante N=3 N=1 F(1) invoca F(-1), che restituisce 1. F(1) termina restituendo 4 al chiamante F(3). F(3)= -1+4*F(2)+F(1) =-1+4*16+4 =67 F(3) termina e restituisce 67 N=-1 N=3 F(3) invoca F(1), che invoca F(0). Come prima, F(0) restituisce 1. 1 N=1 N=

17 Si consideri la seguente funzione F la cui specifica è data in modo ricorsivo (si supponga N intero): Record di attivazione della chiamata con N=3 F(N) = restituisce 2 se N <= 0, F(N-2) * F(N-3), altrimenti a) Si scriva il risultato della funzione quando chiamata con N = 3 e si mostrino i valori intermedi assunti da N; N 3 N 1 La F(3) chiama la F(1) che a sua volta chiama F(-1). Quest ultima finisce restituendo il valore 2 b) Si scriva la funzione C che realizzerebbe tale specifica c) Si mostrino i record di attivazione nello stack 2 Sequenza di attivazioni: N -1 F(3) F(-1) F(1) 2 2 F(-2) 4 2 F(3) restituisce il valore 8 Valori assunti da N: F(0) N 3 N Dopo di che la funzione F(1) chiama F(-2). Quest ultima finisce restituendo il valore 2. Quindi finisce anche F(1) restituendo il valore 4 (risultato della moltiplicazione tra 2 e 2). int F(int N) {if (N<=0) return 2; else return F(N-2)*F(N-3); N

18 N 3 N Dopo di che la funzione F(3) chiama F(0). Quest ultima finisce restituendo il valore 2. Quindi finisce anche F(3) restituendo il valore 8 (risultato della moltiplicazione tra 4 e 2). Si consideri la seguente funzione P la cui specifica è data in modo ricorsivo (si supponga N intero): P(N) = stampa N se N <= 10, stampa N e invoca P(N-10), altrimenti a) Scrivere il codice C di tale funzione; b) La funzione è tail ricorsiva? c) Si scriva la sequenza di valori stampati quando la funzione è chiamata con N = 30. Si mostri anche la sequenza dei record di attivazione, sia nel caso il compilatore effettui l'ottimizzazione tail, sia se non la effettua. a) Codice della funzione void P(int N) { printf("%d ", N); if (N>10) { P(N-10); b) La funzione è tail ricorsiva, in quanto la chiamata ricorsiva è l'ultima operazione effettuata. c) La funzione stampa la sequenza

19 N=30 N=20 N=10 La funzione stampa 30, poi invoca P(20), che stampa il valore 20 ed invoca P(10). P(10) stampa 10 e termina. Il controllo torna a P(20) che termina, poi a P(30) che termina. Se il compilatore effettua l'ottimizzazione tail, viene riutilizzato sempre lo stesso record di attivazione: N = La funzione stampa 30, poi invoca P(20), senza allocare un nuovo record di attivazione. Stampa il valore 20 ed invoca P(10). P(10) stampa 10 e termina. Il controllo torna direttamente al programma chiamante. ESERCIZI SULLE GMMATICHE Si consideri la grammatica G=(Vn,Vt,P,S), con Vn={<U>,<D>, Vt={1,2,3, S=<U> e P={ <U> ::= 1<D>3 <D> ::= 2<U> 2 Si dica se la stringa è sintatticamente corretta rispetto a tale grammatica e se ne mostri la derivazione left-most. Si dica se la stringa è sintatticamente corretta rispetto a tale grammatica e se ne mostri l albero sintattico

20 Derivazione left-most <U> 1 <D> <U> <D> Albero sintattico <U> 1 <D> 3 2 <U> 1 <D> 3 2 Data la grammatica G={VN,VT,S,P), VN={<T>,<F>, S=<T> VT={and, not, true, false, P={ <T> ::= <F> and <T> <F> <F> ::= not <F> true false Dire se la stringa not true and false and not false è sintatticamente corretta rispetto a tale grammatica e se ne mostri la derivazione left-most. Dire se la stringa not true and false and not false è sintatticamente corretta rispetto a tale grammatica e se ne mostri l albero sintattico. Derivazione left-most <T> <F> and <T> not <F> and <T> not true and <T> not true and <F> and <T> not true and false and <T> not true and false and <F> not true and false and not <F> not true and false and not false 39 40

21 Albero sintattico <T> Data la grammatica G con scopo S e simboli terminali {a,b,c,d,0,1 S::= Aa bb bc A::= 1B 0 B::= 0A 1 C::= Cc d <F> and <T> Si mostri (mediante derivazione left-most) che la stringa b011 appartiene alla grammatica, mentre la stringa b111 no. not <F> true <F> false and <T> <F> Derivazione left-most della stringa b011 S bb b0a b01b b011 not <F> Derivazione left-most della stringa b111 (non possibile) S bb b1 false e non è più possibile proseguire

22 Si consideri la grammatica G=(Vn,Vt,P,S), con Vn={U,Z,T, Vt={0,1,2,3, S=U e P={ U ::= 3T 1Z Z ::= 3T 0U T ::= 2 Si mostri (mediante derivazione left-most) che la stringa appartiene alla grammatica, mentre la stringa 130 no. Derivazione left-most della stringa U 1Z 10U 101Z 1013T Derivazione left-most della stringa 130 (non possibile) U 1Z 13T?? non esiste Un esempio di possibile compito intermedio Fondamenti di Informatica L-A (A.A. 2002/2003) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista - Appello del 13/11/ durata 1h45m - COMPITO A 1 (punti 7) Dato il seguente programma C: int f1(int b, int y) { if (b%2) return b; else { b++; return y; main() { int a=-8, b=0; while (a++ < 0) { a+=2; b = f1(a,b); printf("%d\n", b++); Che cosa fa la funzione f1? Che cosa stampa il programma (motivare opportunamente la risposta)? 2 - Si definisca una funzione int sum (int i) (in maniera ricorsiva o iterativa) che, passato un valore intero i, calcoli la sommatoria dei numeri interi da 1 a i: (punti 3) i k= 1 k - Si scriva poi una funzione ricorsiva int prodsum(int k)che calcoli il seguente valore: m i i= 1 k= 1 k chiamando opportunamente al suo interno la funzione sum(), precedentemente definita (punti 3). - Si scriva poi il programma main e si stampi il risultato per un valore N introdotto a terminale dall utente (punti 3). 3 (punti 8) Si consideri la seguente funzione F: int F(double x){ if (x<2) return 1; else return F(x-2); x++; Si scriva il risultato della funzione quando invocata come F(7) e si mostrino i record di attivazione. La funzione è tailricorsiva? 4 (punti 3) Si consideri la grammatica G con scopo S e simboli terminali {a,z,0,1 S::= C B C C C::= B A A B::= a z A::= 0 1 Si dica se la stringa a1z0 è sintatticamente corretta rispetto a tale grammatica e se ne mostri la derivazione left most. 5 (punti 2) Dato il seguente programma quale sarà il risultato stampato? Si motivi bene la risposta data. int piu(int *n) {return *n=*n + *n; main () { int n=12; printf( %d, piu(&n)); printf( %d, n); 6 (punti 3) 43 44

23 Un elaboratore rappresenta i numeri interi su 8 bit dei quali 7 sono dedicati alla rappresentazione del modulo del numero e uno al suo segno. Indicare come viene svolta la seguente operazione aritmetica e determinarne il risultato traslandolo poi in decimale per la verifica: Viene stampato a video 1. Soluzione Compito A 1 1 Il programma stampa a video la sequenza di interi, ciascuno su una linea diversa: Infatti, la prima esecuzione del ciclo avviene con a inizialmente uguale a -7 e poi immediatamente incrementato di 2 (prima istruzione del ciclo). La funzione f1() viene quindi invocata con parametri attuali -5, 0. f1() non fa altro che restituire il primo parametro in caso di primo parametro dispari, il secondo parametro altrimenti (l'incremento di b prima di return y non può influire in alcun modo sul parametro b del chiamante). printf() stampa il valore di b nel main() e quindi -5, e l'incremento di b avviene solo dopo la stampa. La seconda esecuzione del ciclo comincia dunque con a=-4 e b=-4; a viene subito incrementato di 2 e f1() viene invocata con parametri attuali -2 e -4. Poiché il primo parametro di invocazione è pari, f1() restituisce -4; tale valore viene assegnato a b nel main() e stampato a video. La terza esecuzione del ciclo comincia dunque con a=-1 e b=-4; a viene subito incrementato di 2 e f1() viene invocata con parametri attuali 1 e -4. Poiché il primo parametro di invocazione è dispari, questa volta f1() restituisce 1; tale valore viene assegnato a b nel main() e stampato a video. La variabile a ha ora valore +1, la condizione del ciclo while non è più verificata, quindi il corpo del ciclo non è eseguito e il programma termina. La funzione è tail ricorsiva. x = 7.0 x = 5.0 x = 3.0 x = double sum(int i) { if (i==0) return 0; else return i + sum(i-1); double prodsum(int k) { if (k==1) return sum(1); else return sum(k)* prodsum(k-1); main() { int n; printf("inserisci il numero "); scanf("%d", &n); printf("risultato: %d\n",prodsum(n)); 4 La stringa è sintatticamente corretta. Derivazione left most: S C B C B A B C B A B A a A B A a 1 B A a 1 z A a 1 z Tutto avviene come se il passaggio fosse per indirizzo, la variabile n del programma chiamante viene modificata > > Tra i moduli dei numeri si esegue una somma: che vale 97 in base dieci

24 DOMANDE (teoria) Qual è la differenza tra un processo computazionale ricorsivo e uno ricorsivo tail? A. Il primo può essere molto più efficiente del secondo perché nel secondo caso vengono allocati tanti record di attivazione quante sono le chiamate, nel primo uno solo. B. Il secondo può essere molto più efficiente del primo perché nel secondo caso si può effettuare un'ottimizzazione che limita il numero di record di attivazione allocati sullo stack. C. Nessuna differenza. Soluzione La risposta corretta è la B. Che cosa accade se all'interno di una funzione/procedura si modifica un parametro passato per riferimento? A. Si agisce su una copia e quindi il parametro attuale del chiamante non viene modificato. B. Si ottiene un errore di compilazione. C. Viene modificato il valore della variabile passata come parametro attuale dal chiamante. La risposta corretta è la C. Qual è la differenza tra un parametro formale passato per indirizzo/riferimento e uno passato per valore ad una procedura? A. Se modificato all interno della procedura, il parametro passato per indirizzo non comporta modifica sul parametro attuale. Viceversa avviene per il parametro passato per valore. B. Se modificato all interno della procedura, il parametro passato per valore non comporta modifica sul parametro attuale. Viceversa avviene per il parametro passato per indirizzo/riferimento. C. I parametri passati per indirizzo sono solo vettori, mentre tutti gli altri non possono essere passati che per valore. La risposta corretta è la B. Identificare e correggere gli errori in ognuna delle seguenti istruzioni: - while (c<=5) {p *= c; ++c; (errore sintattico manca una parentesi graffa alla fine del while) - while (c<=5) {p = p * c; ++c; (errore logico, c non è modificata all interno del ciclo, loop infinito) 47 48

25 Effettuare la seguente operazione aritmetica tra numeri binari naturali, ipotizzando di rappresentare i numeri interi tramite un byte: A-B, dove A=(35)10, B=(22)10 (35)10 = (23)16= ( )2 (22)10 = (16)16= ( ) = Prestito: 0 Risultato: A - B = ( )2 = (0D)16= (13)10 Effettuare la seguente operazione aritmetica tra numeri binari naturali, ipotizzando di rappresentare i numeri interi tramite un byte (si scriva, per ogni numero, anche la corrispondente rappresentazione in base 16): A+B, dove A=(42)10, B=(31)10 (42)10 = (2A)16 = ( )2 (31)10 = (1F)16 = ( ) = Risultato: A + B = ( )2 = (49)16= (73)

26 Dire se le seguenti affermazioni sono vere o false: a) Il caso default è sempre obbligatorio nell istruzione switch. b) L istruzione break e sempre obbligatoria nel caso default di una istruzione switch c) L espressione (x > y && a < b) è vera se x>y è vera oppure se a<b è vera. d) Un espressione contenente l operatore è vera se entrambi o uno solo dei suoi operandi sono veri. a) falso. Il caso di default è optional. b) falso. Il break è utilizzato per uscire da una struttura switch. Nel caso di default non è richiesto (il caso di default è l ultimo) c) falso. Entrambe le espressioni devono essere vere, non una sola. d) vero. Dato il programma seguente: int cube( int y ); int main() { int x; for (x=1; x<=10; x++) printf( %d\n, cube(x) ); return 0; int cube( int y) { return y * y * y; Indicare lo scope delle seguenti variabili: a) La variabile x nel main b) La variabile y nella funzione cube c) La funzione cube d) La funzione main e) Il prototipo della funzione cube f) L identificatore y nel prototipo della funzione cube Soluzioni: a) Il blocco b) Il blocco c) Tutto il file d) Tutto il file e) Tutto il file f) Il solo prototipo della funzione 51 52

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. #include Esercizio 1 - Soluzione int main() int num1, num2, num3, somma; float

Dettagli

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa. 3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il

Dettagli

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA 28 Gennaio 1999 PROVA SCRITTA Esercizio 1 Un elaboratore rappresenta numeri interi in complemento a due su 8 bit e numeri reali in utilizzando un byte per la mantissa normalizzata e un byte per l esponente

Dettagli

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile

Dettagli

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare

Dettagli

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Le classi di istruzioni in C++ 1 Le classi di istruzioni in C++ SEQUENZIALI Statement semplice Statement composto CONDIZIONALI if < expr.> else switch case

Dettagli

Istruzioni iterative. Istruzioni iterative

Istruzioni iterative. Istruzioni iterative Istruzioni iterative Esempio: Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d",

Dettagli

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

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

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

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

Dettagli

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie

Dettagli

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998 21 Gennaio 1998 PROVA PRATICA Si scriva un programma C (BASIC per gli studenti di Elementi di Informatica) che: a) Legga da terminale una sequenza di caratteri terminati dal carattere '*' (un carattere

Dettagli

Esempio di Prova Scritta

Esempio di Prova Scritta Esempio di Prova Scritta La prova scritta è composta da alcuni esercizi per un totale di 10 punti (durata:circa 1h15 ). Le tipologie di esercizi possibili comprendono:! sintesi di una funzione ricorsiva/iterativa,

Dettagli

Esercizi di preparazione alla prova scritta

Esercizi di preparazione alla prova scritta Esercizi di preparazione alla prova scritta ARGOMENTI: Istruzione dominante, complessità ESERCIZIO n 1 Si analizzi il seguente frammento di codice C: #define N 10 int V[N]={1,2,3,4,5,6,7,8,9,10;... main()

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Si possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi).

Si possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi). Operatori di incremento e decremento: ++ e -- ++ e -- sono operatori unari con la stessa priorità del meno unario e associatività da destra a sinistra. Si possono applicare solo a variabili (di tipi interi,

Dettagli

Istruzioni iterative (o cicliche)

Istruzioni iterative (o cicliche) Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Istruzioni iterative (o cicliche) Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria

Dettagli

Esercitazione 4. Comandi iterativi for, while, do-while

Esercitazione 4. Comandi iterativi for, while, do-while Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti

Dettagli

Input/Output di numeri

Input/Output di numeri Input/Output di numeri I/O di numeri Per utilizzare le funzioni di I/O occorre include il file di intestazione (o file header) stdio.h utilizzando all inizio del sorgente la direttiva #include

Dettagli

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=

Dettagli

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Dettagli

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 JavaScript Core Language Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 Condizioni L utilizzo di operatori relazionali e logici consente di formulare delle condizioni

Dettagli

Esercizio 1 - cicli. Esercizio 1 cicli - Soluzione

Esercizio 1 - cicli. Esercizio 1 cicli - Soluzione Sequenze di cifre Esercizio 1 - cicli Realizzare un programma che prende in input una sequenza di cifre (tra 1 e 9) e calcola la somma massima fra le sotto- sequenze di cifre non decrescente Il programma

Dettagli

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Le Strutture di controllo Del Linguaggio C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni STRUTTURE DI CONTROLLO PRIMITIVE SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE NON PRIMITIVE

Dettagli

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono

Dettagli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} } ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il

Dettagli

5 - Istruzioni condizionali

5 - Istruzioni condizionali 5 - Istruzioni condizionali Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1: funzione con valore di ritorno di tipo puntatore Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio

Dettagli

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione

Dettagli

Struttura dei programmi C

Struttura dei programmi C Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio C - sezione dichiarativa: costanti e variabili Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente

Dettagli

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere

Dettagli

Array Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione

Array Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione Array Tipi di dato semplici e strutturati i tipi di dato visti finora erano tutti semplici: int, char, float,... i dati manipolati sono spesso complessi (o strutturati) con componenti elementari o strutturate

Dettagli

Le Funzioni e la Ricorsione

Le Funzioni e la Ricorsione Aula V Dip. di Matematica G. Castelnuovo Univ. di Roma La Sapienza Le Funzioni e la Ricorsione Igor Melatti Slides disponibili (assieme ad altro materiale) in: http://www.dsi.uniroma1.it/ melatti/programmazione1.2007.2008.html

Dettagli

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol. Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Algoritmi e basi del C Struttura di un programma

Algoritmi e basi del C Struttura di un programma Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 17 Marzo 2015 Compitini Compitini di INFO: 24 Aprile 2015 4.15pm @ C.G.1 (Ed. 9) 21

Dettagli

acquisizione numero elementi del primo insieme e del secondo insieme, finché elprimoinsieme oppure elsecondoinsieme > EL_INS

acquisizione numero elementi del primo insieme e del secondo insieme, finché elprimoinsieme oppure elsecondoinsieme > EL_INS Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 3 Esercitazione: 20 ottobre 2004 Esercizi su array e applicazione delle regole di conversione di tipo Esercizi presenti:

Dettagli

Esercitazione 3. Oggi sono stati effettuati semplici esercizi in C utilizzando le seguenti istruzioni: if...else, while, printf, scanf

Esercitazione 3. Oggi sono stati effettuati semplici esercizi in C utilizzando le seguenti istruzioni: if...else, while, printf, scanf Riassunto Esercitazione 3 Oggi sono stati effettuati semplici esercizi in C utilizzando le seguenti istruzioni: if...else, while, printf, scanf Sono state introdotte anche le seguenti relazioni: uguaglianza:

Dettagli

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case

Dettagli

Esercizio 1. Esercizio 1 Soluzione

Esercizio 1. Esercizio 1 Soluzione Esercizio 1 I numeri complessi Data la notazione cartesiana di un numero complesso (in parte reale ed immaginaria), Realizzare una procedura che ne restituisca la notazione polare (tramite parametri passati

Dettagli

LIA. LIA - DEIS - Facoltà di Ingegneria - Università di Bologna Elementi di informatica L

LIA. LIA - DEIS - Facoltà di Ingegneria - Università di Bologna Elementi di informatica L LIA - DEIS - Facoltà di Ingegneria - Università di Bologna Elementi di informatica L Corso di laurea in Ingegneria Chimica - Anno Accademico 2007-2008 Funzioni Esercizio 3.3 Si scriva un programma in linguaggio

Dettagli

Esercizio 1: calcolo del massimo di una sequenza (versione 1)

Esercizio 1: calcolo del massimo di una sequenza (versione 1) Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 2 Esercitazione: 12 ottobre 2005 Primi esercizi in C Esercizio 1: calcolo del massimo di una sequenza (versione 1) Si legga

Dettagli

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano Scope delle variabili e passaggio parametri Danilo Ardagna Politecnico di Milano 1-4-2014 Introduzione! Con le funzioni è stato introdotto un meccanismo per definire dei piccoli programmi all interno di

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

FUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi:

FUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi: FUNZIONI RICORSIVE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento (chiamata) a se stessa. Esempio: Esempi di problemi ricorsivi: 1) Somma dei primi

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Elementi di C++ di base

Elementi di C++ di base Elementi di C++ di base Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 10 ottobre, 2001 Gino Perna Esempi di semplici programmi in C++ Il programma più semplice consiste

Dettagli

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Dettagli

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

Dettagli

Definizione di metodi in Java

Definizione di metodi in Java Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array 2 Esercizio 1 Creare un programma che legga da input un numero non noto a priori di interi (al più 10) terminati da 0.

Dettagli

Le strutture di controllo in C++

Le strutture di controllo in C++ Le strutture di controllo in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi di Napoli

Dettagli

Istruzioni Condizionali in C

Istruzioni Condizionali in C Concetti chiave Istruzioni Condizionali in C Tipi di Istruzioni Condizionali Espressioni Blocchi d istruzioni Istruzioni Condizionali: if-else Istruzioni Condizionali: switch-case Istruzione break Istruzioni

Dettagli

$QDOLVLGHOSURJUDPPDTXDGUDWR

$QDOLVLGHOSURJUDPPDTXDGUDWR $QDOLVLGHOSURJUDPPDTXDGUDWR /* */ calcolare l area del quadrato #include main(){ int lato, area; printf("lato "); scanf("%d", &lato); if(lato < 0) printf("errore nei dati \n"); else { area =

Dettagli

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C Tipi predefiniti e operatori Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 RICHIAMI char 8 bit Valori interi

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Dettagli

Tipi di dato primitivi

Tipi di dato primitivi Tipi di dato primitivi (oltre int) Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 2 1 Valori logici (il caso

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio C: le funzioni. Introduzione e sintassi ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012 Introduzione Spesso alcuni

Dettagli

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande / VERSIONE 1

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande / VERSIONE 1 Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande/ VERSIONE 1 1) L approccio con cui si studia un sistema focalizzandosi solo sul rapporto tra input e output si chiama

Dettagli

Introduzione ai puntatori in C Definizione

Introduzione ai puntatori in C Definizione Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il

Dettagli

Istruzioni di ciclo. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Istruzioni di ciclo. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto

Dettagli

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli -

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli - ESERCIZI DI PROGRAMMAZIONE - condizionali e cicli - Elementi di Informatica e Programmazione Università di Brescia 1 Esercizio 1: dal tema d esame ING-INF del 28 gennaio 2009 Si sviluppi un programma in

Dettagli

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA 28 Gennaio 1999 PROVA SCRITTA Esercizio 1 Un elaboratore rappresenta numeri interi in complemento a due su 8 bit e numeri reali in utilizzando un byte per la mantissa normalizzata e un byte per l esponente

Dettagli

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche Fondamenti di Informatica T-1 modulo 2 Laboratorio 04: stringhe 1 Stringhe In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche terminatore

Dettagli

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento lunedì, prima o dopo lezione 1 Le funzioni in C Le funzioni vengono utilizzate per 3 motivi: Riusabilità

Dettagli

PROGRAMMAZIONE: Le strutture di controllo

PROGRAMMAZIONE: Le strutture di controllo PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l

Dettagli

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

Dettagli

Esercizi di programmazione in linguaggio C - Costrutto iterazione

Esercizi di programmazione in linguaggio C - Costrutto iterazione Esercizi di programmazione in linguaggio C - Costrutto iterazione prof. Roberto uligni 1. [potenze1] Scrivere un programma che visualizzi il valore di tutte le prime n potenze di 2 con n richiesto all'utente

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio C: le funzioni. Introduzione e sintassi Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Introduzione e sintassi La presente dispensa

Dettagli

Espressione di chiamata di funzione

Espressione di chiamata di funzione Avvertenza Quanto segue NON è un libro, ma è una copia dei lucidi usati a lezione che NON sostituisce i libri di testo adottati e consigliati per l insegnamento di Informatica Generale. Questa copia è

Dettagli

ISTRUZIONI ISTRUZIONI

ISTRUZIONI ISTRUZIONI ISTRUZIONI Le istruzioni esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno del programma o del mondo circostante. Le strutture di controllo permettono di

Dettagli

Parte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1

Parte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1 Parte 2 Ricorsione - AA. 2012/13 [M.C.Escher Drawing hands, 1948] 2.1 Funzioni ricorsive Una funzione si dice ricorsiva se richiama se stessa, direttamente o indirettamente La ricorsione si dice diretta

Dettagli

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Domanda n. 1 Argomento: Rappresentazione dell'informazione Domanda: Il numero binario

Dettagli

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII. Tipi di dati fondamentali Tipi di dati fondamentali Linguaggi di Programmazione I Ferdinando Cicalese caratteri: char signed char unsigned char interi short int long interi unsigned short unsigned unsigned

Dettagli

Fondamenti di Informatica 1 Ing.Gestionale (A.A ) - docente Sandro Moriggi RECUPERO. cognome nome

Fondamenti di Informatica 1 Ing.Gestionale (A.A ) - docente Sandro Moriggi RECUPERO. cognome nome Compito 1 Segnare una sola delle risposte indicate; una risposta errata ha un punteggio = 0; una risposta mancante ha un punteggio = 0; più di 1 risposta (incluso modifica della risposta segnata): annullata

Dettagli

Programmazione II Compitino (Vers. A)

Programmazione II Compitino (Vers. A) Programmazione II Compitino (Vers. A) 16 gennaio 2009 Cognome Jekyll Nome Doctor Matricola 112233 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi al corpo del metodo

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono

Dettagli

Problema. Vettori e matrici. Vettori. Vettori

Problema. Vettori e matrici. Vettori. Vettori e matrici Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Problema Si vuole un programma che chieda 10 numeri dalla tastiera e li visualizzi dall ultimo al primo Soluzione attuale (con le

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione II Tatiana Zolo zolo@cs.unipr.it 1 IL PROGRAMMA C++ Istruzioni (espressioni terminate da ; ) istruzioni di dichiarazione (es. int x = 0;); istruzioni di assegnamento

Dettagli

Alcuni esercizi. 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli

Alcuni esercizi. 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Alcuni esercizi 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Esercizio 1 (valutazione in cortocircuito) int main() int a=5, b=5, c=5; if (a>0 (a=a+1) ) printf( %d, a); if (b>0

Dettagli

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

Strutture di Controllo

Strutture di Controllo Strutture di Controllo Informatica B Istruzioni condizionali #include int main() char c; printf("inserire il carattere maiuscolo: "); scanf("%c", &c); printf("la traduzione e' %c\n",c+32); return

Dettagli

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA 17/1/1997 PROVA SCRITTA

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA 17/1/1997 PROVA SCRITTA ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA 17/1/1997 PROVA SCRITTA 1. Mostrare come viene svolto il calcolo: 9.8-2.6 + (10 * 2 2 ) qualora l' elaboratore adotti per i numeri

Dettagli

Programmazione a moduli in C

Programmazione a moduli in C Funzioni Programmazione a moduli in C Politecnico di Milano Motivazioni Alcuni programmi possono essere molto, molto complessi E utile poter partizionare il lavoro di progettazione in sottolavori più semplici

Dettagli

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

Laboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:

Laboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice: Corso di Ingegneria Biomedica Corso di Ingegneria Elettronica Insegnamento di Informatica I a.a. 2007-08 Laboratorio 1 Durante le esercitazioni verra utilizzato il compilatore a riga di comando DJGPP,,

Dettagli

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Dettagli

Ottenere una modifica del parametro attuale

Ottenere una modifica del parametro attuale Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I puntatori Variabili e parametri Parametri formali

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto

Dettagli

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout

Dettagli

ESEMPIO: le variabili LETTURA/SCRITTURA DI VARIABILI. Specifica Leggere da tastiera un intero, un carattere, un float e un double. Stamparli a video.

ESEMPIO: le variabili LETTURA/SCRITTURA DI VARIABILI. Specifica Leggere da tastiera un intero, un carattere, un float e un double. Stamparli a video. ESEMPIO: le variabili LETTURA/SCRITTURA DI VARIABILI Specifica Leggere da tastiera un intero, un carattere, un float e un double. Stamparli a video. LETTURA/SCRITTURA DI VARIABILI Codice #include

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli