4 GLI ARRAY E LE STRINGHE
|
|
|
- Anna Maria Romano
- 9 anni fa
- Просмотров:
Транскрипт
1 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si realizza mediante un indice. Come ogni variabile, affinché il compilatore possa allocare lo spazio di memoria necessario, l array deve essere dichiarato. La forma generale di dichiarazione di un array monodimensionale è la seguente: tipo nome_array [dimensione]; Ove tipo specifica il tipo di ogni elemento dell array, mentre dimensione definisce il numero di elementi contenuti nell array. Nel seguente esempio viene dichiarato un array, con nome Stipendi, di 30 elementi di tipo intero: int Stipendi[30]; Per accedere ad un elemento dell array occorre specificarne l indice, come nel codice seguente: Stipendi[5]=1250; Si tenga presente che il primo elemento di un array ha indice 0. Pertanto, la dichiarazione dell array Stipendi implica la creazione di 30 elementi che vanno da Stipendi[0] a Stipendi[29]. Il compilatore C non restituisce alcun errore se viene superato il limite di un array; è affidata al programmatore la verifica dell indice per evitare che questo superi i limiti dimensionali. La quantità di memoria richiesta da un array monodimensionale è legata alla dimensione ed al tipo: byte totali = sizeof(tipo)*dimensione Passaggio di un array monodimensionale ad una funzione Il passaggio di un array ad una funzione si realizza specificando il nome dell array senza alcun indice, ovvero, specificando un puntatore all array (i puntatori saranno trattati nel prossimo capitolo). Il seguente codice passa a Func1() l array Pippo. int main(void) { int Pippo[10] ; Func1(Pippo) ; Il parametro formale della funzione Func1, che deve ospitare l array, può essere dichiarato in due modi: come array dimensionato o come array non dimensionato. Negli esempi seguenti vengono evidenziate le due modalità: /* array dimensionato */ void Func1(int x[10]) {
2 14 /* array non dimensionato */ void Func1(int x[]) { Nel secondo caso si specifica che la funzione Func1 riceverà un array di tipo int, di lunghezza non dichiarata esplicitamente. In realtà, esiste un terzo metodo che dichiara il parametro formale come puntatore, ma ciò sarà oggetto del prossimo capitolo. 4.2 Le stringhe Una stringa consiste in una sequenza di caratteri. A differenza di altri linguaggi di programmazione, che definiscono le stringhe come tipi elementari, in C le stringhe vengono implementate mediante array. In particolare, una stringa in C è costituita da un array di caratteri che termina con il carattere nullo. Quando si dichiara una stringa occorre specificarne la dimensione, che sarà pari al numero di caratteri che deve contenere aumentato di una unità per il carattere nullo. Ad esempio, la seguente scrittura dichiara una stringa che può contenere 20 caratteri: char strnome[21]; Questa istruzione lascia uno spazio per il carattere nullo al termine della stringa. E possibile inizializzare una variabile stringa, quotando il testo che deve contenere, mediante il ricorso alla funzione strcpy presente nella libreria string: strcpy(strnome, Pinco Pallino ); Non è necessario aggiungere alla sequenza Pinco Pallino il carattere nullo per terminare la stringa, questa operazione viene svolta automaticamente dal compilatore C. Come negli array la scrittura strnome[5] restituirà il sesto carattere contenuto nella stringa strnome (il primo ha indice 0). Le librerie del C includono una serie di funzioni per la manipolazione delle stringhe. Le più comuni sono: Nome strcpy(s1,s2) strcat(s1,s2) strlen(s1) strcmp(s1,s2) strchr(s1,ch) Funzione Copia s2 in s1 Concatena s2 alla fine di s1 Restituisce la lunghezza di s1 Restituisce 0 se s1 e s2 sono uguali; un valore minore di 0 se s1<s2; maggiore di 0 se s1>s2 Restituisce un puntatore alla prima occorrenza di ch in s1
3 15 strstr(s1,s2) Restituisce un puntatore alla prima occorrenza di s2 in s1 Queste funzioni possono essere utilizzate includendo nel proprio progetto il file header standard string.h. 4.3 Gli array bidimensionali Un array bidimensionale viene dichiarato nel seguente modo: tipo Nome[dimensione1][dimensione2] Esso viene memorizzato in una matrice di righe e colonne: dimensione1 specifica il numero delle righe, mentre dimensione2 il numero delle colonne. Nell esempio seguente viene dichiarato un array, di tipo intero, costituito da 4 righe e 3 colonne. int A[4][3] In figura sono evidenziati i singoli elementi dell array: int A[i][j] Lo spazio di memoria richiesto da un array bidimensionale è espresso dalla seguente formula: byte totali = sizeof(tipo) * dimensione1 * dimensione2 In una funzione il parametro formale, che riceve un array bidimensionale, deve definire almeno le dimensioni che si trovano più a destra, in quanto il compilatore C deve conoscere la lunghezza di ogni riga per accedere correttamente ai vari elementi dell array. Affinché una funzione possa ricevere l array A dell esempio precedente, dev e essere dichiarata nel seguente modo: void Func1(int x[][3]) { A[0][0] A[0][1] A[0][2] 1 A[1][0] A[1][1] A[1][2] 2 A[2][0] A[2][1] A[2][2] 3 A[3][0] A[3][1] A[3][2] Gli array di stringhe Per creare un array di stringhe, si deve fare ricorso ad un array bidimensionale di caratteri. La dimensione dell indice di sinistra determina il numero delle stringhe, quella dell indice di destra specifica il numero massimo di caratteri di ciascuna stringa. La seguente dichiarazione crea un array di 20 stringhe lunghe massimo 29 caratteri: char Elenco[20][30];
4 16 La scrittura: strcpy(elenco[5], Pinco Pallino ); assegna alla sesta stringa dell array Elenco la sequenza di caratteri indicata. 4.4 L inizializzazione degli array Come ogni variabile, è possibile inizializzare un array al momento della dichiarazione. La forma generale dell inizializzazione di un array è la s eguente: tipo nome_array [dim1] [dim2] [dimn]={elenco_valori; ove elenco_valori è un elenco di valori separati da virgole, in cui il primo valore sarà posizionato nella primo elemento dell array, il secondo nel secondo elemento e così via. Nel seguente esempio viene dichiarato ed inizializzato un array di 10 elementi di tipo intero: int A[10]={10,20,30,40,50,60,70,80,90,100; Dopo la dichiarazione A[0] conterrà il valore 10, A[1] il valore 20 e così via tutti gli altri. È possibile inizializzare gli array di caratteri (stringhe) in una maniera più immediata: char nome_array [dim] = stringa ; Nell esempio seguente viene dichiarata una stringa di 20 caratteri ed inizializzata con la frase Buona giornata : char Prova[20]= Buona giornata ; Ciò equivale a scrivere: char Prova[20]={ B, u, o, n, a,, g, i, o, r, n, a, t, a, \0 ; Poiché in C tutte le stringhe terminano con il carattere nullo, bisogna assicurarsi che l array dichiarato sia lungo abbastanza per contenere tale carattere. È possibile inizializzare gli array bidimensionali in maniera analoga agli array monodimensionali; nell esempio seguente si inizializza A con i numeri da 1 a 10 ed i rispettivi quadrati: int Sqr[10][2]={1,1,2,4,3,9,4,16,5,25,6,36,7,49,8,64,9,81,10,100; In generale, è preferibile raggruppare tutti gli elementi che si riferiscono ad una dimensione tra parentesi quadre. La precedente dichiarazione può, quindi, essere espressa nel seguente modo: int Sqr[10][2]={ {1,1, {2,4, {3,9, {4,16,
5 17 {5,25, {6,36, {7,49, {8,64, {9,81, {10,100 ; Gli array non dimensionati In C è possibile creare array non dimensionati unicamente se associati ad una inizializzazione. Se nell istruzione di inizializzazione di un array non si specificano le di mensioni, il compilatore C creerà automaticamente un array sufficientemente grande per contenere tutti gli inizializzatori presenti. La seguente istruzione genera un array (stringa) non dimensionato, grande a sufficienza per ospitare la sequenza di caratteri indicata a destra dell uguale: char messaggio[]= Ciao Ciao ;
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
PROGRAMMAZIONE AVANZATA JAVA E C
PROGRAMMAZIONE AVANZATA JAVA E C Massimiliano Redolfi Lezione 3: C puntatori, funzioni, array multidim Voglio realizzare una funzione che dato un array di interi ne restituisca la somma come fare? Prima
I tipi strutturati e i record in C++
I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi
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
Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
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ù
Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
stringhe array monodimensionali char. libreria < string.h>
Le stringhe Le stringhe sono array monodimensionali il cui tipo base è char. Il nucleo del linguaggio non prevede particolari istruzioni per il trattamento delle stringhe che potrebbero essere gestite
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
Array e puntatori in C
Array e puntatori in C Diapositive adattate dalle omonime create dalla Dottoressa di Ricerca Giovanna Melideo per il corso di Laboratorio di Algoritmi e Strutture Dati 10/05/2005 LP2-04/05 - Appunti di
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
Dati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
Linguaggio C: Array Valeria Cardellini
Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione
Gli Array. Dichiarazione di un array
Gli Array Un array rappresenta una variabile indicizzata (ovvero contenente un indice) che viene utilizzata per contenere più elementi dello stesso tipo. Ogni array ha un nome al quale viene associato
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
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
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
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
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
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;
A. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica
informatica Java basi del linguaggio Alberto Ferrari Informatica struttura di un programma Java /** * Classe EsempioProgramma * Un esempio di programmazione in Java * @author 4A Informatica */ public class
L AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout
Array multidimensionali e stringhe
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi
Stringhe in C. Emilio Di Giacomo
Stringhe in C Emilio Di Giacomo Stringhe Una stringa è una sequenza finita di caratteri Le stringhe sono un tipo di dati talmente importante e utile che fanno parte di quasi tutti i linguaggi di programmazione
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
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
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;
I CARATTERI E LE STRINGHE
I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard
Allocazione dinamica della memoria: calloc() Se T è il nomed di un tipo, la chiamata calloc(n, sizeof(t)) è equivalente a malloc(n * sizeof(t))
Allocazione dinamica della memoria: malloc() In C è possibile allocare dinamicamente un area di memoria (ossia, durante l esecuzione di un programma) tramite le funzioni malloc() e calloc() (occorre includere
