You are on page 1of 76

PROGRAMAO

PARTE 1
PROF: LEONARDO PEREIRA
FACEBOOK: /LEONGAMERTI

INTRODUO TECNOLOGIA
JAVA
Tipos, Variveis, Operadores e Sintaxe Bsica

DECLARANDO E USANDO VARIVEIS

Em Java, toda varivel deve ter um tipo dados


declarado pelo programador.
Isso torna o Java uma linguagem fortemente tipada.
Se compararmos o Java com o PHP, o segundo uma
linguagem fracamente tipada porque no necessrio
declarar o tipo explicitamente. O PHP determina o
tipo da varivel pelo contedo da mesma.
Podemos declarar uma varivel assim:
int idade; ---- guarda um nmero inteiro
double salrio; --- guarda um nmero fracionrio.

Podemos definir o valores de uma varivel assim:


idade = 15;
salrio = 1230.50;

COMENTRIOS

Para que um trecho do seu cdigo no venha ser


considerado pelo Java, usamos comentrios.
Desta forma, o texto comentado fica invisvel
para o Java.
Use o // para comentar at o final da linha.
Use o /* */ para comentar o que estiver entre
eles.
// inicio meio fim --- comentrio de uma nica linha
/* inicio
meio
--- comentrio de N linhas
fim */

IMPRIMINDO NA TELA

O cdigo a seguir declara a varivel idade com


valor 15 e imprime seu valor na sada padro
atravs da chamada a System.out.println().
int idade;
idade = 15;
System.out.println(idade);
Java uma linguagem case sensitive.
Desta forma, ela diferencia letras maisculas e
minsculas.
Assim, militar diferente de Militar.

REGRAS DE NOMES DE VARIVEIS

Os identificadores (nomes) de variveis em Java


devem obedecer as seguintes regras.

Para o primeiro caractere do nome

Pode ser uma letra


Pode ser um $
Pode ser um _ (underscore)

Para o segundo caractere em diante.

Pode ser uma letra


Pode ser um $
Pode ser um _ (underscore)
Pode ser nmeros
cachorro vlido

%indio invlido

$perc vlido

33nmeros - invlido

#ei invlido

nome@ - invlido

_$_ - vlido

$_$ - vlido

USANDO VARIVEIS

Podemos utilizar o valor de uma varivel para


outros propsitos.
O cdigo abaixo gera a idade no ano seguinte:
int idadeAnoQueVem;
int idade = 30;
idadeAnoQueVem = idade + 1;
System.out.printlnI(idadeAnoQueVem);
// Qual ser o valor impresso?

INICIALIZANDO VARIVEIS

No momento que voc declara uma varivel,


tambm possvel inicializ-la.
int idade = 45;
double dinheiro = 146.70;
Na primeira linha temos uma varivel inteira
chamada idade e inicializamos seu valor como
45.
Na segunda linha temos uma varivel de ponto
flutuante chamada dinheiro e inicializamos seu
valor como 146.70.
Criar uma varivel e no mesmo instante passar
um contedo para ela chamado de inicializao
de varivel.

OPERADORES MATEMTICOS

Voc pode usar os operadores + (adio), (subtrao), / (diviso) e * (multiplicao) para


operar com nmeros.
Alm desses, existe o operador % (mdulo) que
retorna o resto de uma diviso inteira.
Por exemplo:

4 % 3 retorna 1 porque o resto da diviso de 4 por 3


1.
17% 5 retorna 2 porque o resto da diviso retorna 2.

ALGUNS EXEMPLOS

int n1 = 2 + 2;
int n2 = 5 2;
int n3 = 4 * 2;
int n4 = 64 / 4;
int n5 = 5 % 2;
/* 5 dividido por 2 d 2 e tem resto 1;
Logo, em n5 obtemos o valor 1. */

SIMPLIFICANDO OPERADORES

possvel tambm reduzir o tamanho de


operaes matemticas com o uso dos
operadores +=, -=, *=, /= e %=.
Para realizar a soma entre duas variveis,
a e b, e guardar o resultado em a, podemos
fazer:
a = a + b;

Usando o operador += teramos o seguinte:


a +=b;

As duas declaraes so equivalentes.

EXECUTANDO CDIGO EM JAVA

Para executar cdigos em Java, devemos


colocar os comandos dentro de um bloco
chamado main.
A sintaxe correta para declarao do bloco
main public static void main (String [] args).
public static void main (String [] args) {
int idade = 15;
System.out.println(idade);
int idadeNoAnoQueVem = idade + 1;
idadeNoAnoQueVem = idade + 1;
System.out.println(idadeNoAnoQueVem);
}

8 TIPOS PRIMITIVOS DE DADOS

Os 8 tipos primitivos da linguagem so:

boolean
byte
char
short
int
long
float
double

TIPOS PRIMITIVOS E VALORES

Esses tipos de variveis so tipos primitivos.


O valor que elas guardam so o real contedo da
varivel e no dependem de mais ningum, por
isso so chamados de tipos primitivos.
Utilizando o operador de atribuio = o valor
mais a direita ser copiado para a posio de
memria que corresponde a varivel declarada
que est mais a direita.
Por exemplo:

int valor = 45;


// a posio de memria representada pela varivel
valor ter como contedo o nmero 45.

TIPO BOOLEAN

O tipo boolean armazena apenas um valor, sendo


ele verdadeiro ou falso.
Utiliza um bit para armazenar o valor.
boolean verdade = true;
boolean condio = false;

Lembre-se que true e false tambm so


conhecidos como valores lgicos.

TIPO CHAR

Este tipo guarda um, e apenas um, caractere que


deve estar entre aspas simples.
Utiliza 16 bits para representar as letras no padrao
de codificao Unicode.
Espao em branco caractere.
char espao = ;
// isso vlido.

J o vazio no caractere.
char vazio = ;
// cuidado!!! Vazio considerado uma String.

Declaramos um char assim:


char letra = a;

Vale ressaltar que o Java permite que um tipo char


armazene nmeros entre 0 e 65535.

TIPO BYTE

O tipo byte um tipo inteiro que armazena


dados em 8 bits e sinalizado.
Sendo assim um bit do sinal e os 7 restantes
para o nmero.
O nmero 0 considerado um nmero positivo.

TIPO SHORT

O tipo short outro tipo inteiro.


Armazena dados em 16 bits e sinalizado.
Sendo assim um bit do sinal e os 15 restantes
para o nmero.
O nmero 0 considerado um nmero positivo.

TIPO INT

O tipo int outro tipo inteiro.


Armazena dados em 32 bits e sinalizado.
Todo nmero inteiro, o Java trata por padro
como tipo de dados int.
Sendo assim um bit do sinal e os 31 restantes
para o nmero.
O nmero 0 considerado um nmero positivo.

TIPO LONG

O tipo int outro tipo inteiro.


Armazena dados em 64 bits e sinalizado.
Sendo assim um bit do sinal e os 63 restantes
para o nmero.
O nmero 0 considerado um nmero positivo.
Para representar um nmero como tipo de dados
long, necessrio colocar um L ou l no final
do nmero.
Por exemplo:

long num = 345L;

TIPOS DE DADOS INTEIROS DO JAVA

TIPO DOUBLE

Armazena um nmero com ponto flutuante, ou seja,


um nmero com virgula.
Tem o nome de ponto flutuante, porque a virgula
pode flutuar pelo nmero.
Armazena dados em 64 bits.
chamado de tipo de preciso dupla.
Todo nmero fracionrio em Java considerado por
padro um tipo double.
No Java, no usamos a virgula para separar a parte
inteira da parte fracionria. Usamos o ponto (.)
Veja os exemplos:
double pi = 3.14;
double x = 5 * 10.5;

TIPO FLOAT

outro tipo de dado que pode armazenar um


nmero com ponto flutuante.
conhecido como tipo de preciso simples
Armazena dados em 32 bits.
A diferena de FLOAT para DOUBLE que a
preciso de DOUBLE muito maior.
Desta forma, no possvel atribuir diretamente
um tipo DOUBLE a um tipo FLOAT.
necessrio colocar um F ou f aps o nmero
para indicar que este deve ser tratado como um
float.
Por exemplo:

float f = 3.0; // erro! porque 3.0 tratado como double.

TIPOS DE DADOS DE PONTO FLUTUANTE DO


JAVA

TIPO STRING

O tipo String no um tipo primitivo no Java !


Ele na verdade uma classe que usamos para
guardar uma cadeia de caracteres qualquer em
uma varivel.
Uma cadeia de caracteres e formada por letras,
nmeros e sinais de pontuao.
Usamos aspas duplas para representar uma
String e usamos aspas simples para representar
um char.
Por exemplo:

String letra = a; --- errado! Deve-se usar aspas


simples
String letra = a --- correto!

SOBRECARGA DO OPERADOR +

O operador + possui mais de uma funo.


Alm de realizar a soma de valores, ele
pode realizar tambm a concatenao
entre cadeias de caracteres.
A operao de concatenao a juno de
duas ou mais palavras.

Veja o cdigo abaixo:


String nome = Leonardo;
String snome = Pereira;
System.out.println(nome+snome);
// Qual ser o resultado?

SOBRECARGA DO OPERADOR +

Qual a sada dos exemplos abaixo?


int numero = 1;
String numero2 = 2;
int valor = 3;

System.out.println(numero+numero2); ________
System.out.println(numero+valor); ________
System.out.println(valor+numero3); ________

SOBRECARGA DO OPERADOR +

Quando ocorre a concatenao de um tipo String


com qualquer outro tipo como int ou double, o
Java simplesmente realiza a juno do contedo
das duas ou mais variveis em questo.
Por exemplo:

System.out.println(1+1) --- sada igual a 11 tipo


String.
System.out.println( 1+1 ) --- sada igual a 2 tipo int.

CASTING E PROMOO

Alguns valores so incompatveis se voc tentar


fazer uma atribuio direta devido a preciso dos
tipos envolvidos.
Por exemplo:
double d = 3.1415;
int i = d; // no funciona. um double representado
com 64 bits enquanto que o int usa apenas 32 bits.

O mesmo ocorre no seguinte trecho:


int i = 3.14; // 3.14 tratado como double.

Nem mesmo o seguinte cdigo funciona:


double d = 5; // ok
int i = d; // no funciona, mesmo d valendo 5, devido
a preciso de uma varivel do tipo double.

CASTING E PROMOO

Apesar de 5 ser um bom valor para um inteiro, o


Java no tem como saber qual valor esta dentro
da varivel double no momento da execuo.
J no caso a seguir, o contrrio:
int i = 5;
double d2 = i;

O cdigo acima funciona, j que um double pode


guardar um nmero com ou sem ponto flutuante.
Nmeros inteiros podem ser guardados em
variveis float ou double.

CASTING E PROMOO

s vezes, precisamos que um nmero com uma


preciso maior seja tratado para ser armazenado
em um nmero com preciso menor.
Para fazer isso, sem que o Java reclame,
preciso informar que o nmero ser modelado.
Esse processo se chama casting.
double d3 = 3.14;
int i = (int) d3;

CASTING E PROMOO

O casting foi usado para modelar o contedo da


varivel d3 como um int. O valor de i agora 3.
O mesmo ocorre entre valores int e long.
long x = 100;
int i = x;
// no funciona, pois pode perder informao.

Se quisermos fazer isso, usamos o casting:


long x = 10000;
int i = (int) x;

CASTING E PROMOO

Abaixo temos outro exemplo do uso de casting.


float x = 0.0; // no funciona porque 0.0 tratado
como double.
Para fazer isso funcionar devemos usar o casting.
float x = (float) 0.0;

CASTING E PROMOO

Pode ser necessrio usar o casting, quando estamos


realizando operaes com tipo de dados diferentes.
Por exemplo:
double d = 5;
float f = 3f;
float x = f + (float) d;
// o casting de d necessrio porque a soma ser
armazenada em uma varivel do tipo float.
long n1 = 45l;
int n2 = 5;
int res = (int) n1 + n2;
// o casting de n1 necessrio porque a soma ser
armazenada em uma varivel do tipo int.

CASTING E PROMOO

O casting necessrio porque o Java faz as


contas e vai armazenando o resultado sempre no
maior tipo que apareceu durante as operaes.
Dizemos que o casting uma operao explicita.
A promoo a troca do tipo de uma varivel
para outro de maior preciso de forma implcita,
ou seja, automtica.
Outro nome dado a promoo coero.
int a = 4;
double b = 9.5
double c = a + b;

A varivel a promovida implicitamente a um


double temporariamente para que a operao
venha ser realizada.

CASTING POSSVEIS

possvel fazer casting at com variveis


do tipo char.
O nico tipo primitivo que no pode
participar de casting o boolean.
Ao usar a simplificao de operadores, o
casting implcito.
int x = 3;
long y = 4;
x = x + y; // no funciona. Erro de preciso.
x +=y; // funciona. Casting implcito.

QUESTO 1
Qual das operaes abaixo funciona sem
problemas:
a) int a = 2+3.0;
b) int b = (int) 3.0 + 4F;
c) float c = 3.4 - 0.4;
d) float d = (double) 4.6 / 4;
e) int e = 1231 + (int) 20.54;

QUESTO 2
Qual dos tipos abaixo no considerado um tipo
primitivo?
a) int
b) double
c) boolean
d) String
e) char

QUESTO 3

QUESTO 4

QUESTO 5

QUESTO 6

QUESTO 7

QUESTO 8

QUESTO 9

QUESTO 10

GABARITO
Questo

Letra

BeE

10

ESTRUTURAS DA LINGUAGEM
Seqncia, Seleo, Repetio

IF - ELSE

Uma condio booleana qualquer


expresso ou varivel que retorne como
resultado true ou false.
Voc pode usar os operadores < (menor), >
(maior), <= (menor ou igual), >= (maior ou
igual), == (igual), != (diferente) e !
(negao)
O IF ir executar um trecho de cdigo se
uma determina expresso ou condio
booleana fora avaliada como true.
IF (condicaoBooleana == true) {
cdigo;
}

IF - ELSE

Um exemplo:
int idade = 15;
IF (idade < 18) {
System.out.println("No pode entrar");
}

O que colocado dentro do IF deve retornar


verdadeiro ou falso.
possvel inserir diretamente dentro do IF uma
varivel do tipo boolean.
boolean t = true;
IF(t)
System.out.println(Funciona);

Os {} no so necessrios se o bloco de cdigo


interno do IF for composto por apenas 1 linha.

IF - ELSE

Voc pode usar a clusula ELSE para


indicar o comportamento que deve ser
executado no caso da expresso booleana
ser avaliada como falsa:
int idade = 15;
IF (idade < 18) {
System.out.println("No pode entrar");
}
ELSE {
System.out.println("Pode entrar");
}

IF - ELSE

Voc pode unir expresses booleanas


atravs de operadores lgicos.
O E representado pelo &.
O OU representado pelo |.

int idade = 20;


boolean amigo = true;
IF (idade > 18 & amigo == true)
System.out.println(Pode entrar");
ELSE
System.out.println(No pode entrar");

IF - ELSE

Esse cdigo pode ser modificado,


usando o operador de negao (!) .
Ele transforma uma expresso
booleana de false para true e vice
versa.
int idade = 20;
boolean amigo = false;
IF(idade > 18 & !amigo)
System.out.println(Pode entrar");
ELSE
System.out.println(No pode entrar");

IF - ELSE

Para comparar a igualdade de valores


entre duas variveis usamos o operador
(==).
int mes = 1;
IF (mes == 1)
System.out.println(Tire frias");

O operado (!=) usado para verificar a


diferena entre valores.
No confunda o operar de atribuio = com
o operador de igualdade ==.

&& E ||

&& e || funcionam como & e |, porm so


mais rpidos.
Quando percebem que a resposta final no
poder mudar mais, eles param de
verificar as outras condies booleanas.
So chamados de operadores de curto
circuito.
IF (true | algo)

algo ser analisado sem precisar, pois j


temos um true.
IF (true || algo)

algo no ser analisado porque temos um


dos operandos valendo true.

WHILE

um comando usado para fazer um lao


(loop), isto , repetir um trecho de cdigo
algumas vezes.
Esse trecho repetido enquanto uma dada
condio permanecer verdadeira.
int idade = 15;
WHILE(idade < 18) {
System.out.println(idade);
idade = idade + 1;
}

Qual ser o valor final da varivel idade?

WHILE

No exemplo abaixo, WHILE imprime de 0


at 4.
int i = 0;
WHILE(i < 5) {
System.out.println(i);
i = i + 1;
}

DO - WHILE

outro comando usado para fazer um loop.


Existe uma pequena diferena entre o DOWHILE e o WHILE.
O DO-WHILE garante pelo menos uma vez a
execuo de um bloco de cdigo.
int idade = 20;
DO{
System.out.println(idade);
idade = idade + 1;
}
WHILE(idade < 18);

O que ser impresso?

DO - WHILE

Mesmo a condio do WHILE sendo falsa, o


trecho de cdigo do DO executado uma vez.
Isso ocorre porque o teste da condio
realizado aps o bloco de comandos.
J no comando WHILE, a condio testada
antes do bloco de cdigo.
Desta forma, o WHILE executa 0 ou N vezes.
J o DO-WHILE execute 1 ou N vezes.

FOR

Outro comando de loop o FOR.


A idia a mesma do WHILE: fazer um
trecho de cdigo ser repetido enquanto
uma condio continuar verdadeira.
Alm disso, ele isola um espao para
inicializao de variveis e o
modificador das mesmas.
Isso faz com que variveis que so
relacionadas ao loop fiquem mais
legveis.

FOR

A sintaxe para trabalhar com for


esta:
FOR (inicializao; condio; incremento) {
cdigo;}

Segue um exemplo:

FOR (int i = 0; i < 10; i = i + 1) {


System.out.println("ol!");
}

Esse for poderia ser trocado por:


int i = 0;
WHILE(i < 10) {
System.out.println("ol!");
}

PR E PS INCREMENTO

O operador ++ depois de uma varivel, retorna


o valor atual da varivel e depois incrementa.
O operador ++ antes de uma varivel,
incrementa o valor atual da varivel e depois
retorna o valor.
int i = 5;
System.out.println(++i); //Ser impresso 6!
int i = 5;
System.out.println(i++); //Ser impresso 5!

Existem tambm os operadores de pr e ps


decremento, --i e i--.

PR E PS INCREMENTO

1.
2.

1.
2.

Nunca esquea isso !!!


Se for pr incremento como em ++a;
Primeiro faa a incremento.
Use o novo valor.
Aqui, o valor usado o valor com incremento!!!
Se for ps incremento como em a++;
Primeiro use o valor antigo.
Faa o incremento para o novo valor.
Aqui, o valor usado o valor sem incremento!!!

CONTROLANDO LOOPS

Podemos interromper um loop sem que o


resto do lao seja executado.
int x=1, y=10;
FOR(int i = x; i < y; i++) {
IF(i % 2 == 0) {
System.out.println("Achei um divisvel por 2);
break;
}
}

O cdigo percorre os nmeros de x a y e


interrompe quando encontra um divisvel
por 2, devido ao BREAK.

CONTROLANDO LOOPS

possvel obrigar o loop a executar o


prximo passo do lao, ignorando as outras
instrues do bloco de comando.
Para isso usamos o CONTINUE.
FOR(int i = 0; i < 10; i++) {
IF(i > 3 && i < 6) {
continue;
}
System.out.println(i);
}

O cdigo acima no imprime os valores 4 e


5 devido a presena do CONTINNUE
dentro do IF.

ESCOPO DAS VARIVEIS

No Java, podemos declarar variveis a


qualquer momento.
Dependendo de onde voc as declarou, elas vo
valer apenas em alguma parte do cdigo.
O escopo da varivel o nome dado ao trecho
de cdigo em que aquela varivel existe e que
possvel acess-la.
Quando abrimos um novo bloco com as chaves,
as variveis declaradas ali dentro s valem at
o fim daquele bloco.

ESCOPO DE VARIAVIS
int a = 100;
IF(a>50)
int b = 5;
ELSE
int c = 10;
System.out.println(a); ok!!
System.out.println(b); erro!!
System.out.println(c); erro!!

As variveis A e B saram de seus respectivos escopos.


A chamada de varivel global porque pode ser usada
em qualquer parte do programa.
Uma varivel global declarada e passar a ocupar seu
espao em memria principal no momento que o
programa iniciado e persiste at que ele termine.
B e C so chamadas de variveis locais porque s existem
dentro do bloco em que elas foram declaradas.

QUESTO 1

QUESTO 2

QUESTO 3

QUESTO 4

QUESTO 5

QUESTO 6

QUESTO 7

QUESTO 8

GABARITO
Questo

Letra

You might also like