Laboratorio di Programmazione...

88
Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione Variabili, tipi primitivi e costrutti condizionali Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020

Transcript of Laboratorio di Programmazione...

Page 1: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Variabili, tipi primitivi e costrutti condizionali

Laboratorio di Programmazione I

Corso di Laurea in InformaticaA.A. 2019/2020

Page 2: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Argomenti del Corso

Ogni lezione consta di una spiegazione assistita da slide, eseguita da esercizi in classe

Introduzione all’ambiente LinuxIntroduzione al CTipi primitivi e costrutti condizionaliCostrutti iterativi ed arrayFunzioni, stack e visibilità variabiliPuntatori e memoriaDebuggingTipi di dati utenteListe concatenate e librerieRicorsione

Page 3: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Outline

1 VariabiliTipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

2 Printf e scanf

3 Comando condizionale

4 Piattaforma di autovalutazione

Page 4: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Dichiarazioni di variabili

La sintassi da utilizzare per dichiarare una variabile laseguente:

tipo nome_variabile [=valore iniziale];

tipo della variabile;nome della variabile: i nomi possono essere composti dalettere e cifre, ma devono sempre cominciare con unalettera. Ricordatevi le regole stilistiche viste la scorsa volta;si può definire un valore iniziale della variabile. Èfortemente consigliato inizializzare le variabili (in alcunicasi di default hanno un valore casuale).

Page 5: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Dichiarazioni di variabili

La sintassi da utilizzare per dichiarare una variabile laseguente:

tipo nome_variabile [=valore iniziale];

tipo della variabile;

nome della variabile: i nomi possono essere composti dalettere e cifre, ma devono sempre cominciare con unalettera. Ricordatevi le regole stilistiche viste la scorsa volta;si può definire un valore iniziale della variabile. Èfortemente consigliato inizializzare le variabili (in alcunicasi di default hanno un valore casuale).

Page 6: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Dichiarazioni di variabili

La sintassi da utilizzare per dichiarare una variabile laseguente:

tipo nome_variabile [=valore iniziale];

tipo della variabile;nome della variabile: i nomi possono essere composti dalettere e cifre, ma devono sempre cominciare con unalettera. Ricordatevi le regole stilistiche viste la scorsa volta;

si può definire un valore iniziale della variabile. Èfortemente consigliato inizializzare le variabili (in alcunicasi di default hanno un valore casuale).

Page 7: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Dichiarazioni di variabili

La sintassi da utilizzare per dichiarare una variabile laseguente:

tipo nome_variabile [=valore iniziale];

tipo della variabile;nome della variabile: i nomi possono essere composti dalettere e cifre, ma devono sempre cominciare con unalettera. Ricordatevi le regole stilistiche viste la scorsa volta;si può definire un valore iniziale della variabile. Èfortemente consigliato inizializzare le variabili (in alcunicasi di default hanno un valore casuale).

Page 8: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Sommario

1 VariabiliTipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

2 Printf e scanf

3 Comando condizionale

4 Piattaforma di autovalutazione

Page 9: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: int (1)

int: un intero rappresentabile sulla macchina (segnaposto %d)l’occupazione in memoria e di conseguenza l’intervallo dirappresentazione del tipo int dipende dalla macchina sucui viene compilato il programma;

la funzione predefinita sizeof() fornisce l’occupazione inbyte di un qualsiasi tipo o variabile C. Ad esempio selanciamo sulle macchine del laboratorio:

# inc lude < s t d i o . h>i n t main ( ){

p r i n t f ( "%d \ n " , s i z e o f ( i n t ) ) ;}

Otteniamo in output:4

Page 10: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: int (1)

int: un intero rappresentabile sulla macchina (segnaposto %d)l’occupazione in memoria e di conseguenza l’intervallo dirappresentazione del tipo int dipende dalla macchina sucui viene compilato il programma;la funzione predefinita sizeof() fornisce l’occupazione inbyte di un qualsiasi tipo o variabile C. Ad esempio selanciamo sulle macchine del laboratorio:

# inc lude < s t d i o . h>i n t main ( ){

p r i n t f ( "%d \ n " , s i z e o f ( i n t ) ) ;}

Otteniamo in output:4

Page 11: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: int (1)

int: un intero rappresentabile sulla macchina (segnaposto %d)l’occupazione in memoria e di conseguenza l’intervallo dirappresentazione del tipo int dipende dalla macchina sucui viene compilato il programma;la funzione predefinita sizeof() fornisce l’occupazione inbyte di un qualsiasi tipo o variabile C. Ad esempio selanciamo sulle macchine del laboratorio:

# inc lude < s t d i o . h>i n t main ( ){

p r i n t f ( "%d \ n " , s i z e o f ( i n t ) ) ;}

Otteniamo in output:4

Page 12: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: int (2)

Maggiore è il numero di byte per un tipo, piu’ grande è ilmassimo valore assoluto rappresentabile.Gli attributi short e long indicano interi che occupano undiverso numero di byte.

sizeof min maxshort int 2 −32768 32767int 4 −2147483648 2147483647long int 8 −9223372036854775808 9223372036854775807

Se i valori da rappresentare sono positivi, l’attributo unsignedpermette di usare tutti i byte per il numero positivo

sizeof min maxunsigned short 2 0 65535unsigned int 4 0 4294967295unsigned long 8 0 18446744073709551615

Page 13: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: int (2)

Maggiore è il numero di byte per un tipo, piu’ grande è ilmassimo valore assoluto rappresentabile.Gli attributi short e long indicano interi che occupano undiverso numero di byte.

sizeof min maxshort int 2 −32768 32767int 4 −2147483648 2147483647long int 8 −9223372036854775808 9223372036854775807

Se i valori da rappresentare sono positivi, l’attributo unsignedpermette di usare tutti i byte per il numero positivo

sizeof min maxunsigned short 2 0 65535unsigned int 4 0 4294967295unsigned long 8 0 18446744073709551615

Page 14: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: int (2)

Maggiore è il numero di byte per un tipo, piu’ grande è ilmassimo valore assoluto rappresentabile.Gli attributi short e long indicano interi che occupano undiverso numero di byte.

sizeof min maxshort int 2 −32768 32767int 4 −2147483648 2147483647long int 8 −9223372036854775808 9223372036854775807

Se i valori da rappresentare sono positivi, l’attributo unsignedpermette di usare tutti i byte per il numero positivo

sizeof min maxunsigned short 2 0 65535unsigned int 4 0 4294967295unsigned long 8 0 18446744073709551615

Page 15: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: int (2)

Maggiore è il numero di byte per un tipo, piu’ grande è ilmassimo valore assoluto rappresentabile.Gli attributi short e long indicano interi che occupano undiverso numero di byte.

sizeof min maxshort int 2 −32768 32767int 4 −2147483648 2147483647long int 8 −9223372036854775808 9223372036854775807

Se i valori da rappresentare sono positivi, l’attributo unsignedpermette di usare tutti i byte per il numero positivo

sizeof min maxunsigned short 2 0 65535unsigned int 4 0 4294967295unsigned long 8 0 18446744073709551615

Page 16: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: char

char: un singolo byte, in grado di contenere un carattere(codifica ASCII). Segnaposto %c.

char a= ’ a ’ ; / / i c a r a t t e r i s i ind icano t r a a p i c i

i caratteri sono visti in C come interi. Infatti:

i n t a= ’ a ’ ;p r i n t f ( "%c \ n " ,a ) ;p r i n t f ( "%d \ n " ,a ) ;

Stampa in output:a97

97 corrisponde alla codifica ASCII di a

Page 17: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: char

char: un singolo byte, in grado di contenere un carattere(codifica ASCII). Segnaposto %c.

char a= ’ a ’ ; / / i c a r a t t e r i s i ind icano t r a a p i c i

i caratteri sono visti in C come interi. Infatti:

i n t a= ’ a ’ ;p r i n t f ( "%c \ n " ,a ) ;p r i n t f ( "%d \ n " ,a ) ;

Stampa in output:a97

97 corrisponde alla codifica ASCII di a

Page 18: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: char

char: un singolo byte, in grado di contenere un carattere(codifica ASCII). Segnaposto %c.

char a= ’ a ’ ; / / i c a r a t t e r i s i ind icano t r a a p i c i

i caratteri sono visti in C come interi. Infatti:

i n t a= ’ a ’ ;p r i n t f ( "%c \ n " ,a ) ;p r i n t f ( "%d \ n " ,a ) ;

Stampa in output:a97

97 corrisponde alla codifica ASCII di a

Page 19: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: char (2)

Alcune costanti carattere e i relativi valori interi:

Costante carattere ’a’ ’b’ ... ’z’Valore intero 97 98 ... 122Costante carattere ’A’ ’B’ ... ’Z’Valore intero 65 66 ... 90Costante carattere ’0’ ’1’ ... ’9’Valore intero 48 49 ... 57

Non c’è alcuna relazione tra una costante carattere cifra ela cifra stessa: ’2’ non ha codice 2.Tutti i codici delle cifre, delle minuscole e delle maiuscolesono consecutivi.Usatelo! ’5’-’0’=5, se la variabile ch contiene una costantecarattere cifra ch −′ 0′ ci dice a che cifra corrisponde.

Page 20: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: numeri reali

float, double: sono i tipi utilizzati per rappresentare numerireali (precisione singola o doppia)

f l o a t x =123.34;double y=100.1e5 ; / / anche notazione s c i e n t i f i c a

segnaposto %f e %lf;dimensioni differenti: double viene tipicamenterappresentato con 8 byte, float con 4;è possibile utilizzare l’attributo long per variabili di tipodouble.

Page 21: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Tipi di dato primitivi: numeri reali

float, double: sono i tipi utilizzati per rappresentare numerireali (precisione singola o doppia)

f l o a t x =123.34;double y=100.1e5 ; / / anche notazione s c i e n t i f i c a

segnaposto %f e %lf;dimensioni differenti: double viene tipicamenterappresentato con 8 byte, float con 4;è possibile utilizzare l’attributo long per variabili di tipodouble.

Page 22: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Costanti

L’attributo const puo’ essere applicato alla dichiarazione diqualasiasi variabile, con l’effetto di affermare che il suo valorenon cambiera’:

const double p i =3.141592;const i n t cinque =5;

I tentativi di modifica a costanti sono tipicamente segnalati dalcompilatore con un errore.

Differenza tra #define e const:#define é una direttiva del preprocessore e sostituitaall’interno del codice prima della compilazione;una variabile definita con l’attributo const vienemaneggiata dal compilatore: ha un tipo e un indirizzo.

Page 23: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Costanti

L’attributo const puo’ essere applicato alla dichiarazione diqualasiasi variabile, con l’effetto di affermare che il suo valorenon cambiera’:

const double p i =3.141592;const i n t cinque =5;

I tentativi di modifica a costanti sono tipicamente segnalati dalcompilatore con un errore.

Differenza tra #define e const:#define é una direttiva del preprocessore e sostituitaall’interno del codice prima della compilazione;una variabile definita con l’attributo const vienemaneggiata dal compilatore: ha un tipo e un indirizzo.

Page 24: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Costanti

L’attributo const puo’ essere applicato alla dichiarazione diqualasiasi variabile, con l’effetto di affermare che il suo valorenon cambiera’:

const double p i =3.141592;const i n t cinque =5;

I tentativi di modifica a costanti sono tipicamente segnalati dalcompilatore con un errore.

Differenza tra #define e const:#define é una direttiva del preprocessore e sostituitaall’interno del codice prima della compilazione;una variabile definita con l’attributo const vienemaneggiata dal compilatore: ha un tipo e un indirizzo.

Page 25: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Sommario

1 VariabiliTipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

2 Printf e scanf

3 Comando condizionale

4 Piattaforma di autovalutazione

Page 26: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori aritmetici

Nel C abbiamo essenzialmente i seguenti operatori aritmetici:

+ − ∗ / %

che rappresentano rispettivamente le usuali operazioni diaddizione, sottrazione, moltiplicazione, divisione e modulo.Vengono utilizzati per definire, trasformare il valore delle vostrevariabili.

Ricordiamo che in matematica il valore di a modulo b e’ datodal resto della divisione di a per b: ad esempio 5%3 = 2.L’operatore modulo non puo’ essere applicato a variabili floate double.

Page 27: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori aritmetici

Nel C abbiamo essenzialmente i seguenti operatori aritmetici:

+ − ∗ / %

che rappresentano rispettivamente le usuali operazioni diaddizione, sottrazione, moltiplicazione, divisione e modulo.Vengono utilizzati per definire, trasformare il valore delle vostrevariabili.

Ricordiamo che in matematica il valore di a modulo b e’ datodal resto della divisione di a per b: ad esempio 5%3 = 2.L’operatore modulo non puo’ essere applicato a variabili floate double.

Page 28: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori aritmetici(2)

Gli operatori possiedono regole di precedenze e associativita’che determinano come avviene la valutazione delleespressioni.

Cosi’ come avviene nell’aritmetica tradizionale, + e − hanno lostesso grado di precedenza, inferiore a quello di ∗, / e %.

Page 29: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori aritmetici(2)

Gli operatori possiedono regole di precedenze e associativita’che determinano come avviene la valutazione delleespressioni.

Cosi’ come avviene nell’aritmetica tradizionale, + e − hanno lostesso grado di precedenza, inferiore a quello di ∗, / e %.

Page 30: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori aritmetici(3)

Altri operatori:operatori contratti: permettono di effettuare un’operazionesu una variabile e assegnarne il risultato alla stessa:

var op = expr equivale a var = var op expr

ad esempio: j*=i+2 ⇔ j=j*(i+2)

incremento/decremento unitario: operatori ++ e -. Sonoutilizzabili sia come prefisso (ossia prima della variabile:++n) o suffisso (dopo la variabile: n++). L’effetto è quello diincrementare n ma:

++n esegue l’incremento prima di usare il valore n:x=++n equivale a n=n+1;x=n;n++ lo fa dopo l’impiego del valore:x=n++ equivale a x=n;n=n+1

Page 31: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori aritmetici(3)

Altri operatori:operatori contratti: permettono di effettuare un’operazionesu una variabile e assegnarne il risultato alla stessa:

var op = expr equivale a var = var op exprad esempio: j*=i+2 ⇔ j=j*(i+2)

incremento/decremento unitario: operatori ++ e -. Sonoutilizzabili sia come prefisso (ossia prima della variabile:++n) o suffisso (dopo la variabile: n++). L’effetto è quello diincrementare n ma:

++n esegue l’incremento prima di usare il valore n:x=++n equivale a n=n+1;x=n;n++ lo fa dopo l’impiego del valore:x=n++ equivale a x=n;n=n+1

Page 32: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori aritmetici(3)

Altri operatori:operatori contratti: permettono di effettuare un’operazionesu una variabile e assegnarne il risultato alla stessa:

var op = expr equivale a var = var op exprad esempio: j*=i+2 ⇔ j=j*(i+2)

incremento/decremento unitario: operatori ++ e -. Sonoutilizzabili sia come prefisso (ossia prima della variabile:++n) o suffisso (dopo la variabile: n++). L’effetto è quello diincrementare n ma:

++n esegue l’incremento prima di usare il valore n:x=++n equivale a n=n+1;x=n;n++ lo fa dopo l’impiego del valore:x=n++ equivale a x=n;n=n+1

Page 33: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori aritmetici(3)

Altri operatori:operatori contratti: permettono di effettuare un’operazionesu una variabile e assegnarne il risultato alla stessa:

var op = expr equivale a var = var op exprad esempio: j*=i+2 ⇔ j=j*(i+2)

incremento/decremento unitario: operatori ++ e -. Sonoutilizzabili sia come prefisso (ossia prima della variabile:++n) o suffisso (dopo la variabile: n++). L’effetto è quello diincrementare n ma:

++n esegue l’incremento prima di usare il valore n:x=++n equivale a n=n+1;x=n;

n++ lo fa dopo l’impiego del valore:x=n++ equivale a x=n;n=n+1

Page 34: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori aritmetici(3)

Altri operatori:operatori contratti: permettono di effettuare un’operazionesu una variabile e assegnarne il risultato alla stessa:

var op = expr equivale a var = var op exprad esempio: j*=i+2 ⇔ j=j*(i+2)

incremento/decremento unitario: operatori ++ e -. Sonoutilizzabili sia come prefisso (ossia prima della variabile:++n) o suffisso (dopo la variabile: n++). L’effetto è quello diincrementare n ma:

++n esegue l’incremento prima di usare il valore n:x=++n equivale a n=n+1;x=n;n++ lo fa dopo l’impiego del valore:x=n++ equivale a x=n;n=n+1

Page 35: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Sommario

1 VariabiliTipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

2 Printf e scanf

3 Comando condizionale

4 Piattaforma di autovalutazione

Page 36: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Conversioni di tipo (1)

Le espressioni aritmetiche hanno un valore ed un tipo dettatoda quello delle variabili in gioco.

Quando un’espressione del tipo x op y coinvolge operandi ditipo diverso, avviene una conversione implicita secondo leseguenti regole:

1 ogni valore di tipo char o short viene convertito in int2 se l’espressione è ancora eterogenea si converte

l’operando di tipo inferiore facendolo divenire di tiposuperiore secondo la seguente gerarchia:int→ long→ float→ double→ long double

EsempioSe x ha tipo int e y ha tipo float, il risultato dell’espressionex+y viene automaticamente convertito a float

Page 37: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Conversioni di tipo (1)

Le espressioni aritmetiche hanno un valore ed un tipo dettatoda quello delle variabili in gioco.Quando un’espressione del tipo x op y coinvolge operandi ditipo diverso, avviene una conversione implicita secondo leseguenti regole:

1 ogni valore di tipo char o short viene convertito in int2 se l’espressione è ancora eterogenea si converte

l’operando di tipo inferiore facendolo divenire di tiposuperiore secondo la seguente gerarchia:int→ long→ float→ double→ long double

EsempioSe x ha tipo int e y ha tipo float, il risultato dell’espressionex+y viene automaticamente convertito a float

Page 38: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Conversioni di tipo (1)

Le espressioni aritmetiche hanno un valore ed un tipo dettatoda quello delle variabili in gioco.Quando un’espressione del tipo x op y coinvolge operandi ditipo diverso, avviene una conversione implicita secondo leseguenti regole:

1 ogni valore di tipo char o short viene convertito in int

2 se l’espressione è ancora eterogenea si convertel’operando di tipo inferiore facendolo divenire di tiposuperiore secondo la seguente gerarchia:int→ long→ float→ double→ long double

EsempioSe x ha tipo int e y ha tipo float, il risultato dell’espressionex+y viene automaticamente convertito a float

Page 39: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Conversioni di tipo (1)

Le espressioni aritmetiche hanno un valore ed un tipo dettatoda quello delle variabili in gioco.Quando un’espressione del tipo x op y coinvolge operandi ditipo diverso, avviene una conversione implicita secondo leseguenti regole:

1 ogni valore di tipo char o short viene convertito in int2 se l’espressione è ancora eterogenea si converte

l’operando di tipo inferiore facendolo divenire di tiposuperiore secondo la seguente gerarchia:int→ long→ float→ double→ long double

EsempioSe x ha tipo int e y ha tipo float, il risultato dell’espressionex+y viene automaticamente convertito a float

Page 40: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Conversioni di tipo (1)

Le espressioni aritmetiche hanno un valore ed un tipo dettatoda quello delle variabili in gioco.Quando un’espressione del tipo x op y coinvolge operandi ditipo diverso, avviene una conversione implicita secondo leseguenti regole:

1 ogni valore di tipo char o short viene convertito in int2 se l’espressione è ancora eterogenea si converte

l’operando di tipo inferiore facendolo divenire di tiposuperiore secondo la seguente gerarchia:int→ long→ float→ double→ long double

EsempioSe x ha tipo int e y ha tipo float, il risultato dell’espressionex+y viene automaticamente convertito a float

Page 41: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Conversioni di tipo (2)

Conversione nell’ assegnamento: si ha in x = exp quando itipi di x e exp non coincidono.

La conversione avviene sempre a favore del tipo dellavariabile a sinistra:

se si tratta di una promozione non si ha perdita diinformazionese si ha una retrocessione si può avere perdita diinformazione

Esempioint i;float x = 2.3, y = 4.5;i = x + y;printf("%d", i); /* stampa 6 */

Se la conversione non è possibile si ha errore.

Page 42: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Conversioni di tipo (2)

Conversione nell’ assegnamento: si ha in x = exp quando itipi di x e exp non coincidono.

La conversione avviene sempre a favore del tipo dellavariabile a sinistra:

se si tratta di una promozione non si ha perdita diinformazionese si ha una retrocessione si può avere perdita diinformazione

Esempioint i;float x = 2.3, y = 4.5;i = x + y;printf("%d", i); /* stampa 6 */

Se la conversione non è possibile si ha errore.

Page 43: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Conversioni di tipo (2)

Conversione nell’ assegnamento: si ha in x = exp quando itipi di x e exp non coincidono.

La conversione avviene sempre a favore del tipo dellavariabile a sinistra:

se si tratta di una promozione non si ha perdita diinformazione

se si ha una retrocessione si può avere perdita diinformazione

Esempioint i;float x = 2.3, y = 4.5;i = x + y;printf("%d", i); /* stampa 6 */

Se la conversione non è possibile si ha errore.

Page 44: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Conversioni di tipo (2)

Conversione nell’ assegnamento: si ha in x = exp quando itipi di x e exp non coincidono.

La conversione avviene sempre a favore del tipo dellavariabile a sinistra:

se si tratta di una promozione non si ha perdita diinformazionese si ha una retrocessione si può avere perdita diinformazione

Esempioint i;float x = 2.3, y = 4.5;i = x + y;printf("%d", i); /* stampa 6 */

Se la conversione non è possibile si ha errore.

Page 45: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Conversioni di tipo (2)

Conversione nell’ assegnamento: si ha in x = exp quando itipi di x e exp non coincidono.

La conversione avviene sempre a favore del tipo dellavariabile a sinistra:

se si tratta di una promozione non si ha perdita diinformazionese si ha una retrocessione si può avere perdita diinformazione

Esempioint i;float x = 2.3, y = 4.5;i = x + y;printf("%d", i); /* stampa 6 */

Se la conversione non è possibile si ha errore.

Page 46: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Casting

Oltre alle conversioni implicite, sono possibili anche conversioniesplicite dette cast secondo la sintassi:

(tipo) espressione;

Esempio:

i n t somma, n ;f l o a t media ;. . .media = somma/ n ; /∗ d i v i s i o n e t r a i n t e r i ∗ /media = ( f l o a t )somma/ n ; /∗ d i v i s i o n e t r a r e a l i ∗ /

L’operatore di cast ha precedenza piu’ alta degli operatori binarie associa da destra a sinistra. Dunque (float)somma/nequivale a ((float)somma)/n

Page 47: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Casting

Oltre alle conversioni implicite, sono possibili anche conversioniesplicite dette cast secondo la sintassi:

(tipo) espressione;

Esempio:

i n t somma, n ;f l o a t media ;. . .media = somma/ n ; /∗ d i v i s i o n e t r a i n t e r i ∗ /media = ( f l o a t )somma/ n ; /∗ d i v i s i o n e t r a r e a l i ∗ /

L’operatore di cast ha precedenza piu’ alta degli operatori binarie associa da destra a sinistra. Dunque (float)somma/nequivale a ((float)somma)/n

Page 48: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Casting

Oltre alle conversioni implicite, sono possibili anche conversioniesplicite dette cast secondo la sintassi:

(tipo) espressione;

Esempio:

i n t somma, n ;f l o a t media ;. . .media = somma/ n ; /∗ d i v i s i o n e t r a i n t e r i ∗ /media = ( f l o a t )somma/ n ; /∗ d i v i s i o n e t r a r e a l i ∗ /

L’operatore di cast ha precedenza piu’ alta degli operatori binarie associa da destra a sinistra. Dunque (float)somma/nequivale a ((float)somma)/n

Page 49: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Sommario

1 VariabiliTipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

2 Printf e scanf

3 Comando condizionale

4 Piattaforma di autovalutazione

Page 50: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Booleani ed operatori

In C non esiste un tipo Booleano. Si usa il tipo int:0 rappresenta FALSO;1 (o qualsiasi valore diverso da zero) rappresenta VERO.

Operatori logici:!: NOT (operatore unario). Esempio: !a;&&: AND (operatore binario). Esempio: a && b;||: OR (operatore binario). Esempio: a || b;

Restituiscono un valore intero pari a 0 o 1 a seconda del valore(falso/vero) dell’espressione.Altri lavorano sui singoli bit: ad esempio operatori di shift («, »),AND (&), OR (|), XOR (ˆ) ...

Page 51: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Booleani ed operatori

In C non esiste un tipo Booleano. Si usa il tipo int:0 rappresenta FALSO;1 (o qualsiasi valore diverso da zero) rappresenta VERO.

Operatori logici:!: NOT (operatore unario). Esempio: !a;&&: AND (operatore binario). Esempio: a && b;||: OR (operatore binario). Esempio: a || b;

Restituiscono un valore intero pari a 0 o 1 a seconda del valore(falso/vero) dell’espressione.Altri lavorano sui singoli bit: ad esempio operatori di shift («, »),AND (&), OR (|), XOR (ˆ) ...

Page 52: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori relazionali e di uguaglianza

Gli operatori relazionali sono:

< > <= >=

sono tutti binari: hanno come operandi due espressioni erestituiscono un risultato di tipo int che puo’ essere 0 o 1.

Ad esempio l’espressione relazione a<b:se a e’ minore di b assume valore 1 (vero);altrimenti assume valore 0 (falso).

Abbiamo poi gli operatori di ugualianza == e ! =, semprebinari, che assumono valore 1 (vero) se i due operandi sonorispettivamente uguali o diversi. 0 in caso contrario.

Page 53: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori relazionali e di uguaglianza

Gli operatori relazionali sono:

< > <= >=

sono tutti binari: hanno come operandi due espressioni erestituiscono un risultato di tipo int che puo’ essere 0 o 1.Ad esempio l’espressione relazione a<b:

se a e’ minore di b assume valore 1 (vero);altrimenti assume valore 0 (falso).

Abbiamo poi gli operatori di ugualianza == e ! =, semprebinari, che assumono valore 1 (vero) se i due operandi sonorispettivamente uguali o diversi. 0 in caso contrario.

Page 54: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Tipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

Operatori relazionali e di uguaglianza

Gli operatori relazionali sono:

< > <= >=

sono tutti binari: hanno come operandi due espressioni erestituiscono un risultato di tipo int che puo’ essere 0 o 1.Ad esempio l’espressione relazione a<b:

se a e’ minore di b assume valore 1 (vero);altrimenti assume valore 0 (falso).

Abbiamo poi gli operatori di ugualianza == e ! =, semprebinari, che assumono valore 1 (vero) se i due operandi sonorispettivamente uguali o diversi. 0 in caso contrario.

Page 55: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Outline

1 VariabiliTipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

2 Printf e scanf

3 Comando condizionale

4 Piattaforma di autovalutazione

Page 56: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

La libreria stdio.h

Nel C le funzionalita’ di input/output sono demandate a librerieesterne. Ad esempio la libreria stdio.h implementa unsemplice modello di input/output di dati testuali.

Le funzioni printf e scanf sono in essa definite: la primaviene utilizzata per l’output, la seconda per l’input. La lettera falla fine dei nomi delle due funzioni sta per "formatted".

Sia printf() che scanf() ricevono una stringa di controllo,che puo’ contenere le specifiche di conversione indicate con ilsimbolo % (segnaposto), e una serie di parametri, che possonoessere ad esempio le variabili da stampare o leggere.

Page 57: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

La libreria stdio.h

Nel C le funzionalita’ di input/output sono demandate a librerieesterne. Ad esempio la libreria stdio.h implementa unsemplice modello di input/output di dati testuali.

Le funzioni printf e scanf sono in essa definite: la primaviene utilizzata per l’output, la seconda per l’input. La lettera falla fine dei nomi delle due funzioni sta per "formatted".

Sia printf() che scanf() ricevono una stringa di controllo,che puo’ contenere le specifiche di conversione indicate con ilsimbolo % (segnaposto), e una serie di parametri, che possonoessere ad esempio le variabili da stampare o leggere.

Page 58: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

La libreria stdio.h

Nel C le funzionalita’ di input/output sono demandate a librerieesterne. Ad esempio la libreria stdio.h implementa unsemplice modello di input/output di dati testuali.

Le funzioni printf e scanf sono in essa definite: la primaviene utilizzata per l’output, la seconda per l’input. La lettera falla fine dei nomi delle due funzioni sta per "formatted".

Sia printf() che scanf() ricevono una stringa di controllo,che puo’ contenere le specifiche di conversione indicate con ilsimbolo % (segnaposto), e una serie di parametri, che possonoessere ad esempio le variabili da stampare o leggere.

Page 59: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

printf

Per stampare delle variabili di un determinato tipo dobbiamoutilizzare i segnaposto relativi:

interi: %d, %u (unsigned). Si antepone h per short e l perlong;reali: %f, %e (notazione scientifica), %g la piu’ breve tranotazione standard e scientifica. Per i double non siantepone nulla, per i long double si antepone L;caratteri: %c;stringhe: %s (le vedremo piu’ avanti).

Page 60: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

printf(2)

Altri flag, vanno messi subito dopo il %:-: allinea a sinistra

un numero intero n: specifica l’ampiezza minima delcampo. Esempio:

p r i n t f ( "%c%3c%5c \ n " , ’A ’ , ’B ’ , ’C ’ ) ;Stampa: A B C

un parametro .d: per i numeri reali specifica il numero dicifre decimali d (con arrotondamento). Esempio:

p r i n t f ( " %.3 f \ n " ,123.4557454) ;

Stampa: 123.456

Page 61: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

printf(2)

Altri flag, vanno messi subito dopo il %:-: allinea a sinistraun numero intero n: specifica l’ampiezza minima delcampo. Esempio:

p r i n t f ( "%c%3c%5c \ n " , ’A ’ , ’B ’ , ’C ’ ) ;Stampa: A B C

un parametro .d: per i numeri reali specifica il numero dicifre decimali d (con arrotondamento). Esempio:

p r i n t f ( " %.3 f \ n " ,123.4557454) ;

Stampa: 123.456

Page 62: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

printf(2)

Altri flag, vanno messi subito dopo il %:-: allinea a sinistraun numero intero n: specifica l’ampiezza minima delcampo. Esempio:

p r i n t f ( "%c%3c%5c \ n " , ’A ’ , ’B ’ , ’C ’ ) ;Stampa: A B C

un parametro .d: per i numeri reali specifica il numero dicifre decimali d (con arrotondamento). Esempio:

p r i n t f ( " %.3 f \ n " ,123.4557454) ;

Stampa: 123.456

Page 63: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

scanf

La funzione scanf e’ analoga alla printf ma viene utilizzataper la lettura. Anche in questo caso abbiamo una stringa dicontrollo, mentre gli altri parametri sono gli indirizzi dellevariabili in cui saranno memorizzati i valori letti.

Ad esempio:

scanf ( "%d " ,&x ) ;

legge un intero e lo memorizza il valore all’indirizzo di x,indicato con la notazione &x.

Gli specificatori di formato sono quelli visti con la printf,tranne che per i reali:

double: si antepone l;long double: si antepone L.

Page 64: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

scanf

La funzione scanf e’ analoga alla printf ma viene utilizzataper la lettura. Anche in questo caso abbiamo una stringa dicontrollo, mentre gli altri parametri sono gli indirizzi dellevariabili in cui saranno memorizzati i valori letti.

Ad esempio:

scanf ( "%d " ,&x ) ;

legge un intero e lo memorizza il valore all’indirizzo di x,indicato con la notazione &x.

Gli specificatori di formato sono quelli visti con la printf,tranne che per i reali:

double: si antepone l;long double: si antepone L.

Page 65: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

scanf

La funzione scanf e’ analoga alla printf ma viene utilizzataper la lettura. Anche in questo caso abbiamo una stringa dicontrollo, mentre gli altri parametri sono gli indirizzi dellevariabili in cui saranno memorizzati i valori letti.

Ad esempio:

scanf ( "%d " ,&x ) ;

legge un intero e lo memorizza il valore all’indirizzo di x,indicato con la notazione &x.

Gli specificatori di formato sono quelli visti con la printf,tranne che per i reali:

double: si antepone l;long double: si antepone L.

Page 66: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Outline

1 VariabiliTipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

2 Printf e scanf

3 Comando condizionale

4 Piattaforma di autovalutazione

Page 67: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Comando condizionale

Le istruzioni di un programma vengono normalmente eseguite in sequenza,ma la maggior parte dei programmi richiede una modifica al normale flussosequenziale del controllo.

Le istruzioni if e if-else ci permettono ad esempio di scegliere tra azionialternative. Sintassi:

i f ( espressione ) {blocco1

}e lse {

blocco2}

espressione e’ un’ espressione booleana. Se vera vengono eseguite leistruzioni in blocco1 altrimenti vengono eseguite le istruzioni in blocco2. Ilramo else e’ opzionale.

Page 68: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Comando condizionale

Le istruzioni di un programma vengono normalmente eseguite in sequenza,ma la maggior parte dei programmi richiede una modifica al normale flussosequenziale del controllo.

Le istruzioni if e if-else ci permettono ad esempio di scegliere tra azionialternative. Sintassi:

i f ( espressione ) {blocco1

}e lse {

blocco2}

espressione e’ un’ espressione booleana. Se vera vengono eseguite leistruzioni in blocco1 altrimenti vengono eseguite le istruzioni in blocco2. Ilramo else e’ opzionale.

Page 69: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Comando condizionale(2)Esempio: si acquisisca l’eta’ da tastiera e si stabilisca se l’utente siamaggiorenne o meno.# inc lude < s t d i o . h>i n t main ( vo id ){

i n t eta ;p r i n t f ( " I n s e r i s c i l a tua eta ’ i n anni : " ) ;scanf ( "%d " ,& eta ) ;i f ( eta >=18)

p r i n t f ( " Sei maggiorenne \ n " ) ;e lse

p r i n t f ( " Sei minorenne \ n " ) ;r e t u r n 0 ;

}

NOTE:ricordate sempre l’indentazione;se i rami dell’if sono composti da una sola istruzione, potete noninserire le parentesi graffe.

Page 70: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Comando condizionale(2)Esempio: si acquisisca l’eta’ da tastiera e si stabilisca se l’utente siamaggiorenne o meno.# inc lude < s t d i o . h>i n t main ( vo id ){

i n t eta ;p r i n t f ( " I n s e r i s c i l a tua eta ’ i n anni : " ) ;scanf ( "%d " ,& eta ) ;i f ( eta >=18)

p r i n t f ( " Sei maggiorenne \ n " ) ;e lse

p r i n t f ( " Sei minorenne \ n " ) ;r e t u r n 0 ;

}

NOTE:ricordate sempre l’indentazione;se i rami dell’if sono composti da una sola istruzione, potete noninserire le parentesi graffe.

Page 71: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Switch

L’istruzione switch puo’ essere usata per realizzare una selezione a piu’ vie.

Sintassi:

swi tch ( espressione ) {case valore_1 : i s t r u z i o n i _ 1

break ;. . .case valore_n : i s t r u z i o n i _ n

break ;d e f a u l t : i s t r u z i o n i _ d e f a u l t

}

Page 72: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Switch

L’istruzione switch puo’ essere usata per realizzare una selezione a piu’ vie.

Sintassi:

swi tch ( espressione ) {case valore_1 : i s t r u z i o n i _ 1

break ;. . .case valore_n : i s t r u z i o n i _ n

break ;d e f a u l t : i s t r u z i o n i _ d e f a u l t

}

Page 73: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Switch

L’istruzione switch puo’ essere usata per realizzare una selezione a piu’ vie.

Sintassi:

swi tch ( espressione ) {case valore_1 : i s t r u z i o n i _ 1

break ;. . .case valore_n : i s t r u z i o n i _ n

break ;d e f a u l t : i s t r u z i o n i _ d e f a u l t

}

Page 74: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Switch(2)

Semantica:1 viene valutata espressione (deve restituire un intero) e confrontata

con i valori contenuti nelle varie etichette (che devono essere costanti);2 quando viene raggiunta un’etichetta uguale all’espressione esegue tutti

i comandi che seguono (per interrompere tale esecuzione si usa ilcomando break);

3 se nessuna etichetta e’ uguale al valore dell’espressione si esegue ilramo default se definito (e’opzionale).

Page 75: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Switch(3)

Esempio:

i n t g iorno ;. . .sw i tch ( g iorno ) {

case 1: p r i n t f ( " Lunedi \ n " ) ;break ;

case 2: p r i n t f ( " Martedi \ n " ) ;break ;

case 3: p r i n t f ( " Mercoledi \ n " ) ;break ;

case 4: p r i n t f ( " Giovedi \ n " ) ;break ;

case 5: p r i n t f ( " Venerdi \ n " ) ;break ;

d e f a u l t : p r i n t f ( "Week end \ n " ) ;}

Page 76: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Outline

1 VariabiliTipi di dato primitiviOperatori aritmeticiConversione tra tipi di datoBooleani

2 Printf e scanf

3 Comando condizionale

4 Piattaforma di autovalutazione

Page 77: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Piattaforma autovalutazione

http://prl1920a.dijkstra.di.unipi.it

Page 78: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Registrazione

Page 79: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Registrazione

inserite i vostri dati;

usate un Username nella forma "cognome.nome.corso"ad esempio: bacciu.davide.A1

Page 80: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Esercitazioni

Le varie esercitazioni sono organizzate per lezione (a partire dalla 3, quellaodierna)

Page 81: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Statement

Per ogni esercizio trovate sotto statement il testo (con alcuni esempi diinput/output)

Page 82: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Submission

Potete sottoporre la vostra soluzione (il file .c) dalla schedaSubmission.

1 il sistema valuta la vostra soluzione;2 se corretta vi assegna il massimo del punteggio;

3 altrimenti vi segnala errore. Cliccando sull ’ID dellasottomissione potete conoscere su quali test case il vostroprogramma ha fallito).

Page 83: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Submission

Potete sottoporre la vostra soluzione (il file .c) dalla schedaSubmission.

1 il sistema valuta la vostra soluzione;2 se corretta vi assegna il massimo del punteggio;3 altrimenti vi segnala errore. Cliccando sull ’ID della

sottomissione potete conoscere su quali test case il vostroprogramma ha fallito).

Page 84: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Test cases

Trovate i vari test case sotto la scheda Attachments. Sono inseriti in un filezip e per ognuno avete una coppia input e output (atteso). Per controllarela correttezza del vostro programma potete usare i file di input:cat input.txt | ./<nome_eseguibile>

cat input.txt | ./<nome_eseguibile> | diff -output.txt

Page 85: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Altro

Ricordatevi di terminare con il return 0.

Cosa altro c’e’:

un forum, su cui potete discutere dei vari esercizi/soluzioni

una classifica ottenuta considerando i punteggi che accumulateesercizio dopo esercizio.

Buon Lavoro!

Page 86: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Altro

Ricordatevi di terminare con il return 0.

Cosa altro c’e’:

un forum, su cui potete discutere dei vari esercizi/soluzioni

una classifica ottenuta considerando i punteggi che accumulateesercizio dopo esercizio.

Buon Lavoro!

Page 87: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Altro

Ricordatevi di terminare con il return 0.

Cosa altro c’e’:

un forum, su cui potete discutere dei vari esercizi/soluzioni

una classifica ottenuta considerando i punteggi che accumulateesercizio dopo esercizio.

Buon Lavoro!

Page 88: Laboratorio di Programmazione Ididawiki.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab3_varif.pdf · Variabili Printf e scanf Comando condizionale Piattaforma di autovalutazione

VariabiliPrintf e scanf

Comando condizionalePiattaforma di autovalutazione

Altro

Ricordatevi di terminare con il return 0.

Cosa altro c’e’:

un forum, su cui potete discutere dei vari esercizi/soluzioni

una classifica ottenuta considerando i punteggi che accumulateesercizio dopo esercizio.

Buon Lavoro!