Do loops can often be replaced with Map.
For loops and Do loops are inefficient in Mathematica. Better to use functions like Table.
For does not localize variables:
i = 1 For[, i < 5, i++, Print[i]]
is the same as:
For[i = 1, i < 5, i++, Print[i]]
Also i keeps its value after the For is done:
i =. For[i = 1, i < 5, i++, Print[i]] i
returns 5
There are many reasons to avoid the For loop in favor of the Do loop, outlined pretty well in this post, but I don't believe efficiency is one of the reasons. And the decision to use Table or Do is entirely up to whether you want to return a list of values or not - the same difference between Map and Scan.
For
Do
Table
Map
Scan
People will often use the Do loop inefficiently, by first creating a list and then using AppendTo during each iteration, which is definitely inefficient. But if you just want to do something a certain number of times, then Do is the best way to go.
AppendTo