Baixe o app para aproveitar ainda mais
Prévia do material em texto
3ºAula Conhecendo a linguagem Java Objetivos de aprendizagem Ao término desta aula, vocês serão capazes de: saber como são escritas as variáveis na linguagem Java; entender como as estruturas de decisão são escritas na linguagem Java; entender como as estruturas de repetição são escritas na linguagem Java; entender como os comentários são escritos na linguagem Java. Olá, pessoal, tudo bem? Bem-vindos novamente à disciplina de Programação Orientada a Objetos. Nesta terceira aula, vamos aprender como é a sintaxe básica da linguagem Java. Estudaremos também como escrever as variáveis, comandos de decisão, comandos de repetição e os comentários usando a linguagem Java. Essa aula será teórica, e inicia uma série de duas aulas. Na aula seguinte, você vai aprender como escrever suas classes no Netbeans. Qualquer dúvida, entre em contato via quadro de avisos. E lembre-se de fazer as atividades dessa aula. Estaremos sempre a sua disposição. Boa aula! Bons estudos! 87 Programação Orientada a Objetos 30 1 - Variáveis em Java 2 - Estruturas de decisão em Java 3 - Estruturas de repetição em Java 4 - Comentários 1 - Variáveis em Java As variáveis na linguagem Java funcionam da mesma forma que vimos em algoritmos e nas linguagens C e C++. Eles armazenam um dado de um determinado tipo. Mas, existem algumas diferenças. Uma variável na linguagem Java pode ser de um tipo primitivo ou uma referência para um objeto. Veremos o que são eles a seguir: 1.1 - Tipos Primitivos Os tipos primitivos são aqueles que armazenam um dado apenas. Eles funcionam de forma similar as variáveis Seções de estudo comuns na linguagem C. Assim, uma variável do tipo int só vai armazenar apenas um número apenas, enquanto uma variável do tipo char armazena apenas um caractere. Na linguagem Java, temos os seguintes tipos primitivos: • byte: Armazena um valor de apenas 8 bits (-128 a 127); • short: Também chamado de short int, ele armazena um número inteiro da faixa entre -32768 a 32767; • int: Armazena um inteiro de 32 bits; • long; Armazena um inteiro de 64 bits, onde seu número máximo passa de 9 quintilhões; As variáveis de números inteiros podem receber um modi cador do tipo unsigned, que faz eliminar o sinal. Assim, a capacidade desses números varia na fai a entre 0 ao dobro da capacidade má ima do tipo normal. • oat: Número de ponto utuante de 32 bits; • double: Número de ponto utuante de 64 bits. É recomendável o seu uso no lugar do oat; • char: Armazena um único caractere no sistema; • boolean: Armazena um valor verdadeiro ou falso. Figura 1 - Tipos Primitivos em Java. Fonte: SAKURAI, 2011. 88 31 A declaração de uma variável de tipo primitivo segue a mesma regra que vemos nas linguagens C e C++. Primeiro de nimos o nome do tipo, depois damos o nome da variável. Opcionalmente, podemos de nir um valor inicial para essa variável, usando o sinal de igual (que é o símbolo de atribuição) seguido pelo valor inicial. Sempre, toda instrução na linguagem Java é encerrada com ponto-e- vírgula, com e ceção dos encerramentos de bloco. Abaixo, temos alguns exemplos válidos de nomeação de variáveis na linguagem Java: int teste = 9; float numero_real = 5.3; char caractere = ‘b’; booleane_maior; Como vimos, podemos fazer atribuições usando o sinal de igual, seguido pelo valor que queremos atribuir a essa variável. Observe: teste = 6; Uma atribuição também pode receber um resultado de uma conta matemática. Os operadores são iguais ao que temos na linguagem C/C++. Observem na tabela quais são. Tabela 1 - Operadores em Java Operador Signi cado + Adição - Subtração Divisão * Multiplicação % Resto de uma divisão Fonte: Acervo Pessoal. Vamos ver alguns exemplos de cálculos. salario = 120 + 30; salario = 300 - deducao; deducao = bonus / 12; salario = salario * bonus; Da mesma forma que é possível na linguagem C/ C++, podemos usar os operadores unários de incremento e decremento, que fazem automaticamente o incremento ou o decremento em uma unidade. Esses operadores são o ++ e o --, respectivamente. Observem agora como podemos usar eles: salario++; salario--; Outra possibilidade que podemos usar são os operadores mistos. São operadores em que nós usamos para abreviar operações que usam o valor antigo de uma variável e salvam nessa mesma variável. São alguns exemplos: salario = salario + 400; salario = salario - 40; salario = salario / 3; salario = salario * 4; Esses operadores mistos abreviam a escrita duplicada dessa variável. Para usarmos eles, colocamos o sinal aritmético desejado, seguido pelo sinal de igual. Depois indicamos o valor que devemos alterar essa variável. Observem como escrevemos essas mesmas operações, desta vez com o operador misto: salario += 400; salario -= 40; salario /= 3; salario *= 4; Como veremos mais adiante, podemos usar valores primitivos para fazer as comparações. Mas, veremos antes como funcionam as variáveis de referência. 1.2 - Variáveis de Referência As variáveis de Referência são aquelas que armazenam uma referência para uma instância de uma classe no programa Java. Assim, quando criamos um objeto, a variável recebe o endereço de memória para esse objeto, não o objeto em si. São aquelas variáveis que são criadas usando o operador new. Veja um exemplo, quando instanciamos a uma variável x uma referência para um objeto da classe Scanner, declarado na biblioteca padrão do Java: Scanner x = new Scanner(); Nem todo objeto será instanciado dessa maneira. É o caso dos objetos do tipo String, que também está incluída na biblioteca padrão do Java, que armazena uma cadeia de caracteres no sistema. Eles admitem a sua criação escrevendo uma cadeia de caracteres, entre aspas duplas. Observem o exemplo: String str = “BlaBla”; Quando criamos uma variável de referência, podemos usar os atributos e métodos que essa classe oferece. Nas variáveis de referência, quando fazemos uma operação de atribuição de um objeto existente para uma variável de referência, estamos passando o endereço desse objeto para a variável. Assim, se criarmos duas variáveis da mesma classe, recebendo uma atribuição para o mesmo objeto, as duas variáveis estarão lidando com o mesmo objeto, e assim, qualquer mudança que uma variável zer no objeto, impactará na outra variável. Isso é igual ao que vimos aos ponteiros, na matéria de Estruturas de Dados II. A seguir, vamos ver como funcionam os vetores e as matrizes. 1.3 - Vetores em Java Os vetores funcionam da mesma forma que as outras linguagens de programação. Elas armazenam um conjunto de valores do mesmo tipo. Vale lembrar que da mesma forma que podemos fazer na linguagem C/C++, os vetores na linguagem Java possuem índices para o acesso de seus dados. 89 Programação Orientada a Objetos 32 E esses índices vão de valores entre 0 a n-1, onde n é o número de itens desse vetor. A criação de vetores em Java segue dois passos. O primeiro passo é a declaração que esta variável é do tipo vetor. Para isso, escrevemos no nosso código o tipo dessa variável, o nome do vetor seguido imediatamente por colchetes. Essa é uma diferença de Java para a linguagem C/C++. Não precisamos indicar na declaração a quantidade de posições desse vetor. Veja um exemplo de declaração válida: int idades[]; Vale lembrar que Java aceita vetores de tipos primitivos,também de variáveis de referência. Nesse exemplo, estamos armazenando um conjunto de nomes, que é um vetor do tipo String. String nomes[]; O segundo passo é a inicialização desse vetor. Para isso, vamos fazer da seguinte forma: Indicamos o nome do vetor, em seguida, usamos o operador new, seguido pelo nome do tipo desse vetor, depois escrevemos entre colchetes o número de posições que esse vetor terá. Assim, se queremos que o vetor idade armazene dez valores, fazemos da seguinte forma: idades = new int[10]; O mesmo vale para vetores de referência para objetos. No exemplo abaixo, inicializamos um vetor de vinte posições parareferências para a classe String: nomes = new String[20]; Mas, atenção! Nesse caso, estamos inicializando o vetor, não os seus valores internos. Para inicializar um valor interno, devemos indicar entre colchetes o número da posição que queremos utilizar, e em seguida, fazer a inicialização da mesma forma que um valor comum. Observe: nomes[2] = new String(); O mesmo vale se queremos usar o valor de uma posição do vetor para recuperar ou armazenar um valor: idades[3] = 50; idades[4] = idades[3] + 90; Perceba que esse processo é igual ao que fazemos na linguagem C/C++. Na seção a seguir, vamos ver como funcionam as estruturas de decisão em Java. 2 - Estruturas de decisão em Java Na linguagem Java, da mesma forma que em qualquer linguagem de programação temos as estruturas de decisão, que dada uma condição ou um valor, temos dois ou mais caminhos a serem escolhidos, dependendo do valor de uma variável ou o resultado de uma condição. As estruturas de decisão que usam uma condição para de nir qual caminho seguir são a estrutura IF e o operador ternário. Já a estrutura de decisão que usa um valor de uma variável para decidir qual caminho seguir é a SWITCH..CASE. Antes de vermos essas estruturas, veremos como escrever condições na linguagem Java. 2.1 - Escrevendo condições As condições são escritas de uma forma similar ao que vemos na linguagem C/C++. Mas existem duas diferenças de comparação, e ela envolve a forma de comparar variáveis de tipos primitivos e variáveis de referência. Para comparar valores e variáveis de tipos primitivos, usamos a mesma forma que usamos na linguagem C/C++. De nimos dois valores, sejam pré-de nidos, oriundos de variáveis, atributos ou resultados de métodos, sendo um de um lado e um de outro lado. Entre os dois de nimos um operador de comparação (chamados também de operadores de igualdade ou de relação), que pode algum desses de nidos nessa lista: Tabela 2 - Operadores de igualdade e de relação em Java Operador Signi cado == Igualdade. Retorna verdadeiro se os dois valores são iguais e falsos se os dois valores forem diferentes. != Diferente. É o inverso da igualdade. Utilizado quando desejamos veri car se uma variável é maior que outra. = Utilizado quando desejamos veri car se uma variável é maior ou igual a outra. Utilizado quando desejamos veri car se uma variável é menor que outra. = Utilizado quando desejamos veri car se uma variável é menor ou igual a outra. Fonte: com informações de DIAS, 2017. Veja alguns exemplos: 6 > 9 idade < 34 67 != idade idade1 == idade2 No caso das variáveis de referência, temos apenas o operador de igualdade, onde compara se duas variáveis de referência apontam para o mesmo objeto. Da mesma forma que na linguagem C/C++, podemos ligar duas ou mais condições em uma só, usando os operadores de ligação de condições, também denominados de operadores lógicos. São estes: Tabela 3 - Operadores de igualdade e de relação em Java Operador Signi cado && Operador E. Utilizado quando desejamos que as duas e pressões sejam verdadeiras. || Operador OU. Utilizado quando precisamos que pelo menos um das e pressões seja verdadeira. Fonte: com informações de DIAS, 2017. 90 33 Veja alguns exemplos: idade < 0 || idade > 100 idade > 10 && idade < 20 Além disso, temos o operador de negação, que consiste em um ponto de exclamação (!), que realiza a inversão do resultado de uma condição. Se o resultado da condição era verdadeira, o resultado passa a ser falso. E vice-versa. Veja um exemplo: !(idade > 9) Como você pode perceber, podemos usar parênteses para deixar a condição mais legível. Agora que você sabe como escrever as condições, vamos ver como são as estruturas de decisão em Java. 2.2 - A estrutura IF A estrutura IF funciona de forma igual na linguagem C/C++. Ela consiste em que informamos uma condição. E se essa condição for verdadeira, os comandos que estiverem dentro desse bloco serão executados. A sintaxe desse bloco é esta: if (<condicao>){ <comando1>; <comando2>; ... } Veja um exemplo: estamos con gurando uma variável do tipo boolean chamada e_maior. Para con gurar essa variável, veri camos se a idade é maior que 18. Se a idade for maior igual que 18, condição que testamos em um bloco IF, setamos o valor de e_maior como true, que indica verdadeiro. boolean e_maior; if (idade >= 18){ e_maior = true; } Podemos de nir também uma série de comandos a serem executados quando a condição falha. Para isso, de nimos um bloco ELSE, imediatamente após o bloco IF. No exemplo a seguir, copiamos o mesmo código do exemplo anterior e adicionamos uma cláusula ELSE, para con gurar a variável e_maior como false se a condição falhar. Observe: boolean e_maior; if (idade >= 18){ e_maior = true; }else{ e_maior = false; } A seguir, veremos como funciona o operador ternário. 2.3 - O operador ternário O operador ternário funciona de uma forma similar ao IF, mas de nimos um valor a ser retornado quando a condição for verdadeira e um valor a ser retornado quando a condição for falsa. A sintaxe básica é esta: <condicao> ? <valor_se_verdadeiro> : <valor_se_ falso> O exemplo que usamos para exempli car o if pode ser convertido para um operador ternário, pois usamos o IF para apenas atribuir valores a uma mesma variável. Assim, podemos converter esse IF para um operador ternário, da seguinte forma: e_maior = idade >= 18 ? true : false; A seguir, vamos ver como funciona a estrutura SWITCH.. CASE. 2.4 - A estrutura SWITCH..CASE A estrutura SWITCH..CASE testa um valor de uma variável para de nir o que será executado. A sua sintaxe básica é esta: switch (<var>){ case <val1>: comando1; comando2; break; case <val2>: comando1; comando2; break; default: comando1; } Onde: • <var> é a variável é a ser testada; • case<val1> é o ponto onde iniciamos a declaração dos comandos a serem executados caso o valor de <var> for igual a <var1>. O comando break é opcional, mas é recomendável, pois, se não for utilizado, o programa continuará procurando se existe um outro bloco de comandos para o mesmo valor; • O bloco default de ne um conjunto de instruções a serem executados caso não tenhamos nenhum caso equivalente ao valor da variável a ser testada. Observe um exemplo, onde informamos no switch uma variável chamada quantidade. Nesse caso, ela salva um nome equivalente a essa quantidade em uma variável chamada nome. Se nenhum nome equivalente for encontrado, é de nido como valor padrão a string “Não achamos algum nome”. String nome; switch(quantidade){ case 10: nome = “Uma dezena”; break; case 12: 91 Programação Orientada a Objetos 34 nome = “Uma dúzia”; break; case 20: nome = “Duas dezenas”; break; default: nome = “Não achamos algum nome”. } A seguir, vamos abordar as estruturas de repetição em Java. 3 - Estruturas de repetição em Java As estruturas de repetição são aquelas em que se de nem uma sequência de comandos a serem repetidos de acordo com uma determinada condição. A linguagem Java traz os três loops presentes na linguagem C/C++: WHILE, DO.. WHILE e FOR. Veremos sobre eles a seguir: 3.1 - O laço WHILE O laço WHILE repete uma série de nida de comandos presentes dentro do seu bloco enquanto uma condição permanecer verdadeira. Seu teste sempre é no início do loop. Assim, se a condição for falsa na entrada do loop, nada é feito. No exemplo a seguir, temos um laço WHILE que faz uma contagem até o valor dez. int valor = 0; while (valor <= 10){ valor++; } 3.2 - O laço DO..WHILE Funciona de uma forma similar ao laço WHILE, repetindo uma série de comandos enquanto a condição for verdadeira. Mas existe uma diferença sutil: Enquanto que o laço WHILE testa a condição no início do loop, fazendo que o loop não seja executado caso a condição for falsa, o laço DO..WHILE testa a condição no nal do loop, permitindo uma execução desse laço, mesmo que a condição seja falsa. O exemplo a seguir consiste na mesmacontagem de 0 a 10, só que escrito em um laço DO..WHILE; int valor = 0; do{ valor++; }while (valor <= 10); 3.3 - O laço FOR Enquanto que os laços WHILE e DO..WHILE não tem uma certeza exata a respeito da quantidade de vezes a serem executadas, o laço FOR é um laço onde tem uma certeza da quantidade de vezes a serem executados. Sua estrutura é a mesma a que vemos na linguagem C/C++. Na sua declaração, inicializamos uma variável, declaramos uma condição para que o laço FOR continue e uma instrução de incremento. Observe como caria a contagem de 0 a 10, com um laço FOR: for (int valor = 0; valor <= 10; valor++){ //faca alguma coisa... } As instruções break e continue A linguagem Java nos oferece duas instruções que podem ser utilizadas em caso de laços de repetição. São as instruções break e continue. A instrução break, se usada dentro de um laço de repetição, ela interrompe automaticamente a e ecução, continuando a e ecução na primeira linha seguinte a declaração do laço. Já a instrução continue também interrompe a e ecução, mas somente da iteração atual do loop, forçando uma nova e ecução desse laço. A seguir, vamos abordar como funcionam os comentários na linguagem Java. 4 - Comentários Os comentários deixam o código mais legível para o programador que está escrevendo o programa e para futuros programadores que venham a fazer modi cações no programa, para adicionar uma nova funcionalidade ou consertar alguma funcionalidade já existente. Na linguagem Java, existem três tipos de comentários. O primeiro deles é o comentário de linha única, que abrange apenas uma linha. Sua sintaxe é simples: Basta iniciar o comentário usando duas barras, da seguinte forma: // este é um comentário A partir das duas barras, tudo que vier nesta linha até o seu nal é considerado comentário. Esse comentário é ideal para pequenas explicações. O segundo tipo de comentário é o de múltiplas linhas. Ele tem a seguinte estrutura: /* Tudo isso aqui é um comentário */ Esse tipo de comentário é ideal para grandes explicações. O terceiro tipo é um comentário iniciando com /**. Esse tipo de comentário se chama Comentário Javadoc ou Comentário de Documentação. Esse tipo de comentário é usado para descrever classes, atributos e métodos. Segue abaixo um exemplo básico de Javadoc, vindo de SAKURAI (2011b): /** * Classe utilizada para realizar as interações com o banco de dados. 92 35 */ public class ConexaoBD { /** * Método construtor. * Você deve utiliza-lo para conectar a base de dados. * @param usuario usuário do banco de dados * @param senha senha do usuário de acesso * @param ipDoBanco endereço IP do banco de dados * @param nomeDaBase nome da base de dados * @throws SQLException * @throws Exception * @author Cristiano Camilo * @since 1.0 * @version 1.0 */ public ConexaoBD(String usuario, String senha, String ipDoBanco, String nomeDaBase) throws SQLException , Exception { Class.forName(“com.mysql.jdbc.Driver”); Connection conn = DriverManager. getConnection(“jdbc:mysql://” + ipDoBanco + “/” + nomeDaBase, usuario, senha); System.out.println(“Conectado ao banco de dados.”); } //Outros métodos } Observe os @ presentes dentro desse comentário da função construtora (veremos sobre eles na próxima aula). Denominados de tags, eles de nem os dados que serão inseridos dentro desse comentário. O quadro a seguir, resume as principais tags usadas no Javadoc: Quadro 1 - Tags principais do Javadoc Comentários gerais deprecated - adiciona um comentário de que a classe, método ou variável deveria não ser usada. O te to deve sugerir uma substituição. @since - descreve a versão do produto quando o elemento foi adicionado à especi cação da API. @version - descreve a versão do produto. @see - essa marca adiciona um link à seção “Veja também” da documentação. Comentários de classes e interfaces @author - autor do elemento. @version - número da versão atual. Comentários de métodos @param - descreve os parâmetros de um método acompanhado por uma descrição. @return - descreve o valor retornado por um método. @thro s - indica as e ceções que um dado método dispara com uma descrição associada. Comentários de serialização @serial - para documentar a serialização de objetos. Fonte: SAKURAI, 2011b. O Javadoc usa esses comentários para gerar documentações no formato HTML. Além disso, as IDEs usam o Javadoc para exibir explicações gerais sobre o item a qual você está programando. No Netbeans, o Javadoc é utilizado para exibir popups adicionais de informações sobre um item selecionado no recurso deautocompletar, como mostra o exemplo a seguir: 93 Programação Orientada a Objetos 36 Na próxima aula, vamos ver como usar a IDE Netbeans e como escrever as suas primeiras classes, usando a linguagem Java. Até lá! Retomando a aula Chegamos ao nal da nossa terceira aula. Espera-se que tenha cado mais claro o entendimento de vocês sobre o conhecimento da linguagem Java. Vamos, então,relembrar? 1 - Variáveis em Java Nesta seção, vimos como funcionam as variáveis na Linguagem Java. Estudamos que elas se dividem entre variáveis de tipos primitivos e variáveis de referência, e que funcionam de uma forma análoga aos ponteiros na Linguagem C/ C++. Além disso, aprendemos como funcionam as variáveis compostas, que são os vetores. 2 - Estruturas de Decisão em Java Na segunda seção, estudamos o que são as estruturas de decisão, que dada uma condição ou um valor, temos dois ou mais caminhos a serem escolhidos, dependendo do valor de uma variável ou o resultado de uma condição. As estruturas de decisão que usam uma condição para de nir qual caminho seguir são a estrutura IF e o operador ternário. Já a estrutura de decisão que usa um valor de uma variável para decidir qual caminho seguir é a SWITCH..CASE. 3 - Estruturas de Repetição em Java Nesta seção, aprendemos como escrever as estruturas de repetição na linguagem Java. Essas estruturas vem da linguagem C/C++. São elas: WHILE, DO..WHILE e FOR. Além disso, vimos como interromper o seu loop e forçar uma nova iteração do loop, usando as palavras break e continue, respectivamente. 4 - Comentários Por m, na última seção, vimos como escrever seus comentários na linguagem Java, sendo três variantes: A primeira é o comentário de linha, iniciado com duas barras. A segunda variante é o comentário de bloco, iniciado por /* e encerrado por */. Já a terceira variante é o comentário de documentação, iniciado por /** e encerrado por */. CORNELL, Gary; HORSTMANN, Cay S.; Vale a pena ler Vale a pena FURMANKIEWICZ, Edson.et al. Core Java, volume I : fundamentos. 8. ed. São Paulo: Pearson Prentice Hall, 2010. CORNELL, Gary; HORSTMANN, Cay S.; TORTELLO, José Eduardo N. et al. CoreJava 2: fundamentos. São Paulo: Makron Books do Brasil, 2001. DEITEL, H.M. Java: como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2012. SCHILDT, Herbert. Java Para Iniciantes - Crie, Compile e Execute Programas Java Rapidamente. 6. ed. Porto Alegre: Bookman, 2015. BERTOL, Omero Francisco. Vetores em Java. DevMedia: 2011. Disponível em: <https://www.devmedia. com.br/vetores-em-java/21449>. Acesso em: 19 out. 2018. DIAS, Estevão Dominique Ribeiro. Java: operadores de atribuição, aritméticos, relacionais e lógicos. DevMedia: 2017. Disponível em: <https://www.devmedia.com.br/ java-operadores-de-atribuicao-aritmeticos-relacionais-e- logicos/38289>. Acesso em: 19 out. 2018. FILGUEIRAS, Fellipe. JAVA – Estruturas de Decisão. Tableless: 2017. Disponível em: <https://tableless.com.br/ java-estruturas-de-decisao/>. Acesso em: 19 out. 2018. FILGUEIRAS, Fellipe. JAVA – Estruturas de Decisão. Tableless: 2015. Disponível em: <https://tableless.com.br/ java-estruturas-de-repeticao/>. Acesso em: 19 out. 2018. SAKURAI, Rafael Guimarães. Java - Tipos primitivos. Universidade Java, 2011a. Disponível em: <http:// www.universidadejava.com.br/materiais/java-tipos-primitivos/>. Acesso em: 19 out. 2018. SAKURAI, Rafael Guimarães. Java - Comentários de código. Universidade Java, 2011b. Disponível em: <http://www. universidadejava.com.br/materiais/java-comentarios/>. Acesso em: 19 out. 2018. Vale a pena acessar Minhas anotações 94
Compartilhar