SlideShare une entreprise Scribd logo
1  sur  110
Android p/ Noobs
Levi Saturnino
O que vamos ver?
• O que é um programa?;
• Linguagem de Máquina vs Linguagem Humana;
• Meu primeiro programa, oh! que legal;
• if-else, switch, for e while
• Agora é tudo Orientado a Objeto
• “Array” o que é isso?
• COLLECTIONS mil vezes melhor do quer o Array!;
O que é um Programa?
• Um dos maiores benefícios da utilização de
computadores é a automatização de
processos realizados manualmente por
pessoas.
• Basicamente, os computadores são capazes
de executar instruções matemáticas mais
O que é um Programa?
• Essa simples capacidade permite que eles
resolvam problemas complexos de maneira
mais eficiente.
• Porém, eles não possuem a inteligência
necessária para definir quais instruções
devem ser executadas para resolver uma
O que é um Programa?
• Dessa forma, uma pessoa precisa definir um
roteiro (algoritmo) com a sequência de
comandos necessários para realizar uma
determinada tarefa e depois passar para um
computador executar esse roteiro.
• Formalmente, esses roteiros são chamado de
Linguagem de Máquina
• Os computadores só sabem ler instruções
escritas em linguagem de máquina. Uma
instrução escrita em linguagem de máquina é
uma sequência formada por “0” e “1” que
representa a ação que um computador deve
executar.
Linguagem de Máquina
• Teoricamente, as pessoas poderiam escrever os
programas diretamente em linguagem de máquina. Na
prática, ninguém faz isso pois é uma tarefa muito
complicada e demorada.
1110000111111011101000001110000000001011010000
0010011100110100100001101110000000000101001100
• Um arquivo contendo as instruções de um programa
em Linguagem de Máquina é chamado de executável.
Linguagem de Máquina
• Como vimos anteriormente, escrever um
programa em linguagem de máquina é
totalmente inviável para uma pessoa.
• Para resolver esse problema, surgiram as
linguagens de programação, que tentam se
aproximar das linguagens humanas. Confira
um trecho de um código escrito com a
Linguagem de Máquina
class OlaAndroid {
public static void main ( String [] args ) {
//imprimir na tela o nome Olá Android
System .out . println ("Olá Android ") ;
}
}
Compilador
Por um lado, os computadores processam apenas
instruções em linguagem de máquina.
Por outro lado, as pessoas definem as instruções em
linguagem de programação. Dessa forma, é
necessário traduzir o código escrito em linguagem
de programação por uma pessoa para um código em
linguagem de máquina para que um computador
Compilador
• Essa tradução é realizada por programas
especiais chamados compiladores.
Variáveis
• Basicamente, o que um programa faz é
manipular dados. Em geral, esses dados são
armazenados em variáveis localizadas na
memória RAM do computador.
• Uma variável pode guardar dados de vários
tipos: números, textos, booleanos (verdadeiro
ou falso), referências de objetos.
Variáveis
• Além disso, toda variável possui um nome que
é utilizado quando a informação dentro da
variável precisa ser manipulada pelo
programa.
Variáveis
• Na linguagem de programação Java, as
variáveis devem ser declaradas para que
possam ser utilizadas.
• A declaração de uma variável envolve definir
um nome único (identificador) dentro de um
escopo e um tipo de valor.
Variáveis
• As variáveis são acessadas pelos nomes e
armazenam valores compatíveis com o seu
tipo.
// Uma variável do tipo int chamada numeroDaConta .
int numeroDaConta ;
// Uma variável do tipo double chamada precoDoProduto .
double precoDoProduto ;
Tipos Primitivos de Variáveis
• A linguagem Java define um conjunto de tipos
básicos de dados que são chamados tipos
primitivos.
• A tabela abaixo mostra os oito tipos
primitivos da linguagem Java e os valores
compatíveis
Tabela Variáveis de Primitivos
CAST DAS PRIMITIVAS
● Duas formas de Cast: Explícito e Implícito ou automática
Vamos relembrar?
• Crie um programa que imprima o seu nome
ou mensagem na tela usando o print que é a
saída no java.
• depois vamos usar o class Scanner para
entrada de dados e implementar no mesmo
código.
Operadores
Para manipular os valores das variáveis de um
programa, devemos utilizar os operadores
oferecidos pela linguagem de programação
adotada. A linguagem Java possui diversos
operadores e os principais são categorizados
da seguinte forma:
Operadores
• Aritmético ( +, -, *, /, % )
• Atribuição ( =, +=, -=, *=, /=, %= )
• Relacional ( ==, !=, <, <=, >, >= )
• Lógico ( &&, || )
Aritmético
Os operadores aritméticos funcionam de forma muito semelhante aos operadores na matemá-
tica. Os operadores aritméticos são:
• Soma +
• Subtração -
• Multiplicação *
• Divisão /
• Módulo %
Aritmético
int umMaisUm = 1 + 1; // umMaisUm = 2
int tresVezesDois = 3 * 2; // tresVezesDois = 6
int quatroDivididoPor2 = 4 / 2; // quatroDivididoPor2 = 2
int seisModuloCinco = 6 % 5; // seisModuloCinco = 1
int x = 7;
x = x + 1 * 2; // x = 9
x = x - 3; // x = 6
x = x / (6 - 2 + (3*5) /(16 -1) ) ; // x = 2
Exemplo de código Aritmético
class TestaIdade {
public static void main(String[] args) {
// imprime a idade
// falar de Scanner para entrada de dados
int idade = 20;
System.out.println(idade);
// gera uma idade no ano seguinte
int idadeNoAnoQueVem;
idadeNoAnoQueVem = idade + 1;
// imprime a idade
System.out.println(idadeNoAnoQueVem);
}
}
Atribuição
Nas seções anteriores, já vimos um dos operadores de atribuição, o operador = (igual).
Os operadores de atribuição são:
• Simples =
• Incremental +=
• Decremental -=
• Multiplicativa *=
• Divisória /=
• Modular %=
Atribuição
int valor = 1; // valor = 1
valor += 2; // valor = 3
valor -= 1; // valor = 2
valor *= 6; // valor = 12
valor /= 3; // valor = 4
valor %= 3; // valor = 1
As instruções acima poderiam ser escritas de outra forma:
int valor = 1; // valor = 1
valor = valor +2; // valor = 3
valor = valor -1; // valor = 2
valor = valor * 6; // valor =12
valor = valor / 3; // valor = 4
valor = valor % 3; // valor = 1
Como podemos observar, os operadores de atribuição, com exceção do simples ( = ), reduzem a
quantidade de código escrito. Podemos dizer que esses operadores funcionam como “atalhos”
para as operações que utilizam os operadores aritméticos.
Relacional
Muitas vezes precisamos determinar a relação entre uma variável ou valor e outra outra variável
ou valor. Nessas situações, utilizamos os operadores relacionais. As operações realizadas com
os operadores relacionais devolvem valores do tipo primitivo boolean. Os operadores relacionais
são:
• Igualdade ==
• Diferença !=
• Menor <
• Menor ou igual <=
• Maior >
• Maior ou igual >=
Relacional
int valor = 2;
boolean t = false; // t = true
t = ( valor == 2); // t = false
t = ( valor != 2); // t = false
t = ( valor < 2); // t = true
t = ( valor <= 2); // t = true
t = ( valor > 1); // t = true
t = ( valor >= 1); // t = true
Lógico
A linguagem Java permite verificar duas ou mais condições através de operadores lógicos. Os
operadores lógicos devolvem valores do tipo primitivo boolean. Os operadores lógicos são
• “E” lógico &&
• “OU” lógico ||
Lógico
int valor = 30;
boolean teste =false ;
teste = valor < 40 && valor > 20; // teste = true
teste = valor < 40 && valor > 30;// teste = false
teste = valor > 30 || valor > 20; // teste = true
teste = valor > 30 || valor < 20; // teste = false
teste = valor < 50 && valor == 30; // teste = true
IF-ELSE
O comportamento de uma aplicação pode ser influenciado por valores definidos pelos usuários.
Por exemplo, considere um sistema de cadastro de produtos. Se um usuário tenta adicionar um
produto com preço negativo, a aplicação não deve cadastrar esse produto.
Caso contrário, se o preço não for negativo, o cadastro pode ser realizado normalmente.
Outro exemplo, quando o pagamento de um boleto é realizado em uma agência bancária, o sis-
tema do banco deve verificar a data de vencimento do boleto para aplicar ou não uma multa por
atraso.
IF-ELSE
Para verificar uma determinada condição e decidir qual bloco de instruções deve ser executado,
devemos aplicar o comando if.
if ( preco < 0) {
System . out . println ( " O preço do produto não pode ser negativo " ) ;
} else {
System . out . println ( " Produto cadastrado com sucesso " ) ;
}
IF-ELSE
int idade = 15;
boolean amigoDoDono = true;
if (idade < 18 && amigoDoDono == false) {
System.out.println("Não pode entrar");
}
else {
System.out.println("Pode entrar");
}
IF-ELSE
O comando if permite que valores booleanos sejam testados. Se o valor passado como parâ-
metro para o comando if for true , o bloco do if é executado. Caso contrário, o bloco do else é
executado.
O parâmetro passado para o comando if deve ser um valor booleano, caso contrário o código
não compila. O comando else e o seu bloco são opcionais.
WHILE
Em alguns casos, é necessário repetir um trecho de código diversas vezes. Suponha que seja
necessário imprimir 10 vezes na tela a mensagem: “Bom Dia”. Isso poderia ser realizado colocando
10 linhas iguais a essa no código fonte:
System.out.println ( " Bom Dia " ) ;
Se ao invés de 10 vezes fosse necessário imprimir 100 vezes, já seriam 100 linhas iguais no
código
fonte. É muito trabalhoso utilizar essa abordagem para solucionar esse problema.
WHILE
Através do comando while, é possível definir quantas vezes um determinado trecho de código
deve ser executado pelo computador.
int contador = 0;
while ( contador < 100) {
System . out . println ( " Bom Dia " ) ;
contador ++;
}
WHILE
A variável contador indica o número de vezes que a mensagem “Bom Dia” foi impressa na tela.
O operador ++ incrementa a variável contador a cada rodada.
O parâmetro do comando while tem que ser um valor booleano. Caso contrário, ocorrerá um
erro de compilação.
WHILE
int idade = 15;
while (idade < 18) {
System.out.println(idade);
idade = idade + 1;
}
FOR
O comando for é análogo ao while . A diferença entre esses dois comandos é que o for recebe
três argumentos.
for (inicializacao; condicao; incremento) {
codigo;
}
Ex.
for ( int contador = 0; contador < 100; contador ++) {
System.out.println ( " Bom Dia " ) ;
}
exercicio
1) entre com um numero double e imprima um numero inteiro
2) Entrar com dois números e imprimir o menor número (suponha números
diferentes).
3) Imprima todos os números de 150 a 300.
4) Imprima a soma de 1 até 1000.
5) Imprima todos os múltiplos de 3, entre 1 e 100.
ORIENTAÇÃO A OBJETOS
ORIENTAÇÃO A OBJETOS
Orientação a objetos é uma maneira de programar que ajuda na organização e resolve muitos
problemas enfrentados pela programação procedural.
Criando um tipo
Considere um programa para um banco, é bem fácil perceber que uma entidade extremamente
importante para o nosso sistema é a conta.
Nossa ideia aqui é generalizarmos alguma informação, juntamente com funcionalidades que toda
conta deve ter.
O que toda conta tem e é importante para nós?
• número da conta
• nome do dono da conta
• saldo
• limite
Criando um tipo
O que toda conta faz e é importante para nós? Isto é, o que gostaríamos de “pedir à conta"?
• saca uma quantidade x
• deposita uma quantidade x
• imprime o nome do dono da conta
• devolve o saldo atual
• transfere uma quantidade x para uma outra conta y
• devolve o tipo de conta
Com isso, temos o projeto de uma conta bancária. Podemos pegar esse projeto e acessar seu
saldo? Não. O que temos ainda é o projeto. Antes, precisamos construir uma conta, para poder
acessar o que ela tem, e pedir a ela que faça algo.
Uma classe em Java
Vamos começar apenas com o que uma Conta tem, e não com o que ela faz (veremos logo em
seguida). Um tipo desses, como o especificado de Conta acima, pode ser facilmente traduzido
para Java:
class Conta {
int numero; // atribuido ou estado class
String dono;
double saldo;
double limite;
// ..
}
Criando e usando um objeto
Já temos uma classe em Java que especifica o que todo objeto dessa classe deve ter.
Mas como usá-la? Além dessa classe, ainda teremos o Programa.java e a partir dele é que
vamos utilizar a classe Conta .
Para criar (construir, instanciar) uma Conta , basta usar a palavra chave new . Devemos utilizar
também os parênteses, que descobriremos o que fazem exatamente em um capítulo posterior:
class ContaTeste {
public static void main(String[] args) {
new Conta();
}
}
Criando e usando um objeto
Bem, o código cria um objeto do tipo Conta , mas como acessar esse objeto que foi criado?
Precisamos ter alguma forma de nos referenciarmos a esse objeto. Precisamos de uma variável:
class ContaTeste {
public static void main(String[] args) {
Conta minhaConta;
minhaConta = new Conta();
}
}
Criando e usando um objeto
Pode parecer estranho escrevermos duas vezes Conta : uma vez na declaração da variável e outra
vez no uso
do new . Mas há um motivo, que em breve entenderemos.
Através da variável minhaConta , podemos acessar o objeto recém criado para alterar seu dono ,
seu saldo , etc
Criando e usando um objeto
class Programa {
public static void main(String[] args) {
Conta minhaConta;
minhaConta = new Conta();
minhaConta.dono = "Levi";
minhaConta.saldo = 1000.0;
System.out.println("Saldo atual: " + minhaConta.saldo);
}
}
É importante fixar que o ponto foi utilizado para acessar algo em minhaConta . A minhaConta
pertence ao Levi, e tem saldo de mil reais.
Métodos
Dentro da classe, também declararemos o que cada conta faz e como isto é feito - os
comportamentos que
cada classe tem, isto é, o que ela faz. Por exemplo, de que maneira que uma Conta saca dinheiro?
Especifica-
remos isso dentro da própria classe Conta , e não em um local desatrelado das informações da
própria Conta.
É por isso que essas “funções” são chamadas de métodos. Pois é a maneira de fazer uma
operação com um
objeto.
Queremos criar um método que saca uma determinada quantidade e não devolve nenhuma
informação
para quem acionar esse método:
Métodos
class Conta {
double salario;
// ... outros atributos ...
void saca(double quantidade) {
double novoSaldo = this.saldo - quantidade;
this.saldo = novoSaldo;
}
}
A palavra chave void diz que, quando você pedir para a conta sacar uma quantia, nenhuma
informação será
enviada de volta a quem pediu.
Métodos
Da mesma forma, temos o método para depositar alguma quantia:
void deposita(double quantidade) {
this.saldo += quantidade;
}
Testa os Métodos
class TestaAlgunsMetodos {
public static void main(String[] args) {
// criando a conta
Conta minhaConta;
minhaConta = new Conta();
// alterando os valores de minhaConta
minhaConta.dono = "Duke";
minhaConta.saldo = 1000;
// saca 200 reais
minhaConta.saca(200);
// deposita 500 reais
minhaConta.deposita(500);
System.out.println(minhaConta.saldo);
}
}
Métodos com retorno
Um método sempre tem que definir o que retorna, nem que defina que não há retorno, como nos
exemplos anteriores onde estávamos usando o void .
Um método pode retornar um valor para o código que o chamou. No caso do nosso método saca ,
podemos devolver um valor booleano indicando se a operação foi bem sucedida.
Métodos com retorno
class Conta {
// ... outros métodos e atributos ...
boolean saca(double valor) {
if (this.saldo < valor) {
return false;
}
else {
this.saldo = this.saldo - valor;
return true;
}
}
}
Métodos com retorno
A declaração do método mudou! O método saca não tem void na frente. Isto quer dizer que,
quando é
acessado, ele devolve algum tipo de informação. No caso, um boolean . A palavra chave return
indica que o
método vai terminar ali, retornando tal informação.
imagem
Exemplo de uso:
minhaConta.saldo = 1000;
boolean consegui = minhaConta.saca(2000);
if (consegui) {
System.out.println("Consegui sacar");
} else {
System.out.println("Não consegui sacar");
}
Ou então, posso eliminar a variável temporária, se desejado:
minhaConta.saldo = 1000;
if (minhaConta.saca(2000)) {
System.out.println("Consegui sacar");
} else {
System.out.println("Não consegui sacar");
}
O método transfere()
se quisermos ter um método que transfere dinheiro entre duas contas?
Podemos ficar tentados a criar um método que recebe dois parâmetros: conta1 e conta2 do tipo
Conta . Mas cuidado: assim estamos pensando de maneira procedural.
class Conta {
// atributos e métodos...
void transfere(Conta destino, double valor) {
this.saldo = this.saldo - valor;
destino.saldo = destino.saldo + valor;
}
}
O método transfere()
Para deixar o código mais robusto, poderíamos verificar se a conta possui a quantidade a ser
transferida disponível. Para ficar ainda mais interessante, você pode chamar os métodos deposita
e saca já existentes para fazer essa tarefa:
O método transfere()
class Conta {
// atributos e métodos...
boolean transfere(Conta destino, double valor) {
boolean retirou = this.saca(valor);
if (retirou == false) {
// não deu pra sacar!
return false;
}
else {
destino.deposita(valor);
return true;
}
}
}
Continuando com atributos
As variáveis do tipo atributo, diferentemente das variáveis temporárias (declaradas dentro de um
método), recebem um valor padrão. No caso numérico, valem 0, no caso de boolean , valem false
. Você também pode dar valores default, como segue
class Conta {
int numero = 1234;
String dono = "Duke";
String cpf = "123.456.789-10";
double saldo = 1000;
double limite = 1000;
}
Nesse caso, quando você criar uma conta, seus atributos já estão “populados” com esses valores
colocados.
Continuando com atributos
As variáveis do tipo atributo, diferentemente das variáveis temporárias (declaradas dentro de um
método), recebem um valor padrão. No caso numérico, valem 0, no caso de boolean , valem false
. Você também pode dar valores default, como segue
class Conta {
int numero = 1234;
String dono = "Duke";
String cpf = "123.456.789-10";
double saldo = 1000;
double limite = 1000;
}
Continuando com atributos
Imagine que comecemos a aumentar nossa classe Conta e adicionar nome, sobrenome e cpf do
cliente dono da conta. Começaríamos a ter muitos atributos... e, se você pensar direito, uma
Conta não tem nome , nem sobrenome nem cpf , quem tem esses atributos é um Cliente . Então
podemos criar uma nova classe e fazer uma composição
Seus atributos também podem ser referências para outras classes. Suponha a seguinte classe
Cliente :
class Cliente {
String nome;
String sobrenome;
String cpf;
}
Continuando com atributos
class Conta {
int numero;
double saldo;
double limite;
Cliente titular;
...
}
// depois já instanciar o Cliente
Cliente titular = new Cliente()
Continuando com atributos
E dentro do main da classe de teste:
class Teste {
public static void main(String[] args) {
Conta minhaConta = new Conta();
Cliente c = new Cliente();
minhaConta.titular = c;
// ...
}
}
Continuando com atributos
Aqui, simplesmente houve uma atribuição. O valor da variável c é copiado para o atributo titular do
objeto ao qual minhaConta se refere. Em outras palavras, minhaConta tem uma referência ao
mesmo Cliente que c se refere, e pode ser acessado através de minhaConta.titular
Você pode realmente navegar sobre toda essa estrutura de informação, sempre usando o ponto:
Cliente clienteDaMinhaConta = minhaConta.titular;
clienteDaMinhaConta.nome = "Duke";
Ou ainda, pode fazer isso de uma forma mais direta e até mais elegante:
minhaConta.titular.nome = "Duke";
Continuando com atributos
Mas, e se dentro do meu código eu não desse new em Cliente e tentasse acessá-lo diretamente?
class Teste {
public static void main(String[] args) {
Conta minhaConta = new Conta();
minhaConta.titular.nome = "Manoel";
// ...
}
}
Quando damos new em um objeto, ele o inicializa com seus valores default, 0 para números, false
para boolean e null para referências. null é uma palavra chave em java, que indica uma
referência para nenhum objeto.
Continuando com atributos
Se, em algum caso, você tentar acessar um atributo ou método de alguém que está se
referenciando para null , você receberá um erro durante a execução ( NullPointerException , que
veremos mais à frente). Da para perceber, então, que o new não traz um efeito cascata, a menos
que você dê um valor default (ou use construtores, que também veremos mais a frente):
class Conta {
int numero;
double saldo;
double limite;
Cliente titular = new Cliente();
// quando chamarem new Conta, havera um new Cliente para ele.
}
Continuando com atributos
Com esse código, toda nova Conta criada já terá um novo Cliente associado, sem necessidade de
instanciá-lo logo em seguida da instanciação de uma Conta . Qual alternativa você deve usar?
Depende do caso: paratoda nova Conta você precisa de um novo Cliente ? É essa pergunta que
deve ser respondida. Nesse nossocaso a resposta é não, mas depende do nosso problema.
Um pouco de arrays
Dentro de um bloco, podemos declarar diversas variáveis e usá-las:
int idade1;
int idade2;
int idade3;
int idade4;
Isso pode se tornar um problema quando precisamos mudar a quantidade de variáveis a serem
declaradas de acordo com um parâmetro. Esse parâmetro pode variar, como por exemplo, a
quantidade de número contidos num bilhete de loteria. Um jogo simples possui 6 números, mas
podemos comprar um bilhete mais caro, com 7 números ou mais.
Para facilitar esse tipo de caso podemos declarar um vetor (array) de inteiros:
Um pouco de arrays
int[] idades;
O int[] é um tipo. Uma array é sempre um objeto, portanto, a variável idades é uma referência.
Vamos precisar criar um objeto para poder usar a array. Como criamos o objeto-array?
idades = new int[10];
O que fizemos foi criar uma array de int de 10 posições e atribuir o endereço no qual ela foi criada.
Podemos ainda acessar as posições do array:
idades[5] = 10;
Um pouco de arrays
O código acima altera a sexta posição do array. No Java, os índices do array vão de 0 a n-1, onde
n é o tamanhom dado no momento em que você criou o array. Se você tentar acessar uma
posição fora desse alcance, um erro ocorrerá durante a execução.
Um pouco de arrays
No caso do bilhete de loteria, podemos utilizar o mesmo recurso. Mais ainda, a quantidade de
números do nosso bilhete pode ser definido por uma variável. Considere que n indica quantos
números nosso bilhete terá, podemos então fazer:
int numerosDoBilhete[] = new int[n];
E assim podemos acessar e modificar os inteiros com índice de 0 a n-1 .
Arrays de referências
Arrays de referências
É comum ouvirmos “array de objetos”. Porém quando criamos uma array de alguma classe, ela
possui refe-rências. O objeto, como sempre, está na memória principal e, na sua array, só ficam
guardadas as referências(endereços).
Conta[] minhasContas;
minhasContas = new Conta[10];
Arrays de referências
Quantas contas foram criadas aqui? Na verdade, nenhuma. Foram criados 10 espaços que você
pode utilizar para guardar uma referência a uma Conta. Por enquanto, eles se referenciam para
lugar nenhum ( null ). Se você tentar:
System.out.println(minhasContas[0].saldo);
Um erro durante a execução ocorrerá! Pois, na primeira posição da array, não há uma referência
para uma conta, nem para lugar nenhum. Você deve popular sua array antes.
Conta contaNova = new Conta();
contaNova.saldo = 1000.0;
minhasContas[0] = contaNova;
Ou você pode fazer isso diretamente:
minhasContas[1] = new Conta();
minhasContas[1].saldo = 3200.0;
Uma array de tipos primitivos guarda valores, uma array de objetos guarda referências.
Percorrendo uma array
Percorrer uma array é muito simples quando fomos nós que a criamos:
public static void main(String args[]) {
int[] idades = new int[10];
for (int i = 0; i < 10; i++) {
idades[i] = i * 10;
}
for (int i = 0; i < 10; i++) {
System.out.println(idades[i]);
}
}
Percorrendo uma array
Porém, em muitos casos, recebemos uma array como argumento em um método:
void imprimeArray(int[] array) {
// não compila!!
for (int i = 0; i < ????; i++) {
System.out.println(array[i]);
}
}
Percorrendo uma array
Até onde o for deve ir? Toda array em Java tem um atributo que se chama length , e você pode
acessá-lo
para saber o tamanho do array ao qual você está se referenciando naquele momento:
void imprimeArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
Percorrendo uma array
Arrays não podem mudar de tamanho
A partir do momento que uma array foi criada, ela não pode mudar de tamanho.
Se você precisar de mais espaço, será necessário criar uma nova array e, antes de se referir ela,
copie os elementos da array velha.
Percorrendo uma array no Java 5.0
O Java 5.0 traz uma nova sintaxe para percorremos arrays (e coleções, que veremos mais a
frente).
No caso de você não ter necessidade de manter uma variável com o índice que indica a posição do
elemento
no vetor (que é uma grande parte dos casos), podemos usar o enhanced-for.
class AlgumaClasse{
public static void main(String args[]) {
Percorrendo uma array no Java 5.0
int[] idades = new int[10];
for (int i = 0; i < 10; i++) {
idades[i] = i * 10;
}
// imprimindo toda a array
for (int x : idades) {
System.out.println(x);
}
}
}
Percorrendo uma array no Java 5.0
ão precisamos mais do length para percorrer matrizes cujo tamanho não conhecemos:
class AlgumaClasse {
void imprimeArray(int[] array) {
for (int x : array) {
System.out.println(x);
}
}
}
O mesmo é válido para arrays de referências. Esse for nada mais é que um truque de compilação
para facilitar essa tarefa de percorrer arrays e torná-la mais legível.
Herança, reescrita e polimorfismo
exercicio
Um domínio é composto pelas entidades, informações e processos relacionados a um determi-
nado contexto. Uma aplicação pode ser desenvolvida para automatizar ou tornar factível as tarefas
de um domínio. Portanto, uma aplicação é basicamente o “reflexo” de um domínio.
Para exemplificar, suponha que estamos interessados em desenvolver uma aplicação para facili-
tar as tarefas do cotidiano de um banco. Podemos identificar clientes, funcionários, agências e
contas como entidades desse domínio. Assim como podemos identificar as informações e os
processos
relacionados a essas entidades.
Introdução - Android
Os aplicativos Android são desenvolvidos com JAVA - a linguagem de
programação mais usada do mundo.
Essa linguagem foi uma escolha lógica para a plataforma Android, porque é
poderosa, gratuita e de código-fonte aberto.
O java é usado para desenvolver aplicativos empresarias de larga escala,
melhorar a funcionalidade de servidores Web, fornecer aplicativos para
aparelhos de consumidor (por exemplo, telefones celulares, pagers e
assistente digitais pessoais) e para muitos outros propostos.
O java permite desenvolver aplicativos que são executados em uma variedade
de dispositivos, sem nenhum código especifico para plataforma.
Introdução - Android
Os programadores java experientes pode se aprofundar rapidamente no
desenvolvimento com Android, usando as APIs (intefaces de programa de
aplicativo) Android e outras disponíveis de terceiros.
O grau de abertura da plataforma estimula a rápida inovação. O Android esta
disponível em dispositivos de dezenas de fabricantes de equipamento originais
(OEMs - original equipement manufactres) em 48 países, por meio de 59
empresas de telefonia. A intensa concorrência entre os OEMs e as empresas
de telefonia beneficia os clientes.
A linguagem java e orientada a objetos e tem acesso a poderosas bibliotecas
de classe que ajudam a desenvolver aplicativos rapidamente. A programação
de interfaces gráficas do usuário com Java é baseada em eventos.
Dificuldades em aprender programação
Android
Para ser um programador, a pessoa precisa possuir (ou desenvolver)
algumas características:
- gostar de resolver problemas
- capacidade de pensamento lógico abstrato
- capacidade de planejamento
- conhecer lógica e lógica de programação
- conhecer a sintaxe e semântica de alguma linguagem de programação
- conhecer estrutura de dados
- conhecer banco de dados
- conhecer a linguagem SQL
- conhecer o equipamento em que o programa vai rodar
- saber pesquisar no Google
- etc...
Dificuldades em aprender programação
Android
E algumas para o Android:
- conhecer programação Java
- conhecer programação orientada a objetos
- conhecer programação orientada a eventos
- conhecer programação concorrente
- conhecer a plataforma Android
- conhecer a filosofia da plataforma (arquitetura)
- conhecer os componentes básicos de uma aplicação (activities,
services, broadcastReceivers e content providers)
- conhecer os recursos existentes para implementar os componentes
Dificuldades em aprender programação
Android
Para se programar Android, normalmente é requerido que o programador
tenha essas características de imediato, ou seja, fica difícil para um iniciante.
Por isso, eu sempre recomendo usar um livro como guia para o prendizado.
A falta de alguma competência se deve na maioria das vezes à pressa em
iniciar algum projeto. O novato salta alguns tópicos e vai direto para a
codificação.
Aí, com certeza, vai encontrar diversos obstáculos. Que vão desde
problemas com lógica, desconhecimento da linguagem Java, conceitos de
classes e objetos, programação concorrente, etc. Ou seja, problemas de
Dificuldades em aprender programação
Android
formação básica, que todo candidato a programador Android, já deveria ter
superado, chegando aos problemas com a plataforma Android propriamente
dita.
Neste ponto, entram além dos novatos, os que já programam uma outra
linguagem. Na grande maioria das vezes, o tempo gasto com problemas
simples, supera em muito o tempo para adquirir o conhecimento necessário,
se o aprendizado fosse planejado.
Dificuldades em aprender programação
Android
A recomendação para melhorar o rendimento nessa fase varia de acordo
com o perfil de cada pessoa, obviamente, mas pode ser resumida de uma
maneira geral da seguinte forma: faça uma avaliação pessoal das suas
necessidades de aprendizado e monte um plano de estudos.
Como ser um bom programador Android
Você quer ser um bom programador Android? Então desenvolva as seguintes características
ao máximo:
● Paixão por programação
● Gostar muito de ler
● Gostar de aprender
● Curiosidade
● Autodidata
● Inteligência
● Memória
● Concentração
● Paciência
● Humildade
● Ensinar
● Gostar de desafios
● Organização
● Planejar
● Projetar
● Algoritmos
● Estrutura de dados
● Design Patterns
● Boas Práticas
● Conhecer os recursos da linguagem
Java e as bibliotecas do Android
● Impaciência
● Ego
● Precisão
● Cumpridor de prazos
● disponibilidade de tempo
● Flexibilidade
● Desconfiometro
● Dedicação e perseverança
● Solucionador de problemas
Site p/ discussão
● INGLÊS
● Android Discuss - android-discuss-subscribe@googlegroups.com
● Stack Overflow - www.stackoverflow.com/questions/tagged/android (recomendo)
● Android Developers - subscribe@googlegroups.com
● Android Forums - www.androidforums.com
● BRASIL
● Portal Android - http://www.portalandroid.org/comunidade/ (recomendo)
● GUJ - http://www.guj.com.br/tag/android (fórum novo)
● Android Brasil - https://groups.google.com/forum/#!forum/androidbrasil (usuário)
● Android Dev Brasil - https://groups.google.com/forum/#!forum/androidbrasil-dev
(recomendo)
Por que desenvolver para o
Android?
A pergunta real é: “por que não desenvolver
para o Android?”. se você quiser que seu
aplicativo esteja disponível para milhões de
usuário em todo o mundo, se deseja publicar
aplicativos assim que terminar de programar e
testá-los, ou se quise desenvolver em um
plataforma aberta, ja tem a sua resposta.
Participação no mercado
Como desenvolvedor, você tem uma
oportunidade de criar aplicativos para um
mercado bem novo, e próspero. Muitos
analistas acreditam que o numero de
dipositivos Android em uso é maior que o
numero de dispositivo Android em uso é maior
que o numero de dispositivos em todos os
outros sistemas operacioais moveis
Os usuários não têm que pesquisar na internet
para encontrar um aplicativo para instalar, eles
podem simplesmente ir para a Google play
Store, pré-instalada em seus dispositivos, e ter
acesso a todos os seus aplicativos. Como a
Google play store vem pré-instalada na maioria
dos aplicativos Android, em geral, os usuários
pesquisam-na para todas as suas
Colocação no Mercado
Por causa de todas as interfaces de
programação do aplicativo(APIs) que vêm no
Android, você pode desenvolver facilmente
aplicativos cheios de recursos em um intervalo
de tempo relativamente curto. depois de se
registrar como desenvolvedor na Google play,
simplesmente faça upload de seus aplicativos
e os publique. Diferentemente de outros
Plataforma aberta
O sistema opercional Android é uma
plataforma aberta: qualquer fabricante ou
provedor de hardware pode fabricar ou vender
o dispoistivos Android.
Como voce pode imaginar, a abertura do
Android permituiu conqueistar uma
participação no mercado rapidamente. Sinta-se
à vontade paar examinar o codigo-fonte do
As raízes do Android
Embora a mairoa das pessoas não saiba, o
Google não iniciou o projeto Android. A versão
inciial do sitema operacional Android foi criada
pela Android Inc., uma pequena empersa
startup no Vale do Silício que foi comprada
pela Google em julho de 2005.
O básico do desenvolvimento
Android
Ainda bemque voce não tem que ser um
membro do Mensa para desenvolver
aplicativos Android! Desenvolver no Android é
simples qproque sua linguagem padrão é o
Java. Embora escrever aplicativos android seja
bem fácil, desenvolver sozinho pode ser um
tarefa difícil.
O básico do desenvolvimento
Android
Embora o sitema operacional Android consita
basicamente em código Java, pequenas partes
da estrutura não esto incluídas. O android usa
a linguagem Xl, assim como scripts Apache Ant
básicos para cosntruir os processos. Você
precisa cimentar sua compreensão básica do
XML.
Java: sua linguagem de
programação android
Os aplicativos Android são escritos em Java -
não a versão completa do Java, que é familiar
para os desenvolvedores que usam a
plataforma Java Enterprise Edittion(J2EE), mas
um subconjunto das bibliotecas Java que são
especificas do Android. Esse subconjunto do
Java excluior as classes que não são
adequadas para os dispostivos moveis. Se
Android dentro de você
Torna-se um desenvolvedor aAndroid não é
uma tarefa complicada. E provavelmente é
mais simples do que você pensa. Para ver do
que se trata, faça a si mesmo estas perguntas:
Android dentro de você
Eu quero desenvolver aplicativos Android?
Eu gosto das ferramentas de desenvolvimento
de software gratuitas?
Eu gosto de não pagar taxas de
desenvolvimento?
Eu tenho um computador no qual desenvolver?
Android dentro de você
Se você respondeu sim a todas as perguntas,
hoje é seu dia de sorte, você está pronto para
se tornar um desnevolvedorAndroid. Vocẽ
pode estar imaginado o que queremos dizer
com não pagar taxas de desevnvoment. voce
esta lendo a pergunta corretamente: voce não
pagara taxas para desenvelver os aplicativos
ANdroid.
Sempre há uma condição, certo? você pode
desenvolver gratuitamente o que bem
entender, mas assim que quiser publica seu
apliucativo na Google play, o local onde voce
faz upload e publica seus aplicativos,,
precisará pagar uma pequena taxa de registro
nominal. o valor da taxa custa US$ 25,00
dolares.
Versões do Android

Contenu connexe

Tendances

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çãorodfernandes
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Gercélia Ramos
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Eder Samaniego
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosRegis Magalhães
 
Conceitos e técnicas de programação lista de exercícios i
Conceitos e técnicas de programação lista de exercícios iConceitos e técnicas de programação lista de exercícios i
Conceitos e técnicas de programação lista de exercícios iRobson Ferreira
 
Action script1 apresentação2
Action script1 apresentação2Action script1 apresentação2
Action script1 apresentação2Jorge Louro
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 
Aula 04 Estruturas de repetição 02 - Para Faça
Aula 04  Estruturas de repetição 02 - Para FaçaAula 04  Estruturas de repetição 02 - Para Faça
Aula 04 Estruturas de repetição 02 - Para FaçaEder Samaniego
 
Cet P Sistemas Linguagem C Introducao
Cet P Sistemas Linguagem C IntroducaoCet P Sistemas Linguagem C Introducao
Cet P Sistemas Linguagem C Introducaommind
 
Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos João moreira
 
Curso De Algoritmo Aula 9
Curso De Algoritmo   Aula 9Curso De Algoritmo   Aula 9
Curso De Algoritmo Aula 9Felipe Santos
 
Videoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programaçãoVideoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programaçãoaldoirjava
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresWillians Miyabara
 

Tendances (20)

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
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)
 
C++
C++C++
C++
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 Subalgoritmos
 
Conceitos e técnicas de programação lista de exercícios i
Conceitos e técnicas de programação lista de exercícios iConceitos e técnicas de programação lista de exercícios i
Conceitos e técnicas de programação lista de exercícios i
 
Action script1 apresentação2
Action script1 apresentação2Action script1 apresentação2
Action script1 apresentação2
 
Algoritmos Aula 08
Algoritmos Aula 08Algoritmos Aula 08
Algoritmos Aula 08
 
Fascículo1java
Fascículo1javaFascículo1java
Fascículo1java
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Aula 04 Estruturas de repetição 02 - Para Faça
Aula 04  Estruturas de repetição 02 - Para FaçaAula 04  Estruturas de repetição 02 - Para Faça
Aula 04 Estruturas de repetição 02 - Para Faça
 
Lógica De Programação
Lógica De ProgramaçãoLógica De Programação
Lógica De Programação
 
Cet P Sistemas Linguagem C Introducao
Cet P Sistemas Linguagem C IntroducaoCet P Sistemas Linguagem C Introducao
Cet P Sistemas Linguagem C Introducao
 
Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos
 
Curso De Algoritmo Aula 9
Curso De Algoritmo   Aula 9Curso De Algoritmo   Aula 9
Curso De Algoritmo Aula 9
 
Aula 3 algoritmos
Aula 3   algoritmosAula 3   algoritmos
Aula 3 algoritmos
 
Videoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programaçãoVideoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programação
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetores
 

En vedette

Minicurso de Android Básico I - Dia 1
Minicurso de Android Básico I - Dia 1Minicurso de Android Básico I - Dia 1
Minicurso de Android Básico I - Dia 1Thales Levi
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4Jose Berardo
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldMarcio Palheta
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - BásicoHugoDalevedove
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma AndroidNatanael Fonseca
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaNelson Glauber Leal
 

En vedette (11)

Minicurso de Android Básico I - Dia 1
Minicurso de Android Básico I - Dia 1Minicurso de Android Básico I - Dia 1
Minicurso de Android Básico I - Dia 1
 
Curso Android Básico
Curso Android BásicoCurso Android Básico
Curso Android Básico
 
Android
AndroidAndroid
Android
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorld
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - Básico
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
 
Sistema Operacional Android
Sistema Operacional AndroidSistema Operacional Android
Sistema Operacional Android
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
 
Android Aula 1
Android Aula 1Android Aula 1
Android Aula 1
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certa
 

Similaire à Google android p/ Noobs - SUPER 2014 - UPE

Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoJose Augusto Cintra
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturadodasko
 
Apostila de algoritimos
Apostila de algoritimosApostila de algoritimos
Apostila de algoritimosCleide Soares
 
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Alex Camargo
 
Algorítmo estruturado
Algorítmo estruturadoAlgorítmo estruturado
Algorítmo estruturadoNaldo Falaschi
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxPaulo Cardoso
 
Alg aula 03 - construcao algoritmos2 tp1
Alg   aula 03 - construcao algoritmos2 tp1Alg   aula 03 - construcao algoritmos2 tp1
Alg aula 03 - construcao algoritmos2 tp1Thalles Anderson
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosjormad
 
1 - Introdução à Lógica de Programação - Comandos Básicos.pptx
1 - Introdução à Lógica de Programação - Comandos Básicos.pptx1 - Introdução à Lógica de Programação - Comandos Básicos.pptx
1 - Introdução à Lógica de Programação - Comandos Básicos.pptxJONATHANSILVADEOLIVE
 
Prática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energiaPrática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energiaHeitor Galvão
 
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.pptINFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.pptPatricaNascimento1
 

Similaire à Google android p/ Noobs - SUPER 2014 - UPE (20)

Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 
Logica de Programacao
Logica de ProgramacaoLogica de Programacao
Logica de Programacao
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturado
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
Aula 1 2
Aula 1 2Aula 1 2
Aula 1 2
 
Apostila de algoritimos
Apostila de algoritimosApostila de algoritimos
Apostila de algoritimos
 
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
 
Cap07
Cap07Cap07
Cap07
 
Cap07
Cap07Cap07
Cap07
 
Lógica de programação
Lógica de programaçãoLógica de programação
Lógica de programação
 
Algorítmo estruturado
Algorítmo estruturadoAlgorítmo estruturado
Algorítmo estruturado
 
Java - Primeiros passos
Java - Primeiros passosJava - Primeiros passos
Java - Primeiros passos
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptx
 
Alg aula 03 - construcao algoritmos2 tp1
Alg   aula 03 - construcao algoritmos2 tp1Alg   aula 03 - construcao algoritmos2 tp1
Alg aula 03 - construcao algoritmos2 tp1
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
1 - Introdução à Lógica de Programação - Comandos Básicos.pptx
1 - Introdução à Lógica de Programação - Comandos Básicos.pptx1 - Introdução à Lógica de Programação - Comandos Básicos.pptx
1 - Introdução à Lógica de Programação - Comandos Básicos.pptx
 
Prática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energiaPrática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energia
 
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.pptINFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt
INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt
 

Google android p/ Noobs - SUPER 2014 - UPE

  • 2. O que vamos ver? • O que é um programa?; • Linguagem de Máquina vs Linguagem Humana; • Meu primeiro programa, oh! que legal; • if-else, switch, for e while • Agora é tudo Orientado a Objeto • “Array” o que é isso? • COLLECTIONS mil vezes melhor do quer o Array!;
  • 3. O que é um Programa? • Um dos maiores benefícios da utilização de computadores é a automatização de processos realizados manualmente por pessoas. • Basicamente, os computadores são capazes de executar instruções matemáticas mais
  • 4. O que é um Programa? • Essa simples capacidade permite que eles resolvam problemas complexos de maneira mais eficiente. • Porém, eles não possuem a inteligência necessária para definir quais instruções devem ser executadas para resolver uma
  • 5. O que é um Programa? • Dessa forma, uma pessoa precisa definir um roteiro (algoritmo) com a sequência de comandos necessários para realizar uma determinada tarefa e depois passar para um computador executar esse roteiro. • Formalmente, esses roteiros são chamado de
  • 6. Linguagem de Máquina • Os computadores só sabem ler instruções escritas em linguagem de máquina. Uma instrução escrita em linguagem de máquina é uma sequência formada por “0” e “1” que representa a ação que um computador deve executar.
  • 7. Linguagem de Máquina • Teoricamente, as pessoas poderiam escrever os programas diretamente em linguagem de máquina. Na prática, ninguém faz isso pois é uma tarefa muito complicada e demorada. 1110000111111011101000001110000000001011010000 0010011100110100100001101110000000000101001100 • Um arquivo contendo as instruções de um programa em Linguagem de Máquina é chamado de executável.
  • 8. Linguagem de Máquina • Como vimos anteriormente, escrever um programa em linguagem de máquina é totalmente inviável para uma pessoa. • Para resolver esse problema, surgiram as linguagens de programação, que tentam se aproximar das linguagens humanas. Confira um trecho de um código escrito com a
  • 9. Linguagem de Máquina class OlaAndroid { public static void main ( String [] args ) { //imprimir na tela o nome Olá Android System .out . println ("Olá Android ") ; } }
  • 10. Compilador Por um lado, os computadores processam apenas instruções em linguagem de máquina. Por outro lado, as pessoas definem as instruções em linguagem de programação. Dessa forma, é necessário traduzir o código escrito em linguagem de programação por uma pessoa para um código em linguagem de máquina para que um computador
  • 11. Compilador • Essa tradução é realizada por programas especiais chamados compiladores.
  • 12. Variáveis • Basicamente, o que um programa faz é manipular dados. Em geral, esses dados são armazenados em variáveis localizadas na memória RAM do computador. • Uma variável pode guardar dados de vários tipos: números, textos, booleanos (verdadeiro ou falso), referências de objetos.
  • 13. Variáveis • Além disso, toda variável possui um nome que é utilizado quando a informação dentro da variável precisa ser manipulada pelo programa.
  • 14. Variáveis • Na linguagem de programação Java, as variáveis devem ser declaradas para que possam ser utilizadas. • A declaração de uma variável envolve definir um nome único (identificador) dentro de um escopo e um tipo de valor.
  • 15. Variáveis • As variáveis são acessadas pelos nomes e armazenam valores compatíveis com o seu tipo. // Uma variável do tipo int chamada numeroDaConta . int numeroDaConta ; // Uma variável do tipo double chamada precoDoProduto . double precoDoProduto ;
  • 16. Tipos Primitivos de Variáveis • A linguagem Java define um conjunto de tipos básicos de dados que são chamados tipos primitivos. • A tabela abaixo mostra os oito tipos primitivos da linguagem Java e os valores compatíveis
  • 17. Tabela Variáveis de Primitivos
  • 18. CAST DAS PRIMITIVAS ● Duas formas de Cast: Explícito e Implícito ou automática
  • 19. Vamos relembrar? • Crie um programa que imprima o seu nome ou mensagem na tela usando o print que é a saída no java. • depois vamos usar o class Scanner para entrada de dados e implementar no mesmo código.
  • 20. Operadores Para manipular os valores das variáveis de um programa, devemos utilizar os operadores oferecidos pela linguagem de programação adotada. A linguagem Java possui diversos operadores e os principais são categorizados da seguinte forma:
  • 21. Operadores • Aritmético ( +, -, *, /, % ) • Atribuição ( =, +=, -=, *=, /=, %= ) • Relacional ( ==, !=, <, <=, >, >= ) • Lógico ( &&, || )
  • 22. Aritmético Os operadores aritméticos funcionam de forma muito semelhante aos operadores na matemá- tica. Os operadores aritméticos são: • Soma + • Subtração - • Multiplicação * • Divisão / • Módulo %
  • 23. Aritmético int umMaisUm = 1 + 1; // umMaisUm = 2 int tresVezesDois = 3 * 2; // tresVezesDois = 6 int quatroDivididoPor2 = 4 / 2; // quatroDivididoPor2 = 2 int seisModuloCinco = 6 % 5; // seisModuloCinco = 1 int x = 7; x = x + 1 * 2; // x = 9 x = x - 3; // x = 6 x = x / (6 - 2 + (3*5) /(16 -1) ) ; // x = 2
  • 24. Exemplo de código Aritmético class TestaIdade { public static void main(String[] args) { // imprime a idade // falar de Scanner para entrada de dados int idade = 20; System.out.println(idade); // gera uma idade no ano seguinte int idadeNoAnoQueVem; idadeNoAnoQueVem = idade + 1; // imprime a idade System.out.println(idadeNoAnoQueVem); } }
  • 25. Atribuição Nas seções anteriores, já vimos um dos operadores de atribuição, o operador = (igual). Os operadores de atribuição são: • Simples = • Incremental += • Decremental -= • Multiplicativa *= • Divisória /= • Modular %=
  • 26. Atribuição int valor = 1; // valor = 1 valor += 2; // valor = 3 valor -= 1; // valor = 2 valor *= 6; // valor = 12 valor /= 3; // valor = 4 valor %= 3; // valor = 1
  • 27. As instruções acima poderiam ser escritas de outra forma: int valor = 1; // valor = 1 valor = valor +2; // valor = 3 valor = valor -1; // valor = 2 valor = valor * 6; // valor =12 valor = valor / 3; // valor = 4 valor = valor % 3; // valor = 1 Como podemos observar, os operadores de atribuição, com exceção do simples ( = ), reduzem a quantidade de código escrito. Podemos dizer que esses operadores funcionam como “atalhos” para as operações que utilizam os operadores aritméticos.
  • 28. Relacional Muitas vezes precisamos determinar a relação entre uma variável ou valor e outra outra variável ou valor. Nessas situações, utilizamos os operadores relacionais. As operações realizadas com os operadores relacionais devolvem valores do tipo primitivo boolean. Os operadores relacionais são: • Igualdade == • Diferença != • Menor < • Menor ou igual <= • Maior > • Maior ou igual >=
  • 29. Relacional int valor = 2; boolean t = false; // t = true t = ( valor == 2); // t = false t = ( valor != 2); // t = false t = ( valor < 2); // t = true t = ( valor <= 2); // t = true t = ( valor > 1); // t = true t = ( valor >= 1); // t = true
  • 30. Lógico A linguagem Java permite verificar duas ou mais condições através de operadores lógicos. Os operadores lógicos devolvem valores do tipo primitivo boolean. Os operadores lógicos são • “E” lógico && • “OU” lógico ||
  • 31. Lógico int valor = 30; boolean teste =false ; teste = valor < 40 && valor > 20; // teste = true teste = valor < 40 && valor > 30;// teste = false teste = valor > 30 || valor > 20; // teste = true teste = valor > 30 || valor < 20; // teste = false teste = valor < 50 && valor == 30; // teste = true
  • 32. IF-ELSE O comportamento de uma aplicação pode ser influenciado por valores definidos pelos usuários. Por exemplo, considere um sistema de cadastro de produtos. Se um usuário tenta adicionar um produto com preço negativo, a aplicação não deve cadastrar esse produto. Caso contrário, se o preço não for negativo, o cadastro pode ser realizado normalmente. Outro exemplo, quando o pagamento de um boleto é realizado em uma agência bancária, o sis- tema do banco deve verificar a data de vencimento do boleto para aplicar ou não uma multa por atraso.
  • 33. IF-ELSE Para verificar uma determinada condição e decidir qual bloco de instruções deve ser executado, devemos aplicar o comando if. if ( preco < 0) { System . out . println ( " O preço do produto não pode ser negativo " ) ; } else { System . out . println ( " Produto cadastrado com sucesso " ) ; }
  • 34. IF-ELSE int idade = 15; boolean amigoDoDono = true; if (idade < 18 && amigoDoDono == false) { System.out.println("Não pode entrar"); } else { System.out.println("Pode entrar"); }
  • 35. IF-ELSE O comando if permite que valores booleanos sejam testados. Se o valor passado como parâ- metro para o comando if for true , o bloco do if é executado. Caso contrário, o bloco do else é executado. O parâmetro passado para o comando if deve ser um valor booleano, caso contrário o código não compila. O comando else e o seu bloco são opcionais.
  • 36. WHILE Em alguns casos, é necessário repetir um trecho de código diversas vezes. Suponha que seja necessário imprimir 10 vezes na tela a mensagem: “Bom Dia”. Isso poderia ser realizado colocando 10 linhas iguais a essa no código fonte: System.out.println ( " Bom Dia " ) ; Se ao invés de 10 vezes fosse necessário imprimir 100 vezes, já seriam 100 linhas iguais no código fonte. É muito trabalhoso utilizar essa abordagem para solucionar esse problema.
  • 37. WHILE Através do comando while, é possível definir quantas vezes um determinado trecho de código deve ser executado pelo computador. int contador = 0; while ( contador < 100) { System . out . println ( " Bom Dia " ) ; contador ++; }
  • 38. WHILE A variável contador indica o número de vezes que a mensagem “Bom Dia” foi impressa na tela. O operador ++ incrementa a variável contador a cada rodada. O parâmetro do comando while tem que ser um valor booleano. Caso contrário, ocorrerá um erro de compilação.
  • 39. WHILE int idade = 15; while (idade < 18) { System.out.println(idade); idade = idade + 1; }
  • 40. FOR O comando for é análogo ao while . A diferença entre esses dois comandos é que o for recebe três argumentos. for (inicializacao; condicao; incremento) { codigo; } Ex. for ( int contador = 0; contador < 100; contador ++) { System.out.println ( " Bom Dia " ) ; }
  • 41. exercicio 1) entre com um numero double e imprima um numero inteiro 2) Entrar com dois números e imprimir o menor número (suponha números diferentes). 3) Imprima todos os números de 150 a 300. 4) Imprima a soma de 1 até 1000. 5) Imprima todos os múltiplos de 3, entre 1 e 100.
  • 43. ORIENTAÇÃO A OBJETOS Orientação a objetos é uma maneira de programar que ajuda na organização e resolve muitos problemas enfrentados pela programação procedural.
  • 44. Criando um tipo Considere um programa para um banco, é bem fácil perceber que uma entidade extremamente importante para o nosso sistema é a conta. Nossa ideia aqui é generalizarmos alguma informação, juntamente com funcionalidades que toda conta deve ter. O que toda conta tem e é importante para nós? • número da conta • nome do dono da conta • saldo • limite
  • 45. Criando um tipo O que toda conta faz e é importante para nós? Isto é, o que gostaríamos de “pedir à conta"? • saca uma quantidade x • deposita uma quantidade x • imprime o nome do dono da conta • devolve o saldo atual • transfere uma quantidade x para uma outra conta y • devolve o tipo de conta Com isso, temos o projeto de uma conta bancária. Podemos pegar esse projeto e acessar seu saldo? Não. O que temos ainda é o projeto. Antes, precisamos construir uma conta, para poder acessar o que ela tem, e pedir a ela que faça algo.
  • 46.
  • 47. Uma classe em Java Vamos começar apenas com o que uma Conta tem, e não com o que ela faz (veremos logo em seguida). Um tipo desses, como o especificado de Conta acima, pode ser facilmente traduzido para Java: class Conta { int numero; // atribuido ou estado class String dono; double saldo; double limite; // .. }
  • 48. Criando e usando um objeto Já temos uma classe em Java que especifica o que todo objeto dessa classe deve ter. Mas como usá-la? Além dessa classe, ainda teremos o Programa.java e a partir dele é que vamos utilizar a classe Conta . Para criar (construir, instanciar) uma Conta , basta usar a palavra chave new . Devemos utilizar também os parênteses, que descobriremos o que fazem exatamente em um capítulo posterior: class ContaTeste { public static void main(String[] args) { new Conta(); } }
  • 49. Criando e usando um objeto Bem, o código cria um objeto do tipo Conta , mas como acessar esse objeto que foi criado? Precisamos ter alguma forma de nos referenciarmos a esse objeto. Precisamos de uma variável: class ContaTeste { public static void main(String[] args) { Conta minhaConta; minhaConta = new Conta(); } }
  • 50. Criando e usando um objeto Pode parecer estranho escrevermos duas vezes Conta : uma vez na declaração da variável e outra vez no uso do new . Mas há um motivo, que em breve entenderemos. Através da variável minhaConta , podemos acessar o objeto recém criado para alterar seu dono , seu saldo , etc
  • 51. Criando e usando um objeto class Programa { public static void main(String[] args) { Conta minhaConta; minhaConta = new Conta(); minhaConta.dono = "Levi"; minhaConta.saldo = 1000.0; System.out.println("Saldo atual: " + minhaConta.saldo); } } É importante fixar que o ponto foi utilizado para acessar algo em minhaConta . A minhaConta pertence ao Levi, e tem saldo de mil reais.
  • 52. Métodos Dentro da classe, também declararemos o que cada conta faz e como isto é feito - os comportamentos que cada classe tem, isto é, o que ela faz. Por exemplo, de que maneira que uma Conta saca dinheiro? Especifica- remos isso dentro da própria classe Conta , e não em um local desatrelado das informações da própria Conta. É por isso que essas “funções” são chamadas de métodos. Pois é a maneira de fazer uma operação com um objeto. Queremos criar um método que saca uma determinada quantidade e não devolve nenhuma informação para quem acionar esse método:
  • 53. Métodos class Conta { double salario; // ... outros atributos ... void saca(double quantidade) { double novoSaldo = this.saldo - quantidade; this.saldo = novoSaldo; } } A palavra chave void diz que, quando você pedir para a conta sacar uma quantia, nenhuma informação será enviada de volta a quem pediu.
  • 54. Métodos Da mesma forma, temos o método para depositar alguma quantia: void deposita(double quantidade) { this.saldo += quantidade; }
  • 55. Testa os Métodos class TestaAlgunsMetodos { public static void main(String[] args) { // criando a conta Conta minhaConta; minhaConta = new Conta(); // alterando os valores de minhaConta minhaConta.dono = "Duke"; minhaConta.saldo = 1000; // saca 200 reais minhaConta.saca(200); // deposita 500 reais minhaConta.deposita(500); System.out.println(minhaConta.saldo); } }
  • 56. Métodos com retorno Um método sempre tem que definir o que retorna, nem que defina que não há retorno, como nos exemplos anteriores onde estávamos usando o void . Um método pode retornar um valor para o código que o chamou. No caso do nosso método saca , podemos devolver um valor booleano indicando se a operação foi bem sucedida.
  • 57. Métodos com retorno class Conta { // ... outros métodos e atributos ... boolean saca(double valor) { if (this.saldo < valor) { return false; } else { this.saldo = this.saldo - valor; return true; } } }
  • 58. Métodos com retorno A declaração do método mudou! O método saca não tem void na frente. Isto quer dizer que, quando é acessado, ele devolve algum tipo de informação. No caso, um boolean . A palavra chave return indica que o método vai terminar ali, retornando tal informação. imagem
  • 59. Exemplo de uso: minhaConta.saldo = 1000; boolean consegui = minhaConta.saca(2000); if (consegui) { System.out.println("Consegui sacar"); } else { System.out.println("Não consegui sacar"); }
  • 60. Ou então, posso eliminar a variável temporária, se desejado: minhaConta.saldo = 1000; if (minhaConta.saca(2000)) { System.out.println("Consegui sacar"); } else { System.out.println("Não consegui sacar"); }
  • 61. O método transfere() se quisermos ter um método que transfere dinheiro entre duas contas? Podemos ficar tentados a criar um método que recebe dois parâmetros: conta1 e conta2 do tipo Conta . Mas cuidado: assim estamos pensando de maneira procedural. class Conta { // atributos e métodos... void transfere(Conta destino, double valor) { this.saldo = this.saldo - valor; destino.saldo = destino.saldo + valor; } }
  • 62. O método transfere() Para deixar o código mais robusto, poderíamos verificar se a conta possui a quantidade a ser transferida disponível. Para ficar ainda mais interessante, você pode chamar os métodos deposita e saca já existentes para fazer essa tarefa:
  • 63. O método transfere() class Conta { // atributos e métodos... boolean transfere(Conta destino, double valor) { boolean retirou = this.saca(valor); if (retirou == false) { // não deu pra sacar! return false; } else { destino.deposita(valor); return true; } } }
  • 64. Continuando com atributos As variáveis do tipo atributo, diferentemente das variáveis temporárias (declaradas dentro de um método), recebem um valor padrão. No caso numérico, valem 0, no caso de boolean , valem false . Você também pode dar valores default, como segue class Conta { int numero = 1234; String dono = "Duke"; String cpf = "123.456.789-10"; double saldo = 1000; double limite = 1000; } Nesse caso, quando você criar uma conta, seus atributos já estão “populados” com esses valores colocados.
  • 65. Continuando com atributos As variáveis do tipo atributo, diferentemente das variáveis temporárias (declaradas dentro de um método), recebem um valor padrão. No caso numérico, valem 0, no caso de boolean , valem false . Você também pode dar valores default, como segue class Conta { int numero = 1234; String dono = "Duke"; String cpf = "123.456.789-10"; double saldo = 1000; double limite = 1000; }
  • 66. Continuando com atributos Imagine que comecemos a aumentar nossa classe Conta e adicionar nome, sobrenome e cpf do cliente dono da conta. Começaríamos a ter muitos atributos... e, se você pensar direito, uma Conta não tem nome , nem sobrenome nem cpf , quem tem esses atributos é um Cliente . Então podemos criar uma nova classe e fazer uma composição Seus atributos também podem ser referências para outras classes. Suponha a seguinte classe Cliente : class Cliente { String nome; String sobrenome; String cpf; }
  • 67. Continuando com atributos class Conta { int numero; double saldo; double limite; Cliente titular; ... } // depois já instanciar o Cliente Cliente titular = new Cliente()
  • 68. Continuando com atributos E dentro do main da classe de teste: class Teste { public static void main(String[] args) { Conta minhaConta = new Conta(); Cliente c = new Cliente(); minhaConta.titular = c; // ... } }
  • 69. Continuando com atributos Aqui, simplesmente houve uma atribuição. O valor da variável c é copiado para o atributo titular do objeto ao qual minhaConta se refere. Em outras palavras, minhaConta tem uma referência ao mesmo Cliente que c se refere, e pode ser acessado através de minhaConta.titular Você pode realmente navegar sobre toda essa estrutura de informação, sempre usando o ponto: Cliente clienteDaMinhaConta = minhaConta.titular; clienteDaMinhaConta.nome = "Duke"; Ou ainda, pode fazer isso de uma forma mais direta e até mais elegante: minhaConta.titular.nome = "Duke";
  • 70. Continuando com atributos Mas, e se dentro do meu código eu não desse new em Cliente e tentasse acessá-lo diretamente? class Teste { public static void main(String[] args) { Conta minhaConta = new Conta(); minhaConta.titular.nome = "Manoel"; // ... } } Quando damos new em um objeto, ele o inicializa com seus valores default, 0 para números, false para boolean e null para referências. null é uma palavra chave em java, que indica uma referência para nenhum objeto.
  • 71. Continuando com atributos Se, em algum caso, você tentar acessar um atributo ou método de alguém que está se referenciando para null , você receberá um erro durante a execução ( NullPointerException , que veremos mais à frente). Da para perceber, então, que o new não traz um efeito cascata, a menos que você dê um valor default (ou use construtores, que também veremos mais a frente): class Conta { int numero; double saldo; double limite; Cliente titular = new Cliente(); // quando chamarem new Conta, havera um new Cliente para ele. }
  • 72. Continuando com atributos Com esse código, toda nova Conta criada já terá um novo Cliente associado, sem necessidade de instanciá-lo logo em seguida da instanciação de uma Conta . Qual alternativa você deve usar? Depende do caso: paratoda nova Conta você precisa de um novo Cliente ? É essa pergunta que deve ser respondida. Nesse nossocaso a resposta é não, mas depende do nosso problema.
  • 73. Um pouco de arrays Dentro de um bloco, podemos declarar diversas variáveis e usá-las: int idade1; int idade2; int idade3; int idade4; Isso pode se tornar um problema quando precisamos mudar a quantidade de variáveis a serem declaradas de acordo com um parâmetro. Esse parâmetro pode variar, como por exemplo, a quantidade de número contidos num bilhete de loteria. Um jogo simples possui 6 números, mas podemos comprar um bilhete mais caro, com 7 números ou mais. Para facilitar esse tipo de caso podemos declarar um vetor (array) de inteiros:
  • 74. Um pouco de arrays int[] idades; O int[] é um tipo. Uma array é sempre um objeto, portanto, a variável idades é uma referência. Vamos precisar criar um objeto para poder usar a array. Como criamos o objeto-array? idades = new int[10]; O que fizemos foi criar uma array de int de 10 posições e atribuir o endereço no qual ela foi criada. Podemos ainda acessar as posições do array: idades[5] = 10;
  • 75. Um pouco de arrays O código acima altera a sexta posição do array. No Java, os índices do array vão de 0 a n-1, onde n é o tamanhom dado no momento em que você criou o array. Se você tentar acessar uma posição fora desse alcance, um erro ocorrerá durante a execução.
  • 76. Um pouco de arrays No caso do bilhete de loteria, podemos utilizar o mesmo recurso. Mais ainda, a quantidade de números do nosso bilhete pode ser definido por uma variável. Considere que n indica quantos números nosso bilhete terá, podemos então fazer: int numerosDoBilhete[] = new int[n]; E assim podemos acessar e modificar os inteiros com índice de 0 a n-1 .
  • 77. Arrays de referências Arrays de referências É comum ouvirmos “array de objetos”. Porém quando criamos uma array de alguma classe, ela possui refe-rências. O objeto, como sempre, está na memória principal e, na sua array, só ficam guardadas as referências(endereços). Conta[] minhasContas; minhasContas = new Conta[10];
  • 78. Arrays de referências Quantas contas foram criadas aqui? Na verdade, nenhuma. Foram criados 10 espaços que você pode utilizar para guardar uma referência a uma Conta. Por enquanto, eles se referenciam para lugar nenhum ( null ). Se você tentar: System.out.println(minhasContas[0].saldo); Um erro durante a execução ocorrerá! Pois, na primeira posição da array, não há uma referência para uma conta, nem para lugar nenhum. Você deve popular sua array antes. Conta contaNova = new Conta(); contaNova.saldo = 1000.0; minhasContas[0] = contaNova; Ou você pode fazer isso diretamente: minhasContas[1] = new Conta(); minhasContas[1].saldo = 3200.0; Uma array de tipos primitivos guarda valores, uma array de objetos guarda referências.
  • 79. Percorrendo uma array Percorrer uma array é muito simples quando fomos nós que a criamos: public static void main(String args[]) { int[] idades = new int[10]; for (int i = 0; i < 10; i++) { idades[i] = i * 10; } for (int i = 0; i < 10; i++) { System.out.println(idades[i]); } }
  • 80. Percorrendo uma array Porém, em muitos casos, recebemos uma array como argumento em um método: void imprimeArray(int[] array) { // não compila!! for (int i = 0; i < ????; i++) { System.out.println(array[i]); } }
  • 81. Percorrendo uma array Até onde o for deve ir? Toda array em Java tem um atributo que se chama length , e você pode acessá-lo para saber o tamanho do array ao qual você está se referenciando naquele momento: void imprimeArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } }
  • 82. Percorrendo uma array Arrays não podem mudar de tamanho A partir do momento que uma array foi criada, ela não pode mudar de tamanho. Se você precisar de mais espaço, será necessário criar uma nova array e, antes de se referir ela, copie os elementos da array velha.
  • 83. Percorrendo uma array no Java 5.0 O Java 5.0 traz uma nova sintaxe para percorremos arrays (e coleções, que veremos mais a frente). No caso de você não ter necessidade de manter uma variável com o índice que indica a posição do elemento no vetor (que é uma grande parte dos casos), podemos usar o enhanced-for. class AlgumaClasse{ public static void main(String args[]) {
  • 84. Percorrendo uma array no Java 5.0 int[] idades = new int[10]; for (int i = 0; i < 10; i++) { idades[i] = i * 10; } // imprimindo toda a array for (int x : idades) { System.out.println(x); } } }
  • 85. Percorrendo uma array no Java 5.0 ão precisamos mais do length para percorrer matrizes cujo tamanho não conhecemos: class AlgumaClasse { void imprimeArray(int[] array) { for (int x : array) { System.out.println(x); } } } O mesmo é válido para arrays de referências. Esse for nada mais é que um truque de compilação para facilitar essa tarefa de percorrer arrays e torná-la mais legível.
  • 86. Herança, reescrita e polimorfismo
  • 87. exercicio Um domínio é composto pelas entidades, informações e processos relacionados a um determi- nado contexto. Uma aplicação pode ser desenvolvida para automatizar ou tornar factível as tarefas de um domínio. Portanto, uma aplicação é basicamente o “reflexo” de um domínio. Para exemplificar, suponha que estamos interessados em desenvolver uma aplicação para facili- tar as tarefas do cotidiano de um banco. Podemos identificar clientes, funcionários, agências e contas como entidades desse domínio. Assim como podemos identificar as informações e os processos relacionados a essas entidades.
  • 88. Introdução - Android Os aplicativos Android são desenvolvidos com JAVA - a linguagem de programação mais usada do mundo. Essa linguagem foi uma escolha lógica para a plataforma Android, porque é poderosa, gratuita e de código-fonte aberto. O java é usado para desenvolver aplicativos empresarias de larga escala, melhorar a funcionalidade de servidores Web, fornecer aplicativos para aparelhos de consumidor (por exemplo, telefones celulares, pagers e assistente digitais pessoais) e para muitos outros propostos. O java permite desenvolver aplicativos que são executados em uma variedade de dispositivos, sem nenhum código especifico para plataforma.
  • 89. Introdução - Android Os programadores java experientes pode se aprofundar rapidamente no desenvolvimento com Android, usando as APIs (intefaces de programa de aplicativo) Android e outras disponíveis de terceiros. O grau de abertura da plataforma estimula a rápida inovação. O Android esta disponível em dispositivos de dezenas de fabricantes de equipamento originais (OEMs - original equipement manufactres) em 48 países, por meio de 59 empresas de telefonia. A intensa concorrência entre os OEMs e as empresas de telefonia beneficia os clientes. A linguagem java e orientada a objetos e tem acesso a poderosas bibliotecas de classe que ajudam a desenvolver aplicativos rapidamente. A programação de interfaces gráficas do usuário com Java é baseada em eventos.
  • 90. Dificuldades em aprender programação Android Para ser um programador, a pessoa precisa possuir (ou desenvolver) algumas características: - gostar de resolver problemas - capacidade de pensamento lógico abstrato - capacidade de planejamento - conhecer lógica e lógica de programação - conhecer a sintaxe e semântica de alguma linguagem de programação - conhecer estrutura de dados - conhecer banco de dados - conhecer a linguagem SQL - conhecer o equipamento em que o programa vai rodar - saber pesquisar no Google - etc...
  • 91. Dificuldades em aprender programação Android E algumas para o Android: - conhecer programação Java - conhecer programação orientada a objetos - conhecer programação orientada a eventos - conhecer programação concorrente - conhecer a plataforma Android - conhecer a filosofia da plataforma (arquitetura) - conhecer os componentes básicos de uma aplicação (activities, services, broadcastReceivers e content providers) - conhecer os recursos existentes para implementar os componentes
  • 92. Dificuldades em aprender programação Android Para se programar Android, normalmente é requerido que o programador tenha essas características de imediato, ou seja, fica difícil para um iniciante. Por isso, eu sempre recomendo usar um livro como guia para o prendizado. A falta de alguma competência se deve na maioria das vezes à pressa em iniciar algum projeto. O novato salta alguns tópicos e vai direto para a codificação. Aí, com certeza, vai encontrar diversos obstáculos. Que vão desde problemas com lógica, desconhecimento da linguagem Java, conceitos de classes e objetos, programação concorrente, etc. Ou seja, problemas de
  • 93. Dificuldades em aprender programação Android formação básica, que todo candidato a programador Android, já deveria ter superado, chegando aos problemas com a plataforma Android propriamente dita. Neste ponto, entram além dos novatos, os que já programam uma outra linguagem. Na grande maioria das vezes, o tempo gasto com problemas simples, supera em muito o tempo para adquirir o conhecimento necessário, se o aprendizado fosse planejado.
  • 94. Dificuldades em aprender programação Android A recomendação para melhorar o rendimento nessa fase varia de acordo com o perfil de cada pessoa, obviamente, mas pode ser resumida de uma maneira geral da seguinte forma: faça uma avaliação pessoal das suas necessidades de aprendizado e monte um plano de estudos.
  • 95. Como ser um bom programador Android Você quer ser um bom programador Android? Então desenvolva as seguintes características ao máximo: ● Paixão por programação ● Gostar muito de ler ● Gostar de aprender ● Curiosidade ● Autodidata ● Inteligência ● Memória ● Concentração ● Paciência ● Humildade ● Ensinar ● Gostar de desafios ● Organização ● Planejar ● Projetar ● Algoritmos ● Estrutura de dados ● Design Patterns ● Boas Práticas ● Conhecer os recursos da linguagem Java e as bibliotecas do Android ● Impaciência ● Ego ● Precisão ● Cumpridor de prazos ● disponibilidade de tempo ● Flexibilidade ● Desconfiometro ● Dedicação e perseverança ● Solucionador de problemas
  • 96. Site p/ discussão ● INGLÊS ● Android Discuss - android-discuss-subscribe@googlegroups.com ● Stack Overflow - www.stackoverflow.com/questions/tagged/android (recomendo) ● Android Developers - subscribe@googlegroups.com ● Android Forums - www.androidforums.com ● BRASIL ● Portal Android - http://www.portalandroid.org/comunidade/ (recomendo) ● GUJ - http://www.guj.com.br/tag/android (fórum novo) ● Android Brasil - https://groups.google.com/forum/#!forum/androidbrasil (usuário) ● Android Dev Brasil - https://groups.google.com/forum/#!forum/androidbrasil-dev (recomendo)
  • 97. Por que desenvolver para o Android? A pergunta real é: “por que não desenvolver para o Android?”. se você quiser que seu aplicativo esteja disponível para milhões de usuário em todo o mundo, se deseja publicar aplicativos assim que terminar de programar e testá-los, ou se quise desenvolver em um plataforma aberta, ja tem a sua resposta.
  • 98. Participação no mercado Como desenvolvedor, você tem uma oportunidade de criar aplicativos para um mercado bem novo, e próspero. Muitos analistas acreditam que o numero de dipositivos Android em uso é maior que o numero de dispositivo Android em uso é maior que o numero de dispositivos em todos os outros sistemas operacioais moveis
  • 99. Os usuários não têm que pesquisar na internet para encontrar um aplicativo para instalar, eles podem simplesmente ir para a Google play Store, pré-instalada em seus dispositivos, e ter acesso a todos os seus aplicativos. Como a Google play store vem pré-instalada na maioria dos aplicativos Android, em geral, os usuários pesquisam-na para todas as suas
  • 100. Colocação no Mercado Por causa de todas as interfaces de programação do aplicativo(APIs) que vêm no Android, você pode desenvolver facilmente aplicativos cheios de recursos em um intervalo de tempo relativamente curto. depois de se registrar como desenvolvedor na Google play, simplesmente faça upload de seus aplicativos e os publique. Diferentemente de outros
  • 101. Plataforma aberta O sistema opercional Android é uma plataforma aberta: qualquer fabricante ou provedor de hardware pode fabricar ou vender o dispoistivos Android. Como voce pode imaginar, a abertura do Android permituiu conqueistar uma participação no mercado rapidamente. Sinta-se à vontade paar examinar o codigo-fonte do
  • 102. As raízes do Android Embora a mairoa das pessoas não saiba, o Google não iniciou o projeto Android. A versão inciial do sitema operacional Android foi criada pela Android Inc., uma pequena empersa startup no Vale do Silício que foi comprada pela Google em julho de 2005.
  • 103. O básico do desenvolvimento Android Ainda bemque voce não tem que ser um membro do Mensa para desenvolver aplicativos Android! Desenvolver no Android é simples qproque sua linguagem padrão é o Java. Embora escrever aplicativos android seja bem fácil, desenvolver sozinho pode ser um tarefa difícil.
  • 104. O básico do desenvolvimento Android Embora o sitema operacional Android consita basicamente em código Java, pequenas partes da estrutura não esto incluídas. O android usa a linguagem Xl, assim como scripts Apache Ant básicos para cosntruir os processos. Você precisa cimentar sua compreensão básica do XML.
  • 105. Java: sua linguagem de programação android Os aplicativos Android são escritos em Java - não a versão completa do Java, que é familiar para os desenvolvedores que usam a plataforma Java Enterprise Edittion(J2EE), mas um subconjunto das bibliotecas Java que são especificas do Android. Esse subconjunto do Java excluior as classes que não são adequadas para os dispostivos moveis. Se
  • 106. Android dentro de você Torna-se um desenvolvedor aAndroid não é uma tarefa complicada. E provavelmente é mais simples do que você pensa. Para ver do que se trata, faça a si mesmo estas perguntas:
  • 107. Android dentro de você Eu quero desenvolver aplicativos Android? Eu gosto das ferramentas de desenvolvimento de software gratuitas? Eu gosto de não pagar taxas de desenvolvimento? Eu tenho um computador no qual desenvolver?
  • 108. Android dentro de você Se você respondeu sim a todas as perguntas, hoje é seu dia de sorte, você está pronto para se tornar um desnevolvedorAndroid. Vocẽ pode estar imaginado o que queremos dizer com não pagar taxas de desevnvoment. voce esta lendo a pergunta corretamente: voce não pagara taxas para desenvelver os aplicativos ANdroid.
  • 109. Sempre há uma condição, certo? você pode desenvolver gratuitamente o que bem entender, mas assim que quiser publica seu apliucativo na Google play, o local onde voce faz upload e publica seus aplicativos,, precisará pagar uma pequena taxa de registro nominal. o valor da taxa custa US$ 25,00 dolares.