Quantcast

Programação em Java – Iniciação II – Por Bruno Rodrigues

44 Comentários

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)

Partilhar:
Tags:

Comentários

44
  1. Avatar de HikariKyubi
    HikariKyubi

    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. 🙂

    1. Avatar de HikariKyubi
      HikariKyubi

      Mas realmente esqueci-me de dizer, o tutorial está bem bom. Good job 😀

  2. Avatar de MM
    MM

    Muito bom sem dúvida.. Agora vou ter de ir fazer os trabalhos de casa

  3. Avatar de Pedro Silva
    Pedro Silva

    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

    1. Avatar de leitorassiduo
      leitorassiduo

      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ã 😛

      1. Avatar de Ana Narciso

        Corrigido.

        A propósito, grande tutorial!

  4. Avatar de Lycanthrope
    Lycanthrope

    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

  5. Avatar de Hélio Moreira
    Hélio Moreira

    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

  6. Avatar de Oscar ins
    Oscar ins

    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!!!

    1. Avatar de Oscar ins
      Oscar ins

      Não era Bruno mas sim o Sr. Hélio Moreira.

      Desculpem.

      1. Avatar de leitorassiduo
        leitorassiduo

        Sou eu (Bruno) que faço os artigos e o Hélio coloca-os no site 😉

        1. Avatar de Óscar Matins
          Óscar Matins

          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.

  7. Avatar de Nuno
    Nuno

    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.

    1. Avatar de leitorassiduo
      leitorassiduo

      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.

      1. Avatar de Só detectei 1
        Só detectei 1

        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.

    2. Avatar de Bónus

      Não vi nenhum erro de português…

      1. Avatar de Stênio
        Stênio

        Isto é porque ele não conseguiu acompanhar a “complexidade” do artigo.

  8. Avatar de Tagus
    Tagus

    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

    1. Avatar de leitorassiduo
      leitorassiduo

      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 🙂

      1. Avatar de Vítor M.

        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 😀

        1. Avatar de Tagus
          Tagus

          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.

      2. Avatar de Tagus
        Tagus

        Claro e percebo. A meu ver é sempre bem vindo tutoriais sobre java.

    2. Avatar de Melech
      Melech

      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. 😉

      1. Avatar de Tagus
        Tagus

        Claro, gralha minha!! :p mas ficou a ideia. 😀

    3. Avatar de Julia
      Julia

      no 2º caso, estás a incrementar ou decrementar? acho que está mal. o resultado deveria ser 11. Ou estou errada.

  9. Avatar de Mário Carvalho
    Mário Carvalho

    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.

    1. Avatar de leitorassiduo
      leitorassiduo

      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) 😀

      1. Avatar de Mário Carvalho
        Mário Carvalho

        O tutorial está excelente mesmo! Foi só pena o exercício mas deixa, agora vamos ver as resoluções.

        Abraço

    2. Avatar de Anfanger
      Anfanger

      Melhor mesmo era fazer um microMatrix. 😀

      1. Avatar de Mário Carvalho
        Mário Carvalho

        microMatrix?

        1. Avatar de Anfanger
          Anfanger

          Sim. microMatrix é o projecto final da cadeira de IP este semestre na FCT.

          1. Avatar de leitorassiduo
            leitorassiduo

            Isso é tudo uma questão de preço 😛

  10. Avatar de NunoMGF
    NunoMGF

    Ja agora. Para quando um tutorial de F# ?

  11. Avatar de Oscar Martins
    Oscar Martins

    É possivel obter este tutorial em PDF???

    Obrigado.

  12. Avatar de Filipe Lourenço

    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. 😛

  13. Avatar de Pek
    Pek

    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.

    1. Avatar de leitorassiduo
      leitorassiduo

      Pois, devia 🙂

      Thanks

  14. Avatar de stereobroo
    stereobroo

    Oi Bruno,

    é sempre de louvar o tempo consagrado aos outros.

    Anseio pelo próximo episódio deste excelente tutorial !

    Cumps

    1. Avatar de leitorassiduo
      leitorassiduo

      Muito obrigado pelo feedback 🙂

  15. Avatar de A.F.
    A.F.

    Excelente trabalho!! Obrigado por partilhar.

  16. Avatar de unknowc
    unknowc

    Era interessante uma tutorial de java sobre ligação a SQL server, fazia-me muito jeito nesta altura…

    Cumprimentos e parabéns pelo tutorial 😉

  17. Avatar de Cristiano Alves
    Cristiano Alves

    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.

  18. Avatar de Dario Rosario

    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?

  19. Avatar de andre.flores
    andre.flores

    boa tarde,

    Ao tentar exportar para pdf
    ocorre o seguinte erro:
    TCPDF error: Alpha channel not supported: http://pplware.sapo.pt/wp-content/uploads/2010/01/java2012-300×260.png

Deixe um comentário