T R I T U R B O
Auteur : Georges Convers
Publie dans MicroStrad 6 * Juillet/Aout 1986
Basic et Assembleur
Tous les CPC
Une nouvelle instruction trie les tableaux a une dimension, et ce, a toute
vitesse. Un TGV informatique en somme !
Quelle rapidite ! Ecrit en langage machine, ce " tri en epi " traite
les tableaux a une dimension. Il est appele par une nouvelle instruction
Basic: |TRI,@A$,C,N
Le nom du tableau est affecte a A$, le sens du tri (croissant ou decroissant)
a C et l'indice de l'element final a N. Une erreur dans les donnees provoque
le retour au Basic avec un message d'erreur. La valeur de A$ est de type
chaine, celle de C est de type booleen (0 ou -1) et celle de N est de type
entier.
Pour appeler la routine depuis un programme Basic, on ecrira :
10 DIM T(100)
100 A$="T":|TRI,@A$,-1,54
190 CROIT=-1:N=100:|TRI,@A$,not croit, N-20
L'ensemble du tableau est alors trie jusqu'a l'element final donne, y
compris l'element d'indice 0. Si ce dernier est vide, il peut perturber le
tri et se classer. Les indices doivent etre adaptes a cette exigence.
Le chargeur Basic (programme 1) permettra de placer facilement la routine
de tri, sans etre oblige de posseder un Assembleur. Elle est implantee en
&A000 jusqu'en &A343 (hexadecimal). Vous ne pourrez la deplacer en memoire.
Le programme verifie l'entree des DATA et indique, on cas d'erreur dc copie,
dans quel groupe de lignes elle a eu lieu. Le tri est ensuite mis en place
par CALL &A000. Un peu dc patience et vous disposez d'une nouvelle instruction
Basic tres efficace, une RSX (extension Basic).
Lignes 1060 a 1110 : lecture et verification des DATA.
Ligne 1120 : mise en place du RSX.
Lignes 1130 a 2470 : liste des DATA en quatorze groupes.
Cette routine utilise des variables systeme et une entree en memoire Basic.
Elle n'est donc pas compatible directement avec les CPC 664 et 6128.
Voici les lignes du programme a changer pour une implantation sur ces
appareils :
1210 DATA 56,D5,DD,E1,2A,6A,AE,22
1220 DATA 7145
1240 DATA CF,A0,2A,CF,AØ,ED,5B,6C
1320 DATA 8480
1390 DATA 18,F6,D7,81,C0,C1,7E,FE
1420 DATA 8340
Pour les habitues du langage machine, il sera plus rapide do sauvegarder
le programme binaire par SÂVE "'TRIBIN",b,&A000,&344,&A000 et de l'appeler
en debut du programme utilisateur par MEMORY &9FFF:IOAD "TRIBIN":CALL &A000.
Le programme 2 est un exemple d'utilisation de ce tri. Il traite cen chaines
de quatre caracteres crees aleatoirement. Un bip sonore vous indique le debut
du travail. Vous opuvez faire des essais avec des tableaux d'entiers, ou de
reels, la routine permettant de trier tous les tableaux a une dimension
quelle que soit le type des variables indicees.
Ligne 70 : melange de tableaux pour essai recherche.
Lignes 90 a 170 : creation de mots et affichage.
Lignes 180-230 : tri et affichage.
Lignes 240-270 : sous-programme d'affichage.
Maintenant, a vos chronometres ! Le gain de temps est etonnant.
Georges Convers