domingo, 4 de maio de 2014

Triângulo de Pascal - O Código

Na minha última postagem sobre o triângulo de Pascal, mencionei alguns detalhes sobre ele. Muitos devem estar até o momento um tanto curioso quando ao seu código. 

Abaixo segue um exemplo utilizando a linguagem Pascal.

Program Pzim ;

type
  matriz = array[1..100,1..100] of integer;
var
  a : matriz;
  i, j, k, num : integer;
 Begin                                
   writeln('Entre com um número: ');
   read(num);
   for i:=1 to num do
     for j:=1 to i do
          if (j = 1) or (i = J) then
 a[i,j]:=1
else
      a[i,j]:=a[i-1,j-1] + a[i-1,j];

     clrscr;
     writeln('TRIANGULO DE PASCAL :');
     writeln('------------------------------ ');
     for i:=1 to num do
       begin
         for  j:=1 to i do
     write(a[i,j]:6);
         writeln;
       end;
     writeln;
     readkey;                                                            

 End.


Espero que tenham gostado e até a próxima

quinta-feira, 17 de abril de 2014

Triângulo de Pascal



Blaise Pascal (Clermont-Ferrand, Puy-de-Dôme, 19 de Junho de 1623 - Paris, 19 de Agosto de 1662)

Filósofo e matemático Blaise Pascal, foi um prodígio matemático.

Em torno de 1650 escreveu o "Traité du Triangle Arithmétique" publicado em 1665 e, juntamente com Pierre Fermat, estabeleceu os fundamentos da teoria da probabilidade.

Embora não tenha sido o primeiro a trabalhar com o triângulo, este tornou-se conhecido como "triângulo de Pascal" devido ao desenvolvimento e aplicações que Pascal fez de muitas de suas propriedades.

O triângulo aritmético é conhecido há muito tempo, mas recebeu o nome de 'Triângulo de Pascal' devido aos estudos que o filósofo e matemático Blaise Pascal (1623-1662) fez deste.

O triângulo é infinito e simétrico, e seus lados esquerdo e direito sempre devem possuir o número  

O triângulo ao lado, dividido em linhas e colunas, é composto de números binomiais.


Cada linha possui um número a mais que a linha anterior. Além disso, o triângulo também possui várias propriedades interessantes que permitem construir com facilidade a linha seguinte.



Este triângulo forma-se de forma recursiva, ou seja, as diagonais de fora são formadas por 1's, os restantes números são a soma dos números acima. Como exemplo podemos dizer que: 10=4+6 (10-linha 5; 4 e 6-linha 4).

NOTA: Considera-se que o topo do triângulo corresponde à linha 0, coluna 0.


Propriedades


Propriedade 1


A primeira propriedade do triângulo que iremos apresentar está relacionada à soma dos elementos de cada uma das linhas. Para ilustrar isto, vamos associar a cada linha do triângulo um número, começando do 0



A propriedade diz que a soma de todos os números de uma linha é igual a 2  elevado àquele número que associamos à linha. E o que significa isto?

Quando dizemos que o número 2 está elevado a 3 por exemplo, queremos dizer que o 2 foi multiplicado por si mesmo 3 vezes:




Você pode observar na figura o resultado das somas relacionadas à cada linha do triângulo:



Vamos conferir algumas delas:

 


Propriedade 2


A próxima propriedade do triângulo que veremos é a relação de Stifel.

Ela diz que a soma de dois números de uma mesma linha do triângulo é o número que está na linha logo abaixo, bem abaixo dos dois números somados. A figura ilustra melhor a propriedade:



Vamos verificar as somas apontadas na figura:



Propriedade 3


Nossa próxima propriedade diz respeito à soma dos números dispostos em diagonal, começando sempre do 1 a partir da direita. Observe a figura para visualizar melhor:



A soma dos números da coluna estará sempre na coluna seguinte, na linha logo abaixo daquela em que está o último número que foi somado, como mostra a figura.

Vamos conferir algumas somas:




Da mesma forma que foi feito com as propriedades anteriores, você pode continuar verificando esta! Mas tome cuidado, as somas das colunas devem começar sempre a partir do primeiro número 1 da coluna.


Propriedade 4


Nossa última propriedade é bem parecida com a anterior, só que, em vez de as somas começarem do lado direito do triângulo, desta vez devem começar do lado esquerdo:



Da mesma forma, você vai encontrar a soma desta diagonal na linha abaixo daquela em que está o último número somado. Também aqui você deve ter sempre o cuidado de começar a soma do primeiro número 1 da coluna.

Vamos verificar as somas da figura:




Soma dos Números de uma Linha

Qualquer que seja a linha de um Triângulo de Pascal, se somarmos os números nela contidos, sempre iremos obter como total uma potência de 2, cujo expoente é o próprio número da linha.

Vejamos alguns exemplos:


Números de Fibonacci nas Diagonais do Triângulo de Pascal

 Os números de Fibonacci formam uma sequência numérica infinita, onde a partir do terceiro número, os números são obtidos através da soma dos dois números anteriores.


Os dois primeiros números da sequência de Fibonacci são iguais a 1 e todos os demais números são obtidos a partir da soma dos dois números anteriores, assim temos:


1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, ...


Observe no triângulo ao lado que ao somarmos os números nas diagonais conforme mostrado, as somas obtidas vão formando a sequência de sequência de Fibonacci.


Mas, todos devem estar curioso, e o código em Pascal. Aguarde, breve irei postar.



Bibliografia




http://www.brasilescola.com/matematica/triangulo-pascal.htm

quarta-feira, 12 de março de 2014

Como pegar o maior valor de um campo no SQL SERVER


Veja como é fácil obter o maior valor de um campo inserido em uma tabela no SQL Server, utilizaremos função MAX.

SELECT MAX(campo)
FROM NOME_TABELA;

quarta-feira, 26 de fevereiro de 2014

WebForm - Registros Duplicados ao dar Duplo Click em um Botão Salvar


Em algumas ocasiões pode acontecer que após o usuário preencher todo o formulário e clica no botão Salvar o registro é duplicado na tabela. Em alguns casos nem a propriedade Enabled resolve este problema.
Neste caso, o código abaixo pode ser de ajuda.
protected void Page_Load(object sender, EventArgs e)
{
        DesabilitarBotao(this.Page, Salvar);
}
protected void Salvar_Click(object sender, EventArgs e)
{
        for (int i = 0; i < 1000000; i++)
        {
             TextBox txtBox = new TextBox();
             txtBox.Text = "we " + i;
         }
}
public static void DesabilitarBotao(Page paginaAtual, Button botao)
{
        botao.Attributes.Add("onclick", paginaAtual.ClientScript.GetPostBackEventReference(botao, "") + ";this.value='Aguarde...';this.disabled = true;");
}
O comando for foi utilizado apenas para efeito de teste.

Máscara de Telefone com 9 dígitos em JavaScript


Este exemplo mostra como implementar uma função JavaScript para adicionar mais um dígito ao número de telefone.

 

<html>

<head>

    <title>Máscara de Telefone com 9 dígitos em JavaScript</title>

<script type="text/javascript">

/* Máscaras ER */

function mascaraTel(o, f) {

    v_obj = o;

    v_fun = f;

    setTimeout(execmascara, 1);

}

function execmascara() {

    v_obj.value = v_fun(v_obj.value)

}

function mtel(v) {

    v=v.replace(/\D/g,"");

    v=v.replace(/^(\d{2})(\d)/g,"($1) $2");

    v=v.replace(/(\d)(\d{4})$/,"$1-$2");

    return v;

}

function id(el) {

          return document.getElementById(el);

}

window.onload = function() {

          var $telefone = id('mascaraTel');

          $telefone.onkeyup = function() {

                    mascaraTel( this, mtel );

          }

          $telefone.onblur = function() {

                    var v = this.value;

                    if( v.indexOf('(11)') !== -1 && v.length === 14) {

                              this.value = v.replace(/\((\d{2})\) (\d{4})-(\d{4})/g,'($1) 9$2-$3');

                    }

          }

}

</script>

 

</head>

<body>

          <h1 style="color:#FF9933">Máscara de Telefone com 9 dígitos em JavaScript</h1>

    <label type="text" style="font-family:Verdana,Arial;" >Telefone</label>

    <input type="text" name="mascaraTel" id="mascaraTel" maxlength="15" />

 

</body>

</html>

Mascara e Validação utilizando JavaScript


Os exemplos abaixo mostram como criar máscaras para campos dos tipos:

·        CNPJ;

·        CPF;

·        CEP;

·        Data;

·        Telefone;

 

Os campos de CNPJ e CPF realizam a verificação de tais campos para verificar se são documentos válidos

 

<script language="javascript" type="text/javascript">

   

    //Máscara de CNPJ

    function MascaraCNPJ(cnpj) {

        if (mascaraInteiro(cnpj) == false) {

            event.returnValue = false;                

        }

        return formataCampo(cnpj, '00.000.000/0000-00', event);

    }

 

    //Máscara ao CPF

    function MascaraCPF(cpf) {

        if (mascaraInteiro(cpf) == false) {

            event.returnValue = false;

        }

        return formataCampo(cpf, '000.000.000-00', event);

    }

 

    //Máscara de CEP

    function MascaraCep(cep) {

        if (mascaraInteiro(cep) == false) {

            event.returnValue = false;

        }

        return formataCampo(cep, '00.000-000', event);

    }

 

    //Máscara de Data

    function MascaraData(data) {

        if (mascaraInteiro(data) == false) {

            event.returnValue = false;

        }

        return formataCampo(data, '00/00/0000', event);

    }

 

    //Máscara ao Telefone (9 digitos)

    function MascaraTelefone(tel) {

        if (mascaraInteiro(tel) == false) {

            event.returnValue = false;

        }

        return formataCampo(tel, '(00) 0000-0000', event);

    }

   

    //validar CNPJ

    function ValidarCNPJ(ObjCnpj) {

        var cnpj = ObjCnpj.value;

        var valida = new Array(6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2);

        var dig1 = new Number;

        var dig2 = new Number;

 

        exp = /\.|\-|\//g

        cnpj = cnpj.toString().replace(exp, "");

        var digito = new Number(eval(cnpj.charAt(12) + cnpj.charAt(13)));

 

        for (i = 0; i < valida.length; i++) {

            dig1 += (i > 0 ? (cnpj.charAt(i - 1) * valida[i]) : 0);

            dig2 += cnpj.charAt(i) * valida[i];

        }

        dig1 = (((dig1 % 11) < 2) ? 0 : (11 - (dig1 % 11)));

        dig2 = (((dig2 % 11) < 2) ? 0 : (11 - (dig2 % 11)));

 

        if (((dig1 * 10) + dig2) != digito) {

            alert('CNPJ Invalido!');           

        }

    }

 

    //Validar CPF

    function ValidarCPF(Objcpf) {

        var cpf = Objcpf.value;

        exp = /\.|\-/g

        cpf = cpf.toString().replace(exp, "");

        var digitoDigitado = eval(cpf.charAt(9) + cpf.charAt(10));

        var soma1 = 0, soma2 = 0;

        var vlr = 11;

 

        for (i = 0; i < 9; i++) {

            soma1 += eval(cpf.charAt(i) * (vlr - 1));

            soma2 += eval(cpf.charAt(i) * vlr);

            vlr--;

        }

        soma1 = (((soma1 * 10) % 11) == 10 ? 0 : ((soma1 * 10) % 11));

        soma2 = (((soma2 + (2 * soma1)) * 10) % 11);

 

        var digitoGerado = (soma1 * 10) + soma2;

        if (digitoGerado != digitoDigitado) {

            alert('CPF Invalido!');           

        }

    }

 

    //Validar CEP

    function ValidaCep(cep) {

        exp = /\d{2}\.\d{3}\-\d{3}/

        if (!exp.test(cep.value)) {

            alert('Cep Invalido!');           

        }

    }

 

    //Validar data

    function ValidaData(data) {

        exp = /\d{2}\/\d{2}\/\d{4}/

        if (!exp.test(data.value)) {

            alert('Data Invalida!');

        }

    }

 

    //Validar Telefone

    function ValidaTelefone(tel) {

        exp = /\(\d{2}\)\ \d{4}\-\d{4}/

        if (!exp.test(tel.value)) {

            alert('Telefone Invalido!');           

        }

    }

 

    //Validar número inteiro com mascara

    function mascaraInteiro() {

        if (event.keyCode < 48 || event.keyCode > 57) {

            event.returnValue = false;

            return false;

        }

        return true;

    }

  

    //formatar os campos

    function formataCampo(campo, Mascara, evento) {

        var boleanoMascara;

 

        var Digitato = evento.keyCode;

        exp = /\-|\.|\/|\(|\)| /g

        campoSoNumeros = campo.value.toString().replace(exp, "");

 

        var posicaoCampo = 0;

        var NovoValorCampo = "";

        var TamanhoMascara = campoSoNumeros.length; ;

 

        if (Digitato != 8) { // backspace

            for (i = 0; i <= TamanhoMascara; i++) {

                boleanoMascara = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")

                                                                               || (Mascara.charAt(i) == "/"))

                boleanoMascara = boleanoMascara || ((Mascara.charAt(i) == "(")

                                                                               || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " "))

                if (boleanoMascara) {

                    NovoValorCampo += Mascara.charAt(i);

                    TamanhoMascara++;

                } else {

                    NovoValorCampo += campoSoNumeros.charAt(posicaoCampo);

                    posicaoCampo++;

                }

            }

            campo.value = NovoValorCampo;

            return true;

        } else {

            return true;

        }

    }

</script>

 

 

<h1 style="color:#FF9933">Máscara e validações com JavaScript</h1>

<label type="text" style="font-family:Verdana,Arial;" >CNPJ</label>

<input type="text" name="cnpj" onKeyPress="MascaraCNPJ(form1.cnpj);" maxlength="18" onBlur="ValidarCNPJ(form1.cnpj);">

<p></p>

<label type="text" style="font-family:Verdana,Arial">CPF</label>

<input type="text" name="cpf" onBlur="ValidarCPF(form1.cpf);" onKeyPress="MascaraCPF(form1.cpf);" maxlength="14">

<p></p>

<label type="text" style="font-family:Verdana,Arial">CEP</label>

<input type="text" name="cep" onKeyPress="MascaraCep(form1.cep);" maxlength="10" onBlur="ValidaCep(form1.cep)">

<p></p>

<label type="text" style="font-family:Verdana,Arial">Data</label>   

<input type="text" name="data" onKeyPress="MascaraData(form1.data);" maxlength="10" onBlur= "ValidaDataform1.data);">

<p></p>

<label type="text" style="font-family:Verdana,Arial">Telefone</label>   

<input type="text" name="tel" onKeyPress="MascaraTelefone(form1.tel);" maxlength="14"  onBlur="ValidaTelefone(form1.tel);">