diff --git a/chap/Fortran.tex b/chap/Fortran.tex index db17dd0..7463e8a 100644 --- a/chap/Fortran.tex +++ b/chap/Fortran.tex @@ -175,9 +175,10 @@ XXX\index{XXX} Pour faire simple, on accède à chaque unité de donnée l'une après l'autre, comme quand on déroule une bande 6250bpi. Ces unités peuvent être (restons simple pour commencer) des lignes entières de texte. -Dans l'ancien temps\footnote{F77 rulz the world}, le format de ces -lignes devait être précisement structure, avec des largeurs de champs -fixés. +Dans l'ancien temps\footnote{F66 rulz the world} des cartes +à trous, le format de ces +lignes devait être précisement structurées, avec des largeurs de champs +dans la ligne fixés. % -------------------------------------------------------- @@ -186,7 +187,51 @@ fixés. XXX\index{XXX} C'est pas pareil : d'abord les enregistrements sont tous de la même -taille +taille. Ensuite, on y accède par son rang, son numéro d'ordre dans le +fichier. Dès que j'ai fini de planter les deux arbres en attente, +je vous propose un exemple simple et aussi artificiel que les +autres exemples de ce ouvrage. + +% -------------------------------------------------------- + +\section{Read et Write} + +Ces deux opérations (la lecture et l'écriture) sont contrôlables +par plusieurs choses~: les paramètres à l'ouverture, +du fichier, à XXX\index{XXX}, +et surtout les chaines de format. +Bienvenue dans le monde du légendaire champ "Hollerith". + +\subsection{Les chaines de format} + +% +% attention, il y a un hack pour l'affichage du mot "format" ! +% Attention, dans "{\small{\textsc{format}}}", les accolades +% exterieures sont indispensables. Affaire à suivre... +% +La chaine de {\small{\textsc{format}}} contrôle la façon dont les +données (nombres, textes ou booleans) +seront présentées à l'affiche ou à l'impression. +Une bonne connaissance, et une longue pratique des chaines de +{\small{\textsc{format}}} est +indispendable pour arriver à l'harmonie ultime bien que rigoureuse, +de vos interminables listings de chiffres abscons. +Nous verrons ensuite comment les utiliser pour faire de la saisie +presque (mais pas complètement) utilisable en milieu +\textsl{enduser}\index{enduser}. + +Il y a deux manières de les utiliser~: en ligne de l'instruction +d'écriture/lecture, ou séparément en tant que chaine de caractères. +Pour la clarté de lecture, c'est la seconde que je vais utiliser. + +% +% +% +% INSERT BIG "TODO" HERE. +% +% +\lstinputlisting{code/fortran/printty.f90} + % -------------------------------------------------------- @@ -216,7 +261,7 @@ end module Rien de bien compliqué~: Un module peut être vu comme une boite qui contient (\texttt{contains}) -des procédures (\texttt{function} ou \texttt{subroutine}, +des procédures (\texttt{function} ou \texttt{subroutine}), et qui sera utilisé avec ce genre de petit programme~: \begin{lstlisting} @@ -228,9 +273,17 @@ program t end program \end{lstlisting} +La première ligne, \texttt{use dummy}, permet d'accéder aux fonctions disponibles +dans le module dummy. +Elle doit être suivie d'un \texttt{implicit none}, pour une raison à éclaircir. +Et ensuite nous pouvons appeler notre procédure. + +Mais les modules permettent de faire bien d'autre choses. + % -------------------------------------------------------- \section{Random et Aléa} +Tentative de sranding faite à la rache. La dernière ligne va vous étonner. \begin{lstlisting} @@ -246,15 +299,22 @@ La dernière ligne va vous étonner. dummy = rand() \end{lstlisting} +Mais il y a d'autres manières plus rigoureuses d'utiliser les nombres +pseudo-aléàtoires avec le fortan moderne. + % -------------------------------------------------------- % new Thu 24 Nov 2022 02:27:05 AM CET \section{Options de gfortran} \index{gfortran} -Comme d'habitude avec gcc\footnote{The Gnu Compiler Collection}, les +Comme d'habitude avec gcc\footnote{Giant Complicated Compilords}, les options sont innombrables. J'ai essayé d'en dégager les plus importantes, mais ce ne sont probablement pas les seules. +Pour commencer, la plus obligatoire de toutes ces options est sans contexte +le protecteur de base \texttt{-Wall} qui vous protégera de nombreux +maléfices. + % -------------------------------------------------------- \section{Images} @@ -339,7 +399,7 @@ immédiatement garnir de données pertinentes~: \end{verbatim} Une fois en possession de ces données conceptuelles, que l'on peut -aisément voire comme un cheminement, nous allons demander +aisément voir comme un cheminement, nous allons demander au crayon de se promener sur notre feuille virtuelle en suivant ce chemin, et enfin de s'arreter de dessiner~: