Stringhe di caratteri

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Stringhe di caratteri"

Transcript

1 Stringhe di caratteri 1

2 Rappresentazione Sommario Dichiarazione Indice di un carattere in una stringa Operazione su stringhe Errori comuni 2

3 Rappresentazione Ricorda: In memoria le celle di un array sono contigue ogni cella ha un indirizzo 0x1FFE 0x1FFF 0x2000 0x2001 0x2002 etc 3

4 Rappresentazione Ricorda: Nella dichiarazione una variabile è un contenitore di un valore Esempio char ch; ch = B ; 0x1FFE 0x1FFF 0x2000 0x2001 0x2002 B ch etc 4

5 Rappresentazione Dichiarazione di una stringa individua un array di celle ogni cella contiene un char fornisce l indirizzo della prima cella Esempio char name[5]; Specifica il numero di celle dell array 5

6 Rappresentazione Dichiarazione di una stringa individua un array di celle ogni cella contiene un char fornisce l indirizzo della prima cella Esempio char name[5]; name è 0x2000 0x2000 0x2004 6

7 Array e stringhe di caratteri Una stringa di caratteri è un array di char Una stringa di caratteri deve avere il carattere terminale ( \0 ) Il carattere terminale permette a scanf() e printf() di manipolare le stringhe efficacemente 7

8 Stringhe di caratteri Dichiarazione char name[5]; Dichiarazione #define MAXLENGTH 5 char name[maxlength]; name è 0x2000 0x2000 0x2004 8

9 Input/Output di stringhe #include <stdio.h> #define MAXLENGTH 15 Non serve &, il nome stesso individua l indirizzo int main() { char string1[maxlength]; char string2[maxlength]; scanf("%s %s", string1, string2); printf("%s %s\n", string1, string2); } return 0; 9

10 Dichiarazione di stringhe Dichiarazione char name[5] = Ann ; Carattere terminale \0, segna il fine-stringa name è 0x2000 0x2000 A n n \0 0x

11 Dichiarazione di stringhe Dichiarazione Al più 4 lettere, l ultima deve essere \0 char name[5] = Ann ; name è 0x2000 A n n \0 0x2000 0x

12 Dichiarazione di stringhe Dichiarazione char name[] = Ann ; Usa una cella extra per \0 name è 0x2000 0x2000 A n n \0 0x

13 Dichiarazione di stringhe Dichiarazione char *name = Ann ; Se si prova a modificare questa stringa, il risultato è segmentation fault 0x3000 name A n n \0 0x3000 0x

14 Dichiarazione di stringhe Dichiarazione char name[]; Stringa di lunghezza arbitraria? No, errore! 14

15 Un carattere in una stringa La dimensione di una stringa di caratteri è fissata Per raggiungere il carattere alla posizione indice, l (indice+1)-esimo carattere: string[indice] Il primo carattere ha indice 0 15

16 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o h n \0 indice 0 indice 4 char name[8] = John ; int i = 2; printf( Il carattere in posizione %d è %c.\n, i, name[i]); output: Il carattere in posizione 2 è h. 16

17 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o hx n \0 indice 2 char name[8] = John ; name[2] = X ; printf( Nome: %s\n, name); 17

18 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o X n \0 indice 2 char name[8] = John ; name[2] = X ; printf( Nome: %s\n, name); output: Nome: JoXn 18

19 Operazioni con le stringhe #include <string.h> Assegnamento: strcpy() Concatenazione: strcat() Confronto: strcmp() Lunghezza: strlen() 19

20 #include <stdio.h> #include <string.h> #define MAXLENGTH 100 Assegnamento int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: <spazzatura> string2: <spazzatura> 20

21 Assegnamento #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: Hello World! string2: <spazzatura> 21

22 Assegnamento #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: Hello World! string2: Hello World! 22

23 Esempio char name1[5] = Ann ; char name2[5] = Dave ; name2 = name1; Errori Comuni Utilizzo del nome di stringa come Lvalue (variabile di tipo indirizzo) Errore! Richiesta una Lvalue-expression! - name2 contiene l indirizzo del primo valore dell array ma non è una variabile di tipo indirizzo 23

24 Esempio Errori Comuni Utilizzo del nome di stringa come Lvalue (variabile di tipo indirizzo) char name1[5] = Ann ; char name2[5] = Dave ; &(name2[0]) = name1; Errore! Richiesta una Lvalue-expression! - &(name2[0]) restituisce l indirizzo del primo valore dell array ma non è una variabile di tipo indirizzo 24

25 Attenzione Assegnamento di indirizzo Esempio char *name1 = Ann ; char *name2 = Dave ; name2 = name1; 25

26 Attenzione Assegnamento di indirizzo char *name1 = Ann ; char *name2 = Dave ; 0x2000 name1 A n n \0 0x2000 0x2003 0x3990 name2 D a v e \0 0x3990 0x

27 Attenzione Assegnamento di indirizzo name2 = name1; 0x2000 name1 A n n \0 0x2000 0x2003 0x2000 name2 D a v e \0 0x3990 0x

28 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye string2:, Cruel 28

29 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel string2:, Cruel 29

30 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel, Cruel string2:, Cruel 30

31 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel, Cruel World! string2:, Cruel 31

32 Errori Comuni Spazio insufficente char name[] = Ann ; strcpy(name, David ); name è 0x2000 A n n \0 0x2000 0x

33 Errori Comuni Spazio insufficente char name[] = Ann ; strcpy(name, David ); name è 0x2000 D a v i d \0 0x2000 0x

34 Errore tipico Spazio insufficente char name[5]; strcpy(name, David ); Non dimenticare il carattere \0 name è 0x3990 D a v i d \0 0x3990 0x

35 Errori Comuni Spazio insufficente char name[5]; strcpy(name, Ann ); strcat(name, Smith ); name è 0x2000 A n n \0 0x2000 0x

36 Errori Comuni Spazio insufficente char name[5]; Ma in pratica? Vediamo cosa succede.. strcpy(name, Ann ); strcat(name, Smith ); name è 0x2000 A n n S m i t h \0 0x2000 0x

37 Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } PRIMA name1=ann name2=ann name3=john printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 37

38 Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } DOPO name1=fred name2=fred name3=fred name4=fred printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 38

39 Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } INFINE name1=fred Lee name2=jim name3=jim name4=fred printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 39

40 Confronto strcpy(string1, Apple ); strcpy(string2, Wax ); if (strcmp(string1, string2) < 0) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } Restituisce La differenza tra i codici ASCII dei caratteri (presi a due a due) delle due stringhe nello stesso ordine in cui vengono scritte; alla prima differenza non nulla, ritornano tale valore 40

41 Confronto strcpy(string1, Apple ); strcpy(string2, Wax ); if (strcmp(string1, string2) < 0) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } output: Apple Wax 41

42 Errore tipico Confronto errato strcpy(string1, Apple ); strcpy(string2, Wax ); if (string1 < string2) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } 42

43 Lunghezza char string1[100]; strcpy(string1, Apple ); printf( %d\n, strlen(string1)); output: 5 43

44 Stringhe di caratteri come parametri Le stringhe come parametri formali sono dichiarate char* o char[] Esempi: void Greet ( char* name ) void Greet ( char name[] ) In tutto e per tutto sono vettori! 44

45 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { } strcat(name, "! Come va?"); int main() { char user[namelen]; } printf( Chi sei? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; user è Jake\0 45

46 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { } strcat(name, "! Come va?"); int main() { char user[namelen]; } printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; name punta user è Jake\0 46

47 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { } strcat(name, "! Come va?"); int main() { char user[namelen]; } printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; name punta user è Jake! Come va?\0 47

48 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { } strcat(name, "! Come va?"); int main() { char user[namelen]; printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); } return 0; user è Jake! Come va?\0 48

49 Sommario Una stringa è un array continuo di caratteri L identificatore di stringa è l indirizzo stesso del primo carattere della stringa Ogni singolo carattere è individuato usando la notazione tipica ad array nome-stringa[indice] Esistono librerie C standard per copiare, concatenare e confrontare le stringhe 49

50 Deitel & Deitel Capitolo 8:

51 Stringhe di caratteri 10/08/06 1

52 CSE1301 Sem Sommario Rappresentazione Dichiarazione Indice di un carattere in una stringa Operazione su stringhe Errori comuni 10/08/06 2 Lecture 20: Character Strings 2

53 08/10/06 Rappresentazione Ricorda: In memoria le celle di un array sono contigue ogni cella ha un indirizzo 0x1FFE 0x1FFF 0x2000 0x2001 0x2002 etc 10/08/06 3

54 08/10/06 Rappresentazione Ricorda: Nella dichiarazione una variabile è un contenitore di un valore Esempio char ch; ch = B ; 0x1FFE 0x1FFF 0x2000 0x2001 0x2002 B 10/08/06 ch 4 etc

55 08/10/06 Rappresentazione Dichiarazione di una stringa individua un array di celle ogni cella contiene un char fornisce l indirizzo della prima cella Esempio char name[5]; Specifica il numero di celle dell array 10/08/06 5

56 08/10/06 Rappresentazione Dichiarazione di una stringa individua un array di celle ogni cella contiene un char fornisce l indirizzo della prima cella Esempio char name[5]; name è 0x2000 0x2000 0x /08/06 6

57 CSE1301 Sem Array e stringhe di caratteri Una stringa di caratteri è un array di char Una stringa di caratteri deve avere il carattere terminale ( \0 ) Il carattere terminale permette a scanf() e printf() di manipolare le stringhe efficacemente 10/08/06 7 Lecture 20: Character Strings 7

58 08/10/06 Stringhe di caratteri Dichiarazione char name[5]; Dichiarazione #define MAXLENGTH 5 char name[maxlength]; name è 0x2000 0x2000 0x /08/06 8

59 08/10/06 Input/Output di stringhe #include <stdio.h> #define MAXLENGTH 15 Non serve &, il nome stesso individua l indirizzo int main() { char string1[maxlength]; char string2[maxlength]; scanf("%s %s", string1, string2); printf("%s %s\n", string1, string2); } return 0; 10/08/06 9

60 08/10/06 Dichiarazione di stringhe Dichiarazione char name[5] = Ann ; Carattere terminale \0, segna il fine-stringa name è 0x2000 0x2000 A n n \0 0x /08/06 10

61 08/10/06 Dichiarazione di stringhe Dichiarazione Al più 4 lettere, l ultima deve essere \0 char name[5] = Ann ; name è 0x2000 A n n \0 0x2000 0x /08/06 11

62 08/10/06 Dichiarazione di stringhe Dichiarazione char name[] = Ann ; Usa una cella extra per \0 name è 0x2000 0x2000 A n n \0 0x /08/06 12

63 CSE1301 Sem Dichiarazione di stringhe Dichiarazione char *name = Ann ; Se si prova a modificare questa stringa, il risultato è segmentation fault 0x3000 name A n n \0 0x3000 0x /08/06 13 Lecture 20: Character Strings 13

64 08/10/06 Dichiarazione di stringhe Dichiarazione char name[]; Stringa di lunghezza arbitraria? No, errore! 10/08/06 14

65 08/10/06 Un carattere in una stringa La dimensione di una stringa di caratteri è fissata Per raggiungere il carattere alla posizione indice, l (indice+1)-esimo carattere: string[indice] Il primo carattere ha indice 0 10/08/06 15

66 08/10/06 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o h n \0 indice 0 indice 4 char name[8] = John ; int i = 2; printf( Il carattere in posizione %d è %c.\n, i, name[i]); output: Il carattere in posizione 2 è h. 10/08/06 16

67 08/10/06 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o hx n \0 indice 2 char name[8] = John ; name[2] = X ; printf( Nome: %s\n, name); 10/08/06 17

68 08/10/06 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o X n \0 indice 2 char name[8] = John ; name[2] = X ; printf( Nome: %s\n, name); output: Nome: JoXn 10/08/06 18

69 08/10/06 Operazioni con le stringhe #include <string.h> Assegnamento: strcpy() Concatenazione: strcat() Confronto: strcmp() Lunghezza: strlen() 10/08/06 19

70 08/10/06 Assegnamento #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: <spazzatura> string2: <spazzatura> 10/08/06 20

71 08/10/06 Assegnamento #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: Hello World! string2: <spazzatura> 10/08/06 21

72 08/10/06 Assegnamento #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: Hello World! string2: Hello World! 10/08/06 22

73 CSE1301 Sem Esempio char name1[5] = Ann ; char name2[5] = Dave ; name2 = name1; Errori Comuni Utilizzo del nome di stringa come Lvalue (variabile di tipo indirizzo) Errore! Richiesta una Lvalue-expression! - name2 contiene l indirizzo del primo valore dell array ma non è una variabile di tipo indirizzo 10/08/06 23 Lecture 20: Character Strings 23

74 CSE1301 Sem Esempio Errori Comuni Utilizzo del nome di stringa come Lvalue (variabile di tipo indirizzo) char name1[5] = Ann ; char name2[5] = Dave ; &(name2[0]) = name1; Errore! Richiesta una Lvalue-expression! - &(name2[0]) restituisce l indirizzo del primo valore dell array ma non è una variabile di tipo indirizzo 10/08/06 24 Lecture 20: Character Strings 24

75 08/10/06 Attenzione Assegnamento di indirizzo Esempio char *name1 = Ann ; char *name2 = Dave ; name2 = name1; 10/08/06 25

76 08/10/06 Attenzione Assegnamento di indirizzo char *name1 = Ann ; char *name2 = Dave ; 0x2000 name1 A n n \0 0x2000 0x2003 0x3990 name2 D a v e \0 0x3990 0x /08/06 26

77 08/10/06 Attenzione Assegnamento di indirizzo name2 = name1; 0x2000 name1 A n n \0 0x2000 0x2003 0x2000 name2 D a v e \0 0x3990 0x /08/06 27

78 08/10/06 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye string2:, Cruel 10/08/06 28

79 08/10/06 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel string2:, Cruel 10/08/06 29

80 08/10/06 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel, Cruel string2:, Cruel 10/08/06 30

81 08/10/06 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel, Cruel World! string2:, Cruel 10/08/06 31

82 08/10/06 Errori Comuni Spazio insufficente char name[] = Ann ; strcpy(name, David ); name è 0x2000 A n n \0 0x2000 0x /08/06 32

83 08/10/06 Errori Comuni Spazio insufficente char name[] = Ann ; strcpy(name, David ); name è 0x2000 D a v i d \0 0x2000 0x /08/06 33

84 08/10/06 Errore tipico Spazio insufficente char name[5]; strcpy(name, David ); Non dimenticare il carattere \0 name è 0x3990 D a v i d \0 0x3990 0x /08/06 34

85 08/10/06 Errori Comuni Spazio insufficente char name[5]; strcpy(name, Ann ); strcat(name, Smith ); name è 0x2000 A n n \0 0x2000 0x /08/06 35

86 08/10/06 Errori Comuni Spazio insufficente char name[5]; Ma in pratica? Vediamo cosa succede.. strcpy(name, Ann ); strcat(name, Smith ); name è 0x2000 A n n S m i t h \0 0x2000 0x /08/06 36

87 CSE1301 Sem Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } PRIMA name1=ann name2=ann name3=john printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 10/08/06 37 Lecture 20: Character Strings 37

88 CSE1301 Sem Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } DOPO name1=fred name2=fred name3=fred name4=fred printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 10/08/06 38 Lecture 20: Character Strings 38

89 CSE1301 Sem Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } INFINE name1=fred Lee name2=jim name3=jim name4=fred printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 10/08/06 39 Lecture 20: Character Strings 39

90 08/10/06 Confronto strcpy(string1, Apple ); strcpy(string2, Wax ); if (strcmp(string1, string2) < 0) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } Restituisce La differenza tra i codici ASCII dei caratteri (presi a due a due) delle due stringhe nello stesso ordine in cui vengono scritte; alla prima differenza non nulla, ritornano tale valore 10/08/06 40

91 08/10/06 Confronto strcpy(string1, Apple ); strcpy(string2, Wax ); if (strcmp(string1, string2) < 0) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } output: Apple Wax 10/08/06 41

92 08/10/06 Errore tipico Confronto errato strcpy(string1, Apple ); strcpy(string2, Wax ); if (string1 < string2) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } 10/08/06 42

93 08/10/06 Lunghezza char string1[100]; strcpy(string1, Apple ); printf( %d\n, strlen(string1)); output: 5 10/08/06 43

94 CSE1301 Sem Stringhe di caratteri come parametri Le stringhe come parametri formali sono dichiarate char* o char[] Esempi: void Greet ( char* name ) void Greet ( char name[] ) In tutto e per tutto sono vettori! 10/08/06 44 Lecture 20: Character Strings 44

95 08/10/06 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { strcat(name, "! Come va?"); } int main() { char user[namelen]; } printf( Chi sei? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; user è Jake\0 10/08/06 45

96 08/10/06 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { strcat(name, "! Come va?"); } int main() { char user[namelen]; } printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; name punta user è Jake\0 10/08/06 46

97 08/10/06 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { strcat(name, "! Come va?"); } int main() { char user[namelen]; } printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; name punta user è Jake! Come va?\0 10/08/06 47

98 08/10/06 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { strcat(name, "! Come va?"); } int main() { char user[namelen]; } printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; user è Jake! Come va?\0 10/08/06 48

99 08/10/06 Sommario Una stringa è un array continuo di caratteri L identificatore di stringa è l indirizzo stesso del primo carattere della stringa Ogni singolo carattere è individuato usando la notazione tipica ad array nome-stringa[indice] Esistono librerie C standard per copiare, concatenare e confrontare le stringhe 10/08/06 49

100 08/10/06 Deitel & Deitel Capitolo 8: /08/06 50

A. Ferrari. stringhe di caratteri In linguaggio C

A. Ferrari. stringhe di caratteri In linguaggio C stringhe di caratteri In linguaggio C stringhe o un insieme di caratteri in sequenza forma una stringa o alcuni linguaggi definiscono per le stringhe uno specifico tipo di dato e offrono metodi specifici

Dettagli

Stringhe. Concetti chiave

Stringhe. Concetti chiave Concetti chiave Stringhe Variabili strutturate: array di caratteri Carattere di fine stringa Copiare, concatenare, confrontare e convertire stringhe Funzioni standard strcpy, strcat, strcat, strcmp, atoi,

Dettagli

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0 STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1

Dettagli

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

Dettagli

Gestione delle stringhe in C

Gestione delle stringhe in C Gestione delle stringhe in C 1 Generalità Una stringa è un vettore di caratteri il cui ultimo elemento è un carattere terminatore (o di fine stringa), codificato dal carattere di codice 0 e rappresentato

Dettagli

RIPRENDIAMO I PUNTATORI

RIPRENDIAMO I PUNTATORI RIPRENDIAMO I PUNTATORI Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 =&a Esistono in C particolari variabili dette

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

STRINGHE: ARRAY DI CARATTERI! a p e \0

STRINGHE: ARRAY DI CARATTERI! a p e \0 STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più

Dettagli

Lezione XI Le stringhe

Lezione XI Le stringhe Programmazione e Laboratorio di Programmazione Lezione XI Le stringhe Programmazione e Laboratorio di Programmazione: Le stringhe 1 Premessa: Il tipo char Dimensione: 1 byte Range: da 0 a 255 Definizione:

Dettagli

Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici. Operatori di incremento e decremento ++ e -- Esempi y=x++ il contenuto della variabile x viene inizialmente usata per l assegnazione y, e solo dopo incrementata y=--x il contenuto della variabile x viene

Dettagli

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Lezione 19 e 20 - Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Valentina Ciriani (2005-2008) Laboratorio di programmazione Valentina Ciriani

Dettagli

Linguaggio C: Stringhe Valeria Cardellini

Linguaggio C: Stringhe Valeria Cardellini Linguaggio C: Stringhe Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Argomenti q

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017

Dettagli

Linguaggio C - Stringhe

Linguaggio C - Stringhe ISTITUTO SECONDARIO DI ISTRUZIONE SUPERIORE "Guido Tassinari" di POZZUOLI Informatica Prof. A.S. 2011/2012 Linguaggio C - Stringhe 27/04/2012 Array di caratteri Una stringa è: Un array di caratteri Termina

Dettagli

Linguaggio C - Array. Array: tipo nome_array[num_elementi]

Linguaggio C - Array. Array: tipo nome_array[num_elementi] Linguaggio C - Array Array: Gli array o vettori sono delle strutture dati in grado di contenere un insieme di valori tutti dello stesso tipo. Un array lo possiamo immaginare come un contenitore suddiviso

Dettagli

ELEMENTI DI INFORMATICA. Linguaggio C

ELEMENTI DI INFORMATICA. Linguaggio C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica ELEMENTI DI INFORMATICA http://agile.diee.unica.it A.A. 2015/2016 Ing. Marco Ortu Diee, secondo piano Tel. 070-6755774 mail:

Dettagli

Lezione 8: Stringhe ed array multidimensionali

Lezione 8: Stringhe ed array multidimensionali Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si

Dettagli

STRINGHE: ARRAY DI CARATTERI STRINGHE: ARRAY DI CARATTERI. a p e \0

STRINGHE: ARRAY DI CARATTERI STRINGHE: ARRAY DI CARATTERI. a p e \0 STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1

Dettagli

Puntatori e array. Violetta Lonati

Puntatori e array. Violetta Lonati Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti

Dettagli

Stringhe. Unità 8. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Stringhe. Unità 8. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin Linguaggio C Vettori, Puntatori e Funzioni Stringhe Università degli Studi di Brescia Prof. Massimiliano Giacomin SCHEMA DELLA LEZIONE RELAZIONE TRA VETTORI E PUNTATORI (e le stringhe letterali come caso

Dettagli

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1: funzione con valore di ritorno di tipo puntatore Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio

Dettagli

Introduzione al C. Unità 8 Stringhe. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi

Introduzione al C. Unità 8 Stringhe. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 8 Stringhe S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi Sommario

Dettagli

Le stringhe. Le stringhe sono sequenze di caratteri,

Le stringhe. Le stringhe sono sequenze di caratteri, Stringhe Le stringhe Le stringhe sono sequenze di caratteri, in C le stringhe costanti vengono denotate da una successione di caratteri racchiusa fra apici Es: "ciccio" "n = %d" "Ciao Mondo" La rappresentazione

Dettagli

Introduzione al C. Unità 8 Stringhe

Introduzione al C. Unità 8 Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 8 Stringhe D. Bloisi, A. Pennisi, S. Peluso, S. Salza Sommario Unità 8 Array di

Dettagli

Le stringhe. Le stringhe sono sequenze di caratteri,

Le stringhe. Le stringhe sono sequenze di caratteri, Stringhe Le stringhe Le stringhe sono sequenze di caratteri, in C le stringhe costanti vengono denotate da una successione di caratteri racchiusa fra apici Es: "ciccio" "n = %d" "Ciao Mondo" La rappresentazione

Dettagli

soldi soldi, int, char, float char, int, float, double char: int float: double: float int char signed unsigned short int long int double Unità di Elaborazione (CPU) unsigned int Pippo long int Pluto

Dettagli

Stringhe e tipi di dati strutturati

Stringhe e tipi di dati strutturati Stringhe e tipi di dati strutturati Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 21 Marzo 2013 Info sui Labs http://tinyurl.com/ieimlabextra Ricordate di portare un adattatore!

Dettagli

Esercizi. Stringhe. Stringhe Ricerca binaria

Esercizi. Stringhe. Stringhe Ricerca binaria Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)

Dettagli

Il linguaggio C Puntatori

Il linguaggio C Puntatori Il linguaggio C Puntatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright Mirko Viroli Copyright 2016 2018 Moreno

Dettagli

Gestione di stringhe. Le stringhe in C/C++

Gestione di stringhe. Le stringhe in C/C++ Alessio Bechini - Corso di - Gestione di stringhe Parte del materiale proposto è stato gentilmente fornito da G. Lipari Le stringhe in C/C++ In C e in C++ non esiste un vero e proprio tipo stringa. Una

Dettagli

int, char, float.. int, char, float.. - char, int, float, double char: int float: double: float int char signed unsigned short int long int double int Pippo; unsigned int Pippo; long int Pippo; long int

Dettagli

soldi soldi, int, char, float.. int, char, float.. - char, int, float, double char: int float: double: float int char signed unsigned short int long int double int Pippo; unsigned int Pippo; long int

Dettagli

Il linguaggio C Puntatori

Il linguaggio C Puntatori Il linguaggio C Puntatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - puntatori 2 Ringraziamenti Questi

Dettagli

Tipi di dato STRUTTURATI

Tipi di dato STRUTTURATI Tipi di dato STRUTTURATI I tipi di dato si differenziano in scalari e strutturati In C si possono definire tipi strutturati: array e strutture [ ] (array) Un array è una collezione finita di N variabili

Dettagli

Introduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso

Introduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso Introduzione al C Lezione 4 Allocazione dinamica della memoria Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Funzioni standard del C: Funzioni di I/O Allocazione dinamica della memoria Funzioni su stringhe di caratteri Testo di riferimento B.W. Kernighan & D.M. Ritchie

Dettagli

Introduzione al C. Unità 8 Stringhe. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Introduzione al C. Unità 8 Stringhe. D. Bloisi, S. Peluso, A. Pennisi, S. Salza Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 8 Stringhe D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Unità 8 Array di

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi gianluca.rossi@uniroma2.it Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)

Dettagli

Dichiarazioni e tipi predefiniti nel linguaggio C

Dichiarazioni e tipi predefiniti nel linguaggio C Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo. Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori:

Dettagli

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione

Dettagli

Stringhe. Prof. Lorenzo Porcelli

Stringhe. Prof. Lorenzo Porcelli Stringhe Prof. Lorenzo Porcelli definizione Una stringa è un vettore di caratteri terminato dal carattere nullo \0. Il carattere nullo finale permette di determinare la lunghezza della stringa. char vet[32];

Dettagli

Operazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Operazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli

MEMORIA DINAMICA. & Indirizzo * Contenuto. 1. Puntatori. Nozioni base sull uso dei puntatori: Operatori & * In sintesi : /* Definizine variabili */

MEMORIA DINAMICA. & Indirizzo * Contenuto. 1. Puntatori. Nozioni base sull uso dei puntatori: Operatori & * In sintesi : /* Definizine variabili */ MEMORIA DINAMICA 1. Puntatori Nozioni base sull uso dei puntatori: Operatori & * ES /* Definizine variabili */ int x, y; /* Variabili intere */ int *px; /* Puntatore a intero */ x = 10; /* Assegno 10 a

Dettagli

Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio:

Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio: Variabili locali Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. void leggivettore(int v[], int dim) int i; /* i E UNA VARIABILE LOCALE */ for (i

Dettagli

Aritmetica dei puntatori

Aritmetica dei puntatori Aritmetica dei puntatori Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 7 dicembre 2016 sizeof L operatore

Dettagli

Il linguaggio C Gestione della memoria

Il linguaggio C Gestione della memoria Il linguaggio C Gestione della memoria Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - Gestione della memoria

Dettagli

Anche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto:

Anche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto: ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti

Dettagli

ESERCIZIO: Lettura/Scrittura Array

ESERCIZIO: Lettura/Scrittura Array ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti

Dettagli

Stringhe. Una stringa è una sequenza di caratteri. Esempi: printf( Sum = %d, s); #define ERR_PREFIX ***** Error -

Stringhe. Una stringa è una sequenza di caratteri. Esempi: printf( Sum = %d, s); #define ERR_PREFIX ***** Error - Stringhe dichiarazione e input/output assegnamento e sottostringhe concatenazione confronto array di puntatori a stringhe input/output, analisi e conversione di caratteri conversione da stringa a numero

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

Programmazione in C. La struttura del programma Variabili, espressioni, operazioni

Programmazione in C. La struttura del programma Variabili, espressioni, operazioni Programmazione in C La struttura del programma Variabili, espressioni, operazioni Struttura del programma // Area quadrato circoscritto // circonferenza /* Author: Lorenzo Course: info */ #include

Dettagli

Introduzione al linguaggio C Dati aggregati

Introduzione al linguaggio C Dati aggregati Introduzione al linguaggio C Dati aggregati Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 5 ottobre

Dettagli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali

Dettagli

Funzioni con numero variabile di parametri: Funzioni Variadiche in C. Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati

Funzioni con numero variabile di parametri: Funzioni Variadiche in C. Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati Funzioni con numero variabile di parametri: Funzioni Variadiche in C Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati Funzioni «variadiche» Le funzioni che ricevono un numero variabile di

Dettagli

Allocazione dinamica memoria

Allocazione dinamica memoria Allocazione dinamica memoria Marco Casazza 11/12/2017 1 Esercizio 1 1 /* 2 Creare una lista bidirezionale di interi, ovvero una lista 3 che permette lo scorrimento in entrambe le direzioni ( dal primo

Dettagli

Ripasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C

Ripasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C Ripasso R1 Dati strutturati Aggregazione di dati omogenei: gli array Spesso gli algoritmi lavorano su insiemi di dati omogenei. o l insieme dei valori reali che rappresentano le temperature medie delle

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 20 Aprile 2016

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 20 Aprile 2016 Puntatori Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 20 Aprile 2016 Come rappresento un pixel? Il pixel è Il colore Come ottengo il verde? Con il formato RGB R: 91 G: 191 B:

Dettagli

Esercitazione 2. Variabili e Tipi Input e Output Assegnamenti Il comando if-else

Esercitazione 2. Variabili e Tipi Input e Output Assegnamenti Il comando if-else Esercitazione 2 Variabili e Tipi Input e Output Assegnamenti Il comando if-else Espressioni aritmetiche /* Scrivere un programma che calcola l area e la circonferenza di un cerchio di raggio 20 cm */ #include

Dettagli

Esercizi sulle stringhe

Esercizi sulle stringhe Esercizi sulle stringhe Esercizio 1 La cifratura è un processo di sostituzione, permutazione manuale ed automatica di simboli. Lo scopo di un criptosistema è di cifrare un testo intellegibile (in chiaro)

Dettagli

Alcuni Richiami sul C

Alcuni Richiami sul C Alcuni Richiami sul C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno richiamati

Dettagli

Programmazione I (Classe 1)

Programmazione I (Classe 1) Programmazione I (Classe 1) Secondo appello (prima prova) 14 Luglio 2016 Docenti: De Prisco - Deufemia - Zizza Cognome: Nome: Matricola: Ritirato 1 Esercizi (leggere attentamente il testo prima di scrivere

Dettagli

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Introduzione al C. Lez. 1 Elementi. Rossano Venturini Introduzione al C Lez. 1 Elementi Rossano Venturini rossano@di.unipi.it Pagine del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start http://algoritmica.spox.spoj.pl/alglab2013 Lezioni

Dettagli

Array. Definizione e utilizzo di vettori

Array. Definizione e utilizzo di vettori Array Definizione e utilizzo di vettori Array (1/2) Un array o vettore rappresenta un insieme di elementi dello stesso tipo. Sintassi per la creazione di un array: tipo_elementi[] nome; nome = new tipo_elementi[numero_elementi];

Dettagli

ottenere la lunghezza di una stringa con la funzione strlen(stringa); Esercizio 5.1

ottenere la lunghezza di una stringa con la funzione strlen(stringa); Esercizio 5.1 Le stringhe di caratteri sono gestite in C come dei vettori di char con alla fine un tappo dato dal carattere \0. E possibile acquisire un intera stringa di caratteri in una sola istruzione grazie all

Dettagli

Esercizio 1: calcolo insieme intersezione

Esercizio 1: calcolo insieme intersezione Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 3 Esercitazione: 19 ottobre 2005 Esercizi su array e matrici Esercizio 1: calcolo insieme intersezione Problema: *******************************************************************

Dettagli

Array. Aggragati di variabili omogenee...

Array. Aggragati di variabili omogenee... Array Aggragati di variabili omogenee... Cosa è un array È un insieme di variabili omogenee identificato da un indice, ad esempio Se devo leggere 1 numeri dallo standard input e memorizzarli all'interno

Dettagli

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono

Dettagli

Introduzione al C. Lez. 2 Funzioni e Puntatori

Introduzione al C. Lez. 2 Funzioni e Puntatori Introduzione al C Lez 2 Funzioni e Puntatori Esercizio 1: test primalità Scrivere un programma che prenda in input un intero n, e stampa SI se n è primo, NO altrimenti (NB: un intero n è primo se e solo

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Linguaggio C - Stringhe

Linguaggio C - Stringhe Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - Stringhe La presente dispensa e da utilizzarsi ai

Dettagli

Esercizi. La funzione swapint() primo tentativo

Esercizi. La funzione swapint() primo tentativo Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include

Dettagli

Gli array. slides credit M. Poneti

Gli array. slides credit M. Poneti Gli array slides credit M. Poneti Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome e lo

Dettagli

Esercitazione 3 - Note

Esercitazione 3 - Note Esercitazione 3 - Note Ing. Michele Scandale 18-10-2012 Il materiale illustrato a lezione e in queste note contiene anche esempi di Giacomo Boracchi, Luigi Cardamone, Nicola Basilico e Nicola Vitucci.

Dettagli

Struttura dei programmi e Variabili

Struttura dei programmi e Variabili Linguaggio C Struttura dei programmi e Variabili 1 La struttura generale dei programmi! Struttura del programma: Direttive Funzioni Dichiarazioni Istruzioni Di assegnamento direttive Di ingresso e uscita

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori

Dettagli

Tipi strutturati in C. Stringhe

Tipi strutturati in C. Stringhe Tipi strutturati in C Stringhe Stringhe Una stringa di caratteri in C è un array di caratteri terminato dal carattere \0 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1 caratteri,

Dettagli

Uso avanzato dei puntatori Allocazione dinamica della memoria

Uso avanzato dei puntatori Allocazione dinamica della memoria Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli