FreeBasic
Главная
Вход
Регистрация
Вторник, 06.06.2023, 10:14Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Оффтоп » Флудилка » Предложение отправить issue по поводу цикла for
Предложение отправить issue по поводу цикла for
electrikДата: Суббота, 20.05.2023, 03:42 | Сообщение # 1
Полковник
Группа: Друзья
Сообщений: 176
Репутация: 3
Статус: Offline
Всем часто приходится работать с циклом 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, но бейсик уже не школьник.
Короче, какие ещё придумаете конструкции, которые не будут выбиваться из синтаксиса бейсика?
 
haavДата: Суббота, 20.05.2023, 14:49 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1339
Репутация: 49
Статус: Offline
Это же почти аналог сишной конструкции FOR. Вряд ли кому-то это придется по вкусу. Хотя , кто знает.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
zamabuvaraeuДата: Вторник, 23.05.2023, 07:00 | Сообщение # 3
Подполковник
Группа: Друзья
Сообщений: 138
Репутация: 4
Статус: Offline
Я против.
Язык уже итак раздут дублирующими и неоднозначными конструкциями, и должен быть только один способ получения результата.
 
ntvgjhfnjДата: Вторник, 23.05.2023, 18:37 | Сообщение # 4
Лейтенант
Группа: Проверенные
Сообщений: 44
Репутация: 1
Статус: Offline
Цитата "zamabuvaraeu" ()
Язык уже итак раздут дублирующими и неоднозначными конструкциями, и должен быть только один способ получения результата.

Способы нужны разные или один ,но универсальный.


polopok
 
sashasoldДата: Среда, 24.05.2023, 19:14 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 36
Репутация: 0
Статус: Offline
"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
 
Форум » Оффтоп » Флудилка » Предложение отправить issue по поводу цикла for
  • Страница 1 из 1
  • 1
Поиск: