Functional programming of course maps (heh) very cleanly to this line of thought.
But most people hate maths and this way of thinking. In contrast, you get first year students "re-discovering" OOP ever year - for instance a common trick to make them learn design patterns is just to put a problem that calls for it in front of them, and three times out of four in my experience they will even come up with a pattern name close to the original ones.
It is however pretty easy to implement something like racket's for loops on scheme using lower level macros, and there are some available.
Implementing something like common lisps iter is actually not very hard, and even improving upon racket's for loops is far from complex.
I believe that Scheme's DO is looping.