Advertisement
NoobsDeSroobs

Emerald testing problem

Feb 12th, 2015
4,049
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. const SC <- class myClass
  3.     var prev: Integer <- 0
  4.     export operation getSeqNo[] -> [r: Integer]
  5.         prev <- prev +1
  6.         r <- prev
  7.     end getSeqno
  8. end myClass
  9.  
  10.  
  11. const hello <- object hello
  12.     operation test[y : Integer]
  13.         var x : Integer <- 6
  14.         x <- x+y
  15.         stdout.putstring[" test " || x.asString || "\n"]   
  16.         stdout.flush
  17.     end test
  18.  
  19.     initially
  20.         Var myClassInstance : SC
  21.         var n: Node
  22.         myClassInstance <- SC.create[]
  23.         move myClassInstance to n
  24.         for i : Integer <- 0 while i < 10 by i <- i + 1
  25.             stdout.putstring[" test " || (myClassInstance.getSeqNo).asString || "\n"]
  26.         end for
  27.         self.test[5]   
  28.     end initially
  29. end hello
  30.  
  31.  
  32. %Task 1
  33. const conformingType <- class ConformingType
  34.     var arr : Array.of[String] <- Array.of[String].create[1]
  35.  
  36.     operation add[name : String] -> [res : Boolean]
  37.         arr.addUpper[name]
  38.         res <- true
  39.     end add
  40.     function contains[name : String] -> [res : Boolean]
  41.         res <- false
  42.         for i : Integer <- 0 while i < 10 by i <- i + 1
  43.             if arr[i] == name then
  44.                 res <- true
  45.             end if
  46.         end for
  47.     end contains
  48.     operation remove[navn : String ] -> [res : Boolean]
  49.         %No remove op as far as I know
  50.     end remove
  51. end ConformingType
  52.  
  53. %Task 2
  54. const Sieveof <- class Eratosthanes
  55.     var numbers: Array.of[Boolean] <-Array.of[Boolean].create[200]
  56.     var p : Integer
  57.  
  58.     export operation makeSieve[]
  59.         p <- 2
  60.         loop
  61.             if p > 198 then exit end if
  62.             for i : Integer <- 0 while i < 200 by  i <- i + p
  63.                 numbers[i-1] <- false
  64.             end for
  65.  
  66.             for i : Integer <- 0 while i < 200 by  i <- i + 1
  67.                 if numbers[i]
  68.                 then p <- i + 1
  69.                 exit
  70.                 end if 
  71.             end for
  72.         end loop
  73.     end makeSieve
  74. end Eratosthanes
  75.  
  76. %mandatory assignment 1
  77. %Barrier
  78. const data <- class Data
  79.     var ID: Integer <- -1
  80.     var waiting : Boolean <- false
  81. end data
  82.  
  83.  
  84. const thread <- class Thread[barr : Barrier, ID : Integer]
  85.     operation repportCompletion[]
  86.         barr.repportAsReady[ID]
  87.     end repportCompletion
  88. end thread
  89.  
  90. const barrier <- class Barrier
  91.     var numConnected : Integer <- 0
  92.     var threads : Array.of[Data] <- Array.of[Data].create[4] % 4 is the standard num of min threads, enough for most cases
  93.     export operation addThread[ID : Integer]
  94.         threads[ID].ID <- ID
  95.         threads[ID].waiting <- true
  96.         numConnected <- numConnected + 1
  97.     end addThread
  98.  
  99.     export operation isReady[] -> [ready: Boolean]
  100.         ready <- numConnected == 0
  101.     end isReady
  102.  
  103.     export operation repportAsReady[ID : Integer]
  104.         threads[ID].waiting <- false
  105.         numConnected <- numConnected - 1
  106.     end repportAsReady
  107. end barrier
  108.  
  109.  
  110. %Producer/Consumer
  111.  
  112. %We need a singleton buffer object
  113. const wrapperObject <- class Wrapper
  114.    
  115.  
  116.     const producer <- class Producer
  117.         var sentValueNum : Integer <- 1
  118.         initially
  119.             loop
  120.                 exit when sentValueNum > 29
  121.                 var sucess : Boolean <- bufferObject.add[sentValueNum]
  122.                 %Print what you sent
  123.                 if sucess then sentValueNum <- sentValueNum + 1 end if
  124.             end loop
  125.         end initially
  126.     end Producer
  127.  
  128.     const consumer <- class Consumer
  129.         var recievedValueNum : Integer <- 0
  130.         initially
  131.             loop exit when recievedValueNum > 29
  132.                 var recievedVal: Integer <- bufferObject.get[]
  133.                 %Print what you got
  134.                 if recievedVal !== 0 then recievedValueNum <- recievedValueNum + 1 end if
  135.             end loop
  136.         end initially
  137.     end Consumer
  138.  
  139.     const bufferObject <- class Buffer
  140.         var bufferArray : Array.of[Integer] <- Array.of[Integer].create[2]
  141.  
  142.         export operation remove[] -> [r: Integer]
  143.             r <- 0
  144.             for i : Integer <- 0 while i < 2 by  i <- i + 1
  145.                 if bufferArray[i] !== 0 then
  146.                     r <- bufferArray[i]
  147.                     bufferArray[i] <- 0
  148.                     exit
  149.                 end if 
  150.             end for
  151.         end remove
  152.  
  153.         export operation add[val : Integer] -> [success: Boolean]
  154.             success <- false
  155.             for i : Integer <- 0 while i < 2 by  i <- i + 1
  156.                 if bufferArray[i] == 0 then
  157.                     bufferArray[i] <- val
  158.                     success <- true
  159.                     exit
  160.                 end if 
  161.             end for
  162.         end add
  163.     end Buffer
  164. end Wrapper
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement