Paginação em PHP

Fala galera!

Hoje vamos tratar de um assunto importante para os programadores PHP: paginação.

Para que serve a paginação em PHP?

Muitas vezes o retorno de uma consulta SQL traz vários registros, e para que a página não seja muito extensa, é necessário dividi-los em páginas. E para evitar que sejam criados vários arquivos com cada página, é adicionado um script que faz a paginação. Vamos aprender e entender como funciona essa paginação em PHP.

Preparando o script

Seguindo nosso tutorial para criar CRUD em PHP, vamos utilizar a tabela ‘produto’ neste tutorial. Mas antes, precisamos de algumas variáveis básicas para fazer a paginação:

$pagina = isset($_GET["pagina"]) ? $_GET["pagina"] : "1"; // página atual, caso não exista assume o valor 1
$limite = 10; // limite de registros por páginas
$links = 3; //número de links exibidos antes e depois da página atual
$inicio = ($pagina-1) * $limite; //define o início da consulta, no caso o primeiro parâmetro do LIMIT

IMPORTANTE: não devemos nos esquecer de adicionar o LIMIT na nossa query! É ele quem trará os registros para suas respectivas páginas.

Retornando os dados

Vamos agora fazer o SELECT que irá trazer os nossos registros. Para fazer a paginação, devemos ter duas queries: uma para trazer o total de registros, e outra para trazer as queries da página atual.

$sqlPaginacao = mysql_query("SELECT * FROM produto ORDER BY id ASC"); //retorna o total de registros da tabela
$paginas = intval((mysql_num_rows($sqlPaginacao)-1) / $limite); //faz o cálculo do número de páginas

$sql = mysql_query("SELECT * FROM produto ORDER BY id ASC LIMIT $inicio, $limite"); //retorna o registros da página atual
while($dados=mysql_fetch_array($sql)) {
    // faz a exibição dos dados
}

Finalmente: a paginação!

Depois de consultar e exibir os dados, vamos colocar a nossa paginação para funcionar.

A primeira parte é simples: um link para a primeira página e para a página anterior. Para tal, precisamos apenas de um IF verificando se a página atual não é a primeira.

if(($pagina) > 1) {
    echo '<a href="?pagina=1">&laquo; Primeira</a> ';
    $anterior = $pagina - 1;
    echo '<a href="?pagina='.$anterior.'">Anterior</a> ';
}

Vamos agora exibir a página atual, e os links das outras páginas. Precisamos de um laço FOR para percorrer as páginas, respeitando o limite de links a serem exibidos.

for ($i = ($pagina-1)-$links; $i<($paginas + 1); $i++) {
    if ($i == $pagina -1) { //verifica se não é a página atual
        echo ($i+1) . ' ';
    } else {
        if($i+1>0 && $i<$pagina+$links) {
            $pag = $i+1;
            echo '<a href="?pagina='.$pag.'">'.$pag.'</a>&nbsp;';
        }
    }
}

E por último, vamos exibir os links para próxima e última páginas.

if ($pagina-1 < $paginas) {
    $proxima = $pagina+1;
    echo '<a href="?pagina='.$proxima.'">Próxima &rsaquo;</a>';
    $ultima = $paginas + 1;
    echo '&nbsp;<a href="?pagina='.$ultima.'">Última &raquo;</a>';
}

Pronto! Nossa paginação em PHP está finalizada.

A princípio, talvez possa parecer um pouco confuso, mas seguindo a lógica linha-a-linha fica fácil de compreender o script completo.

Veja nosso tutorial de paginação em PHP em funcionamento.

Até mais, galera!

webView com Objective-C de maneira rápida

Bom pessoal, hoje vamos falar de um tema muito interessante, e um dos conceitos mais importantes para a programação de aplicativos, vamos trabalhar com as WebViews, esses componentes tem uma função muito obvia, ele abre uma pagina web dentro do seu aplicativo.

Esse tipo de ferramenta pode ser muito útil na construção de um app, quando por exemplo um formulario de cadastro que existe em um site precisa ser aberto, mais fácil que refazer o formulário no app seria interessante usar uma webView para abrir a pagina.

Vamos começar um novo projeto, e dentro do seu storyboard coloque o componente webView. Assim como na imagem abaixo.

webView em objective C

E também vamos criar os outlets do webView.

@property (weak, nonatomic) IBOutlet UIWebView *webView;

Agora precisamos dizer a nossa webView que ela deve acessar uma pagina web pré determinada, para isso precisamos da url da pagina a ser acessada, então vamos criar uma.

[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@”http://www.google.com”]]];

E pronto com essa linha de código nossa webView já está pronta e funcionando, lembrando que você pode sim fazer um aplicativo completo em uma webView, com uma página HTML ou algo semelhante, porem não teria o mesmo desempenho que um aplicativo nativo.

Como enviar e-mail autenticado usando PHPMailer

Como enviar e-mail autenticado usando PHPMailer

Fala galera!

Hoje vamos aprender a enviar e-mail autenticado usando PHPMailer, um script desenvolvido por Andy Prevost e Marcus Bointon para envio de e-mails pelo PHP.

Atualmente na versão 5.2.8, essa classe permite enviar e-mails pelo PHP através dos protocolos POP3 ou SMTP, e é amplamente recomendado e melhor que a função padrão mail(). Faça download da classe PHPMailer aqui.

Enviar e-mail autenticado usando PHPMailer

Primeiramente, precisamos chamar a classe no nosso script PHP. Neste tutorial, vamos utilizar a versão 5.1.

require_once('class.phpmailer.php');

O próximo passo será criar uma instância da classe PHP, passando um parâmetro único true, que indica que os erros ocorridos deverão ser retornados.

$mail = new PHPMailer(true);

Em seguida, vamos indicar que usaremos o protocolo SMTP para enviar os e-mails.

$mail->IsSMTP();

Agora vamos começar a configurar a classe para o envio. Porém, precisamos fazer essas configurações dentro de um try/catch. O try/catch é utilizado para tratamento de exceções e erros de execução sempre que um método de alguma classe é passível de causar algum erro.

try {

A primeira configuração é o endereço do servidor SMTP. Isso varia de acordo com as configurações do servidor de envio. No nosso exemplo, vamos configurar utilizando “localhost”. (Lembrando que a PHPMailer não funciona em ambiente local na sua máquina)

$mail->Host = "localhost";

Depois, vamos informar à classe que não vamos debugar o código.

$mail->SMTPDebug = false;

Agora sim vamos configurar o envio. E é aqui que está o pulo do gato!
São 3 parâmetros que devemos passar para que o e-mail seja autenticado:

$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Port = 587;

O primeiro parâmetro indica que vamos autenticar o e-mail que será enviado. Mas vamos complementar esse parâmetro com os dois próximos, que indicam o tipo de segurança e a porta utilizados. Em ambos, a configuração pode variar de acordo com o servidor. Uma dica rápida: essa configuração é utilizada para enviar pelo servidor do GMAIL (obrigado, de nada)!

Continuando, vamos agora passar os dados de acesso (usuário e senha).

$mail->Username = "seuemail@dominio.com.br";
$mail->Password = "suasenha";

Vamos agora adicionar o destinatário do e-mail.

$mail->AddAddress("destinatario@dominio.com.br", "Destinatário");

E agora o remetente. São duas funções: uma indica quem enviou, e a outra indica para quem deve ser respondido.

$mail->SetFrom("remetente@dominio.com.br", "Remetente");
$mail->AddReplyTo("remetente@dominio.com.br", "Remetente");

Em seguida, assunto do e-mail.

$mail->Subject = "Assunto do e-mail";

BÔNUS: vamos também configurar um anexo. Neste caso, vamos utilizar uma variável $anexo, que pegou um arquivo enviado de um formulário prévio.

$mail->AddAttachment($anexo["tmp_name"],$anexo["name"],"base64",$anexo["type"]);

PS: “base64” é o tipo de codificação que será utilizada para enviar o arquivo.

Agora vamos adicionar a mensagem do e-mail. Podemos fazê-lo em duas formas: e-mail com HTML, e e-mail padrão, sem formatação. Caso o gerenciador de e-mails do destinatário não consiga ler HTML, a mensagem sem HTML será exibida. Não é necessário configurar as duas, apenas uma delas já basta.

$mail->AltBody = $texto_sem_HTML;
$mail->MsgHTML($texto_com_HTML);

E, finamente, vamos solicitar o envio.

$mail->Send();

Porém, não vamos esquecer do nosso try/catch. Vamos fechar o try, e iniciar o catch.

} catch (phpmailerException $e) {
    echo $e;
} catch (Exception $e) {
    echo $e;
}

O primeiro catch trata a exceção phpmailerException. Essa exceção será chamada caso ocorra algum erro durante a execução da classe PHPMailer.

Já o segundo catch trata qualquer outra exceção que ocorra durante a execução do script.

E pronto! Agora você já sabe como enviar e-mail autenticado usando PHPMailer. Confira nosso código completo:

require_once('class.phpmailer.php');

$mail = new PHPMailer(true);
$mail->IsSMTP();

try {
    $mail->Host = "localhost";
    $mail->SMTPDebug = false;
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = "tls";
    $mail->Port = 587;
    $mail->Username = "seuemail@dominio.com.br";
    $mail->Password = "suasenha";
    $mail->AddAddress("destinatario@dominio.com.br", "Destinatário");
    $mail->SetFrom("remetente@dominio.com.br", "Remetente");
    $mail->AddReplyTo("remetente@dominio.com.br", "Remetente");
    $mail->Subject = "Assunto do e-mail";
    $mail->AddAttachment($anexo["tmp_name"],$anexo["name"],"base64",$anexo["type"]);
    $mail->AltBody = $texto_sem_HTML;
    $mail->MsgHTML($texto_com_HTML);
    $mail->Send();
} catch (phpmailerException $e) {
    echo $e;
} catch (Exception $e) {
    echo $e;
}

Até a próxima, pessoal!

 

Boas praticas de programação

Bom pessoal, vamos a mais um post sobre desenvolvimento, neste post vou abordar um tema diferente ao invés de falar apenas sobre o desenvolvimento em si, vou falar um pouco sobre conceitos por traz do desenvolvimento de um bom software, e como primeiro post sobre esse tipo de assunto vou abordar um assunto que embora muitos considerem supérfluo, é indispensável para um projeto grande e/ou projetos que busquem uma qualidade maior do código.

Claro que vão ter algumas pessoas pensando agora, o usuário não lê código fonte por que vou fazer algo que organizado?

Bom a resposta disso é bem simples, embora realmente usuário nunca vá ler o código de seu projeto, pode ser que outros programadores, ou até mesmo você precise fazer alguma alteração em algum código que foi criado há muito tempo. E embora alguns ainda possam pensar, “Mas eu sei o que meu código faz”, isso não é uma garantia pois você vai esquecer.

Mas e ai o que seria uma boa pratica de programação ? Essa pergunta me daria conteúdo para alguns artigos gigantescos, pois não existe uma regra obrigatória para seguir, o que eu posso considerar uma boa pratica, ou algo que facilite meu entendimento sobre meu código outros programadores podem discordar completamente de mim. Como não posso escrever algum artigo gigantesco novamente vou ser o mais pratico e simples possível.

Só para ressaltar a importância de um código bem escrito eu fiz um exemplo rápido em C.

#include

int novamente = 1;
float salario,impostoPagar;

int main(int argc, const char * argv[])
{
while (novamente == 1) {

salario = 0;

printf("Entre com seu salario");
scanf("%f",&salario);

if (salario < 1500) { impostoPagar = salario*0.07; }else if ((salario > 1500)&&(salario < 5000)){ impostoPagar = salario*0.18; }else if (salario > 5000){
impostoPagar = salario*0.30;
}

printf("Voce precisa pagar %.2f\n\n",impostoPagar);

printf("Deseja Fazer uma nova Consulta ?\n 1 -- sim \n 2 -- não\n");
scanf("%i",&novamente);

if (novamente == 1) {

}else if (novamente == 2){
novamente = 2;
}else if ((novamente != 1)||(novamente !=2)){
printf("Voce precisa entrar com outro valor");
}
}

return 0;
}

Como esse era um program extremamente simples não há motivo para inserir dezenas de comentários no meio do código.

#include
int x = 1;
float y,z;
int main(int argc, const char * argv[])
{
while (x == 1) {
y = 0;
printf("Entre com seu y");
scanf("%f",&y);
if (y < 1500) { z = y*0.07; }else if ((y > 1500)&&(y < 5000)){ z = y*0.18; }else if (y > 5000){
z = y*0.30;
}
printf("Voce precisa pagar %.2f\n\n",z);
printf("Deseja Fazer uma nova Consulta ?\n 1 -- sim \n 2 -- não\n");
scanf("%i",&x);
if (x == 1) {
}else if (x == 2){
x = 2;
}else if ((x != 1)||(x !=2)){
printf("Voce precisa entrar com outro valor");
}
}
return 0;
}

Com os 2 código um do lado do outro veja qual fica mais fácil de entender ? Se você acha que o segundo esta melhor, bom pode parar de ler o artigo por aqui mesmo.Agora se você prefere o primeiro código vamos continuar.

Já dizia o filósofo “Um programador escreve um código que o computador entende, já um bom programador escreve um código que outros programadores entendam.”

Quando vamos escrever um código e temos interesse em fazer um código bem escrito temos que ter em mente uma coisa as vezes menos pode ser mais.

Isso quer dizer que sim existem situações em que um comentário pode atrapalhar mais do que realmente ajudar em alguma coisa, no exemplo que mostrei logo acima ele é um código extremamente simples e básico se eu colocasse muitos comentários explicando coisas básicas tipo “pega o valor que usuário digitou”, isso seria um comentário inútil. Uma ressalva para casos especiais, um professor ensinando outras pessoas a programar esse tipo de comentário seria quase indispensável.

Mas então, quando seria o ideal para escrever o comentário? Não sejamos hipócritas, somos programadores em algum momento faremos sim uma gambiarra, ou em algum momento de inspiração vamos criar uma lógica extremamente complexa. Nesse tipo de situação não seria bom colocar o comentário, nesses casos é quase obrigatório.

Muito alem de apenas comentários

Boas praticas vão muito alem de definir quando seria uma hora boa ou ruim para um comentário,vamos falar agora sobre outro tema que bem, podemos escrever outro artigo extenso sobre. A indentação, algumas pessoas em especial quando estão começando a programar não dão tanta importância para o tema, porem é indispensável para qual quer código grande.

O conceito pode parecer simples, basta sair encadeando uma linha dentro da outra. E embora possa se resumir a isso, um código bem estruturado pode significar uma um bom tempo na manutenção de um projeto.

Assim como comentários não é só sair dando tabs por ai temos um “padrão a seguir”, a estrutura mais comum, funciona da seguinte maneira. Imagine um IF que execute uma determinada função, nossa função estaria um “nível abaixo”, agora se esse método executa outro if com seu respectivo bloco de código, esse bloco estaria um “nível abaixo”, praticamente formando uma escada.

Podemos ver esse tipo de encadeando no primeiro código que mostrei no inicio do post.

Lembrando que não é necessariamente obrigatório que um programador siga as boas praticas, porem os que usam alem de facilitar a manutenção de seus projetos, também demonstra uma maturidade maior como programador.

E claro que boas praticas não se resumem apenas em quando usar comentários, como indentar códigos, temos ainda muitos outros temas que não posso abordar nesse post, pois ele ficaria muito extenso, se os leitores se interessarem podemos fazer um post sobre outros temas importantes que deixei de mencionar.

E ai tem outras praticas que acha importante que seja comentado ? Tem alguma duvida ? Alguma coisa que deixei de mencionar ? Mande seu comentário.

Como configurar e-mail no Android

Fala galera!

No post de hoje vamos aprender como configurar e-mail no Android.
Para isso, vamos usar o aplicativo padrão do Android, que já vem pré-instalado no aparelho. Caso esse aplicativo não venha instalado, as configurações podem ser aplicadas em outros aplicativos. Basta seguir a mesma lógica.

Após abrir o aplicativo, será necessário digitar seu e-mail e senha.

Como configurar e-mail no Android

Você pode optar por deixar o próprio aplicativo identificar as configurações automaticamente, ou configurar manualmente (recomendado). Vamos mostrar como proceder manualmente.

Como configurar e-mail no Android manualmente

O primeiro passo é escolher o tipo de conta que será configurado.

Como configurar e-mail no Android

POP3: Com o POP3, os e-mails da sua caixa de mensagens serão transferidos sequencialmente para o dispositivo, ou seja, serão copiados para o celular e removidos do servidor. Porém, podemos definir uma opção para que os e-mails não sejam removidos.

IMAP: Com o IMAP, o gerenciamento das mensagens é feito diretamente no servidor. Qualquer alteração realizada nas mensagens será automaticamente salva.

Exchange: Protocolo específico para Exchange Servers. Saiba mais sobre o Exchange Server no site da Microsoft.

No nosso caso vamos utilizar o POP3 com configurações adicionais para não remover as mensagens.

Na próxima tela vamos definir as configurações de recebimento de e-mails. O Android já deixa os campos preenchidos, porém alguns servidores possuem configurações personalizadas. Para ter acesso à essas informações, entre em contato com o prestador do serviço de e-mails.

Como configurar e-mail no Android

Observe que na opção Excluir e-mail do servidor vamos deixar selecionado Nunca, pois não queremos remover as mensagens do servidor.

O próximo passo será configurar o envio de e-mails. Da mesma maneira que o recebimento de entrada, os campos já vem preenchidos, mas as configurações podem ser diferentes.

Como configurar e-mail no Android

Após configurar o recebimento e envio dos e-mails, vamos definir as configurações de sincronização, ficando a critério do usuário.

Como configurar e-mail no Android

E por último, vamos definir os dados de identificação da conta.

Como configurar e-mail no Android

Pronto! Sua conta foi configurada com sucesso, e você verá na tela a lista dos e-mails que estão na sua caixa de mensagens.

Saiba como configurar seu e-mail em outras plataformas na nossa seção de Dicas e Tutoriais.

Até a próxima, pessoal!

Google Meu Negócio – Tudo que você precisa saber

O que é o Google Meu Negócio?

O Google Meu Negócio é uma atualização do já conhecido Google Local (que um dia já foi Google Places), ou seja um conjunto de ferramenta e funcionalidades grátis que possibilita adicionar e editar informações de seu negócio e interação com seus clientes.

Os benefícios do Google Meu Negócio

– Transmitir confiança de que sua empresa realmente existe, sim ela está no Google;

– Uma ferramenta gratuita para aumentar a divulgação do seu site e, consequentemente, a sua marca;
– Você melhora a sua relevância no Google+ e ainda ajuda no maior ranqueamento nas buscas orgânicas;
– Você passa a monitorar as opiniões dos seus consumidores e realizar melhorias e promoções;

Dicas para o Google Meu Negócio

– É importante preencher todos os dados do Google Meu Negócio para que seja encontrado;
– Preencha até 5 categorias se possível;
– Coloque uma palavra-chave antes do nome da empresa se não houver a categoria desejada, mas tome cuidado para não ser punido;
– Crie uma conta no Youtube e vincule ao seu site;
– Adicione fotos de sua empresa e ajude os clientes a conhecer melhor os diferenciais do seu negócio;

 

Manipulação de Array com swift

Bom pessoal, vamos começar mais um post sobre swift e desta vez vou falar um pouco sobre o array. Um array é como uma caixa com varias caixas dentro que você pode guardar varias informações dentro.

Um array pode armazenar apenas 1 único TIPO de variavel por vez, ou seja se declaramos um array para armazenar dados do tipo string, ele só poderá armazenar dados do tipo string.

Para declarar um array em swift é um processo bem simples precisamos apenas de uma linha de código, digamos que vamos criar um array com o nome de carros, guardando os dados do tipo string, primeiro daremos o nome, e o tipo de dados que podem ser armazenados, por exemplo:

var carros: String[] = ["Fusca", "Fiat 147", "Opala", "Outros"]

Lembrando que o swift capta o tipo de variáveis que são usados dinamicamente ou seja podemos tirar esse string da declaração.

var carros: = ["Fusca", "Fiat 147", "Opala", "Outros"]

Bom não adiantaria nada termos um array se não fosse possível acessar as informações, então vamos usar agora alguns comandos uteis quando trabalhamos com arrays.

Count

A propriedade count é capaz de nos retornar o tamanho de um array, então no caso de nosso array o código ficaria assim:

println(carros.count)

Essa propriedade retorna o total de componentes em nosso array, em nosso caso temos 4 valores.

EMPTY

Esse é o método que nos indica se nosso array esta vazio.

if carros.isEmpty {
println("Nosso array está vazio")
} else {
println("Nosso array tem informações")
}

Os elementos de um array podem ser acessados através de seu index o index seria um inteiro sequencial, que determina uma posição dentro do array (lembrando que assim como em outras linguagens de programação os arrays começam com index 0).

Inserindo dados

A maneira mais fácil de inserir dados no array seria através do operador + ele insere o novo valor no depois do último index disponível, por exemplo em nosso array de carros temos um total de 4 carros, então executamos o seguinte código:

carros += ["Chevette", "Puma GT"]

Nosso chevette e nosso puma entrariam para posição 5 e 6 respectivamente.

Agora digamos que queremos inserir um novo carro na minha primeira posição do array podemos usar o index que desejamos alterar para definir onde inserir os dados no array. Por exemplo quero que na primeira posição do meu array tenha o nome de um carro diferente.

carros[0] = "Carro novo"

Isso faz com que a posição 0 de nosso array (a primeira) tenha o valor Carro novo ao invés de fusca que é a informação que está la.

Insert atIndex e removeAtIndex

esse 2 métodos são usados para inserir um valor em um index (posição) pré definido ou remover o valor de um index que esteja em uma index.

carros.insert("Meu novo Carro", atIndex: 0)
capitais.removeAtIndex(0)

Com esses 2 códigos nós inserimos “Meu novo Carro” no index 0 e depois retiramos o objeto que esteja no index 0 independente do que esteja la.

A listagem de elemento de um array

Talvez o método mais interessante que temos dentro do swift é o laço For in em outras linguagens quando precisávamos listar todos os valores de um array, tinhamos que criar um laço com uma condição de uma variável contador e o tamanho do array, era um processo relativamente chato, e então agora temos o laço for in.

for Carro in carros {
println(Carro)
}

Esse código faz o seguinte, enquanto tivermos um valor dentro de carros, ele será executado, com o comando println mostramos o valor que esteja na posição que o laço está percorrendo.

Caso ainda tenham duvidas sobre array, você pode acessar esse post onde falo também sobre array porém utilizando tabelas.

Estruturas de repetição em Swift

Bom pessoal vamos começar com mais um post sobre o Swift, assim como o ultimo post onde falei sobre estruturas condicionais neste post vamos falar sobre outro recurso extremamente importante para a programação estruturas de repetição os nossos famosos laços.

A principio, o que é um laço?
A ideia básica é criar um pequeno bloco de código que colocamos para se repetir enquanto a condição for verdadeira.

E quais os tipos de laços que existem e quais suas diferenças?

Dentro do Swift temos 4 tipos de laço:

O laço While (enquanto) a estrutura básica dele é a seguinte:

while (condições){
    // códigos que será executado
}

Ou seja, enquanto minha condição for verdadeira, o bloco de código será executada, porem tome cuidado com as condições que você cria para executar laços por exemplo se você cria uma condição 1 < 2, o código será executado infinitamente afinal 1 sempre será menor que 2.

Vamos criar um pequeno exemplo agora:

var teste: Int = 0;
while repetições < 3 {
    println("Nosso laço se repetiu:\(teste+1)");
    teste++;
}

Execute esse código e veja o que acontece em seu terminal, para fazer alterações no número de vezes que ele será executado podemos simplesmente alterar a condição;

Outro laço que podemos usar com Swift é o laço Do-While, ( que significa faça enquanto ) sua estrutura não diferencia muito do while, porem ele tem uma peculiaridade bem interessante ele executara seu bloco de código pelo menos uma vez:

Vamos explicar melhor com nosso exemplo, vamos criar um array que representara o carros em vagas de um estacionamento, cada vaga será equivalente a uma posição no array, e em cada posição um carro, (ok, ok, nesse exemplo temos que usar MUITO a imaginação mas vamos la).

//Nosso estacionamento, lembre-se de usar a imaginação
var carros = ["Ferrari", "Gol", "Fusca", "Fiat 147"]
var contador: Int = 0
do {
    println("Esse é meu carro?")
    contador++;
    if(carros[contador] == "Fusca"){
        println("Achei meu carro")
    }
} while carros[contador] != "Fusca"

Nesse exemplo, nós percorremos um array verificando cada carro, se esse carro que tem nessa vaga é o nosso, e diferente do while nós executamos toda a verificação pelo menos um vez, para então verificar se a condição nos permitiria executar o bloco novamente.

Vamos o laço For agora, esse laço faz exatamente a mesma coisa que um laço while, sua principal diferença é sua estrutura enquanto o laço while você precisa declarar uma condição de incremento em no meio de seu bloco, com o laço for você pode fazer isso tudo em uma única linha, sua estrutura básica funciona assim:

for (inicio, condição , incremento){
  // código
}

O interessante é que podemos por exemplo declarar uma variável no meio do comando for, por exemplo:

for(var contador: Int = 0; contador < 10; ++contador) {
    println("Nosso laço foi executado");
}

E apor fim nosso ultimo laço o For-in esse que tem propriedades muito interessantes, por exemplo podemos mandar ele percorrer um array de maneira MUITO mais simples que com os outros laços, vamos voltar a nosso array de carros, digo nosso estacionamento.

var carros = ["Ferrari", "Gol", "Fusca", "Fiat 147"]
for carro: String in carros{
    println(carro)
}

Nesse laço nós percorremos o array mostrando todos os valores dele no caso mostrando todos os carros dele.

Espero que esse post tenha ajudado alguém, foi bem curto, porem tem um conteúdo bem interessante para quem está aprendendo a programar, e se você gostou deste post, de uma olhada no ultimo onde eu falei sobre estruturas de condição.

Dicas para desenvolvedores de sites

Fala galera!

Hoje vamos ver algumas dicas para otimização do seu tempo ao desenvolver um site, mas de uma forma que facilite para você, desenvolvedor. Vamos estudar algumas “boas maneiras“ na hora de criar seu projeto.

Estrutura de diretórios

Um projeto bem organizado facilita (e muito!) quando se precisa alterar algum arquivo do site. E o primeiro passo é estruturar os diretórios.

Basicamente, um site possui, além das páginas, arquivos CSS para formatação de estilos, arquivos Javascript para alguns recursos visuais e complementos para praticidade, imagens e arquivos diversos (por exemplo, arquivo de upload). Caso você utilize alguma linguagem de programação, é uma boa dicas é manter também um diretório para os arquivos de conexão ao banco de dados e biblioteca de funções, e um diretório para os arquivos da administração do site.

Note na imagem abaixo a estrutura de diretórios de um site que utiliza folhas de estilo CSS, arquivos Javascript e linguagem de programação PHP para gerenciamento do site.

Estrutura de Diretórios

  • admin – arquivos da administração do site;
  • arquivos – arquivos de upload;
  • css – folhas de estilo
  • imagens – imagens utilizadas no site (pode também ser subdividido)
  • js – arquivos javascript
  • php – arquivos de conexão com banco de dados e biblioteca de funções

DICA: Particularmente, também crio um diretório chamado _FONTES, onde guardo todas os arquivos fonte do projeto. (imagens em alta resolução, arquivo do Corel, etc.)

Include de arquivos

Uma ótima técnica para agilizar o desenvolvimento é utilizar include de arquivos para áreas comuns do site. Isso acontece em praticamente todos os frameworks disponíveis.

Se o seu site mantém as mesmas informações do cabeçalho, não é necessário dar um “Ctrl C Ctrl V” em todas as páginas. Basta montar um único arquivo, e utilizar a função “include()” (no caso do PHP) para chamar esse arquivo.

Include

Neste exemplo, a linguagem de programação é o PHP. A função include() foi utilizada para chamar o arquivo header.php, que contém todas as informações do cabeçalho do site. No caso do PHP, existem também as funções include_once(), require() e require_once(), cada uma com suas particularidades. Em outras linguagens, as funções podem ser diferentes, com sintaxes diferentes.

IMPORTANTE: lembre que no include de arquivos, TODO o conteúdo é “adicionado” na página que o chamou. Se no arquivo do include você fechar a tag html, poderá ter problemas. É recomendado manter apenas os elementos do cabeçalho, sem as tags <html>, <head>, <meta>, etc.

Biblioteca de funções

Como citado na dica anterior, caso você utilize programação é extremamente útil ter um arquivo que armazena todas as funções utilizadas no sistema. Dessa maneira, não será necessário copiar o código para as páginas onde a mesma será utilizada.

Dúvidas (PHP)

  • Se eu alterar o conteúdo de um arquivo que é chamado pela função include(), preciso atualizar todos os arquivos que chamam ele?
    Não! E esse é a grande sacada do include. Basta você alterar o arquivo de include, que todas as outras páginas serão atualizadas automaticamente (porém, caso você altere o nome do arquivo, será necessário trocar todas as linhas de código do include()).
  • Posso utilizar um “include()” dentro do outro?
    Sim. Não existe limitação para tal. Apenas cuidado para não se perder nos includes.
  • Qual a diferença entre include(), require(), include_once() e require_once()?
    include(): tenta incluir a página indicada. Caso não consiga, retorna um WARNING e continua a execução do script. Aceita parâmetros GET.
    require(): o mesmo do include(), porém caso não consiga, gera um FATAL ERROR e aborta a execução do script. Não aceita parâmetros GET.
    include_once() e require_once(): idênticas as funções simples, porém se o arquivo em questão já foi referenciado anteriormente, retorna false e não inclui novamente.
    → Mais informações em PHP.Net
  • Existe algum limite para include de arquivos?
    Não. Não existe limitação para tal. Apenas cuidado para não se perder nos includes.

Caso tenha mais alguma dúvida ou dica, deixe nos comentários!

Nos próximos posts, vamos listar algumas funções básicas em PHP para salvar na biblioteca de funções. Não percam!

Estruturas condicionais com swift

Bom pessoal, vamos a mais um post sobre o desenvolvimento de IOS, como meu último post ficou um pouco grande vou tentar ser um pouco mais sucinto nesse. Este post vai tratar de um assunto simples, porem extremamente importante para a programação como um todo não só para o desenvolvimento mobile, vamos trabalhar com as estruturas condicionais.

Bom antes de tudo, o que são estruturas condicionais ?

Quando estamos programando alguma coisa, em praticamente 100% dos códigos nós precisamos usar um if, quando usamos esse tipo de código nós estamos falando para o computador, olha SE a condição que eu falei foi cumprida, faça tal coisa. Temos também outros códigos que podemos usar junto como o caso do else, esse código usamos logo depois de um IF ele quer dizer que se a condição para executar o if não for cumprida, deve ser feito o que temos dentro das chaves ( { } ) de nosso else. Feita essa breve introdução vamos programar um pouco.

Inicie um novo projeto Swift, não vamos usar nenhum recurso visual, então vamos criar um novo, em linhas de comando apenas para demonstrar nossos exemplos.

Tela de criação de projeto swift
Tela de criação de projeto swift

Para começar precisamos criar uma variável para testar nosso sistema de condições, vamos criar uma variável do tipo inteiro, vou chama-la de idade, e vou atribuir a ela o valor 18.

var idade = 18;

Imagine agora que estamos fazendo um sistema para verificar se uma pessoa pode entrar em nosso bar, porem para entrar em nosso bar é preciso ter 18 anos ou mais, então vamos fazer uma condição, se a idade for maior ou igual a 18 ele pode entrar, e como ficaria isso em swift?

if(idade >= 18){

    println(“A pessoa pode entrar”)

}

Porém, e se a pessoa não for maior de idade? Para isso usamos nossa comando Else, nosso código fica da seguinte maneira.

var idade = 18;

if(idade >= 18){

    println(“A pessoa pode entrar”)

}else{

    println(“A pessoa não pode entrar”)

}

Mas e ai, o que significa esse >= que usamos em nosso código, bom eles são nossos operadores condicionais, normalmente usamos 6 deles:

X > Y onde nosso X é maior que nosso Y

X < Y onde nosso Y é maior que nosso X

X >= Y onde X é maior ou igual a nosso Y

X <= Y onde X é menor ou igual ao nosso X

X == Y onde nosso X e nosso Y são iguais (Lembrando que usar =, == e === são diferentes, se usamos apenas 1 = estamos atribuindo um valor a outro, == quer dizer que estamos comparando um valor ao outro, e o === estamos comparando um valor ao outro, e também estamos comparando o tipo da variavel).

Vamos treinar um pouco as comparações e fazer uma série de ifs testando as condições, para isso vamos criar 2 variáveis do tipo inteiro, e atribuir um valor a cada uma.

var x = 10

var y = 9

if(x>y){

    println(“X é maior que y”)

}else{

    println(“Y é maior que X”)

}

if(x>=y){

    println(“X é maior ou igual a y”)

}else{

    println(“Y é maior ou igual a X”)

}

 

if(x==y){

    println(“X é igual a Y”)

}else{

    println(“Y é igual a X”)

}

if(x===y){

    println(“X e Y tem valores Igual, e o mesmo tipo”)

}else{

    println(“X e Y tem valores diferentes ou tipos diferentes”)

}

com esse trecho de código podemos ver uma série de comparações, usando if/else, esse tipo de comparação pode ser feita com condições mais complexas, por exemplo uma equação, vamos criar outras 2 variáveis do tipo inteiro, e faremos o seguinte.

var y = 10

var z = 15

 

if((y*z) > 100){

    println(“A multiplicação de y e z é maior que 100”)

}else{

    println(“A multiplicação de y e z é menor que 100”)

}

Notem que para que nossa equação seja feita antes da comparação, a colocamos dentro de parênteses, assim o compilador faz a multiplicação dos dois valores e então a comparação.

Porem não precisamos fazer necessariamente fazer a comparação entre 2 valores inteiros, podemos usar exemplos boleanos por exemplo.

Então vamos la em mais um exemplo, criando uma variável do tipo boleano, e vamos atribuir um valor verdadeiro a ele (true).

var a = true

if (a == true){

    println(“o valor de a é verdadeiro”)

}

E por fim temos um ultimo tipo de comparação muito interessante podemos fazer comparações mais interessantes usando operadores lógicos(|| e &&), vamos a mais um exemplo com 2 variáveis do tipo Boleano.

var v1 = true

var v2 = false

if(v1 || v2 == true){

    println(“o valor de v1 ou v2 são verdadeiros “)

}else{

    println(“Nenhum dos valores é verdadeiro”)

}

Para esse tipo de comparação usamos || ou &&.

x || y quer dizer que o valor x OU que o valor y tem que atender a condição

x && y quer dizer que o valor x E que o valor y tem que atender a condição

Bom pessoal por hoje é isso, esse post ficou bem mais curto que o anterior, mas ainda apresenta um conteúdo muito interessante, e muito importante para quem está aprendendo a programar. Todo o código que usamos em nosso projeto está disponível para Download aqui.

Caso queira aprender mais sobre o Swift acesse este link onde falamos mais sobre a linguagem.