APPLICATIONSPROGRAMMATION ★ Sortieren von Fließkommazahlen ★

Sort-Flo (Happy Computer)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Nach diversen String-Sortierroutinen bieten wir Ihnen nun auch einen schnellen Algorithmus für Fließkommazahlen, den Sie als Maschinencode-Routine einbinden können.

Immer wieder stößt der Programmierer auf das Problem, Dezimalbrüche in aufsteigender Reihenfolge geordnet darzustellen. Eine schnelle Hilfe dafür ist die Maschinencode-Routine »Sort-Flo«. Sie sortiert 100 Zahlen in nur 5 Sekunden! Dazu bedient sie sich des unter dem Namen »Quicksort« bekannten Sortierverfahrens. Dabei wird jeweils das größte Element des Felds gesucht, mit dem letzten Element vertauscht und die Anzahl um 1 vermindert. Dieser Vorgang wiederholt sich, bis die Sortierung abgeschlossen ist.

Listing 1 enthält neben dem Basic-Lader in den Zeilen ab 580 eine Demonstration der Geschwindigkeit. Es erzeugt den Maschinencode ab Adresse A00A hex. Der Aufruf lautet CALL &A00A , adresse,anzahl < adresse > steht für die Adresse der ersten Zahl im Arbeitsspeicher. Das braucht Sie aber nicht zu beängstigen, denn die Berechnung dieser Adresse überlassen Sie dem Basic-interpreter mit dem Variablenpointer »@«. Die Menge der unsortierten Zahlen minus 1 übergeben Sie in der Variablen < anzahl >. Haben Sie beispielsweise ein Variablenfeld a() mit 101 Elementen (DIM a(100)) zu sortieren, geben Sie ein:

CALL &A00A,@a$(0) ,101

Wenn Sie sich für die Arbeitsweise genauer interessieren, finden Sie in Listing 2 den Assembler-Quellcode. Sort-Flo verwendet zur Sortierung eine leicht veränderte Betriebssystem-Routine für den Vergleich der Fließkommazahlen. Die Verwendung der Kopie hat den Vorteil, daß die Routine im RAM schneller ist und die zu sortierenden Variablen auch parallel zum Betriebssystem-ROM liegen dürfen.
Den Bereich von Adresse A000 bis A009 hex nutzt Sort-Flo als Temporärspeicher für diverse Werte.

  • A000 und A001: Low- und High-Byte der Anzahl der Elemente minus 1
  • A002 und A003: Low- und High-Byte der Anzahl der Elemente minus 1
  • A004 und A005: Low- und High-Byte der Adresse des ersten Elements
  • A006 und A007: Low- und High-Byte der Vergleichsadresse
  • A008 und A009: Low- und High-Byte der Adresse der größten Zahl

(Dirk Haltermann/ja) , HC

★ PUBLISHER: Happy Computer
★ YEARE: 1986 , 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: HAPPY COMPUTER-SCHNEIDER SONDERHEFT
★ AUTHOR: Dirk HALTERMANN
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Sort-Flo    (Happy  Compter)    GERMANDATE: 2023-10-19
DL: 44
TYPE: ZIP
SiZE: 4Ko
NOTE: 40 tracks
.HFE: Χ
.DSK: √

» Sort-Flo    (Incl.  Source  Codes)    (Happy  Compter)    GERMAN    LISTINGDATE: 2023-10-19
DL: 41
TYPE: PDF
SiZE: 246Ko
NOTE: 2 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Super - Sort (CPC Amstrad International)
» Applications » Sortierte CAT-Liste (Happy Computer)
» Applications » Disc - Sorter
» Applications » Disk-Sort (Compute Mit)
» Applications » All sorted out (Popular Computing Weekly)
» Applications » Selection Sort (Amstrad Computer User)
Je participe au site:
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 554 millisecondes et consultée 240 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.