На счет циклов while и repeat- таково условие задачи.
Я уже видел в другом вашем топике, что так вас заставляют писать, чтобы вы "научились пользоваться всеми типами циклов". Только проблема вся в том, что у каждого типа циклов есть своя специфика, и чтобы научить вас пользоваться ими
совсем правильно, по-хорошему надо эту специфику давать в виде разных задач. Чтобы вы, глядя на задачу, сами определяли, какой цикл больше походит в данном случае.
-- 07.01.2015, 01:05 --Munin написал мне сообщение в ЛС, по договоренности с ним копирую переписку сюда.
Munin писал(а):
Далее. Если после операторов for, while или if у вас идет один оператор, то использовать begin .. end необязательно. Это
Можно переписать так:
Во-первых, это не обязательно хорошо для новичка. (Позабудет добавить скобки при расширении тела цикла.)
Во-вторых, это вообще не факт, что good habit. При интенсивных правках кода лучше держать скобки включёнными.
Я бы рекомендовал даже если хочется скобки убрать, то только в финальной отлаженно-вылизанной версии.
И даже если так, знаю только один аргумент за убирание скобок: чтобы текст функции стал короче в строках и обозримее (принцип "функция должна умещаться на один экран").
Да, возможно, вы правы. Потенциально это источник ошибок, и источников подобного рода быть не должно. Но, как мне кажется, именно в этом случае проблема решается просто. Во всех книгах, которые я читал, язык был хорошо и систематически описан. Конструкции
for,
if и
while выполняют ровно один оператор, конструкция
begin .. end - это тоже "один оператор". Лично мне (и большинству моих знакомых) этого было достаточно, чтобы никогда не ошибаться. Ну и по ощущениям (от вопросов на форумах) по этой причине проблем почти не возникает.
Во время отладки я тоже часто оставляю эти скобки. А вот когда они очень бы мешали - это если надо выполнить цикл
for, в котором один
if - then - else, и везде по одному оператору. 3 строки или 11 - существенная разница.
-- 07.01.2015, 01:05 --Munin писал(а):
rockclimber писал(а):
Да, возможно, вы правы. Потенциально это источник ошибок, и источников подобного рода быть не должно. Но, как мне кажется, именно в этом случае проблема решается просто. Во всех книгах, которые я читал, язык был хорошо и систематически описан. Конструкции for, if и while выполняют ровно один оператор, конструкция begin .. end - это тоже "один оператор". Лично мне (и большинству моих знакомых) этого было достаточно, чтобы никогда не ошибаться. Ну и по ощущениям (от вопросов на форумах) по этой причине проблем почти не возникает.
Во время отладки я тоже часто оставляю эти скобки. А вот когда они очень бы мешали - это если надо выполнить цикл for, в котором один if - then - else, и везде по одному оператору. 3 строки или 11 - существенная разница.
По поводу
if - then - else - вот у меня железное правило никогда не писать оператор в одну строчку с условием. Так что для меня уже один он занял бы 4 строки (даже без скобочек), итого всего 5. Хотя, конечно, не 11.
Я настолько железно не придерживаюсь, но обычно тоже в 4 строки пишу. Только если совсем уж короткие выражения (в том числе условие в
if), пишу в две.