I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo...

27
I tipi Strutturati

Transcript of I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo...

Page 1: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

I tipi Strutturati

Page 2: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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)

Page 3: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

Esempi di utilizzo di sizeof

sizeof(int); sizeof(float); sizeof(Punto); sizeof pt; sizeof t;

Page 4: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

Un po’ di pratica !!!

Page 5: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

I tipi strutturati

Tipi Componenti Semplici Strutturati

Assemblaggio Prodotto Cartesiano Sequenza

Funzione di accesso per posizione per nome

Page 6: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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)

Page 7: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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

Page 8: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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

Page 9: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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à

Page 10: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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)

Page 11: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

Array in C++

Dichiarazione Tipo nome_array[dimensione];

Esempio: float x[25];

typedef Tc Vettore[dimensione];Esempio: typedef float Vettore[25];

Vettore x;

Page 12: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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;

Page 13: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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 !

Page 14: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

Un po’ di pratica !!!

Page 15: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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.

Page 16: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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.

Page 17: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

Il record: dichiarazione e definizionestruct nome {

D1;D2; ...DN;

};esempio:struct point {

int x;int y;

};struct point pt;

definizione

dichiarazione

Page 18: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

Il record: dichiarazione e definizionetypedef struct {

D1;D2; ...DN; } nometipodichiarato;

Esempio:typedef struct {int x;int y;

} Point;Point pt;

definizione

dichiarazione

Page 19: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

Record: accesso

Funzioni di accesso pt.x pt.y pt.x = 3; pt.y = 12; pt = {3,12};

Page 20: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

Record: assegnazione

Assegnazione Point pt1, pt2; pt1 = {2,1}; pt2 = pt1;

Page 21: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

Un po’ di pratica !!!

Page 22: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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)

Page 23: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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!

Page 24: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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’;

Page 25: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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

Page 26: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

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

Page 27: I tipi Strutturati. Dimensioni variabili strutturate La funzione sizeof consente di determinare lo spazio necessario alla memorizzazione di una variabile.

Pratica !!!