Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
L’istruzione if è di scelta semplice
Esempio: Se la condizione è vera si esegue il
ramo if, mentre se la condizione è falsa
if (condizione) si esegue il ramo else.
{istruzione}
else {istruzione}
While
Si usa l’istruzione while per eseguire ripetitivamente un ciclo fintanto che la condizione di
partenza è vera. Per cui viene svolta l’azione e poi si ri-verifica se la condizione è vera per
eventualmente ripetere l’azione. Se la condizione è falsa, l’azione non verrà mai svolta.
esempio 1: Ciclo a condizione iniziale
while ( condizione)
{ (azione da ripetere)
}
esempio 2:
do
{ (azione da ripetere) Ciclo a condizione finale
——-
} while ( condizione)
Switch
L’istruzione switch è equivalente a usare una cascata di if ... else.
Sintassi:
switch ( espressione ) {
case a:
/* istruzioni */
break;
case b:
/* istruzioni */
break;
default:
/* istruzioni per tutti gli altri casi */
case
• tramite l’istruzione si indicano i valori con cui effettuare il confronto
break
• tramite l’istruzione si “esce” dallo switch
• default
con l’istruzione (opzionale ma fortemente consigliata) si indicano le istruzioni da fare
quando non si è caduti in nessuno dei casi indicati.
For
L’istruzione for viene utilizzata per codificare cicli a contatore: istruzioni cicliche cioè che devono
essere ripetute un numero definito di volte.
Sintassi:
for(esp1; esp2; esp3)
{ istruzione
——-} del ciclo)
l ciclo inizia con l'esecuzione di esp1 (inizializzazione la quale non verrà più eseguita.
di controllo del ciclo - di permanenza).
Quindi viene esaminata esp2 (condizione Se esp2
risulta vera, viene eseguita istruzione, altrimenti il ciclo non viene percorso neppure una volta.
Successivamente, alla esecuzione delle istruzioni contenute nel ciclo, viene eseguita esp3
(aggiornamento) e di nuovo valutata esp2 che se risulta essere vera dà luogo ad una nuova
esecuzione delle istruzioni contenute nel ciclo. Il processo si ripete finché esp2 risulta essere
falsa.
Esempio:
{
somma = 0;
for(i = 1; i <= 3; i++) {
scanf("%d", &numero);
somma = numero;
}
Il programma per prima cosa assegna il valore 1 alla variabile i (la prima espressione del for), si
controlla se il valore di i è non superiore a 3 (la seconda espressione) e poiché l’espressione
risulta vera verranno eseguite le istruzioni inserite nel ciclo (l’input di numero e l’aggiornamento di
somma). Terminate le istruzioni che compongono il ciclo si esegue l’aggiornamento di i così come
risulta dalla terza espressione contenuta nel for, si ripete il controllo contenuto nella seconda
espressione e si continua come prima finché il valore di i non rende falsa la condizione.
Array (vettori unidimensionali)
Un array è una struttura contenente un certo numero di dati, detti elementi, tutti dello stesso tipo.
Sintassi:
• Int corso[15]
(array chiamato corso di 15 elementi)
• #define N10
Int corso [N]
(array chiamato corso di 10 elementi)
Inizializzazione
Int corso[6] = {2, 3, 4, 5, 6, 7};
Azzerare gli elementi di un array
for (i=0; i<N; i++)
a[i]=0;
Leggere dei dati - scanf
for (i=0; i<N; i++)
scanf (“%d”, &a[i]);
Somma gli elementi di a
for (i=0; i<N; i++)
scanf (“%d”, &a[i]);
sum += a[i];
Matrici (vettori multidimensionali)
Una matrice è un vettore a due dimensioni.
Sintassi:
• Int a[15] [30]
(matrice di 15 righe e 30 colonne)
• #define N10
#define B8
Int a [N] [B]
(matrice di N righe e B colonne)
Per accedere all’elemento m che si trova alla riga i e colonna j, bisogna scrivere: m[i][j];
Leggere dei dati - scanf
for (i=0; i<N; i++)
for (j=0; j<N; j++)
scanf (“%d”, &a[i]);
Stringhe
Una stringa è una sequenza di caratteri. Per una stringa di n caratteri, il compilatore alloca per la
n + 1 byte,
stringa questo byte contiene un carattere extra (carattere null) che segna la fine della
stringa.
Inizializzare una variabile stringa
Char date[8] = 12 luglio;
Funzioni delle stringhe
• strcpy
La copia la stringa1 all’interno della stringa2
a2 è la destinazione, mentre a1 è la sorgente
esempio:
strcpy (a2, a1);
• strlen
La restituisce la lunghezza della stringa s, ovvero il numero di caratteri presenti nella
stringa fino al tappo (escluso)
esempio:
int a;
char s1;
a = strlen (“s1”);
• strcmp
La confronta due stringhe s1 e s2 basandosi su
un ordine lessicografico. La strcmp può fare qualsiasi tipo di
paragone (<; <=; >; >=; ==; =!…)
esempio:
If (strcmp (s1, s2,) <0)
———
Per cercare la fine di una stringa
For (i=0; i!=‘\0; i++)
….
Struct - variabili struttura
La struct è una variabile complessa composta da elementi non omogenei tra di loro.
La struct va dichiarate prima dell’int main
Sintassi:
struct
{ int ora,
char nome,
float secondi
} dato;
In alternativa si può definire un vero e proprio nome
del nuovo tipo. typedef crea il sinonimo di struct dato con
Sintassi ottimizzata: dato, con cui posso dichiarare tutte le variabili.
typedef struct dato
{ int ora,
char nome,
float secondi
} dato;
Puntatore freccia ->
Il puntatore freccia ( ) si può usare solo in presenza di strutture dato. Questo puntatore
strutture.
permette di accedere ai singoli elementi delle
Esempio:
Tyoedef struct dato
{
int a;
char b;
} dato;
int main ( )
{
dato valore;
riempi (valore)
}
void riempi (dato cosa)
{ *nomestruttura.cosa
Il puntare -> sostituisce:
cosa -> a = 5; *dato.a *dato.b
In questo caso sostituisce e
cosa -> b = 7;
}
Si usa l'operatore freccia, invece dell'operatore punto, per accedere a un membro di una
struttura, tramite un puntatore alla struttura stessa.
->
Quindi l’operatore freccia consente l’accesso ad un campo di una struttura attraverso il
puntatore alla variabile struttura.
File
1. Dichiarare il file
Sintassi:
File *fp -> la variabile fp è di tipo file*
2. Aprire un file: è necessario aprire il file, quindi associarlo a una variabile interna al programma
che mette in relazione il gestore con il nome del file. Un file può essere aperto in scrittura (“W”)
o in lettura (“R”).
Sintassi:
if (fp = fopen (“dati.dat”, “W”)); -> aperto il scrittura
{
——
} else
printf(“Errore nell’apertura del file”);
if (fp = fopen (“dati.dat”, “R”)); -> aperto il lettura
{
——
} else
printf(“Errore nell’apertura del file”);
3. Usare il file: fprintf fscanf
la sintassi di printf e scanf cambia in e
4. Chiudere il file: è necessario disassociare la variabile che collega il gestore al nome del file, in
quanto la chiusura del file comporta la definitiva scrittura del file.
Sintassi:
fclose (fp) 0
Il file è stato chiuso, il programma restituisce se il file stato chiuso con successo o
e0f.
altrimenti restituisce
market
fclose pone un quando la lettura del file è terminata. Questo marker prende il
end of file,
nome di che viene posto dalla scanf con la fclose.
Find end of file (feof) trasforma I clicli in “fintanto che”.
esempio:
do
{ ——
——
} while (!feof(fp)) -> continua il ciclo fintanto che non trovi la end of file.
Esempio ottimizzato:
If (!feof(fp)) Il ciclo inizia se e solo se non trova la end
of file (se trova la end of file: fine ciclo).
{—— Il ciclo si ripete fin tanto che non trova la
—— end of file
} while (!feof(fp))
Funzioni e sottoprogrammi
Un sottoprogramma è una funzione che viene attivata dal main solo quando chiamata.
Sintassi:
*tipo restituito* //nome funzione// ( parametri )
{
dichiarazioni;
istruzioni;
}
*Tipo restituito*:
• Void: la procedura non restituisce alcun valore;
• Char: la procedura restituisce una variabile char;
• Int: la procedura restituisce una variabile int;
• Float: la procedura restituisce una variabile float;
• Typedef struct nomevariabile: la procedura restituisce una variabile struct;
//nome funzione//, come ad esempio “foo”, “primi”, “media”..
( parametri ): vengo inseriti tutti i parametri passati In questo caso il main passa alla funzione un
dal main al sottoprogramma necessario array (a[ ]) e la dimensione di tale array (dim)
esempio:
void foo ( int a[ ], int dim )
{
dichiarazioni;
istruzioni;
}
L’istruzione return
L’istruzione return specifica il valore (int, char, float) che una funzione deve restituire al main.
Sintassi:
{
return (a)
}
Chiamate a una funzione con parametri
Sintassi:
int main ()
{
int a, b;
int valore;
/variabili/
/istruzioni/ b)
valore = somma (a,
printf (“%d”, valore);
….
} num1, num2)
Int somma (int int Il main passa alla funzione il valore int a, int b
Nel campo ( parametri ) della funzione
{ int num1, int num2
assumono un nome diverso
int s;
//istruzioni
return (s)
}
Chiamate a una funzione con array
In questo caso il chiamante passa alla funzione, come argomento, un array. La lunghezza
dell’array non può essere specificata.
Sintassi:
int main ()
{
int a [10];
int valore;
/ variabili, istruzioni /
valore = foo (a);
} (int a [ ], int dim)
void foo
{
//istruzioni
}
Esempio (azzerare un array):
void azzera (int a [ ], int dim)
{ La funzione modifica gli elementi di un array
Int i; passato come parametro e la modifica si
ripercuote nel chiamante.
for(i=0; i<dim; i++);
a [i]=0;
}
Chiamate a una funzione con matrice
Se il parametro è costituito da un array, nella dichiarazione del parametro può essere essere
omessa solo la prima dimensione.
int main ( )
{
int a [10][25];
int valore;
/ variabili, istruzioni /
valore = foo (a);
} (int a [ ][25], int dim)
void foo
{
for (i=0; i<N; i++)
for (j=0; j<N; j++)
/ istruzione /
}
Allocazione dinamica