Skip to content

Condicionais

Leonel Sanches da Silva edited this page May 3, 2023 · 10 revisions

Se – Senão se – Senão

Delégua fornece instruções se, senão se e senão para um fluxo condicional.

se verdadeiro {
  escreva('sim'); // Escreva "sim"
}

Instruções senão se e senão são opcionais e devem ser anexadas a uma instrução se. Cada declaração é seguida por um bloco de escopo que é executado de acordo com a condição da declaração.

O bloco de escopo de uma instrução se é executado se a condição for avaliada como verdadeira. Caso contrário, quaisquer instruções senão se anexadas serão avaliadas na ordem fornecida e, se qualquer uma dessas condições for avaliada como verdadeira, seus blocos de escopo serão executados.

Se a instrução se não for executada e nenhuma instrução senão se também não for, o bloco senão será executado, se fornecido.

// Escreva "correspondente 2"
var a = 2;
se a == 1 {
  escreva('correspondente 1');
} senao se a == 2 {
  escreva('correspondente 2');
} senao {
  escreva('sem valor correspondente');
}

// Escreva "sem comparação"
var a = 3;
se a == 1 {
  escreva('correspondente 1');
} senao se a == 2 {
  escreva('correspondente 2');
} senao {
  escreva('Sem valor correspondente');
}

Em Delégua, senao e senão são equivalentes. Como alguns dispositivos não acentuam corretamente (por exemplo, Raspberry Pis), Delégua permite elementos sem acentuação.

escolha e caso

As instruções escolha e caso em Delégua são uma maneira eficiente de encadear várias instruções se quando a comparação envolve uma variável e uma lista de valores possíveis. A sintaxe requer um valor (que é comparado a cada caso), blocos de caso e um bloco padrao, que é opcional. No início da escolha, o valor é avaliado e comparado ao valor de cada expressão caso. Se os valores foram iguais, o bloco de escopo do caso em questão é executado.

Se nenhum caso for executado, o bloco de escopo padrao será executado, se fornecido.

// Escreve como resultado "correspondente à opção 2"
escolha 1 {
  caso "1":
    escreva("correspondente à opção 1");
  caso 1:
    escreva("correspondente à opção 2");
  padrao:
    escreva("Sem opção correspondente");
}

// Escreve como resultado "Sem opção correspondente"
escolha 2 {
  caso "1":
    escreva("correspondente à opção 1");
  caso 1:
    escreva("correspondente à opção 2");
  padrao:
    print("Sem opção correspondente");
}

Dois ou mais casos podem ser o mesmo bloco:

escolha variavel {
    caso 1:
    caso 2:
        escreva("correspondente à opção 1 ou 2"); 
    padrao:
        escreva("Sem opção correspondente");
}

Cada caso pode ter mais de uma instrução:

escolha 2 {
    caso "1":
        escreva("correspondente à opção 1");
        escreva("escreva de novo 1");
    caso 1:
    caso 2:
        escreva("correspondente à opção 2"); 
        escreva("escreva de novo 2");
        escreva("escreva 3");
    padrao:
        escreva("Sem opção correspondente");
}