Programação em Java – Iniciação II – Por Bruno Rodrigues
Tipos de Dados Primários
Em Java podemos definir as nossas variáveis como sendo do tipo Objecto – sendo esse objecto um dos já existentes na API ou um dos definidos por nós – ou, um dos denominados, tipos primários:
· boolean: admite os valores true ou false.
· char: Usa o código UNICODE
· Inteiros: Diferem nas precisões e podem ser positivos ou negativos.
o byte: 1 byte.
o short: 2 bytes.
o int: 4 bytes.
o long: 8 bytes.
· Reais em ponto flutuante: diferem nas precisões e podem ser positivos ou negativos.
o float: 4 bytes.
o double: 8 bytes.
Estruturas de Dados
Depois de vos apresentar os tipos primários de dados, vou-vos mostrar outro tipo de estruturas mais complexas onde também é possível armazenar informação.
Antes demais esta não pretende ser uma “aula” acerca de estruturas de dados, pois para tal muitos tutoriais teriam de ser feitos só sobre essa tema, mas sim uma apresentação de algumas estruturas já existentes na forma de classes na API do Java e que podem ser utilizadas pelo programador. São muito úteis uma vez que já possuem definidos um número elevado de métodos de grande funcionalidade sobre as mesmas.
Vamos ver algumas das mais úteis e mais utilizadas (na minha opinião, obviamente este tutorial poderia ser completado com muitas outras). Para cada uma, irei dar alguns exemplos de utilização mas, todas elas possuem muitas mais funcionalidades que poderão ser utilizadas, funcionalidades essas que poderão descobrir na API da classe em questão – cujo link indicarei em todas elas.
Array Um array é uma estrutura de tamanho fixo definido aquando da sua criação, que pode conter um único tipo de dados, tipo esse também definido quando o array é criado.
Cada elemento do array pode ser acedido através do sua posição dentro do mesmo, sendo a primeira posição de um array de tamanho n a posição 0 e a última a posição n-1. O exemplo em seguida demonstra o funcionamento de um array: O output do programa anterior, seria:
Um método de grande utilidade quando se utiliza arrays é o método length que nos permite saber o tamanho do array. Utilizando o exemplo anterior, se quisessemos conhecer o tamanho do array anArray, bastava fazer anArray.length.
Também útil é o facto de podermos criar arrays bidimensionais (matrizes de dimensão N x M), podendo os mesmos serem inicializados e utilizados como demonstra o exemplo seguinte:
Vector
A classe Vector é possivelmente uma das mais úteis da API do Java e, talvez uma das mais utilizadas. Um vector, de um modo simplista, é um array dinâmico. Quer isto dizer que o tamanho deste não é fixo, podendo-se acrescentar ou remover posições com facilidade. No entanto, isto é um processo que poderá consumir muitos recursos do sistema se for utilizado incorrectamente uma vez que, sempre que a estrutura é alterada, o que o Java faz é criar uma nova estrutura com o tamanho desejado e copia os dados da anterior estrutura para a nova. O Vector apenas aceita como seus elementos Objectos, não podendo portanto guardar nele tipos primários de dados. Eis um exemplo de como utilizar a classe Vector:
O programa anterior teria como output o seguinte:
Linked List
A classe LinkedList é uma implementação da Interface List e, tal como o nome indica é uma lista ligada, ou seja, é uma lista em que cada nó da mesma tem informação sobre qual é o nó seguinte e o nó anterior. Esta também é uma estrutura dinâmica. Em comparação com o Vector, tem uma performance superior a nível de inserção/remoção de elementos no início e fim da lista, mas uma menor performance quando os elementos a remover/inserir são no meio da mesma.
HashMap
A classe HashMap implementa a interface Map e, é nada mais do que a representação Java da estrutura de dados Hash Table. Esta estrutura serve para guardar pares <chave,valor>, sendo chave e valor do tipo definido pelo programador. As chaves devem ser únicas e, dada uma chave conseguimos obter o seu valor correspondente.
Estruturas Condicionais e Ciclos
O código Java, por defeito, será executado sequencialmente. No entanto, programas – minimamente – mais avançados, requerem uma execução condicional do código por nós construído. Para efectuar esses “malabarismos” podemos utilizar as instruções que enunciarei em seguida.
If..Else
Esta instrução valida uma instrução. Se ela for verdadeira executa o bloco de código do if, caso contrário entra no bloco de código do else. Note-se que não é necessário haver um else, o que não pode é haver um else sem um if.
É também possível criar uma sequência de instruções:
?:
Uma forma muito útil e minimalista de introduzir uma condição algures no nosso código é utilizando o operador condicional ?:, utilizando-se na forma boolean_expr ? expr1 : expr2.Se o resultado da expressão booleana for true, o resultado é expr1, senão, o resultado é expr2.
Switch..Case
O switch..case serve para avaliar uma expressão inteira e dependendo do resultado, realizar uma acção.
Deverão sempre ser utilizados breaks para saltar para fora do switch e devemos fornecer sempre uma opção default onde a condição entrará quando der um resultado que não se enquadre em nenhum dos cases (útil para quando acontece um resultado inesperado).
While
Existem 3 ciclos condicionais em Java, o while é o mais simples dos 3. O bloco de execução do while é executado enquanto uma condição for/não for verdade.
Do..While
O ciclo do..while faz a avaliação da expressão no fim do ciclo e não no início.
For
O ciclo for é amplamente utilizado em Java. Consiste numa inicialização, numa condição de paragem do ciclo e dum iterador sobre a variável inicializada.
Continue e Break
Os ciclos, muitas vezes são utilizados em conjunto com as estruturas condicionais e, muitas vezes é útil definir uma de duas situações:
· Se se verificar uma determinada condição, o programa deverá sair do ciclo mesmo que este não tenha atingido o seu final – nesse caso deveremos utilizar o break;
· Se se verificar uma determinada condição, o ciclo deverá iterar de imediato, passando portanto à próxima iteração do mesmo – nesse caso utilizamos o continue.
Trabalho de Casa (Próxima Página)
Este artigo tem mais de um ano
Recomendo que o próximo tutorial tenha uma pequena secção a explicar algumas das excepções mais comuns em Java. Normalmente costuma ser onde os iniciados tem mais chatices. 🙂
Mas realmente esqueci-me de dizer, o tutorial está bem bom. Good job 😀
Muito bom sem dúvida.. Agora vou ter de ir fazer os trabalhos de casa
Está muito bom este tutorial, mas, se me permites, tenho aqui alguns reparos a fazer.
“…recorrendo a uma LP dum paradigma funcional (como a linguagem C).”
Esta afirmação, na minha opinião, está errada. A linguagem C enquadra-se no paradigma imperativo e não funcional. Paradigma funcional implica algo que não tem sequência e é digamos “intemporal”. Ora, um programa C implica uma sequência de instruções que são executadas ao longo do tempo e , por isso, enquadra-se no paradigma imperativo.
Um exemplo do paradigma funcional é o Haskell.
Os operados bitwise que referes como pertencentes aos operadores lógicos, na minha opinião não estão bem enquadrados. Esses operadores não retornam um “booleano”. São operações sobre bits e aí referes bem o “bitwise”.
De resto, está muito bom e quero dar aqui os meus parabéns.
Espero que consideres esta crítica como algumas reflexões sobre o que li.
cumps
Olá,
Sim, tens toda a razão, deveria ser “imperativo” e não “funcional”. Funcional é o bom do Haskell, LISP,etc.. 🙂
Obrigado pelo reparo, é o que dá fazer as coisas às tantas da manhã 😛
Corrigido.
A propósito, grande tutorial!
Bom dia. Não sou da área de informática mas os posts estão bons e apelativos a uma breve incursão de exploração :)… Parabéns. Só iria sugerir a disponibilização das duas “aulas” em pdf para uma consulta mais fácil e offline ;).
Desde já o muito obrigado.
Cumps
Muito bom tutorial. É uma linguagem que nunca usei (por não saber), mas agora tenho tudo para me tornar um Master 🙂
Parabén Bruno pelo excelente tutorial.
Cumps
Exclente este post. Eu acabei a pouco o curso de programador e o java sem duvidas e a linguagem de eleição.
Mas como disse estou a começar e este post deveria ter aparecido a 3 anos atras!!!
Bruno por favor continua sim!!!
Não era Bruno mas sim o Sr. Hélio Moreira.
Desculpem.
Sou eu (Bruno) que faço os artigos e o Hélio coloca-os no site 😉
Bem então muito obrigado aos dois!!!
Uma sugestão ou um pedido…para quando um tutorial para SERVLET???Ligação á base de dados???
Um abraço.
Sinceramente acho que está um tutorial algo para o complexo e nota-se muitos erros de português, devias ter revisto melhor o artigo. De resto até está bastante completo.
Erros de português?!
É possível mas assim à primeira não identifico nenhum. Quando assim fôr diz onde estão para que possa ser corrigido. Obrigado pelo reparo 🙂
Quanto ao tutorial estar complexo isto é iniciação para quem já tem noções de programação e não para leigos na matéria como já foi dito por alguém no meu anterior artigo.
Só detectei 1 erro de Português, na parte das “Palavras Reservadas”.
Onde está:
“…nos nossos programas, à que ter em atenção as …”
Deveria estar:
“…nos nossos programas, há que ter em atenção as…”
Tutorial muito bom, no meu entender.
Gostaria de dar os parabéns ao autor do tutorial e às pessoas que tornam possível a sua publicação.
Não vi nenhum erro de português…
Isto é porque ele não conseguiu acompanhar a “complexidade” do artigo.
Excelente post Bruno, no entanto tenho um reparo a fazer… qdo dizes “Ex.: se a variável ‘int i = 10’ e fizermos ‘i++’, i ficará com o valor 11.” isto é verdade no entanto tb existe o ++i e aqui existe diferenças onde o i++ devolve i só dps é q incrementa enqto o ++i, primeiro incrementa só dps é q devolve.
Ex.:
int i = 10;
int j = 11;
System.out.println(++i);
Devolve -> 11
System.out.println(j++);
Devolve -> 10
Eu digo isto pq existe mta gente boa que não sabe a diferença.
Cumps e continua o excelente trabalho
Tens toda a razão, como já disse este tutorial foi feito com pouco tempo e sempre às tantas da noite, tentei que não escapasse nada mas nem sempre se consegue.
Thanks pelo feedback 🙂
Os leitores também andam por cá para ajudar. Uma das formas é eventualmente corrigir o que pretensamente possa estar incompleto.
Há que dar utilidade a este magnifico auditório 😀
Vitor, agora só falta dar a conhecer aqui aos leitores do pplware um pco do java para web.
Com as famosas frameworks do Java como Java server faces (jsf), Richfaces,Facelets, Spring, Acegi …
Ai sim, um pessoal iria ficar maravilhado com esse mundo que é “recente” e visto não existir mts tutoriais sobre isto pela net.
A meu ver é uma excelente linguagem para web que é segura, rápida, intuitiva e bastante robusta.
Claro e percebo. A meu ver é sempre bem vindo tutoriais sobre java.
Reparo importante:
int j = 11;
System.out.println(++i);
Devolve -> 11
System.out.println(j++);
Devolve -> 10
Sendo j = 11, “System.out.println(j++);” devolverá 11, e não 10, como colocaste. 😉
Claro, gralha minha!! :p mas ficou a ideia. 😀
no 2º caso, estás a incrementar ou decrementar? acho que está mal. o resultado deveria ser 11. Ou estou errada.
Excelente post!
Tenho apenas um comentário a fazer. Penso que este exercício não é adequado a uma iniciação em programação. Pelo menos, os primeiros exercícios que eu fiz quando estava nas aulas de IP da FCT não eram assim. Acho que fazer um contactBook e depois uma bankAccount eram as melhores soluções para depois fazer este exercício.
Olá,
Como referi não tenho a mínima experiência a fazer exercicios, nunca fui professor por isso, fiz o melhor que soube (apesar de ter noção que não deve estar grande coisa) 😀
O tutorial está excelente mesmo! Foi só pena o exercício mas deixa, agora vamos ver as resoluções.
Abraço
Melhor mesmo era fazer um microMatrix. 😀
microMatrix?
Sim. microMatrix é o projecto final da cadeira de IP este semestre na FCT.
Isso é tudo uma questão de preço 😛
Ja agora. Para quando um tutorial de F# ?
É possivel obter este tutorial em PDF???
Obrigado.
Muito bom. Parabéns pelo esforço. Lido com Java há muitos anos e foi agradável recordar o início quando aprendi.
Na altura foi a minha primeira linguagem de programação, quando entrei no curso (Engª Informática @FCTUC) e senti grande dificuldade em entender o “ciclo for”. Hoje em dia programo com a facilidade com que falo. É engraçado estas coisas. 😛
Reparo:
· Operadores de Comparação:
o Maior do que: >
o Menor do que: >
— não deveria ser —
· Operadores de Comparação:
o Maior do que: >
o Menor do que: <
Bom Post. Parabéns. Continua.
Pois, devia 🙂
Thanks
Oi Bruno,
é sempre de louvar o tempo consagrado aos outros.
Anseio pelo próximo episódio deste excelente tutorial !
Cumps
Muito obrigado pelo feedback 🙂
Excelente trabalho!! Obrigado por partilhar.
Era interessante uma tutorial de java sobre ligação a SQL server, fazia-me muito jeito nesta altura…
Cumprimentos e parabéns pelo tutorial 😉
Tenho pena que não tenham existido mais topicos de Java. Há alguma tempo que procuro ajuda sobre a elaboração de um programa em Java para criação de um fluxograma. Tenho grande parte do código que posso disponibilizar, se alguém poder ajudar, fico muito agradecido.
Parabens, grande tutorial.
No entanto, quando tento aceder a pagina 2 ou 3 recebo este erro:
Error 503 Service Unavailable
Service Unavailable
Guru Meditation:
XID: 790840455
Varnish cache server
Mais alguem com o mesmo erro?
boa tarde,
Ao tentar exportar para pdf
ocorre o seguinte erro:
TCPDF error: Alpha channel not supported: https://pplware.sapo.pt/wp-content/uploads/2010/01/java2012-300×260.png