Afirme C ++

Afirme C ++
A linguagem C ++ saiu com declarações de afirmação para ajudar os programadores a verificar as condições ou declarações que podem estar logicamente incorretas. Dentro deste artigo C ++ hoje, usaremos a declaração "assert" em nossos exemplos para ilustrar seu trabalho sobre como lançar erros se houver algum problema lógico. Se você está procurando alguma ajuda para depurar tais declarações, tem sorte de ter este artigo. Vamos iniciar nosso novo artigo do C ++ abrindo o aplicativo de console do Shell do Ubuntu 20.04 Sistema com o atalho "Ctrl+Alt+T".

Você estará criando um novo arquivo C ++ em seu terminal. Isso deve ser feito usando a consulta "Touch" dentro da concha. Assim, a consulta usada para esse fim foi exibida na imagem abaixo.

Agora, o arquivo é colocado no explorador de arquivos domésticos do sistema Linux. Temos que abrir este arquivo C ++ em um dos nossos editores instalados, eu.e., vim, texto ou nano. Então, estamos escolhendo o editor da GNU Nano para esse fim. O comando para abrir este novo arquivo é mostrado abaixo.

Exemplo 01

Vamos começar com o primeiro exemplo de uso da instrução Assert no código C ++ para validar a lógica de algumas instruções de código. Iniciamos o código com os arquivos do cabeçalho. A adição de um cabeçalho de fluxo de entrada e saída é necessária quando você está trabalhando na plataforma C ++. O espaço de nome padrão é obrigatório em C ++ com a palavra -chave "usando" e "std" nele, como você pode ver na imagem também. Para o usuário da declaração "assert", precisamos adicionar o arquivo de cabeçalho de assert para torná -lo funcional. Assim, adicionamos o “afirmador.H ”Arquivo de cabeçalho com a palavra -chave“ #include ”. O método principal () foi iniciado para fazer a execução.

Inicializamos uma variável inteira chamada "Val" com um valor de 13. Na próxima linha consecutiva, a variável "val" foi substituída com outro valor de 15. A declaração assert foi usada depois disso para verificar se a variável "val" tem igual ao valor 13. Como está logicamente incorreto e a variável "val" foi substituída com o valor 15, ele lançará uma exceção. Vamos salvar o código após a conclusão de uma função principal () com "Ctrl+s". Após salvar, precisamos voltar ao terminal para fins de compilação e execução com "Ctrl+X".

Para a compilação de código C ++, você deve precisar de algum compilador configurado no seu Ubuntu 20.04 Sistema. Assim, estamos usando a instrução de compilação G ++ no shell para compilar o arquivo “afirmam.CC ”. A compilação retorna nada em troca está nos deixando claro que o código está sintaticamente correto por toda parte. Vamos apenas executar o arquivo com nosso eterno “./a.fora ”comando no console. A execução de um arquivo retorna o erro em troca, à medida que a declaração assert retorna falsa em troca. A saída é apresentada na imagem afixada.

Se você deseja evitar a saída de erro reivindicada pela declaração assert, deve definir o sinalizador de não depuração dentro do seu código C ++. Para esse fim, você deve usar a palavra -chave "Definir" com o sinal de hash e "Ndebug" como uma bandeira na área de cabeçalho. Assim, abrimos o mesmo arquivo e adicionamos o espaço para nome após o arquivo de cabeçalho "IO". Após o espaço para nome padrão, definimos a bandeira "Ndebug" no cabeçalho e usamos o "assert.H ”Cabeçalho depois disso. Certifique -se de não alterar a sequência dos cabeçalhos mostrados abaixo. Dentro da função main (), adicionamos a declaração de cout para produzir que a desativação de assert tenha sido bem -sucedida.

Vamos compilar e executar este código atualizado novamente no shell. Ao fazer isso, não temos erros desta vez usando o "Ndebug" em nossa área de cabeçalho.

Exemplo 02

Vamos ter um novo exemplo de usar a declaração assert no código C ++. Mas desta vez, usaremos a declaração de assert em alguma função definida pelo usuário. Assim, adicionamos os arquivos de cabeçalho e o espaço para nome padrão no início do código em uma sequência. O método de defesa do usuário chamado "show ()" foi declarado, levando o valor do ponteiro do tipo inteiro em seu parâmetro.

Dentro da função show (), usamos a declaração "assert" para ver se o ponteiro passado no parâmetro não é nulo. Se for nulo, o erro será jogado. A declaração cout exibirá o valor de uma variável que o ponteiro "V" está apontando para. Dentro da função principal, inicializamos uma variável inteira "val" com um valor de 13. Dois ponteiros “A” e “B” foram inicializados para nulo. O endereço da variável "val" foi vinculado ao ponteiro "A". A função show () foi chamada com o ponteiro de passagem "A" e "B" separadamente para produzir resultados diferentes. A segunda chamada para mostrar a função deve dar uma exceção porque leva o ponteiro nulo, e a declaração assert retorna falsa em troca. Vamos salvar e executar o código.

Depois de executar este código, obtivemos o mesmo resultado que discutimos acima. Ele mostra o resultado 13 para a primeira chamada de função, eu.e., Ponteiro passou "A", enquanto a outra chamada de função mostra o erro.

Para corrigir este erro, você só precisa vincular o ponteiro "B" com a variável "val" também. Assim, fizemos o mesmo dentro do código abaixo da mascate. Substituímos a variável "val" por V1 e adicionamos outra variável, "V2". A variável V1 foi vinculada ao ponteiro "A" e V2 foi vinculada ao ponteiro "B". O script geral permanece o mesmo que mostrado.

Após a depuração e execução do código, nenhum erro foi encontrado até agora. Ambos os valores para variáveis ​​V1 e V2 foram exibidos com sucesso, como mostrado abaixo.

Exemplo 03

Vamos terminar com o último, mas não o menor exemplo de uma declaração assert no código C ++. O código contém as duas declarações afirmativas e duas declarações cout. A primeira declaração assert está verificando se a multiplicação resultar na mesma saída. Como a condição está correta logicamente, ela deve retornar verdadeira e nenhum erro será mostrado. A declaração cout será executada exibindo que a primeira declaração estava correta. A outra declaração assert está verificando novamente se a multiplicação de ambos os lados retornar a mesma saída. Como a saída não seria a mesma, será logicamente incorreto. Portanto, estará retornando falso. Devido a isso, o erro ocorrerá e a declaração cout não será executada depois disso.

Devido a erro lógico, o programa termina automaticamente após a execução do primeiro cout.

Para resolver esse problema, usaremos a bandeira "Ndebug" no código como fizemos até agora.

Desta vez, nenhum erro foi exibido, e ambas as declarações cout são executadas.

Conclusão

O artigo é sobre o uso de declaração de afirmação C ++. Tentamos o nosso melhor para demonstrar seu trabalho através da função principal () e função definida pelo usuário. Também discutimos o caminho para desativar a afirmação em C ++, eu.e., A bandeira Ndebug. Esperamos que todos os exemplos forneçam imensa ajuda.