i tipi strutturati. dimensioni variabili strutturate la funzione sizeof consente di determinare lo...

Post on 01-May-2015

217 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 !!!

top related