Fondamenti di Informatica Prof. A.Broggi Linguaggio C (3) www.ce

Fondamenti di Informatica
Prof. A.Broggi
Linguaggio C (3)
Fondamenti di Informatica
Prof. A.Broggi
Vettori
Linguaggio C (3)
Fondamenti di Informatica
Prof. A.Broggi
Output di stringhe
Matrici
vettore = collezione di un numero fissato
di variabili dello stesso tipo
#include <stdio.h>
matrice = vettore i cui elementi sono
vettori
main()
{
const char messaggio[16] = “Errore nei dati”;
const char giorni[7][11] = {“lunedi`”, “martedi`”,
“mercoledi`”, “ giovedi`”,
“venerdi`”, “sabato”,
“domenica”};
int i;
tipo_comp nome_matrice[num_comp1] [num_comp2]...;
tipo_componente nome_vettore[numero_componenti];
#define NUM_ALLIEVI 10
#define NUM_MATERIE 5
#define NUM_MATERIE 20
int voti[NUM_ALLIEVI][NUM_MATERIE];
int voti_ottenuti[NUM_MATERIE];
voti[2][3] = 28;
Fondamenti di Informatica
1
}
Fondamenti di Informatica
Inizializzazione dei vettori
4
Memorizzazione delle matrici
Input di stringhe
main()
{
char nome[LUNGSTR], professione[LUNGSTR];
int eta;
long int reddito;
main()
{
int matrix[NUMRIGHE][NUMCOLON] =
{ {0, 1, 2, 3}, {1, 2, 3, 4}, {2, 3, 4, 5} };
int i,j;
#define NUMDATI 10
int iniz_vett[NUMDATI] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int vett_dati[NUMDATI];
int i;
for (i=0; i<NUMDATI; i++)
vett_dati[i] = iniz_vett[i];
}
Fondamenti di Informatica
2
for(i=0; i<NUMRIGHE; i++)
for(j=0; j<NUMCOLON; j++)
printf(“matrix[%d][%d] = %d, posiz = %u\n”,
i, j, matrix[i][j], &matrix[i][j]);
Fondamenti di Informatica
7
#include <stdio.h>
#define LUNGSTR 20
#define NUMRIGHE 3
#define NUMCOLON 4
non esistono operatori che agiscono sul
vettore nel suo complesso
printf(“%s\n”, messaggio);
for(i=0; i<7; i++)
printf(“%s\n”, giorni[i]);
Fondamenti di Informatica
sono memorizzate per righe (in generale
variando per primo l’indice più a destra)
tipo_componente nome_vettore[numero_componenti] =
{val0, val1,…, valn};
Linguaggio C (3)
}
5
printf(“Introduci nome, eta`, professione e reddito \n”);
scanf(“%s%d%s%ld”, nome, &eta,
professione, &reddito);
Fondamenti di Informatica
8
Vettori come parametri di funzioni
Stringhe
Operazioni sulle stringhe
• al nome del vettore è associato l’indirizzo del primo
elemento
• l’operatore [ ] consente di accedere a un elemento
del vettore
– vett_dati[0] equivale a *vett_dati
• sono memorizzate come vettori di caratteri
• è sempre presente un carattere in più per il
terminatore ‘\0’
• ‘c’ è diverso da “c”
le stringhe sono vettori --> non esistono
operatori che agiscono sulla stringa nel suo
complesso!
– vett_dati[i]
equivale a
*(vett_dati + i)
• il passaggio a una funzione di un parametro di tipo
vettore avviene per riferimento
const char messaggio[] = “Errore nei dati”;
3
www.ce.unipr.it/broggi/fondinfo
Fondamenti di Informatica
1
Fondamenti di Informatica
Prof. A.Broggi
Linguaggio C (3)
Funzioni di libreria per le stringhe
• manipolazione di stringhe (header file string.h)
– strlen(stringa) restituisce la lunghezza della stringa
– strcmp(stringa1, stringa2) confronta due stringhe
– strcpy(stringa1, stringa2) copia stringa1 in stringa2
–…
• conversione delle stringhe nei tipi base ( header file
stdlib.h)
– atoi(stringa) converte stringa in un numero intero
– atof(stringa) converte stringa in un numero reale
– ...
Fondamenti di Informatica
www.ce.unipr.it/broggi/fondinfo
/* assegnamento errato! */
if (messaggio1 == messaggio2)
printf(“Messaggi uguali\n”);
/* confronto errato! */
char vmessage[] = “Salve”;
char *pmessage = “Salve”;
#define MESSAGGIO “Errore nei dati”
Fondamenti di Informatica
char messaggio[16];
messaggio = “Errore nei dati”;
const char messaggio[16] = “Errore nei dati”;
– nella definizione della funzione si può non definire la
dimensione del vettore
int nome_funz(int vett_dati[], int lungh_vett, …)
10
4
www.ce.unipr.it/broggi/fondinfo
6
/* un vettore */
/* un puntatore */
Fondamenti di Informatica
2
www.ce.unipr.it/broggi/fondinfo
9
3