1) Что мешает использовать OUT-параметры? Желание записать композицию нескольких функций и не вводить промежуточных переменных? Это идёт от желания (предрассудка?) быть ближе к обычной математической записи? Не буду возражать на все 100% против возврата структур... но проблемы там возникают. А бонусы - ну давайте подумаем. Если возвращается структура, то она обычно неинкапсулирована (код работает с её составляющими). Те же комплексные числа или векторы. В таком случае я сразу предпочту записать в несколько отдельных строк и с отдельными пром. переменными, а не воротить одно выражение, иллюзорно простое (как тензорная форма, в которой в индексах ногу свернёшь, сложность только маскируется во многих случаях, лучше уж видеть всю пачку обычных уравнений).
Если же объекты действительно инкапсулированные, т.е. атомарны с точки зрения алгоритма, то они обычно являются указательными (длинные числа и т.п.)
2) Умение работать с нумерованными массивами с 0 - фундаментально, потому что любые операции со смещениями (хоть в той же обработке растровых изображений), представления многомерных структур в виде одномерных развёрток требуют думать именно вот от этого нуля. Лучше один раз объяснить, почему ноль, нарисовать массив снутри, добиться, чтоб при написании индекса эта картинка в голове всплывала, отбить житейское понимание индекса "как номера".
3) Цикл с условием в конце не нужен вообще. В алгоритмах - точно не нужен. Единичные случаи его использования как раз возникают далеко не в прикладном коде (типа "попробовать несколько раз выполнить операцию, пока не получится").
Пожелание - не использовать безграмотный термин "цикл с постусловием", иначе сразу ощущение, что человек не знает, что такое постусловие.
1. Эта "сложность" была решена еще в первых компиляторах паскаля...Но ладно..Просто еще раз напомню (если вы призабыли) если дело доходит у первокурсников до программирования (это не везде), то подспудно в курсах ставится целью, в первую очередь, научить студента алгоритмизировать решение задачи для исполнителя... Т.е. есть основное алгоритм - программа всего лишь отображает его на язык доступный компилятору (увы с артефактами)... Моя принципиальная позиция - тем меньше артефактов от ЯП и железа тем лучше...
2. Нда, даже пример у вас "паяльный" а судите обо всем...Есть ведь экономисты, химики, физики, биологи,математики....подавляющее большинство литературы для них содержит "житейское" описание алгорима решений типичных задач, да и у программистов алгоритмические справочники и пособия зачастую "страдают" этими "недостатками"....
3. Разумеется без него МОЖНО обойтись.. но если он вылазит в процессе алгоритмизации задачи то см. п.1. - почему бы ему не быть человечным.
Мое пожелание - попытаться понять что термин - это всего лишь словесное отображение сущности... которая очень часто не вмещается в термин. Я стараюсь оперировать с сущностями, а "шкурка" вторична.