Estratto del documento

Concetti base della programmazione

Commenti e inclusione delle librerie

/*...*/ Inserisce commenti
#include Inclusione delle librerie

Variabili e assegnamento

Assegna un valore ad una variabile.
operatore di = Quando la variabile è a sinistra, si usa il suo indirizzo per assegnamento
modificare il suo valore; quando è a destra si usa il valore

Funzioni matematiche

pow(a,b) A elevato alla b Si trova nella libreria math.h

Visualizzazione e caratteri di escape

Visualizza una sequenza di caratteri
Il carattere ‘\’ (backslash) si premette ai “caratteri di escape”

  • \n Nuova linea
  • \t Tabulazione
  • \b Torna indietro di un carattere
  • \\ Stampa il carattere \
  • \" Stampa il carattere "

printf("..."); istruzione di stampa

Acquisizione dati

Acquisisce un dato in ingresso dall’utente e lo alloca all’indirizzo della locazione di memoria corrispondente alla variabile.

Interrompere l'esecuzione

Interrompe il flusso d’esecuzione
Return 0 Indica a termine di una funzione che il programma è terminato correttamente

Formati di input e output

  • %d int Intero decimale
  • %ld long Lungo (32 bit)
  • %hd short Corto (16 bit)
  • %c char Carattere ASCII (1 byte)
  • %s Stringa
  • %f (4 byte) Numeri con la virgola
  • %e Numeri con la virgola in forma esponenziale
  • %lf double Lungo (8 byte)

Gestione input dal terminale

scanf("...", &...); input
Utilizzato dopo la scanf per eliminare i caratteri fflush(stdin) in coda che fanno terminare il programma (\n)

Casting e costanti

Se n e m sono int ma voglio la divisione in float
Cast esplicito x = (float) m/n senza variare il tipo delle variabili che rimangono int
const Const tipo nome = valore
Definire costante Define #define nome valore
Undef #undef nome

Cicli di controllo

do-while Esegue una volta il ciclo e poi verifica la condizione

do {
    istr 1
    ...
    istr N
} while (condizione);
    

While Verifica prima la condizione e poi entra nel ciclo

while (condizione) {
    istr 1
    ...
    istr N
}
    

For Ciclo for

for (inizio; condizione; incremento) {
    istr 1
    ...
    istr N
}
    

Switch-case

switch (variabile) {
    case v :
        istr 1;
        break;
    ...
    case v :
        istr N;
        break;
    default:
        istr U;
        break;
}
    

Break; Consente di uscire dal corpo di un ciclo o da uno switch
Interrompe l’iterazione corrente di un ciclo e dà inizio all’iterazione successiva dopo aver eseguito l’incremento
Continue;

Array

Gruppo di celle consecutive con elementi dello stesso tipo. Il primo elemento ha indice 0
Per eccedere ad un elemento nomearray [posizione] e riempirlo nomearray [posizione] = valore
Per creare un array tipo nomearray [numeroelementi];
tipo nomearray [numeroelementi] e riempirlo = {elem1, .., elemN};

Riempimento e copia di un array

for (i = 0; i < numeroelementi; i++) {
    o riempirlo da terminale
    printf("Scrivi un intero: ");
    scanf("%d", &nomearray[i]);
}

int array1[dimensione], array2[dimensione], i;
Ricopiare array1 in array2
for (i = 0; i < dimensione; i++) {
    array2[i] = array1[i];
}
    

Ricerca e ordinamento

Ricerca di un elemento

int dato, risultato = -1, n;
int array[size];
for (n = 0; n < size; n++) {
    if (array[n] == dato) {
        risultato = n;
        break;
    }
}
    

Ordinare un array con bubblesort

for (j = 0; j < size - 1; j++) {
    for (i = 0; i < size - 1; i++) {
        if (vet[i] > vet[i+1]) {
            aux = vet[i];
            vet[i] = vet[i+1];
            vet[i+1] = aux;
        }
    }
}
    

Stringhe

Array di caratteri che termina con \0. Le funzioni sono contenute nella libreria string.h
Inizializzazione

char nomestringa[] = "parola";
char nomestringa = {'p', 'a', 'r', 'o', 'l', 'a', '\0'};
strcpy(nomestringa, "parola");
    

Manipolazione delle stringhe

Copia stringa1 in stringa2 strcpy (stringa2, stringa1);
Copia n caratteri di stringa1 in stringa2 strncpy (stringa2, stringa1, n);
Stringa Lunghezza x = strlen(nomestringa);
Riempire stringa da terminale scanf("%s", nomestringa);
Confrontare due stringhe
    Se restituisce 0 sono uguali
    Se restituisce un numero < 0 stringa1 è più corta
    Se restituisce un numero > 0 stringa1 è più lunga
strcmp (stringa1, stringa2);
Consente di concatenare stringa2 a stringa1 strcat (stringa1, stringa2);
    

Matrici

Array a più dimensioni. Le righe orizzontali sono chiamate righe, mentre quelle verticali sono le colonne

for(i = 0; i < DIM; i++) {
    for(j = 0; j < DIM; j++) {
        printf("Dammi elemento (%d,%d)\n",i,j);
        scanf("%d", &M[i][j]);
    }
}
for(i = 0; i < DIM; i++) {
    for(j = 0; j < DIM; j++) {
        printf("%4d", M[i][j]);
    }
    printf("\n");
}
    

Struct

Memorizza aggregazioni di dati di diversa natura. Ogni dato è chiamato campo

char strcpy(nome.campo, "stringa");
Assegnamento ai campi int nome.campo = numero;
char scanf("%s", nome.campo);
int scanf("%d", &nome.campo);
    

Confrontare e creare nuove struct

Struct Assegnare una struct ad un’altra identica struct1 = struct2;
if (strcmp(nome.campochar, nome.campochar2) == 0 && nome.campoint == nome.campoint2))
typedef struct {
    tipo campo1;
    tipo campo2;
    ...
} nomestruct;
    

Puntatori

Variabili che hanno come valore l’indirizzo di un’altra variabile

%p printf("indirizzo di x: %p", &x);
Typedef tipo * tiporef;
tiporef p = &x;
Dichiarazione int * p;
p = &x;
Si impone che il puntatore p punti alla stessa variabile a cui punta q
p = q;
Si assegna il valore della variabile puntata da q al valore della variabile puntata da p
*p = *q;
if (p == NULL) Test di nullità
if (!p) Test di non nullità
if (p != NULL) Test di non nullità
if (p)
p→primocampo Nelle struct o (*p).primocampo
    

Array e puntatori

Un array v è una costante di tipo puntatore che punta all’indirizzo della prima cella
v = &v[0]
v[i] è equivalente a *(v + i)
Negli array Se p e q puntano a due diversi elementi di uno stesso array, la differenza p – q dà la distanza nell’array tra gli elementi puntati
    

Funzioni

Una funzione è una sequenza di comandi che ha un nome, può essere invocata, può ricevere dei parametri che ne influenzano l’esecuzione e produce.

Anteprima
Vedrai una selezione di 5 pagine su 16
Informatica - Polimi - Prof. Campi Pag. 1 Informatica - Polimi - Prof. Campi Pag. 2
Anteprima di 5 pagg. su 16.
Scarica il documento per vederlo tutto.
Informatica - Polimi - Prof. Campi Pag. 6
Anteprima di 5 pagg. su 16.
Scarica il documento per vederlo tutto.
Informatica - Polimi - Prof. Campi Pag. 11
Anteprima di 5 pagg. su 16.
Scarica il documento per vederlo tutto.
Informatica - Polimi - Prof. Campi Pag. 16
1 su 16
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher saratita di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano o del prof Campi Alessandro.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community