03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di...

45
03. Variabili, Tipi Primitivi e Costrutti Condizionali Fondamenti di Programmazione e Laboratorio Chiara Bodei, Jacopo Soldani CdL in Matematica, Universit` a di Pisa a.a. 2020/2021

Transcript of 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di...

Page 1: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

03. Variabili, Tipi Primitivi e Costrutti

Condizionali

Fondamenti di Programmazione e Laboratorio

Chiara Bodei, Jacopo Soldani

CdL in Matematica, Universita di Pisa

a.a. 2020/2021

Page 2: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Variabili e Tipi di Dato Primitivi

Page 3: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Dichiarazioni di Variabili

La sintassi da utilizzare per dichiarare una variabile la seguente:

tipo nome variabile [=valore iniziale];

• tipo della variabile;

• nome della variabile: i nomi possono essere composti da

lettere e cifre, ma devono sempre cominciare con una lettera.

Ricordatevi le regole stilistiche viste la scorsa volta;

• si puo definire un valore iniziale della variabile. E fortemente

consigliato inizializzare le variabili (in alcuni casi di default

hanno un valore casuale).

1

Page 4: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Tipi di dato primitivi: int

int: un intero rappresentabile sulla macchina (segnaposto %d)

• l’occupazione in memoria e di conseguenza l’intervallo di

rappresentazione del tipo int dipende dalla macchina su cui

viene compilato il programma;

• la funzione predefinita sizeof() fornisce l’occupazione in

byte di un qualsiasi tipo o variabile C. Ad esempio, se la

macchina usata rappresenta gli interi su 32 bit, l’istruzione:

printf("Un int occupa %d byte\n",sizeof(int));

stampa a video quanto segue:

Un int occupa 4 byte

2

Page 5: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Tipi di Dato Primitivi: int, short, long, unsigned

short/long denotano int che occupano meno/piu byte.

sizeof min max

short int 2 −32768 32767

int 4 −2147483648 2147483647

long int 8 −9223372036854775808 9223372036854775807

(NB: Maggiore e il numero di byte per un tipo, piu grande e

l’intervallo di valori rappresentabili.)

unsigned permette di usare tutti i byte per rappresentare solo

numeri positivi

sizeof min max

unsigned short 2 0 65535

unsigned int 4 0 4294967295

unsigned long 8 0 18446744073709551615

3

Page 6: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Tipi di Dato Primitivi: char

char: singolo byte per contenere un carattere (segnaposto %c)

char a=‘a’; //i caratteri si indicano tra apici

I caratteri sono visti in C come valori interi.. infatti:

int a=’a’;

printf("%c\n",a);

printf("%d\n",a);

Stampa in output:

a

97

Questo perche 97 corrisponde alla codifica ASCII del carattere a

4

Page 7: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Tipi di Dato Primitivi: char e ASCII

I caratteri vengono memorizzati in C secondo la codifica ASCII:

Costante carattere ‘a’ ‘b’ ... ‘z’

Valore intero 97 98 ... 122

Costante carattere ‘A’ ‘B’ ... ‘Z’

Valore intero 65 66 ... 90

Costante carattere ‘0’ ‘1’ ... ‘9’

Valore intero 48 49 ... 57

La codifica di una cifra non corrisponde alla cifra stessa (es. la

codifica di ‘2’ non e 2, ma 50)

Le codifiche di minuscole, maiuscole e cifre sono consecutive:

‘5’ - ‘0’ = ? → 5!

‘e’ - ‘a’ = ? → 5!

Se c1 e c2 sono char, c1 - c2 ci fornisce la distanza tra le

codifiche di c1 e c2 5

Page 8: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Tipi di Dato Primitivi: float, double

float, double: rappresentazione di numeri reali con precisione

singola o doppia (segnaposto %f e %lf)

float x=123.34;

double y=100.1e5; //anche notazione scientifica

Dimensioni differenti: double viene tipicamente rappresentato con

8 byte, float con 4

E possibile utilizzare l’attributo long per variabili di tipo double.

6

Page 9: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Costanti

L’attributo const puo essere applicato alla dichiarazione di

qualasiasi variabile, con l’effetto di affermare che il suo valore non

cambiera:

const double pi=3.141592;

const int cinque=5;

NB: I tentativi di modifica a costanti sono tipicamente segnalati

dal compilatore con un errore

Differenza tra #define e const:

• #define e una direttiva del preprocessore e sostituita

all’interno del codice prima della compilazione;

• una variabile definita con l’attributo const viene maneggiata

dal compilatore: ha un tipo e un indirizzo.7

Page 10: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Operatori Aritmetici

Page 11: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Operatori Aritmetici

Nel C abbiamo i seguenti operatori aritmetici:

• + (somma, es. 5+3 restituisce 8)

• - (sottrazione, es. 5-3 restituisce 8)

• * (moltiplicazione, es. 5*3 restituisce 15)

• / (divisione intera, es. 5/3 restituisce 1)

• % (modulo, es. 5%3 restituisce 2)

(NB: L’operatore % non puo’ essere applicato a valori/variabili di

tipo float e double)

8

Page 12: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Proprieta degli Operatori Aritmetici

Gli operatori possiedono regole di precedenze e associativita’ che

determinano come avviene la valutazione delle espressioni

Cosı come avviene nell’aritmetica tradizionale, + e - hanno lo

stesso grado di precedenza, inferiore a quello di *, / e %

9

Page 13: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Altri Operatori

Operatori contratti: permettono di effettuare un’operazione su una

variabile e assegnarne il risultato alla stessa:

• var op= expr (con op operatore aritmetico) equivale a

var = var op expr

• es. j+=2 equivale a j=j+2

Incremento/decremento unitario: operatori ++ e --. Sono

utilizzabili sia come prefisso (ossia prima della variabile, es. ++n) o

suffisso (dopo la variabile, es. n++). L’effetto e quello di

incrementare o decrementare n ma:

• ++n esegue l’incremento prima di usare il valore n:

es. x=++n equivale a n=n+1;x=n;

• n++ lo fa dopo l’impiego del valore:

es. x=n++ equivale a x=n;n=n+1;10

Page 14: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Conversioni di Tipo

Page 15: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Operatori e Conversioni di Tipo

Le espressioni aritmetiche hanno un valore ed un tipo dettato da

quello delle variabili in gioco.

Quando x op y coinvolge operandi di tipo diverso, avviene una

conversione implicita secondo le seguenti regole:

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

2. se l’espressione e ancora eterogenea si converte l’operando di

tipo inferiore facendolo divenire di tipo superiore secondo la

seguente gerarchia:

int→ long→ float→ double→ long double

EsempioSe x ha tipo int e y ha tipo float, il risultato dell’espressione

x+y viene automaticamente convertito a float

11

Page 16: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Assegnamenti e Conversioni di Tipo

Quando x = exp coinvolge una variabile x e un’espressione exp il

cui tipo non coincide, avviene una conversione implicita, sempre a

favore della variabile x a sinistra:

• una promozione non causa perdita di informazione

• una retrocessione puo causare perdita di informazione

Esempio

int i;

float x = 2.3, y = 4.5;

i = x + y;

printf("%d", i); // stampa 6, perche?

NB: Se la conversione non e possibile si ha errore

12

Page 17: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Conversioni Esplicite: Il Casting

Oltre alle conversioni implicite, sono possibili anche conversioni

esplicite dette cast secondo la sintassi:

(tipo) espressione;

L’operatore di cast ha precedenza piu alta degli operatori binari e

associa da destra a sinistra

Esempio

int somma, n;

float media;

media = somma/n; /* divisione tra interi */

media = (float)somma/n; /* divisione tra reali */

Nell’esempio, (float)somma/n equivale a ((float)somma)/n 13

Page 18: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Booleani e Operatori Logici

Page 19: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Booleani

In C non esiste un tipo boolean

Si usa il tipo int:

• 0 rappresenta FALSO;

• 1 (o qualsiasi valore diverso da zero) rappresenta VERO.

14

Page 20: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Operatori Logici

Operatori su variabili/valori:

• !: 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.

Operatori sui singoli bit: shift a sinistra (<<), shift a destra (>>),

AND (&), OR (|), XOR (^), ecc.

15

Page 21: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Operatori Relazionali

Page 22: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Operatori di Uguaglianza

Operatori binari:

• == (uguaglianza)

• != (disuguaglianza)

NB: prendono come operandi due espressioni e resituiscono un

risultato risultato di tipo int che puo essere 0 (falso) o 1 (vero)

Esempio

5 == 4+2 // Restituisce 0

5 != 4+2 // Restituisce 1

Domanda: Perche == e non =?

16

Page 23: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Altri Operatori Relazionali

Operatori binari:

• < (minore)

• <= (minore o uguale)

• > (maggiore)

• >= (maggiore o uguale)

NB: prendono come operandi due espressioni e resituiscono un

risultato risultato di tipo int che puo’ essere 0 (falso) o 1 (vero)

Esempio

5 < 4+1 // Restituisce 0

5 <= 4+1 // Restituisce 1

17

Page 24: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

printf e scanf

Page 25: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

La libreria stdio.h

La libreria stdio.h implementa un modello di input/output di dati

testuali:

• printf consente l’output (su stdout, es. video) di dati

testuali, mentre

• scanf consente l’input (da stdin, es. tastiera) di dati testuali

printf() e scanf() ricevono

• una stringa di controllo, che puo’ contenere le specifiche di

conversione indicate con il simbolo % (segnaposto), e

• una serie di parametri, che possono essere ad esempio le

variabili da stampare o leggere

18

Page 26: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

printf

Per stampare delle variabili di un determinato tipo dobbiamo

utilizzare i segnaposto relativi:

• interi: %d, %u (unsigned). Si antepone h per short e l per long

• reali: %f, %e (notazione scientifica), %g la piu’ breve tra

notazione standard e scientifica. Per i double non si antepone

nulla, per i long double si antepone L

• caratteri: %c

• stringhe: %s (le vedremo piu’ avanti).

19

Page 27: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

printf(2)

Altri flag, vanno messi subito dopo il %:

• -: allinea a sinistra

• un numero intero n: specifica l’ampiezza minima del campo.

Esempio:

printf("%c%3c%5c\n",‘A’,‘B’,‘C’);Stampa: A B C

• un parametro .d: per i numeri reali specifica il numero di cifre

decimali d (con arrotondamento). Esempio:

printf("%.3f\n",123.4557454);Stampa: 123.456

20

Page 28: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

scanf

scanf e simile a printf ma viene utilizzata per la lettura:

• anche in questo caso abbiamo una stringa di controllo, mentre

• gli altri parametri sono gli indirizzi delle variabili in cui

saranno memorizzati i valori letti

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.

21

Page 29: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Comandi Condizionali

Page 30: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

if-else

Le istruzioni di un programma vengono normalmente eseguite in

sequenza, ma la maggior parte dei programmi richiede una

modifica al normale flusso sequenziale del controllo

Le istruzioni if e if-else ci permettono ad esempio di scegliere

tra azioni alternative:

if(espressione){

blocco1

}

else{

blocco2

}

• espressione e un’espressione che restituisce 0 (falso) o un

numero diverso da zero (vero) 22

Page 31: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

if-else (2)

if(espressione){

blocco1

}

else{

blocco2

}

• se espressione e vera (ovvero restuisce un numero diverso

da 0), vengono eseguite le istruzioni in blocco1

• se invece espressione e falsa (ovvero restituisce 0), vengono

eseguite le istruzioni in blocco2

(NB: Il ramo else e opzionale)

23

Page 32: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Esempio di if-else

Stabilire se un utente sia maggiorenne, data l’eta inserita datastiera

#include <stdio.h>

int main(void) {

int eta;

printf("Inserisci la tua eta’ in anni: ");

scanf("%d",&eta);

if(eta>=18)

printf("Sei maggiorenne\n");

else

printf("Sei minorenne\n");

return 0;

}

(NB: Se i rami di un if-else contengono solo un’istruzione, si

possono omettere le parentesi graffe)

24

Page 33: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

switch

switch consente di realizzare una selezione a piu vie

switch (espressione) {

case valore_1: istruzioni_1

break;

...

case valore_n: istruzioni_n

break;

default : istruzioni_default

}

25

Page 34: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

switch: 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 il comando break)

3. se nessuna etichetta e uguale al valore dell’espressione si

esegue il ramo default se definito (e opzionale).

26

Page 35: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Esempio di switch

int giorno;

...

switch (giorno) {

case 1: printf("Lunedi\n");

break;

case 2: printf("Martedi\n");

break;

case 3: printf("Mercoledi\n");

break;

case 4: printf("Giovedi\n");

break;

case 5: printf("Venerdi\n");

break;

default: printf("Week end\n");

}

27

Page 36: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Esercizi

Page 37: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Piattaforma di autovalutazione

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

28

Page 38: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Registrazione

Due raccomandazioni:

• usate un username che sia riconducibile a voi

(es. nome.cognome)

• non scordate la password :)29

Page 39: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Esercitazioni

Le varie esercitazioni sono

• organizzate per lezione,

• a partire dalla Lezione 3 (quella odierna)

30

Page 40: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Esercizi: Testo

Ogni esercizio e spiegato in un PDF, accessibile dalla scheda Testo

31

Page 41: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Esercizi: Sottomissione

La soluzione puo essere inviata dalla scheda Sottomissione

(caricando direttamente il file .c o copiando il contenuto nel form)

Cliccando su Invia il sistema valuta la vostra soluzione

32

Page 42: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Esercizi: Valutazione

Esito della valutazione:

• se corretta, il sistema vi assegna il punteggio 100/100

(massimo),

• altrimenti vi segnala errore o assegna un punteggio inferiore

Cliccando sull’ID della sottomissione potete conoscere su quali test

case il vostro programma ha fallito

33

Page 43: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Esercizi: Test Case

Trovate i test case considerati nell’esercizio nella scheda Allegati,

inseriti in un file ZIP scaricabile

Ogni test case N e formato da una coppia

• inputN.txt (input fornito)

• outputN.txt (output atteso)

34

Page 44: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Esercizi: Test Case (2)

Se non avete ottenuto il massimo punteggio, e perche uno di

questi casi fallisce. Dovete “debuggare” il vostro programma e

capire perche non fornisce l’output atteso.

./nomeEseguibile < inputN.txt

consente di lanciare il vostro programma eseguibile fornendogli in

input quanto contenuto nel file inputN.txt

./nomeEseguibile < inputN.txt | diff - outputN.txt

idem, e inoltre verifica quali siano le differenze tra l’output

generato dal vostro programma e quello atteso (contenuto in

outputN.txt)

35

Page 45: 03. Variabili, Tipi Primitivi e Costrutti Condizionali - Fondamenti di …pages.di.unipi.it/bodei/CORSO_FP_20/FP/Lezioni/03... · 2020. 10. 14. · 03. Variabili, Tipi Primitivi e

Altro

Due cose:

• ricordatevi di terminare con il main dei vostri programmi C

con return 0

• cercate di rimanere ai vertici della classifica :)

Buon Lavoro!36