Skipping within a For Loop - Printable Version +- QB64 Phoenix Edition (https://staging.qb64phoenix.com) +-- Forum: QB64 Rising (https://staging.qb64phoenix.com/forumdisplay.php?fid=1) +--- Forum: Code and Stuff (https://staging.qb64phoenix.com/forumdisplay.php?fid=3) +---- Forum: Help Me! (https://staging.qb64phoenix.com/forumdisplay.php?fid=10) +---- Thread: Skipping within a For Loop (/showthread.php?tid=1001) |
RE: Skipping within a For Loop - Pete - 10-23-2022 Exactly. In these examples _CONTINUE only promotes a coding style. Without it, and still using just 2 and 8, we get... Code: (Select All) PRINT RE: Skipping within a For Loop - Dimster - 10-23-2022 Good catch OldMoses. RE: Skipping within a For Loop - PhilOfPerth - 10-23-2022 (10-23-2022, 03:52 PM)SMcNeill Wrote: For x = 50 to -50That's very elegant! Once again, a new (to me) function. I've never come across _continue before, but it will become another tool in my arsenal (no, Pete, don't go there)! RE: Skipping within a For Loop - James D Jarvis - 10-23-2022 And we aren't' supposed to just jump out of the ... oh i mean goto out of the loop because....? RE: Skipping within a For Loop - Pete - 10-23-2022 This is why I miss Bill. Who better to explain the physical properties of having a new tool in your arsenal? In other news, I can't figure out what James is GETtng at. Pete - Sorry Phil, you know I had to go there after that set up... RE: Skipping within a For Loop - OldMoses - 10-23-2022 As Pete demonstrated, there are often quicker and more concise ways to skip a loop iteration. I use it fairly often, but it's hard to justify, except in rare circumstances. I agree, it's a style thing. It can make code a little harder to read for debugging too, since there's fewer indentation blocks over using an IF ... END IF block. I like _CONTINUE for things like the following: active% = 5 FOR x% = 1 to 10 IF x% = active% THEN _CONTINUE 'code to determine distance between objects x% and active% NEXT x% It tightens the line count (but not the typing) slightly from: active% = 5 FOR x% = 1 to 10 IF x% <> active% THEN 'code to determine distance between objects x% and active% END IF NEXT x% RE: Skipping within a For Loop - James D Jarvis - 10-23-2022 I know this is poor form but this makes me wonder why something like _continue exits: Code: (Select All) For i = 1 To 10 Next thing I know someone's going to show me the EXIT. RE: Skipping within a For Loop - Pete - 10-24-2022 I know. I can't say I'm a fan of _CONTINUE, either. To the example James posted I'd say eat that pasta before it gets cold! Of course this would be perfectly acceptable, right Steve? Code: (Select All) For i = 1 To 10 In the old days, before SELECT CASE, something like this would be an alternative to use IF/THEN/ELSE I have to admit in some code of mine dated back to 2000 I've found the classic... Code: (Select All) FOR I = 1 TO 10 I coded all caps and no indentation or remarks, back then. Anyway, I wonder if the above example is the way the compiler translates this to the C/C++ output or if it encases the snippet into the C/C++ equivalent of: Code: (Select All) FOR I = 1 to 10 Pete RE: Skipping within a For Loop - mnrvovrfc - 10-24-2022 (10-23-2022, 03:38 PM)Dimster Wrote: :I've seen something like this in somebody else's program which infuriated me. Even though it works and most BASIC interpreters accept it. Using "NEXT" like that could cause outright confusion, for debugging the program many moons later or for somebody else who must look at the program, if the variable is never provided after "NEXT" and code is not commented. Try going three or more levels of "FOR... NEXT" nesting and using "NEXT" instead of "_CONTINUE". I guess the Freebasic developers dreaded that and that's why after "CONTINUE", in their product must specify which leading loop statement, just like with "EXIT". Also they have "EXIT SELECT" which I can't conceive a purpose. So much fuss only to have local variables inside an "IF... END IF" or "SELECT CASE... END SELECT" block. Without "_CONTINUE" I found the example program in "DO... LOOP" in the Wiki very clever. Having "_CONTINUE" around makes programs more readable, however. I have a weakness that sometimes I don't trust boolean evaluation even in Lua, which makes me write a condition that I want false so that something is executed. So often I'm doing something like: Code: (Select All) if a == 5 then In Lua could safely rewrite to "if not a == 5 then" or "if a ~= 5 then" but of course, in many program-scripts I wrote it's more complex than that. :/ (10-24-2022, 12:11 AM)Pete Wrote: :I have done the same thing, and I have even written a "preprocessor" for QB64 trying to fake "_CONTINUE" in that manner. It was difficult figuring out block "IF" statements which was the main reason why my attempt failed. :/ RE: Skipping within a For Loop - Dimster - 10-24-2022 Don't you think there is a big difference between _Continue and GOTO? The ability to exit just one LOOP or exit the entire LOOPing seems to me to be a lot different then sending the flow of the program all over the place with GOTO. In some ways _Continue reminds me of RETURN. I wonder if an Error Trapping routine would work with _Continue. Maybe it would need a line number to continue from. |