Functions - Second Style

In this chapter we are going to learn about the next topics :-

  • Define functions

  • Call functions

  • Declare parameters

  • Send parameters

  • Main Function

  • Variables Scope

  • Return Value

  • Recursion

Define Functions

To define new function

Syntax:

def <function_name> [parameters]
        Block of statements
[end]

Note

the keyword ‘end’ is optional.

Example:

def hello
        put "Hello from function" + nl
end

Call Functions

To call function without parameters, we type the function name then ()

Tip

We can call the function before the function definition and the function code.

Example:

hello()

def hello
        put "Hello from function" + nl
end

Example:

first()  second()

def first   put "message from the first function" + nl

def second  put "message from the second function" + nl

Declare parameters

To declare the function parameters, after the function name type the list of parameters as a group of identifiers separated by comma.

Example:

def sum x,y
        put x+y+nl
end

Send Parameters

To send parameters to function, type the parameters inside () after the function name

Syntax:

funcname(parameters)

Example:

/* output
** 8
** 3000
*/

sum(3,5) sum(1000,2000)

def sum x,y put x+y+nl

Main Function

Using the Ring programming language, the Main Function is optional, when it’s defined, it will be executed after the end of other statements.

if no other statements comes alone, the main function will be the first entry point

Example:

# this program will print the hello world message first then execute the main function

put "Hello World!" + nl

def main
        put "Message from the main function" + nl
end

Variables Scope

The Ring programming language uses lexical scoping to determine the scope of a variable.

Variables defined inside functions (including function parameters) are local variables. Variables defined outside functions (before any function) are global variables.

Inside any function we can access the variables defined inside this function beside the global variables.

Example:

# the program will print numbers from 10 to 1

x = 10                          # x is a global variable.

def main
        for t = 1 to 10         # t is a local variable
                mycounter()     # call function
        end
end

def mycounter
        put x + nl              # print the global variable value
        x--                     # decrement
end

Note

Using the main function before the for loop declare the t variable as a local variable, It’s recommended to use the main functions instead of typing the instructions directly to set the scope of the new variables to local.

Return Value

The function can return a value using the Return command.

Syntax:

Return [Expression]

Tip

the Expression after the return command is optional and we can use the return command to end the function execution without returning any value.

Note

if the function doesn’t return explicit value, it will return NULL (empty string = “” ).

Example:

if novalue() = NULL
        put "the function doesn't return a value" + nl
end

def novalue

Recursion

The Ring programming language support Recursion and the function can call itself using different parameters.

Example:

put fact(5)     # output = 120

def fact x if x = 0 return 1 else return x * fact(x-1) end