• Non ci sono risultati.

Esercizi …Esercizi …

N/A
N/A
Protected

Academic year: 2021

Condividi "Esercizi …Esercizi …"

Copied!
25
0
0

Testo completo

(1)

1

Programmare in C

Esercizi … Esercizi …

semplici

(2)

3

Esercizio Esercizio

Determinare il valore di x e y

#include <stdio.h>

main() {

int x,y;

x=2;

y=4;

y=3*y;

x=y+x;

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

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

}

y 12 memoria

x 14

Esercizio Esercizio

Determinare i valori di p, q ed r al termine delle seguenti istruzioni:

p=2;

q=3;

r=q;

q=q+1;

p=p+q-(2*r);

r=p+r+1;

r q 4

memoria

4 0

p

(3)

5

Come si fa a scambiare il valore di due variabili?

Prima

Dopo

Esercizio Esercizio

3 x

y 5

5 x

y 3

Esercizio: scambio variabili Esercizio: scambio variabili

E’ corretto questo programma

#include <stdio.h>

main() {

int x,y; NO!

alla fine ottengo:

(4)

7

Soluzione Soluzione

#include <stdio.h>

main() {

int x,y,temp;

x=3;

y=5;

temp=x;

x=y;

y=temp;

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

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

}

E’ corretto questo programma?

E’ corretto questo programma?

#include<stdio.h>

main() {

int y;

y=0;

x=y+12;

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

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

}

NO!!

uso x senza dichiarare

(5)

9

E’ corretto questo programma?

E’ corretto questo programma?

#include<stdio.h>

main() {

printf("Ciao.\n");

int x;

x=3;

} NO!!

dichiarazione prima dell’uso, ma la dichiarazione all’inizio

Versione corretta Versione corretta

#include<stdio.h>

main() {

int x;

printf("Ciao.\n");

x=3;

(6)

11

Come … Come …

… leggere l’input??

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base, altezza, area;

printf("Valore base: ");

scanf("%d", &base);

printf("Valore altezza: ");

scanf("%d", &altezza);

area = base*altezza;

printf("Area: %d", area);

}

L’utente deve poter immettere i valori di base e altezza

Area del rettangolo

Area del rettangolo

(7)

13

Input Input

scanf("%d", &base);

valore intero in formato decimale, che verrà assegnato alla variabile

base

indirizzo di memoria in cui si trova la variabile base

Leggi un intero e mettilo nella variabile base

&base

Risultato

Risultato

(8)

15

Errori tipici Errori tipici

• Dimenticare una o entrambe le virgolette che circondano la stringa di controllo del formato in una printfo in una scanf

• Dimenticare il %in una printf o in una scanf

• Dimenticare, in una scanf,il simbolo &

• Far precedere da & una variabile in una printf, quando, di fatto, questa non dovrebbe essere preceduta da &

abbiamo visto abbiamo visto

™Struttura di un programma

™Commenti

™Dichiarazioni di variabili

™Istruzioni semplici:

™ istruzione di uscita

™ istruzione di ingresso

™ istruzione di assegnamento

(9)

17

Riepilogo: struttura di un programma Riepilogo: struttura di un programma

direttive

main() {

dichiarazioni;

istruzioni;

}

Riepilogo: commenti Riepilogo: commenti

// commenti in questo modo il compilatore non valuta una riga intera

/* commenti */ in questo modo il compilatore non valuta quello che c'è dentro

(10)

19

Riepilogo: dichiarazioni di variabili Riepilogo: dichiarazioni di variabili

int x,y,z;

Dichiarazione di tre variabili (x, y, z) di tipo intero

ancora sulle dichiarazioni ancora sulle dichiarazioni

Nelle dichiarazioni può essere anche definito un valore iniziale, che viene automaticamente assegnato alle posizioni di memoria

Esempio:

Esempio:

int y;

int x=5;

(11)

21

Riepilogo: istruzione di uscita (output) Riepilogo: istruzione di uscita (output)

printf("stringa")

stampa tutti i caratteri che compongono stringa uno dopo l'altro

Nota: stringa è semplicemente una sequenza di caratteri.

Riepilogo: istruzione di uscita (output) Riepilogo: istruzione di uscita (output)

printf: usata anche per stampare il contenuto di una variabile

Sintassi

printf(< stringa di formato >, < argomenti >)

< stringa di formato >: messaggio che deve essere visualizzato, comprensivo dei riferimenti ai tipi di dati

(12)

23

Riepilogo: istruzione di uscita (output) Riepilogo: istruzione di uscita (output)

Bisogna specificare il formato della variabile utilizzando il carattere speciale di formattazione % seguito dal carattere che definisce un certo formato per una variabile: %d per il tipo intero

printf("%d%d%d", x, y, z);

Provoca la stampa di tre valori interi contenuti in x, ye z.

Ogni occorrenza del carattere % nel primo argomento è associata al corrispondente argomento di printf, a partire dal secondo:

affinché non si verifichino errori, la corrispondenza deve riguardare sia il numero che il tipo di argomenti.

Esempi di

Esempi di printf printf

#include<stdio.h>

main() {

int x=3;

int y=5;

printf("Valore di x: %d\n", x);

printf("Valore di y: %d\n", y);

}

Valore di x: 3 Valore di y: 5

Valore di x: 3 Valore di y: 5

#include<stdio.h>

main() {

int x=3;

int y=5;

printf("Valore di x: %d\nValore di y: %d\n", x, y);

}

(13)

25

Cosa stampa?

Cosa stampa?

int a=0;

int b=2;

int c=4;

int d=6;

int e=8;

int f=10;

printf("Numeri pari da 1 a 10: %d %d %d

%d %d \n",a,b,c,d,e);

Messaggio visualizzato:

Numeri pari da 1 a 10: 0 2 4 6 8

Cosa stampa?

Cosa stampa?

int a=0;

int b=2;

int c=4;

int d=6;

int e=8;

int f=10;

printf("Numeri pari da 1 a 10: %d %d %d

(14)

27

Cosa stampa?

Cosa stampa?

int a=0;

int b=2;

int c=4;

int d=6;

int e=8;

int f=10;

printf("Numeri pari da 1 a 10: %d %d %d

%d %d \n",a,b,c,d,e,f);

Messaggio visualizzato:

Numeri pari da 1 a 10: 0 2 4 6 8 5 6

Cosa stampa?

Cosa stampa?

int a=0;

int b=2;

int c=4;

int d=6;

int e=8;

int f=10;

printf("Numeri pari da 1 a 10: %d %d %d

%d %d %d \n",a,b,c,d,e);

Messaggio visualizzato:

Numeri pari da 1 a 10: 0 2 4 6 8 2293472 6

5

(15)

29

Ancora

Ancora printf printf

I calcoli possono essere eseguiti all’interno di una printf.

#include<stdio.h>

main() {

int x=3;

int y=5;

x=y+x;

printf("x=%d\n", x);

}

#include<stdio.h>

main() {

int x=3;

int y=5;

printf("x=%d\n", y+x);

}

Entrambi stampano:

x=8

Riepilogo: istruzione di ingresso(input) Riepilogo: istruzione di ingresso(input)

Sintassi

scanf(< stringa di formato >, < argomenti >)

< stringa di formato >: indica il formato in cui saranno inseriti i valori

variabili che devono contenere i

(16)

31

Riepilogo: istruzione di ingresso(input) Riepilogo: istruzione di ingresso(input)

scanf("%d", &x)

legge la prossima sequenza di caratteri sullo standard input che rappresentano un valore di tipo interoe assegna tale valore alla variabile x; occorre premettere al nome della variabile &

Posso anche scrivere:

scanf("%d%d", &x, &y);

Riepilogo: istruzione di assegnamento Riepilogo: istruzione di assegnamento

x = 1 + 4 * (y + 2);

calcola il valore dell’espressione a destra del segno = ed lo assegna alla variabile x

(17)

33

Esercizi Esercizi

per iniziare per iniziare

Esercizio Esercizio

Scrivere un programma che, utilizzando una sola istruzione printf, visualizzi:

Prove

(18)

35

Soluzione Soluzione

#include<stdio.h>

main() {

printf("Prove\n\n tecniche\ndi\n visualizzazione");

}

Prove

tecniche di

visualizzazione

Cosa avrebbe stampato

#include<stdio.h>

main() {

printf("Prove\n\n tecniche\n di\n visualizzazione");

}

Avrebbe stampato

Prove tecniche di

#include<stdio.h>

main() {

printf("Prove\n\n tecniche\n di\n visualizzazione");

}

(19)

37

Esercizio Esercizio

Che sarà visualizzato (se lo sarà), quando ognuna delle seguenti istruzioni C verrà eseguita? Assumete che x=2 e y=3.

printf("%d", x);

printf("%d", x+x);

printf( «x=%d», x);

z=x+y;

scanf("%d%d", &x, &y);

/* printf("x+y=%d", x+y)*/;

2 4 niente niente niente niente

Esercizio Esercizio

Scrivere un programma che richieda all’utente un numero intero. Il programma deve quindi calcolare e visualizzare il doppio.

Esempio Esempio

Dammi un numero

(20)

39

Soluzione Soluzione

#include<stdio.h>

main() {

int numero;

printf("Dammi un numero\n");

scanf("%d", &numero);

numero = numero+numero;

printf("Il risultato = %d", numero);

}

Cygwin

Cygwin

(21)

41

Esercizio Esercizio

Scrivere un programma che richieda all’utente tre numeri interi. Il programma deve quindi calcolare la differenza dei tre numeri e moltiplicare il risultato per il primo numero. Visualizzare il risultato.

Il risultato = 50

10 Esempio

Esempio

Dammi il primo numero 2 Dammi il secondo numero Dammi il terzo numero 3

Soluzione Soluzione

#include<stdio.h>

main() {

int primo, secondo, terzo, risultato;

printf("Dammi il primo numero ");

scanf("%d", &primo);

printf("Dammi il secondo numero ");

scanf("%d", &secondo);

(22)

43

Cygwin Cygwin

Soluzione alternativa Soluzione alternativa

#include<stdio.h>

main() {

int primo, secondo, terzo, risultato;

printf("Dammi i tre numeri separati da spazio\n");

scanf("%d %d %d", &primo, &secondo, &terzo);

risultato = (primo-secondo-terzo)*primo;

printf("Il risultato = %d", risultato);

}

#include<stdio.h>

main() {

int primo, secondo, terzo;

printf("Dammi i tre numeri separati da spazio\n");

scanf("%d %d %d", &primo, &secondo, &terzo);

printf("Il risultato = %d", (primo-secondo-terzo)*primo);

(23)

45

Cygwin Cygwin

Esercizio Esercizio

Indicare tutti gli errori commessi nel seguente listato e fornire una versione corretta.

#include<stdio.h>;

*/ programma con errori /*

main()

(24)

47

NO

%

Indicare tutti gli errori commessi nel seguente listato e fornire una versione corretta.

#include<stdio.h>;

*/ programma con errori /*

main()

Printf("programmi con errori");

int num = 9 scanf("d", num);

ris+2 = num;

printf("Risultato=" ris);

}

Esercizio Esercizio

/*

*/

;

&

=%d", dichiarare ris

{

Versione corretta Versione corretta

#include<stdio.h>

/* programma con errori */

main() {

int ris;

int num = 9;

printf("programmi con errori");

scanf("%d", &num);

ris = num+2;

printf("Risultato=%d", ris);

}

(25)

49

Esercizio Esercizio

Cosa stampa il seguente programma?

#include<stdio.h>

main() {

int x=2, y=3;

scanf("%d %d", &x, &y);

y=x*y;

printf("Il prodotto x*y = y", y);

}

Soluzione Soluzione

Stampa:

Il prodotto x*y = y

Se volevo stampare la somma di due numeri letti dall’esterno avrei dovuto usare questa istruzione:

Riferimenti

Documenti correlati

Perci` o l’u- tilizzo della disuguaglianza di Chebyshev `e limitato ai casi in cui non `e nota la forma della distribuzione della variabile casuale... Sia X la variabile

[4 pt] Si dia un intervallo di confidenza per la media di una distribuzione normale, di varianza incognita, e si diano espressione esplicite (in funzione degli elementi campionari)

A major issue that we have to tackle when we use the IRIC-IOT table to compute Italian re- gions’ DVA in outflows and exports is dealing with the ‘Rest of the world’ (Row), which is

Sottolinea col colore rosso i nomi presenti nel seguente brano; ricopiali e mettili in ordine alfabetico:.. La raccolta

[r]

Corso di STATISTICA MATEMATICA Prova scritta del

Nelle seguenti frasi evidenzia in giallo i nomi invariabili e in verde i nomi sovrabbondanti:. • Il mio dolce preferito è

• una misura non può avere cifre di posto superiore all’ultima cifra dell’errore, cioè il risultato della misura deve essere scritto in modo che la sua ultima cifra significativa