Lab C++

Codificação Eficiente

Não basta conhecer a sintaxe, é preciso conhecer a linguagem, saber a melhor forma de fazer.

Tags: controle de fluxo

A Simplicidade do if-elseif

Mais um caso que didaticamente faz muito sentido, mas a realidade é um pouco diferente. Como a maioria reagiria à afirmação de que não existe a estrutura if-elseif na linguagem C? Pois não existe mesmo e é fácil de comprovar.

(mais…)

Pra Que Usar break no switch?

Apesar de não ser único das linguagens C e C++, a forma que a estrutura de controle de fluxo switch funciona é um pouco diferente de quando aprendemos algorítmos, ou quando aprendemos linguagens mais simples. Este post vai explicar como exatamente funciona o switch, e por que é necessário utilizar o break no switch? Será que é?

(mais…)

4 Formas de Loops For em C++

Loop é uma construção básica em uma linguagem de programação estruturada, e o loop for uma das formas mais comuns. Em C++ temos 5 formas de implementar loops for.

(mais…)

STL Algorithms: Iterando com std::for_each

C++ tem várias opções de iteração. Desde o C++98 existe o algoritmo for_each disponível. Basicamente o que este algoritmo faz é executar uma função a todos os elementos contidos em um tipo iterável, tal como um std::vector, ou um std::map, dentre diversos outros.

(mais…)

Loops For Não Ortodoxos

É comum programadores C/C++ com certa experiência não saberem como exatamente funciona o loop for. A maioria aprende um paralelo entre o For-To-Next e o for e não fica sabendo do verdadeiro poder do for em C/C++.

Veja o exemplo abaixo que valida a versão de um conjunto de nós:

for (ctnode = nnodes; ctnode--; )
    if (strcmp(refversion, nodes[ctnode].version)
        break;
if (ctnode >= 0)
    TRACE(TRACE_ERROR, "Not all nodes in same version, aborting");
(mais…)

Tratamento de Erros com C

Tratamento de erros em C pode se tornar um problema. É muito fácil se perder um conjuntos de ifs aninhados, aumentando cada vez mais a interpretação do código, dificultando, consequentemente, sua manutenção. Vamos ver um exemplo:

(mais…)