Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EDT:Writing statements"

Line 88: Line 88:
  
 
program MyTestProgram
 
program MyTestProgram
 +
 +
  // A binary search gives you a way to find for a value in a sorted (preferably short) list.
 +
  function binarySearch(list int[], lowIndex int, highIndex int, value int) returns(int)
 +
 +
      while(true)
 +
        middleIndex int = (lowIndex + highIndex) / 2;
 +
 +
        if(list[middleIndex] == value)
 +
            return(middleIndex);
 +
        else
 +
            if(list[middleIndex] >= value)
 +
              highIndex = middleIndex - 1;
 +
            else
 +
              if(list[middleIndex] < value)
 +
                  lowIndex = middleIndex + 1;
 +
              end
 +
            end
 +
        end
 +
 +
        if(highIndex < lowIndex)
 +
            return(-1);
 +
        end
 +
      end
 +
  end
 +
     
  
 
   function main()
 
   function main()
Line 93: Line 118:
 
       myNumbers int[] =[-6, -1, 2, 4, 7, 9 ];
 
       myNumbers int[] =[-6, -1, 2, 4, 7, 9 ];
 
       valueOfInterest int = -1;
 
       valueOfInterest int = -1;
       
+
 
 
       lowestIndex int = 1;
 
       lowestIndex int = 1;
 
       highestIndex int = myNumbers.getSize();
 
       highestIndex int = myNumbers.getSize();
Line 106: Line 131:
 
                             ", at location " + location + ".");
 
                             ", at location " + location + ".");
 
       end
 
       end
    end
+
  end
 +
end
  
    function binarySearch(list int[], lowIndex int, highIndex int, value int) returns(int)
 
 
        while(true)
 
            middleIndex int = (lowIndex + highIndex) / 2;
 
 
            if(list[middleIndex] == value)
 
                return(middleIndex);
 
            else
 
                if(list[middleIndex] >= value)
 
                    highIndex = middleIndex - 1;
 
                else
 
                    if(list[middleIndex] < value)
 
                        lowIndex = middleIndex + 1;
 
                    end
 
                end               
 
            end
 
 
            if(highIndex < lowIndex)
 
                return(-1);
 
            end
 
        end
 
  
    end         
 
 
</source>  
 
</source>  
  
The binary search give you a way to find for a value in a short, sorted list. <br><br>
+
<br><br>
  
 
== Move  ==
 
== Move  ==

Revision as of 15:44, 13 February 2012

EGL provides general statements such as if and while, as well as action statements for accessing data sources or invoking external logic.

General statements

The general statements are case, continue, exit, for, if, move, return, throw, try, use, and while.

Case

The case statement responds to conditions at run time by executing one set of statements rather than another:

  • You can test a criterion value. The following example invokes mySecondFunction:
function test()
   x Int = 3; 
 
   case (x)
      when (1)
         myFirstFunction();
      when (2, 3, 4)
         mySecondFunction();      
      otherwise
         myDefaultFunction();
   end   
end
  • You can test a set of logical expressions. The following example displays only "x passes":
function test()
   x Int = 3;
   y Int = 5;
   z Int = 7;
 
   case
      when (x == 3)
         SysLib.writeStdOut("x passes");
      when (y == 5)
         SysLib.writeStdOut("y passes");
      when (z == 7)
         SysLib.writeStdOut("z passes");
      otherwise
         SysLib.writeStdErr("You will not see this message.");
      end
   end 
end

As shown, no more than one clause ever executes. Control does not “fall through” from one clause to the next.


Continue

The EGL continue statement returns control to the start of a block of code controlled by a for, forEach, or while statement. The statement lets you return to a labeled statement of one of those kinds, or to the nearest embedding statement of one of those kinds.

The following example assumes that you have coded a print function named printReport.

for (i from 1 to 100 by 1)
 
   printReport(myList[i]);
 
   if ((i % 10) != 0)
      continue;
   end // if
 
   printReport(blankLine);
end // for

That code prints the members of a list, inserting a blank line between each group of ten.

Exit

The EGL exit statement exits from a function, program, service, or run unit or from a block of code controlled by a case, for, forEach, if, or while statement.

For


If

The following program shows If statements embedded in other If statements.  

program MyTestProgram
 
   // A binary search gives you a way to find for a value in a sorted (preferably short) list.
   function binarySearch(list int[], lowIndex int, highIndex int, value int) returns(int)
 
      while(true)
         middleIndex int = (lowIndex + highIndex) / 2;
 
         if(list[middleIndex] == value)
            return(middleIndex);
         else
            if(list[middleIndex] >= value)
               highIndex = middleIndex - 1;
            else
               if(list[middleIndex] < value)
                  lowIndex = middleIndex + 1;
               end
            end
         end
 
         if(highIndex < lowIndex)
            return(-1);
         end
      end
   end
 
 
   function main()
 
      myNumbers int[] =[-6, -1, 2, 4, 7, 9 ];
      valueOfInterest int = -1;
 
      lowestIndex int = 1;
      highestIndex int = myNumbers.getSize();
 
      location int = binarySearch(myNumbers, lowestIndex, highestIndex,
                        valueOfInterest);
 
      if (location == -1)
         SysLib.writeStdOut("Did not find " + valueOfInterest + ".");
      else
         SysLib.writeStdOut("The value of interest is " + valueOfInterest +
                            ", at location " + location + ".");
      end
   end
end



Move


Return


Throw


Try


Use


While


Action statements

The action statements are add, call, close, delete, execute, forEach, get, open, prepare, and transfer.

Add

Call

Close

Delete

Execute

ForEach

Get

Open

Prepare

Replace

Transfer

Back to the top