// Crie uma função que receba dois argumentos e retorne a soma dos mesmos.
function soma(num1, num2) {
  return num1 + num2
}

// Declare uma variável que receba a invocação da função criada acima, passando dois números quaisquer por argumento, e somando `5` ao resultado retornado da função.
let resultado = soma(1, 2) + 5

// Qual o valor atualizado dessa variável?
8

// Declare uma nova variável, sem valor.
let newvar

/*
Crie uma função que adicione um valor à variável criada acima, e retorne a string:
    O valor da variável agora é VALOR.
Onde VALOR é o novo valor da variável.
*/
function adicionarValor() {
  newvar = 25
  return `O valor da variável newvar agora é ${newvar}`
}

// Invoque a função criada acima.
adicionarValor()

// Qual o retorno da função? (Use comentários de bloco).
25

/*
Crie uma função com as seguintes características:
1. A função deve receber 3 argumentos;
2. Se qualquer um dos três argumentos não estiverem preenchidos, a função deve retornar a string:
    Preencha todos os valores corretamente!
3. O retorno da função deve ser a multiplicação dos 3 argumentos, somando `2` ao resultado da multiplicação.
*/
function challenge(param1, param2, param3) {
  if (param1 === undefined || param2 === undefined || param3 == undefined) {
    return "Preencha todos os valores corretamente!"
  }

  return (param1 * param2 * param3) + 2
}

// Invoque a função criada acima, passando só dois números como argumento.
challenge(1, 2)

// Qual o resultado da invocação acima? (Use comentários para mostrar o valor retornado).
'Preencha todos os valores corretamente!'

// Agora invoque novamente a função criada acima, mas passando todos os três argumentos necessários.
challenge(1, 2, 3)

// Qual o resultado da invocação acima? (Use comentários para mostrar o valor retornado).
8

/*
Crie uma função com as seguintes características:
1. A função deve receber 3 argumentos.
2. Se somente um argumento for passado, retorne o valor do argumento.
3. Se dois argumentos forem passados, retorne a soma dos dois argumentos.
4. Se todos os argumentos forem passados, retorne a soma do primeiro com o segundo, e o resultado, dividido pelo terceiro.
5. Se nenhum argumento for passado, retorne o valor booleano `false`.
6. E ainda, se nenhuma das condições acima forem atendidas, retorne `null`.
*/
function desafio(param1, param2, param3) {
  if (param1 !== undefined && param2 !== undefined && param3 !== undefined) {
    return (param1 + param2) / param3
  } else if (param1 === undefined && param2 === undefined && param3 === undefined) {
    return false
  } else if (param2 === undefined && param3 === undefined) {
    return param1
  } else if (param3 === undefined) {
    return param1 + param2
  }
  
  return null
}

// Invoque a função acima utilizando todas as possibilidades (com nenhum argumento, com um, com dois e com três.) Coloque um comentário de linha ao lado da função com o resultado de cada invocação.
desafio() // false
desafio(1) // 1
desafio(1, 2) // 3
desafio(1, 2, 3) // 1
