Uploaded by barcapes03

C# DASTURLASH TILIGA KIRISH

advertisement
O‘ZBEKISTON RESPUBLIKASI OLIY VA O‘RTA
MAXSUS TA’LIM VAZIRLIGI
AL-XORAZMIY NOMIDAGI URGANCH DAVLAT
UNIVERSITETI
Baltayeva Iroda, Xudayberganov Yashin,
Vaisova Nafosat
C# DASTURLASH TILIGA KIRISH
Uslubiy
qo‘llanma
UrDU
ilmiy-uslubiy
kеngashining yig‘ilishi bayonnоmasiga asosan nashrga
tavsiya etilgan.
Urganch – 2015
UDK:
KBK:
Baltayeva Iroda, Xudayberganov Yashin, Vaisova Nafosat. C# dasturlash tiliga
kirish. Mas‘ul muharrir Sharipov Maqsud. Uslubiy qo‗llanma. O‗zR Oliy va
o‗rta maxsus ta‘lim vazirligi, al-Xorazmiy nomli Urganch davlat universiteti.
Urganch, Urganch davlat universiteti noshirlik bo‗limi, 2015. 80 bet.
Ushbu qo‗llanmada obyektga yo‗naltirilgan dasturlash tillaridan biri bo‗lgan
C# dasturlash tilining sintaksisi va asosiy operatorlari, tayanch tillari va C#
dasturlash tilining dasturlash mavzulari bo‘yicha masalalr dastur kodlari, mustaqil
yechish uchun
topshiriqlar keltirilgan. Mazkur qo‗llanma C#
obyektga
yo‗naltirilgan dasturlash tilini o‗rganishda muhim ahamiyatga ega bo‗lib, talabalar
va bu tilni mustaqil o‗rganuvchilar uchun uslubiy qo‗llanma bo‗lib hizmat qiladi.
Mas’ul muharrir
Taqrizchilar
ISBN:
SharipovMaqsud, t.f.n.
Qurol Navruzov, f.-m.f.d., prof.,
Firnafas Yusupov, t.f.n.
© UrDU noshirlik bo‘limi, 2015.
© Baltayeva Iroda, Xudayberganov Yashin,
Vaisova Nafosat
C# dasturlash tiliga kirish. Uslubiy qo„llanma.
2
M U N D A R I JA
Kirish.................................................................................4
1-§. C# tilining sintaksisi va asosiy operatorlar……..............6
2-§. C# tilida ifoda, instruksiya va operatorlar................15
3-§. C# dasturlash tilida chiziqli dasturlar ........................20
4-§. C# dasturlash tilida tarmoqlanuvchi dasturlar ..........33
5-§. C# dasturlash tilida takrorlanuvchi dasturlar ............43
6-§.Massivlar.....................................................................64
Foydalanilgan adabiyotlar ………..…………....…............74
3
Kirish
C# (C-Sharp) - .NET Framework platformasi uchun yaratilgan obyektga
yo'naltirilgan dasturlash tili bo‘lib,
2000 yilda A. Haylsberg va P. Goldelar
tomonidan yaratilgan. C# yaratilishida ―har bir mavjud narsa – obekt hisoblanadi‖
postulatasiga asos qilingan. Bu dasturlash tilini yaratishda A. Haylsberg va P.
Goldelar C++ tilidagi kabi imkoniyatlarni va Java dasturlash tilidagi oddiylik va
ko‘rinishni birlashtirib yangi dasturlash tili yaratishni maqsad qilganlar va natijada
C# dasturlash tili yaratilgan. Bu dasturlash tili o‘zgarmas turg‘un komponentli
arxitekturaga va yuqori saviyadagi xavfsizlik kodiga ega.
C # dasturlash tilining C ++ va Java dasturlash tillari bilan xarakterli o'xshashlik
tomonlarini quyida sanab o‘tamiz:
Java Dasturlash tili bilan
• ob'ekt yo'naltirilganlik (vorislilik)
• interfeysi
• xatoliklarni bartaraf qilish
• ko‘p oqimlilik (funksiyalilik)
• nomlar

turlar turg‘unligi

ko‘p masalalik
 havfsizlik kodiga tegishli suzuvchi nuqtaning arifmetik amallari dastur kodini
dinamik tiklash
С++ dasturlash tili bilan o‘xshash tomonlari:

ko‘p operatorlilik

havfsizlik kodiga tegishli suzuvchi nuqtaning arifmetik amallari
dastur kodini dinamik tiklash

soddalilik

ko`p komponentalilik

tushunarli interfeysi
4
Hozirgi kungacha C# tilining quyidagi versiyalari ishlab chiqilgan:
Versiya C# 1.0
Versiya C#2.0
Versiya C#3.0
Versiya C#4.0
Versiya C#4.5
Mazkur qo‗llanma Versiya C#4.0 imkoniyatlaridan foydalanilgan
holda
yaratilgan. C# dasturlash tili to‗g‗risida ma‘lumot berilgan bo‗lib, u 5 ta bosma
taboqdan iborat.
Qo‗llanmada quyidagilar keltirilgan : C# tilining sintaksisi va asosiy
operatorlari, tayanch turlari, C# tilida amallar, ifodalar va ularning yozilishi,
chiziqli dasturlar tuzish, tarmoqlanuvchi jarayonlarni dasturlash, takrorlanuvchi
jarayonlarni dasturlash, massivlar ustida amallar bajarish
bo‗yicha amaliy
mashg‗ulotlar va shu mavzular bo‗yicha har bir mavzuga alohida topshiriqlar
ishlab chiqilgan. Keltirilgan misollarni yechish yordamida talabalar operatorlar
ishlatilishi, Math sinfi va uni dasturlarda qo‗llash uchun kerakli bilimlarni olish
imkoniyatiga ega bo‗ladilar.
Ushbu qo‗llanma C# obyektga yo‗naltirilgan dasturlash tilini o‗rganishda muhim
ahamiyatga ega bo‗lib talabalar va bu tilini mustaqil o‗rganuvchilar uchun uslubiy
qo‗llanma bo‗lib hisoblanadi.
5
1-§. C# tilining sintaksisi va asosiy operatorlari
Consol rejimi. Visual Studio.NET sistemasida dasturni kompilyatsiya
qilish va bajarishning bir necha usuli bor. Ko‗p hollarda dasturchilar dasturni
alohida kompilyatsiya qilib bir nechta
tugmalar kombinatsiyalari orqali
ishlatishga o‗rganishgan.
<Ctrl> + <Shift> + <B> tugmalarini bosish orqali yoki menyuning Build>Build Solution qismini tanlash orqali dasturni kompilyatsiya qilish mumkin.
Alternativ variant sifatida instrumentlar panelidagi Build tugmasini bosish ham
mumkin.
Dasturni kompilyatsiya qilmasdan ishlatish uchun <Ctrl>+<F5>
tugmasini yoki menyuning Debug->Start Without Debugging qismini tanlash
yoki panel instrumentlar qismidagi mos tugmani bosish lozim.
using System;
class Kirish
{
static void Main(string[] args)
{
Console.WriteLine(“Kirish!”);
}
}
C# tilida yozilgan dasturni ishlatish.
1. Kodni fayllar sistemasida biror nom bilan saqlash lozim (hello.cs) 2.
Kommandalar satrida csc /debug hello.cs buyrug‗ini bajarish lozim
Ushbu buyruq bajarilgach, natijaviy .exe kengaytmali fayl hosil bo‗ladi.
Agar kompilyatsiya jarayonida xatolik yuzaga kelsa, ma‘lumot chiqariladi.
debug parametri bajariluvchi faylga maxsus simvollarni joylashtiradi. Natijada
exe faylni qayta ishlovchi dasturda taxlil qilinayotganda stekni kuzatib borishlari
mumkin.
3. Dasturni ishlatish natijasida, ekranga Kirish! yozuvi chiqariladi.
6
C# dasturlash tilida Consol rejimda dastur tuzish uchun yangi loyiha
yaratamiz. (File/New Project/Visual C#/ Console Application). Ushbu
loyihamizning nomini masalan ―Misol‖ deb nomlaymiz. Bizga C# kodini
yozish uchun yangi oyna ochiladi.
Console rejimida ishlash uchun .NET da Console sinfi ishlatiladi. Bu
sinfning afzalligi 2 ta qismdan iborat bo‗lib: uning barcha metodlari o‗zgarmas,
sanoqli bo‗lib, uni ishlatish uchun nusxalash shart emas. U kiritish, chiqarish va
xatoliklarni chiqarishni o‗z ichiga oladi. Odatda kiritish, chiqarish standart
Consolda amalga oshiriladi (agar u bo‗lmasa, masalan oynali masalalarda
chiqarish amalga oshirilmaydi), lekin kiritish va chiqarish oqimlarini
o‗zgartirish mumkin. Console bilan ishlashda asosan 4 metod ishlatiladi: Read,
ReadLine, Write, WriteLine, birinchi ikkitasi kiritish, qolgani chiqarish
metodlari hisoblanadi.
Read metodi. Read metodi kiritish qurilmalaridan belgini qabul qiladi. U
int tipida kiritilgan belgi kodini qaytaradi va hech narsa kiritilmagan bo‗lsa, -1
ni qaytaradi. Masalan:
int i = Console.Read();
Console.WriteLine(i) ; Bu dastur kiritilgan belgi kodini ekranga chiqarib beradi.
ReadLine metodi. ReadLine metodi kiritish qurilmalaridan matnning
satrini qabul qiladi (uning qiymati keyingi satrga o‗tish belgisi bilan tugaydi ). U
string tipidagi qiymat yoki null (agar kiritish amalga oshmagan bo‗lsa)
qiymatini qaytaradi. Masalan:
string s = Console.ReadLine();
Console.WriteLine("Kiritilgan satr : " + s) ;
Write va WriteLine metodlari. Write metodi unga yuborilgan
o‗zgaruvchi qiymatini ekranga chiqarish vazifasini bajaradi. U string tipini qabul
qiladi. U barcha bazali tiplar uchun ishlaydi. Shuning uchun uni parametr
sifatida chaqirish mumkin.
Console.Write (I);
7
Console.Write (0.75<3) ;
Console.Write("kirish”);
Undagi satrga o‗zgaruvchi qiymatini qo‗shib e‗lon qilish uchun quyidagi
kodni yozish kifoya:
Console.Write("Kirish, {0}", I);
Writeline metodining farqi shundaki, u keyingi (yangi) satrdan boshlab
o‗ziga yuborilgan o‗zgaruvchi qiymatini ekranga chiqarib beradi.
Endi ushbu metodlarga misolni kodini to‗liq keltiramiz:
using System;
namespace _Misol
{ class Program
{
static void Main()
{
Console.Write(“Misol”);
Console.ReadKey();
} } }
Bu dastur hozircha hech qanday ish bajarmaydi, u faqat ekranga Misol degan
yozuvni chiqaradi.
C# dasturlash tilining alfaviti
Alfavit (yoki literallar yig‗indisi) C# tilida ASCII kodlar jadvali bilan
birgalikda quyidagi
belgilarni o‗z ichiga oladi:
- Lotin harflari;
- 0 dan 9 gacha raqamlar;
- ―_‖ belgisi (harf sifatida ham ishlatiladi);
- maxsus belgilar to‗plami : {}, 1 [] + - % / \ ; : ^ ? <> = ! & # ~ *;
- boshqa belgilar.
8
C# alfaviti so‗zlarni tuzishda xizmat qiladi, ya‘ni leksemalarni tuzishda.
Leksemalarning 5 turi bor:
- Identifikator
- Kalit so‗z
- Amallar belgilari
- Literallar
-
Ajratuvchilar Deyarli barcha leksemalar o‗zining tuzilishiga ega.Ular ko‗p
alfavitlidir.
Kalit so‗zlar va nomlar. Quyida C# tilining kalit so‗zlari va
nomlari berilgan bo‗lib, dastur tuzilishi paytida ularni boshqa maqsadda ishlatish
(masalan o‗zgaruvchi nomini inisializatsiya qilishda) mumkin emas.
Kalit so‘zlar va nomlar
Abstract , Do , in, protected, true, As, double, int, public, try,Base, else,
interface, readonly, typeof, Bool, enum, internal, ref, uint, Break, event, is,
return, ulong, Byte, explicit, lock, sbyte, unchecked, Case, extern, long,
sealed, unsafe, Catch, false, namespace, short, ushort, Char, finally, new,
sizeof, using,
Checked, fixed, null, stackalloc, virtual, Class, float, object, static, void,
Const, for, operator, string, volatile, Continue, foreach, out, struct, while,
Decimal, goto, override, switch, Default, if, params, this, Delegate, implicit,
private, throw.
Izoh
C# tilida boshqa tillarda bo‗lgani kabi dasturning har bir qismiga izoh
yozish mumkin. Bu izohlar dastur kompilatsiyasida ishtirok etmaydi va dastur
ishiga hech qanday ta‘sir ko‗rsatmaydi. C# da izoh yozish uchun /* */, //
belgilaridan foydalanish mumkin. // belgisi shu belgidan keyin to shu satr
oxirigacha bo‗lgan barcha belgilarni izoh sifatida qabul qiladi. /* */ bu orqali
istalgan qismni izohga olish mumkin.
9
O‘zgaruvchi va o‘zgarmaslar
Odatda dasturlar turli sonli va boshqa tipdagi ma‘lumotlarni qayta ishlash uchun
yoziladi. Bitta dastur tarkibida uchraydigan ma‘lumotlarni bir-biridan farqlash
uchun nomlash lozim bo‗ladi va bunday nomlar identifikator deb ataladi.
Identifikator muayyan bir vaqtda ifodalab turgan son yoki boshqa turdagi
ma‘lumot uning qiymati hisoblanadi. Dasturda qatnashgan har bir identifikator
uchun kompyuter xotirasidan ma‘lum bir joy ajratiladi hamda bu joyga uning
qiymati yozib qo‗yiladi va saqlanadi. Identifikatorlar doim lotin xarflari bilan
boshlanadi. Ularni yozish uchun zarur bo‗lgan keyingi belgilar esa lotin xarflari,
raqamlar va "_" (tagiga chizish) belgisidan iborat bo‗lishi mumkin:
Y, Yl, d8, asdr12k, ism, daftar_xajmi.
Dastlabki to‗rtta identifikator sintaktik jihatdan to‗g‗ri yozilgan, ammo
identifikatorlarni bunday yozish katta hajmli dasturlarni ishlab chiqishda ma‘lum
bir qiyinchiliklarni tug‗dirishi mumkin. Chunki, ular o‗zlari ko‗rsatayotgan
ma‘lumotlarni to‗la va tushunarli qilib ifodalay olmaydi. Natijada bunday
identifikatorlarni boshqasi bilan almashtirib yuborish ehtimolligi ortadi hamda ana
shu
dasturni
o‗qish
va
tushunish
qiyinlashib
ketadi.
Shuning
uchun
identifikatorlarni keyingi ikkitasi kabi belgilash maqsadga muvofiq hisoblanadi.
Chunki ular o‗zlari ifodalayotgan o‗zgaruvchilarni ma‘lum bir darajada izohlab
turadi va shu bilan bog‗liq anglashilmovchiliklarga barham berishda muhim
ahamiyat kasb etadi.
Identifikator tanlaganda ma‘lumotlarning shakli va mazmunini hisobga olish
ham ana shunday omillardan biri hisoblanadi. Masalan, uchburchak haqidagi
masalada ehtiyojga qarab
a_tomon, b_tomon, c_tomon, yarim_perimetr, yuza,Atomon, Btomon, Ctomon
kabi identifikatorlar maqsadga muvofiq hisoblanadi.
Identifikatorlarni yozishda C# tili kompilyatori katta va kichik harflarni bir-biridan
farqlaydi, ya‘ni yuza, Yuza, YUZA, YuZa kabi identifikatorlar turli xil deb qabul
qiladi.
10
Identifikator sifatida xizmatchi so‗zlar, turli tinish va munosabat belgilaridan
foydalanib bo‗lmaydi. Shuning uchun ularni quyidagicha yozish noto‗g‗ri
hisoblanadi:
4x, X-y, G=dr, !gamma, a?b, k)l.
Agar
identifikator
dasturning
bajarilishi
davomida
o‗z
qiymatini
o‗zgartirmasa, ularni o‗zgarmaslar yoki konstantalar, aks holda o‗zgaruvchilar deb
ataladi.
O‗zgarmas ma‘lumotlar dastur matnida maxsus xizmatchi const so‗zi yordamida
alohida ta‘kidlab ko‗rsatiladi.
Masalan:
const int epsilon  25;
Shundan keyin bunday o‗zgarmas qiymatlarni dasturning bajarilishi davomida
o‗zgartirib bo‗lmaydi.
Dastur
tarkibida
uchraydigan
hamma
identifikatorlarga
kompyuter
xotirasidan joy ajratiladi va bu joyda ularning qiymatlari saqlanadi. Bu
identifikatorga murojaat qilinganda, uning uchun ajratilgan joy, ya‘ni yacheykada
saqlanayotgan ma‘lumot o‗qiladi va bu ma‘lumot identifikatorning o‗rniga
qo‗yiladi.
Identifikator uchun xotiradan ajratilayotgan joy hajmi uning tipiga bog‗liq
bo‗ladi.
Haqiqiy sonlarni oddiy usulda yozishda ularni odatdagidek yozish mumkin:
2.0, 3.4563, -1.025, -0.00125.
Ko‗chuvchi vergulli yozuvda esa haqiqiy sonning butun va kasr qismini
ajratib turuvchi vergulni ehtiyojga qarab o‗ngga yoki chapga surish mumkin.
Bunda vergulning surilish xonalariga qarab, sonning tartibi o‗zgaradi.
Masalan:
123.0  12.0  101  0.123  103  12300.0  10 2.
11
O‘zgaruvchilar va berilganlar turlari
Dastur bajarilishi paytida qandaydir berilganlarni saqlab turish uchun
o‗zgaruvchilar va konstantalardan foydalaniladi. O‗zgaruvchi – dastur obyekti
bo‗lib, xotiradagi bir nechta yacheykalarni egallaydi va berilganlarni saqlash uchun
xizmat qiladi. O‗zgaruvchi nomga, o‗lchamga va boshqa atributlarga – ko‗rinish
sohasi, amal qilish vaqti va boshqa xususiyatlarga ega bo‗ladi. O‗zgaruvchilarni
ishlatish uchun ular e‘lon qilinishi kerak. E‘lon natijasida o‗zgaruvchi xotiradan
qandaydir soha zahiralanadi, soha o‗lchami esa o‗zgaruvchining aniq turiga bog‗liq
bo‗ladi. Shuni aytib o‗tish kerakki, bitta tur uchun turli platformalarda turlicha joy
ajratilishi mumkin.
O‗zgaruvchi e‘loni uning turini aniqlovchi kalit so‗zi bilan boshlanadi va
s=a;(const a) belgisi orqali boshlang‗ich qiymat beriladi (shart emas). Bitta kalit
so‗z bilan bir nechta o‗zgaruvchilarni e‘lon qilish mumkin. Buning uchun
o‗zgaruvchilar bir – biridan ‗,‘ belgisi bilan ajratiladi. E‘lonlar ‗;‘ belgisi bilan
tugaydi. O‗zgaruvchi nomi 255 belgidan oshmasligi kerak. Literallar. C# tilida 5
xil literal mavjud ;
- Butun tipli literal
- Haqiqiy tipli literal
- Belgili literal
- Satr tipli literal
- Mantiqiy tipli literal
Literallar – bu tilning maxsus tushunchasidir. Har bir literallar to‗plami
uchun alohida yozilish qoidasi mavjud.
Masalan:
- Butun tipli literallar: 5, 7, 8, -12, 234
- Haqiqiy tipli literallar: 3.6, -56.8, 0.9
- Belgili literallar:
‗a‘, ‗b‘, ‗?‘,
- Satr tipli literallar: ―kirish‖, ―aka‖, ―abcd‖
- Mantiqiy tipli literallar: true. false
12
C# tilining tayanch turlari
Quyidagi jadvalda C# tilining tayanch turlari, ularning baytlardagi o‗lchamlari va
qiymatlarining chegaralari keltirilgan.
Tur nomi
Baytlardagi
Qiymat chegarasi
o‗lchami
Sbyte
1
-128 ..127
Byte
1
0..255
Short
2
–32768..32767
Ushort
2
0..65535
Int
4
–2147483648..2147483647
Uint
4
0..4294967295
Long
8
-9223372036854775808..
9223372036854775808
Ulong
8
0..18446744073709551615
Float
4
1.5 1045..  3.4 1038
Double
8
5.0 10324..  1.7 10308
Decimal
16
1.0 1028..  7.9 1028
Boolean
1
False va True
Char
2
`u0000`..`uffff`
Object
4(32
-
razyad),8(64
razryad)
String
-
Mantiqiy tur. Bu turdagi o‗zgaruvchi Bool kalit so‗zi bilan e‘lon qilinadi.
U turdagi o‗zgaruvchi 1 bayt joy egallaydi va false (false- yolg‗on) yoki true
qiymat (true- rost) qiymat qabul qiladi. Mantiqiy turdagi o‗zgaruvchilar qiymatlar
13
o‗rtasidagi munosabatlarni ifodalaydigan mulohazalarni rost (true) yoki yolg‗on
(false) ekanligini tavsiflashda qo‗llaniladi. Mantiqiy tur qiymatlari ustida mantiqiy
ko‗paytirish, qo‗shish va inkor amallarini qo‗llash orqali murakkab mantiqiy
ifodalarni qurish mumkin.
Butun son turlari. Butun son qiymatlarni qabul qiladigan o‗zgaruvchilar int
(butun), short (qisqa) va long (uzun) va shu kabi kalit so‗zlar bilan aniqlanadi.
O‗zgaruvchi qiymatlari ishorali bo‗lishi yoki unsigned kalit so‗zi bilan ishorasiz
son sifatida qaralishi mumkin.
Suzuvchi nuqtali son turi. Kasrli sonlarni ifodalashda suzuvchi nuqtali son
turi ishlatiladi va u float kalit so‗zi bilan e‘lon qilinadi. Bu turdagi o‗zgaruvchi
uchun xotirada 4 bayt joy ajratiladi va (ishora, tartib mantissa) qolipida sonni
saqlaydi. Agar kasrli son juda katta (kichik) qiymatlarni qabul qiladigan bo‗lsa, u
xotiradi 8 baytda ikkilangan aniqlik ko‗rinishida saqlanadi va double kalit so‗zi
bilan e‘lon qilinadi.
Belgili tur. O`z nomidan ma`lumki belgili tiplar biron bir belgidan tuzilgan
bo`lishi mumkin.
Bunda 65535 belgi uchun joy ajratiladi alfavitdan foydalanishda matematik
simvolikada shunday belgilardan foydalaniladi.
Satrli tip. Satrli tip yoki oddiygina qator string to`plamlarni saqlash va
qayta ishlashda bir butun belgilarni ajratishda foydalaniladi.
14
2-§. C# tilida ifoda, instruksiya va operatorlar
Ifodalar. Ifoda – qiymatni aniqlovchi kod satridir. Oddiy ifodaga misol:
Qiymat1=100;
Qiymat1ning o‗zi bir qiymatni aniqlovchi operator bo‗lsada, uni ham qiymat
sifatida o‗zlashtirish mumkin. Chunki u 100 qiymatini qabul qiladi. Misol
uchun: Qiymat2=Qiymat1=100; Bu misolda 100 literali avval Qiymat1ga keyin
―=― o‗zlashtirish operatori yordamida Qiymat2 o‗zgaruvchisiga
o‗zlashtiriladi. Bu bilan 100 qiymati har ikkala o‗zgaruvchiga birdaniga
o‗zlashtiriladi. Bu yo‗l bilan siz bir necha o‗zgaruvchiga bitta qiymatni
o‗zlashtirish imkoniyatiga ega bo‗lasiz.
Int a=b=c=d=g=h=l=20;
Instruksiya(Amal)
Instruksiya – bu dastur kodida tamomlangan ifodadir. C# tilidagi dastur
instruksiyalar ketma – ketligidan iborat. Har bir instruksiya ―;‖ belgisi bilan
tugallanishi kerak. Masalan:
Int x, y;
x=100;
y=0;
Shu bilan birgalikda C# da tarkibli instruksiya ham mavjud. Bunday
instruksiyalar bir necha instruksiyalardan iborat bo‗ladi. Ular ―{ }‖ figurali
qavslar orasiga olinadi. Masalan :
{
x=10;
y=9;
int a;
}
Bu misolda 3 ta oddiy instruksiyalar bitta tarkibli instruksiyada joylashadi.
15
Ajratuvchilar
C# tilida probel, tabulyatsiya va keyingi satrga o‗tish belgilari
ajratuvchilar hisoblanadi. Instruksiyalardagi ortiqcha ajratuvchilar bekor
qilinadi.
Masalan:
Qiymat1 =100 ;
Yoki
Qiymat1= 100;
Komplyator bu ikkita ifodani bir xilda komplyatsiya qiladi. Shuni aytib
o‗tish ham kerakki, satrda ajratuvchilar bekor qilinmaydigan payti ham bo‗ladi.
Agar siz Console.Writeline(―Kirish yoshlar !!!!!!‖), deb yozsangiz ―Yoshlar ‖
va ―!!!‖ orasidagi probellar (bo‗sh joylar) bekor qilinmaydi balki, bo‗sh joy
sifatida qiymat qabul qiladi. Har bir operator boshqa operator orasida kamida
bitta bo‗sh joy bo‗lishi shart:
Int x; // to‗g‗ri
Intx; // noto‗g‗ri
Matematik va mantiqiy amallar
 &,&&(mantiqiy ko‗paytirish amali)
bu amal natijasi barcha shartlar rost bo‗lgandagina true qiymat,aks holda false
qiymat qaytaradi.Dastur tuzish jarayonida bu
amaldan ikki xil ko‗rinishda
foydalanish mumkin.Ya‘ni & yoki && ko‗rinishlarda.Lekin bularning birbiridan farqi bor.
Bularning farqi shundaki, shart tekshirilayotganda bitta (ya‘ni &) amal
qo‗yilsa kompilyator barcha shartlarni tekshiradi,ikkita(ya‘ni &&) amal
ishlatilsa shartlar ichida yolg‗oni topilsa shu yerda ish tugatiladi va shart
natijasi false qiymat qaytaradi.
 |,||(matiqiy qo‗shish amali)
16
bu amal natijasi shartlalardan kamida bittasi rost bo‗lsa, true aks holda false qimat
qiymat qaytaradi.
Bu amaldan
ham dastur tuzish jarayonida ikki xil ko‗rinishda foydalanish
mumkin.Ya‘ni | yoki || ko‗rinishlarda.Bular ham bir-biridan keskin farq qiladi.
Bularning bir-biridan farqi shundaki, Dasturda shartlarni tekshirish jarayonida |
amaldan foydalanilsa barcha shartlar tekshiriladi va albatta kamida bitta shart
bajarilgandagina
true
qiymat
qaytariladi,aks
holda
false
qiymat
qaytariladi.Aksincha || amaldan foyalanilsa shartlar ketma-ket tekshirilayotgan
paytda rost qiymat qabul qiluvchi mulohaza topilsa ish tugatildi va shart natijasi
true qiymat qaytaradi, aks holda yana jarayon davom ettiriladi va mulohazalardan
barchasi bajarilmasa shart natija false qiymat qaytaradi.
Taqqоslash amallari
C# tilida qiymatlarni sоlishtirish uchun taqqоslash amallari aniqlangan
(jadval). Taqqоslash amali binar amal bo‗lib, quyidagi ko‗rinishga ega:
<оpеrand1> <taqqоslash amali> < оpеrand2>
Taqqоslash amallarining natijasi - taqqоslash o‗rinli bo‗lsa, true (rоst), aks
хolda false (yolg‗оn) qiymat bo‗ladi. Agar taqqоslashda arifmеtik ifоda qatnashsa,
uning qiymati 0 qiymatidan farqli хоlatlar uchun 1 dеb хisоblanadi.
Taqqоslash amallari va ularning qo‘llanishi
Amallar
Qo‗llanishi
Mazmo‗ni (o‗qilishi)
<
a< b
"a kichik b"
<=
a<= b
>
a> b
"a katta b "
>=
a>= b
"a katta yoki tеng b "
==
a== b
"a tеng b "
!=
a! = b
"a kichik yoki tеng b "
"a tеng emas b "
17
=!
a=!b
"a tеng emas b "
++
a=a+1
1 ga oshirish (inkriment)
--
a=a-1
1 ga kamaytirish(dekrement)
C# tilida sonlar va o‗zgaruvchilar ustida qo‗shish (+), ayirish (-),
ko‗paytirish (), bo‗lish (/), qoldiqni aniqlash (%) kabi amallardan foydalanish
mumkin.
O‘zlashtirish operatorlari
―=‖
ushbu o‗zlashtirish amali hisoblanadi
a=b;
―+=‖;
a+=b a o‗zgaruvchisiga b sonining qiymati qo‗shilib a o‗zgaruvchisiga
o‗zlashtiriladi.
―-=‖ ;
a-=b a o‗zgaruvchisidan b soni ayrilib natija a ga o‗zlashtiriladi.
*=;
a*=b a ning qiymati b ga ko‗paytirilib natija aga o‗zlashtiriladi.
/=;
a/=b a ning qiymati b ga bo‗linib, natija a ga o‗zlashtiriladi.
―%=‖
a%=b a ning qiymati b ga bo‗linib, a ni bo‗lgandagi qoldiq a o‗zgaruvchisiga
o‗zlashtiriladi.
18
C# dasturlash tilining Math sinfi
Dasturda standart matematik funksiyalaridan foydalanish uchun C# tili Math
kutubxonasini taqdim etadi. Bu sinf Pi va E konstantalar va quyidagi :

trigonometrik funksiyalar - Sin, Cos, Tan ;

teskari trigonometrik funksiyalar - ASin, ACos, ATan, ATan2 (sinx, cosx) ;

giperbolik funksiyalar - Tanh, Sinh, Cosh ;

eksponenta va logarifmik funksiyalar - Exp, Log, Log10 ;

modul , ildiz, belgi - Abs, Sqrt, Sign ;

yaxlitlash funksiyasi - Ceiling, Floor, Round ;

minimum, maksimum, daraja, qoldiq - Min, Max, Pow, IEEERemainder
kabi funksiyalarni o‗z ichiga oladi.
19
3-§. C# dasturlash tilida chiziqli dasturlar tuzish
C# tilida eng sodda dasturlarni yozish uchun quyidagi umumiy tuzilma
qabul qilingan:
1-misol. Kvadratning tomoni a berilgan .Uning perimetri aniqlansin.
1)using System;
class dars
{
public static void Main()
{
double a, P; //o„zgaruvchilarni e‟lon qilish
Console.Write("a="); // O„zgaruvchilarni chop qilish operatori
a = Convert.ToDouble(Console.ReadLine()); //O„zgaruvchilarni tashqaridan
kiritish operotori;
P = 4 * a;
Console.WriteLine("P=" + P);
Console.ReadKey(); //natijalar oynasini tutib turish operatori;
}
2-misol.To‗g‗ri to‗rtburchakning a va b katetlari berilgan bo‗lsa uning
gipatenuzasi va perimetri aniqlansin.
1-usul. using System;
class dars
{
public static void Main()
{
double a, b, c, p;
Console.Write("a=");
a = Convert.ToDouble(Console.ReadLine());
Console.Write("b=");
b = Convert.ToDouble(Console.ReadLine());
20
c = Math.Sqrt(a * a + b * b);
p = a + b + c;
Console.WriteLine("gipatenuza " + c);
Console.WriteLine("perimetr " + p);
Console.ReadKey();
}
}
2-usul.
using System;
class dars
{
public static void Main()
{
double a, b, c, p;
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt32(Console.ReadLine());
c = Math.Round(Math.Sqrt(Math.Pow(a,2)+Math.Pow(b,2)),3);
p = a + b + c;
Console.WriteLine("c=" + c);
Console.WriteLine("p=" + p);
Console.ReadKey();
}
}
3-misol. A, B va C sonlar berilgan. A ning qiymatini B ga, B ning qiymatini C ga,
C ning qiymatini A ga almashtirilsin. A, B va C sonlarning va yangi qiymati
ekranga chiqarilsin.
using System;
21
class dars
{
public static void Main()
{
int a,b,c,d;
Console.Write("a=");
a=Convert.ToInt32(Console.ReadLine());
Console.Write("b=");
b= Convert.ToInt32(Console.ReadLine());
Console.Write("c=");
c=Convert.ToInt32(Console.ReadLine());
d=a;
a=b;
b=c;
c=d;
Console.WriteLine("a="+a+" b="+b+" c="+c);
Console.ReadKey();
}
}
4-misol . x ning qiymati berilganda, y  4 * ( x  3) 6  7 * ( x  3) 3 +2 y ning qiymati
aniqlansin.
1-usul.
using System;
class kiritish
{
public static void Main()
{
double x,y ;
Console.Write("x =");
22
x =Convert.ToDouble(Console.ReadLine());
y=4*Math.Pow((x-3),6)-7*Math.Pow((x-3),3)+2;
Console.WriteLine("y ="+y);
Console.ReadKey();
}
}
2-usul.
using System;
class dars
{
public static void Main()
{
double x, y;
Console.Write("x=");
x = Convert.ToDouble(Console.ReadLine());
y = 4 * Math.Pow(x - 3, 6) - 7 * Math.Pow(x - 3,3) + 2;
Console.WriteLine(y);
Console.ReadKey();
}
}
Topshiriq
1. Uchburchakning uchta tomoni uchlari koordinatalari (x1,y1), (x2, y2), (x3, y3)
berilgan. Uning perimetri va yuzasini toping.
2. Berilgan A va B sonlarning qiymatlari almashtirilsin va yangi qiymati ekranga
chiqarilsin.
3. A, B va C sonlar berilgan. A ning qiymatini C ga, C ning qiymatini B ga, B
ning qiymatini A ga almashtirilsin. A, B va C sonlarning va yangi qiymati
ekranga chiqarilsin.
23
4. A soni berilgan .A sonining A2 , A4 , A8 darajalarini aniqlovchi programma
tuzilsin.
5. 
burchak radianda berilgan (0    2 ) .Berilgan burchakning qiymatini
gradusga o‗tkazuvchi dastur tuzilsin.
6. Qayiqning tezligi v km soat , daryo oqimining tezligi u km soat , v  u .Qayiqning
daryo oqimi bo‗yicha harakatlanish vaqti T1 ,oqimga qarshi suzish vaqti T 2 .
Qayiqning S yurgan yo‗lini aniqlovchi dastur tuzilsin.
24
Butun sonlarga oid misollar
Har xil toifadagi o‗zgaruvchilar kompyuter xotirasidan turli hajmdagi
baytlarni egallaydi. Hattoki bir toifadagi o‗zgaruvchilar ham qaysi kompyuterda va
qaysi operatsion sistemada ishlashiga qarab turli o‗lchamdagi xotirani egallashi
mumkin.
Quyidagi masalalarni yechishda faqat butun sonlardan foydalanamiz.
1-misol . Uzunlik L santimetrda berilgan.Undagi to‗liq metrlar sonini aniqlovchi
dastur tuzilsin.
1) using System;
class dars
{
public static void Main()
{
int L;
Console.Write("L=");
L = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("L=" + (L/100)+" metr");
Console.ReadKey();
}
}
2-misol . A va B (A>B) musbat sonlar berilgan.A kesmada B kesmani nechta
marta joylashtirish mumkin. A kesmada B kesmani joylashmagan qismini
aniqlovchi dastur tuzilsin.
1-usul.
using System;
class dars
{
public static void Main()
{
25
int a, b;
Console.WriteLine("a va b ni (a>b) qilib kiriting");
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("b=");
b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("a/b=" + a / b + " a%b=" + a % b);
Console.ReadKey();
}
}
2-usul.
using System;
class dars
{ public static void Main()
{
int a, b,n;
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt32(Console.ReadLine());
n = a / b;
Console.WriteLine("n=" + n);
Console.WriteLine("kesmaning qolgan qismi=" + (a-b*n));
Console.ReadKey();
}}
3-misol .Uch xonali son berilgan. Uning chapdan birinchi raqamini o‗chirib,
o‗ng tarafiga yozishdan hosil bo‗lgan sonni aniqlovchi dastur tuzilsin.
using System;
class intg13
{ public static void Main()
26
{ int a;
Console.WriteLine("uch xonali son kiriting");
Console.Write("abc=");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("bca=" + (a % 100) + (a / 100));
Console.ReadKey();
}}
Topshiriq
1. Og‗irlik M kilogrammda berilgan.Undagi to‗liq tonnalar sonini aniqlovchi
dastur tuzilsin.
2. Ikki xonali son berilgan. Uning raqamlari o‗rni almashtirishdan hosil
bo‗lgan sonni aniqlovchi dastur tuzilsin.
3. 999 dan katta son berilgan. Bir marta bo‗lib butunni va bo‗lib qoldiqni olish
operatsiyasidan foydalanib berilgan sonni mingliklar xonasidagi sonni
aniqlovchi dastur tuzilsin.
4. Kun boshidan boshlab N sekund o‗tdi. Kun boshidan boshlab qancha minut
va sekund o‗tganini aniqlovchi dastur tuzilsin.
27
Boolean tipiga oid misollar
Mantiqiy tip- faqat ikki xil kattaliklarni qabul qilishi mumkin. Rost yoki
yolg`on. Bu tip dasturning o‗zidan keyingi jarayonlarni bajarilish yoki
bajarilmasligini aniqlab beradi.
Bu yerda ikkita o‗zgaruvchi ustida matiqiy amallar bajarilishi natijalari
ko‗rsatilgan, ya‘ni chinlik jadvali berilgan.
X
Y
!x
x && y
x || y
x^y
True
True
false
True
True
False
True
False
false
False
True
True
False
True
true
False
True
True
False
False
true
False
False
False
1-misol .A butun son berilgan.Jumlani rostlikka tekshiring:‖ A musbat son‖.
1-usul.
using System;
class bool_1
{ public static void Main()
{bool n;
int A;
Console.WriteLine("Butun son kiriting");
Console.Write("A=");
A = Convert.ToInt32(Console.ReadLine());
n = (A >= 0);
Console.WriteLine("n=" + n);
Console.ReadKey();
}}
2-usul.
28
using System;
class bool_1_1
{ public static void Main()
{ int A; bool n;
Console.Write("a=");
A = Convert.ToInt32(Console .ReadLine());
n = A > 0;
Console.WriteLine(n);
Console.ReadKey();
}}
2-misol. A, B va C
butun sonlar berilgan. Jumlani
rostlikka
tekshiring:‖A<=B<=C‖
using System;
class bool_1
{ public static void Main()
{ bool n;
int a, b, c;
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt32(Console.ReadLine());
Console.Write("c=");
c = Convert.ToInt32(Console.ReadLine());
n = (a <= b) && (b <= c);
Console.WriteLine("n=" + n);
Console.ReadKey();
}}
3-misol . Uch xonali son berilgan. Jumlani
rostlikka tekshiring: ―Ushbu
sonning raqamlari ketma-ket o‗suvchi bo‗lib joylashgan‖.
29
1-usul.
using System;
class bool_1
{ public static void Main()
{ int a,b,c,d;
bool n;
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
b = a / 100;
c = (a % 100) / 10;
d = (a % 100) % 10;
n = (b < c) && (c < d);
Console.WriteLine("n=" + n);
Console.ReadKey();
}}
2-usul.
using System;
class bool_1_1
{ public static void Main()
{
int a; bool n;
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
n = (a/100+1==a/10%10 && a/100+2==a%10);
Console.WriteLine(n);
Console.ReadKey();
}}
3-misol . x, y sonlar berilgan. Jumlani rostlikka tekshiring: ―Koordinatalari
(x,y) bo‗lgan nuqta koordinata tekisligining ikkinchi yoki uchinchi choragida
yotadi‖.
30
using System;
class bool_2
{ public static void Main()
{
int x,y;
bool n;
Console.Write("x=");
x = Convert.ToInt32(Console.ReadLine());
Console.Write("y=");
y = Convert.ToInt32(Console.ReadLine());
n = (x < 0) && (y < 0 | y > 0);
Console.WriteLine("n=" + n);
Console.ReadKey();
}}
4-misol. Shaxmat doskasining ikkita turli (x,y) ,(x1,x2) koordinatalari
berilgan(1-8 oraliqda yotuvchi butun sonlar). Jumlani
―Berilgan maydonlar bir xil rangda‖.
using System;
class dars
{ public static void Main()
{ int x, y; bool n;
Console.Write("x=");
x = Convert.ToInt32(Console.ReadLine());
Console.Write("y=");
y = Convert.ToInt32(Console.ReadLine());
n = ((x + y) / 2 != 0) || ((x+y)/2==0);
Console.WriteLine(n);
Console.ReadKey();
}}
2-usul.
31
rostlikka tekshiring:
using System;
class dars
{ public static void Main()
{
int x, y; bool n;
Console.Write("x=");
x = Convert.ToInt32(Console.ReadLine());
Console.Write("y=");
y = Convert.ToInt32(Console.ReadLine());
n = (x < 0 && y > 0)||(x<0 && y<0);
Console.WriteLine(n);
Console.ReadKey();
}}
Topshiriq
1. A, B butun sonlar berilgan. Jumlani rostlikka tekshiring: ―A<=0 yoki
B<-2‖
2. 4. A, B butun sonlar berilgan. Jumlani rostlikka tekshiring: ―A va B
sonlarning hech bo‗lmaganda bittasi toq‖.
3. A, B va C butun sonlar berilgan. Jumlani rostlikka tekshiring: ―A B va C
sonlarning hech bo‗lmaganda bittasi musbat‖.
4. ( x, y) , ( x1, y1) va ( x2, y2) sonlar berilgan. Jumlani rostlikka tekshiring:
‖Koordinatalari (x,y) bo‗lgan nuqta chap yuqori uchi (x1,y1) koordinatalarga
ega bo‗lgan va o‗ng past uchi (x1,y1) koordinatalarga ega bo‗lgan, tomonlari
esa koordinata o‗qlariga parallel bo‗lgan to‗g‗ri to‗rtburchak ichida yotadi‖.
5. a, b va c butun sonlar berilgan. Jumlani rostlikka tekshiring:‖a, b va c
tomonli uchburchak teng tomonli bo‗ladi‖.
6. . Shaxmat doskasining ikkita turli (x,y) ,(x1,x2) koordinatalari berilgan(1-8
oraliqda yotuvchi butun sonlar). Jumlani
rostlikka tekshiring: ―Shox bir
yurishda bir maydondan ikkinchisiga o‗ta oladi‖.
32
4-§. C# dasturlash tilida tarmoqlanuvchi dasturlar
O‘tish operatorlari
C# tilida o‗tish operatorlari ikki xil bo‗ladi : shartli va shartsiz.
1. Shartsiz o‘tish operatorlari.
Shartsiz o‗tish operatorlari ikki xil usulda qo‗llanilishi mumkin.
1–funksiyani chaqirish yo‗li bilan. Bunda dastur davomida komplyator
funksiya nomlarini tekshirib boradi, agar shunday funksiya topilsa, dastur o‗z
ishini shu yerda to‗xtatib funksiyaning ishga tushishini amalga oshiradi.
Funksiya
o‗z amallarini bajarib bo‗lganidan so‗ng, komplyator dasturni
bajarilishini funksiya nomidan so‗ng turgan instrusiyaga o‗tkazadi. Shartsiz
o‗tishning ikkinchi usuli: break, return va throw kalit
so‗zlari yordamida bajarish mumkin. Ushbu kalit so‗zlar haqida quyida aytib
o‗tamiz.
Break
Takrorlanish operatorlarining bajarilishida shunday holatlar bo‗lishi
mumkinki,unda qaysidir qadamda takrorlanishni yakuniga yetkazmasdan chiqish
(‖uzish ‖) zaruriyati bo‗lishi mumkin.
Continue operatori
Bu opreator ham huddi break operatoridek takrorlash operatori tanasini
bajarishni to‗xtatadi, lekin takrorlashdan chiqib ketmasdan keyingi qadamiga
―sakrab‖ o‗tishni tayinlaydi.
33
Shartli o‘tish operatorlari
Shartli o‗tish uchun if, else yoki switch kalit so‗zlaridan foydalanish
mumkin.Bunday o‗tish faqat shart rost bo‗lganidagina bajariladi.
If … else operatori. If…else – bu shartli o‗tish operatori bo‗lib, shart if
qismida bajariladi. Agar shart rost bo‗lsa, shartdan so‗ng yozilgan instruksiyalar
to‗plami (tarkibli instruksiya) bajariladi, agar yolg‗on bo‗lsa, else qismida
yozilgan (yozilmagan bo‗lishi ham mumkin) tarkibli instruksiya bajariladi.
Shart operatorining natijasi bool tipiga tegishli bo‗lib, true(rost) yoki
false(yolg‗on) bo‗lishi mumkin.
if (shart) operator1; else operator2;
Agar shart rost bo‗lsa, operator1 bajariladi, agar yolg‗on bo‗lsa,
operator2 bajariladi. Shuni alohida takidlab o‗tish lozimki, agarda siz
shart yolg‗on
bo‗lganda
dasturingiz
hech
bir
ish
bajarmasligini
xohlasangiz,
operator2 ni yozmasligingiz mumkin.Bunda dastur if … else dan so‗ng
yozilgan kod bo‗yicha o‗z ishini davom ettiradi. Agarda operator1 yoki
operator2 dan so‗ng bajarilishi lozim bo‗lgan amallar soni 1 tadan ortiq bo‗lsa
ular figurali {} qavslar orasida yozilishi lozim.1-misol . x haqiqiy son berilgan.
Quyidagi funksiyani hisoblang.
2 * sin( x), x  0
f ( x)  
(24)
 x  6, x  0
1) using System;
class Shart_1
{ public static void Main()
{
double x;
Console.Write("x=");
x = Convert.ToDouble(Console.ReadLine());
if (x > 0)
Console.WriteLine("f(x)=" + 2 * Math.Sin(x));
34
else Console.WriteLine("f(x)=" + (x - 6));
}}
2- misol Uchta butun son berilgan. Shu sonlar orasidan nechta musbat son
borligini aniqlovchi dastur tuzilsin.
using System;
class shart
{ public static void Main()
{ int a, b, c,k=0;
Console.WriteLine("Butun son kiriting!");
Console.Write("a=");
a = int.Parse(Console.ReadLine());
Console.Write("b=");
b = int.Parse(Console.ReadLine());
Console.Write("c=");
c = int.Parse(Console.ReadLine());
if (a > 0) k++;
if (b > 0) k++;
if (c > 0) k++;
if (k == 0)
Console.WriteLine("musbat son yo„q");
else Console.WriteLine(k+" ta musbat son ");
}}
Ichma-ich shart operatorlari
Ichma-ich shart operatorlari - bu C# dasturlash tilining afzalligi bo‗lib,
bunda bir necha murakkab shartlarni bir shart orqali tekshirish, aniqlash
mumkin. Bir o‗zgaruvchi qiymatini bir necha shartlar orqali tekshirish uchun
ichma-ich bir necha shart operatorlaridan foydalanish mumkin:
35
3-misol 1-999 oraliqda bo‗lgan sonlar berilgan. Berilgan sonni ― ikki xonali juft
son‖, ― uch xonali toq son‖ va h.k. ekranga yozadigan dastur tuzing.
using System;
class if_1
{ public static void Main()
{
int a;
Console.WriteLine("a ni 1-999 orasidan kiriting.");
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
if ((a >= 10) && (a <= 99))
if (a % 2 == 0)
Console.WriteLine("kiritilgan son ikki xonali juft son.");
else Console.WriteLine("kiritilgan son ikki xonali toq son.");
else if (a<=9)
if(a%2==0)
Console.WriteLine("kiritilgan son bir xonali juft son.");
else Console.WriteLine("kiritilgan son bir xonali toq son.");
else if (a%2==0)
Console.WriteLine("kiritilgan son uch xonali juft son.");
else Console.WriteLine("kiritilgan son uch xonali toq son.");
}}
Topshiriq
1. Butun son berilgan,agar berilgan son musbat bo‗lsa birga oshiring ,aks holda
2 ga kamaytiring.
2.
A, B butun sonlar berilgan.Agar A va B sonlar teng bo‗lsa,A va B ga 0
o‗zlastirilsin,aks holda A va B ning yig‗indisi o‗zlashtirish dastur tuzilsin.
3.
Uchta son berilgan.Shu sonlar o‗rtachasini aniqlovchi dastur tuzilsin .
36
4.
A, B va C
haqiqiy sonlar berilgan.Agar berilgan sonlar o‗sish yoki
kamayish tartibida berilgan bo‗lsa sonlarni ikkilantiring,aks holda ishorasini
almashtiruvchi dastur tuzing.
5. OX va OY koordinatan o‗qlarida yotmaydigan nuqta berilgan. Nuqta
joylashgan koordinata choragini aniqlang.
6. Butun son berilgan. Berilgan sonni ―musbat toq son‖, ―manfiy juft son‖, ―
berilgan son nolga teng‖ va h.k. ekranga yozadigan dastur tuzing.
37
Switch operatori
Ayrim
hollarda ichma-ich yozilgan shart ya‘ni if-else-if yordami bilan
bir necha shartni tekshirishimiz mumkin. Lekin bunday yozuv nisbatan o'qishga
qiyin va ko'rinishi qo'pol bo'ladi. Bunday murakkab shartlar tekshirilganda if
operatoridan ko‗ra, switch operatoridan foydalanish afzal.
switch strukturasi bir necha case nishonlari (label) va majburiy bo'lmagan default
nishonidan iboratdir. Nishon bu bir nomdir. Lekin bulardan faqat bittasigina
bajariladi.
Switch operatorining qo‘llanilishi:
Switch (ifoda)
{
case : o‗zgarmas ifoda 1 : instruksiya o‗tish ifodasi
case : o‗zgarmas ifoda 2 : instruksiya o‗tish ifodasi
….
case : o‗zgarmas ifoda n : instruksiya o‗tish ifodasi
default : instruksiya
}
Switch operatorida ham tekshirilayotgan ifoda if … else dagi kabi, ( )
orasiga olingan va operatordan keyin yozilgan.Case(tekshirish) va default (aks
holda) bo‗limlari qaysi amal bajarilishi zarurligini aniqlab beradi.Case operatori
albatta biror bir tenglashtirish uchun qiymat talab qiladi. Switch operatorida
default amalini yozish shart emas, chunki u berilgan qiymatning tanlangan birorta
qiymatga mos kelmaganda bajariladigan amallarni o‗z ichiga oladi. Agarda
berilgan qiymat birorta tanlangan qiymatga mos kelsa, u holda case amalidan
keyin bajariladigan amallar (ular bir nechta bo‗lsa, { } orasiga olinadi)
bajariladi, so‗ng break amali switch operatorining ishini shu joyda to‗xtatadi
va switch operatoridan keyin keladigan operator ishini davom ettiradi. Har bir
case operatori o‗zida break amalini ushlab turishi lozim.
38
Masalan: 1-misol . 1-7 gacha bo‗lgan butun sonlar berilgan.Kiritilgan songa mos
hafta kunlarini so‗zlarda ifodalovchi dastur tuzing.
1) using System;
class case1
{ public static void Main()
{
int a;
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
switch (a)
{
case 1:Console.WriteLine("dushanba");break;
case 2:Console.WriteLine("seshanba");break;
case 3:Console.WriteLine("chorshanba");break;
case 4:Console.WriteLine("payshanba");break;
case 5:Console.WriteLine("juma");break;
case 6:Console.WriteLine("shanba");break;
case 7:Console.WriteLine("yakshanba");break;
default:Console.WriteLine("bunday hafta kuni yo„q!"); break;
} }}
2-misol . Sharq kalendarida 60 yillik davr qabul qilingan. Yil muchali 5 ta
rang (yashil, qizil, sariq, oq va qora ) va 12 ta hayvon (sichqon, sigir, yo‗lbars,
quyon, ajdar, ilon, ot,
qo‗y,
maymun, tovuq, it, to‗ng‗iz) nomlarining
kombinatsiyasidan kelib chiqadi.Yilning raqamiga qarab uning
aniqlovchi dastur tuzing. 1984-yil davr boshi ―Yashil sichqon yili ‖.
using System;
class tanlash{
public static void Main()
{
int yil;
Console.Write(" yil=");
yil = Convert.ToInt32(Console.ReadLine());
39
muchalini
yil = yil % 60;
Console.Write(" muchalingiz:");
switch (yil % 5)
{
case 0: Console.Write(" qizil "); break;
case 1: Console.Write("sariq "); break;
case 2: Console.Write(" oq "); break;
case 3: Console.Write(" qora "); break;
case 4: Console.Write(" yashil "); break;
} switch (yil % 12)
{
case 1: Console.Write(" tovuq"); break;
case 2: Console.Write(" it"); break;
case 3: Console.Write(" to„ng„iz"); break;
case 4: Console.Write(" sichqon"); break;
case 5: Console.Write(" sigir"); break;
case 6: Console.Write(" yo„lbars"); break;
case 7: Console.Write(" quyon"); break;
case 8: Console.Write(" ajdar"); break;
case 9: Console.Write(" ilon"); break;
case 10: Console.Write(" ot"); break;
case 11: Console.Write(" qo„y"); break;
case 0: Console.Write(" maymun"); break;
}
} }
3-misol . Ikkita burj vaqtlarini aniqlovchi butun son berilgan: D(kun),
M(oy).
Berilgan sana qaysi burjga kirishini aniqlovchi dastur tuzing. (9―‖)
―Qovg‗a (20.1-18.2)‖ , ―Baliq (19.2-20.3)‖ , ― Qo‗y (21.3-19.4)‖ , ―Buzoq (20.420.5)‖ , ―Egizaklar (21.5-21.6)‖ , ―Qisqichbaqa (22.6-22.7)‖ , ― Arslon (23.7-22.8)
‖, ―Arslon (23.8-22.9)‖ , ―Tarozi (23.9-22.10)‖, ―Chayon (23.10-22.11)‖, ―O‗qotar
(23.11-21.12)‖, ―Echki (22.12-19.1)‖.
40
using System;
class tanlash
{ public static void Main()
{
int oy, kun;
Console.Write("oy=");
oy = Convert.ToInt32(Console.ReadLine());
Console.Write(" kun=");
kun = Convert.ToInt32(Console.ReadLine());
Console.Write(" burjingiz:");
switch (oy)
{
case 1: if (kun >= 20) Console.Write(" qovg„a"); else Console.WriteLine("
echki"); break;
case
2:
if
(kun
<=
18)
Console.WriteLine("
qovg„a");
else
Console.WriteLine(" baliq"); break;
case
3:
if
(kun
<=
20)
Console.WriteLine("
baliq");
else
19)
Console.WriteLine("
qo„y");
else
buzoq");
else
egizaklar");
else
Console.WriteLine(" qo„y"); break;
case
4:
if
(kun
<=
Console.WriteLine(" buzoq"); break;
case
5:
if
(kun
<=
20)
Console.WriteLine("
Console.WriteLine(" egizaklar"); break;
case
6:
if
(kun
<=
21)
Console.WriteLine("
Console.WriteLine(" qisqichbaqa"); break;
case 7: if (kun <= 22) Console.WriteLine(" qisqichbaqa"); else
Console.WriteLine(" arslon"); break;
case
8:
if
(kun
<=
22)
Console.WriteLine("
arslon");
else
parizod");
else
Console.WriteLine(" parizod"); break;
case
9:
if
(kun
<=
22)
Console.WriteLine("
Console.WriteLine(" tarozu"); break;
41
case
10:
if
(kun
<=
22)
Console.WriteLine("
tarozu");
else
Console.WriteLine("
chayon");
else
Console.WriteLine("o„qotar");
else
Console.WriteLine(" chayon"); break;
case
11:
if
(kun
<=
22)
Console.WriteLine(" o„qotar"); break;
case
12:
if
(kun
<=
21)
Console.WriteLine("echki"); break;
}
Console.ReadLine();
} }
Topshiriq
1. A ,B haqiqiy va amal butun soni berilgan.A va B son sonlari ustida arifmetik
amallar bajaruvchi dastur tuzing.Bunda 1-qo‗shish, 2-ayirish, 3- bo‗lish,
4- ko‗paytirish.
2. D(kun ) va M(oy) ni ifodalovchi ikkita butun son berilgan. Kabisa
bo‗lmagan kun sanasi kiritilgansa, shu sanani ifodalovchi dastur tuzing.
3. D(kun ) va M(oy) ni ifodalovchi ikkita butun son berilgan. Kabisa
bo‗lmagan kun sanasi kiritilgansa, shu sanadan keyin keluvchi sanani
aniqlovchi dastur tuzing.
4. Doiraning elementlari quyidagi tartibda raqamlangan: 1-radius,2-diametr,3doiraning uzunligi,4-doiraning yuzasi. Shu elementlardan bittasi berilganda
qolganlarini topuvchi dastur tuzing.   3.14
42
5-§. C# dasturlash tilida takroranuvchi dasturlar
Takrorlash (sikl ) operatorlari
Bir xil jarayonlarning bir necha bor takrorlanishi sikl deyiladi. C# dasturlash
tilida sikl operatorlarining quyidagi turlari mavjud:
 for sikl operatori
 while sikl operatori
 do .. while sikl operatori
 forech sikl operatori
Yechilayotgan masaladan kelib chiqib yuqoridagi sikl operatorlardan mosi
tanlanadi.
Sikl takrorlanishi jarayonida bajarilishi lozim bo‗lgan operatorlar majmuasi sikl
tanasi deyiladi. Sikl tanasi sifatida bir yoki bir nechta operatorlardan
foydalanish mumkin. Agar sikl tanasida bir nechta operatorlardan foydalanilsa,
bu operatorlar bloki { } belgi orasiga olinadi.
For sikl оpеrаtоri
For оpеrаtоri — dаvr (sikl)ni tаshkil qilishning eng umumiy usuli.
U quyidаgi fоrmаtgа egа:
for (1-ifоdа; 2-ifоdа; 3-ifоdа) { sikl tаnаsi}
1-ifоdа оdаtdа dаvrni bоshqаrаyotgаn o‗zgаruvchilаrning tipi va dаstlаbki
qiymаtini bеlgilаsh uchun qo‗llаnаdi. 2-ifоdа dаvr tаnаsi bаjаrilishi
mumkin bo‗lgаn shаrtni bеlgilаb bеruvchi ifоdа. 3-ifоdа sikl tаnаsi
hаr gаl bаjаrilgаnidаn so‗ng siklni bоshqаrаdigаn o‗zgаruvchilаrning
o‗zgаrishini (qadamini) bеlgilаydi.
For оpеrаtоrini bаjаrish sхеmаsi:
1. 1-ifоdа hisоblаnаdi.
2. 2-ifоdа hisоblаnаdi.
3. Аgаr 2-ifоdаning qiymаti falsedаn fаrqli (rost) bo‗lsа, dаvr
43
tаnаsi bаjаrilаdi, 3-ifоdа hisоblаnаdi vа 2-bаndgа o‗tish аmаlgа
оshirilаdi, аgаr 2-ifоdа 0 gа tеng (yolg‗оn) bo‗lsа, u hоldа bоshqаruv
for оpеrаtоridаn kеyin kеlgаn оpеrаtоrgа uzаtilаdi.
Shunisi muhimki, shаrt hаmmаvаqt dаvr bоshidа tеkshirib оlinаdi.
Bu dеmаk, аgаr bаjаrilish shаrti oldindan yolg‗on bo‗lsа, u hоldа dаvr
tаnаsi birоn mаrtа hаm bаjаrilmаsligi mumkin.
1-misol. k va n (n>0) butun soni berilgan. k sonini n marta chiqaruvchi
dastur tuzing.
using System;
class takrorlash
{ public static void Main()
{
int n, k;
Console.Write("n=");
n = Convert.ToInt16(Console.ReadLine());
Console.Write("k=");
k = Convert.ToInt16(Console.ReadLine());
for (int i = 0; i < n; i++)
{
Console.WriteLine(k);
}
} }
2-misol. n (n>0) butun soni berilgan. Shu sonni kvadratini quyidagi formula
asosida hisoblovchi dastur tuzing.
n 2  1  3  ...  (2n  1)
using System;
class takrorlash
{ public static void Main()
{
double s = 0;
int n;
n = Int16.Parse(Console.ReadLine());
44
for (int i = 1; i < n + 1; i ++)
{
s = s + (2*i-1);
Console.WriteLine(i+ "^2" + "=" + s);
}
} }
3-misol . n (n>0) butun soni berilgan. Bir sikldan foydalanib quyidagi
yig‗indini hisoblovchi dastur tuzing.
1!2!...  n!
using System;
class for20
{ public static void Main()
{
double p=1, s = 0;
int n;
n = Int16.Parse(Console.ReadLine());
for (int i = 1; i < n + 1; i++)
{p=p*i;
s = s +p ;
Console.WriteLine( "s=" + s);
} } }
4-misol. A va B (A<B) butun sonlar berilgan. A va B sonlar orasidagi
barcha butun sonlarni chiqaruvchi dastur tuzing. Bunda har bir son o‗zining
qiymaticha chiqarilsin.
using System;
class for39
{ public static void Main()
{
int a, b, s;
Console.Write("a=");
a = Convert.ToInt16(Console.ReadLine());
Console.Write("b=");
45
b = Convert.ToInt16(Console.ReadLine());
if (a > b)
{ int k;
k = b;
b = a;
a = k;
}
s=a;
for (int i = a; i < b-1; i++)
{
s+=1;
Console.WriteLine( +s );
}
} }
5-misol. A va B musbat sonlar berilgan. Shu ikki sonning EKUBini toping.
using System;
class ekub
{ public static void Main()
{
int a, b,min=0,ekub=0;
Console.Write("a=");
a = Convert.ToInt16(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt16(Console.ReadLine());
if (a > b)
{ min = b; }
else
{
min = a;
}
for (int i = 1; i < min; i++)
46
{
if (a % i == 0 && b % i == 0)
{
ekub = i;
} }
Console.WriteLine("a va b sonlarining ekubi=" + ekub);
}}
6-misol. A va B musbat sonlar berilgan. Shu ikki sonning EKUKini toping.
using System;
class ekuk
{ public static void Main()
{
int a, b,ekuk=0;
Console.Write("a=");
a = Convert.ToInt16(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt16(Console.ReadLine());
for (int i = 1; i <=a*b; i++)
{
if (i % a == 0 && i % b == 0)
{ ekuk = i; break;
}
}
Console.WriteLine("a va b sonlarining ekuki=" + ekuk);
} }
Topshiriq
1. a va b (a<b) butun soni berilgan. a dan b gacha bo‗lgan barcha butun sonlar
yig‗indisini aniqlovchi dastur tuzing.
2. n (n>0) butun soni berilgan . Quyidagi yig‗indini hisoblang:
S=1+1/2+1/3+....+1/n
47
3. n (n>0) butun soni va a haqiqiy soni berilgan. Bir sikldan foydalanib
quyidagi
yig‗indini
hisoblovchi
dastur
tuzing.
Shart
operatoridan
2
3
n n
foydalanilmasin. 1  a  a  a  ....  (1) a
4. n (n>0) butun soni va x haqiqiy soni berilgan. Quyidagi yig‗indini
hisoblovchi dastur tuzing.( Olingan natija taxminan
ex
ga yaqinlashadi.)
1  x  x 2 / 2!...  x n / n!
5. n (n>0) butun soni va x haqiqiy soni berilgan. Quyidagi yig‗indini
hisoblovchi dastur tuzing.( Olingan natija taxminan sin(x) ga yaqinlashadi.)
x  x 3 / 3! x 5 / 5!...  (1) n x 2 n 1 /((2n  1)!)
6. n (n>0) butun soni va x haqiqiy soni berilgan. Quyidagi yig‗indini
hisoblovchi dastur tuzing.( Olingan natija taxminan cos(x) ga yaqinlashadi.)
1  x 2 / 2! x 4 / 4!...  (1) n x 2 n /((2n)!)
7. A va B (A<B) butun sonlar berilgan. A va B sonlar orasidagi barcha butun
sonlarni chiqaruvchi dastur tuzing. Bunda A soni bir marta A+1 soni ikki
marta chiqarilsin.
48
While takrorlash operatori
While takrorlash operatori, operatorlar blokini takrorlash sharti false
bo‗lguncha takror bajaradi va uning sintaksisi quyidagicha ifodalanadi:
While (shart)
{
Sikl tanasi(operatorlar bloki);
}
Agar shart tekshirilganda rost bo‗lsa, operatorlar bloki bajariladi, aks
holda while dastur ishlashini o‗zidan keyingi operatorga uzatadi.
Agar takrorlash sharti takrorlanishi jarayonida o‗zgarmas true qiymatga
bo‗lsa, takrorlanish cheksiz bo‗ladi.Agar shart false qiymatga ega bo‗lsa,
operatorlar bloki bajarilmaydi.
1-misol.
A va B (A>B)
musbat sonlar berilgan. A uzunlikdagi kesmada
maksimal darajada B kesma joylashtiring. A kesmaning bo‗sh qolgan qismini
aniqlovchi dastur tuzing. Bunda ko‗paytirish va bo‗lish amallarini ishlatmang.
using System;
class while1
{ public static void Main()
{ int a, b;
Console.Write("a=");
a = Convert.ToInt16(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt16(Console.ReadLine());
while (a <b)
{
b-= a;
}
Console.WriteLine("a=" + b);
} }
49
2- misol. 2 sonini qandaydir darajasini bildiruvchi n (n>0) butun soni
berilgan. n  2 k k ni ifodalovchi dastur tuzing.
using System;
class while1
{ public static void Main()
{
int n, k=0, p=1;
Console.Write("n=");
n = Convert.ToInt32(Console.ReadLine());
while (n < 0) {
Console.WriteLine("sonni qaytadan kiriting!!!");
Console.Write("n=");
n = Convert.ToInt32(Console.ReadLine());
}
while (n > p) {
p *= 2;
k++;
}
if (n == p)
{
Console.WriteLine("Kiritilgan son 2 ning " + k + " darajasi ekan!");
}
else
{
Console.WriteLine("Kiritilgan son 2 ning darajasi emas ekan! Iltomos n
sonini qayta kiriting!");
}
Console.ReadKey();
}
}
50
3- misol. n (n>1) butun soni berilgan. n soni Fibonnachi sonlari orasida bor
yo‗qligini aniqlovchi dastur tuzing. Fibonnachi sonlari quyidagi tartibda topiladi:
F1  1; F2  1; Fk  Fk 2  Fk 1
k=3,4,...
using System;
class dars
{ public static void Main()
{
int n,a=0,a1=1,a2=1;
Console.Write("n=");
n = Convert.ToInt32(Console.ReadLine());
while(n>a)
{
a = a1 + a2;
a1 = a2; a2 = a;
Console.WriteLine("Fibanachi son a=" + a);
}
Console.ReadKey();
}}
4-misol. A va B musbat sonlar berilgan. Shu ikki sonning EKUBini toping.
using System;
class ekub
{ public static void Main()
{
int a, b, ekub = 0, soni = 1,min=0;
Console.Write("a=");
a = Convert.ToInt16(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt16(Console.ReadLine());
if (a > b)
{
min = b;
}
51
else
{
min = a;
}
while (soni <= min)
{
if (a % soni == 0 && b % soni == 0)
{
ekub = soni;
} soni++;
}
Console.WriteLine("a va b sonlarining ekubi=" + ekub);
}}
5-misol. A va B musbat sonlar berilgan. Shu ikki sonning EKUKini toping.
using System;
class ekuk
{ public static void Main()
{
int a, b, ekuk = 0,soni=1;
Console.Write("a=");
a = Convert.ToInt16(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt16(Console.ReadLine());
while (soni <= a * b)
{
if (soni % a == 0 && soni % b == 0)
{
ekuk = soni; break;
} soni++;
}
52
Console.WriteLine("a va b sonlarining ekuki=" + ekuk);
}}
Topshiriq
1. n natural soni berilgan. Quyidagi ko‗paytmani hisoblovchi dastur tuzing.
n!!=n(n-2)(n-4)...
Agar n juft bo‗lsa oxirgi ko‗paytuvchi 2, toq bo‗lsa oxirgi 1 bo‗ladi.
2. n (n>1) butun soni berilgan.
3k  n shartni qanoatlantiruvchi eng kichik
butun k sonini toping.
3. a (a>1) soni berilgan.
1+1/2+1/3+...+1/k<=a shart bajariladigan eng katta k sonini toping. Yig‗indiham
ekranga chiqarilsin.
4. n (n>0) butun soni berilgan. Bo‗lib butun va qoldiq qismlarini aniqlash
orqali berilgan son raqamlarini teskari tartibda chiqaruvchi dastur tuzing.
5. n (n>0) butun soni berilgan. Bo‗lib butun va qoldiq qismlarini aniqlash
orqali berilgan son raqamlarining orasida 2 soni bor yo‗qligini aniqlovchi
dastur tuzing.
6. A,B,C musbat butun sonlari berilgan. AxB to‗rtburchak ichida tomoni c
bo‗lgan kvadratdan nechtasi sig‗ishini aniqlovchi dastur tuzing. Ko‗paytirish
va bo‗lish amallarini ishlatmang.
Do … while takrorlash operatori
Shunday hollar bo‗ladiki, while takrorlash operatori sizning
talablaringizga javob bermaydi, bunday hollarda do… while takrorlash
operatoridan foydalanish qulayroq. do …while takrorlash operatori quyidagi
sintaksisga ega:
do
{
<sikl tanasi (operatorlar bloki)>
53
} while (shart);
Bu takrorlash operatorining keng qo‗llaniladigan holatlar –bu
takrorlash boshlanmasdan turib, takrorlash shartini tekshirishning iloji bo‗lmagan
holatlar hisoblanadi.
Agar takrorlash sharti takrorlanishi jarayonida o‗zgarmas true qiymatga
bo‗lsa, takrorlanish cheksiz bo‗ladi.Agar shart false qiymatga ega bo‗lsa,
operatorlar bloki bir marta bajariladi.
1-misol.
A va B (A>B)
musbat sonlar berilgan. A uzunlikdagi kesmada
maksimal darajada B kesma joylashtiring. A kesmaning bo‗sh qolgan qismini
aniqlovchi dastur tuzing. Bunda ko‗paytirish va bo‗lish amallarini ishlatmang.
using System;
class dowhile1
{ public static void Main()
{
int a, b;
Console.Write("a=");
a = Convert.ToInt16(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt16(Console.ReadLine());
do
{
a -= b;
} while (a > b);
Console.WriteLine("a kesmada b kesmaning sig`may qolgan qismi " + a);
}}
2-misol. 2 sonini qandaydir darajasini bildiruvchi n (n>0) butun soni
berilgan. n  2 k k ni ifodalovchi dastur tuzing.
using System;
class dowhile1
{
public static void Main()
54
{
int k, n,p=1;
Console.Write("a=");
n = Convert.ToInt16(Console.ReadLine());
do
{
p *= 2;
} while (p<n);
if (p == n)
{ Console.WriteLine(" kiritilgan n soni ikkining darajasi"); }
else
{
Console.WriteLine(" kiritilgan n soni ikkining darajasi emas!"); }
} }
3- misol. n (n>1) butun soni berilgan. n soni Fibonnachi sonlari orasida bor
yo‗qligini aniqlovchi dastur tuzing. Fibonnachi sonlari quyidagi tartibda topiladi:
F1  1; F2  1; Fk  Fk 2  Fk 1
k=3,4,...
using System;
class dowhile1
{ public static void Main()
{
int n,f1=1,f2=1,f;
Console.Write("n=");
n = Convert.ToInt16(Console.ReadLine());
do
{
f = f1 + f2;
f1 = f2; f2 = f;
} while (f<n);
if (f == n)
55
{ Console.WriteLine(" kiritilgan n soni fibonachchi sonlari orasida yotadi");
}
else
{
Console.WriteLine(" kiritilgan n soni fibonachchi sonlari orasida
yotmaydi!");
} } }
4-misol. A va B musbat sonlar berilgan. Shu ikki sonning EKUBini toping.
using System;
class ekub
{ public static void Main()
{
int a, b, ekub = 0,min=0, soni = 1;
Console.Write("a=");
a = Convert.ToInt16(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt16(Console.ReadLine());
if (a > b)
{
min = b;
}
else
{
min = a;
}
do
{
if (a % soni == 0 && b % soni == 0)
{
ekub = soni;
56
} soni++;
} while (soni <= min);
Console.WriteLine("a va b sonlarining ekubi=" + ekub);
}}
5-misol. A va B musbat sonlar berilgan. Shu ikki sonning EKUKini toping.
using System;
class ekuk
{ public static void Main()
{
int a, b, ekuk = 0, soni = 1;
Console.Write("a=");
a = Convert.ToInt16(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt16(Console.ReadLine());
do
{
if (soni % a == 0 && soni % b == 0)
{
ekuk = soni; break;
} soni++;
} while (soni <= a * b);
Console.WriteLine("a va b sonlarining ekuki=" + ekuk);
} }
Topshiriq
7. n natural soni berilgan. Quyidagi ko‗paytmani hisoblovchi dastur tuzing.
n!!=n(n-2)(n-4)...
Agar n juft bo‗lsa oxirgi ko‗paytuvchi 2, toq bo‗lsa oxirgi 1 bo‗ladi.
8. n (n>1) butun soni berilgan.
3k  n shartni qanoatlantiruvchi eng kichik
butun k sonini toping.
57
9. a (a>1) soni berilgan.
1+1/2+1/3+...+1/k<=a shart bajariladigan eng katta k sonini toping. Yig‗indiham
ekranga chiqarilsin.
10. n (n>0) butun soni berilgan. Bo‗lib butun va qoldiq qismlarini aniqlash
orqali berilgan son raqamlarini teskari tartibda chiqaruvchi dastur tuzing.
11. n (n>0) butun soni berilgan. Bo‗lib butun va qoldiq qismlarini aniqlash
orqali berilgan son raqamlarining orasida 2 soni bor yo‗qligini aniqlovchi
dastur tuzing.
12. A,B,C musbat butun sonlari berilgan. AxB to‗rtburchak ichida tomoni c
bo‗lgan kvadratdan nechtasi sig‗ishini aniqlovchi dastur tuzing. Ko‗paytirish
va bo‗lish amallarini ishlatmang.
58
Foreach takrorlash operatori
For оpеrаtоridаn fоydаlаnishning bоshqа bir vаriаnti bu chеksiz sikldir.
Bundаy siklni tаshkil qilish uchun bo‘sh shаrtli ifоdаdаn fоydаlаnish mumkin,
dаvrdаn chiqish uchun esа оdаtdа qo‗shimchа shаrtdаn fоydаlаnilаdi. Foreach
operatorining sintaksisi quyidagicha:
for(;;)
{
...
... break;
...
}
C # tilining sintаksisigа muvоfiq оpеrаtоr bo‗sh bo‗lishi mumkinligi tufаyli, for
оpеrаtоrining tаnаsi hаm bo‗sh bo‗lishi mumkin.Оpеrаtоrning bundаy shаkli
qidirishni tаshkil qilishdа qo‗llаnishi
mumkin.1-Misol. N>0 musbat soni berilgan n sonigacha bo‘lgan sonlar ichida 5
soniga karralilarini chop qilmaydigan dastur tuzing.
using System;
class foreach1
{
public static void Main()
{
int n,k=0;
Console.Write("n=");
n = Convert.ToInt16(Console.ReadLine());
for (; ; )
{
if (k == n)
{ break; } k++;
if (k % 5 == 0)
59
{ continue; }
Console.WriteLine(k);
}
}}
2-Misol. n>0 soni berilgan. Shu sonning tub yoki murakkab son ekanligini
aniqlang.
using System;
class foreach1
{ public static void Main()
{
int n,k=0,l=0;
Console.Write("n=");
n = Convert.ToInt16(Console.ReadLine());
for (; ; )
{
if (k == (int)Math.Sqrt(n))
{ break; } k++;
if (n % k == 0)
{ l++; }
}
if (l == 1)
{
Console.WriteLine("kiritilgan son tub!");
}
else
{
Console.WriteLine("kiritilgan son murakkab son!");
}
}}
4-misol. A va B musbat sonlar berilgan. Shu ikki sonning EKUBini toping.
using System;
class ekub
60
{ public static void Main()
{
int a, b, ekub = 0, min = 0, soni = 1;
Console.Write("a=");
a = Convert.ToInt16(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt16(Console.ReadLine());
if (a > b)
{
min = b;
}
else
{
min = a;
}
for (; ; )
{
if (a % soni == 0 && b % soni == 0)
{
ekub = soni;
}
if (soni >= min)
{ break; }
soni++;
}
Console.WriteLine("a va b sonlarining ekubi=" + ekub);
} }
4-misol. a (a>1) soni berilgan. 1+1/2+1/3+...+1/k<=a shart bajariladigan eng
katta k sonini toping. Yig‗indiham ekranga chiqarilsin.
using System;
61
class foreach1
{ public static void Main()
{
double n,k=0,s=0;
Console.Write("n=");
n = Convert.ToDouble(Console.ReadLine());
for (; ; )
{
k++;
if (s >=n)
{ break; }
s += 1 / k;
}
Console.WriteLine("k="+k);
}}
5-misol. A va B musbat sonlar berilgan. Shu ikki sonning EKUBini toping.
using System;
class ekuk
{ public static void Main()
{ int a, b, ekuk = 0, soni = 1;
Console.Write("a=");
a = Convert.ToInt16(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt16(Console.ReadLine());
for (; ; )
{ if (soni % a == 0 && soni % b == 0)
{
ekuk = soni;
}
if (soni >= a*b)
62
{ break; }
soni++;
}
Console.WriteLine("a va b sonlarining ekuki=" + ekuk);
} }
Topshiriq
1. Quyidagi
(2n  1)(2n  7)

n 1( 2n  3)(2n  5)

chеksiz ko‘paytmaning qiymatini topish dasturini
tuzing?
2.Quyidagi yig‘indini hisoblovchi dastur tuzing.
12 22 x 2 32 x 4
n2
x2n





...


 ...
22 32 2 42 22
(n  1) 2 2n
n
 2n 2  3n 
 sonli ketma-ketlik limiti hisoblovchi dastur tuzilsin.
3. lim  2
n  2n  3n  5 
63
6-§ Massivlar
Matematika, iqtisod, informatika va hokazo sohalarda tartiblangan
berilganlar bilan ish ko‗rishga to‗g‗ri keladi. Masalan, sonlar ketma – ketligi,
jadvallar, familiyalar ro‗yhati va hokazo.
Bir xil turli berilganlar to‗plamini qayta ishlash uchun massivlar tushunchasi
kiritilgan.
Xotirada ketma- ket (regulyar) joylashgan bir xil turdagi qiymatlarga massiv
deyiladi. Odatda massivlarga zaruriyat, katta hajmdagi,lekin
cheklangan
miqdordagi va tartiblangan qiymatlarni qayta ishlash bilan bog‗liq masalalarni
yechishda yuzaga keladi.
Massiv – bu fiksirlangan miqdordagi ayrim qiymatlarning (massiv
elementlarining )
tartiblangan majmuasidir. Barcha elementlar bir xil turda
bo‗lishi kerak va bu tur element turi yoki massiv uchun tayanch tur deb nomlanadi
Dasturda ishlatiladigan har bir aniq massiv o‗zining individual nomiga ega
bo‗lishi kerak.Bu nomni to„liq o„zgaruvchi deyiladi,chunki uning qiymati
massivning o‗zi bo‗ladi. Massivning har bir elementi massiv nomi, hamda kvadrat
qavsga olingan va element selektori deb nomlanuvchi indeksni ko‗rsatish orqali
oshkor ravishda belgilanadi. Murojaat sintksisi:
<massiv nomi>[<indeks>]
Massiv indeksi sifatida butun son qo‗llaniladi, ya‘ni indeks sifatida butun
son qiymatini qabul qiladigan ixtiyoriy ifoda ishlatish mumkin va uning qiymati
massiv elementining tartib nomerini aniqlaydi. Ifoda sifatida o‗zgaruvchi olinishi
mumkinki, o‗zgaruvchining qiymati o‗zgarishi bilan murojaat qilinayotgan massiv
elementini aniqlovchi indeks o‗zgaradi. Haqiqiy turdagi (float, double,dicimal)
qiymatlari to‗plami cheksiz bo‗lganligi sababli ularni indeks sifatida ishlatilmaydi.
Massiv dinamik va statik bo‗lishi mumkin. Statik massivning uzunligi oldindan
ma‘lum bo‗lib, u xotirada ma‘lum adresdan boshlab ketma-ket joylashadi.
Dinamik massivning uzunligi dastur bajarilishi jarayonida aniqlanib,u dinamik
xotiradagi ayni paytda bo‗sh bo‗lgan adresga joylashadi.
64
Bir o‘lchamli massivlar
Agar massivning
elementiga bir indeks orqali murojaat qilish mumkin
bo‗lsa, bunday massivga bir o„lchamli massiv deyiladi.
Bir o‗lchamli massiv
<toifa>[] <massiv nomi>=new <element tipi>[massiv elementlari soni]
kabi ko‗rinishda e‘lon qilinadi.
C# da massiv indeksi noldan boshlanadi.
1- misol. n natural soni berilgan. 2 sonini dastlabki n ta darajasidan tashkil
topgan massivni hosil qiling va elementlarini chiqaring. (1, 2, 4, 8,...)
using System;
class massiv1
{ public static void Main()
{
int n;
Console.Write("n=");
n = Convert.ToInt32(Console.ReadLine());
while (n > 10)
{
Console.Write("n=");
n = int.Parse(Console.ReadLine());
}
int[] a = new int[n];
for (int i = 0; i < n ; i++)
{
Console.WriteLine("a[" + i + "]=" + (Math.Pow(2,i)));
}
} }
2- misol. n natural soni berilgan. Dastlabki n ta Fibonnachi sonlaridan
tashkil topgan massivni hosil qiling va elementlarini chiqaring. (1, 1, 2, 3, 5, ...)
using System;
class massiv1
65
{ public static void Main()
{
int n;
Console.Write("n=");
n = int.Parse(Console.ReadLine());
while (n > 10)
{
Console.Write("n=");
n = int.Parse(Console.ReadLine());
}
double[] a = new double[n];
a[1] = 1;
a[2] = 1;
Console.WriteLine("a[1]=1");
Console.WriteLine("a[2]=1");
for (int i = 3; i <n; i++)
{
a[i] = a[i - 1] + a[i - 2];
Console.WriteLine("a[" + i + "]=" + (a[i]));
}
Console.ReadKey();
}
}
3-misol. n ta elementdan tashkil topgan massiv berilgan. Pufaksimon saralash
algoritmi orqali massivni o‘sish tartibida chiqaruvchi dastur tuzing.
using System;
class pufaksimonSaralash
{
public static void Main()
66
{
int n,k;
Console.Write("n=");
n=Convert.ToInt32(Console.ReadLine());
int[] a = new int[n];
for (int i = 0; i < n; i++)
{
Console.Write("a[" + i + "]=");
a[i] = Convert.ToInt32(Console.ReadLine());
}
for (int i = 0; i < n; i++)
{
for (int j = i; j < n; j++)
{
if (a[i] > a[j])
{
k = a[j]; a[j] = a[i];
a[i] = k;
}
} }
for (int i = 0; i < n; i++)
{
Console.WriteLine("a[" + i + "]=" + a[i]);
}
} }
Topshiriq
1. n ta elementdan tashkil topgan massiv berilgan. Uning elementlarini teskari
tartibda chiqaruvchi dastur tuzing.
2. n ta elementdan tashkil topgan massiv berilgan. Massiv elementlari orasidan
toqlarini indekslari o‘sish tartibida chiqaruvchi va ularni sonini aniqlovchi
dastur tuzing
67
3. n ta elementdan tashkil topgan massiv berilgan. Massiv elementlarini
quyidagicha chiqaruvchi dastur tuzing.
A[0], A[1], A[n-1], A[n-2], A[3], A[4], A[n-3], A[n-4], ...
4. n ta elementdan tashkil topgan massiv va R butun soni berilgan. Massiv
elementlari orasidan R soniga yig‘indisi eng yaqin ikkita qo‘shni elementni
chiqaruvchi dastur tuzing.
5. n ta elementdan tashkil topgan massiv berilgan. Massivda qatnashgan
sonlardan faqat bittadan chiqaruvchi dastur tuzing.
Berilgan massiv: 4 5 7 4 8 4 5 8 9 1 2 3
Natijada: 4 5 7 8 9 1 2 3
6. 5 ta elementdan tashkil topgan a va b massiv berilgan. Har bir massiv
elementlari o‘sish tartibida kiritiladi. 10 ta elementdan tashkil topgan c
massivni hosil qilingki, c massiv elementlari o‘sish tartibida joylashtirilgan
bo‘lsin.
7. n ta elementdan tashkil topgan massiv berilgan. Massivdagi har bir toq sonni
oxirgi toq songa orttiruvchi dastur tuzing. Agar toq sonlar bo‘lmasa massiv
o‘zgarishsiz qoldirilsin.
8. n ta elementdan tashkil topgan massiv berilgan. Massiv elementlari orasidan
juftlarini o‘chiruvchi dastur tuzing. Hosil bo‘lgan massiv elementlari sonini
va elementlari chiqaring. Shart operatori ishlatilmasin.
9. n ta elementdan tashkil topgan massiv berilgan. Massivga, massivning juft
indeksli elementlarini qo‘shuvchi dastur tuzing . Shart operatori
ishlatilmasin.
10. n ta elementdan tashkil topgan massiv berilgan. Oddiy o‘rin almashtirish
algoritmi orqali massivni o‘sish tartibida chiqaruvchi dastur tuzing.
Algoritm quyidagicha: har bir element o‘zidan keyin turgan elementlar bilan
solishtiriladi. Agar o‘zidan keyin turgan element undan kichik bo‘lsa, ularning
qiymati almashtiriladi.
68
11. ta elementdan tashkil topgan massiv berilgan. Oddiy tanlash algoritmi
orqali massivni o‘sish tartibida chiqaruvchi dastur tuzing.
Algoritm quyidagicha: har bir element o‘zidan keyin turgan elementlarning eng
kichigi bilan almashtiriladi.
12. ta elementdan tashkil topgan massiv berilgan. Oddiy qo‘shish algoritmi
orqali massivni o‘sish tartibida chiqaruvchi dastur tuzing.
Algoritm quyidagicha: a[0] va a[1] elementlar o‘sish tartibida joylashtiriladi.
Ya‘ni zaruriyat bo‘lsa qiymatlari almashtiriladi.Keyin a[2] element saralangan
elementlar a[0] va a[1] elementlar orasiga shunday joylashtiriladiki,natijada
a[0], a[1], a[2] tartiblangan holatda bo‘ladi.Shu taruqa har bir element
tartiblangan elementlar orasiga qo‘shib boriladi.
Ikki o‘lchovli massivlar
Kundalik turmushda jadval ko‗rinishidagi massivlar bilan tez-tez ishlashga
to‗gri keladi. Chunki ma‘lumotlarni bu ko‗rinishda saqlash ularni qayta ishlashda
bir qancha qulayliklarga ega bo‗lamiz. Jadvalning satr va ustunlari qoida bo‗yicha
bir xil turdagi ma‘lumotlardan tuzilgan. Shuning uchun jadval bilan ish ko‗radigan
dasturlarda massivlardan foydalanish juda qulay. Jadvallarni ikki o‗lchovli massiv
ko‗rinishida tasvirlash juda qulay. C# obyektga yo‗naltirilgan dasturlash tilida ikki
o‗lchovli massivlar
<massiv
tipi>[,]
<massiv
nomi>=new
<massiv
elementlarining
tipi>[<massivning satri soni>, < massivning ustunlari soni>] kabi e‘lon qilinadi.
1-misol. m va n butun musbat sonlari va m ta butun sonlari to‗plami
berilgan. mxn o‗lchamli matritsani shunday, uning har bir ustuni kiritilgan m ta
sondan iborat bo‗lsin.
using System;
class massiv1
{ public static void Main()
{
int n, m;
69
Console.Write("n=");
n = int.Parse(Console.ReadLine());
Console.Write("m=");
m= int.Parse(Console.ReadLine());
while (m < 0 | n < 0)
{
Console.Write("n=");
n = int.Parse(Console.ReadLine());
Console.Write("m=");
m = int.Parse(Console.ReadLine());
}
float[,] a = new float[n, m];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write("a["+i+","+j+"]=");
a[i,j] = int.Parse(Console.ReadLine());
} }
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write( a[i,j]);
Console.Write("\t");
}
Console.Write("\n");
}
}}
70
2-misol. nxn o‗lchamli kvadrat matritsa berilgan. Matritsaning asosiy
dioganal elementlarining yig‗indisini chiqaruvchi dastur tuzing.
using System;
class massiv1
{ public static void Main()
{
int n;
Console.Write("n=");
n = int.Parse(Console.ReadLine());
while ( n < 0)
{
Console.Write("n=");
n = int.Parse(Console.ReadLine());
} float[,] a = new float[n, n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write("a[" + i + "," + j + "]=");
a[i, j] = float.Parse(Console.ReadLine());
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(a[i, j] + "\t");
} Console.WriteLine();
}
71
Console.WriteLine();
float s=0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (i == j)
{
s += a[i, j];
}
}
}
Console.WriteLine("s=" + s);
}
}
Topshiriq
1. mxn o‘lchamli matritsa va k soni berilgan (0<=k<m). Matritsani k satrini
chiqaruvchi dastur tuzilsin.
2. NxN o‘lchamli kvadrat matritsa A hosil qilinsin. A[0,0] elementdan
boshlab, soat strelkasi bo‘yicha matritsa elementlariga 1, 2, 3, ..., N 2 gacha
bo‘lgan sonlar o‘zlashtirilsin.
3. mxn o‘lchamli matritsa berilgan (m juft son). Matritsani teng yarmidan
yuqorisi va pastini almashtiruvchi dastur tuzilsin.
4. mxn o‘lchamli matritsa berilgan (m juft son). Matritsani teng yarmidan chap
va o‘ng qismini almashtiruvchi dastur tuzilsin.
72
5. mxn o‘lchamli matritsa berilgan (m, n juft son). Matritsani teng 4 qismga
bo‘lingan. 1-chap yuqori, 2-o‘ng yuqori, 3-chap past va 4- o‘ng past.1- va
2- qismini almashtiruvchi dastur tuzilsin.
6. mxn o‘lchamli matritsa berilgan. Matritsa elementlarini quyidagicha
almashtiring: 0 va m-1 satr elementlari almashsin, 1 va m-2 satr elementlari
almashsin va hakazo.
7. mxm o‘lchamli kvadrat matritsa berilgan. Matritsaning yordamchi dioganal
parallel bo‘lgan har bir dioganal elementlari yig‘indisini aniqlovchi dastur
tuzing. Bir elementli dioganal a[0,0] dan boshlansin.
8. mxm o‘lchamli kvadrat matritsa berilgan. Matritsaning asosiy dioganalidan
va undan pastda joylashgan elementlarini nolga almashtiruvchi dastur
tuzilsin. Shart operatoridan foydalanmang.
9. mxm o‘lchamli kvadrat matritsa berilgan. Matritsaning elementlarini
yordamchi dioganalga nisbatan almashtiruvchi dastur tuzing. Yordamchi
dioganal o‘zgarishsiz qoldiriladi. A[0,0] element A[m-1,m-1] element bilan
almashadi, a[0,1] element A[m-1,m-2] element bilan almashadi va hokazo.
Yordamchi matritsadan foydalanmang.
10. mxm o‘lchamli kvadrat matritsa berilgan. Matritsani 90 0 ga soat strelkasi
bo‘yicha buruvchi dastur tuzilsin. Bunda A[0,0] element A[0,m-1]
elementga o‘tadi, A[0,m-1] element A[m-1,m-1] elementga o‘tadi
almashadi va hokazo. Yordamchi matritsadan foydalanmang.
73
74
Adabiyotlar ro‘yxati
1. C. Наков, В.Колев и колектив ―Въведение в програмирането със C#‖
София, 2011 йил.
2. Нэш Трей ―C# 2010. Ускоренный курс для профессионалов (2010)‖
3. Jalolov, Sh.M. Sharipov ―C# dasturlash tilida fayllar bilan ishlash‖
BUXORO 2014
4. SH.F.Madraximov, S.M.Gaynazarov ―C++ tilida programmalash asoslari ‖
Toshkent 2009
5. М.Э.Абрамян Programming Taskbook Электронный задачник по
программированию Версия 4.6 Ростов-на-Дону 2007.
6. ПОЛНОЕ РУКОВОДСТВО С#4.0 ГЕРБЕРТ ШИЛДТ Москва •
Санкт-Петербург • Киев 2011.
7. http://mycsharp.ru
8. http://www.intuit.ru
9. http://dastur.uz
10.https://msdn.microsoft.com/ru-ru/library
75
76
Download