Entenda assert em C++, C e Python

🚀 Acertando as contas!


Entenda assert em C++, C e Python


assert é uma macro ou função utilizada para verificar condições que devem ser verdadeiras em tempo de execução. Se a condição falhar, o programa geralmente é encerrado, e uma mensagem de erro é exibida. É uma ferramenta útil para depuração, garantindo que certas condições sejam atendidas durante o desenvolvimento.

Uso do assert em C++ e C

Em C++ e C, assert é uma macro definida no cabeçalho <cassert> (C++) ou <assert.h> (C). Ela é usada principalmente para validar suposições em tempo de execução e pode ser desativada em código de produção definindo a macro NDEBUG.

  • Desempenho: assert deve ser usado principalmente para depuração. Em código de produção, é comum desativá-lo para melhorar o desempenho.
  • Mensagens de Erro: Sempre que possível, forneça uma mensagem descritiva para facilitar a depuração, especialmente em projetos grandes.
  • Exceções: Para validações críticas, considere o uso de exceções (em C++ ou Python) ou verificações manuais que nunca são desativadas.


Exemplo em C++

#include <iostream>
#include <cassert>

int divide(int a, int b) {
    assert(b != 0 && "Divisor não pode ser zero!");
    return a / b;
}

int main() {
    int x = 10;
    int y = 0;

    std::cout << "Divisão: " << divide(x, y) << std::endl;

    return 0;
}

Neste exemplo, assert(b != 0) garante que o divisor nunca seja zero. Se y for zero, a execução será interrompida com uma mensagem de erro.


Exemplo em C

#include <stdio.h>
#include <assert.h>

int divide(int a, int b) {
    assert(b != 0 && "Divisor não pode ser zero!");
    return a / b;
}

int main() {
    int x = 10;
    int y = 0;

    printf("Divisão: %d\n", divide(x, y));

    return 0;
}

O funcionamento é o mesmo do exemplo em C++, pois assert em C é também usado para verificar a validade das condições em tempo de execução.


Uso do assert em Python

Em Python, assert é uma declaração nativa da linguagem que funciona de forma semelhante. Se a condição for falsa, uma exceção AssertionError é lançada. Assim como em C/C++, os asserts podem ser desativados no ambiente de produção utilizando a flag -O(optimize, python -O script.py) ao executar o script.

def divide(a, b):
    assert b != 0, "Divisor não pode ser zero!"
    return a / b

x = 10
y = 0

print("Divisão:", divide(x, y))

Nesse exemplo: assert b != 0 verifica se b é diferente de zero. Se y for zero, um AssertionError será levantado com a mensagem “Divisor não pode ser zero!”, se você não usar assert ou se usar o parâmetro: -O como mencionado, a saída de erro será diferente.


Existem muitas implementações de assert principalmente em softwares que fazem testes unitários, é uma ferramenta poderosa para evitar falhas!


cpp cppdaily linguagemc python


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!