package intro;
public class Main {
// static: método da classe
// int: tipo de retorno
// int,int: tipo da entrada (parâmetros, argumentos)
static int multiplica(int multiplicando,
int multiplicador) {
int resultado = 0;
for (int i = 0; i < multiplicador; i++) {
resultado += multiplicando;
}
return resultado;
}
// 2, 3
static int potencia(int base, int exp) {
if (exp < 0) {
throw new IllegalArgumentException("expoente negativo nao eh permitido");
}
int resultado = 1;
for (int i = 0; i < exp; i++) {
resultado = multiplica(base, resultado);
}
return resultado;
}
static int quadrado(int base) {
return potencia(base, 2);
}
static int cubo(int base) {
return potencia(base, 3);
}
// main tab
public static void main(String[] args) {
// ASSERTIVA: expressão verdadeira
System.out.println(1 == 1);
//
System.out.println(0.1 == 0.1);
System.out.println(0.1 + 0.1 == 0.2);
System.out.println(0.1 + 0.1 + 0.1 == 0.3); // false?!?!?!
System.out.println(0.1 + 0.1 + 0.1); // 0.30.....4
// Floating Point Problem
System.out.println(multiplica(5, 3) == 15);
System.out.println(multiplica(2,12) == 24);
// assertiva (caso de teste)
// qual é a especificação?
// especificação é um contrato
// casos de teste felizes
System.out.println(potencia(2, 3) == 8);
System.out.println(potencia(3, 2) == 9);
// casos de teste tristes
System.out.println(potencia(3, 1) == 3);
System.out.println(potencia(3, 0) == 1);
// exceção: caso negado
try {
System.out.println(potencia(3, -2));
} catch (Exception e) {
System.out.println(e);
}
System.out.println(quadrado(5) == 25);
System.out.println(cubo(5) == 125);
}
}