Suivez-nous sur X

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : C - vérification du code
(Article écrit par Xavier Leclercq et extrait d'Amiga News - mai 1992)
|
|
Pourquoi programmer en C ? La réponse n'est pas à priori si évidente car l'assembleur est plus rapide
et plus simple à comprendre pour le débutant (du moins c'est mon point de vue).
Mais le C permet la portabilité la source. Cela signifie qu'en théorie un programme C tournant sur Amiga
peut s'adapter facilement sur d'autres ordinateurs. En pratique, cette portabilité demande un effort supplémentaire
de la part du programmeur qui la plupart du temps préfère l'ignorer. L'affaire se complique lorsque l'on constate
qu'un compilateur X ne réagit pas de la même manière qu'un compilateur Y... Il existe bien une norme internationale
établie par l'American National Standards Institute (ANSI) mais il faut encore trouver "le" compilateur qui affirme
être compatible avec celle-ci et qui le prouve...
Heureusement, vous pouvez vous procurer depuis quelque temps un compilateur digne d'ANSI
pour pas cher et qui peut rapporter gros : le DICE. C'est donc ce noble compilateur que je vous incite vivement
à utiliser. Il est gratuit (du moins pour la version DP qui se trouve sur
l'AmigaLibDisk numéro 466 de M. Fred Fish),
rapide, moins "lourd" et plus simple (ce qui est ici une qualité) que ces confrères du commerce.
Il est évident qu'il vaut mieux utiliser la norme autant que possible et éviter par exemple, pour des opérations
sur fichiers, d'ouvrir la dos.library. De plus, DICE accepte les prototypes de fonctions alors autant les utiliser
au maximum !
Quelques lignes concernant l'implantation
Une configuration A500+, 2 Mo de mémoire et un disque dur est la configuration bienvenue.
Dans votre shell-startup, insérez
>alias DICE dh1: sources/dice/progxl/go
|
Le fichier script étant directement exécutable grâce à la commande "protect go srwed".
Le script peut contenir la séquence d'instruction CLI suivante :
assign DINCLUDE: dh1:sources/dice/include
assign DLIB: dh1:sources/dice/dlib
resident dh1:sources/dice/bin/DAS ; si vous avez 2 Mo de mémoire
resident dh1:sources/dice/bin/DC1 ; vous pouvez rendre certaines commandes
resident dh1:sources/dice/bin/DCC ; résidentes, ce qui augmentera la vitesse
resident dh1:sources/dice/bin/DLINK ; de compilation
resident dh1:sources/dice/bin/DCPP
cd dh1:sources/dice/progxl ; progxl est le répertoire courant de travail
|
Vérification du code
Ensuite, encoder vos listings. Une erreur de frappe est toujours possible lorsque
fébrilement vos petits doigts courageux encodent. Le drame suivant peut alors se dérouler :
#include <stdio.h>
main() { pust ("chaîne envoyée à stdout"); }
|
...à la place du code source correct :
#include <stdio.h>
main() { puts ("chaîne envoyée à stdout"); }
|
Mais le compilateur est sans pitié et vous affichera "undefined symbol: pust".
Une manière de procéder serait de relire avant compilation le code source mais
bien souvent cette tâche se révèle très difficile car il se peut que l'on relise
x fois une ligne mal encodée sans trouver la faute... Il existe une méthode du
nom de "méthode de la lettre clé" pour y remédier qui :
- Multiplie la valeur lue par des puissances de 2 successives.
- Additionne les résultats.
- Divise la somme obtenue par le nombre qui correspond à l'addition de la valeur des puissances de 2 successives.
- Ignore les caractères <= à la valeur ASCII d'un espacement (0x20).
Donc cette méthode permet d'ignorer les espaces parasites et de contrôler l'inversion possible de caractères.
Exemple : RT inversion, RO niversion, SM inversino, RT inversion
Voici le code source et ses caractères de contrôle :
Emploi : encoder chaque ligne (sans les codes de contrôle).
Puis tapez :
1>CHKSCR CHKSCR.0 CHKSCR.CHK
|
Le "CHKSCR.CHK" contient le listing source avec les codes de contrôle
comme la source proposée ci-dessus. Les codes imprimés dans votre Amiga News
doivent correspondre aux codes du "CHKSCR.CHK".
"CHKSCR" peut-être utilisé avec n'importe quel texte ASCII : une source C ou BASIC, FORTRAN, PCQ...
|