Всем часто приходится работать с циклом for. Некоторые занимаются адаптацией программ с других языков. как вот вам такая конструкция, ещё не надоела?
Код
for i = 1 to size-1
Под size, подразумевается не константа, а переменная. конечно можно сделать так:
Код
while i < size i +=1 wend
А если это цикл, в котором сложное ветвление с continue! Как мы знаем, что только в цикле for continue делает инкремент переменной. Идея понятна? в сложных ветвлениях просто можно забыть сделать инкремент. Поэтому, в некоторых случаях for всё же лучше. А теперь представим вложенные циклы в которых идёт бессмысленный декремент на единицу. Да и опять таки, при переписывании кода, по запарке можно забыть этот декремент вписать. Непонятно, почему в бейсиках этот вопрос до сих пор не решён. Вопрос, какой синтаксис им предложить? а вот тут даже не знаю. Ну скажем:
Код
for i = 1 to < size
Может странно выглядит. Можно иначе, но это уже не будет увязываться с константами:
Код
for i = 1 to size<10
Ну а если я захочу написать:
Код
for i = 1 to 10 < 10
Стрёмненько выглядит. Первый вариант с константами будет красивей:
Код
for i = 1 to < 10 /code] Стоит ли что-то менять, или пусть бейсик будет как есть? Мне кажется, что некоторые фишки добавлять нужно, ибо бейсик уже не для обучения в школе. В школьных задачах действительно проще писать в лоб от 1 до 10, но бейсик уже не школьник. Короче, какие ещё придумаете конструкции, которые не будут выбиваться из синтаксиса бейсика?
Это же почти аналог сишной конструкции FOR. Вряд ли кому-то это придется по вкусу. Хотя , кто знает. Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
"for i = 1 to size-1" Чтобы не сбится, и для некой оптимизации я пишу predel = size-1 for i = 1 to predel 'Тело Next
А если много ветвлений, вложенных циклов, то может лучше i=0 Do until i=predel i+=1 'Тело Loop
Do loop вообще универсальней, а с подменой на predel код быстрее, при большом количестве повторений
Добавлено (25.05.2023, 00:02) --------------------------------------------- Да и еще если применять сложные условия и разрыв цикла For i=1 to abv If a=b then exit for Next Отслеживаем значение i
Интересно, что если цикл прерывается при exit for то значение i ожидаемо А вот если цикл завершается полностью, то i не будет равно abv как ожидается, а будет abv+1. Так что видимо цикл for next, реализоан внутри, через ограничение i>abv
Так, вспомнился нюанс)
Сообщение отредактировал sashasold - Четверг, 25.05.2023, 00:03