Aprendendo a Programar- Linguagem Java

Aprenda Programação em Java

O que é este material?

Esta é uma demonstração de como acompanhar o curso online "Programação em Java do Zero ao Android", utilizando a apostila de estudos. Separamos, aqui, alguns capítulos do meu livro "Aprendendo a Programar - Linguagem Java", que faz parte do material de apoio ao Curso Completo de Java para Android.

Ao final de cada capítulo, você terá acesso ao vídeo da aula correspondente ao material que você acabou de ler. Desta forma, com a leitura e o posterior visionamento das videoaulas, você poderá avaliar melhor a experiência de acompanhar o curso online, tendo em paralelo o texto e as aulas gravadas sobre cada tema.

Para se aprofundar ainda mais, conheça o Curso Completo "Programação em Java do Zero ao Android" e o Livro "Aprendendo a Programar - Linguagem Java".

1. Compilador Online

O Java é uma linguagem utilizada em vários programas, compiladores e IDEs. Existem muitas maneiras diferentes de programar em Java.

Cada ferramenta vai te possibilitar a criação de um tipo diferente de aplicação (games, aplicativos mobile, aplicativos desktop).

Neste livro utilizaremos um Compilador Online de Java. Uma ferramenta gratuita que serve para estudar e prototipar programas e algoritmos.

Os Compiladores Online são ferramentas bem simples de utilizar, e não necessitam de nenhuma instalação, pois funcionam diretamente dentro do navegador da internet.

São ferramentas um pouco limitadas em matéria de recursos, porém são ideais para estudos e criação de protótipos de programações.

Ao final do material, vou te ensinar a utilizar o Android Studio IDE (Integrated Development Environment) junto com o Java, para que você inicie no desenvolvimento de aplicações mobile.

O Android Studio é o programa capaz de juntar o Java com qualquer outro tipo de recurso Gráfico (Imagens, Animações, Vídeos) e de funcionalidades (Internet, Banco de Dados e todo tipo de recurso dos celulares e tablets Android como Internet, Câmera, Acelerômetro ou Geolocalização).

Porém, o IDE requer muito mais conhecimento para ser instalado e utilizado. Recomendo que o leitor ou aluno sempre inicie por um compilador mais simples para entender os fundamentos da programação, antes de começar a estudar o IDE. Isto vai facilitar muito o aprendizado.

Seguem algumas sugestões de Compiladores Java Online Gratuitos:

  • www.compilejava.net
  • www.tutorialspoint.com/compile_java_online.php
  • www.browxy.com
  • www.codiva.io
  • www.jdoodle.com
  • ideone.com
  • www.onlinegdb.com
  • rextester.com/l/java_online_compiler

Para as explicações do Livro, utilizarei o compilejava.net. Porém, todos os outros compiladores têm funções e recursos bem parecidos, e também podem ser utilizados durante o desenvolvimento dos projetos.

Então vamos começar! Acesse o site compilejava.net através do seu navegador.

Observe a interface do programa e vamos entender como utilizar o Compilador Java.

Precisamos conhecer basicamente 4 recursos da ferramenta:

  1. Área para Escrever o Código
  2. Botão para Compilar e Executar o Código
  3. Console de Status e Erros de Execução
  4. Console para Exibir Mensagens


Observe o código que já vem escrito como exemplo. Clique em COMPILE & EXECUTE (2) e veja o que aparece no Console de Mensagens (3).

Esta mensagem é o resultado da aplicação que foi executada. Em cada um dos sites/compiladores, você vai ter um exemplo diferente. Não vamos nos aprofundar nisso agora.

Apague todo o código e vamos escrever um programa do Zero!

Copie o código a seguir exatamente como está, e execute no seu compilador para ver o que acontece.

Lembre-se que cada vírgula, parênteses ou chaves são importantes e fazem toda a diferença!

Exemplo:

public class MinhaClasse

{

public static void main( String[ ] args )

{

System.out.print( "Bem-Vindo ao Java!" );

}

}

Clique em COMPILE & EXECUTE e veja o que aparece agora no Console de Mensagens.

Resultado:

Bem-Vindo ao Java!

O resultado é praticamente o mesmo que anteriormente, apenas uma mensagem sendo exibida no console. Porém agora utilizamos apenas o essencial, o mínimo de código para fazer um código em Java funcionar, ou seja:

  • uma Classe (no caso, apelidei de MinhaClasse);
  • e uma Função chamada main dentro desta classe;

Para reforçar o que você acabou de aprender neste capítulo, assista a esta videoaula .

2. Variáveis e Formatação de Strings

Para programar, precisamos manipular valores ou dados que são armazenados em "recipientes" identificados.

Imagine uma caixa com algum objeto guardado nela. Esta caixa possui um nome para você se lembrar o que ela contém.








É claro que a caixa não existe, ela representa os espaços na memória do dispositivo.

Para o computador, esta variável tem um endereço numérico que indica a posição na memória.

Na nossa programação, vamos dar nomes às variáveis, que representam estes endereços.

Pense que a Memória RAM do computador é um armário, separado em vários recipientes, cada um com um nome (Variável), sendo que, em cada recipiente você tem a possibilidade de guardar um determinado tipo de item (Dado ou Valor).

Veja abaixo alguns dos principais Tipos de Dados que podemos criar e utilizar na programação em geral.

Cada variável só pode ser de um único tipo, e só pode armazenar objetos daquele mesmo tipo.

Por exemplo: você nunca poderá guardar um nome em uma variável que já foi numérica.

Para criarmos uma variável na programação em Java, precisamos seguir uma regra.

Veja o exemplo da criação de uma variável do tipo String, para armazenar um nome:

Exemplo:

String nome = "Tito Petri";

Perceba que precisamos seguir uma lógica para dizer ao compilador: que tipo de dado estamos criando, qual o nome desta variável, e a sua inicialização, que é o valor que será guardado na variável. Desse modo:

1) Declare o Tipo da variável ( String )

2) Declare um nome para a variável ( nome )

3) Inicie-a com algum valor ( = "Tito Petri")

4) Lembre-se do ponto e vírgula para indicar o fim do comando ( ; )

Neste momento da Declaração das Variáveis, precisamos entender mais algumas regras:

1) Podemos usar qualquer nome para as variáveis. Contando que o nome respeite o seguinte:

Não seja uma Palavra Reservada (comando da linguagem). (Exemplo: System, class, void…)

Não pode conter um Caractere Especial.

( Exemplo: ! @ #$%ˆ&* )

- Não pode Iniciar em Número.

( Exemplo: 50nome, 123, 1idade )

2) É possível declarar apenas a variável sem inicializá-la.

Escreva o seu Nome e Tipo) e atribua à ela um valor apenas adiante no código.

Exemplo:

String nome;

nome = "Tito Petri e Felpudo";

3) O símbolo de igual ( = ) neste momento não tem o sentido de comparação, e sim de atribuição. Ou seja, estamos atribuindo, ou guardando um valor em uma determinada variável.

Exemplo:

int idade = 12;

No exemplo acima, criamos uma variável do tipo int, damos a ela o nome de idade, e guardamos nela o valor 12.

4) Os números decimais são representados por dois tipos diferentes (float ou double).

A diferença entre estes dois tipos, é que o double armazena o dobro de casas decimais depois do ponto (o que garante uma maior precisão do número, e é ideal para aplicações gráficas)

Consequentemente, o float é mais leve e ocupa menos espaço na memória.

Um float deve sempre acompanhar um f após o número.

Veja a seguir o exemplo da declaração de diferentes tipos de variáveis dentro do escopo (chaves {...} ) da função main:

public class HelloWorld

{

public static void main(String[] args)

{

String nome = "Tito Petri";

char sexo = 'm';

int idade = 23;

float altura = 1.85f;

double peso = 70.5;

boolean ligado = true;

}

}

Declare algumas variáveis e execute o código.

Por enquanto, se o seu código estiver todo correto, nada irá acontecer, pois apenas criamos algumas variáveis e atribuímos alguns valores à elas.

Agora, vamos acessá-las e exibir seu valor no console. Para isso, vamos utilizar o comando System.out.print().

Exemplo:

public class HelloWorld

{

public static void main(String[ ] args)

{

String nome = "Tito Petri";

int idade = 23;

float altura = 1.85f;

boolean ligado = true;

System.out.print(nome);

System.out.print(idade);

System.out.print(altura);

System.out.print(ligado);

}

}

Execute o código e veja o resultado que aparece no seu Console de Mensagens.

Resultado:

Tito Petri231.85true

Perceba que os valores foram impressos um em sequência do outro, sem espaço.

Para executar uma quebra de linha entre um dado e outro, troque o comando print por println

Exemplo:

System.out.println(nome);

System.out.println(idade);

System.out.println(altura);

System.out.println(ligado);

Resultado:

Tito Petri

23

1.85

true

Para reforçar o que você acabou de aprender neste capítulo, assista a esta videoaula .

3. Operadores Aritméticos e Funções Matemáticas

Um recurso indispensável para a programação, é o de fazer facilmente Operações Matemáticas pelo Compilador.

As 4 Operações Fundamentais são realizadas facilmente pelos operadores:


+

Soma

-

Subtração

*

Multiplicação

/

Divisão


Podemos executar tanto as Operações Fundamentais da Aritmética, quando trabalhar com expressões e funções trigonométricas mais avançadas.

Além das 4 operações básicas, confira algumas outras operações matemáticas que conseguimos realizar no Java:

+ (addition)

++ (increment)

+= (add assign)

- (minus)

-- (decrement)

-= (subtract assign)

* (multiply)

*= (multiply assign)

/ (divide)

/= (divide assign)

% (modulo)

a) Módulo

O módulo é calculado com o operador %. Ele nos retorna o resto entre a divisão de dois números.

Exemplo:

System.out.println( 7%3 );

System.out.println( 8%2 );

System.out.println( 4%5 );

Resultado:

1

0

4

b) Raiz Quadrada - Math.sqrt()

O comando Math nos permite realizar operações ainda mais avançadas como o cálculo da raiz ou da potência de um número. Veja os exemplos a seguir:

Exemplo:

System.out.println( Math.sqrt(100) );

System.out.println( Math.sqrt(4) );

System.out.println( Math.sqrt(121) );

Resultado:

10.0

2.0

11.0

c) Potência - Math.pow()

Exemplo:

System.out.println( Math.pow(2, 2) );

System.out.println( Math.pow(4, 2) );

System.out.println( Math.pow(3, 3) );

Resultado:

4.0

16.0

27.0


Arredondamento de Decimais

Conheça também alguns métodos para arredondar números decimais.

a) Math.round()

Retorna o número inteiro mais próximo do número decimal indicado.

Exemplo:

System.out.println( Math.round(3.49) );

System.out.println( Math.round(3.1) );

System.out.println( Math.round(3.501) );

Resultado:

3

3

4

b) Math.floor()

Retorna o número inteiro abaixo do decimal indicado

Exemplo:

System.out.println( Math.floor(7.99) );

System.out.println( Math.floor(7.01) );

Resultado:

7

7

c) Math.ceil()

Retorna o próximo número inteiro acima do decimal apontado.

Exemplo:

System.out.println( Math.ceil(7.01) );

System.out.println( Math.ceil(7.99) );

Resultado:

8

8

Para reforçar o que você acabou de aprender neste capítulo, assista a esta videoaula .

4. Operadores Lógicos e Relacionais

Operadores de Comparação

Podemos comparar dois valores e obter true ou false, caso a comparação seja satisfeita, ou não.




Observe quais são os Operadores de Comparação:

Faça alguns testes no seu compilador e observe os resultados.

Exemplo:

public class HelloWorld

{

public static void main(String[] args)

{

System.out.println(10 == 10);

System.out.println(true == false);

System.out.println(5 != 5);

System.out.println(1 < 10);

System.out.println(5 > 3);

System.out.println(10 <= 10);

System.out.println(5 >= 1);

}

}

Resultado:

true

false

false

true

true

true

true

Operadores Lógicos

As operações lógicas servem para comparar dois valores booleanos e retornar um resultado referente à esta comparação. Existe na programação basicamente 3 Operadores Lógicos:

a) Operador And ( && )

Vai comparar dois booleanos e retornar true apenas se o primeiro valor for true E o segundo valor também for true.

Exemplo:

System.out.println(true && true);

System.out.println(true && false);

System.out.println(false && true);

System.out.println(false && false);

Resultado:

true

false

false

false

b) Operador Or ( || )

Vai comparar dois booleanos e retornar true se o primeiro valor for true OU o segundo valor for true.

Exemplo:

System.out.println(true || true);

System.out.println(true || false);

System.out.println(false || true);

System.out.println(false || false);

Resultado:

true

true

true

false

c) Operador Not ( ! )

Inverte o valor do booleano.

Exemplo:

System.out.println( ! true );

System.out.println( ! false );

Resultado:

false

true

Para reforçar o que você acabou de aprender neste capítulo, assista a esta videoaula .

5. Estruturas de Condição If Else e Switch

A Condição If é utilizada para controlar o fluxo da aplicação digital. É ela quem diz por qual caminho a aplicação deve seguir sua execução, baseada em uma verificação.

Condição If (Se), faz a execução do programa seguir determinado caminho, dependendo do resultado de um teste lógico.

Se o teste resulta em true (verdadeiro) o programa segue executando um determinado trecho de código.

Caso o teste resulta em false (falso) o programa ignora este trecho de código, ou até mesmo executa outro determinado trecho.

Veja uma implementação da estrutura de Condição If / Else no Java:

Exemplo:

int idade = 16;

if ( idade >= 18 ) {

System.out.print("Pode Dirigir!");

} else {

System.out.print("Nao Pode Dirigir!");

}

Caso a comparação, que está entre parênteses (idade >= 18), seja satisfeita, o programa vai executar o que está dentro das primeiras chaves {...}

Exemplo:

if ( idade >= 18 ) {

System.out.print("Pode Dirigir!");

} else {

System.out.print("Nao Pode Dirigir!");

}

Caso o resultado da comparação seja false o programa ignora o que está contido nas primeiras chaves, e executa o que está na segunda, depois do else.

Exemplo:

if ( idade >= 18 ) {

System.out.print("Pode Dirigir!");

} else {

System.out.print("Nao Pode Dirigir!");

}

O else, vale ressaltar, é opcional! Podemos criar uma condição if sem o else. Caso a condição seja falsa e o else não exista, o programa ignora tudo e continua a execução.

Existe também a estrutura else if, onde podemos utilizar uma segunda comparação antes de executar o que existe dentro das chaves do else.

Exemplo:

If ( idade >= 18 ){

System.out.print("Pode Dirigir!");

}else if ( idade > 60 ){

System.out.print("Deve Renovar a Carta!");

}else{

System.out.print("Nao Pode Dirigir!");

}

Baseado neste exemplo, perceba que você pode utilizar quantos if/else quiser e comparar diferentes valores e situações.

Observe que o conceito de Comparações Lógicas e Estruturas de Condição se aplica ao desenvolvimento de qualquer tipo de Aplicação Digital como Dispositivos Eletrônicos, Robótica e VideoGames.

A Estrutura de Condição é o que faz parecer que o computador Pensa e toma suas Próprias Decisões.

Estrutura de Condição Switch

Em alguns casos, ao invés de utilizar vários if, else if… podemos simplificar o Código utilizando a estrutura switch. Esta estrutura compara um Valor a várias outras possibilidades, e caso a comparação seja verdadeira, o Comando determinado é executado.

Exemplo:

String nome = "Felpudo";

switch(nome) {

case "Tito" : System.out.print("Oi Tito!"); break;

case "Felpudo" : System.out.print("Oi Felpudo!"); break;

case "Fofura" : System.out.print("Oi Fofura!"); break;

default: System.out.print("Nao conheco voce!"); break;

}

Perceba no Código do exemplo, os Comandos destacados em negrito fazem parte da estrutura do switch.

Entenda cada um dos operadores da estrutura Switch:

  • switch() seleciona a Variável a ser comparada.
  • case compara com o valor do próximo argumento.
  • : Indica o início do comando a ser executado.
  • default será executado, caso nenhuma das comparações anteriores tenha sido satisfeita.
  • break - Indica o fim da ação executada. Faz com que a execução pule para fora do escopo na execução do código.

Adiante veremos que o break pode ser utilizado também em outras estruturas na programação, para cessar a execução do escopo atual.


Para reforçar o que você acabou de aprender neste capítulo, assista a esta videoaula .

6. Estruturas ou Loops de Repetição For e While

Repetição for

A estrutura de repetição for serve para executar um determinado comando várias vezes seguidas.

Podemos determinar o número de vezes que uma instrução será executada.

Execute a estrutura for abaixo, e observe o resultado no console:

Exemplo:

for ( int i = 0 ; i <= 10 ; i++ ){

System.out.println("Valor do Contador: " + i);

}

Resultado:

Valor do Contador: 0

Valor do Contador: 1

Valor do Contador: 2

Valor do Contador: 3

Valor do Contador: 4

Valor do Contador: 5

Valor do Contador: 6

Valor do Contador: 7

Valor do Contador: 8

Valor do Contador: 9

Valor do Contador: 10

Perceba que o comando print foi executado 11 vezes, e durante a execução, a variável numérica chamada de i foi incrementada (aumentou de valor) a cada vez que o comando foi executado.

Agora vamos entender o que aconteceu. Observe como foi criada a estrutura do for:

Exemplo:

for ( int i = 0; i <= 10; i++ ) {

System.out.println("Valor do Contador: " + i);

}

Entre os parênteses você precisa declarar três argumentos que estão separados pelo ponto e vírgula (;).

É muito importante entender cada um destes argumentos para utilizar o for.

O primeiro argumento ( int i = 0 ) cria uma variável do tipo inteira e a chama de i. Inicializamos este número por zero, e ele serve como um contador para nos indicar quantas vezes a estrutura já foi executada.

Utilizamos a letra i por questões de boas práticas de programação. Este contador poderia ser declarado por qualquer nome.

O segundo argumento ( i <= 10 ) é uma condição. Perceba que existe uma comparação que deve ser satisfeita (verdadeira). Enquanto esta condição for verdadeira, o que está dentro do for será executado.

O terceiro argumento ( i++ ) é o incremento. Cada vez que a estrutura é executada, a variável i vai receber +1 no seu valor.

Ou seja, durante a primeira execução do laço, a variável i terá o valor 0. Durante a segunda, o valor 1, durante a terceira o valor 2, e assim sucessivamente.

Podemos também trocar o i++ por i-- e fazer a variável decrementar (diminuir) seu valor conforme a execução.

Utilizando i+=2 ou i+=3 podemos incrementar de "2 em 2" ou "3 em 3" unidades, e assim sucessivamente.

Veja a seguir mais algumas implementações da estrutura (ou laço) de repetição for:

a) Decrementando o Contador:

Exemplo:

Valor do Contador: 10

Valor do Contador: 9

Valor do Contador: 8

Valor do Contador: 7

Valor do Contador: 6

Valor do Contador: 5

Valor do Contador: 4

Valor do Contador: 3

Valor do Contador: 2

Valor do Contador: 1

Valor do Contador: 0

b) Incrementando o Contador de 2 em 2

Exemplo:

for ( int i = 0; i <= 10; i += 2 ){

System.out.println("Valor do Contador: " + i);

}

Resultado:

Valor do Contador: 0

Valor do Contador: 2

Valor do Contador: 4

Valor do Contador: 6

Valor do Contador: 8

Valor do Contador: 10

Repetição while

A estrutura while é bem parecida com o for, porém a sua implementação é um pouco diferente. Execute o seguinte Código abaixo e observe o resultado obtido.

Exemplo:

int contador = 0;

while ( contador < 5 ) {

System.out.println(contador);

contador ++;

}

Resultado:

0

1

2

3

4

Lembre-se que no for, declaramos três argumentos diretamente na construção: Criação do Contador, Condição e Incremento.

Exemplo:

for( int i = 0; i < 5; i ++ )

// contador // condição // incremento

No while, também precisamos de três Argumentos, porém, eles são criados e manipulados separadamente.

Exemplo:

int contador = 0; // contador

while(contador < 5) // condição

contador ++; // incremento

Preste muita atenção ao utilizar a estrutura while. Se você esquecer de modificar o Valor do Contador, a fim de quebrar a condição do while, isso fará com que a execução do programa nunca saia do loop. E a isto chamamos de loop infinito.

Existem poucas diferenças entre se utilizar uma estrutura for e while.

A estrutura for sempre vai exigir que o Contador seja uma nova Variável.

Já a estrutura while pode utilizar uma Variável já existente código ou projeto.

O while também nos dá mais flexibilidade para manipular o Contador em situações mais específicas.

Para reforçar o que você acabou de aprender neste capítulo, assista a esta videoaula .