# Estrutura de seleção

Na ciência da computação, estrutura de seleção (ou expressão condicional, ou construção condicional, ou função se-então-senão) é uma estrutura de desvio do fluxo de controle presente em linguagens de programação que realiza diferentes ações/computações dependendo se a condição/seleção é verdadeira ou falsa, em que a expressão é processada e transformada em um valor booleano. Nas linguagens de programação, usamos as palavras em inglês para expressar uma estrutura de seleção, como if, else if e else.

## Seleção simples e composta

A condição "se-então(-senão)" é uma estrutura de seleção comum em diversas linguagens de programação. Sua estrutura básica é a seguinte:
Quando o interpretador encontra o identificador "Se", ele espera em seguida uma condição booleana sob forma de expressão relacional (como por exemplo, "x > 0"), que pode ser verdadeira ou falsa. Se a condição é verdadeira, o bloco de código seguido de "Então" é executado. Caso a condição seja falsa, o bloco de código seguido de "Senão" é executado. Em ambos os casos, após a execução do bloco de código, o fluxo do programa é retornado para o ponto indicado por "Fim Se". Note que a parte do "Senão" é opcional e pode ser omitida. Caso omitida, a estrutura é chamada de seleção simples; caso contrário é chamada seleção composta.
A estrutura "Senão Se" é formada pela composição de estruturas de seleção, e um exemplo de sua estrutura é o seguinte:
No exemplo acima, caso a primeira condição seja falsa, o fluxo do programa é desviado para o bloco de código do "Senão", onde há o processamento de outra estrutura de seleção.

### Operador ternário

O operador ternário é uma estrutura de seleção composta presente em linguagens de programação derivadas de C, e sua estrutura básica é a seguinte:

## Seleção de múltipla escolha

A seleção de múltipla escolha compara um dado valor a constantes, desviando o fluxo de código para o ponto indicado pela primeira constante onde há casamento. Sua estrutura básica é:
No exemplo acima, X é uma variável e os identificadores Vx são constantes. Essa sintaxe é genérica e muitas vezes não está disponível em algumas linguagens de programação. No primeiro e no segundo caso são feitos um casamento simples. No terceiro caso é feito um casamento com V3 ou V4. No quarto caso, é feito um casamento com valores entre V5 e V10: V5, V6, V7, V8, V9 e V10. No quinto e último caso é feito um casamento por defeito (que é opcional), isto é, um casamento que é usado caso nenhum outro seja feito.
O término de um bloco de código dentro de uma estrutura de múltipla escolha depende da implementação. Tipicamente, uma palavra reservada é usada no final do bloco. Quando encontrada, o fluxo de código é desviado para "Fim Escolha", terminando a estrutura. Caso a palavra não seja encontrada, várias linguagens de programação especificam que o fluxo de execução de código é continuado no próximo caso encontrado.

## Casamento de padrões

O casamento de padrões é uma alternativa mais sofisticada para as estruturas tradicionais de seleção, comumente usadas em linguagens funcionais. Um exemplo é dado abaixo:

## Asserto

Um asserto é uma estrutura de seleção usada em programação que indica que o desenvolvedor asserta que a condição dada é sempre verdadeira. Suaestrutura básica é a seguinte:
É uma estrutura usada para auxiliar a especificação de programas, e para indicar pré-requisitos de blocos de códigos. Por exemplo, uma pré-condição é um asserto adicionado no início de um bloco de código, e determina o conjunto de estados em que o código é esperado ser executado. Da mesma forma, uma pós-condição é um asserto adicionado no final de um bloco de código, determinando o conjunto de estados em que o código é esperado após ser executado (essa técnica é parte do paradigma de programação por contratos).
No uso prático, diversas linguagens de programação modernas oferecem essa estrutura, que é verificada em tempo de execução. Caso a condição seja falsa, a execução é abortada, facilitando a depuração de um sistema.

## Notas e Referências

* ↑ Mark Summerfield (2013). Programação em Python 3. [S.l.]: Alta Books. 495 páginas. ISBN 9788576083849
* Valéria Delisandra Feltrim. «Estruturas de Controle - Parte 1» (PDF). Universidade Estadual de Maringá. Consultado em 27 de novembro de 2007
* Valéria Delisandra Feltrim. «Estruturas de Controle - Parte 2» (PDF). Universidade Estadual de Maringá. Consultado em 27 de novembro de 2007