SlideShare une entreprise Scribd logo
1  sur  102
Instrutor Daniel Bernardo
Programação Orientada
a Objetos com Java
Instrutor Daniel Bernardo
Apresentação
• A quem se destina o curso
– Estudantes na área de Informática
– Programadores de outras linguagens
– Pesquisadores
– Empresas que deseja adotar o Java como plataforma de trabalho
• Pré requisito
– Lógica de Programação
Instrutor Daniel Bernardo
Apresentação
Como o curso está dividido?
●Aula 01
⁻ Iniciação à Orientação a Objetos com Java
●Aula 02
⁻ Aprofundar conhecimentos de Orientação a Objetos
●Aula 03 e Aula 04
⁻ Aprofundar conhecimentos na Linguagem Java
●Aula 05
⁻ API: java.io e Collections Framework
●Aula 06
⁻ Conhecimentos extras: Swing, JDBC e outras Classes
Instrutor Daniel Bernardo
Apresentação
●Aula 01: Iniciação à Orientação a Objetos com Java
⁻ O que é Java e sua História
⁻ Java Virtual Machine e os Bytecodes
⁻ Montar o ambiente de desenvolvimento
⁻ IDE Eclipse
⁻ Conceitos básicos de uma Classe
⁻ Comandos básicos
⁻ Manipular tipos primitivos
⁻ Controle de fluxo com “if” e operadores
⁻ Estrutura de repetiçao while, do While, for
Instrutor Daniel Bernardo
O que é java – Uma Linguagem?
• Não é apenas uma linguagem de programação. Pode ser dividido em três
partes:
– Linguagem de programação
– Ambiente de desenvolvimento
– API (Application Programing Interface)
Instrutor Daniel Bernardo
O que é java –Linguagem
• Como linguagem de programação, Java pode ser utilizado para criar todos
os tipos de aplicações existentes, de programas de Inteligência Artificial
para Robôs até programas para aparelhos celulares.
• composta por um conjunto de palavras e simbolos utilizados pelos
desenvolvedores para escrever programas.
• Formada por conjunto de palavras reservadas utilizadas para escrever
expressões, instruções, estruturas de decisão, estrutura de controle,
métodos, classes e outros
Instrutor Daniel Bernardo
O que é java – Ambiente de Desenvolvimento
• Conjunto de ferramentas utilizadas para construção de aplicativos:
– Javac: compilador
– Java: interpretador
– Javadoc: documentação
• E muitas outras que compõem a JDK que nos auxilia no desenvolvimento
de aplicativos.
• IDE Integrated Development Enviroment - Ambiente de desenvolvimento
integrado
– Facilitam o processo de desenvolvimento de software
– Eclipse, Netbeans, IntelliJ
Instrutor Daniel Bernardo
O que é java – API
• (Application Programming Interface) Interface de programas
aplicativos
• Conjunto de classes, métodos, atributos que auxiliam o
desenvolvedor na construção de programas
• Não confundir com interfaces gráficas de usuario (GUI)
Instrutor Daniel Bernardo
O que é Java - O termo java
• Deve ser interpretado como uma referência à sua concepção mais ampla:
uma TECNOLOGIA INCORPORADA voltada para o desenvolvimento de
software composta por um ambiente, uma linguagem e uma API.
Instrutor Daniel Bernardo
História
• Java foi criado em 1991 por James Gosling da Sun Microsystems.
Inicialmente chamada OAK (Carvalho), em homenagem à uma árvore de
janela do Gosling, seu nome foi mudado para Java devido a existência de
uma linguagem com o nome OAK
• A motivação original do Java era a necessidade de uma linguagem
independente de plataforma que podia ser utilizada em pequenos
dispositivos, facilitando a reescrita de software para aparelhos eletrônicos,
como vídeo cassete, televisão e aparelhos de tv a cabo.
• Com o advento da web, a Sun percebeu que poderia utilizar a idéia
criada em 1992 para poder rodar pequenas aplicações dentro do browser.
A semelhança era que na internet havia uma grande quantidade de
sistemas operacionais e browser, e com isso seria grande vantagem poder
programar numa única linguagem, independente da plataforma. Foi aí que
o Java 1.0 foi lançado: focado em deixar o browser não apenas um cliente
burro, fazendo com que ele possa também realizar operações, não apenas
renderizar html.
Instrutor Daniel Bernardo
História
• Em Resumo:
– Java nasceu com uma idéia para atender pequenos dispositivos;
– Foi lançado para rodar na internet do lado cliente
– Em 1995 foi reformulado e oficialmente lançado em 20/05
– Emplacou mesmo no desenvolvimento de aplicações do lado servidor
Instrutor Daniel Bernardo
História
Instrutor Daniel Bernardo
Onde usar e objetivo
• No começo tem-se a impressão que o Java tem baixa produtividade. Que
outras linguagens que se está acostumado é mais simples de criar
pequenos sistemas.
• Isso porque o foco do Java não é criação de sistemas pequenos onde se
trabalha um ou dois desenvolvedores.
• O foco da plataforma é: aplicações de médio a grande porte, com um
grande time de desenvolvimento que mudam e crescem.
• Criar a primeira versão de um aplicativo é mais penosa que usar uma
linguagem de script ou de alta produtividade.
• Porém, Java é uma linguagem OO e madura, o que torna a manutenção do
sistema mais fácil e rápida. Isso usando as boas práticas de programação
de Design Patterns.
Instrutor Daniel Bernardo
Onde usar e objetivo
• quantidade enorme de bibliotecas gratuitas, para realizar os mais diversos
trabalhos tais como:
– Relatórios, gráficos, sistemas de busca, geração de código de barra,
manipulação de XML, tocadores de vídeo, manipuladores de texto,
persistência transparente, impressão, etc)
• você pode criar uma aplicação sofisticada, usando diversos recursos, sem
precisar comprar um componente específico, que costuma ser caro de
acordo com sua especialização.
• O uso do java é interessante em aplicações que virão a crescer, em que a
legibilidade do código é importante, onde temos muita conectividade e se
temos plataformas (ambientes e sistemas operacionais) heterogêneos
(linux, unix, OSX e windows misturados).
Instrutor Daniel Bernardo
Instalando Java
• JSE – Java Standard Edition
– Edição utilizada durante o curso
– Com ela é possível
• Acessar banco de dados
•Controle de múltiplas linhas de execução
•Desenvolvimentos de aplicações distribuídas
•Interface Gráfica
•Rede
•Outras
Instrutor Daniel Bernardo
Arquitetura
Instrutor Daniel Bernardo
Instalando Java
• JEE – Java Enterprise Edition
– É a tecnologia mais adequada para o desenvolvimento de aplicações
complexas para rodar na Internet.
– Suporte a WebServices
– Aplicações de negócios seguras e Robustas
Instrutor Daniel Bernardo
Instalando Java
• JME – Java Micro Edition
– Ambiente de execução altamente aperfeiçoado para ser executado em
equipamentos eletrônicos de consumo.
– Destinado à programação de pequenos dispositivos.
Instrutor Daniel Bernardo
JVM, JRE e JDK
• Java Virtual Machine – É um mecanismo que permite executar código em
Java em qualquer plataforma. A JVM pode ser entendida como "uma
máquina virtual implementada via software ou hardware que executa
instruções vindas de bytecodes". Graças a ela o Java é Multi-Plataforma.
• Java Runtime Environment –É o ambiente de execução Java, formado pela
JVM e bibliotecas que permitirão a execução de aplicativos desenvolvidos
com a tecnologia Java em sua máquina.
• Java Development Kit –É um kit de desenvolvimento Java fornecido
livremente pela Sun. Constitui um conjunto de programas que engloba
compilador, interpretador e utilitários, fornecendo um pacote de ferramentas
básicas para o desenvolvimento de aplicações Java.
Instrutor Daniel Bernardo
O que é java - Máquina Virtual
• Em uma linguagem de programação como C e Pascal, o código fonte é
compilado para uma plataforma e sistema operacional específicos.
• Muitas vezes, o próprio código fonte é desenvolvido visando uma única
plataforma!
• Esse código executável (binário) resultante será executado pelo sistema
operacional e, por esse motivo, ele deve saber conversar com o sistema
operacional em questão
Código Fonte C
Código Binário para
determinado SO
Compila
Instrutor Daniel Bernardo
O que é java - Máquina Virtual
• Nesse cenário é necessário
compilar o programa uma vez
para cada sistema operacional
• Na maioria das vezes, a sua
aplicação se utiliza das bibliotecas
do sistema operacional, como, por
exemplo, a de interface gráfica
para desenhar as 'telinhas'.
• A biblioteca de interface gráfica do
Windows é bem diferente das do
Linux. Desta maneira você precisa
reescrever o mesmo pedaço da
aplicação para diferentes
sistemas operacionais.
Instrutor Daniel Bernardo
O que é java - Máquina Virtual
• Já o Java utiliza-se do conceito de máquina virtual, onde existe uma camada extra entre o
sistema operacional e a aplicação, responsável por “traduzir” o que sua aplicação deseja fazer
para as respectivas chamadas do sistema operacional no qual ela está rodando no momento:
Bytecode Java
Windows
Linux
Máquina Virtual Win
Máquina Virtual
Linux
Instrutor Daniel Bernardo
O que é java - Máquina Virtual
• Dessa forma, a maneira a qual você abre uma janela no Linux ou no
Windows é a mesma.
• Você ganha independência de sistema operacional. Ou, melhor ainda,
independência de plataforma em geral.
• Uma máquina virtual é como um computador de mentira: ela tem tudo que
um computador tem.
• Ela é responsável por gerenciar memória, gerenciar threads, a pilha de
execução, etc.
• Sua aplicação roda sem nenhum envolvimento com o sistema operacional!
Instrutor Daniel Bernardo
Instrutor Daniel Bernardo
Compilando o primeiro programa
1. class MeuPrograma {
2.
3. public static void main(String[] args) {
4.
5. System.out.println(“Alô Mundo Java!");
6.
7. }
8. }
• O arquivo .class gerado contém o ByteCode do sistema que
é o que a JVM irá interpretar.
Instrutor Daniel Bernardo
O que é java - ByteCode
• Bytecode é o termo dado ao código binário gerado pelo compilador Java.
• O compilador Java gera esse bytecode que, diferente das linguagens sem
máquina virtual, vai servir para diferentes sistemas operacionais, já que ele
vai ser “traduzido” pela máquina virtual.
• Por isso diz-se que Java é uma Linguagem compilada e interpretada.
– javap -c NomeDaClasse
Instrutor Daniel Bernardo
Facilidades programação
• Quais são os seus maiores problemas quando está programando?
– ponteiros?
– liberar memória?
– organização?
– falta de bibliotecas boas?
– ter de reescrever parte do código ao mudar de sistema operacional?
– custo de usar a tecnologia?
• Seus Problemas acabaram!!!
Instrutor Daniel Bernardo
Garbage Collector
• O Garbage Collector (coletor de lixo, lixeiro) é uma Thread responsável
por jogar fora todos os objetos que não estão sendo referenciados por
nenhuma outra Thread, seja direta ou indiretamente!
• Como o Garbage Collector é uma Thread, você não tem garantia de
quando ele vai rodar. Você só sabe que algum dia aquela memória vai ser
liberada.
• System.gc() – Invocando o método estático da classe System você estará
sugerindo a JVM rodar o Garbage Collector, mas ela irá executar quando
bem entender.
Instrutor Daniel Bernardo
O java é lento?
• Hotspot é a tecnologia que a JVM utiliza para detectar pontos quentes da
sua aplicação:
– código que é executado muito.
• Quando a JVM julgar necessária, ela vai compilar aquele código para
instruções nativas da plataforma, tendo em vista que isso vai
provavelmente melhorar a performance da sua aplicação.
• Compilador é o JIT: Just inTime Compiler.
• A JVM, por estar compilando dinamicamente durante a execução, pode
perceber que um determinado código não está com performance
adequada, e otimizar mais um pouco aquele trecho, ou ainda mudar a
estratégia de otimização
• Mantenha a JVM sempre atualizada.
Instrutor Daniel Bernardo
Exercício
1. Altere seu programa para imprimir uma mensagem diferente.
2. Altere seu programa para imprimir duas linhas de texto usando duas linhas
de código System.out.
3. Sabendo que os caracteres “n” representam uma quebra de linhas,
imprima duas linhas de texto usando uma única linha de código
System.out.
Instrutor Daniel Bernardo
O que é IDE?
• IDE – Integrated Development Environment (Ambiente de Desenvolvimento
Integrado)
– Consiste em um software que contém um conjunto de funcionalidades
embutidas, cuja finalidade é prover um modo mais fácil e interativo de
construir e manipular seus programas.
• Entre estas ferramentas geralmente figuram:
– Um editor de texto com facilidades especialmente desenhadas para a
linguagem;
– Um compilador (e um interpretador, no caso de Java e outras
linguagens interpretadas);
– Um editor gráfico, com facilidades para criação e edição da interface
gráfica do programa a ser desenvolvido;
Instrutor Daniel Bernardo
IDEs
• Eclipse
– http://eclipse.org
• NetBeans
– http://netbeans.org
Instrutor Daniel Bernardo
Declaração de classe
• O desenvolvimento de um aplicativo Java se resume à criação de
fragmentos de código que se comunicam entre si, chamados classes e
interfaces.
• Toda classe precisa de uma identificação, que é representada pelo seu
nome, que é o ultimo termo da declaração.
• Se a classe é pública, seu nome deve ser igual ao nome do arquivo .java.
Instrutor Daniel Bernardo
Método main
• O método main é usado para indicar ao compilador que esse é um
aplicativo que deverá ser executado.
• Cada projeto (Desktop) Java deve ter um método principal; ou seja apenas
um main.
• O método main é o primeiro método que a Máquina Virtual Java (JVM)
executa, então o método main executa as chamadas a outros métodos.
• Deve ser void public e static
• Deve receber por parametro um String[ ]
Instrutor Daniel Bernardo
Declaração Import
• A declaração import de Java Corresponde à declaração include de C/C++
ou à cláusula uses do Pascal.
• Sua Finalidade é importar bibliotecas de classe e interfaces já
existentes que serão necessárias.
• Na importação de uma classe digita-se seu caminho completo (pacote).
Instrutor Daniel Bernardo
Instruções e Blocos
• Uma instrução é composta de uma ou mais linhas terminadas por ponto-e-
vírgula. Um exemplo de uma simples instrução pode ser:
– System.out.println("Hello world");
• Um bloco é formado por uma ou mais instruções agrupadas entre chaves
indicando que formam uma só unidade. Blocos podem ser organizados em
estruturas aninhadas indefinidamente. Qualquer quantidade de espaços em
branco é permitida. Um exemplo de bloco pode ser:
public static void main(String[] args) {
System.out.print("Hello ");
System.out.println("world");
}
Instrutor Daniel Bernardo
Identificadores
• Identificadores são representações de nomes de variáveis, métodos,
classes, etc. Exemplos de identificadores podem ser: Hello, main, System,
out.
• O compilador Java difere as letras maiúsculas de minúsculas (case-
sensitive). Isto significa que o identificador Hello não é o mesmo que hello.
Os identificadores em Java devem começar com uma letra, um underscore
“_”, ou um sinal de cifrão “$”. As letras podem estar tanto em maiúsculo
quanto em minúsculo. Os caracteres subseqüentes podem usar números
de 0 a 9.
• Os identificadores não podem ter nomes iguais às palavras-chave ou
palavras reservadas do Java, como: class, public, void, int, etc
Instrutor Daniel Bernardo
Identificadores
• Para nomes de classes, a primeira letra deve ser maiúscula. Nomes de
métodos ou variáveis devem começar com letra minúscula. Por exemplo:
– ExemploDeNomeDeUmaClasse
– exemploDeNomeDeUmMetodo
• No caso de identificadores com mais de uma palavra, a primeira letra de
cada palavra, com exceção da primeira, deve vir em maiúsculo. Por
exemplo:
– charArray – fileNumber – className
• Evite o uso de undescores no início de um identificador. Por exemplo:
– _NomeDeClasse.
Instrutor Daniel Bernardo
Palavras-chave
• Palavras-chave são identificadores que, em Java, foram pré-definidas para
propósitos específicos. Não se pode usar esses identificadores como
nomes de variáveis, métodos, classes, etc. A seguir, temos a lista com as
palavras-chave em Java.
Instrutor Daniel Bernardo
Palavras-chave
• true, false e null não são palavras-chave, porém, são palavras-reservadas,
e, da mesma maneira, não é permitido seu uso na atribuição a nomes de
variáveis, métodos ou classes.
Instrutor Daniel Bernardo
Tipos de dados primitivos
• A linguagem Java possui 8 tipos de dados primitivos
Instrutor Daniel Bernardo
Tipos de dados primitivos
• Lógico
– O tipo boolean pode representar dois estados: true (verdadeiro) ou
false (falso). Um exemplo é:
• boolean verdadeiro = true;
• Boolean falso = false;
– Diferente de outras linguagens, tipo booleano em Java não
permite atribuição de 0 e 1.
Instrutor Daniel Bernardo
Tipos de dados primitivos
• Inteiro
– O dado do tipo char é um inteiro especial, sendo exclusivamente
positivo e representa um único Unicode. Ele deve ser,
obrigatoriamente, colocado entre aspas simples ('').
– char c = 97; // representa o símbolo 'a'
– byte b = 'a'; // em inteiro representa o número 97
– É possível definir para qualquer inteiro nas formas mostradas. O que
difere o tipo char dos demais inteiros é que a sua saída sempre será
mostrada como um valor ASCII. Enquanto que os inteiros serão sempre
mostrados por números decimais
– char c = 97;
– byte b = 'a';
– System.out.println("char = " + c + " - byte = " + b);
– Resultará:
– char = a - byte = 97
Instrutor Daniel Bernardo
Tipos de dados primitivos
• Um cuidado deve ser tomado quanto aos inteiros: qualquer operação
efetuada entre eles terá sempre como resultado um tipo int. Por exemplo:
– byte b1 = 1;
– byte b2 = 2;
– byte resultado = b1 + b2;
• Esta instrução final causará um erro de compilação, devendo ser
modificada para:
– int resultado = b1 + b2;
Instrutor Daniel Bernardo
Tipos de dados primitivos
Os inteiros têm por padrão o valor representado pelo tipo primitivo int. Pode-se
representá-los como long adicionando, ao final do número, um "l" ou "L". Os
tipos de dados inteiros assumem valores nas seguintes faixas:
long numeroLongo = 324L;
Instrutor Daniel Bernardo
Tipos de dados primitivos
9.223.372.036.854.775.807-9.223.372.036.854.775. 8088 byteslong
2.147.483.647-2.147.483.6484 bytesint
32.768-32.7682 bytesshort
127-1281 bytebyte
MáximoMínimoTamanhoTipo
Instrutor Daniel Bernardo
Tipos de dados primitivos
• Números de ponto flutuante
– O tipo float é pouco usado devido sua limitação de possuir uma baixa
precisão.
Tipo Tamanho Mínimo Máximo Precisão
Float 4 bytes -3.4028E+38 3.4028E+38 6,7 dígitos
Double 8 bytes -1.7976E+308 1.7976E+308 15 dígitos
Instrutor Daniel Bernardo
Variaveis primitivas
• Declarando e usando variáveis
– Dentro de um bloco, podemos declarar variáveis e usá-las.
– Em Java, toda variável tem um tipo que não pode ser mudado
uma vez que declarado:
•tipoDaVaríavel nomeDaVariável;
• Por exemplo, é possível ter uma idade que vale um número inteiro:
– int idade;
• Com isso, você declara a variável idade, que passa a existir a partir deste
momento. Ela é do tipo int, que guarda um número inteiro. A partir de agora
você pode usá-la, primeiro atribuindo valores.
• A linha a seguir é a tradução de “idade deve valer agora quinze“.
• idade = 15;
• Além de atribuir, você pode utilizar esse valor
– System.out.println(idade);
Instrutor Daniel Bernardo
Variáveis primitivas
• Você pode usar os operadores +, -, / e * para operar com números, sendo
eles responsáveis pela adição, subtração, divisão e multiplicação,
respectivamente. Além desses operadores básicos, há o operador %
(módulo) que nada mais mais é que o resto de uma divisão inteira.
• int quatro = 2 + 2;
• int tres = 5 – 2;
• int oito = 4 * 2;
• int dezesseis = 64 / 4;
• int um = 5 % 2; // 5 dividido por 2 dá 2 e tem resto 1;
// o operador % pega o resto da divisão inteira
Instrutor Daniel Bernardo
Variáveis primitivas
• Double
– Outro tipo de variável muito utilizado é o double, que armazena um
número com ponto flutuante.
• double d = 3.14;
• double x = 5 * 10;
• boolean verdade = true;
– boolean verdade = true; // Não aceita 0 e 1
• Char
– O tipo char guarda um e apenas um caractere. Esse caractere deve
estar entre aspas simples.
• char letra = 'a';
Instrutor Daniel Bernardo
Exercícios
1. Criar um projeto Java chamado JavaBasico.
2. Criar uma classe Java com método main chamada AulaUm.
3. Dentro do método main, escrever o seguinte código:
1. String nome = "<Seu nome>";
2. int idade = "<Sua idade>";
3. System.out.println("Meu nome é " + nome + "e tenho " + idade + " anos");
Instrutor Daniel Bernardo
Referência de Variáveis e Valor das Variáveis
• Iremos diferenciar os dois tipos de variáveis suportados pelo Java. Estes
podem ser de referência ou de valor.
• As variáveis de “valor”, ou primitivas, são aquelas que armazenam
dados no exato espaço de memória onde a variável está.
• As variáveis de referência são aquelas que armazenam o endereço de
memória onde o dado está armazenado. Ao declarar uma variável de certa
classe (variável de classe), se declara uma variável de referência a um
objeto daquela classe.
Instrutor Daniel Bernardo
Referência de Variáveis e Valor das Variáveis
• Por exemplo, vamos supor que se tenha estas duas variáveis do tipo int e
da classe String.
– int num = 10;
– String nome = “Hello”;
• Suponha que o quadro abaixo represente a memória do computador, com
seus endereços de memória, o nome das variáveis e os tipos de dados que
ele pode suportar.
Instrutor Daniel Bernardo
Referência de Variáveis e Valor das Variáveis
• A variável (do tipo int) num o dado é o atual valor contido por ela e, a
referência da variável (do tipo string) nome somente é armazenado o
endereço de memória que contém o valor da variável.
Instrutor Daniel Bernardo
Conversões
• Como foi visto é possível atribuir o conteúdo de uma variável a outra.
• Se a variável de origem for de um tipo diferente da de destino, o dado pode
ter que passar por um processo de conversão antes da atribuição.
– Byte --- short --- int --- long --- float --- double
– Char --- int
• Atribuir o conteúdo de uma variável do tipo int para uma long, float ou
double não há necessidade de realizar conversão nenhuma.
• Porém a atribuição de uma variável do tipo a direita a uma a esquerda,
necessita de uma conversão explícita.
– Int i = 55;
– Byte b = (byte) i;
Instrutor Daniel Bernardo
Conversões
• Ajuste circular
– Int i = 130;
– Byte b = (byte) i;
• Intervalo de byte não comporta o valor 130;
– -128 a 127;
• Assim o excedente, nesse caso 3, é acrescido no início.
– (127 + 1 = -128; -128 + 1 = -127; -127 + 1 = -126 )
• Analise ConvEntreNumero
Instrutor Daniel Bernardo
Conversão de String
• Com freqüência é necessária a conversão de String para Integer, Float e Double.
int i4 = Integer.parseInt("123");
float f = Float.parseFloat("23.2");
double d = Double.parseDouble("34.67");
• E também o contrário
Integer inteiro = 1;
String st1 = inteiro.toString();
Float fl1 = 2.3f;
String st2 = fl1.toString();
Double dbl = 4.5;
String st3 = dbl.toString();
• Essa conversão se torna possível utilizando as classes Wraper dos tipos primitivos,
que possui além do conversor (parse) outros métodos utilitários.
Instrutor Daniel Bernardo
Constantes
• Comum: declaração como atributos de classes.
• Caso seja declarada dentro de um bloco, seu escopo será limitado a este
bloco.
• Armazenam valores que jamais mudam.
• Faz muito mais sentido declará-las em uma única classe e torná-las
acessíveis à outras classes. (default static).
• Casse Constante
• Por convenção, os identificadores das classes são escritos em maiúsculos
e separação feita por underline quando necessario.
– VALOR_ICMS, PERC_ICMS,...
Instrutor Daniel Bernardo
Operadores Aritméticos
• Baixe e analise a classe com exemplos do uso de operadores
– Operadores.java
• Nota: Quando um número de tipo inteiro e um outro de número fracionário
são usados numa única operação, o resultado será dado pela variável de
maior tipo, no caso, valor de número fracionário. O número inteiro é
implicitamente convertido para o número fracionário antes da operação ter
início.
Instrutor Daniel Bernardo
Operadores de Incremento e Decremento
• Além dos operadores aritméticos básicos, Java dá suporte ao operador
unário de incremento (++) e ao operador unário de decremento (--).
• Operadores de incremento ou decremento aumentam ou diminuem em 1 o
valor da variável.
• Por exemplo, a expressão,
– count = count + 1; // incrementa o valor de count em 1
• é equivalente a,
– count++;
Instrutor Daniel Bernardo
Operadores de Incremento e Decremento
Instrutor Daniel Bernardo
Operadores de Incremento e Decremento
• int i = 10,
• int j = 3;
• int k = 0;
• k = ++j + i; //resultará em k = 4+10 = 14
• int i = 10,
• int j = 3;
• int k = 0;
• k = j++ + i; //resultará em k = 3+10 = 13
Instrutor Daniel Bernardo
Exercícios
1. Crie um método main com as variáveis A e B e efetue as operações de
adição, subtração, multiplicação e divisão de A por B, apresentando ao final
os quatro resultados obtidos.
2. Crie um método main com as variáveis A e B, efetuar a troca dos valores
de forma que a variável A passe a possuir o valor da variável B e que a
variável B passe a possuir o valor da variável A. Apresentar os valores
trocados.
3. Crie um método main com duas variáveis do tipo int A e B. Inicie a A com
10 e a b com 7. Desenvolva um código capaz de imprimir o seguinte:
1. Valor de A era 10 agora é 11;
2. O valor de b passou a ser 6
Utilize operadores de incremento e decremento. E uma linha para cada.
Instrutor Daniel Bernardo
Exercícios
• Escreva um programa que, recebe um valor digitado pelo usuário e a este
valor adicione o percentual de COFINS e PIS. Apresente ao usuário o valor
de cada um e sua soma.
– Utilize constantes para cofins, pis e porcento.
Instrutor Daniel Bernardo
Exercícios
1. Adicione código (sem alterar as linhas que já existem) no programa a seguir para imprimir o
resultado:
– Resultado: 15, 15.1, y, false
class ExercicioSimples {
public static void main(String[] args) {
int i = 10;
double d = 5;
char c = 't';
boolean b = true;
// imprime concatenando diversas variáveis
System.out.println("Resultado: " + i + ", " + d + ", " + c + ", " +
b);
}
}
Instrutor Daniel Bernardo
Operadores Relacionais
• Os operadores relacionais são usados para comparar dois valores e
determinar o relacionamento entre eles. A saída desta avaliação será
fornecida com um valor lógico: true ou false.
– Analise Relacional.java
Instrutor Daniel Bernardo
Operadores Lógicos And
• Operadores lógicos avaliam um ou mais operandos lógicos que geram um
único valor final true ou false como resultado da expressão. São seis os
operadores lógicos: && (e lógico), & (e binário), || (ou lógico), | (ou binário),
^(ou exclusivo binário) e ! (negação).
• Analise o programa LogicoAnd.java
Instrutor Daniel Bernardo
Operadores Lógicos And
• && ou &
– Esses operadores lógicos tem a mesma função e funcionam de forma
idêntica.
– Porém, o operador && é mais rápido que o &.
– Isso porque quando a primeira condição de uma expressão é falsa, o
compilador nem analisa a segunda condição. Isso aumenta um pouco o
desempenho do trecho do código.
– Já com o operador &, mesmo que a primeira condição seja falsa, o
compilador ainda analisa a segunda. Diminuindo um pouco o
desempenho.
– A opção para o uso de um ao invés do outro, depende da
implementação que se está fazendo.
– O mesmo vale para || e |.
Instrutor Daniel Bernardo
Operadores Lógicos Or
• Analise LogicoOu.java
Instrutor Daniel Bernardo
Operadores Lógicos
Ou Exclusivo Binário
• O resultado de uma expressão usando o operador ou exclusivo binário
terá um valor true somente se uma das expressões for verdadeira e a outra
falsa. Note que ambos os operandos são necessariamente avaliados pelo
operador ^.
– Analise LogicoXou.java
Instrutor Daniel Bernardo
Operadores Lógicos Negação
public class LogicoNao {
public static void main(String[] args) {
boolean val1 = true;
boolean val2 = false;
System.out.println(!val1);
System.out.println(!val2);
}
}
Instrutor Daniel Bernardo
Operador Condicional ou Ternário
• O operador condicional é também chamado de operador ternário. Isto
significa que ele tem 3 argumentos que juntos formam uma única
expressão condicional. A estrutura de uma expressão utilizando um
operador condicional é a seguinte:
– exp1?exp2:exp3
• Onde exp1 é uma expressão lógica que deve retornar true ou false. Se o
valor de exp1 for verdadeiro, então, o resultado será a expressão exp2,
caso contrário, o resultado será exp3.
Instrutor Daniel Bernardo
Operador Condicional ou Ternário
public class ConditionalOperator {
public static void main( String[] args ){
String status = "";
int grade = 80;
//status do aluno
status = (grade >= 60)?"Passed":"Fail";
//print status
System.out.println( status );
}
}
Instrutor Daniel Bernardo
Precedência de operadores
Instrutor Daniel Bernardo
Precedência de operadores
• No caso de dois operadores com mesmo nível de precedência, terá
prioridade o que estiver mais à esquerda da expressão. Dada uma
expressão complexa como:
– 6%2*5+4/2+88-10
• O ideal seria fazer uso de parênteses para reescrevê-la de maneira mais
clara:
– ((6%2)*5)+(4/2)+88-10
Instrutor Daniel Bernardo
Controle de Fluxo
• O if
• A sintaxe do if no Java é a seguinte:
if (condicaoBooleana) {
codigo;
}
• Onde a codicaoBooleana seja qualquer expressão que retorne true e false.
Para isso pode usar operadores como >, <, >=, <=, ==, !=, etc.
int idade = 15;
if (idade < 18) {
System.out.println("Não pode entrar");
}
Instrutor Daniel Bernardo
Controle de Fluxo
• Além disso, você pode usar a cláusula else para indicar o comportamento
que deve ser executado no caso da expressão booleana ser falsa:
int idade = 15;
if (idade < 18) {
System.out.println(“Não pode entrar”);
} else {
System.out.println(“Pode entrar”);
}
Instrutor Daniel Bernardo
Controle de Fluxo
• Operadores Lógicos
– Você pode concatenar expressões booleanas através dos operadores
lógicos “E” e “OU”. O “E” é representado pelo & e o “OU” é
representado pelo |.
int idade = 15;
boolean amigoDoDono = true;
if (idade < 18 & amigoDoDono == false) {
System.out.println(“Não pode entrar”);
} else {
System.out.println(“Pode entrar”);
}
Instrutor Daniel Bernardo
Controle de Fluxo
• Operador de negação
• Esse código poderia ainda ficar mais legível, utilizando-se o operador de
negação, o !. Esse operador transforma uma expressão booleana de false
para true e vice versa.
int idade = 15;
boolean amigoDoDono = true;
if (idade < 18 & !amigoDoDono) {
System.out.println(“Não pode entrar”);
} else {
System.out.println(“Pode entrar”);
}
Instrutor Daniel Bernardo
Controle de Fluxo
• Para comparar se uma variável tem o mesmo valor que outra variável ou
valor, utilizamos o operador ==. Repare que utilizar o operador = vai
retornar um erro de compilação, já que o operador = é o de atribuição.
int mes = 1;
if (mes == 1) {
System.out.println(“Você deveria estar de férias”);
}
Instrutor Daniel Bernardo
Escopo de variáveis
• No Java, podemos declarar variáveis a qualquer momento. Porém,
dependendo de onde você as declarou, ela vai valer de um determinado
ponto a outro.
//aqui a variável i não existe
int i = 5;
// a partir daqui ela existe
• O escopo da variável é o nome dado ao trecho de código em que aquela
variável existe e que é possível acessá-la.
• Quando abrimos um novo bloco com as chaves, as variáveis declaradas ali
dentro só valem até o fim daquele bloco.
Instrutor Daniel Bernardo
Escopo de variáveis
//aqui a variável i não existe
int i = 5;
// a partir daqui ela existe
if (condicao) {
// o i ainda vale aqui
int j = 7;
// o j passa a existir
}
// aqui o j não existe mais, mas o i continua a valer
• No bloco acima, a variável j pára de existir quando termina o bloco onde ela
foi declarada. Se você tentar acessar uma variável fora de seu escopo,
ocorrerá um erro de compilação.
Instrutor Daniel Bernardo
Um bloco dentro de outro
If (condicao) {
If (condicao2) {
If (condicao3) {
}
}
}
Instrutor Daniel Bernardo
Exercícios
1. Crie um programa que declara uma variavel do tipo int e informe se ele é
par ou ímpar.
2. Calcular a média de um acadêmico e define sua situação:
1.aprovado maior ou igual a 7.0
2.reprovado menor ou igual a 5.0
3.em exame.
3. Escreva um programa que lê tres inteiros digitados pelo usuário e exiba a
soma, a média, o produto o maior e o menor desses números. O resultado
da média deve ser um inteiro.
Instrutor Daniel Bernardo
• Crie um programa que compare dois números digitados e informe se os
números são iguais, diferentes e menor, maior, menor ou igual ou maior
igual.
Instrutor Daniel Bernardo
Controle de Fluxo
• Switch case
– Outra maneira de indicar uma condição é através de uma declaração
switch. A construção switch permite que uma única variável inteira
tenha múltiplas possibilidades de finalização.
switch(expressão*){
Case argumento**: bloco de código;
break;
default: bloco de código;
}
Instrutor Daniel Bernardo
Controle de fluxo
• variável_inteira é uma variável de tipo byte, short, char ou int.
• Expressao* são valores constantes que esta variável pode assumir
• Quando a declaração switch é encontrada, o fluxo de controle avalia
inicialmente a variável_inteira e segue para o case que possui o valor
igual ao da variável. O programa executa todas instruções a partir deste
ponto, mesmo as do próximo case, até encontrar uma instrução break, que
interromperá a execução do switch.
• Se nenhum dos valores case for satisfeito, o bloco default será executado.
Este é um bloco opcional. O bloco default não é obrigatório na declaração
switch.
Instrutor Daniel Bernardo
Controle de fluxo
publicString tipoCombustivel(chartipo) {
switch(tipo) {
case'A': return"Alcool";
case'G': return"Gasolina";
case'D': return"Diesel";
case'X': return"Flex";
case'T': return"GNV";
default: return"";
}
}
Instrutor Daniel Bernardo
Exercício
• Ler um valor inteiro que representa o mês de uma data e apresentar o
nome do mês (janeiro, fevereiro, ...).
Instrutor Daniel Bernardo
Estrutura de repetição - While
• O loop while será adequado em cenários nos quais você não souber
quantas vezes o bloco ou instrução terá que ser repetido, mas quiser que
sua execução continue até que alguma condição seja verdadeira.
• A declaração while executa repetidas vezes um bloco de instruções
enquanto uma determinada condição lógica for verdadeira.
• A declaração while possui a seguinte forma:
while (expressão_lógica) {
instrução1;
instrução2;
...
}
Instrutor Daniel Bernardo
Estrutura de repetição - While
• Como em todos os loops, a expressão (teste) terá que resultar em um valor
booleano. O corpo só será executado se a condição for true. Uma vez que
entramos no loop, seu conteúdo será repetido até que a condição não
possa mais ser atendida e seja avaliada como false.
• Qualquer variável usada na expressão de um loop while deve ser declarada
antes da expressão ser avaliada. Uso incorreto:
– While (int x = 2) //inválido
• Isso porque você estaria declarando e inicializando-a, portanto teria sempre
o mesmo valor.
• Um laço while pode nem ser executado se a expressão do teste for false.
Instrutor Daniel Bernardo
Estrutura de repetição – Do While
• A declaração do-while é similar ao while, exceto pelo fato de que a
expressão não é avaliada até que o código do loop do tenha sido
executado. Portanto é garantido que o código dentro de um loop do será
executado pelo menos uma vez.
• A declaração do-while possui a seguinte forma:
do {
instrução1;
instrução2;
...
} while (expressão_lógica);
Instrutor Daniel Bernardo
Estrutura de repetição - For
• O loop for básico
• O loop for será particularmente util para o controle do fluxo quando voce já
souber quantas svezes terá que executar as instrucoes do bloco do loop.
• A declaração for possui três partes principais:
– Declaração e inicialização de variáveis
– Expressão booleana
– Expressão de iteração
• Cada uma das três partes da declaração do loop for é separada por um
ponto e vírgula.
Instrutor Daniel Bernardo
Estrutura de repetição - For
• A primeira parte da instrução for permite que você declare e inicialize
nenhuma, uma ou diversas variáveis do mesmo tipo. Se você declara mais
de uma variável do mesmo tipo, terá que separá-las com vírgulas.
• A declaração e inicialização ocorrem antes de qualquer outra coisa em um
loop for. e são executadas apenas uma vez durante a execução do laço.
for (inicialização; condição; iteração) {
instrução1;
}
Instrutor Daniel Bernardo
Estrutura de repetição - For
• A expressão condicional
• A próxima seção a ser executada será a expressão condicional, que terá
que resultar num valor booleano.
• Deve ter apenas uma expressão lógica, que pode ser bem complexa.
• Iteração
• É a parte que você poderá informar o que deseja que aconteça a cada
iteração do loop.
• Características: nenhuma das seções explicadas são obrigatórias:
– for ( ; ; ) {
– }
• Porém o código acima resulta em um loop infinito.
Instrutor Daniel Bernardo
Estrutura de repetição - For
Int i = 0;
for ( ; i < 10 ; ) {
i++;
}
• O código acima funciona com um while.
• As variáveis declaradas na primeira seção do for, terão seu escopo definido
no bloco for, ou seja, seu tempo de vida se resumirá entre as chaves da
declaração for.
Instrutor Daniel Bernardo
Exercicio
• Imprima todos os números de 150 a 300.
• Imprima a soma de 1 até 1000.
• Imprima todos os múltiplos de 3, entre 1 e 100.
• Imprima os fatoriais de 1 a 10.
• Escreva um programa que, dada uma variável x (com valor 180, por
exemplo), temos y de acordo com a seguinte regra: se x é par, y = x / 2 se x
é impar, y = 3 * x + 1 imprime y
• O programa deve então jogar o valor de y em x e continuar até que y tenha
o valor final de 1. Por exemplo, para x = 13, a saída será:
• 40 > 20 > 10 > 5 > 16 > 8 > 4 > 2 > 1
Instrutor Daniel Bernardo
Estrutura de interrupção - break
• Apesar de termos condições booleanas nos nossos laços, em algum
momento podemos decidir parar o loop por algum motivo especial, sem que
o resto do laço seja executado.
for (int i = x; i < y; i++) {
if (i % 19 == 0) {
System.out.println("Achei um número divisível por 19
entre x e y");
break;
}
}
• O código acima vai percorrer os números de x a y e parar quando encontrar
um número divisível por 19, uma vez que foi utilizada a palavra chave
break.
Instrutor Daniel Bernardo
Estrutura de interrupção - continue
• Da mesma maneira, é possível obrigar o loop a executar o próximo laço.
Para isso usamos a palavra chave continue.
for (int i = 0; i < 100; i++) {
if(i > 50 && i < 60) {
continue;
}
System.out.println(i);
}
Instrutor Daniel Bernardo
Estrutura de interrupção – return
• A declaração return é utilizada para sair de um método. O fluxo de controle
retorna para a declaração que segue a chamada do método original. A
declaração de retorno possui dois modos: o que retorna um valor e o que
não retorna nada.
• Para retornar um valor, escreva o valor (ou uma expressão que calcula este
valor) depois da palavra chave return. Por exemplo:
– return ++count;
– return "Hello";
• Os dados são processados e o valor é devolvido de acordo com o tipo de
dado do método.
• Quando um método não tem valor de retorno, deve ser declarado como
void. Use a forma de return que não devolve um valor. Por exemplo:
– return;
Instrutor Daniel Bernardo
Exercícios
• Crie um programa que mostre seu nome cem vezes. Faça três versões
deste programa:
– 1. Use uma declaração while para resolver este problema
– 2. Use uma declaração do-while para resolver este problema
– 3. Use uma declaração for para resolver este problema
• Apresenta a tabuada de um número inteiro qualquer. Solicite ao usuário um
número. Para encerrar o programa solicite que digite -1;
• Apresentar os quadrados dos números inteiros de 15 a 35. Use for.
• Apresentar a soma de todos os números divisíveis por 4 entre 40 e 200.
Use while.
• Fatorial de um número (ex. 5! = 5 * 4 * 3 * 2 * 1).
• A série de Fibonacci é formada pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21, etc.
Escreva uma classe que gere a série até o vigésimo termo.
Instrutor Daniel Bernardo
Exercícios
• Fulano aplicou R$ 100,00 com rendimento de 5% ao mês. Quantos meses
serão necessários para o capital investido ultrapasse a R$ 200,00.
• Escreva uma classe que imprima todas as possibilidades de que no
lançamento de dois dados tenhamos o valor 7 como resultado da soma dos
valores de cada dado.
• Um número natural e triangular é produto de três números naturais
consecutivos. Por exemplo: 120 é triangular, pois 4*5*6 = 120. Escreva
uma classe que apresente todos os números triangulares entre 100 e 1000.

Contenu connexe

Tendances

Tendances (17)

Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
ApresentaçãO De Java
ApresentaçãO De JavaApresentaçãO De Java
ApresentaçãO De Java
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 
Academia java intensivo
Academia java intensivoAcademia java intensivo
Academia java intensivo
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Introdução ao java
Introdução ao javaIntrodução ao java
Introdução ao java
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: Desenvolvedor
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 

En vedette

Lógica de programação construção de algoritmos e estrutura de dados
Lógica de programação   construção de algoritmos e estrutura de dadosLógica de programação   construção de algoritmos e estrutura de dados
Lógica de programação construção de algoritmos e estrutura de dados
pronatecvja
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem java
Rosicleia Frasson
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação
12anogolega
 

En vedette (16)

Fundamentos Java - 01
Fundamentos Java - 01Fundamentos Java - 01
Fundamentos Java - 01
 
Exercicios java2016 - resolvidos
Exercicios java2016 - resolvidosExercicios java2016 - resolvidos
Exercicios java2016 - resolvidos
 
Lógica de programação construção de algoritmos e estrutura de dados
Lógica de programação   construção de algoritmos e estrutura de dadosLógica de programação   construção de algoritmos e estrutura de dados
Lógica de programação construção de algoritmos e estrutura de dados
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem java
 
Etapas da programação
Etapas da programaçãoEtapas da programação
Etapas da programação
 
Maratona de programação 2009. Exercícios para Iniciantes.
Maratona de programação 2009. Exercícios para Iniciantes.Maratona de programação 2009. Exercícios para Iniciantes.
Maratona de programação 2009. Exercícios para Iniciantes.
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação
 
Exercicios java básico
Exercicios java básicoExercicios java básico
Exercicios java básico
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Logica Programação. ...
Logica Programação. ...Logica Programação. ...
Logica Programação. ...
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 

Similaire à Aula 1a.ppt

Programando java independente da ide
Programando java independente da ideProgramando java independente da ide
Programando java independente da ide
Heider Lopes
 
Programando java independente da ide
Programando java independente da ideProgramando java independente da ide
Programando java independente da ide
Heider Lopes
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Tchelinux
 
Linguagem de java
Linguagem de javaLinguagem de java
Linguagem de java
Genique
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Comunidade NetPonto
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
Aécio Costa
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1
PeslPinguim
 

Similaire à Aula 1a.ppt (20)

Aula 01 O que é java
Aula 01   O que é javaAula 01   O que é java
Aula 01 O que é java
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 
Aula 01 o que é java
Aula 01  o que é javaAula 01  o que é java
Aula 01 o que é java
 
Introdução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdfIntrodução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdf
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
 
Aula 1 1
Aula 1 1Aula 1 1
Aula 1 1
 
POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
Programando java independente da ide
Programando java independente da ideProgramando java independente da ide
Programando java independente da ide
 
Programando java independente da ide
Programando java independente da ideProgramando java independente da ide
Programando java independente da ide
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
 
Linguagem de java
Linguagem de javaLinguagem de java
Linguagem de java
 
Projetos Mono e Moonlight
Projetos Mono e MoonlightProjetos Mono e Moonlight
Projetos Mono e Moonlight
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1
 
Csharp
CsharpCsharp
Csharp
 

Aula 1a.ppt

  • 1. Instrutor Daniel Bernardo Programação Orientada a Objetos com Java
  • 2. Instrutor Daniel Bernardo Apresentação • A quem se destina o curso – Estudantes na área de Informática – Programadores de outras linguagens – Pesquisadores – Empresas que deseja adotar o Java como plataforma de trabalho • Pré requisito – Lógica de Programação
  • 3. Instrutor Daniel Bernardo Apresentação Como o curso está dividido? ●Aula 01 ⁻ Iniciação à Orientação a Objetos com Java ●Aula 02 ⁻ Aprofundar conhecimentos de Orientação a Objetos ●Aula 03 e Aula 04 ⁻ Aprofundar conhecimentos na Linguagem Java ●Aula 05 ⁻ API: java.io e Collections Framework ●Aula 06 ⁻ Conhecimentos extras: Swing, JDBC e outras Classes
  • 4. Instrutor Daniel Bernardo Apresentação ●Aula 01: Iniciação à Orientação a Objetos com Java ⁻ O que é Java e sua História ⁻ Java Virtual Machine e os Bytecodes ⁻ Montar o ambiente de desenvolvimento ⁻ IDE Eclipse ⁻ Conceitos básicos de uma Classe ⁻ Comandos básicos ⁻ Manipular tipos primitivos ⁻ Controle de fluxo com “if” e operadores ⁻ Estrutura de repetiçao while, do While, for
  • 5. Instrutor Daniel Bernardo O que é java – Uma Linguagem? • Não é apenas uma linguagem de programação. Pode ser dividido em três partes: – Linguagem de programação – Ambiente de desenvolvimento – API (Application Programing Interface)
  • 6. Instrutor Daniel Bernardo O que é java –Linguagem • Como linguagem de programação, Java pode ser utilizado para criar todos os tipos de aplicações existentes, de programas de Inteligência Artificial para Robôs até programas para aparelhos celulares. • composta por um conjunto de palavras e simbolos utilizados pelos desenvolvedores para escrever programas. • Formada por conjunto de palavras reservadas utilizadas para escrever expressões, instruções, estruturas de decisão, estrutura de controle, métodos, classes e outros
  • 7. Instrutor Daniel Bernardo O que é java – Ambiente de Desenvolvimento • Conjunto de ferramentas utilizadas para construção de aplicativos: – Javac: compilador – Java: interpretador – Javadoc: documentação • E muitas outras que compõem a JDK que nos auxilia no desenvolvimento de aplicativos. • IDE Integrated Development Enviroment - Ambiente de desenvolvimento integrado – Facilitam o processo de desenvolvimento de software – Eclipse, Netbeans, IntelliJ
  • 8. Instrutor Daniel Bernardo O que é java – API • (Application Programming Interface) Interface de programas aplicativos • Conjunto de classes, métodos, atributos que auxiliam o desenvolvedor na construção de programas • Não confundir com interfaces gráficas de usuario (GUI)
  • 9. Instrutor Daniel Bernardo O que é Java - O termo java • Deve ser interpretado como uma referência à sua concepção mais ampla: uma TECNOLOGIA INCORPORADA voltada para o desenvolvimento de software composta por um ambiente, uma linguagem e uma API.
  • 10. Instrutor Daniel Bernardo História • Java foi criado em 1991 por James Gosling da Sun Microsystems. Inicialmente chamada OAK (Carvalho), em homenagem à uma árvore de janela do Gosling, seu nome foi mudado para Java devido a existência de uma linguagem com o nome OAK • A motivação original do Java era a necessidade de uma linguagem independente de plataforma que podia ser utilizada em pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos, como vídeo cassete, televisão e aparelhos de tv a cabo. • Com o advento da web, a Sun percebeu que poderia utilizar a idéia criada em 1992 para poder rodar pequenas aplicações dentro do browser. A semelhança era que na internet havia uma grande quantidade de sistemas operacionais e browser, e com isso seria grande vantagem poder programar numa única linguagem, independente da plataforma. Foi aí que o Java 1.0 foi lançado: focado em deixar o browser não apenas um cliente burro, fazendo com que ele possa também realizar operações, não apenas renderizar html.
  • 11. Instrutor Daniel Bernardo História • Em Resumo: – Java nasceu com uma idéia para atender pequenos dispositivos; – Foi lançado para rodar na internet do lado cliente – Em 1995 foi reformulado e oficialmente lançado em 20/05 – Emplacou mesmo no desenvolvimento de aplicações do lado servidor
  • 13. Instrutor Daniel Bernardo Onde usar e objetivo • No começo tem-se a impressão que o Java tem baixa produtividade. Que outras linguagens que se está acostumado é mais simples de criar pequenos sistemas. • Isso porque o foco do Java não é criação de sistemas pequenos onde se trabalha um ou dois desenvolvedores. • O foco da plataforma é: aplicações de médio a grande porte, com um grande time de desenvolvimento que mudam e crescem. • Criar a primeira versão de um aplicativo é mais penosa que usar uma linguagem de script ou de alta produtividade. • Porém, Java é uma linguagem OO e madura, o que torna a manutenção do sistema mais fácil e rápida. Isso usando as boas práticas de programação de Design Patterns.
  • 14. Instrutor Daniel Bernardo Onde usar e objetivo • quantidade enorme de bibliotecas gratuitas, para realizar os mais diversos trabalhos tais como: – Relatórios, gráficos, sistemas de busca, geração de código de barra, manipulação de XML, tocadores de vídeo, manipuladores de texto, persistência transparente, impressão, etc) • você pode criar uma aplicação sofisticada, usando diversos recursos, sem precisar comprar um componente específico, que costuma ser caro de acordo com sua especialização. • O uso do java é interessante em aplicações que virão a crescer, em que a legibilidade do código é importante, onde temos muita conectividade e se temos plataformas (ambientes e sistemas operacionais) heterogêneos (linux, unix, OSX e windows misturados).
  • 15. Instrutor Daniel Bernardo Instalando Java • JSE – Java Standard Edition – Edição utilizada durante o curso – Com ela é possível • Acessar banco de dados •Controle de múltiplas linhas de execução •Desenvolvimentos de aplicações distribuídas •Interface Gráfica •Rede •Outras
  • 17. Instrutor Daniel Bernardo Instalando Java • JEE – Java Enterprise Edition – É a tecnologia mais adequada para o desenvolvimento de aplicações complexas para rodar na Internet. – Suporte a WebServices – Aplicações de negócios seguras e Robustas
  • 18. Instrutor Daniel Bernardo Instalando Java • JME – Java Micro Edition – Ambiente de execução altamente aperfeiçoado para ser executado em equipamentos eletrônicos de consumo. – Destinado à programação de pequenos dispositivos.
  • 19. Instrutor Daniel Bernardo JVM, JRE e JDK • Java Virtual Machine – É um mecanismo que permite executar código em Java em qualquer plataforma. A JVM pode ser entendida como "uma máquina virtual implementada via software ou hardware que executa instruções vindas de bytecodes". Graças a ela o Java é Multi-Plataforma. • Java Runtime Environment –É o ambiente de execução Java, formado pela JVM e bibliotecas que permitirão a execução de aplicativos desenvolvidos com a tecnologia Java em sua máquina. • Java Development Kit –É um kit de desenvolvimento Java fornecido livremente pela Sun. Constitui um conjunto de programas que engloba compilador, interpretador e utilitários, fornecendo um pacote de ferramentas básicas para o desenvolvimento de aplicações Java.
  • 20. Instrutor Daniel Bernardo O que é java - Máquina Virtual • Em uma linguagem de programação como C e Pascal, o código fonte é compilado para uma plataforma e sistema operacional específicos. • Muitas vezes, o próprio código fonte é desenvolvido visando uma única plataforma! • Esse código executável (binário) resultante será executado pelo sistema operacional e, por esse motivo, ele deve saber conversar com o sistema operacional em questão Código Fonte C Código Binário para determinado SO Compila
  • 21. Instrutor Daniel Bernardo O que é java - Máquina Virtual • Nesse cenário é necessário compilar o programa uma vez para cada sistema operacional • Na maioria das vezes, a sua aplicação se utiliza das bibliotecas do sistema operacional, como, por exemplo, a de interface gráfica para desenhar as 'telinhas'. • A biblioteca de interface gráfica do Windows é bem diferente das do Linux. Desta maneira você precisa reescrever o mesmo pedaço da aplicação para diferentes sistemas operacionais.
  • 22. Instrutor Daniel Bernardo O que é java - Máquina Virtual • Já o Java utiliza-se do conceito de máquina virtual, onde existe uma camada extra entre o sistema operacional e a aplicação, responsável por “traduzir” o que sua aplicação deseja fazer para as respectivas chamadas do sistema operacional no qual ela está rodando no momento: Bytecode Java Windows Linux Máquina Virtual Win Máquina Virtual Linux
  • 23. Instrutor Daniel Bernardo O que é java - Máquina Virtual • Dessa forma, a maneira a qual você abre uma janela no Linux ou no Windows é a mesma. • Você ganha independência de sistema operacional. Ou, melhor ainda, independência de plataforma em geral. • Uma máquina virtual é como um computador de mentira: ela tem tudo que um computador tem. • Ela é responsável por gerenciar memória, gerenciar threads, a pilha de execução, etc. • Sua aplicação roda sem nenhum envolvimento com o sistema operacional!
  • 25. Instrutor Daniel Bernardo Compilando o primeiro programa 1. class MeuPrograma { 2. 3. public static void main(String[] args) { 4. 5. System.out.println(“Alô Mundo Java!"); 6. 7. } 8. } • O arquivo .class gerado contém o ByteCode do sistema que é o que a JVM irá interpretar.
  • 26. Instrutor Daniel Bernardo O que é java - ByteCode • Bytecode é o termo dado ao código binário gerado pelo compilador Java. • O compilador Java gera esse bytecode que, diferente das linguagens sem máquina virtual, vai servir para diferentes sistemas operacionais, já que ele vai ser “traduzido” pela máquina virtual. • Por isso diz-se que Java é uma Linguagem compilada e interpretada. – javap -c NomeDaClasse
  • 27. Instrutor Daniel Bernardo Facilidades programação • Quais são os seus maiores problemas quando está programando? – ponteiros? – liberar memória? – organização? – falta de bibliotecas boas? – ter de reescrever parte do código ao mudar de sistema operacional? – custo de usar a tecnologia? • Seus Problemas acabaram!!!
  • 28. Instrutor Daniel Bernardo Garbage Collector • O Garbage Collector (coletor de lixo, lixeiro) é uma Thread responsável por jogar fora todos os objetos que não estão sendo referenciados por nenhuma outra Thread, seja direta ou indiretamente! • Como o Garbage Collector é uma Thread, você não tem garantia de quando ele vai rodar. Você só sabe que algum dia aquela memória vai ser liberada. • System.gc() – Invocando o método estático da classe System você estará sugerindo a JVM rodar o Garbage Collector, mas ela irá executar quando bem entender.
  • 29. Instrutor Daniel Bernardo O java é lento? • Hotspot é a tecnologia que a JVM utiliza para detectar pontos quentes da sua aplicação: – código que é executado muito. • Quando a JVM julgar necessária, ela vai compilar aquele código para instruções nativas da plataforma, tendo em vista que isso vai provavelmente melhorar a performance da sua aplicação. • Compilador é o JIT: Just inTime Compiler. • A JVM, por estar compilando dinamicamente durante a execução, pode perceber que um determinado código não está com performance adequada, e otimizar mais um pouco aquele trecho, ou ainda mudar a estratégia de otimização • Mantenha a JVM sempre atualizada.
  • 30. Instrutor Daniel Bernardo Exercício 1. Altere seu programa para imprimir uma mensagem diferente. 2. Altere seu programa para imprimir duas linhas de texto usando duas linhas de código System.out. 3. Sabendo que os caracteres “n” representam uma quebra de linhas, imprima duas linhas de texto usando uma única linha de código System.out.
  • 31. Instrutor Daniel Bernardo O que é IDE? • IDE – Integrated Development Environment (Ambiente de Desenvolvimento Integrado) – Consiste em um software que contém um conjunto de funcionalidades embutidas, cuja finalidade é prover um modo mais fácil e interativo de construir e manipular seus programas. • Entre estas ferramentas geralmente figuram: – Um editor de texto com facilidades especialmente desenhadas para a linguagem; – Um compilador (e um interpretador, no caso de Java e outras linguagens interpretadas); – Um editor gráfico, com facilidades para criação e edição da interface gráfica do programa a ser desenvolvido;
  • 32. Instrutor Daniel Bernardo IDEs • Eclipse – http://eclipse.org • NetBeans – http://netbeans.org
  • 33. Instrutor Daniel Bernardo Declaração de classe • O desenvolvimento de um aplicativo Java se resume à criação de fragmentos de código que se comunicam entre si, chamados classes e interfaces. • Toda classe precisa de uma identificação, que é representada pelo seu nome, que é o ultimo termo da declaração. • Se a classe é pública, seu nome deve ser igual ao nome do arquivo .java.
  • 34. Instrutor Daniel Bernardo Método main • O método main é usado para indicar ao compilador que esse é um aplicativo que deverá ser executado. • Cada projeto (Desktop) Java deve ter um método principal; ou seja apenas um main. • O método main é o primeiro método que a Máquina Virtual Java (JVM) executa, então o método main executa as chamadas a outros métodos. • Deve ser void public e static • Deve receber por parametro um String[ ]
  • 35. Instrutor Daniel Bernardo Declaração Import • A declaração import de Java Corresponde à declaração include de C/C++ ou à cláusula uses do Pascal. • Sua Finalidade é importar bibliotecas de classe e interfaces já existentes que serão necessárias. • Na importação de uma classe digita-se seu caminho completo (pacote).
  • 36. Instrutor Daniel Bernardo Instruções e Blocos • Uma instrução é composta de uma ou mais linhas terminadas por ponto-e- vírgula. Um exemplo de uma simples instrução pode ser: – System.out.println("Hello world"); • Um bloco é formado por uma ou mais instruções agrupadas entre chaves indicando que formam uma só unidade. Blocos podem ser organizados em estruturas aninhadas indefinidamente. Qualquer quantidade de espaços em branco é permitida. Um exemplo de bloco pode ser: public static void main(String[] args) { System.out.print("Hello "); System.out.println("world"); }
  • 37. Instrutor Daniel Bernardo Identificadores • Identificadores são representações de nomes de variáveis, métodos, classes, etc. Exemplos de identificadores podem ser: Hello, main, System, out. • O compilador Java difere as letras maiúsculas de minúsculas (case- sensitive). Isto significa que o identificador Hello não é o mesmo que hello. Os identificadores em Java devem começar com uma letra, um underscore “_”, ou um sinal de cifrão “$”. As letras podem estar tanto em maiúsculo quanto em minúsculo. Os caracteres subseqüentes podem usar números de 0 a 9. • Os identificadores não podem ter nomes iguais às palavras-chave ou palavras reservadas do Java, como: class, public, void, int, etc
  • 38. Instrutor Daniel Bernardo Identificadores • Para nomes de classes, a primeira letra deve ser maiúscula. Nomes de métodos ou variáveis devem começar com letra minúscula. Por exemplo: – ExemploDeNomeDeUmaClasse – exemploDeNomeDeUmMetodo • No caso de identificadores com mais de uma palavra, a primeira letra de cada palavra, com exceção da primeira, deve vir em maiúsculo. Por exemplo: – charArray – fileNumber – className • Evite o uso de undescores no início de um identificador. Por exemplo: – _NomeDeClasse.
  • 39. Instrutor Daniel Bernardo Palavras-chave • Palavras-chave são identificadores que, em Java, foram pré-definidas para propósitos específicos. Não se pode usar esses identificadores como nomes de variáveis, métodos, classes, etc. A seguir, temos a lista com as palavras-chave em Java.
  • 40. Instrutor Daniel Bernardo Palavras-chave • true, false e null não são palavras-chave, porém, são palavras-reservadas, e, da mesma maneira, não é permitido seu uso na atribuição a nomes de variáveis, métodos ou classes.
  • 41. Instrutor Daniel Bernardo Tipos de dados primitivos • A linguagem Java possui 8 tipos de dados primitivos
  • 42. Instrutor Daniel Bernardo Tipos de dados primitivos • Lógico – O tipo boolean pode representar dois estados: true (verdadeiro) ou false (falso). Um exemplo é: • boolean verdadeiro = true; • Boolean falso = false; – Diferente de outras linguagens, tipo booleano em Java não permite atribuição de 0 e 1.
  • 43. Instrutor Daniel Bernardo Tipos de dados primitivos • Inteiro – O dado do tipo char é um inteiro especial, sendo exclusivamente positivo e representa um único Unicode. Ele deve ser, obrigatoriamente, colocado entre aspas simples (''). – char c = 97; // representa o símbolo 'a' – byte b = 'a'; // em inteiro representa o número 97 – É possível definir para qualquer inteiro nas formas mostradas. O que difere o tipo char dos demais inteiros é que a sua saída sempre será mostrada como um valor ASCII. Enquanto que os inteiros serão sempre mostrados por números decimais – char c = 97; – byte b = 'a'; – System.out.println("char = " + c + " - byte = " + b); – Resultará: – char = a - byte = 97
  • 44. Instrutor Daniel Bernardo Tipos de dados primitivos • Um cuidado deve ser tomado quanto aos inteiros: qualquer operação efetuada entre eles terá sempre como resultado um tipo int. Por exemplo: – byte b1 = 1; – byte b2 = 2; – byte resultado = b1 + b2; • Esta instrução final causará um erro de compilação, devendo ser modificada para: – int resultado = b1 + b2;
  • 45. Instrutor Daniel Bernardo Tipos de dados primitivos Os inteiros têm por padrão o valor representado pelo tipo primitivo int. Pode-se representá-los como long adicionando, ao final do número, um "l" ou "L". Os tipos de dados inteiros assumem valores nas seguintes faixas: long numeroLongo = 324L;
  • 46. Instrutor Daniel Bernardo Tipos de dados primitivos 9.223.372.036.854.775.807-9.223.372.036.854.775. 8088 byteslong 2.147.483.647-2.147.483.6484 bytesint 32.768-32.7682 bytesshort 127-1281 bytebyte MáximoMínimoTamanhoTipo
  • 47. Instrutor Daniel Bernardo Tipos de dados primitivos • Números de ponto flutuante – O tipo float é pouco usado devido sua limitação de possuir uma baixa precisão. Tipo Tamanho Mínimo Máximo Precisão Float 4 bytes -3.4028E+38 3.4028E+38 6,7 dígitos Double 8 bytes -1.7976E+308 1.7976E+308 15 dígitos
  • 48. Instrutor Daniel Bernardo Variaveis primitivas • Declarando e usando variáveis – Dentro de um bloco, podemos declarar variáveis e usá-las. – Em Java, toda variável tem um tipo que não pode ser mudado uma vez que declarado: •tipoDaVaríavel nomeDaVariável; • Por exemplo, é possível ter uma idade que vale um número inteiro: – int idade; • Com isso, você declara a variável idade, que passa a existir a partir deste momento. Ela é do tipo int, que guarda um número inteiro. A partir de agora você pode usá-la, primeiro atribuindo valores. • A linha a seguir é a tradução de “idade deve valer agora quinze“. • idade = 15; • Além de atribuir, você pode utilizar esse valor – System.out.println(idade);
  • 49. Instrutor Daniel Bernardo Variáveis primitivas • Você pode usar os operadores +, -, / e * para operar com números, sendo eles responsáveis pela adição, subtração, divisão e multiplicação, respectivamente. Além desses operadores básicos, há o operador % (módulo) que nada mais mais é que o resto de uma divisão inteira. • int quatro = 2 + 2; • int tres = 5 – 2; • int oito = 4 * 2; • int dezesseis = 64 / 4; • int um = 5 % 2; // 5 dividido por 2 dá 2 e tem resto 1; // o operador % pega o resto da divisão inteira
  • 50. Instrutor Daniel Bernardo Variáveis primitivas • Double – Outro tipo de variável muito utilizado é o double, que armazena um número com ponto flutuante. • double d = 3.14; • double x = 5 * 10; • boolean verdade = true; – boolean verdade = true; // Não aceita 0 e 1 • Char – O tipo char guarda um e apenas um caractere. Esse caractere deve estar entre aspas simples. • char letra = 'a';
  • 51. Instrutor Daniel Bernardo Exercícios 1. Criar um projeto Java chamado JavaBasico. 2. Criar uma classe Java com método main chamada AulaUm. 3. Dentro do método main, escrever o seguinte código: 1. String nome = "<Seu nome>"; 2. int idade = "<Sua idade>"; 3. System.out.println("Meu nome é " + nome + "e tenho " + idade + " anos");
  • 52. Instrutor Daniel Bernardo Referência de Variáveis e Valor das Variáveis • Iremos diferenciar os dois tipos de variáveis suportados pelo Java. Estes podem ser de referência ou de valor. • As variáveis de “valor”, ou primitivas, são aquelas que armazenam dados no exato espaço de memória onde a variável está. • As variáveis de referência são aquelas que armazenam o endereço de memória onde o dado está armazenado. Ao declarar uma variável de certa classe (variável de classe), se declara uma variável de referência a um objeto daquela classe.
  • 53. Instrutor Daniel Bernardo Referência de Variáveis e Valor das Variáveis • Por exemplo, vamos supor que se tenha estas duas variáveis do tipo int e da classe String. – int num = 10; – String nome = “Hello”; • Suponha que o quadro abaixo represente a memória do computador, com seus endereços de memória, o nome das variáveis e os tipos de dados que ele pode suportar.
  • 54. Instrutor Daniel Bernardo Referência de Variáveis e Valor das Variáveis • A variável (do tipo int) num o dado é o atual valor contido por ela e, a referência da variável (do tipo string) nome somente é armazenado o endereço de memória que contém o valor da variável.
  • 55. Instrutor Daniel Bernardo Conversões • Como foi visto é possível atribuir o conteúdo de uma variável a outra. • Se a variável de origem for de um tipo diferente da de destino, o dado pode ter que passar por um processo de conversão antes da atribuição. – Byte --- short --- int --- long --- float --- double – Char --- int • Atribuir o conteúdo de uma variável do tipo int para uma long, float ou double não há necessidade de realizar conversão nenhuma. • Porém a atribuição de uma variável do tipo a direita a uma a esquerda, necessita de uma conversão explícita. – Int i = 55; – Byte b = (byte) i;
  • 56. Instrutor Daniel Bernardo Conversões • Ajuste circular – Int i = 130; – Byte b = (byte) i; • Intervalo de byte não comporta o valor 130; – -128 a 127; • Assim o excedente, nesse caso 3, é acrescido no início. – (127 + 1 = -128; -128 + 1 = -127; -127 + 1 = -126 ) • Analise ConvEntreNumero
  • 57. Instrutor Daniel Bernardo Conversão de String • Com freqüência é necessária a conversão de String para Integer, Float e Double. int i4 = Integer.parseInt("123"); float f = Float.parseFloat("23.2"); double d = Double.parseDouble("34.67"); • E também o contrário Integer inteiro = 1; String st1 = inteiro.toString(); Float fl1 = 2.3f; String st2 = fl1.toString(); Double dbl = 4.5; String st3 = dbl.toString(); • Essa conversão se torna possível utilizando as classes Wraper dos tipos primitivos, que possui além do conversor (parse) outros métodos utilitários.
  • 58. Instrutor Daniel Bernardo Constantes • Comum: declaração como atributos de classes. • Caso seja declarada dentro de um bloco, seu escopo será limitado a este bloco. • Armazenam valores que jamais mudam. • Faz muito mais sentido declará-las em uma única classe e torná-las acessíveis à outras classes. (default static). • Casse Constante • Por convenção, os identificadores das classes são escritos em maiúsculos e separação feita por underline quando necessario. – VALOR_ICMS, PERC_ICMS,...
  • 59. Instrutor Daniel Bernardo Operadores Aritméticos • Baixe e analise a classe com exemplos do uso de operadores – Operadores.java • Nota: Quando um número de tipo inteiro e um outro de número fracionário são usados numa única operação, o resultado será dado pela variável de maior tipo, no caso, valor de número fracionário. O número inteiro é implicitamente convertido para o número fracionário antes da operação ter início.
  • 60. Instrutor Daniel Bernardo Operadores de Incremento e Decremento • Além dos operadores aritméticos básicos, Java dá suporte ao operador unário de incremento (++) e ao operador unário de decremento (--). • Operadores de incremento ou decremento aumentam ou diminuem em 1 o valor da variável. • Por exemplo, a expressão, – count = count + 1; // incrementa o valor de count em 1 • é equivalente a, – count++;
  • 61. Instrutor Daniel Bernardo Operadores de Incremento e Decremento
  • 62. Instrutor Daniel Bernardo Operadores de Incremento e Decremento • int i = 10, • int j = 3; • int k = 0; • k = ++j + i; //resultará em k = 4+10 = 14 • int i = 10, • int j = 3; • int k = 0; • k = j++ + i; //resultará em k = 3+10 = 13
  • 63. Instrutor Daniel Bernardo Exercícios 1. Crie um método main com as variáveis A e B e efetue as operações de adição, subtração, multiplicação e divisão de A por B, apresentando ao final os quatro resultados obtidos. 2. Crie um método main com as variáveis A e B, efetuar a troca dos valores de forma que a variável A passe a possuir o valor da variável B e que a variável B passe a possuir o valor da variável A. Apresentar os valores trocados. 3. Crie um método main com duas variáveis do tipo int A e B. Inicie a A com 10 e a b com 7. Desenvolva um código capaz de imprimir o seguinte: 1. Valor de A era 10 agora é 11; 2. O valor de b passou a ser 6 Utilize operadores de incremento e decremento. E uma linha para cada.
  • 64. Instrutor Daniel Bernardo Exercícios • Escreva um programa que, recebe um valor digitado pelo usuário e a este valor adicione o percentual de COFINS e PIS. Apresente ao usuário o valor de cada um e sua soma. – Utilize constantes para cofins, pis e porcento.
  • 65. Instrutor Daniel Bernardo Exercícios 1. Adicione código (sem alterar as linhas que já existem) no programa a seguir para imprimir o resultado: – Resultado: 15, 15.1, y, false class ExercicioSimples { public static void main(String[] args) { int i = 10; double d = 5; char c = 't'; boolean b = true; // imprime concatenando diversas variáveis System.out.println("Resultado: " + i + ", " + d + ", " + c + ", " + b); } }
  • 66. Instrutor Daniel Bernardo Operadores Relacionais • Os operadores relacionais são usados para comparar dois valores e determinar o relacionamento entre eles. A saída desta avaliação será fornecida com um valor lógico: true ou false. – Analise Relacional.java
  • 67. Instrutor Daniel Bernardo Operadores Lógicos And • Operadores lógicos avaliam um ou mais operandos lógicos que geram um único valor final true ou false como resultado da expressão. São seis os operadores lógicos: && (e lógico), & (e binário), || (ou lógico), | (ou binário), ^(ou exclusivo binário) e ! (negação). • Analise o programa LogicoAnd.java
  • 68. Instrutor Daniel Bernardo Operadores Lógicos And • && ou & – Esses operadores lógicos tem a mesma função e funcionam de forma idêntica. – Porém, o operador && é mais rápido que o &. – Isso porque quando a primeira condição de uma expressão é falsa, o compilador nem analisa a segunda condição. Isso aumenta um pouco o desempenho do trecho do código. – Já com o operador &, mesmo que a primeira condição seja falsa, o compilador ainda analisa a segunda. Diminuindo um pouco o desempenho. – A opção para o uso de um ao invés do outro, depende da implementação que se está fazendo. – O mesmo vale para || e |.
  • 69. Instrutor Daniel Bernardo Operadores Lógicos Or • Analise LogicoOu.java
  • 70. Instrutor Daniel Bernardo Operadores Lógicos Ou Exclusivo Binário • O resultado de uma expressão usando o operador ou exclusivo binário terá um valor true somente se uma das expressões for verdadeira e a outra falsa. Note que ambos os operandos são necessariamente avaliados pelo operador ^. – Analise LogicoXou.java
  • 71. Instrutor Daniel Bernardo Operadores Lógicos Negação public class LogicoNao { public static void main(String[] args) { boolean val1 = true; boolean val2 = false; System.out.println(!val1); System.out.println(!val2); } }
  • 72. Instrutor Daniel Bernardo Operador Condicional ou Ternário • O operador condicional é também chamado de operador ternário. Isto significa que ele tem 3 argumentos que juntos formam uma única expressão condicional. A estrutura de uma expressão utilizando um operador condicional é a seguinte: – exp1?exp2:exp3 • Onde exp1 é uma expressão lógica que deve retornar true ou false. Se o valor de exp1 for verdadeiro, então, o resultado será a expressão exp2, caso contrário, o resultado será exp3.
  • 73. Instrutor Daniel Bernardo Operador Condicional ou Ternário public class ConditionalOperator { public static void main( String[] args ){ String status = ""; int grade = 80; //status do aluno status = (grade >= 60)?"Passed":"Fail"; //print status System.out.println( status ); } }
  • 75. Instrutor Daniel Bernardo Precedência de operadores • No caso de dois operadores com mesmo nível de precedência, terá prioridade o que estiver mais à esquerda da expressão. Dada uma expressão complexa como: – 6%2*5+4/2+88-10 • O ideal seria fazer uso de parênteses para reescrevê-la de maneira mais clara: – ((6%2)*5)+(4/2)+88-10
  • 76. Instrutor Daniel Bernardo Controle de Fluxo • O if • A sintaxe do if no Java é a seguinte: if (condicaoBooleana) { codigo; } • Onde a codicaoBooleana seja qualquer expressão que retorne true e false. Para isso pode usar operadores como >, <, >=, <=, ==, !=, etc. int idade = 15; if (idade < 18) { System.out.println("Não pode entrar"); }
  • 77. Instrutor Daniel Bernardo Controle de Fluxo • Além disso, você pode usar a cláusula else para indicar o comportamento que deve ser executado no caso da expressão booleana ser falsa: int idade = 15; if (idade < 18) { System.out.println(“Não pode entrar”); } else { System.out.println(“Pode entrar”); }
  • 78. Instrutor Daniel Bernardo Controle de Fluxo • Operadores Lógicos – Você pode concatenar expressões booleanas através dos operadores lógicos “E” e “OU”. O “E” é representado pelo & e o “OU” é representado pelo |. int idade = 15; boolean amigoDoDono = true; if (idade < 18 & amigoDoDono == false) { System.out.println(“Não pode entrar”); } else { System.out.println(“Pode entrar”); }
  • 79. Instrutor Daniel Bernardo Controle de Fluxo • Operador de negação • Esse código poderia ainda ficar mais legível, utilizando-se o operador de negação, o !. Esse operador transforma uma expressão booleana de false para true e vice versa. int idade = 15; boolean amigoDoDono = true; if (idade < 18 & !amigoDoDono) { System.out.println(“Não pode entrar”); } else { System.out.println(“Pode entrar”); }
  • 80. Instrutor Daniel Bernardo Controle de Fluxo • Para comparar se uma variável tem o mesmo valor que outra variável ou valor, utilizamos o operador ==. Repare que utilizar o operador = vai retornar um erro de compilação, já que o operador = é o de atribuição. int mes = 1; if (mes == 1) { System.out.println(“Você deveria estar de férias”); }
  • 81. Instrutor Daniel Bernardo Escopo de variáveis • No Java, podemos declarar variáveis a qualquer momento. Porém, dependendo de onde você as declarou, ela vai valer de um determinado ponto a outro. //aqui a variável i não existe int i = 5; // a partir daqui ela existe • O escopo da variável é o nome dado ao trecho de código em que aquela variável existe e que é possível acessá-la. • Quando abrimos um novo bloco com as chaves, as variáveis declaradas ali dentro só valem até o fim daquele bloco.
  • 82. Instrutor Daniel Bernardo Escopo de variáveis //aqui a variável i não existe int i = 5; // a partir daqui ela existe if (condicao) { // o i ainda vale aqui int j = 7; // o j passa a existir } // aqui o j não existe mais, mas o i continua a valer • No bloco acima, a variável j pára de existir quando termina o bloco onde ela foi declarada. Se você tentar acessar uma variável fora de seu escopo, ocorrerá um erro de compilação.
  • 83. Instrutor Daniel Bernardo Um bloco dentro de outro If (condicao) { If (condicao2) { If (condicao3) { } } }
  • 84. Instrutor Daniel Bernardo Exercícios 1. Crie um programa que declara uma variavel do tipo int e informe se ele é par ou ímpar. 2. Calcular a média de um acadêmico e define sua situação: 1.aprovado maior ou igual a 7.0 2.reprovado menor ou igual a 5.0 3.em exame. 3. Escreva um programa que lê tres inteiros digitados pelo usuário e exiba a soma, a média, o produto o maior e o menor desses números. O resultado da média deve ser um inteiro.
  • 85. Instrutor Daniel Bernardo • Crie um programa que compare dois números digitados e informe se os números são iguais, diferentes e menor, maior, menor ou igual ou maior igual.
  • 86. Instrutor Daniel Bernardo Controle de Fluxo • Switch case – Outra maneira de indicar uma condição é através de uma declaração switch. A construção switch permite que uma única variável inteira tenha múltiplas possibilidades de finalização. switch(expressão*){ Case argumento**: bloco de código; break; default: bloco de código; }
  • 87. Instrutor Daniel Bernardo Controle de fluxo • variável_inteira é uma variável de tipo byte, short, char ou int. • Expressao* são valores constantes que esta variável pode assumir • Quando a declaração switch é encontrada, o fluxo de controle avalia inicialmente a variável_inteira e segue para o case que possui o valor igual ao da variável. O programa executa todas instruções a partir deste ponto, mesmo as do próximo case, até encontrar uma instrução break, que interromperá a execução do switch. • Se nenhum dos valores case for satisfeito, o bloco default será executado. Este é um bloco opcional. O bloco default não é obrigatório na declaração switch.
  • 88. Instrutor Daniel Bernardo Controle de fluxo publicString tipoCombustivel(chartipo) { switch(tipo) { case'A': return"Alcool"; case'G': return"Gasolina"; case'D': return"Diesel"; case'X': return"Flex"; case'T': return"GNV"; default: return""; } }
  • 89. Instrutor Daniel Bernardo Exercício • Ler um valor inteiro que representa o mês de uma data e apresentar o nome do mês (janeiro, fevereiro, ...).
  • 90. Instrutor Daniel Bernardo Estrutura de repetição - While • O loop while será adequado em cenários nos quais você não souber quantas vezes o bloco ou instrução terá que ser repetido, mas quiser que sua execução continue até que alguma condição seja verdadeira. • A declaração while executa repetidas vezes um bloco de instruções enquanto uma determinada condição lógica for verdadeira. • A declaração while possui a seguinte forma: while (expressão_lógica) { instrução1; instrução2; ... }
  • 91. Instrutor Daniel Bernardo Estrutura de repetição - While • Como em todos os loops, a expressão (teste) terá que resultar em um valor booleano. O corpo só será executado se a condição for true. Uma vez que entramos no loop, seu conteúdo será repetido até que a condição não possa mais ser atendida e seja avaliada como false. • Qualquer variável usada na expressão de um loop while deve ser declarada antes da expressão ser avaliada. Uso incorreto: – While (int x = 2) //inválido • Isso porque você estaria declarando e inicializando-a, portanto teria sempre o mesmo valor. • Um laço while pode nem ser executado se a expressão do teste for false.
  • 92. Instrutor Daniel Bernardo Estrutura de repetição – Do While • A declaração do-while é similar ao while, exceto pelo fato de que a expressão não é avaliada até que o código do loop do tenha sido executado. Portanto é garantido que o código dentro de um loop do será executado pelo menos uma vez. • A declaração do-while possui a seguinte forma: do { instrução1; instrução2; ... } while (expressão_lógica);
  • 93. Instrutor Daniel Bernardo Estrutura de repetição - For • O loop for básico • O loop for será particularmente util para o controle do fluxo quando voce já souber quantas svezes terá que executar as instrucoes do bloco do loop. • A declaração for possui três partes principais: – Declaração e inicialização de variáveis – Expressão booleana – Expressão de iteração • Cada uma das três partes da declaração do loop for é separada por um ponto e vírgula.
  • 94. Instrutor Daniel Bernardo Estrutura de repetição - For • A primeira parte da instrução for permite que você declare e inicialize nenhuma, uma ou diversas variáveis do mesmo tipo. Se você declara mais de uma variável do mesmo tipo, terá que separá-las com vírgulas. • A declaração e inicialização ocorrem antes de qualquer outra coisa em um loop for. e são executadas apenas uma vez durante a execução do laço. for (inicialização; condição; iteração) { instrução1; }
  • 95. Instrutor Daniel Bernardo Estrutura de repetição - For • A expressão condicional • A próxima seção a ser executada será a expressão condicional, que terá que resultar num valor booleano. • Deve ter apenas uma expressão lógica, que pode ser bem complexa. • Iteração • É a parte que você poderá informar o que deseja que aconteça a cada iteração do loop. • Características: nenhuma das seções explicadas são obrigatórias: – for ( ; ; ) { – } • Porém o código acima resulta em um loop infinito.
  • 96. Instrutor Daniel Bernardo Estrutura de repetição - For Int i = 0; for ( ; i < 10 ; ) { i++; } • O código acima funciona com um while. • As variáveis declaradas na primeira seção do for, terão seu escopo definido no bloco for, ou seja, seu tempo de vida se resumirá entre as chaves da declaração for.
  • 97. Instrutor Daniel Bernardo Exercicio • Imprima todos os números de 150 a 300. • Imprima a soma de 1 até 1000. • Imprima todos os múltiplos de 3, entre 1 e 100. • Imprima os fatoriais de 1 a 10. • Escreva um programa que, dada uma variável x (com valor 180, por exemplo), temos y de acordo com a seguinte regra: se x é par, y = x / 2 se x é impar, y = 3 * x + 1 imprime y • O programa deve então jogar o valor de y em x e continuar até que y tenha o valor final de 1. Por exemplo, para x = 13, a saída será: • 40 > 20 > 10 > 5 > 16 > 8 > 4 > 2 > 1
  • 98. Instrutor Daniel Bernardo Estrutura de interrupção - break • Apesar de termos condições booleanas nos nossos laços, em algum momento podemos decidir parar o loop por algum motivo especial, sem que o resto do laço seja executado. for (int i = x; i < y; i++) { if (i % 19 == 0) { System.out.println("Achei um número divisível por 19 entre x e y"); break; } } • O código acima vai percorrer os números de x a y e parar quando encontrar um número divisível por 19, uma vez que foi utilizada a palavra chave break.
  • 99. Instrutor Daniel Bernardo Estrutura de interrupção - continue • Da mesma maneira, é possível obrigar o loop a executar o próximo laço. Para isso usamos a palavra chave continue. for (int i = 0; i < 100; i++) { if(i > 50 && i < 60) { continue; } System.out.println(i); }
  • 100. Instrutor Daniel Bernardo Estrutura de interrupção – return • A declaração return é utilizada para sair de um método. O fluxo de controle retorna para a declaração que segue a chamada do método original. A declaração de retorno possui dois modos: o que retorna um valor e o que não retorna nada. • Para retornar um valor, escreva o valor (ou uma expressão que calcula este valor) depois da palavra chave return. Por exemplo: – return ++count; – return "Hello"; • Os dados são processados e o valor é devolvido de acordo com o tipo de dado do método. • Quando um método não tem valor de retorno, deve ser declarado como void. Use a forma de return que não devolve um valor. Por exemplo: – return;
  • 101. Instrutor Daniel Bernardo Exercícios • Crie um programa que mostre seu nome cem vezes. Faça três versões deste programa: – 1. Use uma declaração while para resolver este problema – 2. Use uma declaração do-while para resolver este problema – 3. Use uma declaração for para resolver este problema • Apresenta a tabuada de um número inteiro qualquer. Solicite ao usuário um número. Para encerrar o programa solicite que digite -1; • Apresentar os quadrados dos números inteiros de 15 a 35. Use for. • Apresentar a soma de todos os números divisíveis por 4 entre 40 e 200. Use while. • Fatorial de um número (ex. 5! = 5 * 4 * 3 * 2 * 1). • A série de Fibonacci é formada pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21, etc. Escreva uma classe que gere a série até o vigésimo termo.
  • 102. Instrutor Daniel Bernardo Exercícios • Fulano aplicou R$ 100,00 com rendimento de 5% ao mês. Quantos meses serão necessários para o capital investido ultrapasse a R$ 200,00. • Escreva uma classe que imprima todas as possibilidades de que no lançamento de dois dados tenhamos o valor 7 como resultado da soma dos valores de cada dado. • Um número natural e triangular é produto de três números naturais consecutivos. Por exemplo: 120 é triangular, pois 4*5*6 = 120. Escreva uma classe que apresente todos os números triangulares entre 100 e 1000.