Feltételes hurkok
A legtöbb klasszikus programozási nyelvhez hasonlóan támogatja azokat a hurkokat is, Q# amelyek egy feltétel alapján törnek el: olyan ciklusokat, amelyeknél az iterációk száma ismeretlen, és futtatástól futtatásig változhatnak. Mivel az utasításütemezés fordításkor ismeretlen, a fordító ezeket a feltételes hurkokat egy adott módon kezeli egy kvantum-futtatókörnyezetben.
Fontos
Kvantumhardver-korlátozások
Ha a feltétel a mérési eredményektől függ, a feltétel alapján megszakított hurkok feldolgozása kihívást jelent a kvantumhardveren, mivel a futtatandó utasításütemezés hossza nem ismert előre.
Annak ellenére, hogy a kvantum algoritmusok bizonyos osztályaiban gyakoriak, a jelenlegi hardver még nem nyújt natív támogatást az ilyen típusú vezérlési folyamat szerkezetekhez. Az ilyen típusú hurkok kvantumhardveren való futtatását a jövőben maximális számú iteráció alkalmazásával, vagy további hardvertámogatások elérhetővé válásával lehet támogatni. A kvantumszimulátorok azonban bármilyen hurkot futtatnak a mérések alapján.
Hurkok fordítása
Amíg a feltétel nem függ a kvantumméréstől, a feltételes hurkok feldolgozása igény szerinti fordítással történik, mielőtt elküldené az utasításütemezést a kvantumprocesszornak. A feltételes hurkok függvényeken belüli használata különösen nem problémamentes, mivel a függvényeken belüli kód mindig futtatható hagyományos (nem kvantumos) hardveren. Q#, ezért támogatja a hagyományos while
hurkok függvényeken belüli használatát.
Kifejezés ismétlése
A kvantumszimulátorokon futó programok lehetővé teszik a Q# kvantummérések eredményeitől függő vezérlési folyamat expressz vezérlését.
Ez a képesség lehetővé teszi a valószínűségi implementációkat, amelyek jelentősen csökkenthetik a számítási költségeket.
Gyakori példa a sikerességig ismétlődő minta, amely addig ismétli a számításokat, amíg egy bizonyos feltétel - amely általában egy méréstől függ - teljesül. Az ilyen repeat
hurkokat széles körben használják a kvantum-algoritmusok bizonyos osztályaiban. Q# ezért dedikált nyelvi szerkezettel rendelkezik a kifejezésükhöz, annak ellenére, hogy továbbra is kihívást jelentenek a kvantumhardveren való végrehajtáshoz.
A repeat
kifejezés a következő formában jelenik meg
repeat {
// ...
}
until condition
fixup {
// ...
}
vagy másik lehetőségként
repeat {
// ...
}
until condition;
ahol condition
egy tetszőleges típusú kifejezés.Bool
A repeat
ciklus egy utasításblokkot futtat egy feltétel kiértékelése előtt. Ha a feltétel igaz értéket ad vissza, a hurok kilép. Ha a feltétel false (hamis) értéket ad vissza, a rendszer a következő ciklus iterációjának megadása előtt futtat egy további, opcionális fixup
blokk részeként definiált utasításblokkot.
A while hurok
A klasszikus számításokhoz ismerősebbnek tűnő hurok a while
hurok, amely a kulcsszóból while
, egy típuskifejezésből Bool
és egy utasításblokkból áll.
Ha például arr
pozitív egész számok tömbje,
mutable (item, index) = (-1, 0);
while index < Length(arr) && item < 0 {
set item = arr[index];
set index += 1;
}
Az utasításblokk addig fut, amíg a feltétel kiértékelése a következőre történik: true
.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: