Sei sulla pagina 1di 6

LE MATRICI

Si definisce matrice a N righe e a M colonne, o più brevemente matrice di tipo N x M, una tabella con N x M elementi
omogenei, disposti su:
• N linee orizzontali (righe)
• M linee verticali (colonne).
Gli elementi si indicano di solito con una stessa lettera munita di 2 indici:
• il primo per indicare la riga
• il secondo per indicare la colonna a cui appartengono.
→ Questa struttura prende il nome di ARRAY BIDIMENSIONALE o MATRICE
Per la dichiarazione di una matrice faremo riferimento alla seguente sintassi:

dove: <NomeMatrice> : ARRAY[<NumRighe>, <NumColonne>] di <TipoElemento>

• <NomeMatrice> è il nome da assegnare alla variabile di tipo array;


• ARRAY è la parola chiave per la definizione di questo tipo di dato;
• <NumRighe> è il numero di righe di cui è composta la matrice;
• <NumColonne> è il numero di colonne di cui è composta la matrice;
• <TipoElemento> è il tipo di dato degli elementi della matrice.

Le operazioni base sulle matrici sono analoghe a quelle viste per i vettori.

INIZIALIZZAZIONE E STAMPA DI
UNA MATRICE

LE MATRICI IN C++
Per dichiarare una matrice bisogna utilizzare un’istruzione formata così:
tipoVariabile nomeMatrice [numeroRighe] [numeroColonne];
• TipoVariabile è tipo di dato di cui si vuole costruire la matrice (può essere int, char, float, double, bool...)
• numeroRighe e numeroColonne devono essere dei valori costanti e rappresentano come dice il nome il
numero di righe e di colonne della matrice.

Per esempio, creiamo una matrice nella quale registrare la temperatura misurata, in una settimana, ogni 6 ore.
Float Temperature[7][4];
Come per gli array le celle delle righe e delle colonne si contano a partire da 0.
→ Nella dichiarazione di una matrice, la dimensione delle righe può essere omessa (non quella delle colonne).

Es. Float dati[][3]= {{5.3,12.1,2.8}{4.5,7.9,21.6}{56.2,4.2,12.6}}; L’istruzione dichiara ed inizializza una matrice di


. reali 3 x 3, di nome dati
• Numero di righe: assegnato dal sistema in base al numero di sottoinsiemi contenuti nell’inizializzazione (i 3
insiemi delimitati dalle { } )
• Numero di colonne: potrebbe essere diverso da sottoinsieme a sottoinsieme, perciò deve essere esplicitato.
Il passaggio di una matrice come parametro segue le stesse indicazioni dei vettori; l’unica differenza è l’obbligo di
esplicitare il numero di colonne.

• Ogni cella della matrice funziona esattamente come una variabile


• per richiamarla bisogna usare il nome della matrice e indicare il numero di riga e di colonna della cella della
matrice.
Es. m[2][4]=10; memorizza nella cella della matrice m con numero di riga 2 e numero di colonna 4 il valore 10.

MATRICE TRASPOSTA → inverte colonne e righe: la riga diventa colonna e la colonna diventa riga.

Data in input una matrice, realizza la sua trasposta


I RECORD:
Nella realtà capita spesso l’esigenza di dover trattare informazioni di tipo diverso (es. char e interi).
Per analizzare più informazioni di diverso tipo relative ad un oggetto preso in esame, si utilizza il RECORD.
Il record, propone un modo per descrivere una classe di oggetti aventi caratteristiche comuni, che prendono il nome
di attributi.
Ad esempio:
 classe di oggetti: LIBRO
 attributi: (diverse tipologie)
o titolo -- intero
o autore -- intero
o casa editrice -- intero
o data di pubblicazione -- float
Un record, o registrazione, è una struttura di dati a carattere statico composta da un insieme finito di elementi
omogenei o eterogenei detti campi. I campi sono tra loro logicamente connessi e corrispondono agli attributi. Ogni
campo accoglie un valore per un attributo.
ATTRIBUTI

Nome Data di nascita Indirizzo Matricola


Luca 27/10/1980 Via Pia, 8 36985
Francesca 4/7/1971 Via Roma, 4 14785
Enrico 1/12/1978 Via Reno, 8 12345
CAMPO

Un record è caratterizzato da un nome, che lo identifica e si riferisce a esso nella sua globalità. RECORD
I campi che lo compongono sono caratterizzati da un nome e dal tipo di dato che possono contenere.
Chiamiamo struttura di un record la definizione dei campi che compongono il record stesso
Per definire il record possiamo eseguire due step:
1. metodo di rappresentazione tabellare (lo preparo io non va nel codice)

2. metodo di dichiarazione sintattica, molto vicino a quello utilizzato da alcuni linguaggi di programmazione.
Per definire un record occorre specificare:
a. Nome della variabile record;
b. Nome di ogni campo
c. Tipo di ogni campo

I RECORD: SINTASSI
Nella terminologia del linguaggio C/C++, i record vengono chiamati strutture. Una struttura può contenere al proprio
interno dati di tipo aggregato: array e struct. Per esempio, per dichiarare la struttura automobile o
equivalentemente “una struttura di tipo automobile” o ancora “un tipo di struttura automobile”, scriveremo:
UNSIGNED: variabile intera
sempre positiva

All’interno della dichiarazione:


 Non è consentita alcuna inizializzazione dei campi
 Non è consentito utilizzare per un campo, un nome uguale al nome della struttura
 Si possono utilizzare tipi semplici, tipi aggregati o tipi definiti dall’utente.

Esempi di dichiarazioni:

 Per dichiarare 3 variabili di tipo automobile

 3 variabili dichiarate in fase di dichiarazione del tipo di struct

 Dichiarazione di una variabile inizializzata ai suoi valori e ai suoi campi

Per riferirsi ad un particolare campo di una struttura, utilizziamo la cosiddetta dot notation, secondo la seguente
sintassi:

Esempi di sintassi:
 Assegniamo ad una variabile x di tipo unsigned il valore della cilindrata (campo) contenuto in una variabile
a3 di tipo automobile. Per cui la variabile x ora conterrà il valore 1900

 Per assegnare al campo cilindrata della variabile a1 di tipo automobile un nuovo valore

 Per inserire con un gets nella struct alla targa della variabile a2

STRUCT E ARRY:
Una struttura può contenere al proprio interno dati di tipo aggregato: array e struct.
Per rappresentare in una struct volo sia i dati relativi ai voli di una compagnia aerea, che la lista dei passeggeri dei
voli:

Variabile passeggeri è una


matrice di tipo char, ossia un
vettore di stringhe , per contenere
il nome dei passeggeri.

Se dovessimo registrare anche l’età e magari la statura dei passeggeri, la matrice non sarebbe più adeguata , perché
dovremmo gestire dati non omogenei → sarebbe dunque necessario utilizzare un’altra struct, interna alla prima.
Lista è un vettore i cui elementi
sono di tipo struct passeggero.

Realizza la tavola pitagorica:

RIASSUNTO SCHEMATICO (codice c++)


Memorizzare in un array bidimensionale 5 per 5 tutti zeri tranne nelle celle della diagonale principale dove
memorizzare uno .

(non usare l'inizializzazione con parentesi graffe nemmeno per gli zeri)

#include <iostream> {
using namespace std; matrice[i][j]=0; 10000
int main() } 01000
{ } 00100
int matrice[5][5]; } //stampa la matrice 00010
//memorizza la matrice for(int i=0;i<5;i++)
for(int i=0;i<5;i++) 00001
{
{ for(int j=0;j<5;j++)
for(int j=0;j<5;j++) {
{ cout<<matrice[i][j]<<" ";
if(i==j) }
{ cout<<endl;
matrice[i][j]=1; }
} }
else

Potrebbero piacerti anche