Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A ramificação condicional é expressa na forma de expressões if. Uma expressão if consiste em uma cláusula if, seguida por zero ou mais cláusulas elif e, opcionalmente, um bloco else. Cada cláusula segue o padrão
keyword condition {
<statements>
}
onde keyword é substituído por if ou elif respectivamente, condition é uma expressão do tipo Boole <statements> deve ser substituído por zero ou mais instruções. O else-block opcional consiste na palavra-chave else seguida por zero ou mais instruções incluídas em chaves, {}.
O primeiro bloco para o qual o condition avalia true será executado. O bloco else, se presente, é executado se nenhuma das condições avaliar para true. O bloco é executado em seu próprio escopo, o que significa que quaisquer ligações feitas como parte do bloco não são visíveis após o término do bloco.
Por exemplo, suponha que qubits é o valor do tipo Qubit[] e r1 e r2 são do tipo Result,
if r1 == One {
let q = qubits[0];
H(q);
}
elif r2 == One {
let q = qubits[1];
H(q);
}
else {
H(qubits[2]);
}
Você também pode expressar ramificações simples na forma de uma expressão condicional .
Restrições específicas do alvo
A estreita integração entre construções de fluxo de controle e cálculos quânticos representa um desafio para o hardware quântico atual. Alguns processadores quânticos não suportam ramificações com base em resultados de medição. Como tal, a comparação para valores do tipo Result sempre resultará em um erro de compilação para Q# programas que são direcionados para serem executados em tal hardware.
Outros processadores quânticos suportam tipos específicos de ramificação com base em resultados de medição. As expressões de if mais gerais suportadas no Q# são compiladas em instruções adequadas que podem ser executadas em tais processadores. As restrições impostas são que os valores do tipo Result só podem ser comparados como parte da condição dentro de if expressões em operações. Além disso, os blocos de execução condicional não podem conter expressões return ou atualizar variáveis mutáveis declaradas fora desse bloco.