Sei sulla pagina 1di 6

Linguaggio C Formulario

#include<nome.libreria>
#define NOME.COSTANTE valore.costante
main() {corpo.programma}

/*funzione principale che introduce programma*/

{le graffe servono a contenere una serie di istruzioni}


Dichiarazioni di variabili: tipo nome.variabile
Tipi:
int intero; float 4numeri.dopo.virgola (double doppio.float); char carattere; void qualsiasi.tipo;

- Istruzioni
/*; per concludere funzione*/
printf(testo.o.%.simbolo.variabile, nome.variabile);

/*output, stampa valore (stdio.h)*/

simboli di stampa (\): \n va a linea nuova


\t salta di una tabulazione
\b ritorna un carattere indietro (backspace)
\a suona il campanello della macchina
\\ stampa il carattere \
\" stampa il carattere "

scanf(%simbolo.variabile, &nome.variabile);

/*input, lettura valore (stdio.h)*/

simboli varibili (%): %d, interi


%c, caratteri
%f, float
%s, stringa (sequenza di caratteri)
getch();
(conio.h)*/
return 0;
pow(); sqrt();

/*blocca programma in attesa di un input dalla tastiera


/*restutuisce valore, compatibile
con int main()*/
/*elevamento a potenza; radice*/

Assegnamento
=: assegna alla variabile un valore (numerico o di unaltra variabile)
x = a;
x = 4;
x = a;
x = (x+y)*(a/b);
x++; x--;

/*assegnamento a x del volore di a*/


/*assegnamento carattere*/
/*assegnamento del valore risultato di unoperazione*/
/*x = x+1; x = x-1*/

Istruzioni della forma variabile = variabile operatore espressione; si possono scrivere come:
variabile operatore = espressione;

Istruzioni condizionali
Relazionali: = =, !=, <, >, <=, >=
Logici: ! (not), || (or), && (and)

- Cicli (tutti i cicli possono essere intrecciati tra di loro)


Ciclo if-else
if ( espressione ) {
seq. di istruzioni
}else {
seq. di istruzioni }

/*ciclo se-altrimenti: se la condizione di if non


vera il calcolatore passa allelse; gli if possono
essere messi in serie*/

Ciclo while
while(condizione){
seq. di istruzioni}

/*ciclo fintantoch: esegue le istruzioni fino a quando


la condizione non pi vera*/

Ciclo do-while
do {
seq. di istruzioni
} while ( condizione );

/*ciclo fai-finoa: fa continuamente le stesse azioni


fino a che la condizione vera*/

Ciclo for
for ( 1.exp.Iniz; 2.condizione; 3.exp.Incr ) {
seq. di istruzioni
}

/*ciclo for: da espressione 1, fai istruzioni, esegui


espressione 3, fino a che condizione vera */

Ciclo switch-case
switch ( var ) {
case v1: ist.1; break;
case ...: ist.2; break;
case vi:
case vj: ist.ij; break;
case ...: ist.3; break;
case vN: ist.N; break;
default: ist.U; break;

/*considera variabile, caso 1 etc., se un caso vero break serve


a non controllare i case successivi, default viene sempre
controllato*/

}
continue; break;
goto istruzione;
-

Array

/*data una condizione, dopo continua; conclude il ciclo*/


/*se la condizione vera salta e va allistruzione indicata*/
(sequenze di elementi messi in sequenza, numeri o caratteri)

Array: sequenze di numeri


int/char nome.array[numero.elementi];
/*dichiarazione array*/
nome.array[n]
/*la posizione di un elemento data dallindice n, che va da 0 (primo
elemento) a numero.elementi-1 (ultimo elemento)*/
pu essere dichiarata in un #define la MAX_LUNG dellarray, ma la sua lunghezza effettiva decisa durante
la compilazione attraverso:

sentinella: usando un ciclo while, fino a che lutente non inserisce un certo valore larray continua a
riempirsi di valori. [es: while(temp!=-1 && i<MAX_LUNG)]

far inserire un valore allutente che viene messo poi nella seconda condizione di un ciclo for.

non si pu operare sullintero array ma solo sui suoi singoli elementi; con tutte le ltre funzione come se
fosse un intero.
Stringhe
char nome.stringa[numero.elementi];
nome.stringa[n]
strcpy(str1, "alfa");

/ inizializza str1 con la stringa "alfa" / / str1 contiene "alfa" /

strcpy(str2, str1);

/ copia str1 in str2 / / str2 contiene "alfa" /

x = strlen(str1);

/ lunghezza di str1 / / x assume valore 4

printf("%s", str1);

/ scrivi str1 su standard output / / scrive str1 su stdout /

scanf("%s", str1);

/ leggi str1 da standard input / / str1 riceve da stdin /

Struct
struct {
dichiarazioni di variabili o array o stringhe;
} nome struct;
Assegnamenti, letture e stampa: (regole di stringhe, array e variabili) nomestruct.nomevariabile

Assegnamento ai campi del record:

strcpy(indirizzo.via, "Ponzio");
indirizzo.numero 34;
indirizzo.CAP 20133;
strcpy(indirizzo.citta, "Milano");
dato: struct{}rec1,rec2;
si pu assegnare rec1 = rec2

Accesso (leggere, scrivere):

printf("%d\n", indirizzo.numero);
> 34
printf("%d\n", strlen(indirizzo.citta));
>6

printf("%s\n", indirizzo.citta);
> Milano
scanf("%s", indirizzo.via);
> Ponzio
scanf("%d", &indirizzo.CAP);
> 20133
Definizione di tipi
typedef struct {
definizione di variabili, array stringhe;
} nome.tipo;
dichiarazione di variabili: nome.tipo nome.varibile

- Puntatori
tipo

/*la dichiarazione di un puntatore p di un tipo tipo; pu puntare solo quel


tipo*/

&variabile
p = &i;

/*si denota lindirizzo della variabile; & loperatore che restituisce lindirizzo
di una variabile*/

(operatore di referenziazione)
Loperatore opposto , che restituisce il valore puntato

i = p;

(operatore di dereferenziazione)

**p

/*con il doppio * si intende puntatore di puntatore*/

NULL

/*valore iniziale di un puntatore, non punta niente*/

Accedere a campi struct con puntatore:


pnome.campo 12;
(p).nome.campo 12;
sizeof ()

/*d il numero di byte occupati da una variabile o un tipo*/

Spiazzamento negli array:


se due puntatori puntano a due elementi di un array la loro differenza ne dar la distanza negli array,
non la differenza aritmetica

- Funzioni (sottoprogrammi)
<tipo restituito><nome della funzione>(<lista degli argomenti>) {
<variabili locali>
<corpo della funzione>
<return nome.variabile>}

Una funzione va dichiarata allinizio del programma prima dell int main(); la definizione va scritta alla
fine.

tipo nome(argomenti) {
dichiarazione variabili locale;
istruzioni;
return valore.o.espressione;
}
Assegnamento valore restituito da funzione:
variabile = nome.funzione(argomenti)
-

Ricorsioni

tipo nome.funzione (argomenti) {


if (cond)
return 1;
else
return n * nome.funzione(argomenti);
}

/*operazione che richiama funzione stessa*/

Sottoprogrammi notevoli
Conversione in binario
/* calcola la conversione in binario dellesponente */
num = esp;
for(ind = DIM-1; ind >= 0; ind--) { /* con un indice che va da DIM-1 a 0 */
binario[ind] = num % 2;
/* calcola un nuovo bit */
num /= 2;
/* aggiorna num per il prossimo ciclo */
}
/* visualizza il vettore binario */
printf ("\nConversione del numero %d: ", esp);
for (ind = 0; ind < DIM; ind++)
printf ("%d",binario[ind]);
printf ("\n\n");

/* Visualizza il vettore binario: */


/* un bit per volta */