Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La branche conditionnelle est exprimée sous la forme d’expressions if. Une expression if se compose d’une clause if, suivie de zéro ou plusieurs clauses elif et éventuellement d’un autre bloc. Chaque clause suit le modèle
keyword condition {
<statements>
}
où keyword est remplacé par if ou elif respectivement, condition est une expression de type Boolet <statements> doit être remplacé par zéro ou plusieurs instructions. Le else-block facultatif se compose du mot clé else suivi de zéro ou plusieurs instructions placées entre accolades, {}.
Premier bloc pour lequel le condition est évalué à true s’exécutera. Le bloc else, le cas échéant, s’exécute si aucune des conditions n’est évaluée à true. Le bloc est exécuté dans sa propre étendue, ce qui signifie que toutes les liaisons effectuées dans le cadre du bloc ne sont pas visibles après la fin du bloc.
Par exemple, supposons que qubits est une valeur de type Qubit[] et r1 et r2 sont de type Result,
if r1 == One {
let q = qubits[0];
H(q);
}
elif r2 == One {
let q = qubits[1];
H(q);
}
else {
H(qubits[2]);
}
Vous pouvez également exprimer une branche simple sous la forme d’une expression conditionnelle .
Restrictions spécifiques à la cible
L’intégration étroite entre les constructions de flux de contrôle et les calculs quantiques pose un défi pour le matériel quantique actuel. Certains processeurs quantiques ne prennent pas en charge la branche en fonction des résultats de mesure. Par conséquent, la comparaison des valeurs de type Result entraîne toujours une erreur de compilation pour les programmes Q# qui sont ciblés pour s’exécuter sur ce matériel.
D’autres processeurs quantiques prennent en charge des types spécifiques de branchement basés sur les résultats de mesure. Les expressions de if plus générales prises en charge dans Q# sont compilées en instructions appropriées qui peuvent être exécutées sur de tels processeurs. Les restrictions imposées sont que les valeurs de type Result peuvent uniquement être comparées dans le cadre de la condition dans if expressions dans les opérations. En outre, les blocs d’exécution conditionnelle ne peuvent pas contenir d’expressions return ou mettre à jour des variables mutables déclarées en dehors de ce bloc.