★ APPLICATIONS ★ DIVERS ★ RSX: TRI ★ |
Tri (AM-Mag) | Applications Divers |
La routine de tri ici proposée, constitue une solution performante pour tous ceux qui, dans leurs programmes d'application, se heurtent à la lenteur du Basic lorsqu'il s'agit d'effectuer le tri alphanumérique d'un tableau de grande dimension. Facilement accessible à partir du Basic par deux commandes RSX, cette routine diminue considérablement le temps d'exécution d'un tri. Le lancement du premier programme génère et sauvegarde la routine binaire "TRI.RSX", prévue pour être implantée à l'adresse &A000. Toutefois, il est possible de la reloger à une adresse de son choix, pourvu que l'on insère dans le pro-t gramme d'application, les quelques lignes du second programme. Il suffit de spécifier en ligne 20 de 'ce dernier, l'adresse d'implantation dans la variable ADR. Utilisation Après avoir chargé (et éventuellement relogé) la routine "TRI.RSX" en mémoire à I'adresse ADR, il suffit de la rendre opérationnelle par CALL ADR, pour disposer des deux commandes RSX suivantes : | INIT, N : permet d'initialiser le compteur d'éléments. N est le nombre d'éléments du tableau à trier. |TRI,@T$ : permet de trier le tableau T$(). Avant de lancer le tri d'un tableau, il convient d'informer la routine sur le nombre d'éléments à trier. De plus, devant l'absence de mesure veillant à contrôler la cohérence des paramètres, l'utilisateur devra veiller à ce que le tri puisse s'effectuer correctement, sachant que le tableau doit compter au moins K+N éléments, si l'on veut trier N éléments à partir du rang K. Exemple : si le tableau à trier N$() compte 200 éléments; N$(), N$(), N$()..., N$(), N$(), il suffit d'inclure dans le programme les lignes suivantes : MEMORY &9FFF: LOAD"TRI.RSX": CALL &A000 Le troisième programme est un programme de démonstration comparant les performances des tris en Basic et en langage machine. Il prouve à l'évidence l'intérêt de la routine qui s'avère vingt-cinq fois plus rapide que le Basic sur un tri de cent éléments. Nota : pour les modèles 464 et 664, modifiez ainsi la ligne suivante : 670 WHILE INKEY$<> "": WEND
|