If you are here, this means that you are going to be a coder soon. You will solve real-world computer problems, make your own programs, and a lot more. Yeah, sounds good!

Same as 'while', **for** is also a loop. Let's see an example to understand this.

```
marks = [78,98,50,37,45]
for m in marks
puts m
end
```

98

50

37

45

Just this and it's done. Let me explain you the code.**for m in marks** - m is a variable which will go to every element in the array 'marks' and take its value.

So, in the first iteration, **m** will be the 1^{st} element of the array.

In the second iteration, **m** will the be the 2^{nd} element of the array and so on.

As you have seen above, in the first iteration, m is 78, in the second iteration, its 98, then 50 and so on.

**end**to end the for loop also.

#### Example of sum of marks

```
marks = [78,98,50,37,45]
sum = 0
for m in marks
sum = sum+m
end
puts sum
```

I hope that you got the code. If not, then let me explain a bit.**sum = 0** - We are taking any variable and assigning it an initial value of 0.**In the 1 ^{st} iteration**

**m**is 78. So,

**sum+m**is

**0+78**. Now the

**sum**is 78

**In the 2**

^{nd}iteration**m**is 98. So,

**sum+m**is

**78+98**. Now the

**sum**is 176.

Similarly at last, sum is 308.

I hope it is clear now.

Do You Know ?

Table of 12 | Add | And you get table of 13 |
---|---|---|

12 | +1 | 13 |

24 | +2 | 26 |

36 | +3 | 39 |

48 | +4 | 52 |

60 | +5 | 65 |

72 | +6 | 78 |

84 | +7 | 91 |

96 | +8 | 104 |

108 | +9 | 117 |

120 | +10 | 130 |

So, let's do it with the help of for loop.

```
table_12 = [12,24,36,48,60,72,84,96,108,120]
table_13 = []
z = 1
for i in table_12
table_13.push(i+z) #using push to add an element in front of list
z = z+1
end
puts "#{table_13}"
```

**z = 1** - We have to add 1,2,3... respectively to each element. And that's what we are doing. Add 1 and then increase z by 1 for the next turn (z = z+1)**table_13.push()** - push() is a function of array which adds an element in front of an array. So, (i+z) will add (12+1),(12+2),...(12+10) in their respective turns in the array.

By writing your codes, your mathematics is gonna be fun.

## each

**each** is just like 'for' loop but with different syntax and in more Ruby style. Let's see an exapmle.

```
marks = [78,98,50,37,45]
marks.each do |m|
puts m
end
```

98

50

37

45

It is same as **for m in marks**. **m** will go to every element of the array marks and will take its value in each iteration. So, same as 'for', in the first iteration, 'm' is 78, in the second, 'm' is 98 and so on.

We can also use each and for on **range**. Let's see the example given below to understand this.

```
a = (1..5)
# using each
a.each do |m|
puts m
end
# using for
for m in a
puts m
end
```

2

3

4

5

1

2

3

4

5

As you have seen in the previous example, we have used 'for' and 'each' on (1..5).

Knowing is not enough, we must apply. Willing is not enough, we must do.

-Bruce Lee