VARIABILI Nella precedente lezione abbiamo usato delle variabili all’interno dei flowchart. Possiamo pensare ad una variabile come ad un “contenitore” di valori identificato da un nome Supponiamo di avere una variabile chiamata a a L’esecuzione dell’assegnamento a=5 provoca l’inserimento del valore numerico 5 all’interno del “contenitore” a BIOINFO3 - Lezione 17 5 1 ASSEGNAMENTI A VARIABILI L’esecuzione dell’assegnamento a=a+1 comporta In questo caso a e` una variabile scalare, cioe` contiene un solo valore 1. Il calcolo dell’espressione a+1, ovvero - leggere il valore della variabile a - sommare 1 a tale valore 2. Assegnamento del risultato dell’espressione alla variabile a a 5 a+1= 5+1= 6 a BIOINFO3 - Lezione 17 6 1. 2. 2 TIPO DELLE VARIABILI Le variabili possono contenere qualsiasi tipo di dato ad esempio numeri interi, reali, valori logici (booleani: VERO o FALSO), stringhe alfanumeriche, date, puntatori ad altre variabili, ecc… ed in alcuni linguaggi anche delle strutture dati molto complesse. nome data Mario 2003-03-17 In alcuni linguaggi è necessario “dichiarare” le variabili prima del loro uso, specificando il nome ed il tipo, che non è più modificabile. Il loro valore, fino al primo assegnamento, è INDEFINITO. Altri linguaggi (es. Perl) invece sono definiti typeless e permettono di assegnare ad una variabile anche tipi diversi di dati (es. prima un numero, poi una stringa) ed il valore di una variabile non ancora utilizzata è 0 o “” (stringa vuota) BIOINFO3 - Lezione 17 3 STRUTTURE DATI È frequente che in un algoritmo (programma) si debbano elaborare degli insiemi di dati in qualche modo correlati tra di loro. Per questa ragione sono state inventate alcune strutture dati, che raggruppano questi insiemi di dati sotto un unico nome, permettendo di trattarli nel loro complesso o singolarmente. Vedremo: •ARRAY •ARRAY ASSOCIATIVI •LISTE BIOINFO3 - Lezione 17 4 ARRAY Possiamo pensare ad un array come ad un insieme di variabili aventi lo stesso nome ma identificate singolarmente da un indice numerico a 5 2 3 8 7 a[0]a[1]a[2]a[3]a[4] nomi Maria nomi[0] Giorgio Luca nomi[1] nomi[2] In alcuni linguaggi è necessario dichiarare gli array prima dell’uso, specificandone nome, numero di elementi e loro tipo (es. un array chiamato “nomi” di 3 elementi di tipo stringa). In altri linguaggi (Perl ad es.) ciò non è necessario ed è possibile in ogni momento aggiungere nuovi elementi (anche di tipo diverso!) BIOINFO3 - Lezione 17 5 RIFERIMENTI AD UN ARRAY Alcuni linguaggi permettono di riferirsi all’intero array (per assegnare dei valori simultaneamente a tutte le celle o per ricavare il valore di tutte le celle semplicemente usandone il nome a=(5,2,3,8,7) a nomi=(‘Maria’,’Giorgio’,’Luca’) nomi 5 2 3 8 7 a[0]a[1]a[2]a[3]a[4] Maria nomi[0] Giorgio Luca nomi[1] nomi[2] Potete notare ancora una volta che normalmente i valori alfanumerici sono racchiusi tra apici (‘ ’ o “ ” a seconda dei linguaggi e talvolta con effetti diversi) BIOINFO3 - Lezione 17 6 RIFERIMENTI AD UN ARRAY È possibile riferirsi alla singola cella di un array (ovviamente per assegnarvi un valore o per ricavarlo) indicandone il nome e l’indice. a 5 2 3 8 7 a[2]=4 a a[0]a[1]a[2]a[3]a[4] nomi Maria nomi[0] a[0]a[1]a[2]a[3]a[4] Giorgio Luca nomi[1] nomi[0]=‘Marta’ nomi[2] nomi Marta nomi[0] BIOINFO3 - Lezione 17 5 2 4 8 7 Giorgio Luca nomi[1] nomi[2] 7 ESEMPIO Provate ad eseguire su carta l‘algoritmo per ricavare il valore contenuto nell‘array al termine dell‘esecuzione a=(6,3,5,8,9) BIOINFO3 - Lezione 17 8 ESERCIZIO Inserire all’interno di un flowchart, in cui siano già stati inizializzati 2 array a e b di n elementi, le operazioni necessarie per assegnare agli elementi di un array s la somma dei corrispondenti elementi di a e b. BIOINFO3 - Lezione 17 9 ESERCIZIO Trovare il valore minimo all’interno di un array a di n elementi ed assegnarlo alla variabile min, assegnando anche ad una variabile index il suo indice nell’array. Supponiamo che tutti i valori di a siano diversi (un solo minimo!) BIOINFO3 - Lezione 17 10 RIEPILOGO •Variabili •Strutture dati •Array: ricerca minimo BIOINFO3 - Lezione 17 11