Compare commits
No commits in common. "0db76fef58457a156ac777585d1b12c934587e5e" and "6c2d6476b844a5ed256f8ea6ade6ec63fd9e844c" have entirely different histories.
0db76fef58
...
6c2d6476b8
@ -19,7 +19,6 @@ Dans un premier temps, je vais les lister sommairement, et
|
|||||||
ensuite j'aurais une idée sur lesquels seront les plus funs
|
ensuite j'aurais une idée sur lesquels seront les plus funs
|
||||||
à explorer.
|
à explorer.
|
||||||
|
|
||||||
Dartmouth Time Sharing System
|
|
||||||
|
|
||||||
% -------------------------------------------
|
% -------------------------------------------
|
||||||
\section{Bywater} \index{bywater}
|
\section{Bywater} \index{bywater}
|
||||||
|
198
chap/Fortran.tex
198
chap/Fortran.tex
@ -1,19 +1,13 @@
|
|||||||
\chapter{Fortran} \label{chap:Fortran} \index{Fortran}
|
\chapter{Fortran} \label{chap:Fortran} \index{Fortran}
|
||||||
|
|
||||||
\begin{quote}
|
|
||||||
Fortran (\textsc{FORmula TRANslator}) est, avec le Cobol\index{Cobol},
|
Fortran (\textsc{FORmula TRANslator}) est, avec le Cobol\index{Cobol},
|
||||||
un des premiers langages évolués. Il a été conçu après la seconde
|
un des premiers langages évolués. Il a été conçu après la seconde
|
||||||
guerre mondiale, en 1954, par
|
guerre mondiale, en 1954, par
|
||||||
John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM},
|
John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM},
|
||||||
\end{quote}
|
|
||||||
|
|
||||||
Pourquoi j'ai redécouvert un langage de ma jeunesse, et pourquoi
|
|
||||||
vous devriez vous aussi y jeter un regard attentif. Il y a plein
|
|
||||||
de bonnes choses, la septième va vous tenir compagnie.
|
|
||||||
|
|
||||||
% ========================================
|
% ========================================
|
||||||
|
|
||||||
\section{FORTRAN77}
|
\section{F77}
|
||||||
|
|
||||||
Dernière version à exiger le format '80 colonnes' des cartes perforées,
|
Dernière version à exiger le format '80 colonnes' des cartes perforées,
|
||||||
cette version est aussi (aux yeux de vieux dinos) la plus pure,
|
cette version est aussi (aux yeux de vieux dinos) la plus pure,
|
||||||
@ -21,10 +15,6 @@ cette version est aussi (aux yeux de vieux dinos) la plus pure,
|
|||||||
mythique \textsl{comefrom}\footnote{Keyword: Datamatic}.
|
mythique \textsl{comefrom}\footnote{Keyword: Datamatic}.
|
||||||
Nom officiel : \texttt{ANSI X3.9-1978}.
|
Nom officiel : \texttt{ANSI X3.9-1978}.
|
||||||
|
|
||||||
L'incarnation \texttt{g77}\index{g77} n'existe plus, meis peut être
|
|
||||||
à-priori émulable en jouant avec les options de \texttt{gfortran}
|
|
||||||
et un brin de shell.
|
|
||||||
|
|
||||||
% ============****************===============
|
% ============****************===============
|
||||||
|
|
||||||
% https://linuxfr.org/users/vmagnin/journaux/taptempo-fortran
|
% https://linuxfr.org/users/vmagnin/journaux/taptempo-fortran
|
||||||
@ -43,7 +33,7 @@ Il faut l'enregister dans un fichier nommé \texttt{hello.f90}
|
|||||||
pour que le compilateur puisse admettre que c'est écrit
|
pour que le compilateur puisse admettre que c'est écrit
|
||||||
en \textsl{free form format}.
|
en \textsl{free form format}.
|
||||||
|
|
||||||
\begin{lstlisting}
|
\begin{verbatim}
|
||||||
$ cat hello.f90
|
$ cat hello.f90
|
||||||
program hello
|
program hello
|
||||||
implicit none
|
implicit none
|
||||||
@ -52,7 +42,7 @@ end
|
|||||||
$ gfortran -Wall hello.f90 -o hello && ./hello
|
$ gfortran -Wall hello.f90 -o hello && ./hello
|
||||||
hello world
|
hello world
|
||||||
$
|
$
|
||||||
\end{lstlisting}
|
\end{verbatim}
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
%
|
%
|
||||||
@ -60,13 +50,12 @@ $
|
|||||||
%
|
%
|
||||||
\section{Args \& Env}
|
\section{Args \& Env}
|
||||||
|
|
||||||
Un fort beau programme que ce \textsc{helloworld}, mais il est un peu
|
Un fort beau programme, mais il est un peu fermé au monde extérieur.
|
||||||
fermé au monde extérieur.
|
|
||||||
Quand on lance un programme, il peut recevoir des instructions
|
Quand on lance un programme, il peut recevoir des instructions
|
||||||
par (mais pas que) deux canaux : les arguments de la ligne de commande
|
par (mais pas que) deux canaux : les arguments de la ligne de commande
|
||||||
et les variables d'environnement.
|
et les variables d'environnement.
|
||||||
|
|
||||||
\begin{lstlisting}
|
\begin{verbatim}
|
||||||
program rum_me
|
program rum_me
|
||||||
implicit none
|
implicit none
|
||||||
integer :: nbarg, foo
|
integer :: nbarg, foo
|
||||||
@ -80,18 +69,18 @@ program rum_me
|
|||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
\end{lstlisting}
|
\end{verbatim}
|
||||||
|
|
||||||
Si un des arguments doir être vu comme une valeur numérique,
|
Si un des arguments doir être vu comme une valeur numérique,
|
||||||
il faut convertir la chaine de caractères avant usage.
|
il faut la convertir avant usage. Exemple pour un nombre
|
||||||
Exemple pour un nombre flottant~:
|
flottant~:
|
||||||
|
|
||||||
\begin{lstlisting}
|
\begin{verbatim}
|
||||||
character(len=89) :: arg
|
character(len=89) :: arg
|
||||||
real :: cx
|
real :: cx
|
||||||
call getarg(2, string)
|
call getarg(2, string)
|
||||||
read (string, *) cx
|
read (string, *) cx
|
||||||
\end{lstlisting}
|
\end{verbatim}
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
@ -102,32 +91,7 @@ Rank, Size, \textsc{allocatable}, toussa\dots
|
|||||||
Amies du C, soyez d'entrée prévenues, en Fortran, l'indice
|
Amies du C, soyez d'entrée prévenues, en Fortran, l'indice
|
||||||
par défaut du premier élément d'un tableau est \textbf{1},
|
par défaut du premier élément d'un tableau est \textbf{1},
|
||||||
mais cette valeur peut être modifiée à la déclaration
|
mais cette valeur peut être modifiée à la déclaration
|
||||||
du tableau. Ce qui permet des \textsl{of-by-anynumber}
|
du tableau.
|
||||||
du plus bel effet.
|
|
||||||
|
|
||||||
% --------------------------------------------------------
|
|
||||||
% new 29 decembre 2022
|
|
||||||
|
|
||||||
\section{Nombres complexes}
|
|
||||||
|
|
||||||
Partie imaginaire : \texttt{ipart = aimag(cmplx)}.
|
|
||||||
|
|
||||||
% --------------------------------------------------------
|
|
||||||
% nouveau 4 mars 2023
|
|
||||||
|
|
||||||
\section {Les structures}\index{type}
|
|
||||||
|
|
||||||
Une « structure », c'est comme une petite boite dans laquelle on peut
|
|
||||||
mettre des variables de différentes natures.
|
|
||||||
|
|
||||||
\begin{lstlisting}
|
|
||||||
type t_pixrgb
|
|
||||||
integer :: r, g, b
|
|
||||||
integer :: alpha = 0
|
|
||||||
end type
|
|
||||||
\end{lstlisting}
|
|
||||||
|
|
||||||
Nous verrons plus loin l'importance de cette notion.
|
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
@ -149,15 +113,10 @@ Il semble qu'il y ait deux concepts orthogonaux :
|
|||||||
|
|
||||||
XXX\index{XXX}
|
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.
|
|
||||||
|
|
||||||
\subsection{Indexé} \index{index}
|
\subsection{Indexé} \index{index}
|
||||||
|
|
||||||
XXX\index{XXX}
|
XXX\index{XXX}
|
||||||
|
|
||||||
C'est pas pareil.
|
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
\section{Modules}
|
\section{Modules}
|
||||||
@ -171,39 +130,12 @@ Il serait bon de voir un exemple du monde réel. Ou juste un
|
|||||||
exemple basique. Mais avec des explications. Parce que ce n'est pas
|
exemple basique. Mais avec des explications. Parce que ce n'est pas
|
||||||
vraiment évident. Mais c'est un concept balaize.
|
vraiment évident. Mais c'est un concept balaize.
|
||||||
|
|
||||||
Nous allons donc créer un module qui ne fait quasiment rien, ce qui
|
|
||||||
limitera le nombre de pannes possibles dans la suite des opérations.
|
|
||||||
|
|
||||||
\begin{lstlisting}
|
|
||||||
module dummy
|
|
||||||
implicit none
|
|
||||||
contains
|
|
||||||
subroutine print_dummy
|
|
||||||
print *, 'this is the dummy subroutine'
|
|
||||||
end subroutine
|
|
||||||
end module
|
|
||||||
\end{lstlisting}
|
|
||||||
|
|
||||||
Rien de bien compliqué~:
|
|
||||||
Un module peut être vu comme une boite qui contient (\texttt{contains})
|
|
||||||
des procédures (\texttt{function} ou \texttt{subroutine},
|
|
||||||
et qui sera utilisé avec ce genre de petit programme~:
|
|
||||||
|
|
||||||
\begin{lstlisting}
|
|
||||||
program t
|
|
||||||
use dummy
|
|
||||||
implicit none
|
|
||||||
print *, '=== programme de test ==='
|
|
||||||
call print_dummy
|
|
||||||
end program
|
|
||||||
\end{lstlisting}
|
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
\section{Random et Aléa}
|
\section{Random et Aléa}
|
||||||
|
|
||||||
La dernière ligne va vous étonner.
|
La dernière ligne va vous étonner.
|
||||||
|
|
||||||
\begin{lstlisting}
|
\begin{verbatim}
|
||||||
integer, dimension(3) :: tarray
|
integer, dimension(3) :: tarray
|
||||||
integer :: t3
|
integer :: t3
|
||||||
real :: dummy
|
real :: dummy
|
||||||
@ -214,7 +146,7 @@ La dernière ligne va vous étonner.
|
|||||||
! after initializing the random generator engine,
|
! after initializing the random generator engine,
|
||||||
! you MUST use it for initializing the initializer
|
! you MUST use it for initializing the initializer
|
||||||
dummy = rand()
|
dummy = rand()
|
||||||
\end{lstlisting}
|
\end{verbatim}
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
% new Thu 24 Nov 2022 02:27:05 AM CET
|
% new Thu 24 Nov 2022 02:27:05 AM CET
|
||||||
@ -225,22 +157,27 @@ Comme d'habitude avec gcc\footnote{The Gnu Compiler Collection}, les
|
|||||||
options sont innombrables. J'ai essayé d'en dégager les plus importantes,
|
options sont innombrables. J'ai essayé d'en dégager les plus importantes,
|
||||||
mais ce ne sont probablement pas les seules.
|
mais ce ne sont probablement pas les seules.
|
||||||
|
|
||||||
|
% --------------------------------------------------------
|
||||||
|
% new 29 decembre 2022
|
||||||
|
|
||||||
|
\section{Nombres complexes}
|
||||||
|
|
||||||
|
Partie imaginaire : \texttt{ipart = aimag(cmplx)}.
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
\section{Images}
|
\section{Images}
|
||||||
|
|
||||||
La bibliothèque \textbf{Plplot} semble être un bon choix pour commencer,
|
La bibliothèque \textbf{Plplot} semble être un bon choix pour commencer,
|
||||||
mais il existe bien d'autres options.
|
mais il existe bien d'autres options.
|
||||||
Par exemple \textbf{g2} (vue en page \pageref{g2}) semble être utilisable
|
Par exemple \textbf{g2} (page \pageref{g2}) semble être utilisable
|
||||||
avec les vieux F77, et possiblement avec un Fortran moderne, il faut juste
|
avec les vieux F77, et possiblement avec un Fortran moderne, il faut juste
|
||||||
un peu de \textsc{rtfm}.
|
un peu de \textsc{rtfm}.
|
||||||
|
|
||||||
Nous allons donc commencer par Plplot, pour envisager ensuite les alternatives.
|
Nous allons donc commencer par Plplot, pour envisager ensuite les alternatives.
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
%
|
|
||||||
% $ dillo /usr/share/doc/plplot-doc/html/index.html &
|
|
||||||
%
|
|
||||||
\subsection{Plplot} \index{plplot} \label{ploplt}
|
\subsection{Plplot} \index{plplot} \label{ploplt}
|
||||||
|
|
||||||
Commençons directement par un EMC\footnote{Exemple Minimal Compilable}
|
Commençons directement par un EMC\footnote{Exemple Minimal Compilable}
|
||||||
@ -251,83 +188,29 @@ qui gèrent pour vous les valeurs « par défaut ».
|
|||||||
Voyez cette exemple comme un \textsl{boilerplate} simple
|
Voyez cette exemple comme un \textsl{boilerplate} simple
|
||||||
ou un \textsc{HelloWorld}~:
|
ou un \textsc{HelloWorld}~:
|
||||||
|
|
||||||
\lstinputlisting{code/fortran/plplotting.f90}
|
\begin{verbatim}
|
||||||
|
program dessine
|
||||||
|
use plplot
|
||||||
|
implicit none
|
||||||
|
call plinit ()
|
||||||
|
call plenv(-2.1, 2.1, -2.1, 2.1, 0, 0)
|
||||||
|
call plend
|
||||||
|
end program
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
Il ne se passe pas grand chose, sauf qu'on a une proposition de
|
Il ne se passe pas grand chose, sauf la proposition de choisir
|
||||||
choisir le type de sortie.
|
le type de sortie.
|
||||||
Dans la version que j'ai (XXX\index{XXX}), on a le choix entre
|
Dans la version que j'ai (XXX\index{XXX}), on a le choix entre
|
||||||
X-Window, PostScript mono ou couleur, Xfig, PNG, SVG, et bien
|
X-Window, PostScript mono ou couleur, Xfig, Null, UserMemory et SVG.
|
||||||
d'autres dont certains, pour moi, assez ésotériques.
|
C'est intriguant de ne pas avoir au moins \textbf{un} format
|
||||||
D'autre part, avec cette méthode, il semble impossible de
|
pixmap\index{pixmap}.
|
||||||
préciser la taille de l'image.
|
|
||||||
Mais la démonstration est faite.
|
|
||||||
|
|
||||||
Il faut quand même regarder de plus près la subroutine
|
Laissons cette question en suspens, et commençons à dessiner.
|
||||||
\texttt{plenv()} (\textsl{Set up standard window and draw box})
|
D'accord, mais dessiner quoi ?
|
||||||
qui initialise simplement un contexte graphique 2D somme toute
|
|
||||||
assez classique. Elle prend six paramètres. Les quatre premiers
|
|
||||||
sont les coordonnées flottantes de deux coins du papier,
|
|
||||||
le cinquième controle l'échelle des axes, et le dernier
|
|
||||||
controle le tracé des boites autour du graphique.
|
|
||||||
|
|
||||||
Nous avons les bases, commençons donc à dessiner.
|
|
||||||
|
|
||||||
Premièrement, nous allons chosir de démarrer automatiquement
|
|
||||||
dans une fenètre X11,
|
|
||||||
en gardant le reste de la configuration avec ses valeurs par défaut.
|
|
||||||
Pour cela, il suffit de rajouter \texttt{call plsdev('xwin')} juste avant
|
|
||||||
l'appel à \texttt{plinit}, il vous faudra utiliser la touche
|
|
||||||
\textsl{<enter>} pour sortir\footnote{Une de mes prochaines tâche sera
|
|
||||||
de regarder comment quitter avec le '\textbf{q}' canonique}.
|
|
||||||
|
|
||||||
Ensuite, pour mettre en évidence notre art,
|
|
||||||
nous allons choisir une couleur pour l'encre (qui est d'un
|
|
||||||
rouge du meilleur effet par défaut en mode "xwin"),
|
|
||||||
puis écrire quelques légendes canoniques, donc inutiles, .
|
|
||||||
|
|
||||||
\begin{verbatim}
|
|
||||||
call plcol0 (15) ! pure white
|
|
||||||
call pllab ("Fuzzfactor", "Yoyodines", "Some nice plots")
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
Il est maintenant temps de poser un premier trait de crayon numérique
|
|
||||||
sur notre feuille blanche numérique\footnote{Actuellement noire, mais
|
|
||||||
nous trouverons bien comment changer ça}.
|
|
||||||
La forme de ce tracé sera donnée par une suite de coordonnées
|
|
||||||
flottantes \textsl{x/y}
|
|
||||||
stockées dans deux tableaux parallèles que nous allons
|
|
||||||
immédiatement garnir de données pertinentes~:
|
|
||||||
|
|
||||||
\begin{verbatim}
|
|
||||||
integer, parameter :: lg = 500
|
|
||||||
real :: x(lg), y(lg)
|
|
||||||
real :: k
|
|
||||||
integer :: i
|
|
||||||
k = 0.1
|
|
||||||
do i = 1, lg
|
|
||||||
x(i) = k * sin(real(i)/3.0)
|
|
||||||
y(i) = k * cos(real(i)/5.0)
|
|
||||||
k = k * 1.006021
|
|
||||||
enddo
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
Une fois en possession de ces données conceptuelles, que l'on peut
|
|
||||||
aisément voire comme un cheminement, nous allons demander
|
|
||||||
au crayon de se promener sur notre feuille virtuelle en suivant
|
|
||||||
ce chemin~:
|
|
||||||
|
|
||||||
\begin{verbatim}
|
|
||||||
call plcol0 (12)
|
|
||||||
call plline (x, y)
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
Au passage, vous pouvez remarquer la magie du Fortran moderne~:
|
|
||||||
il n'est plus nécessaire de signifier la dimension des tableaux
|
|
||||||
lors de l'appel de la procédure.
|
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
\section{Questions en attente}
|
\section{Questions}
|
||||||
|
|
||||||
\index{XXX}
|
\index{XXX}
|
||||||
|
|
||||||
@ -337,7 +220,7 @@ lors de l'appel de la procédure.
|
|||||||
\item Est-il possible de causer à \texttt{libsndfile} ?
|
\item Est-il possible de causer à \texttt{libsndfile} ?
|
||||||
\item Comment caler une chaine à gauche avec un \textsc{format} ?
|
\item Comment caler une chaine à gauche avec un \textsc{format} ?
|
||||||
\item Is there a \texttt{-fortran} option for making comments with
|
\item Is there a \texttt{-fortran} option for making comments with
|
||||||
\texttt{boxes} + \texttt{figlet}\index{figlet} ?
|
\texttt{figlet}\index{figlet} ?
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
@ -345,7 +228,6 @@ lors de l'appel de la procédure.
|
|||||||
|
|
||||||
\textsl{<Pas de réponse>}
|
\textsl{<Pas de réponse>}
|
||||||
|
|
||||||
Voilà, c'est tout pour le moment\dots
|
|
||||||
|
|
||||||
|
|
||||||
% ========================================
|
% ========================================
|
||||||
|
@ -170,6 +170,7 @@ nous aurons toujours la même séquence en sortie.
|
|||||||
\subsection{Trucs à voir}
|
\subsection{Trucs à voir}
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
|
|
||||||
#declare VIRGINIA =
|
#declare VIRGINIA =
|
||||||
transform {
|
transform {
|
||||||
matrix < 1, 1, 0,
|
matrix < 1, 1, 0,
|
||||||
@ -183,12 +184,6 @@ transform {VIRGINIA}
|
|||||||
}
|
}
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
% ================================================
|
|
||||||
|
|
||||||
\section{Avec Fortran}
|
|
||||||
|
|
||||||
plplot
|
|
||||||
|
|
||||||
|
|
||||||
% ------------------------------------------------
|
% ------------------------------------------------
|
||||||
|
|
||||||
|
@ -107,12 +107,6 @@ préciser le coef de qualité ( qscale : 1 = le mieux / 3 = correcte )
|
|||||||
|
|
||||||
https://engineering.giphy.com/how-to-make-gifs-with-ffmpeg/ \index{gif89a}
|
https://engineering.giphy.com/how-to-make-gifs-with-ffmpeg/ \index{gif89a}
|
||||||
|
|
||||||
\begin{verbatim}
|
|
||||||
ffmpeg -ss 0:5:59.600 -to 0:6:11.150 -i Downloads/foo.mp4 tmp/tragic.gif
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
% -----------------------------------------------------------------
|
|
||||||
|
|
||||||
\subsection{Encoder un cloître}
|
\subsection{Encoder un cloître}
|
||||||
|
|
||||||
Là, nous sommes dans du \textsl{serious bizness}, puisque cette vidéo
|
Là, nous sommes dans du \textsl{serious bizness}, puisque cette vidéo
|
||||||
|
6
code/fortran/.gitignore
vendored
6
code/fortran/.gitignore
vendored
@ -1,6 +0,0 @@
|
|||||||
|
|
||||||
plplotting
|
|
||||||
dessiner
|
|
||||||
|
|
||||||
*.png
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
INCS = -I/usr/include/plplot -I/usr/lib/x86_64-linux-gnu/fortran/modules/plplot
|
|
||||||
|
|
||||||
plplotting: plplotting.f90 Makefile
|
|
||||||
gfortran -g $< $(INCS) -lplplotfortran -o $@
|
|
||||||
|
|
||||||
dessiner: dessiner.f90 Makefile
|
|
||||||
gfortran -g $< $(INCS) -lplplotfortran -o $@
|
|
@ -1,66 +0,0 @@
|
|||||||
program dessiner
|
|
||||||
use plplot
|
|
||||||
implicit none
|
|
||||||
|
|
||||||
integer :: i
|
|
||||||
real :: a, b, c, d
|
|
||||||
|
|
||||||
character(len=80) :: version
|
|
||||||
call plgver(version)
|
|
||||||
write (*,'(a,a)') 'plplot version: ', trim(version)
|
|
||||||
|
|
||||||
call plsdev('xwin')
|
|
||||||
call plinit ()
|
|
||||||
|
|
||||||
call plenv(-2.2, 2.2, -2.2, 2.2, 0, 1)
|
|
||||||
|
|
||||||
a = 0
|
|
||||||
b = 0
|
|
||||||
c = 0
|
|
||||||
d = 0
|
|
||||||
do i=1, 100
|
|
||||||
a = a + 0.01
|
|
||||||
b = b + 0.02
|
|
||||||
call dessin_1 (a, b, 12)
|
|
||||||
c = c + 0.03
|
|
||||||
d = d + 0.04
|
|
||||||
call dessin_1 (c, d, 13)
|
|
||||||
enddo
|
|
||||||
|
|
||||||
call plend
|
|
||||||
|
|
||||||
contains ! -----------------------------
|
|
||||||
!------------------------------------------------------
|
|
||||||
subroutine dessin_1 (sha, shb, color)
|
|
||||||
real, intent(in) :: sha, shb
|
|
||||||
integer, intent(in) :: color
|
|
||||||
|
|
||||||
integer, parameter :: lg = 2000
|
|
||||||
real :: x(lg), y(lg)
|
|
||||||
real :: k, amp
|
|
||||||
integer :: i
|
|
||||||
|
|
||||||
! print *, 'dessin 1'
|
|
||||||
amp = 2.0
|
|
||||||
do i = 1, lg
|
|
||||||
k = real(i)/real(lg) * 6.2832 * 4.0
|
|
||||||
x(i) = amp * sin((k+sha)*5)
|
|
||||||
y(i) = amp * cos((k+shb)*3)
|
|
||||||
enddo
|
|
||||||
! print *, k, x(i), y(i)
|
|
||||||
|
|
||||||
call plcol0 (15) ! pure white
|
|
||||||
call pllab ("Fuzzfactor", "Yoyodines", "Some nice plots from tTh")
|
|
||||||
call plcol0 (color)
|
|
||||||
call plline (x, y)
|
|
||||||
|
|
||||||
end subroutine
|
|
||||||
!------------------------------------------------------
|
|
||||||
subroutine dessin_2 ()
|
|
||||||
|
|
||||||
print *, 'dessin 2'
|
|
||||||
|
|
||||||
end subroutine
|
|
||||||
!------------------------------------------------------
|
|
||||||
|
|
||||||
end program
|
|
@ -1,17 +0,0 @@
|
|||||||
program plplotting
|
|
||||||
use plplot
|
|
||||||
implicit none
|
|
||||||
|
|
||||||
! Initializing the plotting package with a lot of
|
|
||||||
! default (and pertinent) values.
|
|
||||||
call plinit ()
|
|
||||||
|
|
||||||
! Sets up plotter environment for simple graphs
|
|
||||||
call plenv (-2.1, 2.1, -2.1, 2.1, 0, 0)
|
|
||||||
|
|
||||||
! Ends a plotting session, tidies up all the output
|
|
||||||
! files,switches interactive devices back into text
|
|
||||||
! mode and frees up any memory that was allocated.
|
|
||||||
call plend ()
|
|
||||||
|
|
||||||
end program
|
|
@ -5,7 +5,7 @@
|
|||||||
% Décembre, ça n'avance pas beaucoup...
|
% Décembre, ça n'avance pas beaucoup...
|
||||||
%
|
%
|
||||||
|
|
||||||
\usepackage[french]{babel}
|
\usepackage[francais]{babel}
|
||||||
\usepackage[utf8]{inputenc}
|
\usepackage[utf8]{inputenc}
|
||||||
\usepackage{xspace}
|
\usepackage{xspace}
|
||||||
\usepackage{makeidx}
|
\usepackage{makeidx}
|
||||||
@ -21,12 +21,12 @@
|
|||||||
\makeindex
|
\makeindex
|
||||||
|
|
||||||
\setlength \parindent {2em}
|
\setlength \parindent {2em}
|
||||||
\setlength \parskip {0.33em} % XXX
|
\setlength \parskip {0.3333333em} % XXX
|
||||||
|
|
||||||
%------ reglages des 'listings'
|
%------ reglages des 'listings'
|
||||||
\lstset{frame=single} % dessin d'un cadre autour du listing
|
\lstset{frame=single} % dessin d'un cadre autour du listing
|
||||||
\lstset{basicstyle=\ttfamily\small}
|
\lstset{basicstyle=\ttfamily\small}
|
||||||
\lstset{aboveskip=1.0em,belowskip=1.0em}
|
\lstset{aboveskip=1.2em,belowskip=1.2em}
|
||||||
|
|
||||||
\setcounter{tocdepth}{1}
|
\setcounter{tocdepth}{1}
|
||||||
\pagestyle{plain}
|
\pagestyle{plain}
|
||||||
@ -50,8 +50,7 @@
|
|||||||
% ==============================================================
|
% ==============================================================
|
||||||
\chapter{Introduction}
|
\chapter{Introduction}
|
||||||
|
|
||||||
Un nouveau nouvel ouvrage, en vrac.
|
Un nouveau nouvel ouvrage, en vrac, complètement coronavraqué.
|
||||||
|
|
||||||
Des notes informelles sur l'utilisation
|
Des notes informelles sur l'utilisation
|
||||||
d'un ordinateur moderne, vous allez en avoir vraiment beaucoup.
|
d'un ordinateur moderne, vous allez en avoir vraiment beaucoup.
|
||||||
Mais elles sont en vrac, et surtout, elles sont reprises
|
Mais elles sont en vrac, et surtout, elles sont reprises
|
||||||
@ -142,7 +141,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
|
|||||||
% \input{chap/astronomie}
|
% \input{chap/astronomie}
|
||||||
% \input{chap/MINITEL}
|
% \input{chap/MINITEL}
|
||||||
% \input{chap/Raspberry}
|
% \input{chap/Raspberry}
|
||||||
% \input{chap/Fedora}
|
\input{chap/Fedora}
|
||||||
% \input{chap/IPv6}
|
% \input{chap/IPv6}
|
||||||
\input{chap/threads}
|
\input{chap/threads}
|
||||||
\input{chap/IPC}
|
\input{chap/IPC}
|
||||||
|
Loading…
Reference in New Issue
Block a user