Tapesort - tri de fichier séquentiel par bandes magnétiques (didactique)

Soyez le premier à donner votre avis sur cette source.

Vue 5 127 fois - Téléchargée 507 fois

Description

Je suis retombé sur de vieilles cartes perforées contenant un de mas programmes en assembleur 370 servant à trier une bande magnétique sans utiliser de disque; ça doit remonter à 1975 ou par là....
L'algorithme est toujours aussi neuf, même si les supports ont changé.

Le but du jeu : trier un fichier séquentiel sur un support "non réinscriptible" (en ce sens qu'une fois lu, l'enregistrement n'est plus accessible pour une réécriture)
Les moyens : trois bandes magnétiques (plus la sauvegarde de la bande originale, au cas ou...), trois dérouleurs (type IBM 3420, c'est ceux que je connais le mieux...), et de la patience...

Le principe :
On splitte le fichier en séries de séquences croissantes sur deux fichiers séquentiels distincts puis, reprenant ces deux fichiers, on les fusionne et on recommence en reprenant le fichier fusionné en entrée jusqu'à zéro swap de bandes en entrée.
Ici la touche "GENERATE" sert à créer la "bande" d'entrée (TAPE C) et la touche "START" à démarrer la simulation; en fin de tri "START" devient "STOP" et pis voila...

Conclusion :


Il est sûr qu'avec des trucs comme dBase III et autres, sur le moment, ça a cassé le coup...

Mais pour l'histoire...

NOTE :
Il vaut mieux éviter de dépasser les 256 enregistrements sur cette simulation, j'ai fait un test avec 480 rcds et j'ai eu quelque chose comme 2 h de "tournage" en 156 itérations... néanmoins, une fois adapté, ça pourrait faire un "screensaver" potable...

Le voyant rouge sous les têtes de lecture implique une ecriture sur le support, le même en vert, une lecture, et en noir/gris/dégueu, une non-sélection.

J'ai scanné une note de l'époque qu'elle est dans le zip et qui explique le principe de ce SORT/MERGE..

Pour ce qui est du ratio, censé indiquer l'état d'acomplissement du tri, j'ai un doute :
une autre solution serait de compter le nombre de swaps entre les bandes de manoeuvre, plus cela tend vers 1, plus le tri est proche de l'accomplissement... j'y pense

Je commenterai ce source un peu plus tard (et si on me le demande gentiment, quoique, même sinon, d'ailleurs...)

a+

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_Blodox Messages postés 134 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 24 octobre 2010
12 mai 2010 à 07:53
Bingo...
sinon, c'est très hypnotique, ça me rappelle de viux souvenirs, de très viux souvenirs;
Il y a bien longtemps,
dans une lointaine galaxie...

(et on connaît la suite)
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
12 mai 2010 à 07:37
oui c'est ça, merci
cs_Blodox Messages postés 134 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 24 octobre 2010
11 mai 2010 à 21:09
Salut Adn56,
si j'ai bien entendu (façon de parler) tu cherches à limiter le nombre d'enregistrements à trier ?
Si c'est ça, tout se passe dans la partie "GENERATE()"
regarde à NB_TOT_RCDS ou un truc comme ça (j'ai pas mon source sous les yeux), sinon, précise, stp...
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
11 mai 2010 à 18:18
pour le screen saver je suis d'accord avec toi, mais j'ai pas pigé comment modifier les rcds ?
++
cs_Blodox Messages postés 134 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 24 octobre 2010
11 mai 2010 à 09:07
...
je viens de me la lancer sur approx 5000 rcds...
c'est quasi hypnotique, j'ai même l'impression d'entendre encore le bruit du rembobinage rapide...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.