С Новым годом! Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
13 / 13 / 2
Регистрация: 07.04.2010
Сообщений: 74

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

21.08.2012, 17:37. Показов 4366. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.08.2012, 17:37
Ответы с готовыми решениями:

Задать количество итераций цикла
как сделать так чтоб цикл считал столько раз сколько я ввел? почему выводит ненужные цифры? #include <stdio.h> #include...

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

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

26
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
22.08.2012, 20:15
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от locm Посмотреть сообщение
Достаточно асм вставок в код
- я примерно это и имел в виду.

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

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

Не по теме:

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

1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
22.08.2012, 22:26
Цитата Сообщение от Dragokas Посмотреть сообщение
for i = i to max
- что это даёт?

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

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

Не по теме:

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

0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
03.09.2012, 10:01
Цитата Сообщение от >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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.09.2012, 10:01
Помогаю со студенческими работами здесь

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

Задать количество итераций цикла по несмежным диапазонам
Доброго времени суток всем! Столкнулся с такой задачей: есть цикл для заполнения ячеек определенных строк значением, для которого нужно...

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

Подсчитать количество итераций цикла в единицу времени
Хочу подсчитать производительность проги, зациклив её на час и подсчитав количество итераций. Как это проще всего сделать? Не обязательно...

Количество итераций цикла с одинаковым значением кратного
Здраствуйте. Подскажите пожалуйста как подсчитать количество итераций с одинаковым значением кратного. Вот незаконченный код: x=30 a=0 ...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru