La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Il Linguaggio Fortran 90: 1. Preliminari Stefano Leonardi, Egidio Palaia Dipartimento di Informatica e Sistemistica.

Presentazioni simili


Presentazione sul tema: "1 Il Linguaggio Fortran 90: 1. Preliminari Stefano Leonardi, Egidio Palaia Dipartimento di Informatica e Sistemistica."— Transcript della presentazione:

1 1 Il Linguaggio Fortran 90: 1. Preliminari Stefano Leonardi, Egidio Palaia Dipartimento di Informatica e Sistemistica

2 2 Informazioni sulla Didattica Stephen J. Chapman, Fortran 90/95: guida alla programmazione, McGraw-Hill, 2000 M. Cadoli, Dispensa per il Corso di Laurea in Ingegneria Aereospaziale, A.A , In distribuzione presso la libreria ``L'Universitaria'', Viale Ippocrate 99, Roma. Compilatore Fortran 90: ELF 90 I programmi illustrati in seguito sono in parte tratti dalla Dispensa di M. Cadoli e dal libro di S. Chapman. Ricevimento: Venerdì ore 11-13, via Salaria 113, II piano, Stanza 227

3 3 Avvertenze Queste trasparenze intendono aiutare lo studente nel seguire lo svolgimento degli argomenti svolti a lezione. Queste trasparenze non sono considerate sostitutive dei testi in cui sono trattati gli argomenti del Programma del Corso. Queste trasparenze possono contenere errori ed imprecisioni che possono essere riportati scrivendo a

4 4 Un primo programma Fortran ! File: ciao.for PROGRAM ciao ! Questo programma stampa un messaggio sullo schermo WRITE (*,*) 'CIAO MONDO!' STOP END PROGRAM ciao Ogni programma inizia con la parola chiave PROGRAM seguita dal nome del programma Listruzione END PROGRAM deve essere seguita dal nome del programma

5 5 Compilazione ed Esecuzione > elf90 ciao.for Crea il file in oggetto ciao.obj > elf90 ciao.obj Crea il file eseguibile ciao.exe > ciao Esegue il programma

6 6 Struttura di un programma Fortran ! File: variab.for ! ! Scopo: illustrare la dichiarazione e l'uso di variabili PROGRAM variabile ! Questo programma legge un numero intero da tastiera e lo stampa sullo ! schermo ! *** SEZIONE DICHIARATIVA *** ! IMPLICIT NONE ! questa dichiarazione e' obbligatoria. E la prima istruzione INTEGER :: numero ! questa e' la dichiarazione di una variabile ! *** SEZIONE ESECUTIVA *** ! WRITE(*,*) 'Inserisci un numero intero, poi schiaccia il tasto RETURN: ' READ(*,*) numero ! lettura di un valore intero da tastiera WRITE(*,*) 'Hai inserito il numero ', numero STOP END PROGRAM variabile

7 7 Identificatori Fortran Nomi utilizzati per indicare le variabili, le costanti ed i nomi di ununità di programma Regole per la formazione dei nomi: –Al più 31 caratteri –Lettere alfabetiche: abcd…ABCDE… –Cifre: 012…. –Il carattere di sottolineatura: _ Identificatori validi: conta, zzzzeta1, numero_elementi Identificatori non validi: A$, esempio-non-valido Fortran è Case Insensitive Stile di Programmazione: –minuscole per variabili, –maiuscole per parole chiave del Fortran (ex: PROGRAM, INTEGER)

8 8 Variabili Fortran E un tipo di dato che viene modificato durante lesecuzione di un programma. Una variabile è associata ad una locazione di memoria che memorizza ad ogni passo dellesecuzione del programma il valore corrente della variabile. numero 5

9 9 Uso delle variabili in Fortran Listruzione IMPLICIT NONE impone che tutte le variabili che vengono utilizzate siano precedentemente dichiarate indicando il nome ed il tipo. Lidentificatore della variabile ne indica il valore. Il valore di una variabile è inizialmente non definito. Il valore di una variabile è modificato attraverso luso dellIstruzione di Assegnazione

10 10 Esempio di Istruzione di Assegnazione ! File: assegnaz.for ! Scopo: illustrare l'istruzione di assegnazione PROGRAM assegnazione ! Questo programma effettua varie operazioni su due ! variabili intere ! *** SEZIONE DICHIARATIVA *** ! IMPLICIT NONE INTEGER :: num1, num2 ! questa e' la dichiarazione di due variabili ! *** SEZIONE ESECUTIVA *** ! WRITE(*,*) 'Inserisci due numeri interi, poi schiaccia il tasto RETURN: ' READ(*,*) num1, num2 WRITE(*,*) 'Hai inserito i numeri ', num1, num2 num1 = num2 * 10 ! assegnazione alla variabile num1 WRITE(*,*) 'Le variabili ora valgono: ', num1, num2 STOP END PROGRAM assegnazione

11 11 Costanti in Fortran Tipo di dato i cui valori non mutano durante lesecuzione del programma. INTEGER, PARAMETER :: max_num=100 !Dichiarazione di una costante intera Costanti intere possono assumere numeri positivi e negativi. Ex: +10, 0, +30 Possono essere nellintervallo [-2**31, 2**31-1] Costanti sono utilizzate solo nella parte destra di unespressione insieme a variabili e ad operatori

12 12 Istruzione di Assegnazione nome_variabile = espressione Ex: num1 num2 num1= num2=num num1=num num2=num2+num num1=num1+max_num

13 13 Espressioni Intere Operatori binari: +, -, *,/, ** Operatori unari: +, - 1.Non è possibile affiancare due operatori: a*-b a*(-b); a**-b a**(-b) 2.Moltiplicazione implicita non ammessa x(y+z) x*(y+z) 3.Parentesi permettono di raggruppare i termini delle espressioni. Priorità ai termini allinterno delle parentesi 2**((8+2)/5)= 2**(10/5)=2**2=4 4.Divisione tra interi, troncamento allintero inferiore: 8/5=1

14 14 Uso di variabili e costanti reali ! File: cerchio.for PROGRAM area_cerchio ! Questo programma legge il raggio di un cerchio (reale positivo) e ! calcola i valori di circonferenza e area IMPLICIT NONE REAL, PARAMETER :: pi = ! dichiarazione di una costante con nome REAL :: raggio, area, circonferenza ! dichiarazione di variabili WRITE (*,*) 'Raggio del cerchio? ' READ (*,*) raggio circonferenza = 2 * pi * raggio area = pi * raggio * raggio WRITE (*,*) 'Circonferenza : ', circonferenza WRITE (*,*) 'Area : ', area STOP END PROGRAM area_cerchio

15 15 Espressioni Reali Una costante reale è un numero che contiene cifre decimali. Numeri reali possono essere scritti con o senza esponente. Numeri reali senza esponente: 1.,-10., 7.5, 0., Numeri reali con esponente: E Ex: 0.123E+6, E-4, 123.4E-6 Reali rappresentati con 32 o 64 bit. Se la parola è di 32 bit, 24 per la mantissa e 8 per lesponente. Il numero di bit per la mantissa indica la massima precisione rappresentabile.

16 16 Operazioni con numeri reali Generano un risultato reale. Ex: 1./4.=0.25, 1./3.= Gerarchia tra operazioni: 1.Operazioni interne alle parentesi, dalle più interne alle più esterne 2.Elevazioni a potenza, da dx verso sx 3.Moltiplicazioni e divisioni, da dx verso sx 4.Addizioni e sottrazioni, da dx verso sx

17 17 Esempio a=3. b=2. c=5. d=4. e=10. f=2. g=3. output=a*(b+c)*(d+e)/f**g Output= 3.*(2.+5.)*(4.+10.)/2.**3. = 3.*7.*14./2.**3. = 3.*7.*14./8. = 294./8. = 36.75

18 18 Operazioni miste con numeri interi e reali Operazioni in cui compaiono numeri reali ed interi I numeri interi vengono trasformati in numeri reali ed il risultato è reale. La conversione avviene quando un numero reale ed uno intero compaiono nella stessa operazione secondo le regole di valutazione di unespressione. Ex: /4 = /4=1.25 INTEGER :: n n = /4 ! n=3 REAL :: n n = (3 + 4)/2 ! n=3.

19 19 Variabili di Caratteri e Stringhe Assegnazione a variabile di caratteri: variabile di caratteri = espressione di caratteri Espressione di caratteri sono formate da variabili, costanti ed operatori su caratteri. Costanti di caratteri o Stringhe: costante di caratteri, ABCDEFGHI Dichiarazione di variabili di caratteri: CHARACTER (lunghezza=20) :: nome = federico La parte in eccesso nellassegnazione viene troncata: CHARACTER (lunghezza=3) :: est_file est_file = FILE01 ! est_file=FIL

20 20 Sottostringhe CHARACTER (len=8) :: str, str_1 str = str_1 = str(2:4) WRITE(*,*) str_1 ! Stampa 234 PROGRAM test CHARACTER (len=8) :: a,b,c a = ABCDEFGHIJ b = c = a(5:7) ! c = EFG b(7:8) = a(2:6) ! b = BC END PROGRAM test

21 21 Operatori su Stringhe Operatore di Concatenazione: // PROGRAM test CHARACTER (len=10) :: a CHARACTER (len=8) :: b,c a = ABCDEFGHIJ b = c = a(1:3) // b(4:5) // a(6:8) ! c = ABG45FGH END PROGRAM test

22 22 Input/Output con Formato libero Unità di Input: –Tastiera, –File Unità di Output: –Monitor –Stampante –File Legge i valori in Input in un insieme di variabili: READ(*,*) lista_input I due asterischi indicano lunità di Input standard e il formato indirizzato da lista, cioè le variabili nella lista determinano il tipo di dati in Input PROGRAM esempio_di_input INTEGER :: i, j REAL :: a CHARACTER (len=12) :: testo READ (*,*) i, j, a, testo END PROGRAM esempio_di_input

23 23 Inizializzazione delle variabili Le variabili devono sempre essere inizializzate prima di apparire in unespressione. PROGRAM init INTEGER :: i WRITE(*,*) i ! i non definita END PROGRAM init PROGRAM init_1 INTEGER :: i, j i = 1 READ (*,*) j WRITE (*,*) i, j! I definita END PROGRAM init_1

24 24 Inizializzazione delle variabili (continua) Linizializzazione può anche avvenire allinterno dalla dichiarazione delle variabili. PROGRAM init_2 INTEGER :: i = 1 WRITE (*,*) i END PROGRAM init_2


Scaricare ppt "1 Il Linguaggio Fortran 90: 1. Preliminari Stefano Leonardi, Egidio Palaia Dipartimento di Informatica e Sistemistica."

Presentazioni simili


Annunci Google