Gli ARRAY in FORTRAN 90
|
|
- Edmondo Papa
- 8 anni fa
- Visualizzazioni
Transcript
1 ELEMENTI DI PROGRAMMAZIONE Gli ARRAY in FORTRAN 90
2 Un ARRAY è un AGGREGATO di più DATI dello stesso TIPO (interi, reali, etc), ognuno univocamente individuato dal valore di uno oppure due.. e fino a sette indici. Il numero di indici definisce la DIMENSIONE dell array. Un array monodimensionale, che chiameremo VETTORE, è assimilabile concettualmente ad un elenco ordinato di valori di un certo tipo per esempio: (1, -5, 7, 0, 8) Come ogni altra variabile o costante con nome, un array può avere un NOME che lo individua globalmente come aggregato. Poi ci si potrà riferire ad un suo elemento utilizzando i succitati INDICI. Supponiamo, per esempio, di aver assegnato al vettore di cui sopra il nome Cinquina, allora Cinquina(2) sarà il suo secondo elemento cioè l intero -5. In realtà FORTRAN 90 consente un estrema flessibilità nell organizzazione del DOMINIO o RANGE di un indice. VETTORE: ( 1, -5, 7, 0, 8) RANGE: [-2, -1, 0, 1, 2] Definito così il RANGE, per riferirci all elemento -5 del vettore dovremo scrivere Cinquina(-1). Dall esempio è sufficientemente evidente che un RANGE è dato definendone gli estremi, nel nostro caso -2 e 2, così che l ESTENSIONE del vettore risulta come LIMSUP-LIMINF+1.
3 Gli array bidimensionali, che chiameremo MATRICI, sono concettualmente assimilabili a tabelle ordinate secondo indici di riga e colonna. Supponendo - ad esempio - data una matrice di nome Tabella, con elementi INTERI disposti su quattro righe e tre colonne, avremo lo schema concettuale che segue: L elemento Tabella(3, 2) individuerà quindi l intero 1024 posto all intersezione fra la terza riga e la seconda colonna.
4 In effetti, lo schema precedente illustra anche un ulteriore importante peculiarità degli Array multidimensionali così come implementati da FORTRAN 90: la cosiddetta organizzazione per colonne. Le frecce in figura evidenziano appunto un criterio di linearizzazione della struttura bidimensionale, un ordine interno, su cui al momento non ci soffermeremo ripromettendoci di riconsiderarlo al momento opportuno. Resta valido quanto detto sulla flessibilità del range per gli indici. Supponiamo di aver definito per l indice di riga: INIZIO=10, FINE=13 E per l indice di colonna: INIZIO=-1, FINE=1 Allora l elemento di matrice evidenziato in figura dovrebbe essere riferito come Tabella(12, 0).
5 La sintassi generale di una istruzione di dichiarazione Fortran 90 per un array è la seguente: tipo, DIMENSION(range1 [,range2 [..range7]] ) [, attributo,...] :: lista_di_array in cui tipo è il il tipo di appartenenza di tutti i componenti della lista_di_array, la parola chiave DIMENSION è un attributo che serve a specificare la dimensione dell array che si sta dichiarando, mentre range1,.. range7 forniscono i range in cui spaziano gli indici dell array in ogni dimensione. Esempi: INTEGER, DIMENSION(10) :: Numeri CHARACTER, DIMENSION(-2:5, 3) :: CharTab REAL, DIMENSION(-9:0, 2:5) :: RealTab! Numeri è un vettore di interi e dimensione 10! CharTab è una matrice di caratteri con 8 righe e 3 colonne! RealTab è una matrice di reali con 11 righe e 4 colonne
6 Un array deve essere, prima di ogni utilizzazione, esplicitamente inizializzato. L inizializzazione può essere effettuata a tempo di esecuzione, utilizzando una variabile indice, come negli esempi che seguono:! Esempio 1 INTEGER, DIMENSION(10) :: Numeri INTEGER i DO i=1,10 Numeri(i)=2**i END DO! Esempio 2 INTEGER, DIMENSION(-10:10:2) :: Numeri INTEGER i DO i=-10,10, 2 READ(*,*) Numeri(i) END DO
7 L inizializzazione può essere anche realizzata a tempo di compilazione, utilizzando i cosiddetti COSTRUTTORI:! Qui l array è inizializzato contestualmente alla sua! dichiarazione INTEGER, DIMENSION(5) :: Numeri=(/ 1, 5, -7, 3, 4 /) Comunque, il costruttore può essere utilizzato per inizializzare l array a tempo di esecuzione: INTEGER, DIMENSION(-2:2) :: Numeri Numeri =(/ 1, 5, -7, 3, 4 /)
8 INDICI Qualsiasi espressione che fornisce come risultato un intero è un indice valido per un array. Consideriamo, come esempio, il segmento di codice: REAL, DIMENSION(5) :: lista=(/ 3, 4, -5, 6, 3/) INTEGER :: i=1, j=5 WRITE(*,*) lista(i)!corretto, fornisce come output lista(1), quindi 3 WRITE(*,*) lista(i+j/2)!corretto, fornisce come output lista(3), quindi -5 WRITE(*,*) lista(i+0.5*j)!il compilatore denuncia un errore di tipo, infatti il valore dell espressione-indice è di!tipo reale WRITE(*,*) lista(i+j)!errore di out-range in compilazione
9 DO IMPLICITO Quando si lavora con gli array risulta particolarmente utile utilizzare un costrutto logico che consente di realizzare iterazioni per così dire implicite. Per esempio il segmente di codice che segue.. DO i=1,10 lista(i)=1000*i END DO potrebbe essere sostituito dalla singola linea di codice.. lista(i)=(/ (1000*i, i=1, 10) /) dove il costrutto (1000*i, i=1, 10) costituisce il cosiddetto DO IMPLICITO. In altre parole REAL, DIMENSION(5) :: lista=(/ 3, 4, -5, 6, 3/) INTEGER :: i=1, j=5 WRITE(*,*) lista(i)!corretto, fornisce come output lista(1), quindi 3 WRITE(*,*) lista(i+j/2)!corretto, fornisce come output lista(3), quindi -5 WRITE(*,*) lista(i+0.5*j)!il compilatore denuncia un errore di tipo, infatti il valore dell espressione-indice è di!tipo reale WRITE(*,*) lista(i+j)!errore di out-range in compilazione
10 Un array dinamico è dichiarato utilizzando l attributo ALLOCATABLE. Poichè le sue dimensioni non sono note all atto della dichiarazione, il limite di ciascuno dei suoi indici va sostituito con il simbolo dei due punti: tipo, ALLOCATABLE, DIMENSION(: [, :,...]) :: nome_array Esempi: integer, ALLOCATABLE, DIMENSION(:) :: elenco_interi character(10), ALLOCATABLE, DIMENSION(:,:) :: tabella_parole
11 Le estensioni di un array dichiarato ma non ancora allocato possono essere specificate utlizzando l istruzione ALLOCATE che ha appunto la funzione di riservare spazio in memoria per i suoi elementi. La sintassi della succitata istruzione è quella che segue: ALLOCATE(lista_di_array_dimensionati) Esempio: integer, ALLOCATABLE, DIMENSION(:) :: elenco_interi character(10), ALLOCATABLE, DIMENSION(:,:) :: tabella_parole ALLOCATE(elenco_interi(100), tabella_parole(0:9, 10))
12 L istruzione ALLOCATE rende disponibile al progettista un opzione per monitorare il successo dell operazione di allocazione. Il formato di questa versione estesa dell istruzione prevede l indicazione di una variabile intera che conterrà in esito all esecuzione dell operazione di allocazione un codice numerico di errore oppure il valore 0 se tutto è andato bene. ALLOCATE(lista_di_array_dimensionati, STAT=variabile_di_controllo) Esempio: INTEGER :: errore INTEGER, ALLOCATABLE, DIMENSION(:) :: elenco_interi ALLOCATE(elenco_interi(100), STAT=errore) IF (errore/=0) THEN PRINT*, "Allocazione dell array fallita, codice errore:, errore STOP END IF
13 Lo spazio di memoria occupato da un array correntemente allocato può essere liberato mediante l istruzione DEALLOCATE che ha la seguente sintassi: DEALLOCATE(lista_di_array [, STAT=variabile_di_controllo]) dove il significato e l uso della clausola STAT=variabile_di_stato sono identici a quelli visti per l istruzione di allocazione. E importante ricordare che una volta che un array sia stato deallocato i dati in esso immagazzinati sono definitivamente non più disponibili. L uso combinato delle istruzioni ALLOCATE e DEALLOCATE consente di lavorare con un array allocabile di dimensioni continuamente variabili. Attenzione: ALLOCATE(vettore(10)) ALLOCATE(vettore(20))!ERRORE Non è possibile riallocare lo stesso array prima di averlo deallocato!
14 program reverse_array_dinamico_errori implicit none integer, allocatable, dimension(:) :: elenco integer :: i, n, errore print*, "quanti elementi vuoi inserire?" read(*,*) n allocate(elenco(n), STAT=errore) IF (stato/=0) THEN PRINT*, "Allocazione degli array fallita, codice errore:, errore STOP END IF read(*,*) elenco elenco((/(i, i=n,1,-1)/))=elenco write(*,*) elenco deallocate(elenco) end program
15 TYPE :: coord3 REAL :: x REAL :: y REAL :: z END TYPE coord3 TYPE(coord3), ALLOCATABLE, DIMENSION(:) :: elenco_punti INTEGER :: n WRITE(*,*) Numero di punti da leggere: READ(*,*) n ALLOCATE(elenco_punti(n))
16 TYPE :: coord3 REAL :: x REAL :: y REAL :: z END TYPE coord3 TYPE :: spezzata TYPE(coord3) :: inizio TYPE(coord3), ALLOCATABLE, DIMENSION(:) :: elenco_punti_intermedi TYPE(coord3) :: fine END TYPE spezzata INTEGER :: n WRITE(*,*) Numero di punti da leggere: READ(*,*) n ALLOCATE(elenco_punti(n))
17 PROGRAM confronta IMPLICIT NONE INTEGER, PARAMETER :: n=10 INTEGER, DIMENSION(n) :: a, b INTEGER :: i WRITE(*,*) Immetti il primo elenco di, n, interi: READ(*,*) (a(i), i=1, n) WRITE(*,*) Immetti il secondo elenco di, n, interi: READ(*,*) (b(i), i=1, n) IF (a==b) THEN WRITE(*,*) i due elenchi sono uguali! ELSE WRITE(*,*) i due elenchi non sono uguali! END IF END PROGRAM confronta
18 Modifichiamo il programma come segue: PROGRAM confronta INTEGER, PARAMETER :: n=10 INTEGER, DIMENSION(n) :: a, b INTEGER :: i WRITE(*,*) Immetti il primo elenco di, n, interi: READ(*,*) (a(i), i=1, n) WRITE(*,*) Immetti il secondo elenco di, n, interi: READ(*,*) (b(i), i=1, n) WRITE(*,*) Esito del confronto: WRITE(*,*) (a==b) END PROGRAM confronta La compilazione non darà errori ed in esecuzione potremmo avere il seguente risultato: Immetti il primo elenco di 10 interi:" Immetti il secondo elenco di 10 interi: Esito del confronto: F T T T F F F F T T
19 a b == == == == == == == == == == a==b F T T T F F F F T T Il confronto fra due array (conformi!) è quindi possibile e genera un array logico avente per contenuti i risultati del confronto, elemento per elemento!
20 IF (a==b) THEN IF (ALL(a==b)) THEN ALL è una cosiddetta funzione intrinseca di array, appartiene cioè ad una classe di funzioni specificamente pensate per evere come argomento/i degli array. In particolare ALL restituirà lo scalare logico.true. se il suo argomento (un array logico) contiene come elementi tutti.true., lo scalare.false. altrimenti.
21 a b ALL((a==b))! Restituisce.FALSE. ALL((a(1:4)==b(1:4)))! Restituisce.TRUE. ANY((a==b))! Restituisce.TRUE. ANY((a(5:8)==b(5:8)))! Restituisce.FALSE. Riuscite ad individuare cosa fa la funzione ANY?
22 Le funzioni intrinseche di array sono usualmente ricondotte, a seconda dell uso e degli scopi, a 7 categorie: 1. Funzioni di riduzione 2. Funzioni di interrogazione 3. Funzioni di costruzione 4. Funzioni di trasformazione 5. Funzioni topologiche 6. Funzioni di manipolazione 7. Funzioni algebriche
23 Funzioni di interrogazione (esempi) ALLOCATED (ARRAY) Indica se l ARRAY è o non è allocato. Il risultato è.true. se ARRAY è correntemente allocato,.false. altrimenti. Esempio: REAL, ALLOCATABLE, DIMENSION (:,:,:) :: myarr... PRINT*, ALLOCATED(myarr)! stampa il valore.false. ALLOCATE(myarr(10,0:9)) PRINT*, ALLOCATED(myarr)! stampa il valore.true.
24 Funzioni di costruzione (esempi) MERGE(TSOURCE,FSOURCE,MASK) Seleziona tra due valori, o tra gli elementi corrispondenti di due array, in accordo con la condizione specificata da una maschera. TSOURCE può essere uno scalare o un array di tipo qualsiasi. FSOURCE è uno scalare o un array avente stesso tipo di TSOURCE. MASK è un array logico. Il risultato (che ha lo stesso tipo di TSOURCE) viene determinato prendendo, elemento elemento, il valore corrispondente di TSOURCE (se MASK è.true.) o di FSOURCE (se MASK è.false.). Ad esempio, se la variabile intera r ha valore -3, allora il risultato di MERGE(1.0,0.0,r<0) ha valore 1.0, mentre per r pari a 7 ha the valore 0.0.
25 Funzioni di costruzione (esempi) Un esempio appena più complesso è il seguente. Se TSOURCE è l array: FSOURCE è l array: e MASK è l array:.false..true..true..true..true..false. allora l istruzione: MERGE(TSOURCE,FSOURCE,MASK) produce il risultato:
26 Funzioni di trasformazione (esempi) RESHAPE(SOURCE,SHAPE[,PAD]) Costruisce un array di forma differente a partire da un array di input. L argomento SOURCE è un array di tipo qualsiasi. Esso fornisce gli elementi per l array risultante. La sua ampiezza deve essere maggiore o uguale a PRODUCT(SHAPE) se PAD è omesso oppure se ha ampiezza nulla. L argomento SHAPE è un array di sette elementi al massimo, rango unitario e dimensione costante. Esso definisce la forma dell array risultante. Non può avere ampiezza nulla ed i suoi elementi non possono avere valori negativi. L argomento opzionale PAD è un array avente stesso tipo di SOURCE. Il suo compito è quello di fornire valori di riserva nel caso in cui l array risultante avesse ampiezza maggiore di SOURCE.
27 Funzioni di trasformazione (esempi) Un semplice esempio di utilizzo della funzione RESHAPE è fornito dalla seguente istruzione: RESHAPE((/3,4,5,6,7,8/),(/2,3/)) la quale fornisce come risultato la matrice: mentre l istruzione: RESHAPE((/3,4,5,6,7,8/),(/2,4/),(/1,1/)) fornisce il seguente risultato:
28 Funzioni topologiche (esempi) MAXLOC(ARRAY [,MASK]) MINLOC (ARRAY [,MASK]) Restituiscono la posizione dell elemento di valore massimo/minimo di un array, di una sezione di array o lungo una specificata dimensione dell array.
29 Funzioni topologiche (esempi) L argomento ARRAY è un array di tipo intero o reale. L argomento opzionale MASK è un array logico compatibile con ARRAY. Il risultato è un array di tipo intero. Valgono le seguenti regole: a.l array risultante ha rango unitario e ampiezza pari al rango di ARRAY. b.se MASK è assente, gli elementi dell array risultante rappresentano gli indici della locazione dell elemento di ARRAY avente valore massimo/ minimo. Se MASK è presente, gli elementi dell array risultante rappresentano gli indici della locazione dell elemento di ARRAY avente valore massimo/ minimo fra quelli compatibili con la condizione specificata da MASK.
30 Funzioni topologiche (esempi) Esempi: Il valore di MAXLOC((/3,7,4,7/)) è 2, essendo questo l indice della posizione della prima occorrenza del valore massimo (7) nell array monodimensionale specificato come argomento. Sia mat l array: MAXLOC(mat,MASK=mat<5) fornisce il valore (/1,1/) poiché questi sono gli indici che puntano all elemento di valore massimo (4) fra tutti quelli minori di 5.
31 Esempi: Funzioni di manipolazione (esempi) TRANSPOSE(MATRIX) Traspone un array di rango due. L argomento MATRIX può essere un array bidimensionale di tipo qualsiasi. Il risultato della funzione è un array avente stesso tipo e stessi parametri di kind dell argomento MATRIX e forma (/n,m/) essendo (/m,n/) la forma dell argomento. L elemento (i,j)_mo dell array risultante coincide con il valore di MATRIX(j,i). A titolo di esempio, definita la seguente matrice mat: TRANSPOSE(mat) avrà valore:
32 Esempi: Funzioni algebriche (esempi) DOT_PRODUCT(VECTOR_A,VECTOR_B) Esegue il prodotto scalare di due vettori numerici (interi, reali o complessi) aventi stessa dimensione. Il risultato è uno scalare il cui tipo dipende dai vettori operandi VECTOR_A e VECTOR_B. In particolare: Se l argomento VECTOR_A è di tipo INTEGER o REAL allora il risultato avrà valore pari a SUM(VECTOR_A*VECTOR_B). Se l argomento VECTOR_A è di tipo COMPLEX, allora il risultato avrà valore pari a SUM(CONJG(VECTOR_A)*VECTOR_B). Se gli array operandi hanno dimensione nulla, il risultato vale zero se essi sono di tipo numerico oppure.false. se gli operandi sono di tipo logico.
33 Funzioni algebriche (esempi) Ad esempio, l istruzione: DOT_PRODUCT((/1,2,3/),(/3,4,5/)) restituisce il valore 26 (infatti: (1 3)+(2 4)+(3 5)=26) Invece, l istruzione: DOT_PRODUCT((/(1.0,2.0),(2.0,3.0)/),(/(1.0,1.0),(1.0,4.0)/)) fornisce l array (/17.0,4.0/). (infatti: (1-2j)(1+j)+(2-3j)(1+4j)=(1+2-j)+(2+12+5j)=17+4j)
Gli ARRAY in FORTRAN 90
ELEMENTI DI PROGRAMMAZIONE Gli ARRAY in FORTRAN 90 Andrea Prevete, UNINA2 INGEGNERIA MECCANICA/AEROSPAZIALE, a.a. 2012/13 Un ARRAY è un AGGREGATO di più DATI dello stesso TIPO (interi, reali, etc), ognuno
DettagliLezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
Dettagli4. Operazioni elementari per righe e colonne
4. Operazioni elementari per righe e colonne Sia K un campo, e sia A una matrice m n a elementi in K. Una operazione elementare per righe sulla matrice A è una operazione di uno dei seguenti tre tipi:
DettagliMATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c
Caratteristiche MATLAB Linguaggio di programmazione orientato all elaborazione di matrici (MATLAB=MATrix LABoratory) Le variabili sono matrici (una variabile scalare equivale ad una matrice di dimensione
DettagliAppunti sulla Macchina di Turing. Macchina di Turing
Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso
DettagliIntroduzione al MATLAB c Parte 2
Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione
DettagliApplicazioni lineari
Applicazioni lineari Esempi di applicazioni lineari Definizione. Se V e W sono spazi vettoriali, una applicazione lineare è una funzione f: V W tale che, per ogni v, w V e per ogni a, b R si abbia f(av
DettagliIntroduzione al linguaggio C Gli array
Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliDefinizione di nuovi tipi in C
Definizione di nuovi tipi in C typedef Ancora sui tipi di dato Ogni elaboratore è intrinsecamente capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe
DettagliAPPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)
ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) Un insieme è una collezione di oggetti. Il concetto di insieme è un concetto primitivo. Deve esistere un criterio chiaro, preciso, non ambiguo, inequivocabile,
DettagliAlgebra Booleana ed Espressioni Booleane
Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale
DettagliAlgoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
Dettagli(anno accademico 2008-09)
Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato
Dettaglivoid funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
Dettaglihttp://www.programmiamo.altervista.org/c/oop/o...
PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.
Dettagli3. La sintassi di Java
pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer
DettagliEsame di INFORMATICA
Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello
DettagliVariabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica I tipi strutturati: gli array e le strutture Claudio De Stefano - Corso di Fondamenti di Informatica 1 arrays un array (o vettore) è una sequenza di oggetti dello stesso
DettagliCorso di Laurea in INFORMATICA
Corso di Laurea in INFORMATICA Algoritmi e Strutture Dati MODULO 2. Algebre di dati Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti. Astrazioni di dati e dati primitivi. Specifica
DettagliCorso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
DettagliOperazioni di input e output in Fortran 90
Operazioni di input e output in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: file e formattazione DIS - Dipartimento di informatica
DettagliAnno 3. Funzioni: dominio, codominio e campo di esistenza
Anno 3 Funzioni: dominio, codominio e campo di esistenza 1 Introduzione In questa lezione parleremo delle funzioni. Ne daremo una definizione e impareremo a studiarne il dominio in relazione alle diverse
Dettaglidall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
DettagliMetodologie di programmazione in Fortran 90
Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di
DettagliDimensione di uno Spazio vettoriale
Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione
DettagliLE SUCCESSIONI 1. COS E UNA SUCCESSIONE
LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe
DettagliAPPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
DettagliLa selezione binaria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per
DettagliElementi di Algebra Relazionale
Note dalle lezioni di INFORMATICA (per gli allievi della classe quinta - indirizzo MERCURIO) Elementi di Algebra Relazionale prof. Stefano D.L.Campanozzi I.T.C. Giulio Cesare Bari - a.s. 2008-2009 1 Introduzione
DettagliEsercizi su. Funzioni
Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità
DettagliSistemi Informativi Territoriali. Map Algebra
Paolo Mogorovich Sistemi Informativi Territoriali Appunti dalle lezioni Map Algebra Cod.735 - Vers.E57 1 Definizione di Map Algebra 2 Operatori locali 3 Operatori zonali 4 Operatori focali 5 Operatori
DettagliRappresentazione grafica di entità e attributi
PROGETTAZIONE CONCETTUALE La progettazione concettuale, ha il compito di costruire e definire una rappresentazione corretta e completa della realtà di interesse, e il prodotto di tale attività, è lo schema
DettagliMatematica in laboratorio
Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a
DettagliINTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI
INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.
Dettagli4. Proiezioni del piano e dello spazio
4. Proiezioni del piano e dello spazio La visualizzazione di oggetti tridimensionali richiede di ottenere una vista piana dell'oggetto. Questo avviene mediante una sequenza di operazioni. Innanzitutto,
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliOTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C
CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files
DettagliEnergia potenziale elettrica e potenziale. In queste pagine R indicherà una regione in cui è presente un campo elettrostatico.
Energia potenziale elettrica e potenziale 0. Premessa In queste pagine R indicherà una regione in cui è presente un campo elettrostatico. 1. La forza elettrostatica è conservativa Una o più cariche ferme
DettagliRendering air show e verifica della sincronizzazione
Capitolo 5 Rendering air show e verifica della sincronizzazione 5.1 Introduzione Il Rendering 3D dell evoluzioni acrobatiche costituisce uno degli aspetti cruciali dell applicazione realizzata. L ambiente
DettagliProgettazione di Basi di Dati
Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello
DettagliFortran per Ingegneri
Fortran per Ingegneri Lezione 5 A.A. 0/04 Ing. Davide Vanzo davide.vanzo@unitn.it Ing. Simone Zen simone.zen@unitn.it ufficio: Laboratorio didattico di modellistica ambientale ( piano) Tel interno: 488
DettagliProva di Laboratorio di Programmazione
Prova di Laboratorio di Programmazione 6 febbraio 015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare
DettagliVettori Algoritmi elementari di ordinamento
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Vettori Algoritmi elementari di ordinamento Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale
Dettaglif(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da
Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede
DettagliLE FUNZIONI A DUE VARIABILI
Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre
DettagliSommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.
Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell
Dettagli5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record
5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1
DettagliCapitolo 2. Operazione di limite
Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A
DettagliIntroduzione ai Metodi Formali
Intruzione ai Meti Formali Sistemi software anche molto complessi regolano la vita quotidiana, anche in situazioni life-critical (e.g. avionica) e business-critical (e.g. operazioni bancarie). Esempi di
DettagliCenni su algoritmi, diagrammi di flusso, strutture di controllo
Cenni su algoritmi, diagrammi di flusso, strutture di controllo Algoritmo Spesso, nel nostro vivere quotidiano, ci troviamo nella necessità di risolvere problemi. La descrizione della successione di operazioni
DettagliLINGUAGGI DI PROGRAMMAZIONE
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliEsempi di algoritmi. Lezione III
Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni
DettagliCorso di Analisi Matematica Serie numeriche
Corso di Analisi Matematica Serie numeriche Laurea in Informatica e Comunicazione Digitale A.A. 2013/2014 Università di Bari ICD (Bari) Analisi Matematica 1 / 25 1 Definizione e primi esempi 2 Serie a
DettagliRette e curve, piani e superfici
Rette e curve piani e superfici ) dicembre 2 Scopo di questo articolo è solo quello di proporre uno schema riepilogativo che metta in luce le caratteristiche essenziali delle equazioni di rette e curve
DettagliCONCETTO DI LIMITE DI UNA FUNZIONE REALE
CONCETTO DI LIMITE DI UNA FUNZIONE REALE Il limite di una funzione è uno dei concetti fondamentali dell'analisi matematica. Tramite questo concetto viene formalizzata la nozione di funzione continua e
DettagliOttimizazione vincolata
Ottimizazione vincolata Ricordiamo alcuni risultati provati nella scheda sulla Teoria di Dini per una funzione F : R N+M R M di classe C 1 con (x 0, y 0 ) F 1 (a), a = (a 1,, a M ), punto in cui vale l
DettagliProtezione. Protezione. Protezione. Obiettivi della protezione
Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in
DettagliESEMPIO 1: eseguire il complemento a 10 di 765
COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento
DettagliCorrispondenze e funzioni
Corrispondenze e funzioni L attività fondamentale della mente umana consiste nello stabilire corrispondenze e relazioni tra oggetti; è anche per questo motivo che il concetto di corrispondenza è uno dei
DettagliExcel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it
Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo
DettagliOrganizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
DettagliProgettaz. e sviluppo Data Base
Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo
DettagliI file di dati. Unità didattica D1 1
I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità
DettagliMatlab: Strutture di Controllo. Informatica B
Matlab: Strutture di Controllo Informatica B Tipo di dato logico È un tipo di dato che può avere solo due valori true (vero) 1 false (falso) 0 I valori di questo tipo possono essere generati direttamente
DettagliLuigi Piroddi piroddi@elet.polimi.it
Automazione industriale dispense del corso 10. Reti di Petri: analisi strutturale Luigi Piroddi piroddi@elet.polimi.it Analisi strutturale Un alternativa all analisi esaustiva basata sul grafo di raggiungibilità,
DettagliSoluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
DettagliInvio SMS. DM Board ICS Invio SMS
Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove
DettagliCONCETTO DI ANNIDAMENTO
LEZIONE14 SQL ANNIDAMENTI PAG. 1 / 5 PROF. ANDREA ZOCCHEDDU LEZIONE14 SQL ANNIDAMENTI CONCETTO DI ANNIDAMENTO LINGUAGGIO SQL QUERY ANNIDATE Per annidamento si intende la possibilità che, all interno di
DettagliNozione di algoritmo. Gabriella Trucco
Nozione di algoritmo Gabriella Trucco Programmazione Attività con cui si predispone l'elaboratore ad eseguire un particolare insieme di azioni su particolari informazioni (dati), allo scopo di risolvere
DettagliFunzioni. Il modello console. Interfaccia in modalità console
Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi
Dettagli2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.
1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno
DettagliStudente: SANTORO MC. Matricola : 528
CORSO di LAUREA in INFORMATICA Corso di CALCOLO NUMERICO a.a. 2004-05 Studente: SANTORO MC. Matricola : 528 PROGETTO PER L ESAME 1. Sviluppare una versione dell algoritmo di Gauss per sistemi con matrice
DettagliDescrizione di un algoritmo
Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica
DettagliGestione della memoria centrale
Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti
DettagliIGiochidiArchimede-SoluzioniBiennio 22 novembre 2006
PROGETTO OLIMPII I MTEMTI U.M.I. UNIONE MTEMTI ITLIN SUOL NORMLE SUPERIORE IGiochidirchimede-Soluzioniiennio novembre 006 Griglia delle risposte corrette Problema Risposta corretta E 4 5 6 7 8 9 E 0 Problema
DettagliCapitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.
Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2
DettagliCome visto precedentemente l equazione integro differenziale rappresentativa dell equilibrio elettrico di un circuito RLC è la seguente: 1 = (1)
Transitori Analisi nel dominio del tempo Ricordiamo che si definisce transitorio il periodo di tempo che intercorre nel passaggio, di un sistema, da uno stato energetico ad un altro, non è comunque sempre
DettagliCapitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti
Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta
DettagliDAL DIAGRAMMA AL CODICE
DAL DIAGRAMMA AL CODICE Un diagramma di flusso Appare, come un insieme di blocchi di forme diverse che contengono le istruzioni da eseguire, collegati fra loro da linee orientate che specificano la sequenza
DettagliAlgebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.
Algebra booleana Nel lavoro di programmazione capita spesso di dover ricorrere ai principi della logica degli enunciati e occorre conoscere i concetti di base dell algebra delle proposizioni. L algebra
DettagliArchitettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):
Architettura (10/9003) Pag. 1/6 Esame di Architettura (matr.0-1) del 10/9003 Per Fondamenti di Architettura NON rispondere Per le domande a risposta multipla cerchiare la risposta scelta. Non alle domande
DettagliCosa dobbiamo già conoscere?
Cosa dobbiamo già conoscere? Insiemistica (operazioni, diagrammi...). Insiemi finiti/numerabili/non numerabili. Perché la probabilità? In molti esperimenti l esito non è noto a priori tuttavia si sa dire
DettagliI database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:
Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare
DettagliPer studio di funzione intendiamo un insieme di procedure che hanno lo scopo di analizzare le proprietà di una funzione f ( x) R R
Studio di funzione Per studio di funzione intendiamo un insieme di procedure che hanno lo scopo di analizzare le proprietà di una funzione f ( x) R R : allo scopo di determinarne le caratteristiche principali.
DettagliPROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)
PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo
DettagliDAL PROBLEMA AL CODICE: ATTRAVERSO LO PSEUDOCODICE
DAL PROBLEMA AL CODICE: ATTRAVERSO LO PSEUDOCODICE Il problema Un computer è usato per risolvere dei problemi Prenotazione di un viaggio Compilazione e stampa di un certificato in un ufficio comunale Preparazione
DettagliRISOLUTORE AUTOMATICO PER SUDOKU
RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU
DettagliMacchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO
Macchine a stati finiti 1 G. MARSELLA UNIVERSITÀ DEL SALENTO Introduzione Al più alto livello di astrazione il progetto logico impiega un modello, la cosiddetta macchina a stati finiti, per descrivere
DettagliGestione della memoria. Paginazione Segmentazione Segmentazione con paginazione
Gestione della memoria Paginazione Segmentazione Segmentazione con paginazione Modello di paginazione Il numero di pagina serve come indice per la tabella delle pagine. Questa contiene l indirizzo di base
DettagliAlgebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE
Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Andrea Bobbio Anno Accademico 2000-2001 Algebra Booleana 2 Calcolatore come rete logica Il calcolatore può essere visto come una rete logica
DettagliUn metodo per il rilevamento degli errori: la tecnica del Bit di Parità
Appunti: Tecniche di rilevazione e correzione degli errori 1 Tecniche di correzione degli errori Le tecniche di correzione degli errori sono catalogabili in: metodi per il rilevamento degli errori; metodi
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
DettagliMAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica.
MAPPE DI KARNAUGH 1. Generalità Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica. E ovvio che più semplice è la funzione e più semplice
DettagliAnalisi dei Dati 12/13 Esercizi proposti 3 soluzioni
Analisi dei Dati 1/13 Esercizi proposti 3 soluzioni 0.1 Un urna contiene 6 palline rosse e 8 palline nere. Si estraggono simultaneamente due palline. Qual è la probabilità di estrarle entrambe rosse? (6
DettagliEsercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
DettagliMetodi Stocastici per la Finanza
Metodi Stocastici per la Finanza Tiziano Vargiolu vargiolu@math.unipd.it 1 1 Università degli Studi di Padova Anno Accademico 2011-2012 Lezione 6 Indice 1 Il metodo bootstrap 2 Esercitazione 3 Interpolazione
DettagliUna metodologia di progettazione di applicazioni web centrate sui dati
Una metodologia di progettazione di applicazioni web centrate sui dati A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 1 / 2 0 1 2 Progettazione logica di un sito web centrato sui dati Si
Dettagli