You are on page 1of 10

Ring Documentation, Release 1.

list = [1,2,3,"four","five"]
list2 = list
list = []
See list # print the first list - no items to print
See "********" + nl
See list2 # print the second list - contains 5 items

14.3 Weakly Typed

Ring is a weakly typed language, this means that the language can automatically convert between data types (like
string & numbers) when that conversion make sense.
Rules:
<NUMBER> + <STRING> --> <NUMBER>
<STRING> + <NUMBER> --> <STRING>

Note: The same operator + can be used as an arithmetic operator or for string concatenation.

Example:
x = 10 # x is a number
y = "20" # y is a string
sum = x + y # sum is a number (y will be converted to a number)
Msg = "Sum = " + sum # Msg is a string (sum will be converted to a string)
see Msg + nl

14.3. Weakly Typed 78


CHAPTER

FIFTEEN

OPERATORS

In this chapter we will introduce the operators provided by the Ring programming langauge.

15.1 Arithmetic Operators

The next table presents all of the arithmetic operators provided by the Ring language. Assume variable X=50 and
variable Y=10 then:
Operator Description Example Result
+ Add x+y 60
- Subtract x-y 40
* Multiplies x*y 500
/ Divide x/y 5
% Modulus x%y 0
++ Increment x++ 51
-- Decrement x- - 49

15.2 Relational Operators

The next table presents all of the relational operators provided by the Ring language. Assume variable X=50 and
variable Y=10 then:
Operator Description Example Result
= Equal x=y False
!= Not Equal x != y True
> Greater than x>y True
< Less than x<y False
>= Greater or Equal x >= y True
<= Less than or Equal x <= y False

15.3 Logical Operators

The next table presents all of the logical operators provided by the Ring language. Assume variable X=True and
variable Y=False then:
Operator Description Example Result
and Logical AND x and y False
or Logical OR x or y True
not Logical Not not x False

79
Ring Documentation, Release 1.3

15.4 Bitwise Operators

The next table presents all of the bitwise operators provided by the Ring language. Assume variable X=8 and variable
Y=2 then:
Operator Description Example Result
& Binary AND x&y 0
| Binary OR x|y 10
^ Binary XOR x^y 10
~ Binary Ones Complement ~x -9
<< Binary Left Shift x << y 32
>> Binary Right Shift x >> y 2

15.5 Assignment Operators

The next table presents all of the assignment operators provided by the Ring language.
Assume variable X=8 then:
Operator Description Example Result
= Assignment x = 10 x=10
+= Add AND assignment x += 5 x=13
-= Subtract AND assignment x -= 3 x=5
*= Multiply AND assignment x *= 2 x=16
/= Divide AND assignment x /= 3 x=2.67
%= Modulus AND assignment x %= 2 x=0
<<= Left shift AND assignment x <<= 2 x=32
>>= Right shift AND assignment x >>= 2 x=2
&= Bitwise AND assignment x &= 4 x=0
|= Bitwise OR and assignment x |= 3 x=11
^= Bitwise XOR and assignment x ^= 4 x=12

15.6 Misc Operators

Operator Description
:literal using : before identifier mean literal
Start:End create list contains items from start to end
[list items] define list items
list[index] access list item
obj.name using the dot operator to access object members (attributes/methods).
obj {stmts} execute statements with direct access to object attributes & methods
func(para,...) call function using parameters separated by comma

15.7 Operators Precedence

The next table present operators from higher precedence (Evaluated first) to lower precedence.

15.4. Bitwise Operators 80


Ring Documentation, Release 1.3

Operator
. [] () {}
- ~ :Literal [list items]
++ - -
Start:End
*/%
+-
<< >>
&
|^
< > <= >=
= !=
not
and or
Assignment = += -= *= /= %=>>= <<= &= ^= |=
Example:
See 3+5*4 # prints 23

15.7. Operators Precedence 81


CHAPTER

SIXTEEN

CONTROL STRUCTURES - FIRST STYLE

In this chapter we are going to learn about the control structures provided by the Ring programming language.

16.1 Branching

If Statement
Syntax:
if Expression
Block of statements
but Expression
Block of statements
else
Block of statements
ok

Example:
see "
Main Menu
---------
(1) Say Hello
(2) About
(3) Exit

" give nOption

if nOption = 1 see "Enter your name : " give name see "Hello " + name + nl
but nOption = 2 see "Sample : using if statement" + nl
but nOption = 3 bye
else see "bad option..." + nl
ok

Switch Statement
Syntax:
switch Expression
on Expression
Block of statements
other
Block of statements
off

82
Ring Documentation, Release 1.3

Example:
See "
Main Menu
---------
(1) Say Hello
(2) About
(3) Exit

" Give nOption

Switch nOption
On 1 See "Enter your name : " Give name See "Hello " + name + nl
On 2 See "Sample : using switch statement" + nl
On 3 Bye
Other See "bad option..." + nl
Off

16.2 Looping

While Loop
Syntax:
while Expression
Block of statements
end

Example:
While True

See "
Main Menu
---------
(1) Say Hello
(2) About
(3) Exit

" Give nOption

Switch nOption
On 1
See "Enter your name : "
Give name
See "Hello " + name + nl
On 2
See "Sample : using while loop" + nl
On 3
Bye
Other
See "bad option..." + nl
Off
End

For Loop
Syntax:

16.2. Looping 83
Ring Documentation, Release 1.3

for identifier=expression to expression [step expression]


Block of statements
next

Example:
# print numbers from 1 to 10
for x = 1 to 10 see x + nl next

Example:
# Dynamic loop
See "Start : " give nStart
See "End : " give nEnd
See "Step : " give nStep
For x = nStart to nEnd Step nStep
see x + nl
Next

Example:
# print even numbers from 0 to 10
for x = 0 to 10 step 2
see x + nl
next

Example:
# print even numbers from 10 to 0
for x = 10 to 0 step -2
see x + nl
next

For in Loop
Syntax:
for identifier in List/String [step expression]
Block of statements
next

Example:
aList = 1:10 # create list contains numbers from 1 to 10
for x in aList see x + nl next # print numbers from 1 to 10

16.3 Using The Step option with For in

We can use the Step option with For in to skip number of items in each iteration
Example:
aList = 1:10 # create list contains numbers from 1 to 10
# print odd items inside the list
for x in aList step 2
see x + nl
next

16.3. Using The Step option with For in 84


Ring Documentation, Release 1.3

16.4 Using For in to modify lists

When we use (For in) we get items by reference.


This means that we can read/edit items inside the loop.
Example:
aList = 1:5 # create list contains numbers from 1 to 5
# replace list numbers with strings
for x in aList
switch x
on 1 x = "one"
on 2 x = "two"
on 3 x = "three"
on 4 x = "four"
on 5 x = "five"
off
next
see aList # print the list items

16.5 Do Again Loop

Syntax:
do
Block of statements
again expression

Example:
x = 1
do
see x + nl
x++
again x <= 10

16.6 Exit Command

Used to go outside one or more of loops.


Syntax:
exit [expression] # inside loop

Example:
for x = 1 to 10
see x + nl
if x = 5 exit ok
next

16.4. Using For in to modify lists 85


Ring Documentation, Release 1.3

16.7 Exit from two loops

The next example presents how to use the exit command to exit from two loops in one jump.
Example:
for x = 1 to 10
for y = 1 to 10
see "x=" + x + " y=" + y + nl
if x = 3 and y = 5
exit 2 # exit from 2 loops
ok
next
next

Loop Command
Used to jump to the next iteration in the loop.
Syntax:
loop [expression] # inside loop

Example:
for x = 1 to 10
if x = 3
see "Number Three" + nl
loop
ok
see x + nl
next

16.8 Exit/Loop inside sub functions

While we are inside a loop, we can call a function then use the exit and/or loop command inside that function and the
command will work on the outer loop.
Example:
# print numbers from 1 to 10 except number 5.

for x = 1 to 10
ignore(x,5)
see x + nl
next

func ignore x,y


if x = y
loop
ok

16.9 Short-circuit evaluation

The logical operators and/or follow the short-circuit evaluation.

16.7. Exit from two loops 86


Ring Documentation, Release 1.3

If the first argument of the AND operator is zero, then there is no need to evaluate the second argument and the result
will be zero.
If the first argument of the OR operator is one, then there is no need to evaluate the second argument and the result
will be one.
Example:
/* output
** nice
** nice
** great
*/

x = 0 y = 10

if (x = 0 and nice()) and (y = 10 and nice())


see "great" + nl
ok

func nice see "nice" + nl return 1

Example:
# No output

x = 0 y = 10

if (x = 1 and nice()) and (y = 10 and nice())


see "great" + nl
ok

func nice see "nice" + nl return 1

Example:
/* output
** nice
** great
*/

x = 0 y = 10

if (x = 0 and nice()) or (y = 10 and nice())


see "great" + nl
ok

func nice see "nice" + nl return 1

16.10 Comments about evaluation

True, False, nl & NULL are variables defined by the language


True = 1
False = 0
nl = new line
NULL = empty string =

16.10. Comments about evaluation 87

You might also like