Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Operações Matemáticas: Adição, Subtração, Multiplicação, Divisão, Resto da Divisão (módulo) e precedência dos operadores

Quanto é 1 + 2 x 2 ?
Para nós, pode ser 5 ou 6. Pro Java é sempre 5.

Se fizer a soma primeiro, é 6: 1+2 x 2 = 3 x 2 = 6
Se fizer o produto primeiro, é 5: 1 + 2x2 = 1 + 4 = 5
E o computador? Como faz? E se ele se confundir também?

E 5 dividido por 2 ?
2.5 ? Pro Java pode ser 2.5 ou 2.

Operações Matemáticas em Computação

Primeiro, esqueça o 'x' como sinal de multiplicação, de agora em diante é '*'.
Segundo, divisão se representa com o '/'. Por exemplo, 4/2 = 2
Terceiro, tudo em computação é matemática.

Aliás, computação vem de computar, ou seja, contar.
Até quando você escreve em Java, a JVM(Java Virtual Machine) troca informações com sua máquina na forma de matemática (em bits).
Até as imagens, são divididas em pequenos blocos, são numerados e cada bloquinho é pintado com uma cor devidamente identificada.

Adivinhe como é essa identificação? Claro, por meio de números.
Ou achou que a máquina ia dividir em 'rosa emo', 'azul bebê' ou 'azul piscina'?

Adição, Subtração e Multiplicação

Essas três não tem muitas dificuldade. São 'zona'. Você pode somar, subtrair e multiplicar o que quiser.
Á rigor, tudo é uma soma.
Subtração é uma uma soma com números negativos: a - b = a + (-b)
Multiplicação é uma soma repetida várias vezes: a * b = a + a + a + a ... + a (o 'a' se repete 'b' vezes).

O seguinte código pede dois números inteiros (se não for inteiro, terá erros) e mostra o resultado da soma, subtração e multiplicação, sem segredo:

import java.util.Scanner;

public class Operacoes {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);        
    int num1;
        int num2;
        
        System.out.print("Digite o primeiro número: ");
        num1 = entrada.nextInt();
        
        System.out.print("Digite o segundo número: ");
        num2 = entrada.nextInt();
        
        System.out.println();
        System.out.println(num1 + " + " + num2 + " = " + (num1 + num2) );
        System.out.println(num1 + " - " + num2 + " = " + (num1 - num2) );
        System.out.println(num1 + " * " + num2 + " = " + (num1 * num2) );
        
        
    }
}

Caso não for usar inteiros (ou for) aconselho a usar 'printf', pois você pode formar a saída.

Formatação com printf

Uma forma diferente de exibir números é:
System.out.printf("número: %d", num1);

O exemplo passado ficaria:


import java.util.Scanner;

public class Operacoes {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);        
    int num1;
        int num2;
        
        System.out.print("Digite o primeiro número: ");
        num1 = entrada.nextInt();
        
        System.out.print("Digite o segundo número: ");
        num2 = entrada.nextInt();
        
        System.out.printf("\n%d + %d = %d\n", num1, num2, num1 + num2);
        System.out.printf("%d - %d = %d\n", num1, num2, num1 - num2);
        System.out.printf("%d * %d = %d\n", num1, num2, num1 * num2);
        
        
    }
}

Ou seja, o '%d' será substituído pelo valor de %d.
Para substituir valores de variáveis float, use %f
Com multiplicação e divisão de números decimais, a coisa pode ficar bagunçada por conta das vírgulas. Por isso, vamos adicionar esse '.2' entre o '%' e o 'f', ficando %.2f.
Isso quer dizer que, após o ponto decimal, imprimir somente duas casas decimais.

Veja:


import java.util.Scanner;

public class Operacoes {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        float num1;
        float num2;
     
        System.out.print("Digite o primeiro número: ");
        num1 = entrada.nextFloat();
     
        System.out.print("Digite o segundo número: ");
        num2 = entrada.nextFloat();
     
        System.out.printf("\n%.2f + %.2f = %.2f\n", num1, num2, num1 + num2);
        System.out.printf("%.2f - %.2f = %.2f\n", num1, num2, num1 - num2);
        System.out.printf("%.2f * %.2f = %.2f\n", num1, num2, num1 * num2);
        System.out.printf("%.2f / %.2f = %.2f\n", num1, num2, num1 / num2);
     
     
    }
}


Experimente tirar o '.2' e veja a bagunça que fica na hora de multiplicar e dividir.

Divisão

Não divida nada por zero. Isso não existe.
Não é infinito (ou -infinito). É uma indefinição matemática.

Outra detalhe que você deve atentar é a divisão de inteiros. Quanto é 5/2?
Vamos ver o que o Java nos dizer com o seguinte programa:

import java.util.Scanner;

public class Operacoes {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int num1=5;
        int num2=2;
     
        System.out.println(num1/num2);
     
     
    }
}
run: 2 BUILD SUCCESSFUL (total time: 0 seconds)

2 ?
"Putz, como meu computador é burro!"

Calma, agora teste:
import java.util.Scanner;

public class Operacoes {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        float num1=5;
        float num2=2;
     
        System.out.println(num1/num2);
     
     
    }
}
run: 2.5 BUILD SUCCESSFUL (total time: 0 seconds)

Ou seja, divisões de inteiros retornam resultados inteiros. Mesmo se o resultado 'de verdade' fosse 2.999999, o Java retornaria somente a parte inteira, que é 2, e não 3.
Em termos técnicos, o Java trunca a parte decimal. Simplesmente descarta ela.

Resto da divisão

Voltando ao 5 / 2: caso a operação seja feita com inteiro, você sabe que o resultado é 2. Porém, terá um resto, que será 1.
Pois: 5 = 2 * 2 + 1

O símbolo de resto da divisão é %.
Assim, 8 % 3 = 2. Pois: 8 = 3*2 + 2

Em matemática chamamos de 'mod', de módulo: 8 mod 3 = 2

No Brasil, é aquele 'resto' que deixávamos lá embaixo nas continhas do colégio:
Operações Matemáticas em Java

Teste:
public class Operacoes {

    public static void main(String[] args) {
     
        System.out.println(2009%19);
     
     
    }
}

Veremos e usaremos bastante o resto da divisão em várias questões/algoritmos.
Por exemplo, todo número par deixa resto da divisão por 2 igual à 0. Isso é uma informação valiosíssima.

Precedência dos operadores e uso dos parênteses

Para não existir confusão e mais de um resultado possível, o Java adota uma precedência de seus operadores:

1o: Multiplicação (*), Divisão (/) e resto da divisão (%) são calculados primeiro. Caso existam mais de um na mesma expressão, o Java impõe a precedência como sendo da esquerda pra direita na expressão.

2o: Adição (+) e Subtração(-) depois dos operadores acima serem calculados, esses são calculados. Caso existam mais de um na mesma expressão, o Java impõe a precedência como sendo da esquerda pra direita na expressão.

Para não existir confusão e para deixar seu código sempre mais claro, separe as expressões com parênteses. Por exemplo, como se calcula média dos números a e b?
a + b / 2 -> errado
(a + b)/2 -> certo

Os parentêses formam um bloco. É como se o que estivesse ali dentro fosse calculado separadamente.

No exemplo de inicio deste capítulo: 1 + 2 * 2
Dependendo do que você quer, divida em em parantêses que ficará implícito.

Veja:
1 + 2 * 2 = 5 (precedência do * perante ao +, em Java)
(1 + 2) * 2 = 6
1 + (2 * 2) = 5

É fácil ver que fica mais claro e organizado com o uso dos parênteses.


Exercícios:
1. Crie um programa que recebe suas três notas (colégio, faculdade) e calcule a média final.
2. Crie um programa que receba a altura e o peso do usuário, e diga seu IMC (Índice de Massa Corporal), dado pela fórmula:
Curso de Java online grátis com apostila para download

7 comentários:

Anônimo disse...

Fiz dessa forma:

package exerciciooperacoes;

import java.util.Scanner;

public class ExercicioOperacoes {
//1. Crie um programa que recebe suas três notas (colégio, faculdade) e calcule a média final.
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int num1;
int num2;
int num3;
System.out.println("Digite o primeiro numero");
num1 = entrada.nextInt();
System.out.println("Digite o segundo numero");
num2 = entrada.nextInt();
System.out.println("Digite o terceiro numero");
num3 = entrada.nextInt();

System.out.println((num1 + num2 + num3)/3);

//2. Crie um programa que receba a altura e o peso do usuário, e diga seu IMC (Índice de Massa Corporal), dado pela fórmula:
//IMC = Peso/altura2

int num4;
float num5;
System.out.println("Digite seu peso");
num4 = entrada.nextInt();
System.out.println("Digite sua altura");
num5 = entrada.nextFloat();
System.out.println(num4/(num5*num5));

}

}

GM_Fenix disse...

Fiz uma simulação e ficou assim :
//Primeiramente quero agradecer ao Blog pelo excelente conhecimento fornecido.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication7;

import java.io.PrintStream;
import java.util.Scanner;

/**
*
* @author xsamu
*/
public class JavaApplication7 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
float num1;
float num2;
float num3;
System.out.println("Vamos calcular sua media de 3 notas");
System.out.print("Digite a primeira nota:");
num1 = entrada.nextFloat();
System.out.print("digite a segunda nota:");
num2 = entrada.nextFloat();
System.out.print("Digete a terceira nota:");
num3 = entrada.nextFloat();

System.out.printf("\nAqui está a sua media:\n"+"("+"%.2f+%.2f+%.2f"+")"+"/3"+" = %.2f",num1 ,num2 ,num3 ,(num1+num2+num3)/3);

float num4;
float num5;
System.out.println("Vamos Calcular sua ICM");
System.out.println("Coloque aquisua altura:");
num4 = entrada.nextFloat();
System.out.println("Agora indique o seu peso:");
num5 = entrada.nextFloat();

System.out.printf("Aqui está o seu ICM:\n"+"%.2f/%.2f*%.2f = %.2f",num4,num5,num5, (num5*num5)/num4);

System.out.println(" Obrigado.");

}
}

GM_Fenix disse...

Eu acabei fazendo uma simulação:
//Primeiramente quero agradecer ao Blog pelo o excelente estudo fornecido.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication7;

import java.io.PrintStream;
import java.util.Scanner;

/**
*
* @author xsamu
*/
public class JavaApplication7 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
float num1;
float num2;
float num3;
System.out.println("Vamos calcular sua media de 3 notas");
System.out.print("Digite a primeira nota:");
num1 = entrada.nextFloat();
System.out.print("digite a segunda nota:");
num2 = entrada.nextFloat();
System.out.print("Digete a terceira nota:");
num3 = entrada.nextFloat();

System.out.printf("\nAqui está a sua media:\n"+"("+"%.2f+%.2f+%.2f"+")"+"/3"+" = %.2f",num1 ,num2 ,num3 ,(num1+num2+num3)/3);

float num4;
float num5;
System.out.println("Vamos Calcular sua ICM");
System.out.println("Coloque aquisua altura:");
num4 = entrada.nextFloat();
System.out.println("Agora indique o seu peso:");
num5 = entrada.nextFloat();

System.out.printf("Aqui está o seu ICM:\n"+"%.2f/%.2f*%.2f = %.2f",num4,num5,num5, (num5*num5)/num4);

System.out.println(" Obrigado.");

}
}

Pedro Santos Barrios disse...

Exercício 1:

package com.mycompany.olamundo;
import java.util.Scanner;

public class OlaMundo {
public static void main(String[] args){
float nota1;
float nota2;
float nota3;
float media;

Scanner entrada = new Scanner(System.in);

System.out.println("Digite a primeira nota: ");
nota1 = entrada.nextFloat();

System.out.println("Digite a segunda nota: ");
nota2 = entrada.nextFloat();

System.out.println("Digite a terceira nota: ");
nota3 = entrada.nextFloat();

media = (nota1 + nota2 + nota3) / 3;

System.out.printf("As suas notas são: %.1f, %.1f e %.1f e a sua média é %.1f", nota1, nota2, nota3, media);

}
}


Exercício 2:

package com.mycompany.olamundo;
import java.util.Scanner;

public class OlaMundo{
public static void main(String[] args){
float altura;
float peso;
float imc;
Scanner scan = new Scanner(System.in);

System.out.println("Qual sua altura? ");
altura = scan.nextFloat();

System.out.println("Qual seu peso? ");
peso = scan.nextFloat();

imc = peso / (altura * altura);

System.out.printf("Seu peso é %.1f e sua altura é %.1f e seu IMC é %.1f", peso, altura, imc);

}
}

Unknown disse...

public class Imc {

public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
float altura;
float peso;
float imc;
System.out.println("Entre com a sua altura: ");
altura = entrada.nextFloat();
System.out.println("Entre com a seu peso: ");
peso = entrada.nextFloat();
imc = peso /(altura*altura);
System.out.println("seu indice de massa corporea é: " + imc);
}
}

Robisson disse...

// MEDIA DE NOTAS
import java.util.Scanner;

public class ProgMateEXERCICIOSMediaNotas {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
float nota1;
float nota2;
float nota3;
System.out.println("Digite sua primeira nota: ");
nota1 = entrada.nextFloat();

System.out.println("Digite sua segunda nota: ");
nota2 = entrada.nextFloat();

System.out.println("Digite sua terceira nota: ");
nota3 = entrada.nextFloat();

System.out.printf("Sua média é: ");
System.out.println((nota1 + nota2 + nota3)/3);


}
}

// RESULTADO
//Digite sua primeira nota:
8
Digite sua segunda nota:
5
Digite sua terceira nota:
4
Sua média é: 5.6666665




// IMC - Deu certo, porém nãos sei se foi formatado do jeito correto!

import java.util.Scanner;
public class ProgMatematicaIMC {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
float peso;
float altura;

System.out.println("Calcule seu IMC");

System.out.println("Coloque sua altura: ");
altura = entrada.nextFloat();
System.out.println("Coloque seu peso: ");
peso = entrada.nextFloat();

System.out.printf("\nAqui esta o seu IMC: " + peso / (altura*altura));
}
}

// RESULTADO
//Calcule seu IMC
Coloque sua altura:
170
Coloque seu peso:
73

Aqui esta o seu IMC: 0.0025259515

Robisson disse...

import java.util.Scanner;

public class ProgMateEXERCICIOSMediaNotas {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
float nota1;
float nota2;
float nota3;
System.out.println("Digite sua primeira nota: ");
nota1 = entrada.nextFloat();

System.out.println("Digite sua segunda nota: ");
nota2 = entrada.nextFloat();

System.out.println("Digite sua terceira nota: ");
nota3 = entrada.nextFloat();

System.out.printf("Sua média é: ");
System.out.println((nota1 + nota2 + nota3)/3);


}
}

// RESULTADO
//Digite sua primeira nota:
8
Digite sua segunda nota:
5
Digite sua terceira nota:
4
Sua média é: 5.6666665

Contribuir com o Java Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo


Tutoriais de Java