• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Sir Pereira

[VB.Net] While, Until, Loop, etc

16 mensagens neste tópico

Boas pessoal, gostaria aqui de requisitar um pequeno tutorial simples e bem explicadinho em português de preferência sobre:

  • While
  • Until
  • Loop
  • For
  • Each

  • E mais algum deste tipo :(

[glow=red,2,300]Cumps[/glow]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom, posso-te ajudar com alguns...

dim i as integer
i = 0
Do while i < 20
       Msgbox("Estás na posição " & i & " do while")
       i += 1 'Podes usar também i = i + 1, mas eu prefiro assim
Loop 'vai repetir o while enquanto o i for menor que 20, ou seja, até 19

o For:

dim i as integer
for i = 0 to 20
       Msgbox("Estás na posição " & i & " do for")
Next i

Bem o ultimo não tens de adicionar nada, ele vai repetir a condição até chegar a 20, depois avança no código, até agora foi o k apanhei disso.

Espero ter ajudado, e em português... :(

*Editado*

Podes fazer cenas mais elaboradas, tenta perceber o código abaixo

    Public Sub seller()
        If lblstatus.Text <> "Logged In" Then 'Isto é práticamente para ver se o user está connectado (PRECISAS DO WRAPPER QUE POSTEI NOUTRA THREAD PARA CORRER ISTO)
            MsgBox("You have to be logged in")
            Exit Sub
        Else
            Dim currentheight As Integer = Me.Height 'Aqui gravo a informação do tamanho da form para mais tarde a voltar a pôr no sitio.
            mandarformb(300) ' aki mando a form para baixo de forma a mostrar o que está escondido... (já vou postar o código disto)
            PictureBox2.Visible = True
            fishname.Visible = True
            fishquantity.Visible = True
            sold.Visible = True
            wait.Visible = True
            'Aqui entro na parte do site para receber a informação dos itens que há no "Inventory"
            Dim strHtml As Object = wrap.GetWrapper("http://www.gaiaonline.com/gaia/shopping.php?key=alpltfbdnxgowsfn&showall=true&utab=all", , Proxy, Porta)
            Dim position_i As Integer = InStr(1, strHtml, "// group 3: primary user sellback") 'nesta parte tou a definir a posição inicial de onde o programa vai começar a contar (isto está na source do site em cima)
            Dim position_f As Integer = InStr(position_i, strHtml, "// npc dialog & interaction") 'aki defino a final. (Isto é só pa dizer em que parte eh k ele vai começar a ver os itens do inventory do utilizador)
            Dim fishi(3) As String 'defino a array para 4 posições
            Dim fishid(26) As String 'defino a array para 27 posições
            Dim curgold As String
'até ap fishid(26) estou a definir quais os itens k kero obter do inventory
            fishid(0) = "100004"
            fishid(1) = "100005"
            fishid(2) = "100006"
            fishid(3) = "100007"
            fishid(4) = "100009"
            fishid(5) = "100010"
            fishid(6) = "100011"
            fishid(7) = "100012"
            fishid(8) = "100014"
            fishid(9) = "100015"
            fishid(10) = "100016"
            fishid(11) = "100017"
            fishid(12) = "100022"
            fishid(13) = "100023"
            fishid(14) = "100024"
            fishid(15) = "100025"
            fishid(16) = "100026"
            fishid(17) = "100027"
            fishid(18) = "100034"
            fishid(19) = "100035"
            fishid(20) = "100036"
            fishid(21) = "100037"
            fishid(22) = "100038"
            fishid(23) = "100039"
            fishid(24) = "100040"
            fishid(25) = "100041"
            fishid(26) = "100042
'agora vem a parte do filtro, enquanto a posição inicial for menor que a final ele vai procurar os valores.
            Do While position_i < position_f
                If InStr(position_i, strHtml, "store.register_item(") Then 'ele vê a posição inicial e vê se a partir daí encontra novos valores para store.register_item(, é isto que no source conta os items
                    position_i = InStr(position_i, strHtml, "store.register_item(") 'se encontrou define a posição inicial para a posição do novo item k encontrou.
                    fishi(0) = wrap.iB(strHtml, "'", "',", position_i) 'Obtém a ID do objecto (o fishi(0) guarda a informação do id do objecto
'em baixo vou ver se o fishi(0) se encontra na lista de id's que defini acima
                    If InStr(1, fishi(0), fishid(0)) _
                    Or InStr(1, fishi(0), fishid(1)) _
                    Or InStr(1, fishi(0), fishid(2)) _
                    Or InStr(1, fishi(0), fishid(3)) _
                    Or InStr(1, fishi(0), fishid(4)) _
                    Or InStr(1, fishi(0), fishid(5)) _
                    Or InStr(1, fishi(0), fishid(6)) _
                    Or InStr(1, fishi(0), fishid(7)) _
                    Or InStr(1, fishi(0), fishid(8)) _
                    Or InStr(1, fishi(0), fishid(9)) _
                    Or InStr(1, fishi(0), fishid(10)) _
                    Or InStr(1, fishi(0), fishid(11)) _
                    Or InStr(1, fishi(0), fishid(12)) _
                    Or InStr(1, fishi(0), fishid(13)) _
                    Or InStr(1, fishi(0), fishid(14)) _
                    Or InStr(1, fishi(0), fishid(15)) _
                    Or InStr(1, fishi(0), fishid(16)) _
                    Or InStr(1, fishi(0), fishid(17)) _
                    Or InStr(1, fishi(0), fishid(18)) _
                    Or InStr(1, fishi(0), fishid(19)) _
                    Or InStr(1, fishi(0), fishid(20)) _
                    Or InStr(1, fishi(0), fishid(21)) _
                    Or InStr(1, fishi(0), fishid(22)) _
                    Or InStr(1, fishi(0), fishid(23)) _
                    Or InStr(1, fishi(0), fishid(24)) _
                    Or InStr(1, fishi(0), fishid(25)) _
                    Or InStr(1, fishi(0), fishid(26)) Then 'vê se a id está dentro das id's dos peixes
                        fishi(1) = wrap.iB(strHtml, "', '7', '', '", "'", position_i) 'obtém a quantidade de peixe (aqui vou buscar ao codigo de javascript a quantidade dos itens que estava a procurar)
                        fishi(2) = wrap.iB(strHtml, "', '", "'", position_i) 'obtém o valor entre o id e o nome do peixe
                        fishi(3) = wrap.iB(strHtml, "'" & fishi(0) & "', '" & fishi(2) & "', '", "'", position_i) 'Encontra o nome do peixe (O código é qq coisa como isto ('1000001', '3', 'Nome do peixe'), então eu para ir buscar o nome do peixe faço fishi(0) k contém o valor do peixe, mais as quotes + o valor entre o nome do peixe e o fishid e depois obtenho o nome entre esta quote> ' e esta '
                        PictureBox2.ImageLocation = "images/" & fishi(0) & ".png" 'aqui defini uma lista de imagens com o id do peixe em referencia, e então vou apresenta-lo
                        fishname.Text = fishi(3) 'já expliquei o k é o fishi(3)
                        Label2.Visible = True
                        fishquantity.Text = "x" & fishi(1) 
                        sellthatfish(fishi(0), fishi(1), fishi(3)) 'isto é a função que criei pra vender o peixe, ela recebe o nome do peixe pra apresentar na form, a quantidade a vender, e o id dele
                    End If
                    position_i += 1 'acabado o if acrescento ah posiçãi inicial +1 de forma a ele na proxima busca saltar a posição inicial
                Else
                    position_i += 1000 'se nenhum id foi encontrado na busca adiciono 1000 para acabar rápidamente com o loop
                End If
            Loop
            strHtml = wrap.GetWrapper("http://gaiaonline.com/", (wrap.LastPage), Proxy, Porta) 'aki vou ao site inicial
            curgold = wrap.iB(strHtml, "Gold: </span>", "<") 'aki obtenho a quantidade de dinheiro na conta
            gldacc.Text = curgold
            mandarformc(currentheight) 'aqui mando a form outra vez pra cima
            PictureBox2.Visible = False
            fishname.Visible = False
            Label2.Visible = False
            fishquantity.Visible = False
            sold.Visible = False
            wait.Visible = False
            MsgBox("You made " & made.Text & "g.")
        End If
    End Sub

agora os códigos de mandar a form para cima e para baixo:

    Public Sub mandarformb(ByRef formheight As Integer)
        Dim currentheight As Integer
        currentheight = Me.Height
        Do While currentheight < formheight
            currentheight += 1
            Me.Height() = currentheight
        Loop
    End Sub
    Public Sub mandarformc(ByRef formheight As Integer)
        Dim currentheight As Integer
        currentheight = Me.Height
        Do While currentheight > formheight
            currentheight -= 1
            Me.Height() = currentheight
        Loop
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao praticamente o For faz o mesmo que o While mas de outra forma?  :-[

e nao... nao percebi o exemplo mais complexo  :wallbash: :nono1: :dontgetit: :hmm: :fartnew2:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hmm ja está mais perceptivel..

nao percebi isto:

                    position_i += 1000 'se nenhum id foi encontrado na busca adiciono 1000 para acabar rápidamente com o loop

porque é que hás-de adicionar 1000? e porque é que isso acaba logo com o loop?

:hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O source tem cerca de 500000 caracteres, o Instr() guarda a posição da tua busca, se o id que eu kero não está na busca e a posição_f está uns 10000 caracteres abaixo, ao adicionar 1000 à posição_i vou fazer com k este avance mais rapido até ao acontecimento posição_i < posição_f

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ah... ok :( o problema é que eu depois para utilizar isto em programas, nem me lembro como se faz, nem da utilidade nem de nada disso  :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:| ok, talvez noutra lingua, isso eh um projecto, queres o projecto pra testar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui está... Nota, pra testares isso precisas de criar uma conta no site e de ter peixes pra vender...

http://buahaha.no.sapo.pt/Fish%20Seller.rar

*editado*

De uma vez k não gosto muito de comentar o meu código (podes-me chamar um picasso de programação se quiseres)

qualquer duvida que tenhas posta aí o código que eu ajudo-te a decifrar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alright,

primeiro o jogo eh bastante lame, mas tou a curtir fazer bots pra ele pk ajuda a perceber um bocado de interacção com erb no vb.net.

Dito isto prossigo:

há um jogo no site k é uma pesca, e há bots pra pescar sozinho, e é bastante irritante pescar e vender o peixe manualmente.

Então o k fiz no código foi defenir os id's do peixe lá do site, e automáticamente os vender.

O programa tem também mais funções, como gravar a password e a conta, parte de login, mexer na form, e adicionar imagens automáticamente. ;)

Tens alguma dúvida mais concreta em relacção a alguma parte do código?

É só postares. (btw, se tiveres duvidas na parte do wrapper eskece, não percebo essa parte tbm :D, mas gostava)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora