Posts TaggedLógica

Funções recursivas no PHP

Sempre gostei de fazer funções recursivas e quando posso tento utilizá-las pois acho charmosas e economizam código mas elas requerem um pouco mais de raciocíonio e atenção devido a facilidade de se criar loop/laço infinito.

( Noel Rocha )

<?php
function escape($var)
{
	if (!is_array($var)) {
		if(get_magic_quotes_gpc() == 1)
			$var = stripslashes($var);
		return mysql_escape_string($var);
	}

	foreach ($var as $chave => $valor)
		$var[$chave] = escape($valor);

	return $var;
}
?>

— Função recursiva criada pelo Noel para o escape, isto é, a anulação dos caracteres de controle de texto que uma variável de texto possuí como contra-barras, apóstrofo, aspas e aspas duplas.

Pessoalmente eu não utilizava funções recursivas pois é verdade que devemos ter muito cuidado com a criação de loops infinitos, mas a devida utilização das funções recursivas é muito importante de se compreender.

A função acima também poderia ser dividida em duas, mas neste caso teríamos mais um procedimento criado e talvez nós não o utilizássemos mais no nosso projeto. Determinadas vezes é chato ver procedimentos e mais procedimentos em alguns scripts. Crie-os quando for necessário. Se for possível, use as funções recursivas.

Além da forma apontada é claro que existem outras alternativas para o tratamento de strings no PHP para evitar uma Injeção SQL, mas este não é o nosso assunto de hoje, ok?

Add comment Junho 1, 2009

Programador tem que concluir ensino superior

Você lembra do Termo Geral da Progressão Aritmética? E da somas dos termos de uma P.A ?

Pois bem, muita gente se esquece das coisas mais fundamentais na matemática e demais informações que aprendemos na escola e são congruentes a lógica de programação.

Por exemplo: Se quiséssemos a soma dos 50 primeiros números pares e inteiros do sistema decimal alguém poderia criar o código abaixo:

para variavel_de_controle = 1 até 50 passo 2 faça
variavel_soma = variavel_soma + 1
fim-para
imprima variavel_soma

Porém se pararmos para analisar podemos utilizar a fórmula do termo geral Termo geral da progressão geométrica a_n=a_1+(n-1).r e da soma Soma dos termos de uma progressão geométrica S_n=frac{n.(a_1+a_n)}2 para ter um trabalho mais rápido e que não consuma muitos recursos de processamento. Seria muito mais simples fazer:variavel_ultima = 2 + (50-1) * 2O que nos retornaria 98 + 2 = 100

variavel_soma = (50(2+100))/2

O que nos retornaria 5100 / 2 = 2550

Muito mais simples, porém muita gente não sabe e fica fazendo loops que gravam e efetuam leitura da memória 50 vezes gastando mais memória e processamento do que deveria e se estive estruturado corretamente. Muita gente tem preguiça de pensar.

5 comments Novembro 24, 2007


RSS Cassio Santos

Categorias

Calendário

Dezembro 2009
S T Q Q S S D
« Set    
 123456
78910111213
14151617181920
21222324252627
28293031  

Feeds

Tags

Aritmética Atribuição Basic Cassio Santos Concatenação Controller Funções recursivas IDE Internet Lógica Model Model-View-Controller Modelo de página MVC Net Beens Operadores Page Template Drop Down PHP Programação Programação Web Progressão Aritimética rss Sucessão Aritimética VB VB.Net View Visual Basic webservice Wordpress WP

Internet