# 7.7 - Funções

## 🧠 Funções em JavaScript: O Poder de Reutilizar Código

### ✨ O que são funções?

Em JavaScript, **funções** são blocos de código que você pode **usar quantas vezes quiser**. Elas são como **receitas**: você define os ingredientes (parâmetros), escreve o passo a passo (corpo da função) e, quando quiser, pode usar essa receita novamente!

```javascript
function dizerOla() {
  console.log("Olá, mundo!");
}

dizerOla(); // Vai mostrar: Olá, mundo!
```

> 💡 Usar funções ajuda a deixar seu código mais **organizado**, **limpo** e **reutilizável**.

***

### 🧱 Estrutura de uma função

```javascript
function nomeDaFuncao(param1, param2) {
  // instruções que serão executadas
  return resultado;
}
```

Vamos ver um exemplo prático:

```javascript
function somar(a, b) {
  return a + b;
}

console.log(somar(3, 7)); // Vai mostrar: 10
```

* `function`: palavra-chave para criar uma função
* `somar`: nome da função
* `a` e `b`: parâmetros (valores que a função recebe)
* `return`: diz qual valor a função vai devolver

***

### 🤹‍♀️ Parâmetros e argumentos

Parâmetros são como **variáveis locais** que só existem dentro da função. Quando você chama a função, passa os **argumentos** (os valores reais).

```javascript
function apresentar(nome) {
  console.log("Olá, " + nome + "!");
}

apresentar("Lucas"); // Vai mostrar: Olá, Lucas!
```

***

### 🧩 Funções com e sem retorno

* ✅ **Com retorno**: a função devolve um valor com `return`
* 🚫 **Sem retorno**: a função só executa algo, como imprimir no console

```javascript
// Com retorno
function dobro(numero) {
  return numero * 2;
}

let resultado = dobro(4); // resultado vale 8

// Sem retorno
function mostrarMensagem() {
  console.log("Seja bem-vindo(a)!");
}
```

***

### 🎭 Funções anônimas e funções como variáveis

Você também pode guardar funções dentro de variáveis:

```javascript
const saudacao = function() {
  console.log("Oi! Tudo bem?");
};

saudacao(); // Oi! Tudo bem?
```

***

### ⚡ Arrow Functions (funções de seta)

Uma forma mais moderna e compacta de escrever funções!

```javascript
const multiplicar = (x, y) => {
  return x * y;
};

console.log(multiplicar(2, 5)); // 10
```

Se for só **uma linha de retorno**, dá pra deixar ainda mais simples:

```javascript
const quadrado = n => n * n;

console.log(quadrado(4)); // 16
```

***

### 📦 Dica bônus: funções podem chamar outras funções!

```javascript
function dobro(n) {
  return n * 2;
}

function mostrarDobro(n) {
  console.log("O dobro é " + dobro(n));
}

mostrarDobro(6); // O dobro é 12
```

***

### 🧪 Pratique aí!

Tente criar uma função chamada `boasVindas` que recebe um nome e imprime:

```
Bem-vindo(a), [nome]! 😊
```

Exemplo de chamada:

```javascript
boasVindas("Marina"); // Bem-vindo(a), Marina! 😊
```

***

### 🚀 Conclusão

Funções são **fundamentais** em qualquer linguagem de programação. Elas te ajudam a:

* Organizar melhor o código
* Evitar repetição
* Criar programas mais inteligentes e fáceis de manter

> 🧠 *“Programar é ensinar o computador a seguir suas instruções. E as funções são os seus superpoderes para isso!”*
