Routines di ordinamento numeri

Un classico della programmazione che viene richiesto negli istituti tecnici industriali è la realizzazione del cosiddetto Bubblesort ovvero ordinamento a bolle: confronto tra 2 numeri e il più piccolo “sale” di posizione. Si realizza con un paio di cicli e una variabile temporanea (di appoggio) che permette lo scambio dei valori di un array evitando così di perdere uno dei 2 valori.
In SuperBasic per ordinare in ordine crescente si procede
in questo modo:
240 FOR I = A-1 TO 1 STEP -1
250 FOR J = 0 TO I – 1
260 IF matrice$(J)>matrice$(J+1) THEN
270 Temp$ = matrice$(J)
280 matrice$(J) = matrice$(J+1)
290 matrice$(J+1) = Temp$
300 END IF
310 NEXT J
320 NEXT I
mentre l’ordinamento inverso (decrescente) è così fatto:
340 FOR I = A-1 TO 1 STEP -1
350 FOR J = 0 TO I – 1
360 IF matrice$(J)<matrice$(J+1) THEN
370 Temp$ = matrice$(J)
380 matrice$(J) = matrice$(J+1)
390 matrice$(J+1) = Temp$
400 END IF
410 NEXT J
420 NEXT I
L’implementazione sul QL quindi è simile a quanto avviene anche con gli altri dialetti di Basic a parte lo statement End if che per esempio sullo Zx è necessario ricorrere a dei GOSUB o impostare tutto sulla stessa linea e viene a mancare l’Else a cui bisogna ovviare con dei salti rendendo così meno chiaro il programma.