Monday, August 17, 2015

Aula: Lógica, Tipada, Dinâmica - Capitulo 1

Olá queridos alunos, hoje iremos embarcar nessa série de aulas que irá cobrir tudo para você, que quer começar a programar, ou para você, que já sabe programar uma linguagem dinâmica e quer aprender algo mais fortemente tipado, ou vice-versa. O intuito desse curso é começar com os básicos de lógica de programação e mostrar exemplos de código em Java e Javascript, que apesar dos nomes, são MUITO diferentes, e vai te dar uma boa base para saber como se virar com ambos paradigmas em qualquer problema.

Supere o Fracasso

Ok, esse subtitulo está bem "clichê", mas é isso mesmo, todo bom programador começa vive se lascando o tempo todo, não consegue instalar as ferramentas necessárias, o programa dá pau e ele não faz idéia do problema, e muitas vezes tem que assumir que não sabe e pedir ajuda. Mas a partir de agora sua personalidade irá mudar, toda vez que você sentar à frente do computador para programar terá que encarnar o Falcão (Sylvester Stallone), ao encontrar uma dificuldade vai virar seu bonézinho pra trás e... procurar o problema no StackOverflow.com, porque ninguém nasce sabendo. Aliás, falando nisso, aprenda inglês e deixe de procurar no google em português.

Compilada x Interpretada

Todo software é formado por uma sequência de instruções que serão lidas e executadas, agora imagina se escrevêssemos as instruções como escrevemos um pedido para um amigo, o computador precisaria ser muito inteligente e gastar muitas horas para executar algo básico, por isso precisamos ajuda-lo. 
A grande linguagem de programação C é compilada para ser lida em baixo nível, quero dizer, o compilador irá transformar algo que nós entendemos em algo que a máquina pode entender rapidamente, gerando um arquivo executável, por este motivo C é tão rápido. Por outro lado tempos o Javascript, sua velocidade de execução não se compara ao C, é uma linguagem interpretada, não precisa ser compilada antes de executa-la, o interpretador irá ler da mesma maneira que nós lemos e executar na hora.
Mas então qual a vantagem do javascript? Existem muitas vantagens em linguagens interpretadas: Muitas vezes compilar um software leva tempo, linguagens interpretadas são mais livres, existindo menos regras que limitam a criatividade, e as vezes o ambiente não suporta uma linguagem compilada.
E o Java, onde se encaixa? Bom, iremos considerar que o Java é compilado, mas ele não é como o C, existem outras camadas, mas não vou entrar em detalhes agora.

Um método

O método é uma ação em um programa, neste caso irá somar dois valores e retornar o resultado.
Veja as palavras reservadas do Java: private, int, return. E as palavras reservadas do javascript: var, function, return.
Quando dizemos "int resultado" ou "var resultado" estamos declarando uma variável, variável é onde armazenamos valores, neste caso estamos armazenando números inteiros, por isso o "int", que é usado no Java, nele todas as variáveis precisam ter apenas um tipo pré-determinado.
No Javascript dizemos apenas "var", pois o valor pode ser int agora e substituirmos por um texto depois.
A primeira linha de um método é a sua assinatura, no Java dizemos o tipo do retorno, o nome do método que você irá escolher, e entre parênteses os argumentos, são variáveis de entrada que serão informadas para realizar a operação. As chaves delimitam o escopo da execução, é o início e fim do código do método.

//Java
int somar (int a, int b) {
  int resultado;
  resultado = a + b;
  return resultado;
}


//Javascript
var somar = function (a, b) {
  var resultado;
  resultado = a + b;
  return resultado;
};

Nesse exemplo criamos o método "somar" que dados dois inteiros de nome "a" e "b" irá retornar um valor. Declaramos uma nova variável chamada "resultado", usamos o operador "+" para somar o valor das variáveis "a" e "b" e armazenar na variável "resultado" e retornamos o valor de "resultado" para fora do método.
O símbolo "=" atribui um valor a uma variável, estamos "enfiando" um valor dentro de um lugar.
No Javascript métodos são funções de um determinado escopo, irei explicar isso melhor posteriormente, função é um tipo, assim como o int, e como você pode ver neste exemplo estamos declarando uma variável "somar" e colocando esta função nela, podemos executar a função da mesma maneira que executamos o método no Java.

Para testar este código em javascript basta acessar:
http://jsfiddle.net/p0ozrk6b/
e clicar em "Run"

Para testar este código em Java acesse:
https://ideone.com/VSjaPQ
Você pode altera-lo clicando em "edit" e roda-lo novamente clicando em "Ideone it!"
Para ter melhor aprendizado do Java você deve instalar o JDK para poder programar em sua máquina, e uma IDE, eu sugiro usar o Netbeans.