Solved

Help using a loop to make code more efficient

Posted on 2006-06-15
8
246 Views
Last Modified: 2010-04-23
Is it possible to make the following code more efficient using a loop? I tried but can't figure it out.

            Dim LocationX as integer
            Dim LocationY as integer

            'nw
            Dim shrtNWCoordinateX As Short = LocationX + 16
            Dim shrtNWCoordinateY As Short = LocationY - 16
            Dim shrtNWZone As Short = GetZoneID(shrtNWCoordinateX, shrtNWCoordinateY)

            'ne
            Dim shrtNECoordinateX As Short = LocationX + 16
            Dim shrtNECoordinateY As Short = LocationY + 16
            Dim shrtNEZone As Short = GetZoneID(shrtNECoordinateX, shrtNECoordinateY)

            'sw
            Dim shrtSWCoordinateX As Short = LocationX - 16
            Dim shrtSWCoordinateY As Short = LocationY - 16
            Dim shrtSWZone As Short = GetZoneID(shrtSWCoordinateX, shrtSWCoordinateY)

            'se
            Dim shrtSECoordinateX As Short = LocationX - 16
            Dim shrtSECoordinateY As Short = LocationY + 16
            Dim shrtSEZone As Short = GetZoneID(shrtSECoordinateX, shrtSECoordinateY)
0
Comment
Question by:Hepen
  • 4
  • 2
  • 2
8 Comments
 
LVL 11

Expert Comment

by:anyoneis
ID: 16917653
What do you mean by more efficient? Faster executing? Less typing?

Also, are all 3 of the results needed or do you just need the zone?

David
0
 

Author Comment

by:Hepen
ID: 16917662
all the results are needed because the zones might be different

more efficient meaning less lines of code but maybe with a loop . it seems i'm storing four different zone values in four different variables? I heard of arrays or something 'm not sure.
0
 
LVL 11

Expert Comment

by:anyoneis
ID: 16917673
There's a few less additions here:

            'nw
            Dim shrtNWCoordinateX As Short = LocationX + 16
            Dim shrtNWCoordinateY As Short = LocationY - 16
            Dim shrtNWZone As Short = GetZoneID(shrtNWCoordinateX, shrtNWCoordinateY)

            'ne
            Dim shrtNECoordinateX As Short = shrtNWCoordinateX
            Dim shrtNECoordinateY As Short = LocationY + 16
            Dim shrtNEZone As Short = GetZoneID(shrtNECoordinateX, shrtNECoordinateY)

            'sw
            Dim shrtSWCoordinateX As Short = LocationX - 16
            Dim shrtSWCoordinateY As Short = shrtNWCoordinateY
            Dim shrtSWZone As Short = GetZoneID(shrtSWCoordinateX, shrtSWCoordinateY)

            'se
            Dim shrtSECoordinateX As Short = shrtSWCoordinateX
            Dim shrtSECoordinateY As Short = shrtNECoordinateY
            Dim shrtSEZone As Short = GetZoneID(shrtSECoordinateX, shrtSECoordinateY)
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 11

Accepted Solution

by:
anyoneis earned 500 total points
ID: 16917696
By needing all results, I mean't something like this

            'nw
            Dim shrtNWZone As Short = GetZoneID(LocationX + 16, LocationY - 16)

            'ne
            Dim shrtNEZone As Short = GetZoneID(LocationX + 16, LocationY + 16)

            'sw
            Dim shrtSWZone As Short = GetZoneID(LocationX - 16, LocationY - 16)

            'se
            Dim shrtSEZone As Short = GetZoneID(LocationX - 16, LocationY + 16)

0
 
LVL 11

Expert Comment

by:anyoneis
ID: 16917698
To answer your question directly, I don't see how loops would help here.

:-David
0
 
LVL 12

Expert Comment

by:vb_jonas
ID: 16917817
Not that you need it, but I had some fun with a loop and sin and cos: :-)

        Dim LocationX As Integer
        Dim LocationY As Integer

        Dim NewLocationX As Integer
        Dim NewLocationY As Integer
        Dim i As Integer
        Dim r As Single
        Dim k As Single
        k = (Math.Sqrt(2) / 2)

        Dim GoDistance As Integer = 16

        For i = 0 To 3

            r = (i * 2 + 1) / 4

            NewLocationX = Math.Sin(Math.PI * r) / k * GoDistance + LocationX
            NewLocationY = Math.Cos(Math.PI * r) / k * GoDistance + LocationY

            Select Case i
                Case 0 'nw
                    Dim shrtNWZone As Short = GetZoneId(NewLocationX, NewLocationY)
                Case 1 'sw
                    Dim shrtSWZone As Short = GetZoneId(NewLocationX, NewLocationY)
                Case 2 'se
                    Dim shrtSEZone As Short = GetZoneId(NewLocationX, NewLocationY)
                Case 3 'ne
                    Dim shrtNeZone As Short = GetZoneId(NewLocationX, NewLocationY)
            End Select

        Next
0
 
LVL 12

Expert Comment

by:vb_jonas
ID: 16917835
sorry swap the nw and ne, sw and se. case 0 'ne ...
0
 

Author Comment

by:Hepen
ID: 16917837
LOL nice
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to create and use a custom WaterMark textbox class.  The custom WaterMark textbox class allows you to set the WaterMark Background Color and WaterMark text at design time.   IMAGE OF WATERMARKS STEPS Create VB …
I think the Typed DataTable and Typed DataSet are very good options when working with data, but I don't like auto-generated code. First, I create an Abstract Class for my DataTables Common Code.  This class Inherits from DataTable. Also, it can …
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question