---
# System prepended metadata

title: '# C++ Avançado'

---

# Enum

Em C++, enumeração (enum) é um recurso que permite definir um novo tipo de dado que consiste em um conjunto de constantes nomeadas. Essas constantes têm um valor inteiro associado por padrão, começando de 0 e aumentando em uma unidade para cada constante seguinte. No entanto, você pode atribuir valores específicos às constantes manualmente, se necessário.


**Sintaxe:**
```cpp
enum NomeDaEnumeracao {
    CONSTANTE1,
    CONSTANTE2,
    CONSTANTE3 = valor,
    // ...
};
```

**Exemplo**:

```cpp
#include <iostream>

// Declaração da enumeração
enum DiasDaSemana {
    SEGUNDA,
    TERCA,
    QUARTA,
    QUINTA,
    SEXTA,
    SABADO,
    DOMINGO
};

int main() {
    // Acessando e utilizando a enumeração
    DiasDaSemana dia = TERCA;

    if (dia == QUARTA) {
        std::cout << "Hoje é quarta-feira!" << std::endl;
    } else {
        std::cout << "Hoje não é quarta-feira." << std::endl;
    }

    switch (dia) {
        case SEGUNDA:
            std::cout << "Segunda-feira" << std::endl;
            break;
        case TERCA:
            std::cout << "Terça-feira" << std::endl;
            break;
        case QUARTA:
            std::cout << "Quarta-feira" << std::endl;
            break;
        case QUINTA:
            std::cout << "Quinta-feira" << std::endl;
            break;
        case SEXTA:
            std::cout << "Sexta-feira" << std::endl;
            break;
        case SABADO:
            std::cout << "Sábado" << std::endl;
            break;
        case DOMINGO:
            std::cout << "Domingo" << std::endl;
            break;
        default:
            std::cout << "Dia inválido" << std::endl;
            break;
    }
    return 0;
}

```

# Ponteiros

Ponteiros são um conceito fundamental em linguagens de programação, incluindo C++. Eles permitem que você armazene e manipule endereços de memória, permitindo acesso direto aos dados que estão armazenados nesses endereços. Basicamente, **ponteiro são variáveis que armazenam o endereço de memória de outras variáveis.**



## Porque usar ponteiros

## Sintaxe

```cpp
#include <iostream>

int main() {
    int numero = 42;  // Variável inteira
    int* ponteiro;    // Ponteiro para um inteiro

    // Inicializando o ponteiro com o endereço da variável 'numero'
    ponteiro = &numero;

    // Imprimindo o valor e o endereço da variável 'numero'
    std::cout << "Valor de numero: " << numero << std::endl;
    std::cout << "Endereço de numero: " << &numero << std::endl;

    // Imprimindo o valor e o endereço armazenado no ponteiro
    std::cout << "Valor apontado pelo ponteiro: " << *ponteiro << std::endl;
    std::cout << "Endereço armazenado no ponteiro: " << ponteiro << std::endl;

    return 0;
}
```




# Vetores

# Tipos de paradigmas (Imperativo, declarativo...)

Os paradigmas da programação são abordagens ou estilos diferentes para projetar e desenvolver programas de computador. Cada paradigma define como o código é estruturado, como os dados são organizados e como os problemas são resolvidos.

## Imperativo

Também é chamado de paradigma procedural. Nesse tipo de construção, as instruções devem ser passadas ao computador na sequência em que devem ser executadas

Esse tipo de programação é recomendada em projetos nos quais não se espera que haja mudanças significativas ao longo do tempo (programa estático) ou quando não existirem muitos elementos compartilhados.
    

### Orientado a objetos


## Declarativo

### Lógico

### Funcional



{%hackmd @themes/dracula %}