Mikroelektronika MIKROE-724 データシート

ページ / 726
200
mikoBasic PRO for dsPIC30/33 and PIC24
MikroElektronika
Functions and Procedures
Functions and procedures, collectively referred to as routines, are subprograms (self-contained statement blocks) which perform 
a certain task based on a number of input parameters. When executed, a function returns value while procedure does not.
Functions
A function is declared like this:
sub function function_name(parameter_list) as return_type
  [ local declarations ]
  function body
end sub
function_name
 represents a function’s name and can be any valid identifier. 
return_type
 is a type of return value 
and can be any simple type or complex type. Within parentheses, 
parameter_list
 is a formal parameter list very 
similar to variable declaration. In mikroBasic PRO for PIC, parameters are always passed to a function by the value. To 
pass an argument by address, add the keyword 
byref
 ahead of identifier.
Local declarations
 are optional declarations of variables and/or constants, local for the given function. 
Function 
body
 is a sequence of statements to be executed upon calling the function.
Calling a function
A function is called by its name, with actual arguments placed in the same sequence as their matching formal parameters. 
The compiler is able to coerce mismatching arguments to the proper type according to implicit conversion rules. Upon 
a function call, all formal parameters are created as local objects initialized by values of actual arguments. Upon return 
from a function, a temporary object is created in the place of the call and it is initialized by the value of the function 
result. This means that function call as an operand in complex expression is treated as the function result.
In standard Basic, a 
function_name
 is automatically created local variable that can be used for returning a value of 
a function. mikroBasic PRO for dsPIC30/33 and PIC24 also allows you to use the automatically created local variable 
result
 to assign the return value of a function if you find function name to be too ponderous. If the return value of a 
function is not defined the compiler will report an error.
Function calls are considered to be primary expressions and can be used in situations where expression is expected. 
A function call can also be a self-contained statement and in that case the return value is discarded.
Example
Here’s a simple function which calculates x
n
 based on input parameters 
x
 and 
n
 (
n > 0
):
sub function power(dim x, n as byte) as longint
dim i as byte
  result = 1
  if n > 0 then
    for i = 1 to n
      result = result*x
    next i
  end if
end sub