Camisetas Guanabara.info !! Garanta já a sua!

[VB] Parte V – Estruturas de Repetição

Categorias: Aprenda, Colunas, VB

16 comente

Pessoal, hoje vamos voltar às antigas Consoles Applications para vermos as muitas formas de repetição que o Visual Basic nos oferece.

Abram o Visual Basic 2008 Express Edition, e vamos começar. Agora vai ser mais rápido!

O Option Explicit

Antes de começar as repetições, vamos ver mais um comando da linguagem.

Por padrão, o VB 2008 não deixa que o usuário use uma variável sem declará-la, já que é uma boa prática de programação sempre definir nome e tipo das variáveis. Porém, isso pode ser desabilitado usando-se o Option Explicit.

Essa instrução deve vir antes de qualquer outro comando, na primeira linha de código e pode ser declarada com o parâmetro On ou Off. Se estiver com On, quer dizer que a declaração é obrigatória (padrão). Se estiver com Off, a declaração não é mais obrigatória. Por exemplo, o código abaixo é válido:

Mas esse aqui não é válido:

Como acima não declaramos Option Explicit Off, o Visual Studio avisará que a variável não foi definida.

Existem outras declarações, como Option Strict e Option Infer, mas não se preocupe com elas agora.

Let’s continue…

While … End While

A sintaxe dessa “estrutulha” é a seguinte:

While <condição>
<bloco de comandos>
End While

Enquanto a condição que especificamos na estrutura for verdadeira, o bloco de comandos será executado até o final e em seguida será executado novamente, até que a condição não seja mais verdadeira.

Veja o exemplo:

No VB 6 e no VBScript, o End While terminava com a instrução Wend. Não havia como interromper o laço de repetição, a única forma de sair era a condição tornar-se falsa. No VB 2008, temos a instrução Exit While para forçar a saída.

Veja abaixo:

Do… Loop

Somente com as instruções acima, criamos uma repetição bem simples. Os comandos são executados repetidamente, e se não for incluída uma instrução que force a saída do laço, o loop não terminará.

A sintaxe é:

Do
<bloco de comandos>
Loop

Simples e perigoso. Loops infinitos podem travar a aplicação, então tenha certeza de não permitir que isso aconteça.

Para criarmos uma condição de saída para a repetição, podemos fazer de duas formas. A primeira é criar uma “estrutulha” condicional dentro do bloco, dizendo que dentro de uma certa condição, a repetição termina. Isso é feito com a instrução Exit Do.

No bloco acima, usamos a função InputBox que abre uma janela solicitando ao usuário que digite alguma informação, que é armazenada na variável Valor. Dentro do laço de repetição, escrevemos o valor, incrementamos o valor da variável e testamos se ela é maior que 5, se for a aplicação sai da repetição.

-> InputBox(“Mensagem exibida”, “Título da Janela”, “Valor default”)

Se não tivéssemos esse teste lógico, se dependesse da aplicação o loop ficaria rodando eternamente.

A outra forma é usando os modificadores While e Until. Esses comandos têm a seguinte finalidade:

While <condição> -> faz um teste com uma condição, e o loopse repete enquanto a condição for verdadeira

Until <condição> -> faz um teste com uma condição, e o loop se encerra quando a condição tornar-se verdadeira.

Esses comandos podem acompanhar ou o Do ou o Loop, não acompanham os dois no mesmo bloco. Ou seja, podemos ter repetições em que usamos Do WhileLoop, Do UntilLoop, DoLoop While ou DoLoop Until.

Qual é a diferença entre usarmos os comandos no início e usarmos no fim do bloco de repetição? Quando colocamos os comandos no final, estamos garantindo que o bloco será executado pelo menos uma vez, pois o teste da condição é feito no final. Se colocarmos no início, o teste será feito antes de entrar no loop, então se a condição que estabelecemos implicar na saída da repetição, ela não é executada nenhuma vez.

Leia-se:

Do WhileLoop -> enquanto isso for verdadeiro, repita

Do UntilLoop -> até que isso seja verdadeiro, repita

DoLoop While -> repita enquanto isso for verdadeiro

Do Loop Until -> repita até que isso seja verdadeiro

Você pode usar o While ou o Until dependendo da forma que você usa a condição. Veja um exemplo abaixo com dois loops que executam a mesma coisa, mas usando os comandos diferentes:

O primeiro loop enquanto Repetir for menor ou igual a 5, repete escrever Guanabara.INFO, e o segundo até que Repetir maior que 5 repete escrever Guanabara.INFO.

Lembrando que podemos testar mais de uma condição nos loops, usando os conhecidos And, Or, Not, AndAlso e OrElse.

For… Next

Esse é o nosso “para”. Usamos esse laço quando tivermos uma variável contadora para auxiliar na repetição. A sinxate completa é:

For <variável> As <tipo> = <início> To <fim> Step <incremento>
<bloco de comandos>
Next <variável>

Funciona da seguinte forma: declaramos uma variável com um tipo numérico, atribuindo um valor a ela que será o valor inicial, definimos um valor máximo ao qual ela pode chegar e um incremento. A cada vez que a repetição terminar e voltar ao início, o valor de variável será incrementado, e caso seja maior ou igual ao valor máximo, o loop se encerra. Veja um exemplo:

No exemplo acima, eu não precisei escrever a estrutura completa porque declarei a variável antes do loop, o valor padrão do incremento Step é igual a 1 e o Next não me obriga a repetir o nome da variável ao lado dele.

Também existe a instrução Exit For.

Recebi do nosso visitante veterano Garu um código sobre o último post, quem não viu clique aqui e veja o que foi pedido. O código que ele enviou foi o seguinte:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMostra.Click

Dim msg As String
msg = txtValor.Text

If txtValor.Text <> “” Then

btnMostra.Enabled = False
MsgBox(msg, MsgBoxStyle.OkOnly, “”)
Label1.Text = “Parebns! Sua mensagem ser exibida!”
Else
Label1.Text = “Erro! Nenhuma mensagem foi digitada!”

End If

End Sub

Isso mesmo, tá certo! :-D

O programa faz um teste verificando se o conteúdo da caixa de texto é vazio, se for ele avisa que não foi digitado nada. Mas aí temos um problema, o usuário pode digitar um espaço e clicar em OK. Aí o conteúdo deixa de ser vazio. Para contornarmos esse problema, podemos usar a função Trim.

A função retira os espaços em branco do início e do final da string. Assim, se o usuário digitare só espaços, sem outros caracteres, esses espaços são removidos. Podemos usar a propriedade Length, depois de retirar os espaços, e verificar se o tamanho da string é igual a zero:

If (msg.Trim().Length) = 0 Then

Console.WriteLine(“Está vazia, sua mula!”)

End If

Aproveita a dica, Garu, junto com os outros visitantes do site. Semana que vem, vetores! Pessoal que vai participar da OAH, estudem MUITO vetores. Até a próxima.

Related Posts with Thumbnails
  • Aew!!!! Estutúlias! Estutúlias!

    Marcelão, muito legal… eu nunca poderia imaginar que desabilitando o Option Explicit pudéssemos trabalhar dessa forma… E que coincidência, estou messe momento no escritório estudando Arrays! Semana que vem promete…

    P.S.: Não teve exercício hj? posta algum aew^^!

    [Responder]

    agosto 28, 2008 @ 11:33 am
  • eu ainda vou ficar fera nisso aqui to estudando pra caranba

    [Responder]

    agosto 28, 2008 @ 11:36 am
  • Esse cara é o demais. O texto é muito bom!

    Só não deixou nenhuma informação sobre o conteúdo da próxima aula… mas tudo bem, quinta-feira que vem eu volto pra procurar.

    Abração.

    [Responder]

    agosto 28, 2008 @ 5:48 pm
  • Não sou fan de programação, mas já que é aula com o Marcelo, até que vai! :)

    [Responder]

    agosto 29, 2008 @ 8:48 am
  • Valeu pelos comentários galera. Esse post por pouco não existiu. A coisa tá feia, mas eu estou fazendo o possível. Semana que vem, vetores e mais vetores! :twisted:

    [Responder]

    agosto 29, 2008 @ 9:47 am
  • #Cassio Santos
    Poxa cara, deixou sim, a próxima aula é sobre vetores (arrays)

    [Responder]

    agosto 29, 2008 @ 9:49 am
  • Guilherme (São Paulo- 13 Anos)

    Cara, que aula maravilhosa velho, parabens cara, como o Riosney disse, eu também não sou fã de programção, mas esta aula é tão boa, que eu até faço. Eu acho que você deveria escrever um livro com estas aulas, porque este método é tão ilustrativo, prático, rápido, e bom, que se você vizésse uma versão impressa, ia verder em um dia todo o estoque.XDD

    PS: não estou fazendo as lições de casa, pois estou estudando pra cara***.

    [Responder]

    agosto 29, 2008 @ 10:11 am
  • Guilherme Sebold - Unus Mundi

    issu, começa a vende livros com esses cursos
    Guanabaras, assim vc’s vão fica ricos :)

    [Responder]

    setembro 2, 2008 @ 1:28 pm
  • Gostaria de arranjar um amigo =(

    [Responder]

    fevereiro 5, 2009 @ 7:06 pm
  • edson

    velho tu poderia me dá uma dica de como fazer uma calculadora básica?
    pois só consigo um comando que me peça 2 números pra me dá
    a soma
    subtração
    mutiplicação e divisão
    como fazer isso?

    [Responder]

    outubro 14, 2009 @ 7:17 am
  • Silvana

    Parabens
    Feliz aquele que pode transmitir conhecimento aos outros.
    Não sabia nem ligar um computador,agor imagine estou até
    usando o visual, apesar de ser como um passa tempo.

    Muito obrigada pelos outros que tanto precisam de suas aulas e,
    talvez nem possam pagar um curso.
    Silvana

    [Responder]

    dezembro 18, 2009 @ 9:11 am
  • juniorteck
    24 - nova iguaçu

    oi cara blz! estou com uma dúvida pois não consigo faze um contador para um estacionamento ae se vc tiver uma idea me mande

    [Responder]

    setembro 20, 2011 @ 8:10 pm
  • @_psribeiro - 20 - Nova Friburgo

    Cara vb e muito chato dokfoakds, to doido que acabe esse peuriodo da faculdade para não ver mais isso, mais para quem gosta boa sorte,

    Abs

    [Responder]

    novembro 20, 2011 @ 4:19 pm
  • @_psribeiro - 20 - Nova Friburgo

    Cara vb e muito chato dokfoakds, to doido que acabe esse peuriodo da faculdade para não ver mais isso, mais para quem gosta boa sorte, mais a aula e super boa e me ajudou muito, obrigado :)

    Abs

    [Responder]

    novembro 20, 2011 @ 4:20 pm
  • Breno

    alguém sabe como eu posso fazer essa estrutura algoritmica em .vb?

    algoritmo “semnome”
    var
    nome: caracter
    inicio
    repita
    escreva(“Digite o nome: “)
    leia(nome)
    se nome = “fulano” entao
    escreval(“Nome de segurança correto!”)
    senao
    escreval(“Nome de segurança incorreto!”)
    fimse
    ate nome = “fulano”
    fimrepita
    fimalgoritmo

    [Responder]

    abril 2, 2012 @ 12:17 am
  • generika cialis cialis bestellen ohne rezept
    cialis cialis
    cialis comprar cialis
    vente cialis cialis achat en ligne

    [Responder]

    novembro 14, 2012 @ 11:39 pm

Comentar