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 21:58] – 216830 | wikipaom2016:lab4 [2016/05/28 17: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~~ |
wikipaom2016/lab4.txt · Ultima modifica: 2016/05/28 17:38 da ebertocchi