A more program space efficient way of doing ta whole heap of IFs????


Closed Thread
Results 1 to 18 of 18

Hybrid View

  1. #1
    Join Date
    Jan 2009
    Location
    Miami, Florida USA
    Posts
    704


    Did you find this post helpful? Yes | No

    Default Re: A more program space efficient way of doing ta whole heap of IFs????

    Quote Originally Posted by Darrel Taylor View Post
    Code:
    if supply_in>= 253  then 
        max_duty = 154
    ELSEIF supply_in> 250 then 
        max_duty = 155
    ELSEIF supply_in> 248 then 
        max_duty = 156
    ELSEIF supply_in> 245 then 
        max_duty = 157
    ELSEIF supply_in> 240 then 
        max_duty = 159
    ELSEIF supply_in> 237 then 
        max_duty = 160
    ELSEIF supply_in> 234 then 
        max_duty = 161
    ELSEIF supply_in> 231 then 
        max_duty = 163
    ELSEIF supply_in> 229 then 
        max_duty = 165
    ELSEIF supply_in> 226 then 
        max_duty = 167
    ELSEIF supply_in> 223 then
        max_duty = 169
    ELSEIF supply_in> 220 then 
        max_duty = 172
    ELSEIF supply_in> 218 then 
        max_duty = 175
    ELSEIF supply_in> 215 then 
        max_duty = 179
    ELSEIF supply_in> 212 then 
        max_duty = 181
    ELSEIF supply_in> 210 then 
        max_duty = 182
    ELSEIF supply_in> 207 then 
        max_duty = 184
    ELSEIF supply_in> 204 then 
        max_duty = 188
    ELSEIF supply_in> 201 then 
        max_duty = 191
    ELSEIF supply_in> 199 then 
        max_duty = 195
    ELSEIF supply_in> 196 then 
        max_duty = 214
    ELSEIF supply_in> 193 then 
        max_duty = 238
    ELSEIF supply_in> 187 then 
        max_duty = 251
    ELSE
        max_duty = 255
    ENDIF
    Darrel,

    Let me ask a very dumb question here about your ELSEIF program . Lets say for example that variable supply_in= 251. Does the program exits the IF..ENDIF block after it encounters the lines

    ELSEIF supply_in> 250 then
    max_duty = 155

    or does it keep going through the rest of the ELSEIF lines in the IF..ENDIF block? I checked the manual but I didn't see the answer to my question.

    Thanks,

    Robert
    "No one is completely worthless. They can always serve as a bad example."

    Anonymous

  2. #2
    Join Date
    Oct 2009
    Location
    Utah, USA
    Posts
    427


    Did you find this post helpful? Yes | No

    Cool Coding Examples

    Darrel,

    I have to say your coding examples are nothing short of excellent.

    That is one place that I think the PBP manual could be improved. I came over from the basic stamp, their manual was quite good with examples.

    The hardest thing for me to do is to go from a technical description of a given PBP command to a real world working piece of code. Whereas, once I see how to correctly use a given PBP statement, then I can usually write my way through my own code. Where I usually have trouble is with the syntax and good examples are invaluable. There seems to be a lot of wasted blank paper in the manual that could be filled up with more syntax examples.

    If MElabs could produce a webpage where a person could goto and enter any given PBP statement and see a few (several) examples of good code, it would help the newbie greatly. I know there are a few of those over at MElabs but there could be more.

    Please pass this along to the MElabs people .

    You are a real asset to the group... and I look forward to future releases of PBP that might?? include some of your excellent coding work implemented as new PBP statements.
    Last edited by Heckler; - 27th May 2011 at 15:01.
    Dwight
    These PIC's are like intricate puzzles just waiting for one to discover their secrets and MASTER their capabilities.

  3. #3
    Join Date
    Dec 2005
    Posts
    1,073


    Did you find this post helpful? Yes | No

    Default Re: A more program space efficient way of doing ta whole heap of IFs????

    If there is a mathematical relationship between supply_in and max_duty, it might be more efficient to just compute max_duty as supply_in varies.

    Also, if the relationship could be refined to eliminate the max _duty granular discontinuities (i.e. if it can vary in steps of 1 or any constant step), a loop might be better.
    Last edited by dhouston; - 27th May 2011 at 16:49.

  4. #4
    Join Date
    Mar 2009
    Posts
    653


    Did you find this post helpful? Yes | No

    Default Re: A more program space efficient way of doing ta whole heap of IFs????

    Quote Originally Posted by dhouston View Post
    If there is a mathematical relationship between supply_in and max_duty, it might be more efficient to just compute max_duty as supply_in varies.

    Also, if the relationship could be refined to eliminate the max _duty granular discontinuities (i.e. if it can vary in steps of 1 or any constant step), a loop might be better.

    I'd considered that, but alas the supply_in vs the max_duty required is all over the shop....hence the multiple ifs!

  5. #5
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default Re: Coding Examples

    Quote Originally Posted by Heckler View Post
    The hardest thing for me to do is to go from a technical description of a given PBP command to a real world working piece of code. Whereas, once I see how to correctly use a given PBP statement, then I can usually write my way through my own code. Where I usually have trouble is with the syntax and good examples are invaluable.
    This forum, PBPGroup, Rentron.com & Melabs website are full of handy code example, take a pick, modify them, try to make them better.

    To me the PBP book is perfect. It explain what a specific command do. Just build a test program around it and you're all set. There's by far worst reference book... check MPASM assembler, most (see any) API/DLL reference... list is long

    Programming... It's like everything, practice makes "perfect", the more you do, the easier it gets. Call it experience if you like. It take months, years, decade... it's a never ending learning process... welcome on the dark side
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  6. #6
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,172


    Did you find this post helpful? Yes | No

    Default Re: A more program space efficient way of doing ta whole heap of IFs????

    Quote Originally Posted by rsocor01 View Post
    Darrel,

    Let me ask a very dumb question here about your ELSEIF program . Lets say for example that variable supply_in= 251. Does the program exits the IF..ENDIF block after it encounters the lines

    ELSEIF supply_in> 250 then
    max_duty = 155
    ...
    That one''s easy (programmer by trade), it exits the nested IFs after assigning 155.

  7. #7
    Join Date
    Jan 2009
    Location
    Miami, Florida USA
    Posts
    704


    Did you find this post helpful? Yes | No

    Default Re: A more program space efficient way of doing ta whole heap of IFs????

    Quote Originally Posted by Demon View Post
    That one''s easy (programmer by trade), it exits the nested IFs after assigning 155.
    Ooh, I see. Thank you Robert.
    "No one is completely worthless. They can always serve as a bad example."

    Anonymous

  8. #8
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,172


    Did you find this post helpful? Yes | No

    Default Re: A more program space efficient way of doing ta whole heap of IFs????

    When in doubt, use debug feature.

    If you don't have a debug feature (using Wordpad instead of an IDE), then make one up. Just put in a bunch of LEDs on empty ports, and then make them blink different ways in different places in your code.

    Or even better, get the easiest LCD on the market, the HD44780, and send debug messages (abbreviated syntax, just for example):

    Code:
     
    LCDOUT "Program start", var1, var2
     
    Label_A:
      LCDOUT "Label A", var1, var2
      Program logic...
      IF var1 < var2 then goto Label_A
     
    Label_B:
      LCDOUT "Label B", var1, var2
      More program logic...
      IF var1 < var2 then goto Label_B
     
    LCDOUT "Program end", var1, var2
    We do something similar as mainframe programmers; it's called using DISPLAY statements. There is no limit to what you can use as a debug feature. If it works for you, then it's perfect.

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts