A maioria das vezes necessitamos tomar decisões no andamento do algoritmo. Essas decisões interferem diretamente no andamento do programa.
São estruturas que, dada a avaliação de uma expressão (condição), permite a escolha de um fluxo de instruções a ser executado.