Q# ga kirish Kvant dasturiy ta'minotini ishlab chiqishga kirish


Birlik aslida bekor yoki Yo'q. Bu bo'sh qiymatni / qiymat yo'qligini anglatadi. Int


Download 250.35 Kb.
Pdf ko'rish
bet4/5
Sana08.02.2023
Hajmi250.35 Kb.
#1177349
1   2   3   4   5
Bog'liq
Q# ga kirish - Kvant dasturiy ta\'minotini ishlab chiqishga kirish

Birlik aslida bekor yoki Yo'q. Bu bo'sh qiymatni / qiymat yo'qligini anglatadi.
Int - 64 bitli imzolangan butun son. E'tibor bering, bu 32-bit o'rniga 64-bit; Aksariyat klassik
tillar buni "uzoq" deb ataydi.
Double - 64 bitli suzuvchi nuqtali raqam. Bu C uslubidagi tillarda "double" yoki Pythonda
"float" bilan bir xil.
Bool mantiqiy qiymatdir, true yoki false .
String - bu Unicode belgilar ketma-ketligi. Bu C# / Java qatori yoki Pythondagi str ga
o'xshaydi.
Qubit - bu qubit. U hech qanday ma'lumotni oshkor etmaydi (u shaffof emas), lekin siz
kvant eshiklari bo'lgan kubitlarda harakat qilishingiz mumkin (boshqa hamma narsa kabi
operatsiyalar sifatida belgilanadi).
Natija kubit o'lchovi natijasini bildiradi. Bu samarali ravishda ikkita mumkin bo'lgan
qiymatga ega bo'lgan enum: ga mos keladigan nol
holat va ga mos keladigan One
davlat.
Diapazon Python-dagi diapazonlarga o'xshaydi - diapazon diskret boshlanish, qadam
o'lchami va to'xtashga ega bo'lgan butun sonlar ketma-ketligidir.
O'zgaruvchilar bilan ishlash
Q# o'zgaruvchan o'zgaruvchilarni (ularni aniqlagandan keyin o'zgartirishingiz mumkin)
o'zgarmas o'zgaruvchilardan ajratadi. Siz let kalit so'zi bilan yangi o'zgarmas o'zgaruvchini
belgilashingiz mumkin :
O'zgaruvchining turi kompilyator tomonidan avtomatik ravishda aniqlanadi. Bunday holda, u Int
ga o'rnatiladi. var1 o'zgarmas bo'lgani uchun u har doim 0 qiymatiga ega bo'ladi. Keyinchalik
uni o'zgartirib bo'lmaydi.
O'zgaruvchan o'zgaruvchilar mutable kalit so'zi bilan e'lon qilinishi mumkin :
Bu holda, 
var2
String hisoblanadi. Uni keyinroq set kalit so'zi yordamida o'zgartirish mumkin :
|0⟩
|1⟩
let var1 = 0;
mutable var2 = "hello world";
set var2 = $"var1 = {IntAsString(var1)}";


17.12.2022, 10:07
Q# ga kirish - Kvant dasturiy ta'minotini ishlab chiqishga kirish
https://stem.mitre.org/quantum/software-tools/intro-qsharp.html
6/10
Bu shuningdek, string interpolatsiyasini ham ko'rsatadi , bu erda biror narsaning satr
qiymatini olish uchun kodni satrning o'rtasiga kiritishingiz mumkin. IntAsString funktsiyasi Int ni
satrga aylantiradi Satr interpolyatsiyasi ochilish kotirovkasining oldiga a$ qo'yish orqali
amalga oshiriladi. Ishlamoqchi bo'lgan har qanday kodni bir juft jingalak qavsga qo'yishingiz
mumkin. Bu C# da satr interpolyatsiyasi yoki Pythonda satr oldiga "f" qo'yish bilan bir xil.
Tuplar
Q# kortejlar uchun juda keng yordamga ega (bir nechta turli ob'ektlarni o'z ichiga olgan anonim
turlar). Ular juda ko'p ishlatiladi, ayniqsa qiymatlarni bitta o'zgaruvchiga ulash yoki
operatsiyadan bir nechta narsalarni qaytarish uchun. Tuple quyidagicha aniqlanadi:
Bu yangi turdagi kortejni yaratadi (Int, Int, Double). Tur avtomatik ravishda kompilyator
tomonidan aniqlanadi. Kortej ushbu yagona o'zgaruvchi sifatida uzatilishi mumkin, agar siz
tegishli narsalarni semantik jihatdan birlashtirmoqchi bo'lsangiz, bu qulay bo'lishi mumkin.
Kortejdan qiymatlarni olish, kortejni alohida o'zgaruvchilarga "ochish" orqali amalga oshirilishi
mumkin:
Avvalgidek, bu o'zgaruvchilarning turlari avtomatik ravishda aniqlanadi.
Agar siz faqat bitta qiymat haqida qayg'ursangiz, ularning o'rniga pastki chiziq qo'yish orqali
qolganlarini e'tiborsiz qoldirishingiz mumkin:
Bu birinchi qiymatni chiqarib tashlaydi va qolganlarini yolg'iz qoldiradi.
Ranglar
Q# da diapazonlar massivlarning aniq indekslarini tanlash yoki for tsikllari bilan takrorlash kabi
ishlar uchun juda ko'p ishlatiladi. Ular quyidagicha tasniflanadi:
Buni "0 dan 3 gacha" deb o'qish mumkin. Bu 0, 1, 2 va 3 qiymatlariga ega boʻlgan diapazonni
yaratadi. Q# diapazonidagi oxirgi element toʻplamga kiritilganligini unutmang ; bu oxirgi
element chiqarib tashlangan Python diapazonlaridan farq qiladi.
let someTuple = (1, 2, 3.0);
let (tuple0, tuple1, tuple2) = someTuple;
let (tuple3, _, _) = someTuple;
let range = 0..3;


17.12.2022, 10:07
Q# ga kirish - Kvant dasturiy ta'minotini ishlab chiqishga kirish
https://stem.mitre.org/quantum/software-tools/intro-qsharp.html
7/10
Agar belgilanmagan boʻlsa, diapazon standart qadam oʻlchami 1dan foydalanadi. Biroq,
diapazonlarni aniq qadam oʻlchami bilan ham aniqlash mumkin:
Ushbu sintaksisda qadam o'rta termindir. Bu 0, 2, 4, 6, 8 va 10 qiymatlariga ega bo'lgan
diapazonni ifodalaydi.
Qadam hajmi sifatida manfiy raqamni belgilash orqali diapazonlar ham kamayishi mumkin:
Bu 10 dan 1 ga o'tadi, 1 ga kamayishi bilan.
Massivlar
Q# dagi massivlar (asosan) boshqa tillardagi kabi ishlaydi. Ular kvadrat qavslar bilan
belgilanadi va indekslanadi:
Bu 10 Intsni saqlaydigan yangi o'zgaruvchan massivni belgilaydi. E'tibor bering, Q# dagi
massivlar o'zgarmas uzunlikda va ular barcha elementlar uchun bir xil ma'lumotlar turiga ega;
ular Python ro'yxatlariga o'xshamaydi.
Massiv uzunligini (o‘lchamini) olish Length funksiyasi yordamida amalga oshiriladi:
Massivdan elementni olish ko'pgina klassik tillarda bo'lgani kabi kvadrat qavslar bilan amalga
oshiriladi:
Bu massivdagi to'rtinchi elementni oladi (massivlar Q# da nol indekslangan).
Afsuski, Q# da massiv elementlarini o'zgartirish biroz g'alati . Buning sababi shundaki,
massivlarning o'zi o'zgarmasdir (ularning elementlari bo'lmasa ham), shuning uchun massivni
o'zgartirish yangi massiv yaratish, tarkibini ko'chirish va nusxalash jarayonida tegishli
indekslarni o'zgartirishni anglatadi. Elementlarni o'zgartirish ushbu sintaksis bilan amalga
oshiriladi:
let rangeWithStep = 0..2..10;
let negativeRange = 10..-1..1;
mutable intArray = new Int[10];
let arrayLength = Length(intArray);
let array3 = intArray[3];
set intArray w/= 3 <- 22;


17.12.2022, 10:07
Q# ga kirish - Kvant dasturiy ta'minotini ishlab chiqishga kirish
https://stem.mitre.org/quantum/software-tools/intro-qsharp.html
8/10
Ushbu noodatiy sintaksis "qo'llash va almashtirish" operatori deb ataladi. U asosan intArray
qiymatlarini bir xil o'lchamdagi va turdagi yangi massivga ko'chiradi, lekin 3-indeksdagi
elementni 22 qiymatiga almashtiradi, so'ngra intArray o'zgaruvchisini yangi massivga
tayinlaydi. Bu kabi bayonot bilan bir xil ishni samarali bajaradi 
intArray[3] = 22;
, faqat
qopqoq ostida bir nechta nusxa ko'chirish bilan. Aslida, an'anaviy sintaksis Q# ning oldingi
versiyasiga kiritilgan, ammo ular massivlarning o'zgarmasligini ta'minlash uchun undan xalos
bo'lishdi.
Muayyan uzunlikdagi yangi massiv yaratish va uni for tsikli davomida yangilash o'rniga,
ro'yxatga shunchaki elementlarni qo'shish osonroq bo'ladi. Massivga elementlar qo'shish
quyidagicha amalga oshirilishi mumkin:
Bu massivni 1 elementga va oxirida element sifatida "8" ga oshiradi. Har qanday o‘lchamdagi
massivlar shu tarzda birlashtirilishi mumkin, ularni elementma-element bajarish shart emas.
Q# dagi massivlar bilan bir nechta boshqa narsalarni qilishingiz mumkin (masalan, quyi
to'plamlarni olish). Bularning barchasi QSharpReference faylida ko'rsatilgan.
Oqimni boshqarish
Q# kodni boshqarishning uchta asosiy usulini qo'llab-quvvatlaydi: if iboralari, for tsikllari va
takrorlash-until tsikllari (bu do-while siklining teskarisiga o'xshaydi). Keling, birinchi ikkitasini
ko'rib chiqaylik, chunki ular eng keng tarqalgan.
Agar so'zlar boshqa C uslubidagi tillardagi kabi bajarilsa:
elif else if
boshqa tillardagi kabi .
For looplar biroz boshqacha. Q# da C-uslubi for loop mavjud emas; Buning o'rniga, biz "har bir
uchun" tsikli yoki sanab o'tish davrini ko'rib chiqadigan narsaga ega. U to'plamdagi barcha
elementlarni shunday takrorlashi mumkin:
set intArray += [8];
if someBool
{
// Do something
}
elif someOtherBool
{
// Do something else
}
else
{
// Do a third thing
}


17.12.2022, 10:07
Q# ga kirish - Kvant dasturiy ta'minotini ishlab chiqishga kirish
https://stem.mitre.org/quantum/software-tools/intro-qsharp.html
9/10
Buni an'anaviy C-uslubi for loop xatti-harakatlariga taqlid qiluvchi diapazonlar bilan ham qilish
mumkin:
Esda tutingki, diapazonning yakuniy qiymati diapazonga kiritilgan, shuning uchun agar siz
massivning har bir indeksini takrorlamoqchi bo'lsangiz, uni minus 1 uzunligida tugatishingiz
kerak, aks holda u chegaradan chiqib ketadi.
Yagona Qubit Geyts
Q# dagi kvant shlyuzlari argument sifatida bir kubitni qabul qiladigan operatsiyalar sifatida
amalga oshiriladi (va darvozaga qarab boshqa argumentlar ham mumkin). Misol uchun, agar
sizda "qubit" nomli kubit bo'lsa, X operatsiyasi X darvozasini kubitga qo'llaydi:
The
X o'qi atrofida o'zboshimchalik bilan aylanishni amalga oshiradigan darvoza,
Rx
shuningdek, aylanish burchagini qabul qiladigan funktsiya sifatida aniqlanadi:
(E'tibor bering, PI() funktsiyasi faqat qiymatini olish uchun ishlatiladi .)
Qubitni o'lchash 
M
operatsiya bilan amalga oshiriladi:

Download 250.35 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling