domingo, 3 de maio de 2015

Aprenda conceitos, não IDE!


É bastante comum hoje em dia termos uma certa rixa de IDEs entre os desenvolvedores Java, de um lado, temos os fanáticos usuários do Eclipse, do outro lado, os não menos fanáticos usuários do NetBeans. Entretanto, para esses fanáticos, faço a pergunta: E os conceitos de desenvolvimento, você conhece tanto quanto os conceitos da IDE que você usa? Se você for posto hoje para programar em um bloco de notas, vai encarar, ou vai arregar?

Precisamos ter em mente, que uma IDE serve apenas e exclusivamente para FACILITAR o desenvolvimento, lhe oferecendo uma série de ferramentas e atalhos que tornam mais rápido ou mais eficiente o seu trabalho. É comum (e errado) que desenvolvedores se acostumem com uma IDE de tal forma, que se forem postos para desenvolver em um bloco de notas, vão se perder e até mesmo, passar horas tentando lembrar a localização de uma biblioteca que ele precisa fazer um import, e isso é verídico, já vi acontecer! Então fica a dica: Essa pessoa, não seja ela...

Por favor, não pensem que eu sou um xiita que programa na unha! Também uso uma IDE (Que por motivos de "quero evitar a treta" não vou comentar qual). Mas a mensagem que quero transmitir neste post é: Não se prenda aos conceitos da ferramenta que você usa, se prenda aos conceitos de desenvolvimento, pois ferramentas mudam com o tempo, ou até mesmo de empresa para empresa, hoje você pode estar em uma empresa que use a IDE X e amanhã pode ser contrato por uma que use a IDE Y... mas já conceitos envolvidos no desenvolvimento não mudam (ao menos não tão facilmente).

Essa dica se faz ainda mais útil para quem está aprendendo a desenvolver, pois é muito comum que em entrevistas, as empresas não disponibilizem nenhuma IDE para aquela provinha de contratação, então esteja preparado para situações como está! Uma dica para quem está aprendendo é: Use o notepad++, que tem a facilidade visual de ter as letrinhas coloridas, que temos que admitir que são quase essenciais hoje dia, mas sem os facilitadores como o auto complete. Passe o período que você está aprendendo, compilando o algoritmo na unha! Você vai absorver muito mais conhecimento, simplesmente por que vai errar muito! E vai aprender a identificar os seus erros de forma mais intuitiva, tenha certeza que isso será ótimo para ti.

Tenha em mente: Não se prenda em aprender sobre uma ferramenta, foque em aprender sobre os conceitos de desenvolvimento, por que vai que chega o dia em que você não tem nenhuma IDE em mãos para importar automaticamente sua biblioteca, ou dar aquele auto complete?

À quem se interessar, segue o link para download do Notepad++:
http://notepad-plus-plus.org/download/v6.7.7.html

sexta-feira, 24 de abril de 2015

Algoritimo da pirâmide!

Certa vez em uma entrevista, me foi pedido como teste um código que me quebrou bastante a cabeça: um algoritmo que imprima uma pirâmide de pontinhos.

Na explicação do rapaz que estava me fazendo a entrevista, eu deveria simplesmente imprimir na tela:

.
. .
. . .
. . . .


 Vamos analisar a pirâmide do modo programador:
 

1 - O número de espaços necessário em cada linha é o número de linhas da pirâmide (nesse caso 4) menos o número da linha que estamos.

Então anota lá no canto:
numeroDeEspacos = numeroTotalDeLinhas - linhaAtual

2 - O número de pontos em cada linha, é o mesmo da linha que estamos!

Anota lá no canto de novo:
numeroDePontos = linhaAtual

Legal, agora acredito que dessa forma, vocês irão entender bem o código que fiz (em Java):


       /*
        Aqui iremos setar quantas linhas queremos em nossa pirâmide.
       **/
      int numeroTotalDeLinhas = 4;

           /*
            Este primeiro "for" irá fazer a nossa contagem da linha atual.
            Ele deverá ser rodado até que ele seja igual ao numero total de linhas da pirâmide.
           **/
        for (int linhaAtual = 1; linhaAtual <= numeroTotalDeLinhas ; linhaAtual++){
            /*
               Como eu disse, o número de espaços necessários, será:
               O número de linhas que iremos imprimir (nLinhasImpressa) menos a linha 
                que estamos, que está sendo contato por nLinhas.
            **/
           for (int numeroDeEspacos = 0; numeroDeEspacos < (numeroTotalDeLinhas- linhaAtual); numeroDeEspacos ++){

                System.out.print(" "); // Estamos imprimindo um espaço.
 
            }

            /*
               Já o número de pontos, será contato o mesmo da linha que estamos, exemplo:
               Se estamos na linha 2, precisamos de 2 pontos!
            **/
            for (int numeroDePontos = 0; numeroDePontos < linhaAtual; numeroDePontos ++){

                System.out.print(". ");
 
                // Note que estou imprimindo um "ponto" já com espaço! Para que formemos uma pirâmide.             
            }

            /*
               Aqui estamos simplesmente quebrando a linha ao final de um laço.
            **/
            System.out.println("");
        }



Código limpo:

       
       int numeroTotalDeLinhas = 4;
        for (int linhaAtual = 1; linhaAtual <= numeroTotalDeLinhas ; linhaAtual++){
           for (int numeroDeEspacos = 0; numeroDeEspacos < (numeroTotalDeLinhas - linhaAtual); numeroDeEspacos ++){
                System.out.print(" ");
            }
            for (int numeroDePontos = 0; numeroDePontos < linhaAtual; numeroDePontos ++){
                System.out.print(". ");
            }
            System.out.println("");
        }




É isso pessoal, este é meu primeiro post aqui do Blog, tentarei postar sempre que conseguir com tutoriais de maneira bem detalhada. Se ligue para os próximos posts! Obrigado!

P.S.: Falaremos também de assuntos mais avançados, como JSF, Hibernate, Programação orientada a objetos e etc.