Gerando número Randomico

 

Embora não seja algo que precisamos todo dia, é algo que precisamos com certa frequência, seja para gerar senha , arquivo ou mesmo para outros fins…

Vamos utilizar a classe random, podemos ainda passar um intervalo para que o número seja gerado, assim podemos dizer por exemplo para que seja gerado um numero entre 0 e 100.

Dim RandomClass As New Random()

RandomClass.Next(0, 100)

Você pode utilizar também o método NextDouble para retornar um número entre 0.0 e 1.0

Vale lembrar que por mais que o range de número possa ser grande , como de 0 a 999999 a chance de um número repetido não é tão pequeno assim … quando não se pode correr o risco de número repetidos é melhor utilizar mais alguns truques como adicionar o id do usuário por exemplo …

IF X Case (Coitado do nosso querido IF)

 

Hoje vamos mostrar como a estrutura case é mais produtiva do que o bom e velho if, vamos construir um método para qualificar um número de acordo com os dados abaixo:

  • Número Bom quando for igual a 2,5 ou 7
  • Número Ruim quando for igual a 1,3,8,9 ou 10
  • Número Péssimo quando o número for menor que 1
  • Número Muito Bom quando o número for igual a 4,6 ou maior que 10
  • Número Excelente quando o número for maior ou igual que 20 e menor que 100
  • Se diferente de todas acima, número é inválido

 

Function RetornarClassificacao(byval variavel As Int32) As String

  Dim Classificacao As String

        If (variavel = 2) OrElse (variavel = 5) OrElse (variavel = 7) Then

            Classificacao = "Número Bom"

        ElseIf (variavel = 1) OrElse (variavel = 3) OrElse ((variavel >= 8) AndAlso (variavel <= 10)) Then

            Classificacao = "Número Ruim"

        ElseIf (variavel < 1) Then

            Classificacao = "Número Péssimo"

        ElseIf (variavel = 4) OrElse (variavel = 6) OrElse ((variavel > 10) AndAlso (variavel < 20)) Then

            Classificacao = "Número Muito Bom"

        ElseIf (variavel >= 20) AndAlso (variavel < 100) Then

            Classificacao = "Número Excelente"

        Else

            Classificacao = "Número inválido"

        End If

return Classificacao

End Function

Agora veja como o código fica bem mais legivel e fácil utilizando o Case, se nosso código fica bem melhor nesse caso simples, imagine com códigos mais complexos

 

Function RetornarClassificacao(byval variavel As Int32) As String

Dim variavel As Int32 = txtResultado.Text

        Dim Classificacao As String

 

        Select Case variavel

            Case 2, 5, 7

                Classificacao = "Número Bom"

            Case 1, 3, 8 To 10

                Classificacao = "Número Ruim"

            Case Is < 1

                Classificacao = "Número Péssimo"

            Case 4, 6, 11 To 19

                Classificacao = "Número Muito Bom"

 

            Case 20 To 99

                Classificacao = "Número Excelente"

            Case Else

                Classificacao = "Número inválido"

        End Select

return Classificacao

End Function

 

O  código com if requer uns 10 a 20 segundos para ser totalmente entendido, já o case dúvido que tenha demorado mais de 5 segundos para saber o que está sendo feito, a  utilização do 11 to 19 para identificar uma sequência é fantastico e a virgula para as varias condições então nem se fala…

É claro que o poderoso Case tinha que ter um defeito, esse defeito é que ele só compara uma variavel,ou seja, se tivesse uma comparação do tipo a =1 e b = 2 , não conseguiria fazer essas duas comparações com o case, precisaria usar o IF a não ser que criasse alguma "solução avançada" para contornar isso.

 

 

JavaScript – Fechar Janela sem confirmação

Essa é um dos pedidos mais solicitados pelos clientes, por algum tempo pensou-se que não era possível não exibir a mensagem de confirmação quando se tenta fechar uma janela que não foi aberta usando javascript …
Felizmente algum doido achou uma solução, a solução original não funcionava 100% com os novos navegadores …
Mas como sou Brasileiro e não desisto nunca …rs… consegui chegar em uma solução que funciona no IE 6 e 7, funcionava no 
 firefox 1.5 no 2.0 não testei ainda
 

function fecharJanela(){

  window.opener=’X’;window.open(”,’_parent’,”);window.close();

}

.NET Usando TryParse par criar isNumeric e isDate

Esse código visa implementar um método puro .NET semelhante ao isNumeric e isDate do vb 6 para que possa ser utilizados em seus projetos .Net. Estamos utilizando o método TryParse que retorna true quando a conversão para o tipo especifico seja possível e false quando não for possível.

Public Shared Function IsNumeric(ByVal Expression As Object) As Boolean

Dim isNum As Boolean

Dim retNum As Double

isNum =

Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, retNum)

 

Return isNum

End Function

 

 

Public Shared Function IsDate(ByVal Expression As Object) As Boolean

Dim _isDate As Boolean

Dim retDate As DateTime

_isDate = DateTime.TryParse(Convert.ToString(Expression), retDate)

 

Return _isDate

End Function

Tutorial ASP.NET 2.0 – Orientação a Objeto adicionando regras de negócio a nossa classe

Antes de adicionar regras de negócio a nossa classe, vamos analisar o que fizemos para chamar nossa classe

Dim oProduto As New Produto

Estamos criando a instância do objeto, que é conhecida como classe, repare na utilização da palavra new é ela que diz que demos criar nova instância do objeto Produto. Uma observação importante é que se tivéssemos criando um tipo de dado (int,string,datetime,etc) a palavra new não seria utilizada.

No trecho abaixo preenchemos as propriedades com o valores digitados no formulário

oProduto.DataFabricacao = txtDataFabricacao.Text

oProduto.Nome = txtNome.Text

oProduto.NumeroDias = txtNumeroDias.Text

E por último vamos chamar o método para calcular a data de validade

lblResultado.Text = oProduto.RetornaDataValidade()

Agora vamos adicionar algumas regras de negócio ao nosso método RetornaDataValidade:

  1. A quantidade de dias de validade deve estar entre 5 e 90 dias até o mês 6 do ano, do mês 7 ao mês 12 a quantidade de dias deve estar entre 10 e 70 dias.
  2. Para quantidades entre 15 e 30 dias, deve ser acrescentado 20% ao resultado final.

Com as regras nosso método ficaria assim:

Function RetornaDataValidade() As String

Dim retorno As String

Dim qtdDias As Integer = NumeroDias

‘Para quantidades entre 15 e 30 dias , deve ser acrescentado 20% ao resultado final.

If ((qtdDias > 14) AndAlso (qtdDias < 71)) Then qtdDias = qtdDias * 1.2

If (DataFabricacao.Month < 7) Then

‘5 e 90 dias até o mês 6 do ano

If ((NumeroDias > 4) AndAlso (NumeroDias < 91)) Then

retorno = DataFabricacao.AddDays(qtdDias)

Else

retorno = "Numero de dias deve estar entre 5 e 90"

End If

Else

‘Mês 7 ao mês 12 a quantidade de dias deve estar

If ((NumeroDias > 4) AndAlso (NumeroDias < 91)) Then

retorno = DataFabricacao.AddDays(qtdDias)

Else

retorno = "Numero de dias deve estar entre 10 e 70"

End If

End If

Return retorno

End Function

Para podermos enviar uma mensagem foi alterado o retorno do método para string

De Function RetornaDataValidade() As DateTime

Para Function RetornaDataValidade() As String

Outro ponto interessante é o trecho abaixo, onde podemos notar que não utilizamos o end if, isso foi possível por que só temos uma linha de comando dentro do if (qtdDias = qtdDias * 1.2), se tivéssemos duas linhas ou mais , o end if seria obrigatório.

If ((qtdDias > 14) AndAlso (qtdDias < 71)) Then qtdDias = qtdDias * 1.2

Agora rode a aplicação e informe os valores diferentes para ver o funcionamento das regras criadas.

 

Tutorial ASP.NET 2.0 – Orientação a Objeto Usando a Classe criada

 

Agora vamos usar a classe produto que criamos, para isso vamos criar um formulário para informar os valores das propriedades e chamar o método.

Adicione 5 label, 4 textbox e um botão

Agora vamos configurar a propriedade ID e Text de cada objeto

Tipo Objeto

ID

Text

Label

lblNome

Nome

Label

lblPreco

Preço

Label

lblDataFabricao

Data Fabricação

Label

lblNumeroDias

Dias Validade

Label

lblValidade

 

TextBox

txtNome

 

TextBox

txtPreco

 

TextBox

txtDataFabricao

 

TextBox

txtNumeroDias

 

Botão

btnEnviar

Enviar

Obs: Repare que adotamos um prefixo para cada tipo de objeto

O formulário deve esta semelhante ao abaixo:

Veja o código HTML

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="CursoASPNET._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

<html xmlns="http://www.w3.org/1999/xhtml&quot; >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Label ID="lblNome" runat="server" Text="Nome"></asp:Label>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />

<asp:Label ID="lblPreco" runat="server" Text="Preço"></asp:Label>

<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />

<asp:Label ID="lblDataFabricacao" runat="server" Text="Data Fabricação"></asp:Label>

<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br />

<asp:Label ID="lblNumeroDias" runat="server" Text="Dias Validade"></asp:Label>

<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>

<asp:Button ID="btnEnviar" runat="server" Text="Enviar" /><br />

<asp:Label ID="lblResultado" runat="server" Width="191px"></asp:Label></div>

</form>

</body>

</html>

Agora vamos criar o código que será chamado no click do botão enviar, para isso primeiro de um duplo click no botão enviar.

Observação: Caso você não esteja no modo design, no rodapé clique em Design.

Será criado o código abaixo:

Protected Sub btnEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviar.Click

End Sub

Agora vamos criar nosso código para instanciar a classe e utiliza-la.

Protected Sub btnEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviar.Click

Dim oProduto As New Produto

oProduto.DataFabricacao = txtDataFabricacao.Text

oProduto.Nome = txtNome.Text

oProduto.NumeroDias = txtNumeroDias.Text

lblResultado.Text = oProduto.RetornaDataValidade()

End Sub

Vamos rodar nosso projeto (ctrl + f5) preencher o formulário e clicar em enviar.

Como não temos nenhum tratamento de erro, devemos informar os dados corretamente, nos próximos capítulos estaremos melhorando o código.

A aparência também não é das melhores, por enquanto não se preocupe com esse pequeno detalhe, estaremos em breve aplicando CSS para melhorar a aparência do nosso formulário.