• Non ci sono risultati.

Evoluzione del FORTRAN il FORTRAN (FORmula TRANslation) e’ il primo esempio di linguaggio di programmazione ad alto livello

N/A
N/A
Protected

Academic year: 2021

Condividi "Evoluzione del FORTRAN il FORTRAN (FORmula TRANslation) e’ il primo esempio di linguaggio di programmazione ad alto livello"

Copied!
11
0
0

Testo completo

(1)

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica

15 – IL LINGUAGGIO FORTRAN

Marco Lapegna

Dipartimento di Matematica e Applicazioni Universita’ degli Studi di Napoli Federico II wpage.unina.it/lapegna

Marco Lapegna –

Laboratorio di Programmazione

15. Introduzione al Fortran

Evoluzione del FORTRAN

il FORTRAN (FORmula TRANslation) e’ il primo esempio di linguaggio di programmazione ad

alto livello

FORTRAN I (1956) *

FORTRAN II e FORTRAN III (1958)

FORTRAN IV (1961)

FORTRAN 66 *

FORTRAN 77 *

FORTRAN 90 *

FORTRAN 95

FORTRAN 2003 *

FORTRAN 2008

Continue evoluzioni per adattarsi a nuove e piu’

sofisticate esigenze del calcolo scientifico

Ancora oggi e’ il principale linguaggio di programmazione per le applicazioni scientifiche

* major revisions

uno dei primi manuali Fortran (1960)

(2)

Marco Lapegna –

Laboratorio di Programmazione

15. Introduzione al Fortran

Passi per risolvere un problema con il calcolatore

1. Formulazione del problema

2. Formulazione del modello matematico 3. Formulazione del modello discreto 4. Sviluppo dell’algoritmo

5. sviluppo del programma, cioe’ traduzione dell’algoritmo in un linguaggio di

programmazione ad alto livello

Di nostra competenza i passi 4 e 5

Molto lavoro per il passo 4

Passo 5 semplice ed automatico !!

Importante solo rispettare la sintassi

passi per la risoluzione di un problema scientifico con il calcolatore

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Inizio e fine in Pascal-like

Equivalente Fortran

Inizio e fine programma

•Ogni programma FORTRAN e’ compreso tra le istruzioni PROGRAM e END

•L’istruzione PROGRAM da’ il nome al programma

•Ogni programma termina con END

•Analogo di begin ed end per il Pascal Like

(3)

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Dichiarazione variabili in Pascal-like

Equivalente in Fortran

Dichiarazione delle variabili

•5 tipi di dati fondamentali

•Il FORTRAN e’ Case Unsensitive (non fa differenza tra maiuscole e minuscole)

•Possibile (ma non consigliato) non dichiarare le variabili

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Commenti in P-L

Equivalente in Fortran

commenti

I commenti sono linee di testo inserite nel codice che non vengono tradotte dal compilatore

Hanno lo scopo di migliorare la leggibilita’ dei programmi, descrivendo le sezioni del programma o anche gruppi di istruzioni

E’ buona norma inserire numerose linee di commento (anche fino al 50% delle linee dl programma)

In Fortran le linee di codice iniziano con un il carattere !

(4)

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Lettura, scrittura e assegnazione in P-L

Equivalente in Fortran

Lettura, definizione e stampa delle variabili

•READ* definisce una o piu’ variabili mediante l’unita’ di input (es. la tastiera)

•PRINT* stampa il contenuto di una variabile sull’unita’ di output (es. il monitor)

•L’operatore = indica una operazione di assegnazione di un valore ad una variabile

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

If-then-else in pascal-like

Equivalente in Fortran

Struttura di selezione

•Esatta corrispondenza con il Pascal Like

•Disponibile anche senza il ramo ELSE

(5)

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Esempi di operatori logici e relazionali in P-L

Equivalente in Fortran

Operatori logici e relazionali

• Vengono eseguiti prima gli operatori relazionali ( > , < , == , /= , >= , <= )

• Poi quelli logici (.NOT. , .AND. , .OR.)

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

For-endfor in Pascal-like

Equivalente in Fortran

Struttura di iterazione for

•Il campo K e’ opzionale, se assente si sottointende 1

•Piu’ strutture innestate richiedono indici distinti

(6)

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Repeat-until in Pascal-like

Equivalente in Fortran

Struttura di iterazione repeat

•Ripete piu’ volte le istruzioni tra repeat e until

•Quanto la condizione risulta vera la struttura di iterazione termina

•Non esiste una traduzione “diretta”

•Realizzato mediante simulazione di DO- ENDDO + condizione di uscita

• IF (condizione) EXIT immediatamente prima di ENDDO

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

While-endwhile in pascal-like

Equivalente in Fortran

Struttura di iterazione while

• Ripete piu’ volte le istruzioni tra while e endwhile

Quanto la condizione risulta vera la struttura di iterazione continua

• Non esiste una traduzione “diretta”

• Realizzato mediante simulazione di DO- ENDDO + condizione di uscita

• IF (.NOT. condizione) EXIT immediatamente dopo di DO

(7)

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Dichiarazione e lettura di un array in P-L

Equivalente in Fortran

Gli array

• in fase di dichiarazione e’ necessario specificare la dimensione

• successivamente non e’ possibile modificare la dimensione

• e’ possibile fare riferimento a ciascuna componente tramite un indice

• in memoria le componenti di un array occupano locazioni di memoria consecutive

• gli array 2-dimensionali sono memorizzati per colonne in locazioni consecutive

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Chiamata di una procedura in Pascal-like

Equivalente SUBROUTINE in Fortran

Sottoprogrammi SUBROUTINE

•Procedura Fortran invocata attraverso l’istruzione CALL

•L’istruzione CALL passa il controllo dell’esecuzione alla subroutine

•Riceve i valori di input e restituisce quelli di output attraverso una lista di argomenti

•L’esecuzione del programma chiamante riprende dopo il termine della subroutine

Gli argomenti nella chiamata rappresentano l’unico strumento di comunicazione tra

programma chiamante e subroutine

(8)

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Procedura in Pascal-like

Equivalente SUBROUTINE in Fortran

Sottoprogrammi SUBROUTINE

•il passaggio delle informazioni e’ per indirizzo (della variabile)

•la subroutine opera sulle stesse locazioni di memoria del programma chiamante

•non c’e’ quindi differenza tra parametri di input e di output

•E’ possibile utilizzare nomi diversi nelle subroutine e nel programma chiamante

•variabili non presenti nella testata non sono visibili dal programma chiamante

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Nel caso di array viene passato solo l’indirizzo della prima componente

- Allocazione di array in locazioni consecutive - Passaggio per indirizzo (la subroutine opera

sulle stesse locazioni di memoria)

Da queste informazioni la subroutine e’ in grado di “ricostruire” tutto l’array

Quindi

E’ possibile evitare di dichiarare gli array nelle subroutine specificando una dimensione fissata

Passaggio per indirizzo di una array A(9)

SUBROUTINE ed array

(9)

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

OSSERVAZIONE: array con 2 indici (memorizzati per colonna)

Viene passato alla subroutine Solo l’indirizzo di A(1,1)

Problema:

Se programma chiamante e subroutine dichiarano l’array con numero di righe differente, fanno riferimento alla stessa

variabile con indici diversi

Esempio:

Nel programma chiamante A(3,3)

Nella subroutine X(M,M) con M=2

Disallineamento degli indici di una matrice tra programma chiamante e subroutine a causa del

diverso numero di righe nella dichiarazione

SUBROUTINE ed array

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Passare alla subroutine anche l’effettivo numero di righe dell’array Leading Dimension ( LD )

Numero di righe con cui si e’ dichiarato l’array nel programma chiamante

Utilizzato solo nella dichiarazione dell’array nella subroutine

Permette il corretto allineamento degli indici tra le due unita’ di programma

Corretto allineamento degli indici utilizzando la leading dimension dell’array

soluzione

(10)

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Chiamata di una procedura in Pascal-like

Equivalente FUNCTION in Fortran

Sottoprogrammi FUNCTION

•Procedura Fortran invocata direttamente attraverso il nome

•Alternativa alle subroutine

•Restituisce un valore attraverso il nome

•Utile per definire funzioni matematiche

•L’istruzione EXTERNAL:: FUN dichiara FUN come function

•L’istruzione REAL:: FUN dichiara il tipo della funzione

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Procedura in Pascal-like

Equivalente FUNCTION in Fortran

Sottoprogrammi FUNCTION

•Il valore di ritorno e’ assegnato ad una variabile con lo stesso nome della function

•Stesso meccanismo di passaggio di argomenti delle subroutine

•Una function puo’ essere passata come argomento ad una SUBROUTINE

(11)

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

Il Fortran dispone di una libreria di function intrinsiche per le piu’ comuni funzioni

matematiche e/o di utilita

Y = SQRT(X)

Y = ABS(X)

Y = TAN(X)

Y = SIN(X)

Y = COS(x)

Y = LOG(X)

Y = LOG10(X)

Y = EXP(X)

Y = MAX(A1, A2, A3, …)

Y = MIN(A1, A2, A3, …)

Y = MOD(A, P)

Y = INT(X)

E tante altre…

Semplice programma per il calcolo di 11 valori di sin(x) nell’intervallo [0,3.14]

Funzioni intrinsiche

Marco Lapegna –

Laboratorio di Programmazione 15. Introduzione al Fortran

R. Stallman

Il logo della Free Software Foundation

Un po’ di storia (15)

Richard Stallman (1953)

Americano, si laurea in Fisica ad Harvard nel 1974 e’ il principale esponente del movimento per il software libero, nato alla fine degli anni ’70 a seguito delle leggi americane sul copyright

Il software libero e’ un software distribuito con una licenza che ne permette la distribuzione, lo studio e la modifica da parte di altri (licenza GPL)

Fonda la Free Software Foundation per contrastare ogni forma di proprieta’ sul software e sviluppare nuovo software libero.

Nel 1983 inizia il progetto GNU, una versione di Unix con licenza GPL. Linus Torval utilizzera’ nel 1990 il sistema GNU come base del s.o. Linux

Ha ricevuto numerosi premi, lauree honoris causa e cattedre onorarie

Riferimenti

Documenti correlati

Vi sono 3 paradigmi di programmazione principali: Imperativo, Logico e Funzionale (Logico e funzionale sono anche visti come molto simili tra loro, e vengono anche

Nel comando WRITE può essere utilizzata al posto di una variabile direttamente un'espressione numerica con il vantaggio di non dover definire una nuova variabile per contenere

I Si può anche specificare una binding label (di default è la versione lower-case del codice Fortran),

Marco Lapegna Laboratorio di Programmazione 15 – Linguaggio Fortran.. LABORATORIO DI PROGRAMMAZIONE Corso di laurea

1978 Fortran 77, standard ANSI ANSI X.39-1978, che introduce costrutti per la programmazione strutturata.. 1991 Fortran 90, standard ISO 1539:1991, che introduce ulteriori

Basic Fortran, Paolo Bison, FI08, 2008-09-30 –

Basic Fortran (cont.), Paolo Bison, FI08, 2008-09-29 –

maggiore di (greater