wikipaom2016:lab4
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
| wikipaom2016:lab4 [2016/03/31 19:01] – 216830 | wikipaom2016:lab4 [2016/05/28 19:38] (versione attuale) – [Programma visto a lezione] ebertocchi | ||
|---|---|---|---|
| Linea 1: | Linea 1: | ||
| + | [[http:// | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ====== LABORATORIO 4: INTRO AL FORTRAN ====== | ||
| + | ===== Cos’è il Fortran? ===== | ||
| + | Il FORTRAN è un linguaggio di programmazione standardizzato, | ||
| + | ===== Introduzione al linguaggio Fortran 77 ===== | ||
| + | Per scrivere il programma abbiamo bisogno di un editor di testo, ad es. ' | ||
| + | * Esempio per Linux:\\ '' | ||
| + | * Esempio per Windows:\\ '' | ||
| + | Il comando di compilazione ed esecuzione del programma, uniti dal comando &&, possono essere scritti nella stessa riga del terminale. Inoltre, si possono introdurre altri due comandi: < e >. Il primo permette di inondare il programma con i valori di ingresso contenuti nel file testo, preesistente nello stesso direttorio dove è collocato il programma, chiamato, ad es., ' | ||
| + | * Esempio per Linux:\\ '' | ||
| + | Per compilare il programma vi sono delle convenzioni da conoscere: | ||
| + | * Vengono utilizzati solo i primi 72 caratteri di ogni riga, ciò significa che tutti i caratteri dal 73° in poi saranno ignorati e, pertanto, non eseguiti. | ||
| + | * Non vengono considerati gli spazi. | ||
| + | * Non vi è alcuna distinzione tra lettere maiuscole e minuscole. | ||
| + | * Qualsiasi istruzione (riga) viene chiusa andando a capo. | ||
| + | * Dalla 1° alla 5° colonna abbiamo spazi riservati per l' | ||
| + | * La 1° colonna è riservata all' | ||
| + | * La 6° è riservata ad un qualsiasi carattere, ad esclusione dello spazio e dello zero, il quale indica che sulla riga c'è la continuazione dell' | ||
| + | * Dalla 7° alla 72° colonna vi è l' | ||
| + | |||
| + | ===== Struttura principale di un programma ===== | ||
| + | Un programma inizia sempre con la dicitura //program nomeprogramma// | ||
| + | Il programma è suddiviso in due parti: dichiarazioni e istruzioni. Dopo l’istruzione //end// del programma, possono seguire dei sottoprogrammi chiamati SUBROUTINE o FUNCTION. Questi possono essere richiamati nel programma tramite l’istruzione | ||
| + | //call nomesubroutine_o_nomefunction// | ||
| + | ===== Dichiarazioni ===== | ||
| + | ==== Variabili ==== | ||
| + | In Fortran 77 ci sono due metodi per dichiarare le variabili: un metodo implicito ed uno esplicito. Il metodo di default è quello implicito cioè se una variabile non viene dichiarata esplicitamente verrà allocata in modo automatico: in particolare tutte le variabili, che vengono chiamate con un nome il quale comincia con le lettere //i, j, k, l, m, n//, saranno allocate come variabili intere, tutte le altre come variabili reali. | ||
| + | La dichiarazione esplicita delle variabili non è obbligatoria, | ||
| + | |||
| + | * Esempio di dichiarazioni esplicite: | ||
| + | |||
| + | * Esempio di dichiarazioni implicite: | ||
| + | |||
| + | ==== Costanti ==== | ||
| + | Le costanti si definiscono con il comando // | ||
| + | * Esempio:\\ '' | ||
| + | * Esempio, sfruttando la dichiarazione implicita: | ||
| + | |||
| + | ==== Variabili strutturate o Array (Matrici/ | ||
| + | Un array si dichiara con il comando // | ||
| + | * Esempio di array monodimensionale: | ||
| + | * Esempio di array bidimensionale: | ||
| + | |||
| + | ===== Istruzioni ===== | ||
| + | Le istruzioni sono dei comandi che eseguono delle operazioni definite. Un elenco dettagliato di questi comandi è visibile sul file “Tutorial Fortran 77 Stanford”. | ||
| + | |||
| + | ==== Programma visto a lezione ==== | ||
| + | < | ||
| + | C234567 | ||
| + | PROGRAM POCCIAMEMORIA | ||
| + | IMPLICIT NONE | ||
| + | INTEGER NCELLE,I | ||
| + | PARAMETER (NCELLE=10) | ||
| + | REAL VEC | ||
| + | DIMENSION VEC(NCELLE) | ||
| + | |||
| + | I = 4 | ||
| + | |||
| + | CALL CLEAR( NCELLE , 1 , VEC ) | ||
| + | |||
| + | c chiedo all' | ||
| + | READ(*,*) I | ||
| + | 101 IF ( I .GT. 0 ) THEN | ||
| + | | ||
| + | | ||
| + | GOTO 101 | ||
| + | ELSE IF ( I .LT. 0 ) THEN | ||
| + | | ||
| + | | ||
| + | GOTO 101 | ||
| + | ELSE | ||
| + | | ||
| + | ENDIF | ||
| + | |||
| + | C234567 | ||
| + | c DO 10 I=1, | ||
| + | C WRITE(*,*) VEC(I) | ||
| + | C 10 CONTINUE | ||
| + | | ||
| + | WRITE(*,*) (VEC(I), | ||
| + | |||
| + | STOP | ||
| + | END | ||
| + | |||
| + | C====================================================================== | ||
| + | C SOTTOPROGRAMMA PER L' | ||
| + | C====================================================================== | ||
| + | C | ||
| + | C | ||
| + | C | ||
| + | SUBROUTINE CLEAR( | ||
| + | c | ||
| + | c | ||
| + | c K2, numero di colonne della matrice | ||
| + | c | ||
| + | c | ||
| + | c la subroutine si può utilizzare su vettori trattandoli come equivalenti | ||
| + | c | ||
| + | |||
| + | DIMENSION A(K1,K2) | ||
| + | |||
| + | DO 10,I10=1,K1 | ||
| + | DO 20,I20=1,K2 | ||
| + | A(I10, | ||
| + | 20 CONTINUE | ||
| + | 10 CONTINUE | ||
| + | |||
| + | RETURN | ||
| + | END | ||
| + | </ | ||
| + | |||
| + | gfortran primipassi.for | ||
| + | | ||
| + | ~~DISCUSSION~~ | ||
