Pooh program example 18-sort.p

Test 18-sort.p

Source of programm

# use standard library sort procedure - with callback for comparison

a = [ 10 , 3, 1, 5, 4, 9, 6, 7, 8, 2 ]

sub cmpnum( a, b )
  if a < b
    return -1
  elsif a > b
    return 1
  else 
    return 0;
  end
end


sort( ~array a ~func cmpnum )

println( ~msg 'sorted numbers' )

for v a
  println( ~msg v )
end

Standard output for 18-sort.p

sorted numbers
1
2
3
4
5
6
7
8
9
10

Trace output for 18-sort.p

003|a = [ 10 , 3 , 1 , 5 , 4 , 9 , 6 , 7 , 8 , 2] 
016|sort( ~array a:[ -> 10, -> 3, -> 1, -> 5, -> 4, -> 9, -> 6, -> 7, -> 8, -> 2 ] ~func sub cmpnum(~a , ~b) )...
005| sub cmpnum(~a , ~b)
006|  if (a:-> 10 < b:-> 3):false
008|  else if (a:-> 10 > b:-> 3):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 5 < b:-> 4):false
008|  else if (a:-> 5 > b:-> 4):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 1 < b:-> 4):true
007|   return  - 1
007|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 3 < b:-> 1):false
008|  else if (a:-> 3 > b:-> 1):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 3 < b:-> 4):true
007|   return  - 1
007|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 10 < b:-> 4):false
008|  else if (a:-> 10 > b:-> 4):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 10 < b:-> 5):false
008|  else if (a:-> 10 > b:-> 5):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 9 < b:-> 6):false
008|  else if (a:-> 9 > b:-> 6):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 8 < b:-> 2):false
008|  else if (a:-> 8 > b:-> 2):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 7 < b:-> 2):false
008|  else if (a:-> 7 > b:-> 2):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 7 < b:-> 8):true
007|   return  - 1
007|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 6 < b:-> 2):false
008|  else if (a:-> 6 > b:-> 2):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 6 < b:-> 7):true
007|   return  - 1
007|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 9 < b:-> 7):false
008|  else if (a:-> 9 > b:-> 7):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 9 < b:-> 8):false
008|  else if (a:-> 9 > b:-> 8):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 1 < b:-> 2):true
007|   return  - 1
007|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 3 < b:-> 2):false
008|  else if (a:-> 3 > b:-> 2):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 3 < b:-> 6):true
007|   return  - 1
007|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 4 < b:-> 6):true
007|   return  - 1
007|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 5 < b:-> 6):true
007|   return  - 1
007|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 10 < b:-> 6):false
008|  else if (a:-> 10 > b:-> 6):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 10 < b:-> 7):false
008|  else if (a:-> 10 > b:-> 7):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 10 < b:-> 8):false
008|  else if (a:-> 10 > b:-> 8):true
009|   return 1
011|  end # if
005| end
005| sub cmpnum(~a , ~b)
006|  if (a:-> 10 < b:-> 9):false
008|  else if (a:-> 10 > b:-> 9):true
009|   return 1
011|  end # if
005| end
016|sort( ~array a:[ -> 10, -> 3, -> 1, -> 5, -> 4, -> 9, -> 6, -> 7, -> 8, -> 2 ] ~func sub cmpnum(~a , ~b) ):Null
018|println( ~msg 'sorted numbers' )...
020|for v = 1
021| println( ~msg v:1 )...
020|end
020|for ...
020|for v = 2
021| println( ~msg v:2 )...
020|end
020|for ...
020|for v = 3
021| println( ~msg v:3 )...
020|end
020|for ...
020|for v = 4
021| println( ~msg v:4 )...
020|end
020|for ...
020|for v = 5
021| println( ~msg v:5 )...
020|end
020|for ...
020|for v = 6
021| println( ~msg v:6 )...
020|end
020|for ...
020|for v = 7
021| println( ~msg v:7 )...
020|end
020|for ...
020|for v = 8
021| println( ~msg v:8 )...
020|end
020|for ...
020|for v = 9
021| println( ~msg v:9 )...
020|end
020|for ...
020|for v = 10
021| println( ~msg v:10 )...
020|end
020|for ...
020|end # finish for loop