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]

  1. \chapter{Il fortran 95}
  2. Il linguaggio di programmazione usato per implementare gli algoritmi è stato il FORTRAN, una
  3. ``minor revision''\footnote{non ho mai capito come si traduca veramente in italiano la parola
  4. revision -- ogni suggerimento è bene accetto} del FORTRAN 90. \\
  5. Rispetto all versioni precedenti ci sono delle interessanti novità, per cui se state pensando
  6. ``Oddio, il FORTRAN nel 2009, non ci posso credere'' prima leggete il seguito\footnote{Ebbene sì,
  7. è quello che ho pensato io, ma poi mi sono resoconto che il linguaggio aveva fatto dei progressi
  8. dagli anni sessanta a questa parte}; è l'elenco delle cose che non mi aspettavo
  9. \begin{enumerate}[(a)]
  10. \item Allocazione dinamica della memoria;
  11. \item Creazione di tipi astratti e overloading degli operatori;
  12. \item Programmazione ad oggetti e polimorfismo (solo Fortran 2003/2008);
  13. \end{enumerate}
  14.  
  15. In ogni caso, in queste note includerò alcune righe su come si scrivono le prime righe di codice
  16. in fortran. In codice Fortran saranno infatti riportati tutti gli esempi nella parte di esercitazione.
  17.  
  18. \section{La sintassi}
  19. \subsection{Hello World!}
  20. Per una convenzione che di cui non so l'origine non è posibbile cominciare da qualcosa di diverso del
  21. programma Hello World! Noi non saremo da meno. Cominceremo a guardare il codice e a commentarlo
  22. passo passo..
  23.  
  24. \begin{lstlisting}[frame=tb,caption=Hello World,label=lst:helloworld]
  25. PROGRAM helloworld
  26. IMPLICIT NONE
  27. WRITE(*,*) 'Hello World'
  28. END PROGRAM
  29. \end{lstlisting}
  30.  
  31. Tutte le righe precedute da \lstinline-!- sono dei commenti e quindi vengono scartate
  32. dal compilatore. Ad esempio '\lstinline-a = 1 ! Inizializzazione-' è equivalente a
  33. '\lstinline-a = 1-'.
  34.  
  35. L'istruzione \lstinline-PROGRAM helloworld- spiega al compilatore che questo è l'inizio del
  36. nostro programma e che si chiamerà helloworld. Si aspetta di trovare alla fine un
  37. \lstinline-END PROGRAM- che noi abbiamo prontamente inserito.
  38.  
  39. L'istruzione \lstinline-IMPLICIT NONE- serve invece a disattivare delle convenzione che si
  40. usavano nelle prime versione del fortran (e che esistono ancora per retrocompatibilità)
  41. che stabiliscono che le variabili \lstinline-i,j,k- sono di tipo intero, mentre ad esempio
  42. \lstinline-x,y,z- sono reali. Questo non è desiderabile in un linguaggio di programmazione
  43. moderno in cui ci si aspetta di scrivere del codice comprensibile.
  44.  
  45. Infine l'istruzione \lstinline-WRITE(*,*)- scrive sull stdout\footnote{che, nelle maggior parte
  46. dei casi, coincide con il monitor} tutti gli argomenti che gli si passano dopo. \`E possibile
  47. controllare la formattazione di quello che viene stampato ma, come è simboleggiato dagli asterischi,
  48. per ora non ce ne stiamo preoccupando.
  49.  
  50. \subsection{La struttura}
  51. Un programma in FORTRAN ha una struttura prefissata:
  52. \begin{lstlisting}[label=lst:fotranstruct,frame=tb]
  53. PROGRAM nomeprogramma
  54. IMPLICIT NONE
  55. ! Specificazioni: in questa parte si trova la dichiarazione
  56. ! delle variabili e dei nuovi tipi
  57.  
  58. ! Parte di esecuzione: qui troviamo il codice vero e proprio che
  59. ! viene eseguito
  60.  
  61. ! Subroutine: qui troviamo la definizione dei sottoprogrammi che
  62. ! possono venire chiamati dalla parte di esecuzione
  63. END PROGRAM
  64. \end{lstlisting}
  65. \subsection{I tipi}
  66. Come il C e tutti i linguaggi che vantano una certa storia il FORTRAN è un linguaggio tipato,
  67. ovvero ogni variabile ha un tipo (ad esempio intero) e non gli si possono assegnare valori
  68. di tipi differenti. \\
  69. Si possono aggiungere delle parole chiave alle dichiarazioni di tipi, più precisamente
  70. \begin{itemize}
  71. \item \lstinline-PARAMETER-: questa indica che la variabile non verrà modificata, è semplicemente
  72. un parametro per il programma.
  73. \end{itemize}
  74. I tipi principali presenti in Fortran sono
  75. \begin{itemize}
  76. \item \textbf{Interi}: Sono denotati dalla parola chiave \lstinline-INTEGER- e sono appunto numeri
  77. interi. Generalemente occupano $4$ byte.
  78. \item \textbf{Reali}: Numeri reali, che vengono memorizzati come floating point. La parola chiave
  79. è \lstinline-REAL- e occupano generalmente $4$ byte. Per i nostri scopi questi sono pochi, e quindi
  80. useremo in generale il seguente trucchetto:
  81. \begin{lstlisting}[frame=tb]
  82. INTEGER, PARAMETER :: db = KIND(0.D0)
  83. REAL(dp) :: real_var
  84. \end{lstlisting}
  85.  
  86. \end{itemize}
  87.