Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio …...

23
Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica 1 Elementi di Informatica Prof. G. A. Di Lucca - Univ. del Sannio Il linguaggio C - Sviluppato da Ritchie sulla base di due linguaggi di programmazione esistenti: BCPL e B - Nel 1990 è stato standardizzato da ANSI (American National Standards Institute). Chiamato C89. - Nel 1999 è stato aggiornato con l'introduzione di alcune caratteristiche innovative. Chiamato C99. ulteriori aggiornamenti evoluzioni . - Usato per sviluppare ed implementare il sistema operativo UNIX - Il code del linguaggio è indipendente dalla piattaforma hardware (portabilità) - Esistenza di alcuni ‘dialetti’ 2 Elementi di Informatica Prof. G. A. Di Lucca - Univ. del Sannio Alcune parole chiavi del linguaggio C

Transcript of Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio …...

Page 1: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

1 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Il linguaggio C

- Sviluppato da Ritchie sulla base di due linguaggi di programmazione

esistenti: BCPL e B

- Nel 1990 è stato standardizzato da ANSI (American National Standards

Institute). Chiamato C89.

- Nel 1999 è stato aggiornato con l'introduzione di alcune caratteristiche

innovative. Chiamato C99.

… ulteriori aggiornamenti evoluzioni ….

- Usato per sviluppare ed implementare il sistema operativo UNIX

- Il code del linguaggio è indipendente dalla piattaforma hardware (portabilità)

- Esistenza di alcuni ‘dialetti’

2 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Alcune parole chiavi del linguaggio C

Page 2: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

3 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Linguaggio C Tipi definiti dal linguaggio

… per ora solo i tipi atomici

INTERO int

costituito da numeri interi compresi tra -2(N-1)

a 2(N-1)

- 1 dove N è il numero di bit usato per

rappresentare un numero intero (valori tipici di N sono 16 e 32).

Oltre a int si hanno i tipi interi short int e long int per rappresentare numeri interi con un

numero di bit minore o maggiore di N (tipicamente short int usati 16 bit mentre per long

int 32 bit, 16 o 32 bit per int)

Principali operatori (interni) del tipo

somma +

sottrazione -

moltiplicazione *

divisione (intera) / (il risultato è un numero intero - con troncamento)

resto della divisione %

4 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Linguaggio C

231 – 1

(2.147.483.647)

-231

(2.147.483.648)

4

int

long int

short int

Tipo

4

2

Dimensione

(byte)

215 - 1

+32767

-215

-32768

-231

Valore

minimo

231 - 1

Valore

massimo

… riepilogando ...

Page 3: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

5 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Possibile aggiungere il qualificatore unsigned alla definizione di tipo,

che consente alla variabile di contenere solamente numeri positivi

+232 - 1

0

4 unsigned int

unsigned long int

unsigned short int

Tipo

4

2

Dimensione

(byte)

65535 0

0

Valore

minimo

+232 - 1

Valore

massimo

Linguaggio C

… costanti con nome SHRT_MIN, SHRT_MAX, INT_MIN, INT_MAX, LONG_MIN, LONG_MAX,

USHRT_MAX, UINT_MAX e ULONG_MAX definite per rappresentare rispettivamente i valori

massimi e minini dei tipi short, int, long int, unsigned short, unsigned int e unsigned long int …

… libreria limits.h …

6 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

REALE float

costituito dall sottinsieme dei numeri reali rappresentabile dall’elaboratore.

Si hanno anche i tipi double e long double per rappresentazioni in doppia precisione e

maggiori.

Principali operatori (interni) del tipo

somma +

sottrazione -

moltiplicazione *

divisione /

Tipicamente per il tipo float sono usati 4 byte con una precisione di 6 cifre decimali, per il

double 8 byte e 10 cifre decimali

Linguaggio C

±1.710+308 ±2.210-308 8 double

precisione doppia

float

precisione singola

Tipo

(IEEE 754)

4

Dimensione

(byte)

±3.410+38 ± 1.17.210-38

Valore

minimo

Valore

massimo

Page 4: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

7 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Esistono due notazioni per scrivere/visualizzare numeri reali

<parte intera> < punto> <parte decimale>

4.34

notazione esponenziale

<parte intera> <e> o <E> <esponente con segno>

-3E3 rappresenta -3103 cioè –3000

5e-2 rappresenta 510-2 cioè 0.05

Linguaggio C

… costanti FLT_MIN, FLT_MAX, DBL_MIN, DBL_MAX, LDBL_MIN, LDBL_MAX

relative rispettivamente ai valori massimi e minini dei tipi float, double e long double.

… libreria float.h …

8 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

CARATTERE char

costituito dall’insieme dei caratteri di stampa.

In realtà, in C è assunto come tipo carattere il sottinsieme dei numeri interi compresi tra

0 e 255, ovvero dai valori numerici del codice ASCII con cui sono codificati i caratteri.

i valori di tipo char sono racchiusi tra apici, es.:

'A' 'b' ';' '&'

caratteri non stampabili (caratteri speciali per il controllo di dispositivi) vengono indicati

con la sequenza (sequenza di escape):

\ <carattere convenzionale>

Es.:

'\n' indica il ritorno a nuova linea (a capo)

'\t' tabulazione

'\’’ ' doppio apice

Linguaggio C

Page 5: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

9 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Operazioni su char

Ad ogni carattere corrisponde una rappresentazione numerica univoca

I caratteri sono totalmente ordinati

Possibili operazioni:

restituire il carattere che segue/precede;

operazioni di uguaglianza/disuguaglianza;

chiedersi se un carattere è maggiore/minore di un altro

Linguaggio C

10 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

LOGICO non esiste in C

E’ assunto in sua vece il tipo intero, assumendo il valore 0 per falso e un

valore diverso da 0 (in genere il valore 1) per vero.

Quindi, se una operazione di relazione non è verificata dà come risultato il

valore 0; se la relazione è verificata il risultato è un valore diverso da 0

(non necessariamente 1).

Gli operatori logici sono rappresentati come segue:

NOT !

OR ||

AND &&

Es: (A > 6) || (C < 24) (A > 6) && (C < 24)

se: A = 4 C = 15

(A > 6) || (C < 24) < > 0 (A > 6) && (C < 24) = 0

Linguaggio C

Page 6: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

11 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Nomi degli identificatori (variabili)‏

devono iniziare con un carattere alfabetico (una lettera, il carattere ‘_’ è

considerato una lettera) seguito da altre lettere o cifre;

non possono contenere il carattere <spazio> né altri caratteri.

E’ fatta distinzione tra maiuscolo e minuscolo, per cui il nome ris è diverso da

Ris o RIS (ovvero ris, Ris e RIS sono tre variabili diverse).

... C è case sensitive ...

I nomi di identificatori non possono essere uguali alle parole chiavi del

linguaggio

Linguaggio C

12 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Dichiarazione dei Nomi degli identificatori (variabili)‏

Deve essere indicato il tipo di ogni variabile prima di un utilizzo

della stessa

<nome tipo> <lista variabili>;

Es.

float area_quadrato, lato_quadrato;

int nro_studenti, ore_lezioni;

char sigla;

double radice_equazione;

Quando viene dichiarata, una variabile può essere inizializzata

con un valore

Es. int nro_studenti, ore_lezioni = 20;

Linguaggio C

Page 7: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

13 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Operatori

Aritmetici

Assegnazione =

somma +

sottrazione -

moltiplicazione *

divisione /

resto della divisione %

Relazionali

uguaglianza = =

diverso !=

maggiore >

minore <

maggiore o uguale >=

minore o uguale <=

Alcune funzioni

Aritmetiche

valore assoluto - tipo intero - abs(int n)

quoto e resto divisione intera div(int m, int n)

Trigonometriche

seno sin(x)

coseno cos(x)

tangente tan(x)

Esponenziali e logaritmiche

e elevato alla x exp(x)

log. in base e di x log(x)

log. Base 10 di x log10(x)

Altre

elevazione a potenza pow(x, y)

radice quadrata sqrt(x)

Linguaggio C Tipi

Atomici

int - short int - long int - unsigned

float - double - long double

char

14 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Struttura di un programma in linguaggio C

Un programma in linguaggio C è tipicamente strutturato nel seguente

modo:

[<direttive di inclusione>]

main ( )

{

<sezione dichiarativa>

<corpo del programma>

}

Page 8: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

15 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

I commenti in C

• preceduti da // (se il commento è scritto su una sola riga)

• oppure racchiusi tra /* */ (se il commento è scritto su più righe)

// questo è un commento (su una sola linea)

[<direttive di inclusione>]

main ( )

{

/* questo è un commento

disposto su più linee */

<sezione dichiarativa>

// commento su unica linea

<corpo del programma>

}

... Ovviamente i commenti non

sono presi in considerazione dal

compilatore ...

Esempio:

16 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Operazioni di ingresso e uscita

Un programma C comunica con l’esterno tramite uno o più flussi (stream).

Esistono:

• un flusso standard di ingresso, per le operazioni di ingresso ed associato

alla tastiera,

• un flusso standard di uscita, per le operazioni di uscita ed associato al

monitor.

Ai flussi sono associate delle funzioni predefinite che si trovano in una

specifica libreria di operazioni di ingresso/uscita chiamata <stdio.h>

La libreria <stdio.h> va indicata nelle direttive di inclusione

se il programma contiene operazioni di I/O

Linguaggio C

Page 9: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

17 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Operazioni di uscita

printf(“<formato>‏,‏”‏<argomento1>,..., <argomentoN>);

<formato > : stringa che deve essere visualizzata, comprensiva dei

riferimenti ai formati relativi ai tipi delle variabili i cui valori saranno

visualizzati

<argomenti> : nomi delle variabili i cui valori devono essere visualizzati

Alcuni formati:

%d : interi decimale %f : float %c : carattere

%o : interi ottale %e : float esponenziale %s : stringa

Linguaggio C

18 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Operazioni di uscita

Alcuni caratteri per il controllo della stampa

\n indica il ritorno a nuova linea (a capo) \t tabulazione \’’ doppio apice

Linguaggio C

Es:

printf (“%d \n”, x); visualizza il valore di x con formato intero e

poi va a capo

printf (“%d %d %f ”,x, y, z);

visualizza i valori di x e y con formato intero,

quello di z con formato reale la corrispondenza tra formato e argomento è in base alla posizione il simbolo del

formato indica la posizione dove comparirà il valore della variabile

printf (“ ERRORE !”); visualizza la stringa ERRORE ! Sul video

Page 10: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

19 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

.…‏Esempi‏.…

Operazioni di uscita

Esempio:

…. si vuole visualizzare il messaggio:

Imponibile = …. Al IVA = ….. Importo IVA = ……

dove al posto dei …. vanno visualizzati i valori delle 3 variabili IMP, ALIVA, IMPIVA

… l’istruzione avrà il seguente formato:

printf ("Imponibile = %f Al IVA = %d Importo IVA = %f \n”, IMP, ALIVA, IMPIVA);

Al posto di ogni simbolo di formato sarà visualizzato il valore della corrispondente variabile

(la corrispondenza è in base all’ordine della posizione)

20 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

.…Esempi‏.…

Operazioni di uscita

Esempio:

Se: IMP = 32.4 ALIVA = 22 IMPIVA = 6.48

printf ("Imponibile = %f Al IVA = %d Importo IVA = %f \n”, IMP, ALIVA, IMPIVA);

…. visualizzerà il seguente messaggio:

Imponibile = 32.4 Al IVA = 22 Importo IVA = 6.48

Page 11: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

21 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Un programma esempio: uso di printf()

#include<stdio.h>

main ( )

/* programma esempio uso printf()

calcola il quadrato e la metà di un numero*/

{ int numero = 7; // dichara la variabile numero e le assegna il valore 7

printf (" Numero = %d", numero);

printf ("\n\n\n"); //visualizza 3 righe vuote

printf(" Quadrato di %d = %d \n ", numero, numero*numero);

printf (" Un mezzo di %d = %d \n",numero, numero/2);

}

Direttiva di inclusione per la libreria

stdio, input/output standard

22 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Un programma esempio: uso di printf()

printf (" Numero = %d", numero);

printf ("\n\n\n");

printf(" Quadrato di %d

= %d \n ", numero,

numero*numero);

printf (" Un mezzo di %d =

%d \n",numero, numero/2);

Page 12: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

23 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include <stdio.h>

#include <limits.h>

// stampa i valori limite min. e max per i tipi interi di C

int main(void)

{printf("Codifica del tipo SHORT \n");

printf("Valore minimo = %d \n",SHRT_MIN); // stampa valore minimo short int

printf("Valore massimo = %d \n",SHRT_MAX); // stampa valore massimo short int

printf("\nCodifica del tipo INT \n");

printf("Valore minimo = %d \n",INT_MIN); // stampa valore minimo int

printf("Valore massimo = %d \n",INT_MAX); // stampa valore massimo int

printf("\nCodifica del tipo LONG INT \n");

printf("Valore minimo = %ld \n", LONG_MIN); // stampa valore minimo long int

printf("Valore massimo =%ld \n", LONG_MAX); // stampa valore massimo long int

printf("\nCodifica del tipo UNSIGNED SHORT \n");

printf("Valore minimo = 0 \n");

printf("Valore massimo = %u \n", USHRT_MAX); //massimo unsigned short int

printf("\nCodifica del tipo UNSIGNED INT \n");

printf("Valore minimo = 0 \n");

printf("Valore massimo = %u \n", UINT_MAX); //stampa massimo unsigned int

printf("\nCodifica del tipo UNSIGNED LONG INT \n");

printf("Valore minimo = 0 \n");

printf("Valore massimo = %lu \n", ULONG_MAX); //massimo unsigned longint

}

Direttive di inclusione per le librerie

stdio, e limits.h

Un programma esempio: uso di printf()

24 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Un programma esempio: uso di printf()

printf("Codifica del tipo SHORT \n");

printf("Valore minimo = %d\n",SHRT_MIN);

printf("Valore massimo = %d\n",SHRT_MAX);

printf("\nCodifica del tipo INT \n");

printf("Valore minimo = %d\n",INT_MIN);

printf("Valore massimo = %d\n",INT_MAX);

printf("\nCodifica del tipo LONG INT \n");

printf("Valore minimo = %ld\n“,LONG_MIN);

printf("Valore massimo =%ld\n",LONG_MAX);

Page 13: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

25 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Operazioni di ingresso:

scanf‏(“<formato1> ... <formatoN>”‏,‏&<argomento1>,..., &<argomentoN>);

“<formato i>‏:‏”‏stringa indicante il formato in cui sarà inserito il valore dell’ argomento

i-esimo

&< argomento1>, ..., &<argomentoN>: nomi di variabili, preceduti dal carattere &, cui

saranno assegnati i valori inseriti

Alcuni formati:

%d : interi decimale %f : float %c : carattere %s : stringa

%o : interi ottale %e : float esponenziale

Linguaggio C

Esempi:

scanf("%d", &x) legge il valore di x con formato intero

scanf(“%f‏%f”,‏&base, &altezza)

legge i valori di base ed altezza con formato reale

26 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include<stdio.h>

main ( )

/* programma esempio scanf(): Legge il valore di un numero e

ne calcola il cubo e il triplo*/

{int numero;

printf (" Immettere il valore di un numero intero: ");

scanf("%d", &numero);

printf ("\n\n\n");

printf (" Numero = %d\n", numero);

printf("Cubo di %d = %d \n\n", numero, numero*numero*numero);

printf (" Triplo di %d = %d \n\n",numero, numero*3);

}

Direttiva di inclusione per la libreria

stdio, input/output standard

Un programma esempio: uso di scanf()

Page 14: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 27

Un programma esempio: uso di scanf() printf ("Immettere il valore di un numero intero: ");

scanf("%d", &numero);

printf ("\n\n\n");

printf (" Numero = %d\n",

numero);

printf (" Triplo di %d = %d \n\n",numero, numero*3);

printf("Cubo di %d = %d \n\n", numero,

numero*numero*numero);

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 28

Un programma esempio: uso di scanf()

Overflow !!

Valore max per int: 2.147.483.647

Triplo e cubo di: 1.111.111.111

Superano il valore di

INT_MAX

… Attenzione alla scelta dei tipi in relazione ai valori che le variabili possono

assumere … e/o viceversa alla scelta del valore in base al suo tipo …

Page 15: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

29 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Operazioni di calcolo e assegnazione

<identificatore> = <espressione>;

<espressione> può essere semplice come una singola costante o può essere

una combinazione di variabili, operatori, …

Semantica:

calcola il valore di un’espressione (lato destro, rispetto a segno =) ed

assegnalo ad una variabile (lato sinistro, rispetto a segno =)

L’eventuale valore memorizzato precedentemente nella variabile viene sostituito dal nuovo valore

Es.

A = 26;

perimetro_quadrato = lato_quadrato * 4;

Linguaggio C

30 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include<stdio.h>

main ( )

/* questo programma calcola l’area

di un rettangolo */

{

float base, altezza, area;

printf (“immetti base \n”);

scanf (“%f” , &base);

printf(“immetti altezza \n “);

scanf(“%f” , &altezza);

area = base * altezza;

printf (“Area= %f \n”,area);

}

LDP C Intestazione Commento

Commento

Sezione dichiarativa

Program area_rettangolo;

// calcola l’area di un rettangolo

FLOAT base, altezza, area;

begin

write (‘immetti valore della base’);

read (“%f” base);

write (‘immetti valore della altezza ‘);

read (“%f” altezza);

area = base * altezza;

write‏(‘Area= ‘,‏“%f”‏area);

end.

Corpo del programma

Confronto LDP e C

Page 16: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 31

Il programma esempio del calcolo del volume del parallelepipedo

Program volume_parallelepipedo;

FLOAT LBase, ABase, H, Volume, Area_Base;

begin

write (“immetti valore della lunghezza di base (in dm)”);

read (“%f” LBase);

write (“immetti valore della altezza di base (in dm)”);

read (“%f” ABase);

write (“immetti valore della altezza del parallelepipedo (in dm)”);

read (“%f” H);

Area_Base = LBase* ABase;

Volume=Area_Base*H;

write‏(“Volume= “,‏“%f”‏‏Volume);

end.

LDP

… lo studente, a partire da quello in LDP, scriva in C il programma del calcolo del volume di

un parallelepipedo …

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 32

#include<stdio.h>

main ( )

{// calcola il volume di un parallelepipedo

float LBase, ABase, H, Area_Base, Volume;

printf ("immetti valore della lunghezza di base (in dm)\n");

scanf ("%f" , &LBase);

printf("immetti valore altezza di base (in dm) \n");

scanf("%f" , &ABase);

printf("immetti valore altezza parallelepipedo (in dm)\n");

scanf("%f" , &H);

Area_Base = LBase* ABase;

Volume=Area_Base*H;

printf ("Volume= %f dm3\n",Volume);

system (" Pause "); // interrompe l’esecuzione fino alla

// pressione di un tasto

}

C

Il programma esempio del calcolo del volume del parallelepipedo

Page 17: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 33

Il programma esempio

del calcolo del volume

del parallelepipedo

Program volume_parallelepipedo;

FLOAT LBase, ABase, H, Volume, Area_Base;

begin

write (“immetti valore della lunghezza di base (in dm)”);

read (“%f” LBase);

write (“immetti valore della altezza di base (in dm)”);

read (“%f” ABase);

write (“immetti valore della altezza del parallelepipedo (in dm)”);

read (“%f” H);

Area_Base = LBase* ABase;

Volume=Area_Base*H;

write‏(“Volume= “,‏“%f”‏‏Volume);

end.

LDP #include<stdio.h>

main ( )

{// calcola il volume di un parallelepipedo

float LBase, ABase, H, Area_Base, Volume;

printf ("immetti valore della lunghezza di base (in dm)\n");

scanf ("%f" , &LBase);

printf("immetti valore altezza di base (in dm)\n");

scanf("%f" , &ABase);

printf("immetti valore altezza parallelepipedo (in dm)\n");

scanf("%f" , &H);

Area_Base = LBase* ABase;

Volume=Area_Base*H;

printf ("Volume= %f dm3\n",Volume);

}

C

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 34

Il programma del calcolo della capacità di un tino cilindrico

Program capacita_tino;

FLOAT Diametro, Volume, Area_Base, Altezza, Capacita;

begin

write (“immetti valore della lunghezza del diametro (in dm)”);

read (“%f” Diametro);

write (“immetti valore della altezza del cilindro (in dm)”);

read (“%f” Altezza);

Area_Base = (Diametro/2)2 * 3,14;

Volume=Area_Base*Altezza;

Capacita = Volume/100;

write‏(“Capacità tino ettolitri “,‏“%f”‏‏Capacita);

end.

LDP

… lo studente, a partire da quello in LDP, scriva in C il programma del calcolo

della capacità del tino cilindrico …

Page 18: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 35

Il programma in C del calcolo della capacità

di un tino cilindrico #include<stdio.h>

main ( )

{ // calcola la capacità in hl di un tino

float Diametro, Capacita, Altezza, Area_Base, Volume;

printf ("immetti valore lunghezza del diametro (in dm)\n");

scanf ("%f" , &Diametro);

printf("immetti valore altezza del cilindro (in dm) \n");

scanf("%f" , &Altezza);

Area_Base = (Diametro/2)*(Diametro/2)* 3.14;

Volume=Area_Base*Altezza;

Capacita = Volume/100;

printf (" Capacita tino = %f ettolitri\n",Capacita);

system (" Pause ");

}

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 36

Il programma del

calcolo della capacità

di un tino cilindrico

Program capacita_tino;

FLOAT Diametro, Volume, Area_Base, Altezza, Capacita;

begin

write (“immetti valore della lunghezza del diametro (in dm)”);

read (“%f” Diametro);

write (“immetti valore della altezza del cilindro (in dm)”);

read (“%f” Altezza);

Area_Base = (Diametro/2)2 * 3,14;

Volume=Area_Base*Altezza;

Capacita = Volume/100;

write‏(“Capacità tino ettolitri “,‏“%f”‏‏Capacita);

end.

LDP #include<stdio.h>

main ( )

{ // calcola la capacità in hl di un tino

float Diametro, Capacita, Altezza, Area_Base, Volume;

printf ("immetti valore lunghezza del diametro\n");

scanf ("%f" , &Diametro);

printf("immetti valore altezza del cilindro \n");

scanf("%f" , &Altezza);

Area_Base = (Diametro/2)*(Diametro/2)* 3.14;

Volume=Area_Base*Altezza;

Capacita = Volume/100;

printf (" Capacita tino ettolitri = %f \n",Capacita);

}

C

Page 19: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

37 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Operatori di incremento e decremento

Per incrementare di 1 il valore di una variabile, ad es:

a = a + 1;

in C è possibile usare l’ operatore di incremento ++

che incrementa di 1 la variabile a cui è applicato, ovvero:

a++ ; è equivalente alla istruzione a = a + 1;

Analogamente l’operatore di decremento --

decrementa di 1 la variabile a cui è applicato:

a-- ; è equivalente alla istruzione a = a - 1;

Linguaggio C

38 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Operatori di incremento e decremento

Forma prefissa e postfissa

postfissa

a++ il valore della variabile è incrementato dopo essere stato utilizzato

a-- il valore della variabile è decrementato dopo essere stato utilizzato

prefissa

++a il valore della variabile è incrementato prima di essere utilizzato

--a il valore della variabile è decrementato prima di essere utilizzato

Attenzione ! Gli effetti di forma pre- o post- fissa possono essere differenti

Linguaggio C

Page 20: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

39 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Le espressioni:

y = a++ ; ed y = ++a ;

producono risultati diversi per y

Esempi:

Linguaggio C

y=a++ ;

equivale alla sequenza di istruzioni

y=a;

a=a+1;

se a=3 dopo l’esecuzione di y=a++;

si ha: y=3 a=4

y= ++ a;

equivale alla sequenza di istruzioni

a=a+1;

y=a;

se a=3 dopo l’esecuzione di y=++a;

si ha: a=4 y=4

40 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Esempi:

Posto a=4 ed i=6

Linguaggio C

k = ++a * i;

k = a++ * i;

... valori differenti per la variabile k !!!

equivale a: k = a * i;

a = a + 1;

ovvero: k= 24; a = 5;

equivale a: a = a + 1;

k = a * i;

ovvero a = 5; k = 30;

Page 21: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

41 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include<stdio.h>

main ( )

// esempio operatore incremento in notazione Post-fissa

{int numero, y, k, i=6;

printf ("Immettere il valore di un numero intero:\n" );

scanf("%d", &numero);

printf ("\n\n *** Notazione Post-fissa ***\n");

printf ("Calcolo di y = numero++;\n con numero=%d \n\n",

numero);

y = numero++;

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

printf("\n\n *** Notazione Post-fissa *** \n");

printf("Calcolo di k = numero++ * i;\n con numero=%d,

i=%d \n", numero,i);

k = numero++ * i;

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

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

system("Pause");

}

Esempio

42 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

scanf (“%d”, &numero);

numero=3

y=numero++; y = 3 numero = 3+1 = 4

k = numero++ * i; k = 4 * 6 = 24 numero = 4 + 1 = 11

Page 22: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

43 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include<stdio.h>

main ( )

// esempio operatore incremento in notazione Pre-fissa

{int numero, y, k, i=6;

printf ("Immettere il valore di un numero intero:\n" );

scanf("%d", &numero);

printf("\n*** Notazione Pre-fissa ***\n");

printf("\n Calcolo di y = ++numero;\n con numero= %d\n\n",

numero);

y = ++numero ;

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

printf ("\n *** Notazione Pre-fissa ***\n");

printf ("Calcolo di k = ++numero * i;\n con numero = %d,

i=%d \n\n", numero,i);

k = ++numero * i;

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

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

system("Pause");

}

Esempio

44 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

scanf (“%d”, &numero);

numero=3

y=++numero; numero = 3 + 1 = 4 y= 4

k =++numero * i; numero = 4 + 1 = 5 k = 5 * 6 = 30

Page 23: Il linguaggio C - unisannio.it · 2019. 10. 8. · Linguaggio C Tipi definiti dal linguaggio … per ora solo i tipi atomici INTERO int costituito da numeri interi compresi tra -2(N-1)

Elementi di Informatica a.a. 2019/20 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria - Univ. del Sannio - CdL Ingegneria Energetica

45 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Altro uso degli operatori di incremento/decremento

Forme di istruzioni di assegnazione quali:

<identificatore> = <identificatore> <op> <espressione>;

Es. x = x - 5 * k;

a = a + p * (r + j);

possono essere scritte nella forma

<identificatore> <op> = <espressione>;

Es. x - = 5 * k;

a + = p * (r + j);

Linguaggio C