Merge: nitunit: Use markdown2
[nit.git] / contrib / pep8analysis / tests / privat / 07-tri.pep
1 ; Semaine 7
2 ; Programme qui trie un tableau de 10 entiers
3 ; Jean Privat (c) 2010
4 ;
5 ; Attention, 2 octets par mot.
6 ; Étape 1 : lit 10 entier et les range dans vecteur
7          LDX     0,i         
8 in_loop: CPX     20,i        
9          BRGE    trier       ; for(X=0;X<20;X+=2) {
10          DECI    vecteur,x   ;   vecteur[X] = getInt();
11          ADDX    2,i         
12          BR      in_loop     ; } // fin for
13 ; Étape 2 : trie le vecteur (algo: tri par permutation)
14 trier:   LDX     18,i        
15          STX     ix,d        
16 loop_ix: BRLT    afficher    ; for(ix=18;ix>=0;ix-=2) {
17          SUBX    2,i         
18          STX     jx,d        ;   for(jx=ix-2;jx>=0;jx-=2) {
19 loop_jx: BRLT    next_ix     
20          LDA     vecteur,x   
21          LDX     ix,d        
22          CPA     vecteur,x   
23          BRLE    next_jx     ;     if (vecteur[jx] > vecteur[ix]) {
24          STA     tmp,d       ;       tmp = vecteur[jx];
25          LDX     ix,d        
26          LDA     vecteur,x   
27          LDX     jx,d        
28          STA     vecteur,x   ;       vecteur[jx] = vecteur[ix];
29          LDA     tmp,d       
30          LDX     ix,d        
31          STA     vecteur,x   ;       vecteur[ix] = tmp;
32 next_jx: LDX     jx,d        
33          SUBX    2,i         
34          STX     jx,d        
35          BR      loop_jx     ;     } // fin for jx
36 next_ix: LDX     ix,d        
37          SUBX    2,i         
38          STX     ix,d        
39          BR      loop_ix     ;   } // fin for ix
40 ; Étape 3 : affiche le tableau trié
41 afficher:LDX     0,i         
42 out_loop:CPX     20,i        
43          BRGE    fin         ; for(X=0;X<20;X++) {
44          DECO    vecteur,x   
45          CHARO   '\n',i      ;   print(vecteur[X], "\n");
46          ADDX    2,i         
47          BR      out_loop    ; } // fin for
48 fin:     STOP                ; exit();
49 ; Variables globales
50 vecteur: .BLOCK  20          ; #2d10a vecteur de 10 entiers
51 ix:      .BLOCK  2           ; #2d itérateur ix pour tri
52 jx:      .BLOCK  2           ; #2d itérateur jx pour tri
53 tmp:     .BLOCK  2           ; #2d variable temporaire pour échange
54          .END