Fortran per Ingegneri

Похожие документы
Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Fortran per Ingegneri

Operazioni di input e output in Fortran 90

Problema: calcolare il massimo tra K numeri

Algoritmi e soluzione di problemi

UD 3.2b: Programmazione in Pascal (1)

Costrutti condizionali e iterativi

Modularizzazione del software

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

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

Programmazione Procedurale in Linguaggio C++

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

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

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Come ragiona il computer. Problemi e algoritmi

Programmazione in Java (I modulo)

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

Funzioni, Stack e Visibilità delle Variabili in C

Struttura dei programmi C

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Informatica B

A lezione sono stati presentati i seguenti passi per risolvere un problema:

EXCEL: FORMATTAZIONE E FORMULE

MICROSOFT EXCEL FORMULE E FUNZIONI

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

Caratteri e stringhe

PROBLEMI ALGORITMI E PROGRAMMAZIONE

EXCEL: FORMATTAZIONE E FORMULE

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Problema. Vettori e matrici. Vettori. Vettori

Variabili e Istruzioni

Gli ARRAY in FORTRAN 90

Esercizi Programmazione I

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A.

Strutture dati e loro organizzazione. Gabriella Trucco

VARIABILI E COSTANTI

Programmazione I - Laboratorio

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

3. Matrici e algebra lineare in MATLAB

Espressione di chiamata di funzione

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute.

APPUNTI DEL CORSO DI LABORATORIO DI CALCOLO AVANZATO

Introduzione al Calcolo Scientifico

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Formalismi per la descrizione di algoritmi

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

La programmazione nel linguaggio C

Problema: conteggio occorrenze

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

MATLAB-UD5. Array di strutture. File.

Fortran in pillole : prima parte

2. Algoritmi e Programmi

II Esercitazione: S.O. & Fortran 77

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

Sviluppare un programma in FORTRAN

OGGETTO RANGE DI CELLE. Una cella o un gruppo di celle in un foglio di lavoro di Excel è un oggetto di tipo Range.

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Lezione 5. La macchina universale

La codifica. dell informazione

Corso di Informatica di Base

Scrittura formattata - printf

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Sistemi Web per il turismo - lezione 3 -

La codifica. dell informazione

Diagrammi a blocchi 1

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

1) Quali dei seguenti sottoinsiemi del campo dei numeri reali ℝ sono sottospazi vettoriali?

Somma di numeri binari

Excel & VBA. Excel e Visual Basic for Application

Programma svolto di INFORMATICA. Classe 3 - indirizzo MERCURIO A.S. 2009/2010

Sistemi lineari - Parte Seconda - Esercizi

Транскрипт:

Fortran per Ingegneri Lezione 4 A.A. 2014/2015 Marco Redolfi marco.redolfi@unitn.it Simone Zen simone.zen@unitn.it

Formati e Formattazione Finora abbiamo letto valori da tastiera e scritto sullo schermo usando le due istruzioni READ e WRITE. Il formato che abbiamo usato è detto free-format ed è specificato dal secondo * nelle espressioni READ(*,*) e WRITE(*,*) Come si è visto, il risultato dell'utilizzo del free-format, fa apparire spazi non necessari. 2

WRITE(*,100) i,risultato Formati e Formattazione 100 FORMAT ('Iterazione numero',i3,1x,'vale', F7.3 L'istruzione FORMAT contiene le istruzioni per la formattazione utilizzata dall'istruzione WRITE I3 e F7.3 sono descrittori di formato associati alle variabili i e risultato Iterazione numero 3 vale 3.142 (formatted) Iterazione numero 3 vale 3.141593 (unformatted) 3

INTEGER output: il descrittore I riw or riw.m r = repeat count numero di volte che deve essere usato il descrittore w = Field width numero di caratteri totali da usare m = Numero minimo di digits che devono essere visualizzati 4

INTEGER output: il descrittore I 5

REAL output: il descrittore F rfw or rfw.d r = repeat count numero di volte che deve essere usato il descrittore w = Field width numero di caratteri totali da usare d = Numero di digits a destra del punto decimale!!segno e PUNTO contano anch'essi un digit!!!! alcuni compilatori richiedono w>=d+3!! 6

REAL output: il descrittore F 7

REAL output: il descrittore E rew or rew.d r = repeat count numero di volte che deve essere usato il descrittore w = Field width numero di caratteri totali da usare d = Numero di digits a destra del punto decimale Notazione esponenziale 4096.0 ----> 0.4096*10^4 Attenzione il descrittore E normalizza i valori tra 0.1 e 1 8

REAL output: il descrittore E 9

REAL output: il descrittore ES (conventional scientific notation) resw or resw.d r = repeat count numero di volte che deve essere usato il descrittore w = Field width numero di caratteri totali da usare d = Numero di digits a destra del punto decimale Notazione esponenziale 4096.0 ----> 4.096*10^3 Attenzione il descrittore ES normalizza i valori tra 1.0 e 10 10

REAL output: il descrittore ES 11

CHARACTER output: il descrittore A ra or raw r = repeat count numero di volte che deve essere usato il descrittore w = Field width numero di caratteri totali da usare 12

CHARACTER output: il descrittore A 13

Posizionatori orizzontali: i descrittori X e T nx n = numero di blanks da inserire Tc c = numero della colonna a cui spostarsi 14

Cambiare linea di output: il descrittore / Il descrittore / fa saltare la scrittura alla linea successiva 15

Ripetizione di gruppi di formato 320 FORMAT (1x, I6, I6, F10.2, F10.2, I6, F10.2, F10.2) è analogo a 320 FORMAT (1x, I6,2(I6,2F10.2)) 16

Descrittori di fomato per la lettura (READ) I descrittori di formato per la lettura sono analoghi a quelli per la scrittura WRITE. Es: READ(*,'(3F10.4)') a,b,c dati di input sono 1.5 0.15E+01 15.0E 01 > tutte le 3 variabili lette hanno lo stesso valore pari a 1.5 17

Vettori o array Alcuni problemi di programmazione necessitano l'utilizzo di un'aggregazione di valori, piuttosto che di uno solo. Questo significa che è conveniente indicare l'insieme di valori con una sola variabile piuttosto che tante variabili. In FORTRAN questa problema è risolto utilizzando degli array. Memoria del computer... 5 12.5-25.5 13.6... Array a

Vettori o array Un array è un gruppo di variabili o costanti, tutte dello stesso tipo, che si riferiscono ad un singolo nome. Ogni singolo valore dell'array è detto elemento dell'array, ed è identificato dal nome dell'array e da un indice che punta ad una particolare posizione all'interno dell'array. Memoria del computer... a(1) a(2) a(3) a(4)... Array a

Vettori e Matrici (Terminologia) Un array (vettore o matrici a più dimensioni) permette di specificare con un nome ed un insieme di indici una serie di elementi in modo molto semplice. Ogni array ha un tipo ed ogni elemento è di tale tipo. La terminologia relativa agli array è la seguente: RANGO (RANK) LIMITI (BOUNDS) - Numero di dimensioni - Limite superiore ed inferiore di ogni dimensione ESTENSIONE (EXTENT) - Numero di elementi in ogni dimensione GRANDEZZA (SIZE) FORMA (SHAPE) - Numero totale di elementi - Rango ed estensione CONFORMI (CONFORMABLE) - Stessa forma

Dichiarazione INTEGER, DIMENSION(100) INTEGER :: vettore_i :: vettore_i(100) REAL, DIMENSION(100) REAL :: vettore_r :: vettore_r(100) CHARACTER(len=5), DIMENSION(100) :: cognome CHARACTER(len=5) :: cognome(100)

Visualizzazione degli array REAL, DIMENSION(15) :: A Gli elementi degli array sono semplici variabili INTEGER, DIMENSION(10) :: index REAL, DIMENSION(3) :: temp index(1) = 5 temp(3) = REAL(index(1))/5. WRITE(*,*) index(1),index(1)

Inizializzazione degli elementi degli array Problema: INTEGER, DIMENSION(10) :: j WRITE(*,*) j(1), j(1) L'array è stato dichiarato ma nessun valore è stato introdotto ancora

Inizializzazione degli elementi degli array Inizializzazione con delle istruzioni di assegnazione... REAL, DIMENSION(10) :: array DO i=1,10 array(i) = REAL(i) END DO

Inizializzazione degli elementi degli array Inizializzazione con delle istruzioni di assegnazione... 2 REAL, DIMENSION(10) :: array array=(/1.,2.,3.,4.,5.,6.,7.,8.,9.,10./)

Inizializzazione degli elementi degli array Inizializzazione con delle istruzioni di assegnazione... 3 REAL, DIMENSION(10) :: array array=0.

Inizializzazione degli elementi degli array Inizializzazione all'interno delle dichiarazioni INTEGER, DIMENSION(5) :: array2 = (/1,2,3,4,5/) DO implicito /(arg1,arg2,...,index = istart,iend,incr)/ INTEGER, DIMENSION(5) :: array2 = (/(i,i=1,5)/)

Cambiare il limite inferiore del range di un array REAL, DIMENSION(5) :: a1 REAL, DIMENSION( 2:2) :: b1 REAL, DIMENSION(5:9) :: c1 a1, b1, c1 sono array di 5 elementi!! P.S. Matlab non accetta indici negativi per gli array

Superamento del range di un array (out of bounds) INTEGER :: i REAL,DIMENSION(5):: a=(/1.,2.,3.,4.,5./) REAL,DIMENSION(5):: b=(/10.,20.,30.,40.,50./) DO i = 1,6 write(*,*) a(i) END DO

Superamento del range di un array (out of bounds) risultato dipende da tipo compilatore!! Bounds check on Bounds check off a(1) =1.0 a(1) =1.0 a(2) =2.0 a(2) =2.0 a(3) =3.0 a(3) =3.0 a(4) =4.0 a(4) =4.0 a(5) =5.0 a(5) =5.0 a(6 a(6) =10.0 Array subscript exceeds allocated area

Uso delle costanti nella dichiarazione di array INTEGER, PARAMETER :: max_size = 1000 REAL :: array1(max_size) REAL :: array2(max_size) REAL :: array3(2*max_size)

Operazioni sull'array globale condizione necessaria: gli array devono avere la stessa forma INTEGER :: i REAL, DIMENSION(4) :: a = (/1.,2.,3.,4.) REAL, DIMENSION(4) :: b = (/5.,6.,7.,8.) REAL, DIMENSION(4) :: c,d! somma elemento per elemento DO i=1,4 c(i) = a(i) + b(i) END DO write(*,*) c

Operazioni sull'array globale condizione necessaria: gli array devono avere la stessa forma INTEGER :: i REAL, DIMENSION(4) :: a = (/1.,2.,3.,4.) REAL, DIMENSION(4) :: b = (/5.,6.,7.,8.) REAL, DIMENSION(4) :: c,d! somma sull'array globale d = a + b write(*,*) d

Operazioni sull'array globale posso eseguire operazioni con costanti a livello globale INTEGER :: i REAL, DIMENSION(4) :: a = (/1.,2.,3.,4.) REAL :: cost=5.! somma sull'array globale DO i=1,4 a(i) = a(i) + /* cost END DO! equivalente a a = a + /* cost

QUANDO SI DEVONO USARE GLI ARRAY? 1) Non risolvere tutti i problemi con gli array!!!! (vedi esercizio lezione precedente!!!!!) 2) Si usano quando tutti, o la maggior parte dei dati, devono essere tenuti in memoria per risolvere in modo efficiente un problema. 3)Utilizzare array richiede memoria!!!

ESERCIZI 1) Assegnato un numero di dati N, calcolare la media e la deviazione standard 2) Trovare il max e il min di una serie di dati e la loro posizione (senza utilizzare le funzioni intrinseche MAXVAL e MAXLOC) 3) Assegnato un array di 10 numeri casuali, ordinarlo in senso crescente