I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo...
-
Upload
colombo-esposito -
Category
Documents
-
view
217 -
download
0
Transcript of I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo...
I tipi Strutturati
Dimensioni variabili strutturate
La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile (o di un tipo); sizeof variabile sizeof(nome_di_tipo)
Esempi di utilizzo di sizeof
sizeof(int); sizeof(float); sizeof(Punto); sizeof pt; sizeof t;
Un po’ di pratica !!!
I tipi strutturati
Tipi Componenti Semplici Strutturati
Assemblaggio Prodotto Cartesiano Sequenza
Funzione di accesso per posizione per nome
I tipi strutturati
Costruttore del tipo struttura sintattica, che identifica le
modalità di costruzione e i tipi componenti, cui sono associate le funzioni di accesso
Costruttore dei valori formalismo adoperato per indicare un
valore strutturato attraverso di suoi componenti. es. (x,y)
Gli array
Gli array si definiscono come cartesiano di n tipi uguali: tipo array = cartesiano (T 1 , T 2 , ...,
T n ) con T 1 = T 2 = ... = T n
Sono caratterizzati da: struttura ad accesso casuale accesso con un indice calcolato
Array
Nella dichiarazione del tipo Array occorre specificare: tipo degli elementi componenti
int, float, etc … numero di indici (dimensionalità o rango
dell’array) Array monodimensionale (vettore) Array bidimensionale (matrice)
valore minimo e massimo di ciascun indice
Array La “Funzione di accesso” è del tipo: M[i] (dimensionalità pari a uno) M[i,j] M[i][j] (dimensionalità pari a due)
Sugli array è possibile effettuare operazioni: sui singoli elementi sulla struttura in quanto tale
.
Un esempio di costruttore è: int b[2][3]= {{1,2,3}{4,5,6}};
tipo
nomeValori max indice
dimensionalità
Allocazione Array
Allocazione Statica Dinamica
Ordinamento elementi Monodimensionali:
i < j a(i) precede a(j) Bidimensionali
i1 < i2 A(i1, .) precede A(i2, .) j1 < j2 A(i, j1) precede A(i, j2)
Array in C++
Dichiarazione Tipo nome_array[dimensione];
Esempio: float x[25];
typedef Tc Vettore[dimensione];Esempio: typedef float Vettore[25];
Vettore x;
Esempi Array in C++
float x[25]; //definizione
x[0]; // primo elemento
x[j]; // j-mo elemento
x[25]; // errore!
Esempio array bidimensionalefloat b[20][25];
typedef Matrice [20][25];
Matrice b;
Esempi (continua)
int a[10], b[10]; //definizione a = b; // illegale: occorre copiare tutti gli elementi
a[4]= b[9]; //ok!
Controllo sui limiti a [3] = b[11]; //errore non segnalato !
Un po’ di pratica !!!
Tipo Record (o Struttura)
Il Tipo recor è definito come il cartesiano di n tipi distinti: record=cartesiano(T 1 , T 2 , ..., T n ),
con T1 , T2 , ..., Tn qualsiasi
E’ una struttura dati ad accesso casuale costituita da un numero fisso di componenti, detti anche campi del record, che possono essere di tipo semplice o a loro volta strutturato.
Il record
Svolge una generica funzione di raggruppamento di più attributi relativi alla medesima entità. Ogni campo ha un proprio nome ed è accessibile singolarmente mediante composizione del suo nome con quello del record.
Il record: dichiarazione e definizionestruct nome {
D1;D2; ...DN;
};esempio:struct point {
int x;int y;
};struct point pt;
definizione
dichiarazione
Il record: dichiarazione e definizionetypedef struct {
D1;D2; ...DN; } nometipodichiarato;
Esempio:typedef struct {int x;int y;
} Point;Point pt;
definizione
dichiarazione
Record: accesso
Funzioni di accesso pt.x pt.y pt.x = 3; pt.y = 12; pt = {3,12};
Record: assegnazione
Assegnazione Point pt1, pt2; pt1 = {2,1}; pt2 = pt1;
Un po’ di pratica !!!
Il Tipo Stringa
In generale una stringa di caratteri è una sequenza di caratteri atta a rappresentare una frase, un testo, etc...Concetti fondamentali lunghezza di una stringa concatenamento di due stringhe ordinamento (derivante da quello lessicografico)
Stringhe in C++
Una stringa in C++ è un array di caratteri che, nella rappresentazione interna, è terminato dal carattere nullo (‘\0’) Quindi internamente una stringa occupa un
carattere in più del numero di caratteri che la compongono!
Le funzioni che operano sulle stringhe si aspettano il terminatore ‘\0’ Nelle stringhe composte “a mano” occorre inserire ad
hoc il carattere di terminazione!
Dichiarazione di una stringa
char stringa[10]; è cura del programmatore aggiungere il ‘\0’
per identificare la fine della stringa
char stringa2[] = “0123456789”; nel caso di assegnazioni di costanti stringa
non è necessario aggiungere il terminatore ‘\0’;
Funzioni su stringhe
Le stringhe sono in genere utilizzate in operazioni di Input – Output
Input (cin) #include <iostream.h> char str[81]; cin >> str L’input viene terminato al primo
carattere di spaziatura (‘\n’, ‘\t’, ‘<spazio>‘)
Input (gets) #include <stdio.h> gets(str); cout << str
Esempi di funzioni sulle stringhe
strcpy(str1, str2); Copia la stringa str2 nella stringa str1
strcat(s1, s2); Concatena le due stringhe
strcmp(s1,s2); Confronto tra le due stringhe
strlen(s); Restituisce la lunghezza della stringa
Pratica !!!