bricolages...
This commit is contained in:
18
chap/C.tex
18
chap/C.tex
@@ -252,12 +252,12 @@ int fprintf(FILE *stream, const char *format, ...);
|
||||
Ce qu'on appelle un "filtre" est un logiciel destiné à transformer
|
||||
les données qui le traversent. Pour bien comprendre, le mieux,
|
||||
comme d'habitude, est un exemple. Il est un peu artificiel,
|
||||
il s'agit d'éliminer les lettres \textsc{o} et \textsc{p}.
|
||||
Le voici~:
|
||||
car il s'agit d'éliminer les lettres \textsc{o} et \textsc{p},
|
||||
sans raison valable. Le voici~:
|
||||
|
||||
\lstinputlisting[language=c]{code/no-op.c}
|
||||
\lstinputlisting[language=c]{code/C/no-op.c}
|
||||
|
||||
Démonstration~:
|
||||
Démonstration immédiate~:
|
||||
|
||||
\begin{verbatim}
|
||||
$ echo apopoz | ./no-op
|
||||
@@ -271,6 +271,16 @@ $ ./no-op < no-op.c | head -5
|
||||
$
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
Vous voulez un autre exemple ? En voici un, parfois utile pour des
|
||||
simulations de terminal de \textsl{h4ck3rZ}\footnote{texte vert ou
|
||||
orange sur fond noir de rigueur.} sur une ligne en boucle de
|
||||
courant à 300 Bauds, le tout pour un film que l'on souhaite classable
|
||||
en série Z.
|
||||
|
||||
\lstinputlisting[language=c]{code/C/slowprint.c}
|
||||
|
||||
\vspace{2em}
|
||||
Pour une explication plus détaillée sur les mécanismes
|
||||
utilisés et les usages possibles d'un tel filtre,
|
||||
il faut voir le concept de pipeline du shell en
|
||||
|
||||
@@ -224,9 +224,9 @@ D'accord, mais dessiner quoi ?
|
||||
\end{itemize}
|
||||
|
||||
% --------------------------------------------------------
|
||||
\section{Reponses}
|
||||
\section{Réponses}
|
||||
|
||||
\textsl{<none>}
|
||||
\textsl{<Pas de réponse>}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7,28 +7,42 @@ Quelques \textsl{oneliners} de bon aloi pour vous donner
|
||||
une idée du langage\dots
|
||||
|
||||
\begin{verbatim}
|
||||
cat { print $0 } or just 1
|
||||
grep pattern /pattern/
|
||||
head -n 5 NR <= 5
|
||||
cut -f1 { print $1 }
|
||||
tr a-z A-Z { print toupper($0) }
|
||||
sed 's/hi/ho/g' gsub(/hi/,"ho")
|
||||
wc -l END { print NR }
|
||||
cat { print $0 } or just 1
|
||||
grep pattern /pattern/
|
||||
head -n 5 NR <= 5
|
||||
cut -f1 { print $1 }
|
||||
tr a-z A-Z { print toupper($0) }
|
||||
sed 's/hi/ho/g' gsub(/hi/,"ho")
|
||||
wc -l END { print NR }
|
||||
\end{verbatim}
|
||||
|
||||
Vous pouvez déja constater une certaine élégance portée par une
|
||||
grande simplicité logique, une sorte d'axiome de base, de
|
||||
méthologie très \textsc{kiss} :
|
||||
on va procéder en quelque sorte « demi-dalle par demi-dalle ».
|
||||
|
||||
% ===============================================================
|
||||
\subsection{Un exemple simple}
|
||||
|
||||
À partir d'un jeu de données structurées, nous allons générer un
|
||||
fichier \texttt{.inc} contenant un objet pour Povray\index{Povray}.
|
||||
Un cas d'école : un élément par ligne, les valeurs séparées par
|
||||
Un cas d'école : un élément par ligne, les valeurs sont séparées par
|
||||
des espaces.
|
||||
|
||||
|
||||
\lstinputlisting[]{code/awk/dataset}
|
||||
|
||||
Ces données sont les coordonnées \textsc{xyz} et le rayon d'une
|
||||
Ces données sont les coordonnées \textsc{x,y,z} et le rayon d'une
|
||||
petite collection de bubulles. Pratiquement, une représentation
|
||||
sommaire d'une sphère de povray.
|
||||
sommaire d'une sphère de povray\footnote{SDL keyword: \texttt{Sphere}}.
|
||||
|
||||
Le fichier à générer est en trois partie : l'en-tête, la liste
|
||||
des bubulles\index{bubulle} et l'en-pied, ce qui est bien raccord
|
||||
avec la structure de déroulement d'un script Awk, comme nous allons
|
||||
le voir ici-même~:
|
||||
|
||||
\lstinputlisting[]{code/awk/mkunion.awk}
|
||||
|
||||
|
||||
% XXX to be continued XXX
|
||||
|
||||
% ===============================================================
|
||||
|
||||
Reference in New Issue
Block a user