Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Il Linguaggio Fortran 90: 1. Preliminari
Stefano Leonardi, Egidio Palaia Dipartimento di Informatica e Sistemistica
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
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
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 L’istruzione END PROGRAM deve essere seguita dal nome del programma
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
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
Identificatori Fortran
Nomi utilizzati per indicare le variabili, le costanti ed i nomi di un’unità 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
Variabili Fortran numero 5
E’ un tipo di dato che viene modificato durante l’esecuzione di un programma. Una variabile è associata ad una locazione di memoria che memorizza ad ogni passo dell’esecuzione del programma il valore corrente della variabile. numero 5
9
Uso delle variabili in Fortran
L’istruzione IMPLICIT NONE impone che tutte le variabili che vengono utilizzate siano precedentemente dichiarate indicando il nome ed il tipo. L’identificatore della variabile ne indica il valore. Il valore di una variabile è inizialmente non definito. Il valore di una variabile è modificato attraverso l’uso dell’Istruzione di Assegnazione
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
Costanti in Fortran Tipo di dato i cui valori non mutano durante l’esecuzione 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 nell’intervallo [-2**31, 2**31-1] Costanti sono utilizzate solo nella parte destra di un’espressione insieme a variabili e ad operatori
12
Istruzione di Assegnazione
nome_variabile = espressione Ex: num1 num2 num1= num2=num num1=num num2=num2+num num1=num1+max_num
13
Espressioni Intere Operatori binari: Operatori unari:
+, -, *,/, ** Operatori unari: +, - 1. Non è possibile affiancare due operatori: a*-b a*(-b); a**-ba**(-b) 2. Moltiplicazione implicita non ammessa x(y+z)x*(y+z) 3. Parentesi permettono di raggruppare i termini delle espressioni. Priorità ai termini all’interno delle parentesi 2**((8+2)/5)= 2**(10/5)=2**2=4 4. Divisione tra interi, troncamento all’intero inferiore: 8/5=1
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
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., -99.6 Numeri reali con esponente: <mantissa>E<esponente> 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 l’esponente. Il numero di bit per la mantissa indica la massima precisione rappresentabile.
16
Operazioni con numeri reali
Generano un risultato reale. Ex: 1./4.=0.25, 1./3.= Gerarchia tra operazioni: Operazioni interne alle parentesi, dalle più interne alle più esterne Elevazioni a potenza, da dx verso sx Moltiplicazioni e divisioni, da dx verso sx Addizioni e sottrazioni, da dx verso sx
17
Esempio a=3. b=2. c=5. d=4. e=10. f=2. g=3. output=a*(b+c)*(d+e)/f**g
= 3.*7.*14./2.**3. = 3.*7.*14./8. = 294./8. = 36.75
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 un’espressione. Ex: 1. + 1/4 = /4=1.25 INTEGER :: n n = /4 ! n=3 REAL :: n n = (3 + 4)/2 ! n=3.
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 nell’assegnazione viene troncata: CHARACTER (lunghezza=3) :: est_file est_file = ‘FILE01’ ! est_file=FIL
20
Sottostringhe CHARACTER (len=8) :: str, str_1 str = ‘1234567’
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 = ‘123456BC’ END PROGRAM test
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
Input/Output con Formato libero
Unità di Input: Tastiera, File Unità di Output: Monitor Stampante Legge i valori in Input in un insieme di variabili: READ(*,*) lista_input I due asterischi indicano l’unità 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
Inizializzazione delle variabili
Le variabili devono sempre essere inizializzate prima di apparire in un’espressione. 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
Inizializzazione delle variabili (continua)
L’inizializzazione può anche avvenire all’interno dalla dichiarazione delle variabili. PROGRAM init_2 INTEGER :: i = 1 WRITE (*,*) i END PROGRAM init_2
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.