Appunti di informatica
Politecnico di Torino
Facoltà di Ingegneria
Corso di laurea: Ingegneria Aerospaziale
Docenti: Marco Mezzalama
Comandi di input e output
printf ("a . formato", variabile);
scanf ("u . formato", & variabile);
Formato dei dati
- 32bit int %d
- 32bit float %f
- 64bit double %lf
- 64bit long %ld
- 8bit char %c
- string %s
Direttive di pre-processore e strutture di controllo
#include
#define N numero
if (condizione)
blocco 1
else
blocco 2
Operatori logici e di confronto
- AND && (x)
- OR || (+)
- NOT ! (^–)
- Condizione vera 1
- Falsa 0
- Maggiore (uguale) > (>=)
- Minore (uguale) < (<=)
- Diverso !=
- Uguale ==
Switch e loop
Variabile numerica
switch (espressione)
- case (N 1):
blocco 1;
break; - case (N 2):
blocco 2;
break; - default:
blocco default;
break;
while (<condizione>)
blocco
do
blocco
while (<condizione>);
Ciclo for
for (<istr. iniziali>; <condizione>; <istr. fine ciclo>)
blocco
for (i=0; i<N; i++)
Sentinella ⇒ FLAG0
Vettori e ordinamento
Vettore int/float <nome>[N];
Ordinamento vettore
- Simple sort
- Bubble sort
Funzioni e puntatori
int funzione (int a);
int funzione (int a) blocco;
return c;
Ritorno di più valori ⇒ Puntatori
<Tipo> * <Variabile> ⇒ int * p, p = &a;
Indirizzo Variabile (a) Vettore (v ⇒ &v[0])
Operazioni su *p sono svolte su a.
Funzioni e assegnazioni
Funzione int, float...
| Assegnazioni | Valore restituito | Return |
|---|---|---|
| ✔️ (Indirizzi) | ✔️ (i) | ✔️ |
| void | ❌ | ❌ |
Variabile e vettore
Variabile ⇒ Valore
Riferimento
Vettore ⇒ Riferimento
Codice ASCII e caratteri
Codice ASCII intero
Caratteri ( %c )
Controlla
Lettura
- scanf(" %c ", &c);
- getchar(c);
Stampa
- printf(" %c ", c);
- putchar(c);
isalpha
isdigit
islower
isupper
Se controlla danno (!=0)
to upper
to lower
Conversioni e stringhe
Stringa ( %s )
"stringa"
Serie di caratteri + '\0' terminatore
char [N+1]
Gran numero è caratteri
Indirizzo
gets(str); LEGGE STRINGA
puts(str); STAMPA STRINGA
scanf(" %s ", str);
printf(" %s ", str);
Precede (in senso alfabetico)
strlen(str); LUNGHEZZA
strcpy(str1, str2); COPIA str2 in str1
strncpy(str1, str2, n); COPIA primi n di str2 in str1
strcmp(str1, str2); COMPARA STRINGHE
>0 str1 >0 str2 NULL se non trova
scanf (<stringa>, "fattore conversione", variabile);
strcat (str1, str2); CONCATENA S1 E S2 (S1+S2)
Matrici o vettori multidimensionali
for (i=0; i<R; i++)
for (k=0; k<C; K++)
blocco;
Librerie
#include <>stdio.h I/O
stdlib.h
math.h FUNZ. MATEMATICHE
ctype.h FUNZ. CARATTERI
string.h FUNZ. STRINGHE
limits.h LIMITI (INT.MIN, INT.MAX)
File
Inizializzazione
FILE *fp
fp = fopen("nome", "w");
fclose(fp);
fprintf(nome, "pattern.conv", &variabile);
fscanf(nome, "pat.conv", &variabile);
if (fp == NULL) -> Non funziona
Lettura file con n righe non conosciute => WHILE
i=0
while (!fscanf(fp, "pat.conv", var) == EOF)
i++;
Linea di comando
int main (int argc, char *argv[])
if (argc < n) -> Non funziona
- argv[0]
- argv[1]
- argv[2]
- argv[3]
- argv[ - 1]
- argv[]
Sort decrescente
#define N
main(){
int V[N], temp, i, j, max, posm;
for (i = 0; i < N; i++)
printf(" V[%j] =",i);
scanf("%d", &V[i]);}
for (i = 0; i < N-1; i++){
max = V[i];
for (j = i; j < N; i++){
if (V[j] >= max){
max = V[j];
posm = j;}
temp = V[i];
V[i] = V[posm];
V[posm] = temp;}
for (i = 0; i < N; i++){
printf(" V[%j] = %d ", V[i]);}
return 0;}
Sort crescente
#define N
-main ()
int V[N], temp, i, j, minimo, posnu;
for (i=0; i<N; i++)
printf("V[%d]=", i);
scanf("%d", &v[i]);
for (i=0; i<N-1; i++)
min = v[i];
for (j=i; j<N; j++)
if (v[j] < min)
min = v[j];
posnu = j;
temp = v[i];
v[i] = v[posnu];
v[posnu] = temp;
for (i=0; i<N; i++)
printf("%d ", v[i]);
return 0;
Bubble sorting
for (i = 0; i < N-1; i++)
for (k = 0; k < N-1-i; k++)
if (V[k] >= V[k+1]) crescente
if (V[k] <= V[k+1]) decrescente
temp = V[k];
V[k] = V[k+1];
V[k+1] = temp;
k < N-1-i in quanto questo sistema per ogni operazione sposta il max o min alla fine e questo non va più contato