Az Euphoria Programozási nyelv (v2.3)

Példaprogramok

Példa Program

Következik egy teljes Euphoria program:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



 sequence list, sorted_list



 function merge_sort(sequence x)

 -- put x into ascending order using a recursive merge sort

     integer n, mid

     sequence merged, a, b



     n = length(x)

     if n = 0 or n = 1 then

         return x  -- trivial case

     end if



     mid = floor(n/2)

     a = merge_sort(x[1..mid])       -- sort first half of x

     b = merge_sort(x[mid+1..n])     -- sort second half of x



     -- merge the two sorted halves into one

     merged = {}

     while length(a) > 0 and length(b) > 0 do

         if compare(a[1], b[1]) < 0 then

             merged = append(merged, a[1])

             a = a[2..length(a)]

         else

             merged = append(merged, b[1])

             b = b[2..length(b)]

         end if

     end while

     return merged & a & b  -- merged data plus leftovers

 end function



 procedure print_sorted_list()

 -- generate sorted_list from list

     list = {9, 10, 3, 1, 4, 5, 8, 7, 6, 2}

     sorted_list = merge_sort(list)

     ? sorted_list

 end procedure



 print_sorted_list()     -- this command starts the program





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A fenti példa tartalmaz 4 különálló parancsot. Az első meghatároz két változót: list és sorted_list, amik sorozatok (rugalmas tömb). A második definiál egy merge_sort() függvényt. A harmadik definiál egy printed_sorted_list() eljárást. Az utolsó utasítás meghívja a print_sorted_list() eljárást.

A program végeredménye:
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.

merge_sort() egyszerűen rendezi a {1.5, -9, 1e6, 100} vagy {"oranges", "apples", "bananas"} .

Ez a példa megtalálható: euphoria\tutorial\example.ex. Nem ez a leggyorsabb módja a rendezésnek Euphoria-ban. Lépj az euphoria\demo könyvtárba és gépeld be "ex allsorts", ekkor láthatod néhány különböző rendező algoritmus futási idejét és a futási idő változását a rendezendő objektumok számától függően.