viewgit/index.php:465 Only variables should be passed by reference [2048]
viewgit/index.php:466 Non-static method GeSHi::get_language_name_from_extension() should not be called statically [2048]
\chapter{Il fortran 95} Il linguaggio di programmazione usato per implementare gli algoritmi è stato il FORTRAN, una revision -- ogni suggerimento è bene accetto} del FORTRAN 90. \\ Rispetto all versioni precedenti ci sono delle interessanti novità, per cui se state pensando è quello che ho pensato io, ma poi mi sono resoconto che il linguaggio aveva fatto dei progressi dagli anni sessanta a questa parte}; è l'elenco delle cose che non mi aspettavo \begin{enumerate}[(a)] \item Allocazione dinamica della memoria; \item Creazione di tipi astratti e overloading degli operatori; \item Programmazione ad oggetti e polimorfismo (solo Fortran 2003/2008); \end{enumerate} In ogni caso, in queste note includerò alcune righe su come si scrivono le prime righe di codice in fortran. In codice Fortran saranno infatti riportati tutti gli esempi nella parte di esercitazione. Per una convenzione che di cui non so l'origine non è posibbile cominciare da qualcosa di diverso del programma Hello World! Noi non saremo da meno. Cominceremo a guardare il codice e a commentarlo passo passo.. \begin{lstlisting}[frame=tb,caption=Hello World,label=lst:helloworld] PROGRAM helloworld IMPLICIT NONE WRITE(*,*) 'Hello World' END PROGRAM \end{lstlisting} Tutte le righe precedute da \lstinline-!- sono dei commenti e quindi vengono scartate dal compilatore. Ad esempio '\lstinline-a = 1 ! Inizializzazione-' è equivalente a '\lstinline-a = 1-'. L'istruzione \lstinline-PROGRAM helloworld- spiega al compilatore che questo è l'inizio del nostro programma e che si chiamerà helloworld. Si aspetta di trovare alla fine un \lstinline-END PROGRAM- che noi abbiamo prontamente inserito. L'istruzione \lstinline-IMPLICIT NONE- serve invece a disattivare delle convenzione che si usavano nelle prime versione del fortran (e che esistono ancora per retrocompatibilità) che stabiliscono che le variabili \lstinline-i,j,k- sono di tipo intero, mentre ad esempio \lstinline-x,y,z- sono reali. Questo non è desiderabile in un linguaggio di programmazione moderno in cui ci si aspetta di scrivere del codice comprensibile. dei casi, coincide con il monitor} tutti gli argomenti che gli si passano dopo. \`E possibile controllare la formattazione di quello che viene stampato ma, come è simboleggiato dagli asterischi, per ora non ce ne stiamo preoccupando. Un programma in FORTRAN ha una struttura prefissata: \begin{lstlisting}[label=lst:fotranstruct,frame=tb] PROGRAM nomeprogramma IMPLICIT NONE ! Specificazioni: in questa parte si trova la dichiarazione ! delle variabili e dei nuovi tipi ! Parte di esecuzione: qui troviamo il codice vero e proprio che ! viene eseguito ! Subroutine: qui troviamo la definizione dei sottoprogrammi che ! possono venire chiamati dalla parte di esecuzione END PROGRAM \end{lstlisting} Come il C e tutti i linguaggi che vantano una certa storia il FORTRAN è un linguaggio tipato, ovvero ogni variabile ha un tipo (ad esempio intero) e non gli si possono assegnare valori di tipi differenti. \\ Si possono aggiungere delle parole chiave alle dichiarazioni di tipi, più precisamente \begin{itemize} un parametro per il programma. \end{itemize} I tipi principali presenti in Fortran sono \begin{itemize} interi. Generalemente occupano $4$ byte. è \lstinline-REAL- e occupano generalmente $4$ byte. Per i nostri scopi questi sono pochi, e quindi useremo in generale il seguente trucchetto: \begin{lstlisting}[frame=tb] INTEGER, PARAMETER :: db = KIND(0.D0) REAL(dp) :: real_var \end{lstlisting} \end{itemize}