A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.

Apresentações semelhantes


Apresentação em tema: "Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB."— Transcrição da apresentação:

1 Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB

2 (C) 2008 Gustavo Motta2 4. Tipos de valores primitivos, variáveis e expressões Definição de tipo Definição de tipo Um tipo é um conjunto de valores e se caracteriza por possuir operações associadas que atuam uniformemente sobre estes valores Um tipo é um conjunto de valores e se caracteriza por possuir operações associadas que atuam uniformemente sobre estes valores Dizer que um valor v é do tipo T, significa que v T Dizer que um valor v é do tipo T, significa que v T boolean = {false, true}, logo false é um valor do tipo boolean porque false boolean boolean = {false, true}, logo false é um valor do tipo boolean porque false boolean int = { ,..., -2, -1, 0, +1, +2,..., }, logo, 10 é um valor do tipo int porque 10 int int = { ,..., -2, -1, 0, +1, +2,..., }, logo, 10 é um valor do tipo int porque 10 int Modalidades de tipo de valores Modalidades de tipo de valores Tipo primitivo (ou elementar, ou básico) Tipo primitivo (ou elementar, ou básico) É aquele cujos valores são atômicos, i. e., não podem ser decompostos em valores mais simples É aquele cujos valores são atômicos, i. e., não podem ser decompostos em valores mais simples Exemplos: booleanos, inteiros, ponto flutuante Exemplos: booleanos, inteiros, ponto flutuante Tipo composto Tipo composto É aquele cujos valores são compostos de valores mais simples É aquele cujos valores são compostos de valores mais simples Exemplos: arrays, classes Exemplos: arrays, classes

3 (C) 2008 Gustavo Motta3 4. Tipos de valores primitivos, variáveis e expressões Tipos de valores primitivos em Java Tipos de valores primitivos em Java São predefinidos na linguagem São predefinidos na linguagem Não são instâncias de classes Não são instâncias de classes boolean = {true, false} boolean = {true, false} Representa valores lógicos (booleanos), especialmente para indicar um estado (verdadeiro ou falso) em expressões lógicas ou condicionais Representa valores lógicos (booleanos), especialmente para indicar um estado (verdadeiro ou falso) em expressões lógicas ou condicionais Operadores lógicos Operadores lógicos && (e lógico - binário): retorna true se os valores à esquerda e à direita do operador forem true && (e lógico - binário): retorna true se os valores à esquerda e à direita do operador forem true true && true = true true && true = true false && true = false false && true = false true && false = false true && false = false false && false = false false && false = false

4 (C) 2008 Gustavo Motta4 4. Tipos de valores primitivos, variáveis e expressões Tipos de valores primitivos em Java Tipos de valores primitivos em Java boolean = {true, false} boolean = {true, false} Operadores lógicos Operadores lógicos || (ou lógico - binário): retorna true se pelos menos um dos valores à esquerda ou à direita do operador forem true || (ou lógico - binário): retorna true se pelos menos um dos valores à esquerda ou à direita do operador forem true true || true = true true || true = true false || true = true false || true = true true || false = true true || false = true false || false = false false || false = false ! (negação lógica - unário): retorna o inverso do valor booleano à direita do operador ! (negação lógica - unário): retorna o inverso do valor booleano à direita do operador !true = false !true = false !false = true !false = true

5 (C) 2008 Gustavo Motta5 4. Tipos de valores primitivos, variáveis e expressões Tipos de valores primitivos em Java Tipos de valores primitivos em Java char = {..., '0', '1', '2',..., 'a', 'b, 'c',... } char = {..., '0', '1', '2',..., 'a', 'b, 'c',... } Caracteres armazenados em 16 bits (até caracteres), com suporte multilingüe (padrão Unicode) Caracteres armazenados em 16 bits (até caracteres), com suporte multilingüe (padrão Unicode) Caracteres literais são expressos entre aspas simples Caracteres literais são expressos entre aspas simples 'A' 'b' ',' '~' 'á' 'o' 'U' 'A' 'b' ',' '~' 'á' 'o' 'U' Cada caractere é representado internamente por um número inteiro, expresso na notação hexadecimal Cada caractere é representado internamente por um número inteiro, expresso na notação hexadecimal A letra 'A' é representada por '\u0041' A letra 'A' é representada por '\u0041' A letra 'a' é representada por '\u0061' A letra 'a' é representada por '\u0061'

6 (C) 2008 Gustavo Motta6 4. Tipos de valores primitivos, variáveis e expressões Tipos de valores primitivos em Java Tipos de valores primitivos em Java byte = {-128,..., -2, -1, 0, 1, 2, } byte = {-128,..., -2, -1, 0, 1, 2, } Denota valores inteiros com 8 bits de precisão (um byte), com sinal, variando de 128 a 127, inclusive Denota valores inteiros com 8 bits de precisão (um byte), com sinal, variando de 128 a 127, inclusive short = {-32768,..., -2, -1, 0, 1, 2, } short = {-32768,..., -2, -1, 0, 1, 2, } Denota valores inteiros com 16 bits de precisão (dois bytes), com sinal, variando de a 32767, inclusive Denota valores inteiros com 16 bits de precisão (dois bytes), com sinal, variando de a 32767, inclusive int = { ,..., -2, -1, 0, 1, 2, } int = { ,..., -2, -1, 0, 1, 2, } Denota valores inteiros com 32 bits de precisão (quatro bytes), com sinal, variando de a Denota valores inteiros com 32 bits de precisão (quatro bytes), com sinal, variando de a

7 (C) 2008 Gustavo Motta7 4. Tipos de valores primitivos, variáveis e expressões Tipos de valores primitivos em Java Tipos de valores primitivos em Java long = { ,..., -2, -1, 0, 1, 2, } long = { ,..., -2, -1, 0, 1, 2, } Denota valores inteiros com 64 bits de precisão (oito bytes), com sinal, variando de a Denota valores inteiros com 64 bits de precisão (oito bytes), com sinal, variando de a Valores inteiros literais são expressos da forma usual Valores inteiros literais são expressos da forma usual Porém, literais são sempre considerados do tipo int Porém, literais são sempre considerados do tipo int Inteiros do tipo long podem ser expressos como literais acrescentando-se L ou l no final do valor Inteiros do tipo long podem ser expressos como literais acrescentando-se L ou l no final do valor 1l 10L 76l 99l 102L 1l 10L 76l 99l 102L

8 (C) 2008 Gustavo Motta8 4. Tipos de valores primitivos, variáveis e expressões Tipos de valores primitivos em Java Tipos de valores primitivos em Java float = {..., E-45, E38} float = {..., E-45, E38} Denota valores numéricos de ponto flutuante, com precisão simples (quatro bytes), com sinal, onde E-45 é o menor número positivo diferente de zero e E38 é o maior número positivo finito Denota valores numéricos de ponto flutuante, com precisão simples (quatro bytes), com sinal, onde E-45 é o menor número positivo diferente de zero e E38 é o maior número positivo finito double = {..., 4.9E-324, E308} double = {..., 4.9E-324, E308} Denota valores numéricos de ponto flutuante, com precisão dupla (oito bytes), com sinal, onde 4.9E-324 é o menor número positivo diferente de zero e E308 é o maior número positivo finito Denota valores numéricos de ponto flutuante, com precisão dupla (oito bytes), com sinal, onde 4.9E-324 é o menor número positivo diferente de zero e E308 é o maior número positivo finito

9 (C) 2008 Gustavo Motta9 4. Tipos de valores primitivos, variáveis e expressões Tipos de valores primitivos em Java Tipos de valores primitivos em Java float e double float e double Valores são representados da seguinte forma Valores são representados da seguinte forma valor = mantissa 10 expoente valor = mantissa 10 expoente Valores de ponto flutuante são expressos da seguinte forma Valores de ponto flutuante são expressos da seguinte forma e[+|-] ou apenas a parte da mantissa para valores de pequena grandeza e[+|-] ou apenas a parte da mantissa para valores de pequena grandeza 2.998e E e e E e Porém, literais são sempre considerados do tipo double Porém, literais são sempre considerados do tipo double Pontos flutuantes do tipo float podem ser expressos como literais acrescentando-se F ou f no final do valor Pontos flutuantes do tipo float podem ser expressos como literais acrescentando-se F ou f no final do valor 2.998e+6F f 1.987E-23f F 2.998e+6F f 1.987E-23f F

10 (C) 2008 Gustavo Motta10 4. Tipos de valores primitivos, variáveis e expressões Tipos de valores primitivos em Java Tipos de valores primitivos em Java Operações sobre valores numéricos em Java (operadores aritméticos) Operações sobre valores numéricos em Java (operadores aritméticos) + (unário): modifica o sinal de um valor numérico para positivo + (unário): modifica o sinal de um valor numérico para positivo +10 denota que +10 é um valor positivo +10 denota que +10 é um valor positivo (unário): modifica o sinal de um valor numérico para negativo (unário): modifica o sinal de um valor numérico para negativo 10 denota que 10 é um valor negativo 10 denota que 10 é um valor negativo * (binário): multiplicação de dois números * (binário): multiplicação de dois números 10 * -5 = * 5.5 = * -5 = * 5.5 = 55.0 / (binário): divisão de dois números / (binário): divisão de dois números 9 / 4 = / -4 = / 4 = / -4 = 2.25 % (binário): módulo (resto) da divisão - (a / b) * b + (a % b) = a % (binário): módulo (resto) da divisão - (a / b) * b + (a % b) = a 9 % 5 = 4-9 % 5.0 = % -5.0 = % 5 = 4-9 % 5.0 = % -5.0 = 4.0 Tipo int Tipo double Quando valores numéricos de dois tipos diferentes são combinados numa expressão, o tipo resultante é aquele mais abrangente, ou seja, o tipo mais específico é convertido implicitamente para o tipo mais geral byte converte para short, char, int, long, float, double short converte para int, long, float, double char converte para int, long, float, double int converte para long, float, double long converte para float, double float converte para double As conversões de um tipo mais geral para um tipo mais específico podem acarretar perdas de valor e devem ser explicitadas pelo programador Por exemplo, para dividir um valor do tipo int por um valor do tipo double, mas considerando o valor do tipo double como sendo int, deve-se fazer da seguinte forma 9 / (int) 4.6 = 2 Quando se prefixa um valor com o nome de um tipo entre parênteses, está-se convertendo o tipo do valor à direita para o tipo explicitado No exemplo anterior, o double 4.6 foi convertido para o int 4 antes da operação de divisão, daí o resultado ser 2 e não 1, ou seja, houve perda Esta operação de conversão explícita se denomina Type casting

11 (C) 2008 Gustavo Motta11 4. Tipos de valores primitivos, variáveis e expressões Tipos de valores primitivos em Java Tipos de valores primitivos em Java Operações sobre valores numéricos em Java (operadores relacionais) Operações sobre valores numéricos em Java (operadores relacionais) < (binário): retorna true se o valor à esquerda do operador for menor que o valor a direita < (binário): retorna true se o valor à esquerda do operador for menor que o valor a direita 10 < 5 = false5 < 5 = false 10 < 5 = false5 < 5 = false > (binário): retorna true se o valor à esquerda do operador for maior que o valor a direita > (binário): retorna true se o valor à esquerda do operador for maior que o valor a direita 10 > 5 = true5 > 5 = false 10 > 5 = true5 > 5 = false <= (binário): retorna true se o valor à esquerda do operador for menor ou igual ao valor à direita <= (binário): retorna true se o valor à esquerda do operador for menor ou igual ao valor à direita 10 <= 5 = false5 <= 5 = true 10 <= 5 = false5 <= 5 = true

12 (C) 2008 Gustavo Motta12 4. Tipos de valores primitivos, variáveis e expressões Tipos de valores primitivos em Java Tipos de valores primitivos em Java Operações sobre valores numéricos em Java (operadores relacionais) Operações sobre valores numéricos em Java (operadores relacionais) >= (binário): retorna true se o valor à esquerda do operador for maior ou igual ao valor à direita >= (binário): retorna true se o valor à esquerda do operador for maior ou igual ao valor à direita 10 >= 5 = true5 >= 5 = true 10 >= 5 = true5 >= 5 = true == (binário): retorna true se o valor à esquerda do operador for exatamente igual ao valor à direita == (binário): retorna true se o valor à esquerda do operador for exatamente igual ao valor à direita 10 == 5 = false5 == 5 = true 10 == 5 = false5 == 5 = true != (binário): retorna true se o valor à esquerda do operador for diferente do valor à direita != (binário): retorna true se o valor à esquerda do operador for diferente do valor à direita 10 != 5 = true5 != 5 = false 10 != 5 = true5 != 5 = false

13 (C) 2008 Gustavo Motta13 4. Tipos de valores primitivos, variáveis e expressões A classe String A classe String String = {, a, b,..., aa, ab,..., aaa, aab,..., gustavo,..., java,...} String = {, a, b,..., aa, ab,..., aaa, aab,..., gustavo,..., java,...} É usada para descrever seqüências arbitrárias de caracteres (strings) de tamanho finito, limitado à memória disponível É usada para descrever seqüências arbitrárias de caracteres (strings) de tamanho finito, limitado à memória disponível Valores string literais são expressos entre aspas duplas Valores string literais são expressos entre aspas duplas elenilson cliente do banco elenilson cliente do banco denota o string vazio, isto é, o string que não possui caracteres. Não confundir com, que é o string com o caractere de espaço em branco denota o string vazio, isto é, o string que não possui caracteres. Não confundir com, que é o string com o caractere de espaço em branco A principal operação com instâncias da classe String é a concatenação, realizada com o operador + A principal operação com instâncias da classe String é a concatenação, realizada com o operador + java + cliente do banco = javacliente do banco java + cliente do banco = javacliente do banco Outras operações com strings são vistas na parte 8 do curso Outras operações com strings são vistas na parte 8 do curso

14 (C) 2008 Gustavo Motta14 Variáveis Variáveis Definição Definição Uma variável é uma entidade que armazena um valor, que pode ser inspecionado ou modificado sempre que desejado Uma variável é uma entidade que armazena um valor, que pode ser inspecionado ou modificado sempre que desejado Declaração Declaração Deve-se indicar o tipo da variável seguido do nome e de uma cláusula de inicialização, que é opcional Deve-se indicar o tipo da variável seguido do nome e de uma cláusula de inicialização, que é opcional String nomeDoAluno = ; int matriculaAluno; boolean éBolsista = false; double media = 0.0; Lampada lamp = new Lampada(); Embora opcional, jamais deixe de inicializar uma variável quando de sua declaração Embora opcional, jamais deixe de inicializar uma variável quando de sua declaração 4. Tipos de valores primitivos, variáveis e expressões

15 (C) 2008 Gustavo Motta15 Variáveis Variáveis Declaração Declaração Pode-se declarar múltiplas variáveis de um só tipo de uma única vez Pode-se declarar múltiplas variáveis de um só tipo de uma única vez String nomeDoAluno =, nomeDoCurso = ; double nota1 = 0.0, nota2 = 0.0, nota3 = 0.0, media = 0.0; Regras para nomes de variáveis Regras para nomes de variáveis Não podem conter espaços Não podem conter espaços Deve ser iniciado por uma letra ou _ ou $ Deve ser iniciado por uma letra ou _ ou $ Pode-se utilizar acentos sem restrições Pode-se utilizar acentos sem restrições Pode conter números Pode conter números Não pode ser uma palavra reservada da linguagem Java Não pode ser uma palavra reservada da linguagem Java Estilo para nomes de variáveis Estilo para nomes de variáveis Devem iniciar com caracteres minúsculos, alternando com maiúsculos entre cada palavra ou então com o caractere _ Devem iniciar com caracteres minúsculos, alternando com maiúsculos entre cada palavra ou então com o caractere _ Devem ser descritivas e expressivas Devem ser descritivas e expressivas 4. Tipos de valores primitivos, variáveis e expressões

16 (C) 2008 Gustavo Motta16 Variáveis Variáveis Comando de atribuição Comando de atribuição Permite modificar o valor armazenado na memória por uma variável Permite modificar o valor armazenado na memória por uma variável Denotado pelo operador binário = usado da seguinte forma Denotado pelo operador binário = usado da seguinte forma variável = expressão, onde variável = expressão, onde variável denota uma referência para a posição de memória onde o valor da variável a ser modificado é armazenado variável denota uma referência para a posição de memória onde o valor da variável a ser modificado é armazenado expressão denota uma expressão que, quando avaliada, resulta no valor a ser armazenado na variável expressão denota uma expressão que, quando avaliada, resulta no valor a ser armazenado na variável 4. Tipos de valores primitivos, variáveis e expressões 1 2 Memória 3 int contador = 1; contador 1 contador = contador + 1; Denota o valor armazenado, no caso 1, ou seja, neste contexto, a variável contador é usada para inspecionar a memória Resulta no valor 2, após avaliação Denota a referência (endereço) para posição de memória onde a variável reside, local onde o valor resultante da avaliação (2) é armazenado, modificando o conteúdo da variável contador 2

17 (C) 2008 Gustavo Motta17 Variáveis Variáveis Escopo Escopo O escopo de uma variável corresponde ao bloco do programa (ou parte dele apenas) onde a variável foi declarada O escopo de uma variável corresponde ao bloco do programa (ou parte dele apenas) onde a variável foi declarada Variáveis somente podem ser diretamente manipuladas dentro do seu escopo Variáveis somente podem ser diretamente manipuladas dentro do seu escopo Blocos de programas em Java são trechos de programa delimitados por { e } Blocos de programas em Java são trechos de programa delimitados por { e } Variáveis declaradas em uma classe têm toda a classe como escopo, ou seja, são válidas por toda a classe, mesmo que estejam declaradas depois das operações (métodos) que as usam Variáveis declaradas em uma classe têm toda a classe como escopo, ou seja, são válidas por toda a classe, mesmo que estejam declaradas depois das operações (métodos) que as usam São denominadas de variáveis de instância ou campos da classe São denominadas de variáveis de instância ou campos da classe Variáveis declaradas dentro de métodos têm apenas o corpo do método como escopo, mas a partir do ponto onde foram declaradas Variáveis declaradas dentro de métodos têm apenas o corpo do método como escopo, mas a partir do ponto onde foram declaradas São denominadas de variáveis locais São denominadas de variáveis locais class Triangulo { float lado1; boolean éEquilátero() { boolean igualdade12, resultado; igualdade12 = (lado1 == lado2); boolean igualdade23; igualdade23 = (lado2 == lado3); if (igualdade12 && igualdade23) resultado = true; else resultado = false; return resultado; } float calculaPerímetro() { float resultado = lado1 + lado2 + lado3; return resultado; } float lado2, lado3; } // fim da classe Triangulo 4. Tipos de valores primitivos, variáveis e expressões Escopo das variáveis lado1, lado2 e lado3 Escopo das variáveis igualdade12 e resultado Escopo da variável igualdade 23 Escopo da variável resultado Variáveis em escopos disjuntos (não relacionados), mesmo tendo o nome iguais, são variáveis diferentes No exemplo, as variáveis resultado declaradas nas operações éEquilátero e calculaPerímetro são diferentes, apesar de terem o mesmo nome Variáveis declaradas num mesmo escopo devem ter nomes diferentes Uma variável declarada dentro de um escopo mais interno sobrepõe a definição de uma outra variável, com mesmo nome, declarada num escopo mais externo Por exemplo, caso uma variável com nome lado1 fosse definida como local à operação calculaPerímetro, então ela é que prevalece dentro do escopo desta operação, em detrimento da variável de instância de mesmo nome declarada na classe

18 (C) 2008 Gustavo Motta18 Variáveis com valores constantes Variáveis com valores constantes Variáveis podem ser declaradas com um valor inicial que não poderá ser alterado posteriormente durante a execução do programa Variáveis podem ser declaradas com um valor inicial que não poderá ser alterado posteriormente durante a execução do programa private final int LIMITE = 10000; O uso do modificador final assegura que o valor de inicialização da variável não poderá ser modificado em outro local dentro do programa, ou seja, o valor da variável é constante durante a execução do programa O uso do modificador final assegura que o valor de inicialização da variável não poderá ser modificado em outro local dentro do programa, ou seja, o valor da variável é constante durante a execução do programa Com o modificador final, a cláusula de inicialização torna-se obrigatória Com o modificador final, a cláusula de inicialização torna-se obrigatória Qualquer tentativa de modificação provoca erro em tempo de compilação Qualquer tentativa de modificação provoca erro em tempo de compilação Útil para explicitar que o valor da variável não deve ser modificado Útil para explicitar que o valor da variável não deve ser modificado 4. Tipos de valores primitivos, variáveis e expressões O bom estilo recomenda que se declare as constantes com todas letras maiúsculas

19 (C) 2008 Gustavo Motta19 Operações parametrizadas Operações parametrizadas Permitem variar os valores com os quais operam cada vez que são executadas, mas que não se sabe no momento em que são declaradas Permitem variar os valores com os quais operam cada vez que são executadas, mas que não se sabe no momento em que são declaradas public void compra(int valor) { if ((saldo + valor) <= limite) { saldo = saldo + valor; saldo = saldo + valor; creditaBonus(valor); creditaBonus(valor); } else { else { System.out.println("Limite de crédito não..."); System.out.println("Limite de crédito não..."); }} A variável declarada como parâmetro de uma operação é denominada de parâmetro formal e denota um valor não sabido no momento da declaração da operação, mas que será fornecido no momento de sua execução A variável declarada como parâmetro de uma operação é denominada de parâmetro formal e denota um valor não sabido no momento da declaração da operação, mas que será fornecido no momento de sua execução 4. Tipos de valores primitivos, variáveis e expressões Parâmetro formal

20 (C) 2008 Gustavo Motta20 public void compra(int valor = valorCompra) { if ((saldo + valor) <= limite) { if ((saldo + valor) <= limite) { saldo = saldo + valor; saldo = saldo + valor; creditaBonus(valor); creditaBonus(valor); } else { else { System.out.println("Limite de crédito não..."); System.out.println("Limite de crédito não..."); }} Operações parametrizadas Operações parametrizadas No momento em que é executada, o valor da variável é passado como parâmetro, sendo denominado de parâmetro real ou argumento da operação No momento em que é executada, o valor da variável é passado como parâmetro, sendo denominado de parâmetro real ou argumento da operação 4. Tipos de valores primitivos, variáveis e expressões CartaoDeCredito cartao = new CartaoDeCredito(); public void compra(int valor = 394) { if ((saldo + valor) <= limite) { if ((saldo + valor) <= limite) { saldo = saldo + valor; saldo = saldo + valor; creditaBonus(valor); creditaBonus(valor); } else { else { System.out.println("Limite de crédito não..."); System.out.println("Limite de crédito não..."); }} Memória 4 saldo limite bonus int valorCompra = 1203; valorCompra 1203 cartao.compra(valorCompra); valor 1203 saldo limite bonus saldo limite bonus cartao.compra(394); valor 394 saldo limite bonus saldo limite bonus Parâmetros reais

21 (C) 2008 Gustavo Motta21 Operações parametrizadas Operações parametrizadas Podem ter mais de um parâmetro formal definido Podem ter mais de um parâmetro formal definido public void compra(int valor, double juros, int parcelas) { if ((saldo + valor) <= limite) { } else { else { System.out.println("Limite de crédito não..."); System.out.println("Limite de crédito não..."); }} A ordem, os tipos e a quantidade de parâmetros reais passados devem casar com os dos parâmetros formais A ordem, os tipos e a quantidade de parâmetros reais passados devem casar com os dos parâmetros formais... cartao.compra(2933, 1.2, 10);... cartao.compra(2933, 10, 1.2); cartao.compra(2933, 10); 4. Tipos de valores primitivos, variáveis e expressões

22 (C) 2008 Gustavo Motta22 Operações parametrizadas Operações parametrizadas Podem existir duas ou mais operações com o mesmo nome numa classe, desde que o número ou o tipo de seus parâmetros sejam diferentes Podem existir duas ou mais operações com o mesmo nome numa classe, desde que o número ou o tipo de seus parâmetros sejam diferentes class CartaoDeCredito {... public void compra(double valor) { public void compra(double valor) { } public void compra(int valor) { public void compra(int valor) { } public void compra(int valor, double juros, int parcelas) { public void compra(int valor, double juros, int parcelas) { }...} 4. Tipos de valores primitivos, variáveis e expressões

23 (C) 2008 Gustavo Motta23 Expressões Expressões Definição Definição Uma expressão é um trecho de programa que é avaliado para resultar num valor Uma expressão é um trecho de programa que é avaliado para resultar num valor Modalidades de expressões Modalidades de expressões Aritméticas Aritméticas Condicionais Condicionais Lógicas (booleanas) Lógicas (booleanas) 4. Tipos de valores primitivos, variáveis e expressões

24 (C) 2008 Gustavo Motta24 Expressões aritméticas Expressões aritméticas Expressões que, quando avaliadas. resultam num valor numérico Expressões que, quando avaliadas. resultam num valor numérico a + b * cx / y * z a + b * cx / y * z (6 * mediaProvas + 4 * notaProvaFinal) / 10 (6 * mediaProvas + 4 * notaProvaFinal) / 10 Regras para avaliação de expressões aritméticas Regras para avaliação de expressões aritméticas 1. As subexpressões parentesadas têm prioridade de avaliação. Nas subexpressões parentesadas aninhadas, a avaliação é efetuada a partir da subexpressão parentesada mais interna 4. Tipos de valores primitivos, variáveis e expressões Como é a avaliação? * é efetuada primeiro que a +, ou vice-versa? x / y * z é avaliado como (x / y) * z ou x / (y * z)

25 (C) 2008 Gustavo Motta25 Expressões aritméticas Expressões aritméticas Regras para avaliação de expressões aritméticas Regras para avaliação de expressões aritméticas 2. Ordem de precedência de operadores: operadores numa mesma subexpressão são avaliados na seguinte ordem: +, unários: 1 o +, unários: 1 o *, /, % binários: 2 o *, /, % binários: 2 o +, binários: 3 o +, binários: 3 o 3. Associatividade: os operadores numa mesma subexpressão e com mesma ordem de precedência são avaliados numa das seguintes formas: Da direita para a esquerda: operadores unários + e Da direita para a esquerda: operadores unários + e Da esquerda para a direita : operadores binários *, /, %, + e Da esquerda para a direita : operadores binários *, /, %, + e 4. Tipos de valores primitivos, variáveis e expressões

26 (C) 2008 Gustavo Motta26 Expressões aritméticas Expressões aritméticas Exemplos Exemplos Fórmula para cálculo da área de um círculo Fórmula para cálculo da área de um círculo a = ¶ r 2 a = ¶ r 2 Em Java, têm-se Em Java, têm-se double area = 0, raio = 2;... area = Math.PI * raio * raio; Math 4. Tipos de valores primitivos, variáveis e expressões * * area

27 (C) 2008 Gustavo Motta27 Expressões aritméticas Expressões aritméticas Exemplos Exemplos Fórmula para cálculo da velocidade média Fórmula para cálculo da velocidade média Em Java, têm-se Em Java, têm-se double velocidade = 0, t1 = 15, t2 = 20, s1 = 10, s2 = 20;... velocidade = (s2 – s1) / (t2 – t1); 4. Tipos de valores primitivos, variáveis e expressões -- / velocidade 2.0 A inserção de parênteses afeta a ordem normal da avaliação de operadores, por exemplo a avaliação da expressão sem parênteses é velocidade = s2 – s1 / t2 – t1; - velocidade 4.5 O que resulta numa velocidade incorreta Parênteses devem ser sempre usados para explicitar a ordem de avaliação nas expressões, mesmo quando isto não afetar o resultado / -

28 (C) 2008 Gustavo Motta28 Expressões aritméticas Expressões aritméticas Exemplos Exemplos z – (a + b / 2) + w y Em Java, têm-se Em Java, têm-se double c = 0, z = 14, w = 1.5, y = 2.66, a = 3.4, b = 4.3;... c = z – (a + b / 2) + w * y; 4. Tipos de valores primitivos, variáveis e expressões / + * - + c 12.44

29 (C) 2008 Gustavo Motta29 4. Tipos de valores primitivos, variáveis e expressões Fórmula Fórmula Expressão em Java b * b – 4 * a * c a + b – c (a + b) / (c + d) 1 / (1 + x * x) a * -(b + c) Expressões aritméticas Expressões aritméticas Exemplos de fórmulas matemáticas Exemplos de fórmulas matemáticas

30 (C) 2008 Gustavo Motta30 4. Tipos de valores primitivos, variáveis e expressões Expressões aritméticas Expressões aritméticas Funções matemáticas Funções matemáticas Disponíveis na classe Math da biblioteca de classes de Java Disponíveis na classe Math da biblioteca de classes de Java Math A classe Math provê métodos para realizar operações numéricas básicas, como cálculo de exponencial, logaritmo, raiz quadrada, funções trigonométricas A classe Math provê métodos para realizar operações numéricas básicas, como cálculo de exponencial, logaritmo, raiz quadrada, funções trigonométricas Math A documentação da classe pode ser encontrada em A documentação da classe pode ser encontrada em

31 (C) 2008 Gustavo Motta31 4. Tipos de valores primitivos, variáveis e expressões Expressões aritméticas Expressões aritméticas Funções matemáticas Funções matemáticas Exemplo: cálculo das raízes de equações de 2 o grau Exemplo: cálculo das raízes de equações de 2 o grau double x = 0, a = 3.5, b = 14, c = 1.5; double discriminante = Math.pow(b, 2) – (4 * a * c); if (discriminante > 0) { double r1 = (-b + Math.sqrt(discriminante)) / (2 * a); double r1 = (-b + Math.sqrt(discriminante)) / (2 * a); double r2 = (-b - Math.sqrt(discriminante)) / (2 * a); double r2 = (-b - Math.sqrt(discriminante)) / (2 * a);}

32 (C) 2008 Gustavo Motta32 4. Tipos de valores primitivos, variáveis e expressões Expressões aritméticas Expressões aritméticas Funções matemáticas Funções matemáticas Exemplo: função de arredondamento Exemplo: função de arredondamento round : retorna o inteiro mais próximo do argumento do tipo ponto flutuante round : retorna o inteiro mais próximo do argumento do tipo ponto flutuante double a = 3.2, b = 3.5, c = 3.7; double a = 3.2, b = 3.5, c = 3.7; System.out.println("a = "+Math.round(a)+", "+ System.out.println("a = "+Math.round(a)+", "+ "b = "+Math.round(b)+", "+ "b = "+Math.round(b)+", "+ "c = "+Math.round(c)); "c = "+Math.round(c)); Resultado Resultado a = 3, b = 4, c = 4

33 (C) 2008 Gustavo Motta33 4. Tipos de valores primitivos, variáveis e expressões Expressões aritméticas Expressões aritméticas Funções matemáticas Funções matemáticas Exemplo: função de truncagem Exemplo: função de truncagem floor : retorna um valor do tipo double correspondente a parte inteira do double passado como argumento floor : retorna um valor do tipo double correspondente a parte inteira do double passado como argumento double a = 3.2, b = 3.5, c = 3.7; double a = 3.2, b = 3.5, c = 3.7; System.out.println("a = "+Math.floor(a)+", "+ System.out.println("a = "+Math.floor(a)+", "+ "b = "+Math.floor(b)+", "+ "b = "+Math.floor(b)+", "+ "c = "+Math.floor(c)); "c = "+Math.floor(c)); Resultado Resultado a = 3.0, b = 3.0, c = 3.0

34 (C) 2008 Gustavo Motta34 4. Tipos de valores primitivos, variáveis e expressões Expressões aritméticas Expressões aritméticas Funções matemáticas Funções matemáticas Exemplo: função valor absoluto Exemplo: função valor absoluto abs : retorna o valor absoluto do argumento abs : retorna o valor absoluto do argumento double a = -0.01, b = -3.7; int c = 3; double a = -0.01, b = -3.7; int c = 3; System.out.println("a = "+Math.abs(a)+", "+ System.out.println("a = "+Math.abs(a)+", "+ "b = "+Math.abs(b)+", "+ "b = "+Math.abs(b)+", "+ "c = "+Math.abs(c)); "c = "+Math.abs(c)); Resultado Resultado a = 0.01, b = 3.7, c = 3

35 (C) 2008 Gustavo Motta35 4. Tipos de valores primitivos, variáveis e expressões Expressões aritméticas Expressões aritméticas Funções matemáticas Funções matemáticas Exemplo: função randômica Exemplo: função randômica random : retorna um valor pseudoaleatório maior ou igual a 0.0 e menor que 1.0 random : retorna um valor pseudoaleatório maior ou igual a 0.0 e menor que 1.0 System.out.println("a = "+Math.random()+", "+ "b = "+Math.random()+", "+ "b = "+Math.random()+", "+ "c = "+Math.random()); "c = "+Math.random()); Possível resultado Possível resultado a = , b = , c =

36 (C) 2008 Gustavo Motta36 Expressões condicionais Expressões condicionais Definição Definição Uma expressão condicional é aquela que tem várias subexpressões, mas que apenas uma delas é escolhida para ser avaliada Uma expressão condicional é aquela que tem várias subexpressões, mas que apenas uma delas é escolhida para ser avaliada Java permite a elaboração de expressões condicionais com o operador condicional ? Java permite a elaboração de expressões condicionais com o operador condicional ? (condição) ? expressão-esquerda : expressão-direita (ternário): avalia a expressão à esquerda do sinal de dois pontos caso a condição seja avaliada verdadeira, caso contrário, avalia a expressão à direita (condição) ? expressão-esquerda : expressão-direita (ternário): avalia a expressão à esquerda do sinal de dois pontos caso a condição seja avaliada verdadeira, caso contrário, avalia a expressão à direita 4. Tipos de valores primitivos, variáveis e expressões

37 (C) 2008 Gustavo Motta37 Expressões condicionais Expressões condicionais Exemplos Exemplos Maior dentre duas variáveis double Maior dentre duas variáveis double double a = -0.01, b = -3.7; double max = (a > b) ? a : b; Cálculo da média final Cálculo da média final double mediaNotas = 0.0, notaProvaFinal = 0.0;... double mediaFinal = (mediaNotas >= 7.0) ? mediaNotas : mediaNotas : ((6*mediaNotas + 4*notaProvaFinal) / 10); ((6*mediaNotas + 4*notaProvaFinal) / 10); 4. Tipos de valores primitivos, variáveis e expressões

38 (C) 2008 Gustavo Motta38 Expressões lógicas Expressões lógicas Definição Definição Expressões que, quando avaliadas, resultam num valor verdadeiro ou falso Expressões que, quando avaliadas, resultam num valor verdadeiro ou falso salarioBruto > limiteIsenção salarioBruto > limiteIsenção (temperatura <= 25) && (umidade < 65) (temperatura <= 25) && (umidade < 65) Regras para avaliação de expressões lógicas Regras para avaliação de expressões lógicas 1. As subexpressões parentesadas têm prioridade de avaliação. Nas subexpressões parentesadas aninhadas, a avaliação é efetuada a partir da subexpressão parentesada mais interna 4. Tipos de valores primitivos, variáveis e expressões

39 (C) 2008 Gustavo Motta39 Expressões lógicas Expressões lógicas Regras para avaliação de expressões aritméticas Regras para avaliação de expressões aritméticas 2. Ordem de precedência de operadores: operadores numa mesma subexpressão são avaliados na seguinte ordem: +,, ! unários: 1 o +,, ! unários: 1 o *, /, % binários: 2 o *, /, % binários: 2 o +, binários: 3 o +, binários: 3 o >, = binários: 4 o >, = binários: 4 o ==, != binários: 5 o ==, != binários: 5 o && binário: 6 o && binário: 6 o || binário: 7 o || binário: 7 o ? : ternário: 8 o ? : ternário: 8 o 4. Tipos de valores primitivos, variáveis e expressões

40 (C) 2008 Gustavo Motta40 Expressões lógicas Expressões lógicas Regras para avaliação de expressões aritméticas Regras para avaliação de expressões aritméticas 3. Associatividade: os operadores numa mesma subexpressão e com mesma ordem de precedência são avaliados numa das seguintes formas: Da direita para a esquerda: operadores unários +, e ! Da direita para a esquerda: operadores unários +, e ! Da esquerda para a direita : os demais operadores Da esquerda para a direita : os demais operadores Exemplos Exemplos a < b + c é equivalente a a < (b + c) a >= b || a = b) || (a = b || a = b) || (a < b) 4. Tipos de valores primitivos, variáveis e expressões

41 (C) 2008 Gustavo Motta41 Expressões lógicas Expressões lógicas Exemplo: expressão para determinar se um ano é bissexto Exemplo: expressão para determinar se um ano é bissexto Um ano é bissexto se for divisível exatamente por quatrocentos ou divisível por quatro e não divisível exatamente por 100 Um ano é bissexto se for divisível exatamente por quatrocentos ou divisível por quatro e não divisível exatamente por 100 (ano % 400 == 0) || ((ano % 4 == 0) && !(ano % 100 == 0)) (ano % 400 == 0) || ((ano % 4 == 0) && !(ano % 100 == 0)) 4. Tipos de valores primitivos, variáveis e expressões % == % % ! && ||

42 (C) 2008 Gustavo Motta42 Expressões lógicas Expressões lógicas Os operadores lógicos são avaliados em curto-circuito Os operadores lógicos são avaliados em curto-circuito Caso do operador && Caso do operador && Caso a expressão do lado esquerdo seja avaliada false, então a avaliação da expressão do lado direito é desprezada e o resultado final é false Caso a expressão do lado esquerdo seja avaliada false, então a avaliação da expressão do lado direito é desprezada e o resultado final é false (2000 % 4 != 0) && ((1/0) > 1) é igual a false (2000 % 4 != 0) && ((1/0) > 1) é igual a false ((1/0) > 1) && (2000 % 4 != 0) provoca um erro em tempo de execução, embora sejam logicamente equivalentes ((1/0) > 1) && (2000 % 4 != 0) provoca um erro em tempo de execução, embora sejam logicamente equivalentes Caso do operador || Caso do operador || Caso a expressão do lado esquerdo seja avaliada true, então a avaliação da expressão do lado direito é desprezada e o resultado final é true Caso a expressão do lado esquerdo seja avaliada true, então a avaliação da expressão do lado direito é desprezada e o resultado final é true (2000 % 4 == 0) || ((1 / 0) > 1) é igual a true (2000 % 4 == 0) || ((1 / 0) > 1) é igual a true ((1/0) > 1) || (2000 % 4 == 0) provoca um erro em tempo de execução, embora sejam logicamente equivalentes ((1/0) > 1) || (2000 % 4 == 0) provoca um erro em tempo de execução, embora sejam logicamente equivalentes 4. Tipos de valores primitivos, variáveis e expressões Para que as avaliações dos operadores sejam integrais, também chamadas de avaliações estritas, deve-se usar os operadores & no lugar de && | no lugar de ||


Carregar ppt "Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB."

Apresentações semelhantes


Anúncios Google