Recent Changes - Search:

PmWiki

pmwiki.org

edit SideBar

Introduzione al Fortran 18.03.13 lab.2

Introduzione al Fortran

Il Fortran è stato uno dei primi linguaggi di programmazione ad essere creato, formalizzato con standard ISO nel 1977 ha subito aggiornamenti nel 90, nel 95 e più recentemente nel 2003.Il codice nasce dall'esigenza di svolgere quei tipici problemi che assillavano matematici ed ingegneri con il calcolatore, come la ricerca degli autovalori e autovettori.
Nei successivi aggiornamenti si è creato un codice più ordinato ma sostanzialmente di pari efficienza; caratteristica essenziale delle versioni successive è la retrocompatibilità, infatti un compilatore Fortran 95 leggerà un codice scritto in Fortran 77 senza dare errori.
Prima che nascesse questo linguaggio di programmazione ci si trovava davanti a macchine diverse per cui era necessario scrivere linguaggi diversi. Si è notato che, essendo la logica delle esecuzioni delle istruzioni identica, si poteva scrivere un codice per la logica e passarlo ad un compilatore,che su macchine diverse dava istruzioni diverse.
I passaggi risultano i seguenti:

  1. Logica
  2. Scrivo il file
  3. Lo compilo
  4. Lo passo al processore

A differenza del Maxima che è un linguaggio interpretato, cioè passo comandi ed espressioni al software che elabora e risponde, il Fortran è un linguaggio che lavora in hardware. Questo presenta il vantaggio di avere a disposizione un linguaggio più veloce e lo svantaggio di essere molto meno flessibile (cambiare qualcosa in hardware significa cambiare i circuiti stampati del processore!); presenta, inoltre, la caratteristica di dover scrivere per intero il programma prima di poterlo eseguire,invece in Maxima si eseguiva comando dopo comando.

Primi passi

Le procedure di seguito discusse saranno valide per le macchine a sistema operativo UNIX presenti in laboratorio. Un breve tutorial è disponibile qui.
Un file Fortran ha estensione *.for, questo significa, implicitamente, che stiamo scrivendo in Fortran 77. Per le macchine in laboratorio la procedura per iniziare a creare un file Fortran è la seguente:

  Applicazioni>Accessories>GEdit Text Editor

e si apre il Notepad di Linux, si scrive il programma nell'editor di testo e lo si salva come nome_scelto.for. Per l'esecuzione si deve aprire il terminale e si digita:

 gfortran nome_scelto.for && ./a.out 

Questa istruzione significa: apro il compilatore gfortran e faccio compilare nome_scelto.for se la compilazione avviene con successo eseguo il programma.
In alternativa le righe di comando si possono separare:

  gfortran nome_scelto.for
./a.out

Il punto serve ad identificare la cartella in cui mi trovo lo slash serve per entrarci ed aprire il file a.out che è quello generato dalla compilazione.

Note base di sintassi Fortran

Innanzi tutto il Fortran non è Case sensitive ossia non distingue tra maiuscolo e minuscolo.
Una riga che inizia per C è un commento. Inizia per C significa che il primo carattere della riga è C
C pippo

è un commento
    c pippo 

non è un commento, ma un'istruzione.
Le colonne che vanno dalla seconda alla quinta sono destinate ai labels (etichette) in questo modo si assegna un nome alla riga per usi futuri; la sesta colonna è destinata per andare a capo (tipicamente usando un + o un $, anche se qualunque carattere va bene). La ragione dell'esigenza di andare a capo risiede nel fatto che i primi programmi venivano compilati su schede perforate, limitate a 72 colonne.
Il nostro primo programma inizia con una dichiarazione di apertura programma, un titolo, e le dichiarazioni delle variabili.


      program hellow

      write(*,*)'Hello world!'

      stop
      end 

Questo programma stampa a video Hello world!. Notiamo che l'istruzione write (stampa a video) è seguita da (*,*) dove il primo termine sta a significare l'unità di memoria in cui lo voglio allocare e il secondo invece il formato. Gli asterischi significano: scrivi nell'unità di memoria default con un formato standard. Stop indica che tutte le operazioni di compilazione devono fermarsi ed end che la compilazione è terminata.

Come secondo programma possiamo scrivere un programma che calcola la corona circolare.

       program corona

c      calcolo area della corona circolare

       real ri,re,area,pi
       parameter (pi=3.14592)

       write(*,*) 'Inserisci raggio interno ed esterno'
       read(*,*) ri,re  
       area=(re**2-ri**2)*pi
       write(*,*)' Area: ',area

       stop
       end

Si nota come: dopo il commento sono state dichiarate le variabili sotto forma di real (reali). Vi sono anche variabili intere (integer), carattere (character) e doppia precisione (double precision) (1 bit per il segno, 11 per l'esponente, 52 per la mantissa).Tutto ciò che sta tra la riga program e la prima istruzione del programma fa parte di una parte del listato che viene definita declarations (dichiarazioni, in cui si dichiarano tutte le variabili).

L'istruzione parameter serve per dare un dato al programma che non può essere più cambiato.
Similmemente per l'istruzione write, per il read il primo termine rappresenta l'unità (default da tastiera) e il secondo il formato (standard). Questa istruzione significa: leggi da tastiera e alloca l'input nelle variabili ri ed re
Le ultime parole possono essere spese per il ,area significa: stampa a schermo il valore della variabile area, infatti se non avessimo specificato l'intenzione di stampare a schermo la variabile area sarebbe comparso Area: senza alcun valore.
Fortran possiede una notazione implicita,importante è non fare confusione. Fortran dà, di default, come variabili intere tutte le parole che iniziano per i,j,k,l,m,n e tutte le parole che cominciano per le restanti lettere, come variabili reali. Se mettessimo nella parte dichiarazioni implicit none non useremmo la notazione implicita e dovremo dichiarare tutte le variabili.

Buona norma di programmazione, se si vuole utilizzare la notazione implicita, è fare iniziare con x tutte le variabili reali e con i tutte le variabili intere; nel nostro programmino quindi si avrebbero xri,xre,xarea,xpi, invece che ri,re,area,pi, per evitare confusione( confusione si sarebbe creata se avessimo chiamato ir la variabile ri, il programma avrebbe generato errore ad un input di 1.3 per raggio interno).

Edit - History - Print - Recent Changes - Search
Page last modified on May 23, 2013, at 11:30 AM EST