Merge: Fixed safe-call missed cast when reference primitive data types
[nit.git] / examples / procedural_array.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Copyright 2004-2008 Jean Privat <jean@pryen.org>
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 # Example of a procedural program (without explicit class definition).
18 # This program manipulates arrays of integers.
19 module procedural_array is example
20
21 # The sum of the elements of `a'.
22 # Uses a 'for' control structure.
23 fun array_sum(a: Array[Int]): Int
24 do
25 var sum = 0
26 for i in a do
27 sum = sum + i
28 end
29 return sum
30 end
31
32 # The sum of the elements of `a' (alternative version).
33 # Uses a 'while' control structure.
34 fun array_sum_alt(a: Array[Int]): Int
35 do
36 var sum = 0
37 var i = 0
38 while i < a.length do
39 sum = sum + a[i]
40 i = i + 1
41 end
42 return sum
43 end
44
45 # The main part of the program.
46 var a = [10, 5, 8, 9]
47 print(array_sum(a))
48 print(array_sum_alt(a))