Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
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
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 ...
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
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
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
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
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>
}
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
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
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
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);
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);
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()
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 …
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
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
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 …
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
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
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;
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
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
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