Mostrando postagens com marcador javascript. Mostrar todas as postagens
Mostrando postagens com marcador javascript. Mostrar todas as postagens

terça-feira, 6 de maio de 2014

Funções anônimas. Quem sabe o que é?

Neste post vou falar de funções anônimas, a sua usabilidade e mostrar exemplos. Vou colocar um exemplo de python e JavaScript, mas poderia ser em C++, C#, PHP e até Delphi pelo que ouvi falar, o importante é o conceito.

Funções anônimas, também conhecidas com closures, permitem a criação de funções que não tem nome especificado.

Elas são mais uteis com os valores de parâmetros callback, mas pode ter outros usos. Isso para o programador iniciante parece complicado mas após alguma pratica fica fácil.

Talvez surja a pergunta aos novatos: mas se utilizamos as funções "normais" sem problema, qual seria a utilidade das funções anônimas?
Imagine o caso que você necessite utilizar uma função só que com parâmetros diferentes. Neste caso você precisaria, dependendo da linguagem, declarar uma outra função e fazer sua implementação, para utiliza-la uma vez só as vezes. Com as funções anônimas, e caso a linguagem suporte closure ganhamos uma maior simplicidade de código.

Cálculo do número N da sequência de Fibonacci.
- usando funções normais Python

def fibonacci(N):
return N if N < 2 else fibonacci(N-1) + fibonacci(N-2)
print fibonacci(10)


- usando funções anônimas Python

fibonacci = lambda N: N if N<2 else fibonacci(N-1) + fibonacci(N-2)
print fibonacci(10)


- usando funções normais JavaScript

function myFunction() {
alert("Hello world!");
}


- usando funções anônimas JavaScript

var myFunction = function() {
alert("Hello world!");
}


Algumas peculiaridades de Python para JavaScript mas da para ter uma ideia.
Assim que tiver mais tempo, escrevo sobre expressões lambda. De onde originou as funções anônimas.

quinta-feira, 27 de outubro de 2011

Somando valores em caixa de texto.

Ola pessoal, postando mais um probleminha no trabalho :-p


Probleminha em um site de um cliente. Um problema que ocorre muito com os programadores novos se não prestarem atenção nos detalhes. Aconteceu com os meus alunos, aconteceu agora com nosso estagiário.

E dizem que programar é fácil.

A linguagem JavaScript em questão utiliza a declaração de variáveis sem definição. Isto pode gerar alguns problemas.

Vamos ao código...

O código do formulário em HTML:


<form name="combin" action="pagina.php" method="post" OnSubmit="JavaScript:return valida_formulario()">
<input name="combinacao1" type="text" size="5" value=""/><br>
<input name="combinacao2" type="text" size="5" value=""/><br>
<input name="combinacao3" type="text" size="5" value=""/><br>
<input name="combinacao4" type="text" size="5" value=""/><br>
<input name="combinacao5" type="text" size="5" value=""/><br>
<input name="combinacao6" type="text" size="5" value=""/><br>
<input name="" type="reset" value="Limpar" />&nbsp;&nbsp;<input type="submit" name="Submit" value="Enviar" />
</form>


E abaixo o código em JavaScript que faz validação do formulário, neste caso, a soma de todos os campos tem que ser 20. Pedro: O erro estava na hora de pegar os valores, o JavaScript estava definindo as variáveis como String. Por tanto na hora de somar, na verdade estava concatenando.
Utilizei a função parseInt para resolver isso! ;-)

<script language="JavaScript">

function valida_formulario()
{
var valor1 = parseInt(document.combin.combinacao1.value);
var valor2 = parseInt(document.combin.combinacao2.value);
var valor3 = parseInt(document.combin.combinacao3.value);
var valor4 = parseInt(document.combin.combinacao4.value);
var valor5 = parseInt(document.combin.combinacao5.value);
        var valor6 = parseInt(document.combin.combinacao6.value);
var soma = 0;
        
soma = valor1+valor2+valor3+valor4+valor5+valor6;

if (soma == 20)
{
return true;
}
else
{
alert('Soma Diferente de Vinte!');
return false;
}
}
</sccript>


É isso ai! mais um post.


Abraços a todos.

sexta-feira, 29 de julho de 2011

Formulário Dinâmico, adicionando varios input text

Ola,


Estavamos com uma baita dificuldade na loja hoje, desenvolvendo um site para um cliente onde deviamos criar um formulário padrão com 6 ou 7 campos e a medida que o usuário ia clicando no botão 'incluir +1', adicionavamos mais um/dois input do tipo text no formulário.

Lembro de uma certa vez, um aluno me perguntar sobre isso.

Então ai vai a forma como eu resolvi isso... Acredito que o nome certo para isso seria Formulário Dinâmico, certo? Caso não opinem que eu mudo ;-) porque busquei na internet por formulário dinâmico e não achei nada do que precisava.

Vamos ao código:

Percebam que eu usei a passagem de parâmetro pelo método GET.
Um problema que enfrento com a programação para internet é que só durante o carregamento da página é processado o código, então como aumentar a quantidade de campos de um formulário? Resolvi isso com GET, pois a informação esta sempre acessível na URL (a GOOGLE usa o mesmo método, você pode pegar a URL gerado pelo google-maps copiar e colar em qualquer navegador que funciona, dai a dica pra resolver meu problema).

<?
$quant=0;
if (isset($_GET["quant"]))
$quant = $_GET["quant"];
?>
<html>
<head>
<title> Inscrições </title>
...
Uma função em JavaScript para que ele aumente o contador 'quant', que esta armazenado em um input do tipo hidden(escondido).
...

<script language="JavaScript">
function incluir()
{
var url = window.location;
var quant = document.inscricao.quant.value;
quant++;
document.inscricao.quant.value = quant;
document.inscricao.action=url;
document.inscricao.submit();
}
</script>
...
Vejam que eu acesso as informações com GET, caso a informação esteja acessível na URL coloco no input ou deixo em vazio. E o FOR que controla a quantidade de input´s gerados.
...

<form id="inscricao" action="cadastrar.php" method="GET" name="inscricao" />
<input type="hidden" name="quant" value="<?
if (isset($_GET["quant"]))
echo $_GET["quant"];
else
echo "0";
?>">
<? for ($i=0; $i<=$quant; $i++){ ?>
&nbsp; Nome:<input type="text"  name="nome" size="70" value="<?
if (isset($_GET["nome"]))
echo $_GET["nome"];
?>"/><br/>
&nbsp; Município:<input type="text"  name="municipio" size="60" value="<?
if (isset($_GET["municipio"]))
echo $_GET["municipio"];
?>"/><br/>
<? } ?>
<br/>

<center><input type="submit" id="mais" value="Incluir + 1" onClick="javascript:incluir();"/>
<input type="reset" id="visualizar" value="Visualizar" />
<input type="reset" id="editar" value="Editar" />
<input type="reset" id="limpar" value="Limpar" />
<input type="submit" id="gravar" value="Gravar" /></center>
   </form>

Espero realmente que tenha ajudado. Essa foi a forma que encontrei de resolver.
Ainda não pensei em como salvar esses dados no banco de dados, é um numero incerto de campos a serem salvos, mas assim que implementar o código coloco para vocês aqui.
Pensando rapidamente, acho que nem sera tão difícil pois a quantidade de campos esta guardado no campo QUANT e sera acessível na URL pelo método GET.


Um grande abraço, Emanuel