Almerico Murli - Le variabili strutturate (array) VARIABILI STRUTTURATE (ARRAY)

Documenti analoghi
Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

Fondamenti di Informatica

VARIABILI E COSTANTI

Informatica (A-K) 5. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

PASCAL: I VETTORI TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL. 1, HOEPLI. Informatica

Calcolo Parallelo. Domanda. In particolare. Qual è l algoritmo parallelo. PROBLEMA: Prodotto Matrice-Vettore

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo

RISOLUZIONE DI SISTEMI LINEARI

ATTENZIONE: LA COLONNA FARMACIE APERTE NON TIENE CONTO DELLE EVENTUALI CHIUSURE PER FERIE, NE' DELLE APERTURE FACOLTATIVE NEI GIORNI FESTIVI NON

Algoritmi di Ricerca Ordinamento

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

STRUTTURE DI CONTROLLO

MODULO PER RILEVAZIONE PRESENZE

SETTIMANA DAL 02 MARZO AL 06 MARZO

TURNI FARMACIE DISTRETTO N. 2 MESE DI GENNAIO 2015

Linguaggio C++ 8. Matrici

Strutture dati e loro organizzazione. Gabriella Trucco

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento

LUNEDI ORA I A II A III A I B II B III B I C I D LETTERE APPROF.TO RELIGIONE ARTE E IMMAGINE MATEMATICA MATEMATICA E SCIENZE MATEMATICA E SCIENZE

IL TEOREMA DI BOEHM-JACOPINI

Algoritmi stabili e instabili

I tipi strutturati e i record in C++

Linguaggio C: Array Valeria Cardellini

CALENDARIO CORSI: Giugno 2015

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Rappresentazione degli algoritmi

Algoritmi su Matrici. int const R=40; int const C=8; int A[R][C]; int n=32; int m=5; Compito Studente N O

Cicli annidati ed Array multidimensionali

Introduzione alla programmazione

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Esercizi C su array e matrici

Management Sanitario. Modulo di Ricerca Operativa

2. Algoritmi e Programmi

CAPITOLO V. DATABASE: Il modello relazionale

Esempio : i numeri di Fibonacci

Codice Gray. (versione Marzo 2007)

Corso di Informatica di Base

Ordine dei Farmacisti della Provincia di Napoli

UD 3.2b: Programmazione in Pascal (1)

COMUNE DI FICARRA. CALENDARIO delle frequenze di raccolta differenziata dei rifiuti solidi urbani

Introduzione agli Algoritmi

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Introduzione a Matlab

Transcript:

VARIABILI STRUTTURATE (ARRAY) 1

successione (di numeri reali): i ℵ a R i vettore (di numeri reali): i I a i R con I ℵ sottoinsieme finito ogni componente del vettore e univocamente determinata dall indice i (= posizione i-ma) ESEMPIO: (a 1, a 2, a 3,..., a 10 ) 2

Nello spazio... v v 1 3 v v 2 v = ( ) v 1 v 2 v3 ogni componente del vettore v e univocamente determinata dalla proiezione del vettore lungo una direzione cartesiana 3

IN GENERALE NOMI COLLETTIVI Necessità di individuare con un nome non un singolo valore, ma un insieme finito di valori, e di fare riferimento ad ogni singolo valore dell insieme 4

ESEMPI DI NOMI COLLETTIVI elenco telefonico primo abbonato secondo abbonato... fila di utenti ad uno sportello primo utente secondo utente... mazzo di carte asso di cuori due di cuori... 5

nel linguaggio algoritmico un nome collettivo prende il nome di VARIABILE STRUTTURATA nome a cui è associato un insieme di valori univocamente determinati da un criterio prestabilito 6

L ARRAY Nella variabile strutturata array il criterio con cui sono organizzate le componenti e la relazione d ordine stretto definita nell insieme degli indici, ciascuno dei quali indica la posizione occupata dalla corrispondente componente 3 8 5 0 1 9 primo secondo terzo... numero numero numero 7

ESEMPI TAB = variabile strutturata alla quale è associata la seguente sequenza di 6 interi 3 8 5 0 1 9 NOMI = variabile strutturata alla quale è associata la seguente sequenza di 5 dati alfanumerici MARIO LAURA PIPPO GINO ELSA OSSERVAZIONE: tutte le componenti di un array sono dello stesso tipo 8

DICHIARAZIONE DI UN ARRAY dichiarazione del tipo di struttura dichiarazione del tipo delle componenti var: TAB[6]: array of integer var: NOMI[5]: array of character con la dichiarazione viene fissata la dimensione massima dell array 9

TAB 3 8 5 0 1 9 TAB(1) TAB(2)... TAB(6) TAB(i) identifica l i-ma componente di TAB TAB(i) è una variabile (scalare) 10

ESEMPIO TAB[6]: array of integer 3 8 5 0 1 9 3 8 22 0 1 9 i=3 TAB(3)=22 3 8 22 0 8 9 TAB(2) i=5 i=5 TAB(i) =TAB(2) 11

3 8 22 1 8 9 + 3 8 22 11 8 9 for i=1,4 do read TAB(i) endfor i = 1; j = 2; k = 4 TAB(k) = TAB(i)+TAB(j) 0 0 0 11 8 9 for i = 1,3 do TAB(i) = 0 endfor 12

3 8 22 11 8 9 i = 6 TAB(i) = luisa ERRATO! il valore da assegnare deve essere dello stesso tipo di quello della variabile a cui e assegnato 13

3 8 22 11 8 9 i = 10 TAB(i) = 20 ERRATO! non si puo fare riferimento ad una componente che non e stata dichiarata ESEMPIO 14

calcolo della media delle temperature (in gradi C) di una settimana 13.5 15.4 16.2 14.1 12.8 10.1 11.0 var: TEMP[7]: array of real lunedi 13.5 martedi 15.4 mercoledi 16.2 giovedi 14.1 venerdi 12.8 sabato 10.1 domenica 11.0 15

begin settimana var: TEMP[7]: array of real var: media: real var: i: integer dichiarazione for i = 1, 7 do read TEMP(i) endfor lettura media = 0. for i = 1, 7 do media = media + TEMP(i) endfor media = media/7. print media end settimana 16

PROBLEMA come calcolare la temperatura media di due settimane? prima settimana 13.2 15.1 16.9 14.4 12.2 15.5 11.6 var: temp1[7]: array of real seconda settimana 17.5 15.1 14.9 13.0 17.6 16.7 15.3 var: temp2[7]: array of real 17

scelta piu naturale: definire una tabella(o matrice) di temperature TAB del tipo TAB settimane giorni della settimana 13.2 15.1 16.9 14.4 12.2 15.5 11.6 17.5 15.1 14.9 13.0 17.6 16.7 15.3 TAB(2,4) temperatura del 4 o giorno della 2 a settimana 18

DICHIARAZIONE var: TAB[2 ; 7]: array of real tale dichiarazione definisce un array con 2 righe (numero di settimane) 7 colonne (giorni della settimana) 13.2 15.1 16.9 14.4 12.2 15.5 11.6 17.5 15.1 14.9 13.0 17.6 16.7 15.3 array bidimensionale 19

TAB(i, j) identifica l elemento della i-ma riga (i-ma settimana) j-ma colonna (j-mo giorno) 13.2 15.1 16.9 14.4 12.2 15.5 11.6 17.5 15.1 14.9 13.0 17.6 16.7 15.3 TAB(2,1) TAB(1,4) TAB(2,7) 20

ESEMPIO: costruzione di un algoritmo per il calcolo della temperatura media di M=2 settimane (ogni settimana e composta di N=7 giorni) 13.2 15.1 16.9 14.4 12.2 15.5 11.6 17.5 15.1 14.9 13.0 17.6 16.7 15.3 var: TAB[2 ; 7]: array di reali M N TAB totmedia 21

begin temp_media var: TAB[5 ; 7]: array di reali var: totmedia: reale var: M,N, i, j : intero read M N= 7 lettura dell array TAB totmedia = 0. for i =1, M do for j = 1, N do totmedia = totmedia + TAB(i,j) endfor endfor totmedia = totmedia / (M*N) print totmedia end temp_media j = 1, N i = 1, M 22

CARATTERISTICHE DI UN ARRAY: dimensione fissata al momento della dichiarazione componenti dello stesso tipo ogni componente viene univocamente individuata tramite l indice (posizione) le componenti sono memorizzate in locazioni consecutive 23

PROBLEMA ordinamento crescente di 3 numeri: 25 17 3 I passo: 25 17 3 idea: 25 17 3 17 25 3 17 3 25 in due scambi 25 è stato portato al suo posto II passo: 17 3 25 idea: 17 3 25 3 17 25 in uno scambio 17 è stato portato al suo posto ordinamento completato! 24

STRATEGIA si scambiano di posto due elementi adiacenti che non sono in ordine, in modo da spostare il massimo verso destra si ripete fino al completo ordinamento (ORDINAMENTO PER SCAMBI) 25

inizio a, b, c scambia i valori di a e b i=1,2 volte a > b F b > c F V V a b b c a, b, c fine 26

analogamente per 4 numeri inizio a, b, c, d i=1,3 volte V a > b a b F V b > c b c F V c > d c d F a, b, c, d fine 27

ORDINAMENTO DI N NUMERI passo 1: passo 2: 8 3 5 2 1 4 3 5 2 1 4 8 3 2 1 4 5 8 N-1 passi passo 3: passo 4: 2 1 3 4 5 8 1 2 3 4 5 8 passo 5: 1 2 3 4 5 8 array ordinato 28

l algoritmo per l ordinamento di N numeri è il seguente var: A[100]: array di interi i=n-1,1 volte k=1,i volte A(k)>A(k+1) scambio dei valori di A(K) e A(K+1) A(k) A(k+1) 29

In Pascal-like: begin ordina var: A[100]: array of integer var: N, i, k, t : integer read N for i=1,n do read A(i) endfor for i = N-1,1,-1 do for k = 1,i do if (A(k) > A(k+1)) then t = A(k) A(k) = A(k+1) A(k+1) = t endif endfor endfor for i = 1,N do print A(i) endfor end ordina lettura di un array N-1 passi scambi stampa di un array 30