ErickVOL
(usa Ubuntu)
Enviado em 04/03/2010 - 09:36h
Bom primeiro vamos responder a pergunta principal do tópico.
Para verificar CPF não basta apenas conferir se foram digitas 11 dígitos numéricos, pois a própria criação do CPF consiste em um lógica onde os 2 últimos dígitos são de controle. Para isso você teria mesmo que criar uma função com toda uma lógica para verificar se o CPF é válido ou não.
Segue um link que explica detalhadamente a lógica de verificação do CPF:
http://homepages.dcc.ufmg.br/~rodolfo/aeds-1-05/regrasDigitosVerificadoresCPF.html
Agora com relação a suas outras dúvidas, vamos la.
"1. Quando exatamente se usa a função com e sem argumentos e qual a diferença?"
Usa-se funções com argumentos quando você precisa passa para a função um valor de fora. Por exemplo:
function multiplica($x,$y)
{
$multi = $x*$y;
echo $multi;
}
$Num1 = 2;
$Num2 = 4;
multiplica($Num1,$Num2);
O que exatamente este "programinha" está fazendo, você declarou uma função multiplica certo? O que ela faz? Simples, ela pega 2 valores externos e multiplicam um pelo outro. É por isso que estamos passando 2 argumentos para a função, porque como você pode ver esses números serão pegos de fora da função.
Onde o valor de $Num1 vai ser atribuido a $x e de $Num2 a $y. Funções sem argumentos são funções que não necessitam de valores externos, mais um exemplo (bem bobo) seria:
function imprimi_erro()
{
echo "Ocorreu um erro durante a execução."
}
Essa função não necessita argumentos pois ela só imprimi a mensagem e nada mais, esse foi um exemplo bem simples, espero que você tenha intendido essa parte.
O critério de uso das funções com o sem argumentos vai depender do problema que você está tentando resolver.
"2. Quando exatamento deve-se usar o "return" e o que ele faz exatamente?"
O return serve para retornar valores das funções. Vamos refazer o function multiplica($x,$y) usando return agora.
function multiplica($x,$y)
{
$multi = $x*$y;
return $multi
}
$Num1 = 2;
$Num2 = 4;
$resultado = multiplica($Num1,$Num2);
echo $resultado;
O que está funções a função está fazendo agora, ela recebe os valores externos $Num1 e $Num2, multiplica eles, mais agora ao invés de dar um echo dentro da função eu quero pegar o resultado dessa multiplição e usar ele fora da função, então eu uso o return. Por tanto o que o return faz? simples, nesse caso ele vai "retornar" o valor de $x*$y e armazenar em $resultado e depois eu dei um echo $resultado ou seja ele vai imprimir o valor obtido na função.
Um detalhe importante sobre o return, duração a execução sempre que o compilador achar o return ele sai da função, não importa onde ele esteja, por isso ele deve ser posicionado com cuidado. Outro exemplo:
function verifica($x)
{
if($x > 0)
return 0;
else
return 1;
}
$Num = 25;
$resultado = verifica($Num);
if($resultado == 1)
echo "Numero negativo";
else
echo "Numero positivo";
O que está função faz é bem simples ela vai me dizer se um numero é positivo ou negativo. Se o numero passado para a função for maior que zero a função retorna 0 caso contrario ela returna 1, veja bem que assim que o compilador(interpretador) encontrar o return ele automaticamente sai da função e não executa mais nenhuma linha de código que a função contém depois dele.
Uma maneira mais profissional de se escrever o programa acima é:
function verifica($x)
{
if($x > 0)
return 0;
else
return 1;
}
$Num = 25;
if(verifica($Num))
echo "Numero negativo";
else
echo "Numero positivo";
O que mudou aqui foi o IF, pense, se a função vai retornar 0 ou 1 e se 0 é falso(false) e 1 é verdade(true), ele só vai entrar no IF se for verdade ou seja o o valor retornado for 1. O que você ganhou com isso? Uma variável a menos e 1 atribuição a menos, quanto menor processamento e memória seu programa usar melhor.
"3. Alguém pode me explicar o fluxo da 2ª função?"
Bom com todas essas explicações sobre função, return e argumentos, você consegue já intender o fluxo da 2ª função, de datas.
Algumas dicas.
Pesquise sobre as funções: time() e getdate()
Repare no return, $data_atual = $data["mday"]." de " .$mes. " de ".$data["year"]; podemos ver que ele está usando varios "." ex: ".$mes.", ".$data["year"], etc. Bom no que isso ajuda? Simples, " . "(ponto) em PHP serve para concatenar strings(palavras), ou seja ele está retornando uma frase aqui.
Bom o resto deixo para você, pesquise e quebre um pouco a cabeça que é o melhor jeito de se aprender =D
Espero ter ajudado, qualquer dúvida só postar.
Att,
Erick.