Projelerle Q# çalışma
Azure Quantum Development Kitsürümüyle, birbirinin kaynaklarına erişebilecek birden çok Q# dosya içeren klasör yapıları olan projeleri tanımlayabilirsinizQ#. Projeler, yeniden kullanılabilir kitaplıklar oluşturmak ve kaynak kodunuzu mantıksal olarak düzenlemek için yararlıdır.
ProjeQ#, qsharp.json adlı bir Q# bildirim dosyası ve belirtilen klasör yapısında bir veya daha fazla *.qs dosyası içerir. Kullanıcı VS Code'da *.qs dosyasını açtığında veya Jupyter Notebook veya Python dosyasında değerini ayarladığındaproject_root
, derleyici bildirim dosyasını çevresindeki klasör hiyerarşisinde arar ve projenin kapsamını belirler. Bildirim dosyası bulunamazsa, derleyici tek bir dosya modunda çalışır. Proje Q# el ile veya doğrudan VS Code'da oluşturulabilir.
Önkoşullar
- Azure aboneliğinizdeki bir Azure Quantum çalışma alanı. Çalışma alanı oluşturmak için bkz. Azure Quantum çalışma alanını İçerik Oluşturucu.
- Python ve Pip'in yüklü olduğu bir Python ortamı.
- Azure Quantum Development Kit ve Python uzantısının yüklü olduğu Visual Studio Code.
- Azure Quantum
qsharp
veazure-quantum
paketleri.
Proje tanımlama Q#
Proje Q# , bir qsharp.json bildirim dosyasının ve her ikisinin de projenin kök klasöründe olması gereken bir src klasörünün (kaynak dosyaları içeren Q# ) varlığıyla tanımlanır. Programlar için Q# , Q# derleyici proje klasörünü otomatik olarak algılar. Python programları ve Jupyter Notebooks için proje klasörünü bir qsharp.init
çağrıyla belirtmeniz Q# gerekir. Ancak, bir Q# projenin klasör yapısı tüm program türleri için aynı kalır.
Proje klasörünü tanımlama (Q# programlar)
*.qs dosyası VS Code'da açıldığında, Q# derleyici klasör yapısında yukarı doğru bir qsharp.json bildirim dosyası arar. Bir bildirim dosyası bulursa, derleyici *.qs dosyaları için src dizininin tüm alt klasörlerinde aşağı doğru arama yapar ve tüm işlemleri veya işlevleri önbelleğe alır ve bildirim dosyasının dışlama kuralları uyarınca bu işlemleri ve işlevleri tüm *.qs dosyaları için kullanılabilir hale getirir.
Örneğin, bu klasör yapısı göz önünde bulundurulduğunda:
- Teleportation_project
- qsharp.json
- src
- RunTeleport.qs
- TeleportOperations
- Teleport.qs
- PrepareState
- PrepareState.qs
/src/TeleportOperation/PrepareState/PrepareState.qs dosyasını açtığınızda, Q# derleyici:
- /src/TeleportOperation/PrepareState/qsharp.json dosyasını denetler.
- qsharp.json için /src/TeleportOperation öğesini denetler.
- /srcqsharp.json denetler.
- qsharp.json denetler/.
- Projenin kök dizini olarak oluşturulur / ve bildirim dosyasının ayarlarına göre projedeki kök dizinin altındaki tüm *.qs dosyalarını içerir.
Bildirim dosyasını İçerik Oluşturucu
Bildirim dosyası, isteğe bağlı olarak yazar, lisans ve .ints alanlarını içerebilen qsharp.json adlı basit bir .json dosyasıdır. En düşük uygulanabilir bildirim dosyası dizesidir {}
. VS Code'da bir Q# proje oluşturduğunuzda, sizin için en az bildirim dosyası oluşturulur.
{}
Bildirim dosyası örnekleri
Aşağıda, bildirim dosyalarının projenizin Q# kapsamını nasıl tanımlayabildiğine ilişkin bazı örnekler verilmiştir.
Bu örnekte , yazar belirtilen tek alandır ve bu nedenle bu dizindeki tüm *.qs dosyaları ve tüm alt dizinleri projeye dahil Q# edilir.
{
"author":"Microsoft"
}
{
"author":"Microsoft",
"license":"MIT"
}
Q# Proje içinde, bildirim dosyasını kullanarak VS Code Q# Linter ayarlarına ince ayar da yapabilirsiniz. Varsayılan olarak üç Linter kuralı şunlardır:
needlessParens
: default =allow
divisionByZero
: default =warn
redundantSemicolons
: default =warn
Bildirim dosyasını kullanarak, her kuralı allow
, warn
veya error
olarak ayarlayabilirsiniz, örneğin
{
"author":"Microsoft",
"lints": [
{
"lint": "needlessParens",
"level": "allow"
},
{
"lint": "redundantSemicolons",
"level": "warn"
},
{
"lint": "divisionByZero",
"level": "error"
}
]
}
Q# proje gereksinimleri ve özellikleri
Aşağıdaki gereksinimler ve yapılandırmalar tüm Q# projeler için geçerlidir.
- Projeye eklenmesini istediğiniz tüm *.qs dosyaları, proje kök klasörünün altında olması gereken src adlı bir klasörün altında Q# olmalıdır. VS Code'da proje Q# oluşturduğunuzda,
/src
klasör otomatik olarak oluşturulur. - qsharp.json bildirim dosyası src klasörüyle aynı düzeyde olmalıdır. VS Code'da proje Q# oluşturduğunuzda , qsharp.json dosyası otomatik olarak oluşturulur.
- Kullanılabilir kaynak dosyalarındaki işlemlere ve işlevlere deyimleri kullanılarak
open
erişilebilir:
open MyMathLib;
...
Multiply(x,y);
veya ad alanına başvurarak:
MyMathLib.Multiply(x,y);
Yalnızca programlar için Q#
- Projedeki yalnızca bir Q# *.qs dosyasında tanımlı bir
@EntryPoint()
dosya olabilir. - Tanımına sahip *.qs dosyası bildirim dosyasının
@EntryPoint()
altında herhangi bir düzeyde bulunabilir. - Projenin herhangi bir yerindeki Q# bir *.qs dosyasından önbelleğe alınan tüm işlemler veya işlevler VS Code'da tahmine dayalı metin olarak görüntülenir.
- Seçili bir işlem veya işlevin ad alanı henüz eklenmediyse VS Code otomatik olarak gerekli
open
deyimi ekler.
Proje oluşturma Q# adımları
VS Code dosya gezgininde, proje kök klasörü için Q# kullanmak istediğiniz klasöre sağ tıklayın ve İçerik Oluşturucu Q# projeyi seçin veya klasörü açıp Komut Paletini >Q#Görüntüle > : projeyi Q# İçerik Oluşturucu... seçeneğini belirleyin.
VS Code, klasörde en az qsharp.json bildirim dosyası oluşturur ve şablon dosyası içeren bir
/src
Main.qs
klasör ekler.Bildirim dosyasını gerektiği gibi düzenleyin. Bkz . Bildirim dosyası örnekleri.
Kaynak dosyalarınızı Q# klasörün altına
/src
ekleyin ve düzenleyin.Projeye bir Python programından Q# veya Jupyter Notebook erişiyorsanız kullanarak kök klasör yolunu
qsharp.init
ayarlayın. Bu örnekte, programınızın projenin kök klasörüyle aynı klasörde Q# olduğu varsayılır:qsharp.init(project_root = './Teleportation_project')
VS Code'da yalnızca Q# dosyaları kullanıyorsanız, bir Q# dosyayı açtığınızda, derleyici qsharp.json bildirim dosyasını arar, proje kök klasörünü belirler ve *.qs dosyaları için alt klasörü tarar.
Not
2. adımda bildirim dosyasını ve /src
klasörü el ile de oluşturabilirsiniz.
Örnek proje
Bu kuantum ışınlama programı, daha önce gösterilen klasör yapısını temel alan ve VS Code'daki yerel simülatörde çalışan bir Q# proje örneğidir. Programı Azure Quantum donanımında veya üçüncü taraf simülatörlerinde çalıştırmak için, programınızı derleme ve Azure çalışma alanınıza bağlanma adımları için bkz. Programları kullanmaya Q# başlama ve VSCode .
Örnekte şu dizin yapısı kullanılır:
- Teleportation_project
- qsharp.json
- src
- RunTeleport.qs
- TeleportOperations
- Teleport.qs
- PrepareState
- PrepareState.qs
qsharp.json bildirim dosyası yazar ve lisans alanlarını içerir:
{
"author":"Microsoft",
"license":"MIT"
}
Q# kaynak dosyalar
Küçük bir farkla (@EntryPoint()
deyimi) kaynak dosyalar bir Q# program, Python programı veya Jupyter Notebook için aynıdır.
RunTeleport.qs ana dosyası giriş noktasını içerir ve Teleport.qs içindeki ad alanına başvururTeleportLib
.
namespace RunTeleport {
open TeleportLib; // references the TeleportLib namespace in Teleport.qs
@EntryPoint() // @EntryPoint() not necessary for Python or Jupyter Notebook programs
operation RunTeleportationExample() : Unit {
use msg = Qubit();
use target = Qubit();
H(msg);
Teleport(msg, target); // calls the Teleport() operation from Teleport.qs
H(target);
if M(target) == Zero {
Message("Teleported successfully!");
Reset(msg);
Reset(target);
}
}
}
Teleport.qs işlemi tanımlar Teleport()
ve PrepareState.qs'dan işlemi çağırırPrepareBellPair()
.
namespace TeleportLib {
open PrepareBell; // references the PrepareBell namespace in PrepareState.qs
operation Teleport(msg : Qubit, target : Qubit) : Unit {
use here = Qubit();
PrepareBellPair(here, target); // calls the PrepareBellPair() operation from PrepareState.qs
Adjoint PrepareBellPair(msg, here);
if M(msg) == One { Z(target); }
if M(here) == One { X(target); }
Reset(here);
}
}
PrepareState.qs dosyası, Bell çifti oluşturmak için standart bir yeniden kullanılabilir işlem içerir.
namespace PrepareBell {
operation PrepareBellPair(left : Qubit, right : Qubit) : Unit is Adj + Ctl {
H(left);
CNOT(left, right);
}
}
Programları çalıştırma
Programınızı çalıştırdığınız ortamın sekmesini seçin.
Bu programı çalıştırmak için VS Code'da RunTeleport.qs dosyasını açın ve Çalıştır'ı seçin.
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