Projelerle Q# çalışma
Azure Quantum Development Kitsürümüyle, birbirinin kaynaklarına erişebilen birden çok Q# dosyaya sahip 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 bir *.qs dosyası açtığında veya bir Jupyter Notebook veya Python dosyasında öğesini ayarladığında project_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. Bir Q# proje 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ı oluşturma.
- 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.
Q# Proje tanımlama
ProjeQ#, 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çerenQ#) 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. Derleyici bir bildirim dosyası bulursa, src dizininin tüm alt klasörlerinde *.qs dosyaları için aşağı doğru arama yapar ve tüm işlemleri veya işlevleri önbelleğe alır ve bu işlemleri ve işlevleri bildirim dosyasının dışlama kurallarına göre 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:
- bir qsharp.json dosyası için /src/TeleportOperation/PrepareState/ öğesini denetler.
- qsharp.json için /src/TeleportOperation öğesini denetler.
- qsharp.json için /src öğesini 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ı oluşturma
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 proje Q# oluşturduğunuzda, sizin için en az bildirim dosyası oluşturulur.
{}
Bildirim dosyası örnekleri
Bildirim dosyalarının projenizin Q# kapsamını nasıl tanımlayabileceğini gösteren bazı örnekler aşağıda 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"
}
Proje Q# içinde, VS Code Q# Linter ayarlarına ince ayar yapmak için bildirim dosyasını da kullanabilirsiniz. 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#
- Projede yalnızca bir Q# *.qs dosyası tanımlanmış olabilir
@EntryPoint()
. - Tanımı olan *.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 eklenmezse VS Code gerekli
open
deyimi otomatik olarak 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 Proje oluştur'u Q# seçin veya klasörü açıp Komut Paletini >Q#Görüntüle > : Proje oluşturQ#... 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'tan erişiyorsanız, kullanarak
qsharp.init
kök klasör yolunu 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, dosyayı Q# açtığınızda, derleyici qsharp.json bildirim dosyasını arar, proje kök klasörünü belirler ve ardından *.qs dosyaları için alt klasörü tarar.
Not
Ayrıca, 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 Teleport()
tanımlar 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