F# va boshqalar mavjud. So‘ngra Visual C# qismini tanlab, shablonlar (Templates) ichidan
ConsoleApplication qismini tanlaymiz. Yangi hosil qilinayotgan loyiha nomi (Name)ni
FirstProgramm kabi kiritib, OK tugmasini bosamiz. Natijada 1.2 rasmda keltirilgan quyidagi
oyna shakllantiriladi.
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
299
1.2-rasm. Dasturiy kod oynasi
Endi
Shakl
deb nomlangan klass yaratamiz va u klassni kodi quyidagicha:
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
namespace
Vorislik
{
class
Shakl
{
public
int
a;
public
int
b;
public
Shakl()
{
Console
.WriteLine(
"To'rtburchak elementlari"
);
}
public
Shakl(
int
a,
int
b)
{
this
.a = a;
this
.b = b;
}
public
virtual
double
Area()
{
return
a * b;
}
}
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
300
}
Endi ushbu klassdan
Shakl
klasssini vorislab
Uchburchak
klassini hosil qilamiz va yuzini qayta
aniqlaymiz.
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
namespace
Vorislik
{
class
Shakl
{
public
int
a;
public
int
b;
public
Shakl()
{
Console
.WriteLine(
"To'rtburchak elementlari"
);
}
public
Shakl(
int
a,
int
b)
{
this
.a = a;
this
.b = b;
}
public
virtual
double
Area()
{
return
a * b;
}
}
}
Main funksiya orqali chaqiramiz. Quyida chaqirish kodi berilgan.
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
namespace
Vorislik
{
class
Program
{
static
void
Main(
string
[] args)
{
Uchburchak
a =
new
Uchburchak
();
Uchburchak
a1 =
new
Uchburchak
(3, 4, 5);
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
301
Console
.WriteLine(a1.Area());
Shakl
a2 =
new
Shakl
(4,5);
Shakl
a3 =
new
Uchburchak
(2, 5, 7);
Console
.WriteLine(a3.Area());
Console
.WriteLine(a2.Area());
}
}
}
Dasturni F5 tugmasi orqali ishga tushiramiz va sinovdan o‘tkazamiz. 1.3-rasmda keltirilgan
natijaga erishamiz.
1.3-rasm. Konsol oynasi.
Agar dasturni ishlatish jarayonida biror xatolik sodir bo‘lsa, uni yoki funksional
tugmalari orqali tekshirib ko‘rish mumkin. Ushbu holda dasturning har bir operatori ketma-ket
bajarilib, zarur o‘zgaruvchi qiymatini uning nomiga sichqonchani yaqinlashtirib ko‘rish mumkin.
Shuningdek, dasturning zarur tugun nuqtasiga tugmasini bosib yoki stop operatoridan
foydalanib, ushbu tugun nuqtada o‘zgaruvchilarning qiymatlarini tekshirib ko‘rish imkoniyati
mavjud.
Amaliyot topshiriqlari
1. 10 sanoq sistemasida berilgan sonni 2,8 va 16 sanoq sistemasidagi ko’rinishini chop
qiluvchi SONNI_CHOP_QILQISH() funksiyasi polimorf funksiya ko’rinishida aniqlansin.
2. Kvadrat va bikvadrat tenglamalar ildizini topadigan KV_ILDIZ() polimorf funksiya
aniqlansin.
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
302
3. Matritsa uchun MATRITSA taynch sinfi yaratilsin. Uning vorisi sifatida to’gri burchakli
va kvadrat matritsalar ustida qo’shish (+), ayirish(-) va ko’paytirish (*) amalani
bajaradigan voris sinflar yaratilsin. Kvadrat matritsa elementlari bosh diagonalga nisbatan
simmetrik va u uchburchak ko’rinishda berilgan. Yuqoridagi amallarni bajaruvchi
funksiyalar polimorf qilib aniqlansin.
4. n o’lchamli fazoda koordinatalari bilan berilgan ikkita nuqtalar orasidagi masofani
hisoblaydigan MASOFA tayanch sinfi aniqlansin. Uning vorisi sifatida Dekart va
Chebishev fazosida nuqtalar orasidagi masofani hisoblaydigan DEKART va CHEBISHEV
sinflari yaratilsin. Nuqtalar orasidagi masofani hisoblaydaydigan funksiya polimorf qilib
aniqlansin.
5. Butun sonlarning chiziqli ro’yxatini qayta ishlash uchun RUYXAT tayanch sinfi yaratilsin.
Uning vorisi sifatida stek va navbat tuzilmalari uchun STEK va NAVBAT sinflari hosil
qilinsin va elementlarni joylash, olish amallarini bajaruvchi funcsiyalar polimorf tarzda
aniqlansin.
6. Yulduzcha va Shina topologiyalarida to‘r hosil qilish uchun umumiy harajatni hisoblovchi
programma tuzilsin. Bunda umumiy TOR sinfi yasalsin. Sinfda qurilmalar soni n,
qurilmalargacha bo‘lgan masofalar a[n], sim narxi q, konnektor narxi p saqlanadi.
TOR sinfidan YULDUZ va SHINA sinflari yasang. YULDUZ sinfida harajatlar
quyidagicha hisoblanadi:
=
+
=
n
k
k
p
q
a
S
1
)
2
(
SHINA sinfida harajatlar quyidagicha hisoblanadi:
np
q
a
S
n
n
k
+
=
=
,
1
max
Berilgan topologiya va o‘lchamlar yordamida S harajatni hisoblaydigan programma
tuzilsin.
7. Telefon muloqoti harajatini hisoblovchi TARIF sinfi tuzilsin. TARIF sinfida kiruvchi va
chiquvchi qo‘ng‘iroqlar daqiqalari soni saqlansin. TARIF sinfidan UNIVERSAL va
PROGRESS sinflari tuzilsin. UNIVERSAL tarifida harajat S=nA+mB formula yordamida
hisoblanadi. Bu yerda n - kiruvchi qo‘ng‘iroqlar soni, m – chiquvchi qung‘iroqlar soni,
A=0, B=0.03$.
PROGRESS tarifida
S=nA+ m
1
B
1
+ m
2
B
2
+ m
3
B
3
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
303
Bu yerda n - kiruvchi qo‘ng‘iroqlar soni, m – chiquvchi qung‘iroqlar soni, A=0.01$,
B
1
=0.02$, B
2
=0.01$, B
3
=0.005$
agar m≤50 bo‘lsa, m
1
= m, m
2
= m
3
= 0.
agar 501
= 50, m
2
=m-50, m
3
= 0.
agar m>100 bo‘lsa, m
1
= 50, m
2
=50, m
3
= m-100.
Berilgan tarif, kirish/chiqish qo‘ng‘iroqlari soni yordamida oylik harajatni hisoblovchi
programma tuzilsin.
8. Haqiqiy son kompyuter xotirasida
ko’rinishidagi formatda saqlanadi. Bu erda S –son ishorasini aniqlaydi. Agar son musbat
bo’lsa S=0, aks holda S=1 bo’ladi. P-son tartibi (Q-sanoq sistemasi asosining darajasi). M-
mantissa (0( )
P
S
Q
M *
1
−
ko’rinishiga keltirilib
saqlanadi.
Oldindan berilgan format o’lchamlari M, P ko’ra berilgan N sonining ichki formatini
2,10,16-
sanoq
sistemasida
ko’rsatadigan
funcsiyalari
polimorf
bo’lgan
FLOAT_FORMAT sinfi va uning avlodlari aniqlansin.
9. To’rtburchak yuzasinin hisoblash uchun TURTBURCHAK tayanch sinfi va ROMB,
KVARAT, TUGRITURTBURCHAK, TRAPETSIYA, PARALLELOGRAM avlod
sinflari yaratilsin va ularda yuzani hisoblovchi YUZA() funcsiyasi polimorf qilib
aniqlansin.
1. 10 sanoq sistemasida berilgan sonni 2,8 va 16 sanoq sistemasidagi ko’rinishini chop
qiluvchi SANOQ_SISTEMA sinfi yaratilsin.
2. Komplex sonlar ustida arifmetik amallar bajaradigan KOMPLEX tayanch sinfi yaratilsin.
Undan voris sinf sifatida komplex koeffitsientli kvadrat tenglama ildizini topadigan
KOMP_KV_TENGLAMA sinfi yaratilsin.
3. Berilgan natural n va m o’lchamdagi haqiqiy elementli matritsa uchun xotiradan joy
ajratich, qiymatlarini o’qish va chop qilish amallarini bajaradigan MATRITSA taynch sinfi
yaratilsin. Berilgan A va B matritsalar ustida A+B, A-B, A*B, amallarini bajaradigan
ARIFM_MATRITSA sinfi MATRITSA sinfidan voris sifatida yaratilsin.
4. Berilgan n o’lchamli fazoda koordinatalari bilan berilgan vectorni tavsiflovchi, y`ni
xotirada saqlash, qiymatlarini o’qish va chop qilish amalini bajaruvchi VECTOR tayanch
sinfi aniqlansin. Uning vorisi bo’lgan VECTOR_AMAL sinfida vectorlarni qo’shish va
ayirish orqali yangi vectorlar hosil qiluvchi, ikkita vectorning skalyar ko’paytmasini,
vector uzunligini va ikkita vectorlar orasidagi burchak kosinusi hisoblovchi funksiyalar–
S
P
M
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
304
a`zolalar aniqlansin.
5. Ko’phad darajasi va koeffitsientlari bilan berilgan bitta o’zgauvchili ko’phadni xotirada
saqlash, qiymat o’qish va chop qilish amalini bajaruvchi KO_PHAD tayanch sinfi
yaratilsin. Ushu sinf vorisi sifatida berilgan butun k soni uchun k-tartibli Chebishev
ko’phadi koeffitsentlarini hisoblaydigan va berilgan haqiqiy turdagi argumenti uchun
ko’phad qiymatini hisoblovchi SHEBISHEV sinfi yaratilsin.
Chebishev ko'phadlari Tn(x) quyidagi formula bilan aniqlanadi:
T0(x)=1, T1(x)=x; Tn(x)=2xTn-1 (x) - Tn-2(x), n=2,3,...
6. Kitobning nomi, muallifi, nashriyoti nomi va chop qlingan yili bo’yicha berilganlarni
xotirada xotirada saqlash, qiymat o’qish va chop qilish amalini bajaruvchi KITOB taynch
sinfi yaratilsin. Uning vorisi bo’lgan UY_KUTUBXONASI sinfida - uy manzili,
kutubxona egasi familiya, ismi haqida ma’lumotlar va unda ixtiyoriy sondagi kitoblar bilan
ishlash, qandaydir alomati boyocha kitobni izlash (muallif yoki yil bo’yicha), yangi kitobni
qo’shish va o’chirish imkoniyatlari bo’lsin.
7. Yon daftarni o’zida aks ettiruvchi YON_DAFTAR sinfi yartilsin. Unda ixtiyoriy sondagi
yozuvlar bilan ishlash, qandaydir alomati boyocha yozuvni izlash (familiya, tug’ilgan yili
yoki telefon nomeri bo’yicha), yangi yozuvni qo’shish va o’chirish imkoniyatlari bo’lsin.
8. Shaxsning familiyasi va ismi, tug’ilgan yili, jinsi, yashash manzili va telefon nomeri
bo’yicha ma’lumotlarni xotirada xotirada saqlash, qiymat o’qish va chop qilish amalini
bajaruvchi SHAXS sinfi yaratilsin. Uning vorisi qilib talabalar guruhini tavsivlovchi
TALABA_GURUHI sinfi yaratilsin. Unda qo’shimcha ravishda talabaning o’qiydigan
guruh nomi, kursi haqida ma’lumotlar bo’lishi, hamda ixtiyoriy sondagi talalbalar bilan
ishlash, qandaydir alomati boyocha talabani izlash (familiya, tug’ilgan yili yoki telefon
nomeri bo’yicha), yangi yozuvni qo’shish, o’chirish va tartiblash amallari bajarilsin.
9. Vector yordamida to’plamni hosil qilish amalinini bajaruvchi, to’plamda qiymatlarni chop
qiluvchi TO‘PLAM sinfi yaratilsin. To’plam ustida asosiy amallarni – to’plamga yangi
element qo’shish va o’chirish, tuplamlar keshishmasini, birlashmasini, hamda ayirmasini
bajaradigan funksiyalar-a`zolari bo’lgan TO‘PLAM_AMALLARI sinfi TO‘PLAM sinfi
vorisi qilib aniqlansin.
10. Berilgan satrni oqimdan o’qish, saqlash, chop qilish amallarini bajaradigan MATN sinfi
yaratilsin. Uning vorisi sifatida faqat lotin harfida yozilgan matnni shifrlaydigan va qayta
tiklaydigan SHIFRLASH sinfi aniqlansin. Shifrlash uchun lotin harflar alfaviti olinadi.
Jarayon matndagi har bir harf bo’yicha chapdan o’ng tomonga ketma-ket ravishda amalga
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
305
oshiriladi. Har qadamda alfavitni ko’rsatilgan songa siklik chapga suriladi va matndagi
ayni harfni uning hosil bo’lgan alfavitdagi o’rnidagi (indexidagi) harf bilan almashtiriladi.
Har bir qadam uchun alfavitni surish soni beriladi. Masalan, 5,3,2,4 sonlari berilgan
bo’lsin. Birinchi qadamda (matnning birinchi harfini kodlashda) alfavit 5 marta chapga
siklik suriladi va yani paytda qaralayotgan harf uning hosil bo’lgan alfavitdagi o’rni-soni
bilan almashtiriladi. Ikkinchi qadamda alfavit yana 3 marta chapga suriladi va hakoza.
To’rtinchi qadamdan keyin, ya`ni alfavit 4 marta chapga surilgandan keyin, surilshlar
ro’xati takrorlanadi.
11. Stekni amalga oshiruvchi STEK sinfi aniqlansin. Unda stekni tozalash, unga qiymat
joylashtirish, o’chirish amallari bajarilsin. Ushbu sinfning vorisi bo’lgan LABIRINT
sinfidan labirintdan chiqish masalasini echishda foydalanilsin. Labirint kvadratlardan
tashkil topgan matritsa ko’rinishida beriladi. Har bir kvadrat ochiq yoki yopiq bo’ladi.
Yopiq kvadratga kirish mumkin emas. Agar kvadrat ochiq bo’lsa uning yon tomonidan
kirish mumkin (burchagidan kirish mumkin emas). Har bir kvadrat uning matritsadagi
koordinatalari bilan beriladi. Labirintdan chiqich amalga oshirilganda topilgan yo’l chop
qilinadi (kvadratlar koordinatalari juftliklarining ketma-ketligi).
12. Shaxmat katagi ikkita belgidan tashkil topgan k katak ko’rinishida berilgan: lotin harfi (a
dan h gacha) va raqam (1 dan 8 gacha), masalan a2 yoki g5. Ularni farzin joylashgan
shaxmat taxtasidagi katak koordinatalari sifatida qarab, farzin «uradigan» kataklarni «X»,
boshqa kataklarni «0» bilan belgilab, shaxmat taxtasining ko'rinishi chop qilish imkonin
beruvchi SHAXMAT sinfi aniqlansin.
13. Ko’rsatgich asosida yaratilgan butun sonlardan iborat navbatni tavsivlovchi NAVBAT
sinfida navbat bilan ishlash, ya'ni elementlar oxiriga qo'shish, boshidan o'chirish («birinchi
kelgan – birinchi ketadi») bilan bog’liq quyidagi funksiya aniqlanishi zarur bo'ladi:
Tozalash()- bo'sh navbatni yaratuvchi (navbatni tozalovchi);
BushNavbat()- navbatni bo'shligini tekshiruvchi;
Navbatga() - navbat oxiriga yangi element qo'shuvchi;
Navbatdan()- navbatdagi birinchi elementni qaytaruvchi va uni navbatdan o’chiruvchi.
NAVBAT sinfining vorisi sifatida sonlarning umumiy navbatidan sonlarni musbat sonlar
navbatiga
va
musbat
bo’lmagan
sonlar
navbatiga
ajratuvchi
MUSBAT_MANFIY_NAVBATLAR sinfi aniqlansin.
14. Tassodifiy son hosil qiluvchisini shakllarning yuzasini va hajmini hisoblashda qo’llash
mumkin. Shunday usullardan birini Monte-Karlo usuli deyiladi va uning mohiyati
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
306
quyidagicha: faraz qilaylik, M shakl birlik kvadrat ichida to’laligicha yotibdi. Tassodifiy
son hosil qiluvchisi yordamida birlik kvadrat ichida n son tanlandi va
( )
n
orqali M shakl
ichiga tushgan sonlar miqdorini belgilaylik. U holda geometrik ma’lumki, M shakl yuzasi
taqriban
( )
n
n
qiymatiga teng bo’ladi va n qanchalik ko’p bo’lsa yuzaning haqiqiy
qiymaiga
yaqinlashamiz.
Tassodiffiy
tanlangan
nuqta
sifatida
( ) ( )
,...
,
,
,
4
3
2
1
r
r
r
r
koordinatalari bilan berilgan nuqtalarni olish mumkin, bu erda
,...
,
2
1
r
r
tassodifiy son hosil
qiluvchisi tomonidan olingan sonlar. Xuddi shunday, uch o’lchamli fazodagi nuqtalarni
(
)
3
2
1
,
,
r
r
r
koordinatalari bilan tanlash orqali birlik kub ichidagi shakl hajmini hisoblash
mumkin.
Monte-Karlo usulini amalga oshiruvchi MONTE_KARLO sinfi aniqlansin va uning
yordamida analiltik ko’rinishi bilan berilgan shakl yuzasi (hajmi) hisoblansin.
15. Bitta qurilmadan ikkinchisiga kanal orqali 0 va 1 raqamlaridan iborat xabar
jo’natayotganda halal beruvchi shovqinlar ta’sirida xabar xato qabul qilinishi mumkin (0
o’rniga 1 yoki 1 o’rniga 0). Bunday xatolikni bartaraf qilish yo’llaridan biri – har bir
uzatiladigan raqmlarni uch marta takrorlashdir. Masalan, 1,0,1 xabari 1,1,1,0,0,0,1,1,1
ko’rinishida uzatiladi. Qabul qilishda esa har bir uchta raqamlar guruhi unda eng ko’p
uchragan raqam bilan almashtiriladi orqali xabar tiklanadi.
Yuqorida keltirilgan usul bilan berilgan matnni (satrni) «junatadigan» va «qabul» qiladigan
amallarni bajaruvchi HABARNI_KODLASH taynch sinfi yaratilsin. Uning vorisi qilib
berilgan matnni yuqorida keltirilgan usulda shifrlash orqali jo’natidigan va qabul qiladigan
MATN_SHIFRLASH voris sinfi yaratilsin. Bu erda matn belgilarining ASCII kodi asosida
jo’natiladi va qabul qilinadi va belgi tiklanadi.
16. Haqiqiy son kompyuter xotirasida
ko’rinishidagi formatda saqlanadi. Bu erda S –son ishorasini aniqlaydi. Agar son musbat
bo’lsa S=0, aks holda S=1 bo’ladi. P-son tartibi (Q-sanoq sistemasi asosining darajasi). M-
mantissa (0( )
P
S
Q
M *
1
−
ko’rinishiga keltirilib saqlanadi.
Oldindan berilgan format o’lchamlari M, P ko’ra berilgan N sonining ichki formatini
2,10,16- sanoq sistemasida ko’rsatadigan FLOAT_FORMAT sinfi aniqlansin.
Testlar
S
P
M
Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
307
Do'stlaringiz bilan baham: |