1 / 24

Il Linguaggio Fortran 90: 1. Preliminari

Il Linguaggio Fortran 90: 1. Preliminari. Stefano Leonardi, Egidio Palaia Dipartimento di Informatica e Sistemistica. Informazioni sulla Didattica. Stephen J. Chapman, Fortran 90/95: guida alla programmazione, McGraw-Hill, 2000

doctor
Download Presentation

Il Linguaggio Fortran 90: 1. Preliminari

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 2000-2001, 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 http://www.dis.uniroma1.it/~leon/didattica/meccanica/

  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 leon@dis.uniroma1.it

  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 • 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=7 7 -- num2=num1+10 7 17 num1=num1+3 10 17 num2=num2+num1 10 27 num1=num1+max_num 110 27

  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 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 = 3.141592 ! 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, -999.0E-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.=.3333333 • 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 Output = 3.*(2.+5.)*(4.+10.)/2.**3. = 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 = 1. 1+1./4=1.25 • INTEGER :: n n = 1.25 + 9/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’ str_1 = str(2:4) WRITE(*,*) str_1 ! Stampa ‘234’ • PROGRAM test CHARACTER (len=8) :: a,b,c a = ‘ABCDEFGHIJ’ b = ‘12345678’ 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 = ‘12345678’ 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 • File • 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

More Related