Fondamenti di Informatica A - Massimo Bertozzi ARRAY E STRINGHE Curiouser and curiouser! Alice's Adventures in Wonderland, Lewis Carrol.

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

Corso di Fondamenti di Programmazione canale E-O
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità G1 Dati strutturati.
Ripasso R1 Dati strutturati.
Anno accademico Array e puntatori in C.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Funzioni di Libreria per le stringhe DICHIARAZIONI CONTENUTE NEL FILE: char *strcpy( char *dest, const char *sorg ); Copia sorg in dest, incluso il carattere.
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
Il Linguaggio C.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.
Ricerca sequenziale in un array di interi
CORSO DI PROGRAMMAZIONE II
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Informatica 6 Tipi di dato. Nelle celle di memoria di un calcolatore ci sono solo “0” e “1”, fisicamente realizzati tramite due diversi livelli di tensione.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
Stringhe Una stringa è un vettore di char con un carattere costante \0 che indica la fine della stringa il terminatore rende differenti gli array di char.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Fondamenti di Informatica A - Massimo Bertozzi LE FUNZIONI.
Fondamenti di Informatica A - Massimo Bertozzi I PUNTATORI.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Fondamenti di Informatica A - Massimo Bertozzi LE RAPPRESENTAZIONI CONCATENATE.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Process synchronization
Process synchronization
Gestione della memoria
ELEMENTI DI INFORMATICA
Java World Introduzione.
Java: concetti e costrutti base
Introduzione al linguaggio C
Struct, enum, Puntatori e Array dinamici
Process synchronization
Process synchronization
I FILES AD ACCESSO SEQUENZIALE
TIPI PRIMITIVI TIPI STRUTTURATI
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Corso Java Introduzione.
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Java: le basi del linguaggio
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Tipo String String è una classe predefinita
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
APPUNTI SUL LINGUAGGIO C
Process synchronization
La struttura dei primi programma in C
Le stringhe in C++ Laboratorio 26 Aprile Dott. Serena Villata
Lucidi della Pof.ssa Pazienza
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
APPUNTI SUL LINGUAGGIO C
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Java Introduzione.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
Array (vettori) In linguaggio C / C++.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Fondamenti di Informatica A - Massimo Bertozzi ARRAY E STRINGHE Curiouser and curiouser! Alice's Adventures in Wonderland, Lewis Carrol

Fondamenti di Informatica A - Massimo Bertozzi Gli array ✗ In C si definisce vettore (array) un insieme di variabili dello stesso tipo memorizzate consecutivamente. ✗ Gli array permettono la gestione di grandi moli di dati correlati tra di loro e dello stesso tipo. ✗ Ogni singola variabile dell`array è denominata elemento e vi si accede tramite un indice che varia tra 0 e il numero degli elementi-1

Fondamenti di Informatica A - Massimo Bertozzi Dichiarazione di un array ✗ La dichiarazione di un array generico è del tipo: Tipo Nome_array[Numero elementi]; ✗ Ad esempio: #define GIORNI 7 double temperature[GIORNI];

Fondamenti di Informatica A - Massimo Bertozzi Accesso ai singoli elementi ✗ L`accesso ai singoli elementi avviene tramite un indice intero: ✗ primo elemento: temperature[0]; ✗ terzo elemento: temperature[2]; ✗ ultimo elemento: temperature[GIORNI-1];

Fondamenti di Informatica A - Massimo Bertozzi Inizializzazione di un array ✗ L`inizializzazione di un array può avvenire sia in fase di dichiarazione che successivamente: char nome[8]={'P', 'i', 'e', 'r', 'o'}; nome[0]='P'; ✗ Nel primo caso gli elementi successivi sono inizializzati a 0: nome[5]==0 è true

Fondamenti di Informatica A - Massimo Bertozzi Occupazione in memoria ✗ I singoli elementi di un array (monodimensionale) sono memorizzati consecutivamente in memoria: int A[100]={3,4,8}; ✗ L`accesso ad un elemento avviene come: A+indice 4 A[1] 8 A[2] 0 A[3] 0 A[4] 0 A[5] 3 A[0] 0FFC 0 A[6] A[7] C A[8] 101C

Fondamenti di Informatica A - Massimo Bertozzi PERICOLO! limiti di un array ✗ A differenza di molti altri linguaggi il C non effettua controlli sulla correttezza dell'Indice! int dummy[100]; dummy[100]=7; dummy[-1]=0; ✗ Le ultime due righe sono un esempio di buffer overrun e possono portare a: ✗ malfunzionamento del programma ✗ malfunzionamento del sistema operativo

Fondamenti di Informatica A - Massimo Bertozzi Occupazione in memoria ✗ È possibile la definizione di array a piú dimensioni: int A[2][3]={3,4,8,1,2,7}; int A[2][3]={{3,4,8},{1,2,7}}; ✗ Lo standard ANSI non pone limiti al numero di dimensioni sebbene alcuni compilatori possano prevederne long b[2][3][7][12][1024]; char Sbagliato[23,67,89]; 4 A[0][1] 8 A[0][2] 1 A[1][0] 2 A[1][1] 3 A[0][0] 0FFC C 7 A[1][2] 1010 ??? A[2][0] 1014

Fondamenti di Informatica A - Massimo Bertozzi Omissione delle dimensioni Quando l'inizializzazione di un array coincide con la sua dichiarazione si possono omettere le dimensioni (una sola): long TreElementi[]={3,101325,-17}; short MatriceDuePerDue[][2]={1,1,2,3}; double ErroreInCompilazione[][]={1,2,3,4};

Fondamenti di Informatica A - Massimo Bertozzi Passaggio a funzioni ✗ Il passaggio di array a funzioni avviene per indirizzo: int a[100], b[10][20]; // array di interi void MiaFunc(int k[]); // funzione che prende come argomento un array di interi void MiaFunc(int *k); // equivalente alla precedente MiaFunc(a); // invocazione void AltraFunc(int j[][20]);

Fondamenti di Informatica A - Massimo Bertozzi Le stringhe ✗ Uno dei più comuni utilizzi di un array è la gestione di stringhe. carattere nullo ✗ Per stringa si definisce un array di char terminato dal carattere nullo '\0'. char LaMiaPrimaStringa[4]={'a','b','c','\0'}; char LaMiaPrimaStringa[4]=''abc''; char LaMiaSecondaStringa[]=''def''; char NonStringa[]={'g','h','i'}; char StoLargo[100]=''jklmnop'';

Fondamenti di Informatica A - Massimo Bertozzi La libreria cstring.h ✗ Il C fornisce numerose funzioni per la manipolazione delle stringhe: #include ✗ Il C++ estende le capacità del C mediante la classe stringa #include string s1; // non ne parleremo

Fondamenti di Informatica A - Massimo Bertozzi #include int strcasecmp(const char *s1, const char *s2); char *strcat(char *dest, const char *src); char *strchr(const char *s, int c); int strcmp(const char *s1, const char *s2); int strcoll(const char *s1, const char *s2); char *strcpy(char *dest, const char *src); size_t strcspn(const char *s, const char *reject); char *strdup(const char *s); char *strfry(char *string); size_t strlen(const char *s); char *strncat(char *dest, const char *src, size_t n); int strncmp(const char *s1, const char *s2, size_t n); char *strncpy(char *dest, const char *src, size_t n); int strncasecmp(const char *s1, const char *s2, size_t n); char *strpbrk(const char *s, const char *accept); char *strrchr(const char *s, int c); char *strsep(char **stringp, const char *delim); size_t strspn(const char *s, const char *accept); char *strstr(const char *haystack, const char *needle); char *strtok(char *s, const char *delim); size_t strxfrm(char *dest, const char *src, size_t n); char *index(const char *s, int c); char *rindex(const char *s, int c);

Fondamenti di Informatica A - Massimo Bertozzi cstring.h (2) ✗ Tutte le funzioni elencate si basano sull'esistenza del carattere nullo ('\0') di terminazione. ✗ L'utilizzo delle doppie virgolette '' '' implica l'aggiunta del carattere nullo. ✗ L'assenza del '\0' implica malfunzionamenti: ✗ errori in lettura; ✗ errori in scrittura; Aggiungere il '\0' qualora necessario