Il 0% ha trovato utile questo documento (0 voti)
26 visualizzazioni51 pagine

Esempi C

Caricato da

hellociao172
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
26 visualizzazioni51 pagine

Esempi C

Caricato da

hellociao172
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 51

Corso di Informatica Generale (C. L. Economia e Commercio) – Ing.

Valerio Lacagnina
Linguaggio C - Esempi

/*****************************************************/
/* stampa.c */
/* Primo programma in C: Stampa un messaggio a video */
/*****************************************************/

#include <stdio.h>

void main()
{ /* Inizio del main */
printf("Questa e' la prima stampa");
/* funzione di stampa */
} /* Fine del main */

Output di stampa.c:

Questa e’ la prima stampa

/****************************************************/
/* stampa2.c */
/* Stampa due messaggi a video */
/****************************************************/

#include <stdio.h>

void main()
{ /* Inizio del main */
printf("Questa e' la prima stampa\n");
printf("Questa e' la seconda stampa\n");
/* caratteri escape
\n ritorno a capo
\t tabulatore
\\ backslash
\" virgolette
\' apice
\b backspace*/
} /* Fine del main */

Output di stampa2.c:

Questa e’ la prima stampa


Questa e’ la seconda stampa

Linguaggio C - Programmi di esempio 1


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************/
/* Nome programma: arearet1.c */
/* programma che calcola l'area di un rettangolo. */
/* Uso di costanti intere */
/****************************************************/

#include <stdio.h>

void main()
{ /* Inizio del main */
int base,altezza,area;
/* tipo funzione byte intervallo
void nullo 0 nessuno
char carattere 1 -128, +127
int intero 2 -32768,+32767
float virgola mobile 4 3.4E-38, 3.4E+38
double virgola mobile 8 1.7E-308, 1.7E+308
*/
base = 4;
altezza = 3;
area = base * altezza;

printf("L'area del rettangolo di ");


printf("base=%d e altezza=%d e': %d\n",base,altezza,area);

/* Codici di formato per la printf


Codice Variabile
%d intera
%c carattere
%f float
%lf double */
} /* Fine del main */

Output di arearet1.c:

L'area del rettangolo di base=4 e altezza=3 e': 12

Linguaggio C - Programmi di esempio 2


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/******************************************/
/* Nome programma : arearet2.c */
/* Questo programma consente di calcolare */
/* l'area di un rettangolo inserendo la */
/* base e l'altezza */
/******************************************/

#include <stdio.h>

void main()
{ /* Inizio del main */
int base,altezza,area;

printf("Inserire: base altezza\n");


scanf("%d %d",&base,&altezza); /* & restituisce l’indirizzo*/

/* Codici di formato per la scanf


Codice Variabile
%d intera
%c carattere
%f float
%lf double */

area = base * altezza;

printf("L'area del rett. di base");


printf(" %d e alt. %d e' %d\n",base,altezza,area);
} /* Fine del main */

Output di arearet2.c:

Inserire: base altezza


5 4 input dell’utente
L'area del rett. di base 5 e alt. 4 e' 20

Linguaggio C - Programmi di esempio 3


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/******************************************/
/* Nome programma : areatri.c */
/* Calcolo dell'area di un triangolo con */
/* input */
/******************************************/

#include <stdio.h>

void main()
{ /* Inizio del main */
int base,altezza;
float area;

printf("Inserire: base altezza\n");


scanf("%d %d",&base,&altezza);
/* modo 1:
area = base * altezza / 2.0;*/
/* modo che utilizza il cast (tipo): */
area = (float)base * altezza / 2;

/* priorità operazioni matematiche


() massima
++, --
-(unario)
*, /, %
+, - minima
*/

printf("L'area del triangolo di base");


printf(" %d e alt. %d e' %f\n",base,altezza,area);
} /* Fine del main */

Output 1 di areatri.c:

Inserire: base altezza


5 4 input dell’utente



L'area del triangolo di base=5 e alt.=4 e' 10.000000

Output 2 di areatri.c:

Inserire: base altezza


3 5 input dell’utente


L'area del triangolo di base=5 e alt.=4 e' 7.500000

Linguaggio C - Programmi di esempio 4


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/***************************************/
/* Nome programma : tipi.c */
/* I tipi fondamentali */
/* int, float, double, char */
/***************************************/

#include <stdio.h>

void main()
{
int a;
float c;
double d;
char e;
char f[10];

printf("Inserisci un int\n");
scanf("%d",&a);
printf("Hai inserito l'int %d\n\n",a);

printf("Inserisci un float\n");
scanf("%f",&c);
printf("Hai inserito il float %f\n\n",c);

printf("Inserisci un double\n");
scanf("%lf",&d);
printf("Hai inserito il double %lf\n\n",d);

/* La variabile carattere puo' essere assegnata tramite una


costante carattere: e='A';
oppure tramite una costante numerica codice ASCII): e=65;
in tal senso una variabile carattere puo' essere utilizzata
come un intero di un solo byte. La stampa o la lettura
(mediante le funzioni scanf e printf)prevede come formattatore
%c */

printf("Inserisci un carattere\n");
scanf("\n%c",&e);
printf("Hai inserito il carattere %d\n\n",e);

/* Quando si vuole stampare o leggere (mediante le funzioni


printf e
scanf) una stringa si usa come formattatore %s */

printf("Inserisci una stringa (max 10 lettere)\n");


scanf("%s",&f);
printf("Hai inserito la stringa %s\n\n",f);
}

Linguaggio C - Programmi di esempio 5


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

Output di tipi.c:

Inserisci un int
13 


input dell’utente
Hai inserito l'int 13

Inserisci un float
1.45 input dell’utente


Hai inserito il float 1.450000

Inserisci un double
-3.546332 input dell’utente


Hai inserito il double -3.54633200000000

Inserisci un carattere
a input dell’utente


Hai inserito il carattere 97

Inserisci una stringa (max 10 lettere)


prova input dell’utente


Hai inserito la stringa prova

Linguaggio C - Programmi di esempio 6


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/***************************************************************/
/* Nome programma : uso_cast.c */
/* In questo programma si introduce l'uso dell'operatore */
/* unario "cast". Formato: (nome del tipo) espressione */
/* "espressione" viene convertita nel tipo specificato */
/***************************************************************/

#include <stdio.h>
#include <math.h>

void main()
{
int num_int;
double ris;

num_int = 15;

/* per convertire num_int in un double prima di passarlo a sqrt */


ris = sqrt( (double) num_int );
printf("ris = %f \n",ris);

/* nota : num_int rimane inalterato */


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

Output di uso_cast.c:

ris = 3.872983
num_int = 15

Linguaggio C - Programmi di esempio 7


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************/
/* Nome programma: if0.c */
/* if-else */
/****************************************************/

/* if (condizione) istruzioni1;
else istruzioni2; N.B.: l'else e' opzionale */

#include <stdio.h>

void main()
{
int a,b;

printf("Inserire: a b\n");
scanf("%d %d",&a,&b);

if (a > b)
printf("Lo scarto (if) e' %d\n",a-b); /*dipende dall'if*/
else /* equivale ai casi b > a oppure b == a */
printf("Lo scarto (else) e' %d\n",b-a);/*dipende da else*/
printf("a=%d e b=%d\n",a,b); /* Non dipende da if ne' da else*/
} /* Fine del main */

Output 1 di if0.c:

Inserire: a b
5 3 input dell’utente


Lo scarto (if) e' 2


a=5 e b=3

Output 2 di if0.c:

Inserire: a b
5 12 input dell’utente



Lo scarto (else) e' 7


a=5 e b=12

Output 3 di if0.c:

Inserire: a b
7 7 input dell’utente


Lo scarto (else) e' 0


a=7 e b=7

Linguaggio C - Programmi di esempio 8


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/******************************************************************/
/* Nome programma : if1.c */
/* if-else. Istruzioni semplici e composte. */
/******************************************************************/

#include <stdio.h>

void main()
{
int x;

x=5;
printf("************************ CASO 1 ***********************\n");

if ( x > 3 )
printf("Istruzione di stampa dipendente dalla condizione x>3 \n");
printf("Istruzione di stampa indipendente dalla condizione x>3 \n");

if ( x < 3 )
printf("Istruzione di stampa dipendente dalla condizione x<3 \n");
printf("Istruzione di stampa indipendente dalla condizione x<3 \n\n");

printf("************************ CASO 2 ***********************\n");

if ( x > 4 )
{
printf("Prima istruzione di stampa dipendente dalla cond. x>4 \n");
printf("Seconda istruzione di stampa dipendente dalla cond.x>4 \n");
}

if ( x < 4 )
{
printf("Prima istruzione di stampa dipendente dalla cond. x<4 \n");
printf("Seconda istruzione di stampa dipendente dalla cond.x<4 \n");
}

printf("\n************************ CASO 3 ***********************\n");

if ( x > 7 )
{
printf("Prima istruzione di stampa dipendente dalla cond. x>7 \n");
printf("Seconda istruzione di stampa dipendente dalla cond.x>7 \n");
}
else printf("else relativo a if (x>7) \n");

if ( x < 7 )
{
printf("Prima istruzione di stampa dipendente dalla cond. x<7 \n");
printf("Seconda istruzione di stampa dipendente dalla cond.x<7 \n");
}
else printf("else relativo a if (x<7) \n");

printf("\n************************ CASO 4 ***********************\n");

Linguaggio C - Programmi di esempio 9


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi
if ( x > 8 )
{
printf("Prima istruzione di stampa dipendente dalla cond. x>8 \n");
printf("Seconda istruzione di stampa dipendente dalla cond.x>8 \n");
}
else
{
printf("Prima istruzione nell'else di if (x>8) \n");
printf("Seconda istruzione nell'else di if (x>8) \n");
}

if ( x < 8 )
{
printf("Prima istruzione di stampa dipendente dalla cond. x<8 \n");
printf("Seconda istruzione di stampa dipendente dalla cond.x<8 \n");
}
else
{
printf("Prima istruzione nell'else di if (x<8) \n");
printf("Seconda istruzione nell'else di if (x<8) \n");
}
}

Output di if1.c:

************************ CASO 1 ***********************


Istruzione di stampa dipendente dalla condizione x>3
Istruzione di stampa indipendente dalla condizione x>3
Istruzione di stampa indipendente dalla condizione x<3

************************ CASO 2 ***********************


Prima istruzione di stampa dipendente dalla cond. x>4
Seconda istruzione di stampa dipendente dalla cond.x>4

************************ CASO 3 ***********************


else relativo a if (x>7)
Prima istruzione di stampa dipendente dalla cond. x<7
Seconda istruzione di stampa dipendente dalla cond.x<7

************************ CASO 4 ***********************


Prima istruzione nell'else di if (x>8)
Seconda istruzione nell'else di if (x>8)
Prima istruzione di stampa dipendente dalla cond. x<8
Seconda istruzione di stampa dipendente dalla cond.x<8

Linguaggio C - Programmi di esempio 10


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma : if2.c */
/* if annidati */
/****************************************************************/

#include <stdio.h>

void main()
{
int x,y;

/* LETTURA DATI */
printf("Introduci un intero x=");
scanf("%d",&x);
printf("Introduci un intero y=");
scanf("%d",&y);

printf("\n******************** CASO 1 ********************\n");

/* Nel caso di "if" innestati, l'else a chi viene associato ??? */


/* ogni else viene associato all'if piu' interno che ne e' privo*/

if ( x > 5 )
if ( x > y )
printf("%d > %d\n",x,y);
else
printf("Sono nell'else di if ( x > y )\n");

printf("\n******************** CASO 2 ********************\n");


if ( x > 5 )
{
if ( x > y )
printf("%d > %d\n",x,y);
}
else
printf("Sono nell'else di if ( x > 5 ) \n");
}

Output 1 di if2.c:

Introduci un intero x=3


Introduci un intero y=2 


3 e 2 sono inseriti in input

************************* CASO 1 *************************

************************* CASO 2 *************************


Sono nell’else di ( x > 5 )

Linguaggio C - Programmi di esempio 11


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

Output 2 di if2.c:

Introduci un intero x=7


Introduci un intero y=9 


7 e 9 sono inseriti in input

************************* CASO 1 *************************


Sono nell’else di ( x > y )

************************* CASO 2 *************************

Output 3 di if2.c:

Introduci un intero x=10


Introduci un intero y=6 


10 e 6 sono inseriti in input

************************* CASO 1 *************************


10 > 6

************************* CASO 2 *************************


10 > 6

Linguaggio C - Programmi di esempio 12


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma: equaz2.c */
/* Il seguente programma chiede all'operatore 3 numeri reali */
/* a, b, e c */
/* e calcola le eventuali radici dell'equazione di secondo grado*/
/****************************************************************/

#include <stdio.h>
#include <math.h> /* header file delle funzioni matematiche */

void main()
{
float a,b,c; /*coefficienti dell'equazione */
double delta,x1,x2;/*delta ed eventuali radici dell'equazione*/

printf("Primo coefficiente a = ");


scanf("%f",&a);
printf("Secondo coefficiente b = ");
scanf("%f",&b);
printf("Terzo coefficiente c = ");
scanf("%f",&c);

if (a == 0.0)
printf ("L'equazione in esame non e' di secondo grado\n");
else
{
delta = b * b - 4 * a * c;
if (delta < 0.0)
printf ("L'equazione non ammette soluzioni reali !\n");
else
{
x1 = (-b-sqrt(delta))/ (2*a);
printf("\nLa prima radice e' x1 = %f\n",x1);
x2 = (-b+sqrt(delta))/ (2*a);
printf("La seconda radice e' x2 = %f\n",x2);
}
}
}

Output 1 di equaz2.c:

Primo coefficiente a = 1
Secondo coefficiente b = -5
Terzo coefficiente c = 6 


1, -5 e 6 sono inseriti in input

La prima radice e' x1 = 2.000000


La seconda radice e' x2 = 3.000000

Linguaggio C - Programmi di esempio 13


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

Output 2 di equaz2.c:

Primo coefficiente a = 0
Secondo coefficiente b = -5
Terzo coefficiente c = 6 0, -5 e 6 sono inseriti in input


L'equazione in esame non e' di secondo grado

Output 3 di equaz2.c:

Primo coefficiente a = 2
Secondo coefficiente b = 4
Terzo coefficiente c = 3 0, -5 e 6 sono inseriti in input


L'equazione non ammette soluzioni reali !

Linguaggio C - Programmi di esempio 14


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma: switch.c */
/* L'istruzione switch e' una struttura di scelta plurima che */
/* controlla se un'espressione assume un valore all'interno di */
/* un certo insieme di costanti intere. */
/****************************************************************/

#include <stdio.h>

void main()
{
int a,b,c;

printf("Inserisci 3 numeri interi separati da spazio:\n");


scanf("%d %d %d",&a,&b,&c);
switch (a+b+c)
{
case 0:
printf("Somma = 0\n");
break;
case 1:
case 2:
case 3:
case 4:
case 5:
printf("Somma compresa fra 1 e 5\n");
break;
case 10:
printf("Somma = Dieci\n");
break;
default:
printf("Somma = %d\n",a+b+c);
break;
}
}
Output 1 di switch.c:
Inserisci 3 numeri interi separati da spazio:
3 1 0 input


Somma compresa fra 1 e 5

Output 2 di switch.c:
Inserisci 3 numeri interi separati da spazio:
2 6 4 input


Somma = 12

Output 2 di switch.c:

Inserisci 3 numeri interi separati da spazio:


2 4 4 input


Somma = Dieci

Linguaggio C - Programmi di esempio 15


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma : incrdecr.c */
/* Operatori di incremento e di decremento in notazione */
/* postfissa e prefissa */
/****************************************************************/

#include <stdio.h>
void main()
{
int c,c_iniz,c_fin;

c=4;
c++;
printf("c=%d\n",c);
c=4;
++c;
printf("c=%d\n",c);

c_iniz=0;
c_fin = c_iniz++;
printf("c_fin=%d c_iniz=%d (notazione postfissa)\n",c_fin, c_iniz);

c_iniz=0;
c_fin = ++c_iniz;
printf("c_fin=%d c_iniz=%d (notazione prefissa)\n",c_fin, c_iniz);
} /* END MAIN PROGRAM */

Output di incrdecr.c:

c=5
c=5
c_fin=0 c_iniz=1 (notazione postfissa)
c_fin=1 c_iniz=1 (notazione prefissa)

Linguaggio C - Programmi di esempio 16


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/*****************************************************/
/* Nome Programma : maxfor1.c */
/* Questo programma chiede in input n numeri interi */
/* e ne trova il valore del piu' grande e la sua */
/* posizione all'interno del vettore */
/* (se ci fossero piu' massimi, troverebbe il primo) */
/*****************************************************/
/* Il costrutto del FOR e' : for (espr_1; espr_2; espr_3)
istruzioni;

espr_1 viene utilizzata come INIZIALIZZAZIONE


espr_2 viene utilizzata come CONDIZIONE
espr_3 viene utilizzata come INCREMENTO

Ognuna delle 3 parti puo' essere tralasciata.


I punti e virgola devono essere presenti.*/

#include <stdio.h>
void main()
{
int i;
int max, pos_max;
int num[10];

/* LETTURA DEI DATI DI INPUT */


printf("Introduci 10 numeri interi\n\n");
for (i=0; i<10; i=i+1)
{
printf("num[%d]=",i);
scanf("%d",&num[i]);
}
/* NUMERO PIU' GRANDE E SUA POSIZIONE NEL VETTORE */
max=num[0];
pos_max=0;
for (i=1; i<10; i=i+1)
{
if (max<num[i])
{
max=num[i];
pos_max=i;
}
}
printf("\n");

/* STAMPA DELL'ELABORAZIONE */
printf("Il massimo e' %d ",max);
printf("sulla componente numero %d\n", pos_max);

} /* END MAIN PROGRAM */

Linguaggio C - Programmi di esempio 17


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

Output di maxfor1.c:

N.B.: Se si inserissero come dati di input 3 (num[0])


17 (num[1])
21 (num[2])
157 (num[3])
-7 (num[4])
189 (num[5])
237 (num[6])
117 (num[7])
237 (num[8])
107 (num[9])

Il massimo e' 237 sulla componente numero 6

Linguaggio C - Programmi di esempio 18


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/*****************************************************/
/* Nome programma : maxfor2.c */
/* Questo programma chiede in input n numeri interi */
/* e ne trova il valore del piu' grande e la sua */
/* posizione all'interno del vettore */
/* (se ci fossero piu' massimi, troverebbe l'ultimo) */
/* Uso delle COSTANTI SIMBOLICHE e del costrutto FOR */
/* #define NOME testo da sostituire */
/*****************************************************/

#include <stdio.h>

/* I numeri espliciti non forniscono alcuna informazione al lettore*/


/* Non e' semplice effettuare una modifica al programma */
#define DIMENSIONE 10

void main()
{
int i;
int max, pos_max;
int num[DIMENSIONE];

/* LETTURA DEI DATI DI INPUT */


printf("Introduci %d numeri interi\n\n",DIMENSIONE);
for (i=0; i<DIMENSIONE; i++)
{
printf("num[%d]=",i);
scanf("%d",&num[i]);
}

/* NUMERO PIU' GRANDE E SUA POSIZIONE NEL VETTORE */


max=num[0];
pos_max=0;
for (i=1; i<DIMENSIONE; i++)
{
if (max<=num[i])
{
max=num[i];
pos_max=i;
}
}
/* STAMPA DELL'ELABORAZIONE */
printf("\nIl massimo e' %d ",max);
printf("sulla componente numero %d\n", pos_max);

} /* END MAIN PROGRAM */

Linguaggio C - Programmi di esempio 19


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

Output di maxfor2.c:

N.B.: Se si inserissero come dati di input 3 (num[0])


17 (num[1])
21 (num[2])
157 (num[3])
-7 (num[4])
189 (num[5])
237 (num[6])
117 (num[7])
237 (num[8])
107 (num[9])

Il massimo e' 237 sulla componente numero 8

Linguaggio C - Programmi di esempio 20


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/*****************************************************/
/* Nome programma : maxwhile.c */
/* Questo programma chiede in input n numeri interi */
/* e ne trova il valore del piu' grande e la sua */
/* posizione all'interno del vettore */
/* (se ci fossero piu' massimi, troverebbe il primo) */
/*****************************************************/

/* while(condizione) istruzioni;

le istruzioni vengono eseguite se la condizione e' vera */

#include <stdio.h>

void main()
{
int i;
int max, pos_max;
int num[10];

/* LETTURA DEI DATI DI INPUT */


printf("Introduci 10 numeri interi\n\n");
i=0;
while (i<10)
{
printf("num[%d]=",i);
scanf("%d",&num[i]);
i=i+1;
}

/* NUMERO PIU' GRANDE E SUA POSIZIONE NEL VETTORE */


max=num[0];
pos_max=0;
i=1;
while (i<10)
{
if (max<num[i])
{
max=num[i];
pos_max=i;
}
i=i+1;
}

/* STAMPA DELL'ELABORAZIONE */
printf("\nIl massimo e' %d ",max);
printf("sulla componente numero %d\n", pos_max);
} /* END MAIN PROGRAM */

Linguaggio C - Programmi di esempio 21


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

Output di maxwhile.c:

N.B.: Se si inserissero come dati di input 3 (num[0])


17 (num[1])
21 (num[2])
157 (num[3])
-7 (num[4])
189 (num[5])
237 (num[6])
117 (num[7])
237 (num[8])
107 (num[9])

Il massimo e' 237 sulla componente numero 6

Linguaggio C - Programmi di esempio 22


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/*****************************************************/
/* Nome programma : maxdowhi.c */
/* Questo programma chiede in input n numeri interi */
/* e ne trova il valore del piu' grande e la sua */
/* posizione all'interno del vettore */
/* (se ci fossero piu' massimi, troverebbe il primo) */
/*****************************************************/

/* do istruzioni; while(condizione);

while e for controllano la condizione di terminazione all'inizio


del ciclo. Il costrutto do-while controlla alla fine del ciclo*/

#include <stdio.h>

void main()
{
int i;
int max, pos_max;
int num[10];

/* LETTURA DEI DATI DI INPUT */


printf("Introduci 10 numeri interi\n\n");
i=0;

do
{
printf("Elemento[%d]=",i);
scanf("%d",&num[i]);
i=i+1;
} while (i<10);

/* NUMERO PIU' GRANDE E SUA POSIZIONE NEL VETTORE */


max=num[0];
pos_max=0;
i=1;
do
{
if (max<num[i])
{
max=num[i];
pos_max=i;
}
i=i+1;
} while (i<10);
/* STAMPA DELL'ELABORAZIONE */
printf("\nIl massimo e' %d ",max);
printf("sulla componente numero %d\n", pos_max);
} /* END MAIN PROGRAM */

Linguaggio C - Programmi di esempio 23


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

Output di maxdowhi.c:

N.B.: Se si inserissero come dati di input 3 (num[0])


17 (num[1])
21 (num[2])
157 (num[3])
-7 (num[4])
189 (num[5])
237 (num[6])
117 (num[7])
237 (num[8])
107 (num[9])

Il massimo e' 237 sulla componente numero 6

Linguaggio C - Programmi di esempio 24


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma : media.c */
/* Programma che calcola la somma e il valore medio di numeri */
/****************************************************************/

#include <stdio.h>

void main()
{
int numero; /* Numero inserito dall'utente */
int totale = 0; /* Somma dei numeri inseriti */
int conta = 0; /* Contatore dei numeri inseriti */

printf("Inserisci 0 per finire\n");

do
{
scanf("%d", &numero);
totale += numero; /* Ossia: totale = totale + numero */
if(numero == 0)
{
printf("Grazie. Fine routine.\n");
if (conta==0) conta=1;
}
else conta++;
} while (numero != 0)

printf("La somma totale e' %d\n", totale);


printf("Il valore medio e' %f\n", (float)totale/conta);
}

Output1 di media.c:
Inserisci 0 per finire
3 Inizio inserimento numeri
5
7
3
1
0 Fine inserimento numeri
Grazie. Fine routine.
La somma totale e' 19
Il valore medio e' 3.800000
Output2 di media.c:
Inserisci 0 per finire
0 Unico valore immesso
Grazie. Fine routine.
La somma totale e' 0
Il valore medio e' 0.000000

Linguaggio C - Programmi di esempio 25


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/*******************************/
/* Nome programma : breakcon.c */
/* Istruzioni break e continue */
/*******************************/

#include <stdio.h>
#define DIM 5

void main()
{
int i,conta=0;
int a[DIM];

/**********************************************************/
/* L'istruzione break provoca un'uscita incondizionata da */
/* un for, un while oppure un do */
/**********************************************************/
for (i=5;;i++)
{
if (i==11) break;
printf("i=%d\n",i);
}

printf("\nIntroduci %d numeri interi :\n",DIM);


for (i=0; i<DIM; i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
/**********************************************************/
/* L'istruzione continue forza l'inizio dell'iterazione */
/* successiva di un for, un while oppure un do */
/**********************************************************/
printf("\nI numeri positivi sono:\n");
for (i=0; i<DIM; i++)
{
if (a[i]<=0) continue;
conta += 1;
printf("a[%d]=%d\n",i,a[i]);
}
printf("\nSono stati introdotti %d numeri positivi\n",conta);
} /* END MAIN PROGRAM */

Linguaggio C - Programmi di esempio 26


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

Output1 di media.c:
i=5
i=6
i=7
i=8
i=9
i=10

Introduci 5 numeri interi :


a[0]=4 Inizio inserimento numeri
a[1]=-5
a[2]=-3
a[3]=2
a[4]=5 Fine inserimento numeri

I numeri positivi sono:


a[0]=4
a[3]=2
a[4]=5

Sono stati introdotti 3 numeri positivi

Linguaggio C - Programmi di esempio 27


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma : puntat0.c */
/* l'operatore unario & fornisce l'indirizzo di un oggetto */
/* l'operatore unario * e' detto operatore di indirezione e */
/* quando viene applicato ad un puntatore esso accede allo */
/* oggetto puntato */
/****************************************************************/

#include <stdio.h>

void main()
{
int intero;
int *p_intero;

intero = 10;

/* L'indirizzo della variabile "intero" viene assegnato */


/* alla variabile "p_intero". Si e' soliti dire che */
/* p_intero punta a intero */

p_intero = &intero;

/* Il contenuto della variabile "intero" viene */


/* incrementato di una unita' usando "*p_intero" */
*p_intero += 1;

printf("intero (attraverso il puntatore) = %d\n",*p_intero);


printf("intero (usando la variabile) = %d\n",intero);

} /* Fine di void main(void) */

Output di puntat0.c:

intero (attraverso il puntatore) = 11


intero (usando la variabile) = 11

Linguaggio C - Programmi di esempio 28


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma : puntat1.c */
/* Stampa contenuto e indirizzo di una variabile di tipo intero */
/* Stampa contenuto e indirizzo di un puntatore a intero */
/****************************************************************/

#include <stdio.h>

void main()
{
int var_int = 10;
int *punt_int;

/* %x serve a stampare un valore esadecimale */

printf(" Indirizzo di var_int : %x\n", &var_int);


printf(" Contenuto di var_int : %d\n", var_int);

punt_int = &var_int;
printf("\nDopo l'istruzione: punt_int = &var_int;\n\n");

printf(" Indirizzo di punt_int: %x\n", &punt_int);


printf(" Contenuto di punt_int: %x\n", punt_int);
printf("Valore a cui punta punt_int: %d\n", *punt_int);

} /* Fine di void main(void) */

Output di puntat1.c:

Indirizzo di var_int : 51e30


Contenuto di var_int : 10

Dopo l'istruzione: punt_int = &var_int;

Indirizzo di punt_int: 51e2c


Contenuto di punt_int: 51e30
Valore a cui punta punt_int: 10

Linguaggio C - Programmi di esempio 29


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma: vett_pun.c */
/* Puntatori e vettori */
/****************************************************************/

#include <stdio.h>
#define DIMENSIONE 6

void main()
{
int a[DIMENSIONE];
int i;
int *punt_int;

for (i=0; i<DIMENSIONE; i++)


{
a[i]=i*10;
printf("a[%d]=%d\n",i,a[i]);
}
printf("\n************************************************\n");

punt_int = &a[0];
printf("a[0] (attraverso punt_int)=%d\n",*punt_int);
*punt_int = *punt_int + 1;
printf("a[0] (dopo incremento *punt_int)=%d\n",a[0]);
printf("\n************************************************\n");

printf("Indirizzo ottenuto con &a[0] --> %x",&a[0]);

/* Il nome di un vettore e' sinonimo */


/* dell'indirizzo del suo primo elemento */
printf("\nIndirizzo ottenuto con a --> %x",a);
printf("\n\n***********************************************\n");

punt_int++; /* Adesso punt_int punta a a[1] */

printf("Dopo punt_int++; *punt_int = %d \n",*punt_int);

punt_int += 2; /* Adesso punt_int punta a a[3] */

printf("Dopo punt_int += 2; *punt_int = %d \n",*punt_int);


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

printf("a[5] = %d\n",a[5]);
printf("Introdurre un nuovo valore per a[5] -->");
scanf("%d",a+5);
printf("a[5] = %d\n",a[5]);
printf("\n***********************************************\n");

} /* Fine di void main()*/

Linguaggio C - Programmi di esempio 30


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

Output di vett_punt.c:

a[0]=0
a[1]=10
a[2]=20
a[3]=30
a[4]=40
a[5]=50

***********************************************
a[0] (attraverso punt_int)=0
a[0] (dopo incremento *punt_int)=1

***********************************************
Indirizzo ottenuto con &a[0] --> 51e10
Indirizzo ottenuto con a --> 51e10

***********************************************
Dopo punt_int++; *punt_int = 10
Dopo punt_int += 2; *punt_int = 30

***********************************************
a[5] = 50
Introdurre un nuovo valore per a[5] -->12 input dell’utente
a[5] = 12

***********************************************

Linguaggio C - Programmi di esempio 31


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma : puntat2.c */
/* incrementare un puntatore ... */
/****************************************************************/

#include <stdio.h>

#define DIM 10

void main()
{
int k;
int vett_int[DIM];
int *pint1, *pint2;
char vett_car[DIM];
char *pcar1, *pcar2;

/******* INIZIALIZZA IL VETTORE E NE STAMPA GLI ELEMENTI ********/

for (k=0; k<DIM; k++)


{
vett_int[k] = k+10;
printf("vett_int[%d] = %d\n",k,vett_int[k]);
}
printf("\n\n");

pint1=pint2=vett_int; /* analogo a pint1=pint2=&vett_int[0] */


printf("vett_int[0] = %d = %d\n\n",*pint1,*pint2);

pint2++;
printf("Indirizzo di 2 int consecutivi\n");
printf("Indirizzo pint1 --> %x\n",pint1);
printf("Indirizzo pint2 --> %x\n\n",pint2);

pcar1 = pcar2 = vett_car;


pcar2++;
printf("Indirizzo di 2 caratteri consecutivi\n");
printf("Indirizzo pcar1 --> %x\n",pcar1);
printf("Indirizzo pcar2 --> %x\n",pcar2);

} /* Fine di void main()*/

Linguaggio C - Programmi di esempio 32


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

Output di puntat2.c:

vett_int[0] = 10
vett_int[1] = 11
vett_int[2] = 12
vett_int[3] = 13
vett_int[4] = 14
vett_int[5] = 15
vett_int[6] = 16
vett_int[7] = 17
vett_int[8] = 18
vett_int[9] = 19

vett_int[0] = 10 = 10

Indirizzo di 2 int consecutivi


Indirizzo pint1 --> 51e00
Indirizzo pint2 --> 51e04

Indirizzo di 2 caratteri consecutivi


Indirizzo pcar1 --> 51dec
Indirizzo pcar2 --> 51ded

Linguaggio C - Programmi di esempio 33


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma: func1.c */
/* Una semplice funzione: countdown per lo Shuttle */
/****************************************************************/

#include <stdio.h>
#define WARNING -1

int get_status(void); /* Prototipo della funzione */

void main(void)
{
int contatore = 10;

while (contatore > 0)


{
if (get_status() == WARNING) break;
printf("%d\n", contatore);
contatore--;
}
if (contatore == 0) printf("Shuttle lanciato\n");
else
{
printf("Ricevuto warning\n");
printf("Countdown fermato a t=%d\n", contatore);
}
} /* Fine di void main(void)*/

int get_status(void)
{
return WARNING;
}

Output di func1.c:

Ricevuto warning
Countdown fermato a t=10

Output2 di func1.c:

Attenzione se la funzione fosse: L'output sarebbe:

int get_status(void) 10
{ 9
return 1; ...
} 1
Shuttle lanciato

Linguaggio C - Programmi di esempio 34


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma: func2.c */
/* Calcola l'IVA sul prezzo di acquisto */
/****************************************************************/

#include <stdio.h>
#define TASSO 0.19 /* IVA */

float tassa(float ammontare); /* Prototipo della funzione */


float valore, ammontare_tassa, totale; /* Variabili globali */

int main(void)
{
printf("Inserire il prezzo di vendita: ");
scanf("%f", &valore);

ammontare_tassa = tassa(valore);
totale = valore + ammontare_tassa;

printf("\nAmmontare dell'acquisto: %10.f", valore);


printf("\n Tassa: %10.f", ammontare_tassa);
printf("\n___________________________________");
printf("\n Costo totale: %10.f\n", totale);
} /* Fine di void main(void)*/

float tassa(float ammontare)


{
return(ammontare * TASSO);
}

Output di func2.c:

Inserire il prezzo di vendita: 324750 input

Ammontare dell'acquisto: 324750


Tassa: 61702
___________________________________
Costo totale: 386452

Linguaggio C - Programmi di esempio 35


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma: funzioni.c */
/* In questo programma una funzione utilizza un'altra funzione */
/****************************************************************/

#include <stdio.h>

void Funz1(void);
void Funz2(void);

void main(void)
{
Funz1();
Funz2();
} /* Fine void main(void) */

void Funz1(void)
{
printf("Sono nella funzione Funz1()\n");
Funz2();
printf("Esco da Funz1()\n\n\n\n");
}

void Funz2(void)
{
printf("Sono nella funzione Funz2()\n");
}

Output di funzioni.c:

Sono nella funzione Funz1()


Sono nella funzione Funz2()
Esco da Funz1()

Sono nella funzione Funz2

Linguaggio C - Programmi di esempio 36


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma : param.c */
/* Osservazione sui parametri */
/****************************************************************/

#include <stdio.h>

void Prova(int par1);

void main(void)
{
int param;

param = 21;
Prova(param);
printf("Valore di param --> %d (Nel main)\n",param);

} /* Fine void main(void) */

void Prova(int par1)


{
par1 = par1 + 10;
printf("Valore di par1 --> %d (Nella function Prova)\n",par1);
}

Output di param.c:

Valore di par1 --> 31 (Nella function Prova)


Valore di param --> 21 (Nel main)

Linguaggio C - Programmi di esempio 37


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma : swap1.c */
/* Uso dei parametri passati per valore */
/****************************************************************/

#include <stdio.h>

void Swap(int x, int y);

void main(void)
{
int num1, num2;

printf("Introduci un numero intero num1 = ");


scanf("%d",&num1);
printf("Introduci un numero intero num2 = ");
scanf("%d",&num2);
printf("\nPrima della Swap\nnum1 = %d\t num2 = %d",num1,num2);
Swap(num1,num2);
printf("\n\nDopo la Swap\nnum1 = %d\t num2 = %d\n",num1,num2);

} /* Fine void main(void) */

void Swap(int x, int y)


{
int temp;

temp = x;
x = y;
y = temp;
printf("\n\nIn Swap \nx = %d\t y = %d",x,y);
} /* End della funzione Swap */

Output di swap1.c:

Introduci un numero intero num1 = 5 input


Introduci un numero intero num2 = 4 input

Prima della Swap


num1 = 5 num2 = 4

In Swap
x = 4 y = 5

Dopo la Swap
num1 = 5 num2 = 4

Linguaggio C - Programmi di esempio 38


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma: swap2.c */
/* Uso dei parametri passati per indirizzo */
/****************************************************************/

#include <stdio.h>

void Swap(int *x, int *y);

void main(void)
{
int num1, num2;

printf("Introduci un numero intero num1 = ");


scanf("%d",&num1);
printf("Introduci un numero intero num2 = ");
scanf("%d",&num2);
printf("\nPrima della Swap\nnum1 = %d\t num2 = %d",num1,num2);
Swap(&num1,&num2);
printf("\n\nDopo la Swap\nnum1 = %d\t num2 = %d\n",num1,num2);

} /* Fine void main(void) */

void Swap(int *x, int *y)


{
int temp;

temp = *x;
*x = *y;
*y = temp;
} /* End della funzione Swap */

Output di swap2.c:

Introduci un numero intero num1 = 5 


input
Introduci un numero intero num2 = 10 


input

Prima della Swap


num1 = 5 num2 = 10

Dopo la Swap
num1 = 10 num2 = 5

Linguaggio C - Programmi di esempio 39


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma: varlocal.c */
/* Differenze fra variabili locali e globali */
/****************************************************************/

#include <stdio.h>

void Prova(void);

int i;

void main(void)
{
i = 21;
Prova();
printf(" Valore di i --> %d (Nel main)\n",i);
} /* End main() */

void Prova(void)
{
int i;

i = 10;
printf(" Valore di i --> %d (Nella function Prova)\n",i);
}

Output di varlocal.c:

Valore di i --> 10 (Nella function Prova)


Valore di i --> 21 (Nel main)

Linguaggio C - Programmi di esempio 40


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma : locglob.c */
/* Uso delle variabili locali e globali */
/****************************************************************/

#include <stdio.h>

void Funz1(void);
void Funz2(void);
int i,j;

void main()
{
int i;

i=0;j=0;
Funz1();
Funz2();
printf("Nella main() i=%d \t j=%d \n",i,j);
} /* END MAIN PROGRAM */

void Funz1(void)
{
int j;

i=5; j=4;
i++; j++;
printf("Nella Funz1() i=%d \t j=%d \n",i,j);
} /* End Funz1 */

void Funz2(void)
{
i++; j++;
printf("Nella Funz2() i=%d \t j=%d \n",i,j);
} /* End Funz2 */

Output di locglob.c:

Nella Funz1() i=6 j=5


Nella Funz2() i=7 j=1
Nella main() i=0 j=1

Linguaggio C - Programmi di esempio 41


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma: parind.C ( PARametri per INDirizzo ) */
/* Questo programma chiede in input n numeri interi e ne trova: */
/* 1) il massimo; */
/* 2) la posizione del massimo (se ci fossero piu' massimi, */
/* troverebbe la posizione del primo) */
/****************************************************************/

#include <stdio.h>
#include <stdlib.h>

#define DIMENSIONE 100

void New_page(void);
void Leggi(int *num, int num_elem);
void Trova_Max_Pos(int *vet, int dim_vet, int *max, int *pos_max);

/* e q u i v a l e n t e m e n t e */
/* void Trova_Max_Pos(int vet[],int dim_vet,int *max,int *pos_max);
*/

void main()
{
int num[DIMENSIONE];
int n_componenti;
int max, pos_max;

do
{
New_page();
printf("Numero di elementi da introdurre [1,%d]\n", DIMENSIONE);
scanf("%d",&n_componenti);
}
while ((n_componenti <= 0) || (n_componenti > DIMENSIONE));
Leggi(num, n_componenti);
Trova_Max_Pos(num, n_componenti, &max, &pos_max);

/* STAMPA DELL'ELABORAZIONE */
printf("Il massimo e' %d sulla componente %d\n",max, pos_max);
} /* End main() */

/* "PULISCE" LO SCHERMO */

void New_page(void)
{
system("cls"); /* Consente di eseguire comandi DOS */
} /* Bisogna includere stdlib.h */

Linguaggio C - Programmi di esempio 42


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi
/* LETTURA DEI DATI DI INPUT */

void Leggi(int *num, int num_elem)


{
int i;

printf("Introduci %d numeri interi\n\n",num_elem);


for (i=0; i<num_elem; i++)
{
printf("Elemento[%d]=",i);
scanf("%d",num+i);
}
printf("\n");
}

/* TROVA IL MASSIMO E LA SUA POSIZIONE */

void Trova_Max_Pos(int *vet, int dim_vet, int *max, int *pos_max)


{
int i;

*max = vet[0];
*pos_max = 0;
for (i=1; i<dim_vet; i++)
if (*max < vet[i])
{
*max = vet[i];
*pos_max = i;
}
}

Output di parind.c:

Numero di elementi da introdurre [1,100]


8 
input


Introduci 8 numeri interi

Elemento[0]=56 


inizio input
Elemento[1]=25
Elemento[2]=-3
Elemento[3]=8
Elemento[4]=44
Elemento[5]=56
Elemento[6]=45
Elemento[7]=56 


fine input

Il massimo e' 56 ed e' la componente numero 0

Linguaggio C - Programmi di esempio 43


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma : static.c */
/* Funzione che usa il modificatore di accesso "static" */
/****************************************************************/

#include <stdio.h>

int Conta(void);

void main()
{
while ( Conta() < 10 );
}

int Conta(void)
{
static int chiamata = 0; /* La classe static specifica che le
celle di memoria della variabile
vengono liberate alla fine della
esecuzione del programmma */
chiamata++;
chiamata++;
printf("Chiamata numero %3d alla funzione Conta\n", chiamata);

return chiamata;
}

Output di static.c:

Chiamata numero 1 alla funzione Conta


Chiamata numero 2 alla funzione Conta
Chiamata numero 3 alla funzione Conta
Chiamata numero 4 alla funzione Conta
Chiamata numero 5 alla funzione Conta
Chiamata numero 6 alla funzione Conta
Chiamata numero 7 alla funzione Conta
Chiamata numero 8 alla funzione Conta
Chiamata numero 9 alla funzione Conta
Chiamata numero 10 alla funzione Conta

Linguaggio C - Programmi di esempio 44


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************************************/
/* Nome programma : main.c */
/* Il main è una vera e propria funzione con alcuni parametri. */
/* I primi due parametri sono legati alla linea di comando e */
/* vengono attivati dall'esecuzione del comando stesso (nome del*/
/* programma). */
/****************************************************************/

#include <stdio.h>

/* Il main si apre come: void main(int argc, char* argv[]) */


/* "argc" è il numero di parametri passati al momento della */
/* esecuzione. Nome_programma + INVIO causa argc = 1, mentre */
/* Nome_programma parametro --> argc = 2 */
/* "*argv[]" e' un vettore di stringhe. La sua dimensione */
/* dipende da "argc". argv[0] = Nome_programma */

void main(int argc, char *argv[])


{
printf("Questo e' il programma %s\n\n",argv[0]);
if(argc < 2) printf("Sintassi: main Nome_Utente\n\n");
else printf("Salve %s!!!\n",argv[1]);
}

Output 1 di main.c:

C:\cc\SorgC\funzioni>main ↵ (linea di comando)

Questo e' il programma c:/cc/sorgc/funzioni/main.exe

Sintassi: main Nome_Utente

Output 2 di main.c:

C:\cc\SorgC\funzioni>main Valerio ↵ (linea di comando)

Questo e' il programma c:/cc/sorgc/funzioni/main.exe

Salve Valerio!!!

Linguaggio C - Programmi di esempio 45


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/*************************************************/
/* Nome programma : readwrit.c ( READ WRITe ) */
/* Questo programma leggere e scrivere su file */
/*************************************************/

#include <stdio.h>

#define NUM_INTERI 10

void Leggi_dati(void);
void Scrivi_dati(void);

int dati[NUM_INTERI];

void main(void)
{
system("cls");
Leggi_dati();
Scrivi_dati();
}/* End main() */

void Leggi_dati(void)
{
FILE *in; /* puntatore a FILE */
int i;
char nome_file_in[20];

printf("Inserire il nome del file dati di input --> ");


scanf("%s",nome_file_in);

in = fopen(nome_file_in,"r");
/* il primo argomento e' una stringa contenente il nome del file
il secondo argomento e' anch'esso una stringa che indica
come si intende utilizzare il file:
"r" (read) --> in lettura
"w" (write) --> in scrittura
"a" (append) --> in aggiornamento
fopen restituisce un puntatore a file
(restituisce NULL nel caso di errore) */

if(in==NULL)
{
printf("Il file %s non esiste\n\n",nome_file_in);
exit(0);
}

Linguaggio C - Programmi di esempio 46


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi
/* La fscanf e' identica alla scanf ad eccezione del fatto
che il suo primo argomento e' un puntatore a FILE che
specifica il file da cui leggere */

for(i=0;i<NUM_INTERI;i++)
fscanf(in,"%d",&dati[i]);

/* la funzione fclose interrompe la connessione creata


da fopen fra il puntatore ed il nome del file */
fclose(in);

for(i=0;i<NUM_INTERI;i++)
printf("Num[%d] = %d\n",i,dati[i]);
}/* End Leggi_dati() */

void Scrivi_dati(void)
{
FILE *ou; /* puntatore a FILE */
int i;
char nome_file_ou[20];

printf("\nInserire il nome del file dati di output --> ");


scanf("%s",nome_file_ou);

ou = fopen(nome_file_ou,"w");

if(ou==NULL)
{
printf("Il file %s non puo' essere aperto\n",nome_file_ou);
exit(0);
}

/* La fprintf e' identica alla printf ad eccezione del fatto


che il suo primo argomento e' un puntatore a FILE che
specifica il file in cui scrivere */

for(i=0;i<NUM_INTERI;i++)
{
dati[i] *= -1;
fprintf(ou,"%d\n",dati[i]);
}
fclose(ou);
}/* End Leggi_dati() */

Linguaggio C - Programmi di esempio 47


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/***********************************/
/* Nome programma : calloc.c */
/* Allocazione dinamica con calloc */
/***********************************/

#include <stdio.h>
#include <stdlib.h> /* Per l'uso della calloc */

void main(void)
{
int *pi;
int num_elem;
int i;

printf("Numero di interi richiesti -->");


scanf("%d",&num_elem);
printf("\n");
pi = (int *)calloc(num_elem,sizeof(int));
/* Gli elementi sono azzerati */
if (pi == NULL) /* sizeof(tipo) restituisce il */
{ /* numero di byte di tipo */
printf("MEMORIA RICHIESTA NON DISPONIBILE !!!");
exit(0);
}
for (i=0; i<num_elem; i++)
{
pi[i] += i;
printf("pi[%d]=%d\n",i,pi[i]);
}
free(pi); /* Per liberare l'area di memoria */
} /* END MAIN PROGRAM */

Output di calloc.c:

Numero di interi richiesti --> 5 


input dell’utente

pi[0]=0
pi[1]=1
pi[2]=2
pi[3]=3
pi[4]=4

Linguaggio C - Programmi di esempio 48


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/**********************************************/
/* Nome programma : struct1.c */
/* Una struttura e' una collezione contenente */
/* una o piu' variabili, di uno o piu' tipi, */
/* raggruppate da un nome comune per motivi */
/* di maneggevolezza */
/**********************************************/

#include <stdio.h>

struct point
{
int x;
int y;
};
/* La parola chiave "struct" introduce una dichiarazione di struttura */
/* "point" e' chiamato identificatore o tag della struttura ed e' */
/* opzionale. */
/* "x" e "y" vengono chiamati membri della struttura */
/* Descrive soltanto la struttura e non riserva area di memoria */

void main(void)
{
struct point p; /* p e' una variabile di tipo struct point */

p.x = 5;
p.y = 10;
printf("(%d,%d)\n",p.x,p.y);
} /* End main() */

Output di struct1.c:

(5,10)

Linguaggio C - Programmi di esempio 49


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/****************************************/
/* Nome programma : struct2.c */
/* Le strutture possono essere copiate */
/* mediante un'unica istruzione */
/****************************************/

#include <stdio.h>

struct point
{
int x;
int y;
};

void main(void)
{
struct point p1,p2;

p1.x = 5;
p1.y = 10;
p2 = p1;
printf("(%d,%d)\n",p2.x,p2.y);
} /* End main() */

Output di struct2.c:

(5,10)

Linguaggio C - Programmi di esempio 50


Corso di Informatica Generale (C. L. Economia e Commercio) – Ing. Valerio Lacagnina
Linguaggio C - Esempi

/**********************************/
/* Nome programma : struct3.c */
/* Puntatori alle strutture. */
/**********************************/

#include <stdio.h>

struct point
{
int x;
int y;
};

void main(void)
{
/* pp e' un puntatore ad una struttura di tipo struct point */
struct point *pp;
struct point origine;

origine.x = 0;
origine.y = 0;
pp = &origine;
printf("O=(%d,%d)\n",(*pp).x,(*pp).y);
/* In alternativa e' possibile usare puntatore -> membro
struttura */
printf("O=(%d,%d)\n",pp->x,pp->y);
} /* End main() */

Output di struct3.c:

O=(0,0)
O=(0,0)

Linguaggio C - Programmi di esempio 51

Potrebbero piacerti anche