Podmíněné smyčky
Stejně jako většina klasických programovacích jazyků podporuje smyčky, Q# které se přerušují na základě podmínky: smyčky, pro které je počet iterací neznámý a může se mezi spuštěním lišit. Vzhledem k tomu, že sekvence instrukce je v době kompilace neznámá, kompilátor zpracovává tyto podmíněné smyčky určitým způsobem v kvantovém modulu runtime.
Důležité
Omezení kvantového hardwaru
Smyčky, které se přerušují na základě podmínky, je náročné zpracovat na kvantovém hardwaru, pokud podmínka závisí na výsledcích měření, protože délka sekvence instrukce, která se má spustit, není předem známa.
Navzdory jejich běžné přítomnosti v konkrétních třídách kvantových algoritmů aktuální hardware zatím neposkytuje nativní podporu pro tyto druhy konstruktorů toku řízení. Spouštění těchto typů smyček na kvantovém hardwaru může být potenciálně podporováno v budoucnu zavedením maximálního počtu iterací nebo až bude k dispozici další podpora hardwaru. Kvantové simulátory však budou spouštět všechny smyčky založené na měřeních.
Kompilovací smyčky
Pokud podmínka nezávisí na kvantových měřeních, před odesláním sekvence instrukce do kvantového procesoru se podmíněné smyčky zpracovávají kompilací za běhu. Zejména použití podmíněných smyček v rámci funkcí je neproblematické, protože kód v rámci funkcí může vždy běžet na konvenčním (nekvantových) hardwaru. Q#proto podporuje použití tradičních while
smyček v rámci funkcí.
Výraz opakování
Při spouštění programů na kvantových simulátorech umožňuje vyjádřit tok řízení, Q# který závisí na výsledcích kvantových měření.
Tato funkce umožňuje pravděpodobnostní implementace, které mohou výrazně snížit výpočetní náklady.
Běžným příkladem je vzorec opakování do úspěchu , který opakuje výpočet, dokud není splněna určitá podmínka , která obvykle závisí na měření. Takové repeat
smyčky jsou široce používány v konkrétních třídách kvantových algoritmů. Q# proto má vyhrazený jazykový konstruktor, který je vyjadřuje, přestože stále představují výzvu pro provádění na kvantovém hardwaru.
Výraz repeat
má následující tvar.
repeat {
// ...
}
until condition
fixup {
// ...
}
nebo alternativně
repeat {
// ...
}
until condition;
where condition
je libovolný výraz typu Bool
.
Smyčka repeat
spustí blok příkazů před vyhodnocením podmínky. Pokud se podmínka vyhodnotí jako true, smyčka se ukončí. Pokud se podmínka vyhodnotí jako false, před zadáním další iterace smyčky se spustí další blok příkazů definovaných jako součást volitelného fixup
bloku, pokud je k dispozici.
Smyčka while
Známější smyčkou pro klasické výpočty je smyčka while
, která se skládá z klíčového slova while
, výrazu typu Bool
a bloku příkazů.
Pokud arr
je například pole kladných celých čísel,
mutable (item, index) = (-1, 0);
while index < Length(arr) && item < 0 {
set item = arr[index];
set index += 1;
}
Blok příkazů se spustí, pokud se podmínka vyhodnotí jako true
.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro