Цикл For...next

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Цикл For...next

Сообщение Sholah » 29.04.2006 (Сб) 11:29

Перейду сразу к вопросу. Как в тело цикла вставить условие, такое, чтобы при его невыполнении цикл дальше не продожал работу. Пробовал-ругается, что For без Next.
Код: Выделить всё

1: For i = 0 To 4
    If ExAr(i) > ExAr(i + 1) Then
     t = ExAr(i)
     ExAr(i) = ExAr(i + 1)
     ExAr(i + 1) = t
if FLAG=true then
     GoTo 1
    End If
   Next i

Заранее благодарен.
Последний раз редактировалось Sholah 29.04.2006 (Сб) 15:08, всего редактировалось 1 раз.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.04.2006 (Сб) 11:50

Для начала, было неплохо проявить долю уважения к участникам форума и отформатировать приведённый код.

После чего можно задаться вопросом: а что если заменить условие на обратное?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Сообщение pronto » 29.04.2006 (Сб) 12:45

Конечно, сложно понимать такие вопросы, но, возможно, для спрашивающего это немного прояснит картину...

Код: Выделить всё
1: For i = 0 To 4
      If ExAr(i) > ExAr(i + 1) Then
         t = ExAr(i)
         ExAr(i) = ExAr(i + 1)
         ExAr(i + 1) = t
         'If FLAG = True Then GoTo 1
      Else
         Exit For
      End If
   Next i
O, sancta simplicitas!

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 29.04.2006 (Сб) 15:05

Хочу извиниться за непотребный вид куска кода, но я на этом форуме впервые и многих тонкостей не знаю-при вставке копи-пастем код был вполне отформатированным, что с нима произошло потом-про то не ведаю, но впредь буду внимательнее.
2 pronto
Теперь вылазиет ошибка, что End IF без блока IF. Из огня да в полымя.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.04.2006 (Сб) 15:07

Не верю.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 29.04.2006 (Сб) 15:12

Опять-таки жутко извиняюсь, виновата моя рассеяность. Все правильно, всем спасибо за посильную помощь.

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 01.05.2006 (Пн) 16:00

Решил не создавать новую тему-нечего форум загрязнять. Собсно вопрос - что такое Exit For, и есть ли что-то, наподобие этого оператора, только действующего диаметрально противоположно?
Заранее благодарен

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 01.05.2006 (Пн) 16:05

Exit For - оператор, позволяющий делать при необходимости досрочный выход из цикла.
Код: Выделить всё
For i = 1 To 10
    MsgBox i
    If i = 5 Then Exit For
Next i

В данном примере будет только пять сообщений вместо десяти.
Диаметрально противоположно - это как?

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 01.05.2006 (Пн) 17:07

Я подозревал, что Exit For - выход из цикла, поэтому и написал, что надо что-то типа того же только наоборот.
Код: Выделить всё

If FL = True Then
е=у
FL = False
Else
Exit For
End If

С помощью какого оператора можно с истинным условием продолжить работу цикла?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.05.2006 (Пн) 17:15

С помощью оператора БудуЧитатьОтветыНаСвойВопрос().

GSerg писал(а):а что если заменить условие на обратное?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 01.05.2006 (Пн) 17:40

Я не силен в программировании на васике (да проятят меня гуру Basik'а), но если если сделать так, как ты сказал, то получится след. картина:
Код: Выделить всё

If FL = false Then
exit for
Else
тут будет продолжение цикла.
End If

Скорее всегоя я чего-то недопонимаю, и, если не трудно, не мог бы ты, GSerg, написать работоспособный код?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.05.2006 (Пн) 17:43

А этот код не работоспособен?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 01.05.2006 (Пн) 17:51

Собсно вопрос - что такое Exit For, и есть ли что-то, наподобие этого оператора, только действующего диаметрально противоположно?

Что может быть противоположным выходу из цикла? Наверное вход в него :lol:
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 01.05.2006 (Пн) 18:00

Блин, совсем я тогда не догоняю. Может кто-нибудь приведет кусок кода, наглядно показывающий что впичавать между Else и End if?
Буду презнателен.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.05.2006 (Пн) 18:03

Продолжение цикла.


Если, конечно, под словами "продолжение цикла" автор вопроса понимает то же, что все остальные собравшиеся.

"Продолжение цикла" - это действие, которое заключается в чём?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 01.05.2006 (Пн) 18:05

А тот код, который приведён выше -- плохой?
То же самое, но другими словами:
Код: Выделить всё
If УсловиеВыполняется Then
   ...
   ...
Else
   Exit For
End Ff
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

Sholah
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 29.04.2006 (Сб) 11:24

Сообщение Sholah » 01.05.2006 (Пн) 19:06

2 GSerg
Да! Вообщем я думаю, что многие из здесь присутствующих меня недопонимают.
Что я хочу донести-если в теле цикла условие выполняется, то продолжить работу этого цикла, если нет, то Exit For. Думаю сейчас должнобыть немного понятней.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 01.05.2006 (Пн) 19:24

Sholah
Вот твой обычный цикл:
Код: Выделить всё
For Переменная=НачальноеЗначение To КонечноеЗначение
   Тело цикла
Next Переменная
А вот цикл с выходом
Код: Выделить всё
For Переменная=НачальноеЗначение To КонечноеЗначение
   If УсловиеВыхода Then Exit For

   Тело цикла
Next Переменная
Только мне кажется, что кое кто прикалывается просто ...
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 01.05.2006 (Пн) 19:38

vvs_adm
Только мне кажется, что кое кто прикалывается просто ...
Это точно.
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 181

    TopList  
cron