Koşullu döngüler
Çoğu klasik programlama dili gibi, Q# bir koşula göre kesilen döngüleri destekler: yineleme sayısının bilinmediği ve çalıştırmadan çalıştırmaya farklılık gösterebileceği döngüler. Yönerge dizisi derleme zamanında bilinmediğinden, derleyici bu koşullu döngüleri kuantum çalışma zamanında belirli bir şekilde işler.
Önemli
Kuantum donanımı kısıtlamaları
Yönerge dizisinin çalıştırılacak uzunluğu önceden bilinmediğinden, koşul ölçüm sonuçlarına bağlıysa, bir koşula dayalı olarak kopan döngülerin kuantum donanımında işlenmesi zordur.
Belirli kuantum algoritmaları sınıflarında ortak bulunmalarına rağmen, geçerli donanım henüz bu tür denetim akışı yapıları için yerel destek sağlamaz. Kuantum donanımında bu tür döngülerin çalıştırılması, gelecekte maksimum sayıda yineleme uygulanarak veya ek donanım desteği kullanılabilir hale geldikçe desteklenebilir. Ancak kuantum simülatörleri ölçümlere göre tüm döngüleri çalıştırır.
Derleme döngüleri
Koşul kuantum ölçümlerine bağımlı olmadığı sürece, yönerge dizisini kuantum işlemcisine göndermeden önce koşullu döngüler tam zamanında derlemeyle işlenir. İşlevler içindeki kod her zaman geleneksel (kuantum olmayan) donanımlarda çalıştırılabildiği için özellikle işlevler içinde koşullu döngülerin kullanılması engelleyici değildir. Q#bu nedenle, işlevler içinde geleneksel while
döngülerin kullanımını destekler.
İfadeyi yinele
Programları kuantum simülatörlerinde çalıştırırken, Q# kuantum ölçümlerinin sonuçlarına bağlı denetim akışını ifade etmenizi sağlar.
Bu özellik, hesaplama maliyetlerini önemli ölçüde azaltabilen olasılığa dayalı uygulamaları etkinleştirir.
Genellikle ölçüme bağlı olan belirli bir koşul karşılanana kadar hesaplamayı yineleyen başarıya kadar yinele deseni yaygın bir örnektir. Bu tür repeat
döngüler, kuantum algoritmalarının belirli sınıflarında yaygın olarak kullanılır. Q# bu nedenle, kuantum donanımında yürütme için hala bir zorluk oluşturmalarına rağmen bunları ifade etmek için ayrılmış bir dil yapısına sahiptir.
İfade repeat
aşağıdaki formu alır
repeat {
// ...
}
until condition
fixup {
// ...
}
veya alternatif olarak
repeat {
// ...
}
until condition;
burada condition
türünde Bool
rastgele bir ifadedir.
Döngü, repeat
bir koşulu değerlendirmeden önce bir deyim bloğu çalıştırır. Koşul true olarak değerlendirilirse döngüden çıkar. Koşul false olarak değerlendirilirse, varsa isteğe bağlı fixup
bir bloğun parçası olarak tanımlanan ek bir deyim bloğu, sonraki döngü yinelemesine girmeden önce çalıştırılır.
while döngüsü
Klasik hesaplamalar için daha tanıdık görünen bir döngü, anahtar sözcüğünden while
, türünde Bool
bir ifadeden ve bir deyim bloğundan oluşan döngüdürwhile
.
Örneğin, pozitif tamsayılardan oluşan bir diziyse arr
,
mutable (item, index) = (-1, 0);
while index < Length(arr) && item < 0 {
set item = arr[index];
set index += 1;
}
Koşul olarak değerlendirildiğinde deyimi bloğu çalıştırılır true
.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin