Форум программистов, компьютерный форум, киберфорум
Наши страницы
Basic
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Formanter
12 / 12 / 2
Регистрация: 07.04.2010
Сообщений: 74
1

For-Next в разных BASIC: количество итераций внутри цикла уже не изменить

21.08.2012, 17:37. Просмотров 2370. Ответов 26
Метки нет (Все метки)

Изучал бейсик на ZX-Spectrum. Если кто не знает, это такая клавиатура, которая подключается к ТВ, а вместо дисковода используется кассетный/бабинный магнитофон.
Потом не мало посидел в QBasic под DOS.

Spectrum и QBasic при изменении значения max меняли количество повторов цикла.
Visual Basic
1
2
3
4
5
For i= min to max
что то делаем
If чего-то там случилось then max = max-1
еще что то делаем
Next i
Сегодня столкнулся интересной особенностью For-Next в VBA
Современному VBA нет дела до изменения значения параметра. Было сказано до max. Значит до max, и забудь что ты передумал и поменял значение max.
Пришлось использовать While, но это ж не по фен-шую, для простого перебора оптимален именно For-Next.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2012, 17:37
Ответы с готовыми решениями:

Нужное количество циклов внутри цикла
добрый вечер форумчане. в общем мне надо составить комбинацию M-значных цифр,...

Задать количество итераций цикла
как сделать так чтоб цикл считал столько раз сколько я ввел? почему выводит...

Как посчитать количество итераций цикла?
Не совсем представляю, как это осуществить. Т.е. возвращается х, а еще что-то...

Не выполняется нужное количество итераций цикла
Добрый день ребята!!!! Помогите найти ошибку!!! ...

Изменить переменную внутри цикла for
Сегодня только начал знакомиться с Go. Столкнулся с таким поведением: ...

26
Catstail
Модератор
24167 / 12154 / 2180
Регистрация: 12.02.2012
Сообщений: 19,743
22.08.2012, 20:15 21
Цитата Сообщение от locm Посмотреть сообщение
Достаточно асм вставок в код
- я примерно это и имел в виду.

Добавлено через 1 минуту
Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
прога может работать быстрее и работает на других видах бейсика,
Знаете, я как-то сравнил производительность VB и PowerBasic (авт. R. Zale). К моему ОГРОМНОМУ удивлению, VB оказался быстрее.
0
Quiet Snow
4409 / 1305 / 376
Регистрация: 25.04.2010
Сообщений: 3,350
22.08.2012, 20:23 22
Зачем сразу асм?
Полагаю, это и имелось в виду, кто сейчас станет так извращаться на core i5\i7, не, это полезно
конечно, но геморно сильно, хотя тут были люди которые на 30k строк игрушки писали на асме...

1) радикально изменить алгоритм задачи
Помогает больше чем в 90% случаев, особенно произведя мелкие табличные оптимизации.
Нужно постоянно анализировать прогу на лишние вычисления, их не должно быть вообще.
0
locm
2196 / 921 / 118
Регистрация: 28.10.2011
Сообщений: 2,987
Записей в блоге: 6
22.08.2012, 20:23 23
Цитата Сообщение от Catstail Посмотреть сообщение
Знаете, я как-то сравнил производительность VB и PowerBasic (авт. R. Zale). К моему ОГРОМНОМУ удивлению, VB оказался быстрее.
Ну да, VB немного быстрее чем PowerBasic. http://vbnet.ru/articles/showarticle.aspx?id=220
Таблица в конце страницы. Правда, там довольно древние версии бейсика. Возможно что в новых лучше с производительностью.
0
Dragokas
22.08.2012, 22:09
  #24

Не по теме:

Цитата Сообщение от Formanter Посмотреть сообщение
Современному VBA нет дела до изменения значения параметра. Было сказано до max. Значит до max, и забудь что ты передумал и поменял значение max.
Зато я могу делать вот так:
Visual Basic
1
for i = i to max
И пусть это будет называться моим плохим стилем.

1
Catstail
Модератор
24167 / 12154 / 2180
Регистрация: 12.02.2012
Сообщений: 19,743
22.08.2012, 22:26 25
Цитата Сообщение от Dragokas Посмотреть сообщение
for i = i to max
- что это даёт?

Вообще же, весь пафос ТС был в том, что, мол в ZX можно было менять в теле цикла граничное значение... И как этого не хватает в VBA.

Я избегаю давать ригористичные советы (и крайне негативно сам на них реагирую), но если бы мой сын не был бы уже взрослым, а учился, скажем, в 7-м классе, то увидев у него подобный код, я бы сказал: "Никогда так не делай!"
0
Dragokas
23.08.2012, 00:21
  #26

Не по теме:

Переменную сэкономил :D
Теперь, благодаря Formanter, понял, что лучше так не делать.

0
Казанский
14651 / 6128 / 1645
Регистрация: 24.09.2011
Сообщений: 9,674
03.09.2012, 10:01 27
Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
Человек не спроста задал этот вопрос, значит он упёрся в эту производительность и есть вероятность,
что он пытается что-то мелкое делать и видит существенную разницу ставя разные циклы.
Не думаю. ТС пишет:
Цитата Сообщение от Formanter Посмотреть сообщение
Изучал бейсик на ZX-Spectrum... Потом не мало посидел в QBasic под DOS... Сегодня столкнулся интересной особенностью For-Next в VBA
Мне кажется, ТС переносил алгоритм с QB на VBA или стал писать так, как привык на QB, а программа не заработала. О производительности речи нет.
Мне лично больше нравится реализация цикла For-Next в VB*, потому что можно использовать выражения при задании цикла:
Visual Basic
1
For i = min To a * (b + c) Step d / e
При этом выражения a * (b + c) и d / e будут вычислены ОДИН раз и приведены к типу переменной цикла, что обеспечивает максимальную скорость цикла. Если цикл For-Next отслеживает верхнюю границу (и шаг), это означает, что эти выражения должны вычисляться при каждой итерации. Значит, если я не хочу менять границу и шаг изнутри цикла, и обеспечить максимальную скорость, я должен использовать доп. переменные:
Visual Basic
1
2
3
tmp1 = a * (b + c)
tmp2 = d / e
For i = min To tmp1 Step tmp2
То есть в VB*: For-Next для максимальной скорости, Do-Loop для максимальной гибкости. Все логично
2
03.09.2012, 10:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2012, 10:01

Функция которая возвращает количество итераций цикла
Написать функцию, которая для заданного в качестве параметра числа возвращает...

Подсчитать количество итераций цикла в единицу времени
Хочу подсчитать производительность проги, зациклив её на час и подсчитав...

Количество итераций цикла с одинаковым значением кратного
Здраствуйте. Подскажите пожалуйста как подсчитать количество итераций с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru