Funksiyaning jarayonlarini o’rganish
![Mavzu: Funksiyaning jarayonlarini o’rganish.
Reja:
1. Qiymat qaytaradidan funksiya jarayonlarini o’rganish.
2. Qiymat qaytarmaydigan funksiya jarayonlarini o’rganish.
3. Random funksiyasining jarayonlarini o’rganish.
4. Struct ni funksiyalar bilan ishlatilishiga doir misollar.](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_1.png)
![C# dasturlash tilida funksiyalar nimaligini o’rganishdan oldin
funksiyaning o’zi nima? u bizga nega kerak degan savollarga
javob topamiz.
Funksiya nega kerak ?
Biz biroz yirikroq dastur yozish mobaynida juda ko’p bir xil
bo’lgan vazifani qayta va qayta yozayotgandek bo’lamiz. Bu
xuddi kuni bilan paxta terayotgan kishining ishiga o’xshaydi
qaniydi bitta robot bo’lsayu unga bir marta paxta terishni
o’rgatib qo’ysak keyin har safar aytganingda paxtani terib
qo’ysa deb orzu qiladi paxta teruvchi, albatta terimchining bu
orzusini amalga oshirish qiyin. Lekin sizning ishingizni (ya’ni
kodlashda bir vazifani qayta yozishni) yengillashtirishning yo’li
bor, bu yerda bizga Funksiyalar yordamga keladi.
Funksiya nima?
Bir marta kod yozib uni dasturning istalgan joyida istalgancha
ishlatish imkonini beruvchi operatorlar guruhi Funksiya deyiladi.
Bu huddi yuqoridagi misolimizga o’xshash bir marta qanday
qilishni o’rgat va xoxlagan
vaqting xoxlagan joyingda ishlat. Funksiya dasturchining kodini
sezilarni darajada qisqartiradi va bu orqali dastur kodini o’qish
osonlashadi va xotira hajmidan ham yutiladi.
C# da funksiyadan foydalanish. Dasturlashda funksiyalar ikki
toifaga bo’linadi.
Qiymat qaytaruvchi funksiya, qiymat qaytarmaydigan funksiya.
Dastlab biz qiymat qaytarmaydigan funksiyalar ni ko’rib
chiqamiz. Qiymat qaytaruvchi funksiyalar malum bir qiymatni
(int ,float ,string va boshqa) qaytaradi.
Qiymat qaytaruvchi funksiyalarning tuzilishini ko’ramiz.
<qaytaruvchi qiymat turi> <funksiya nomi> (<parametrlar>)
{](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_2.png)
![Bularning barchasiga alohida to’xtalib o’tamiz 1. - bu funksiya
qaytaradigan qiymat bo’lib turli xil ma’lumot turlaridan
foydalanishimiz mumkin masalan int, float string
kabilar. 2. - funksiyaning nomi yani uni chaqiradigan ism
deyishimiz ham mumkin,
unga ism tanlayotganda lotin alifbosidagi katta va kichik harflar,
raqamlar va tagchiziq (‘_’) foydalangan holda , raqamdan
boshlamasdan va c# tilidagi kalit so’zlardan foydalanmagan
holda xoxlagan ismni berishimiz mumkin. 3. (<parametrlar>) –
bu funksiya yakuniy qiymatni yaratish uchun foydalanadigan
yordamchilar deyishimiz mumkin ushbu yordamchilar sifatida
esa turli xil malumot tipidagi o’zgaruvchilar keladi.
yordamchilar sifatida 0 tadan xoxlagancha o’zgaruvchilar
bo’lishi mumkin ular quyidagicha yoziladi (int a, float b, int c) .
4. // funksiya tanasi - ushbu qism funksiyaning asosiy qismi
hisoblaning qaytariladigan yakuniy qiymatgacha bo’lgan barcha
ishlar shu yerda qilinadi va figurali qavs (‘{‘) bilan boshlanadi
ushbu qismda parametr sifatida kiritilgan o’zgaruvchilar ham
ishlatiladi. 5. // return - ushbu amal biz funksiyaning
qaytaradigan qiymatini aniqlaydi. Uning turi funksiyada elon
qilingan dastlabki qiymat bilan bir xil bo’lishi shart. <qaytaruvchi qiymat turi> <funksiya nomi> (<parametrlar>)
{](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_3.png)
![Ya’ni funksiya int turida bo’lsa biz return dan keyin ham int
turidagi o’zgaruvchi bo’ladi. Ming marta eshitgandan ko’ra, bir
marta ko’rgan yaxshi deganlaridek, biz C# tilida funksiyaga
oddiygina ikkita sondan kattasini topuvchi funksiya orqali misol
keltiramiz.
int max( int a , int b)
C# Console dasturida funksiyadan foydalanish
1
}
Copied!
output: 8
Yuqorida console dasturida max yani ikki sondan kattasini
topuvchi funksiya yaratildi va undan dasturning main qismida
foydalanildi. Albatta bu yerda funksiyaning foydasi yaqqol
sezilmagandir ammo siz dastur ichida funksiyani bir
necha marotaba foydalansangiz naqadar foydali ekanligini
tushunasiz.
Qiymat qaytarmaydigan funksiyalar. Agar biz funksiyalarni
xizmatchi inson deb bilsak, qiymat qaytaradigan va
qaytarmaydigan funksiyalarni shunday ta’riflashimiz
mumkin. Deylik xizmatchiga qanchadir pul (ya’ni parametr)
berib do’konga jo’natamiz va bizga aytgan narsamizni
(qaytaradigan qiymat)ni olib keladi, bu qiymat qaytaradigan
funksiyaga misol bo’ladi. Boshqa xizmatchiga esa pul (ya’ni
parametr) berib unga hovlidagi qandaydir ishlarni aytamiz va u
aytgan ishlaringizni qildi, lekin, sizga hech narsa qaytarib
kelmadi, bu qiymat qaytarmaydigan funksiyaga misol bo’la
oladi.](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_4.png)
![Qisqa qilib aytganda qiymat qaytarmaydigan funksiyaning
qaytaruvchi qiymati bo’lmaydi va u qandaydir vazifani bajargan
bo’ladi.
Endi esa qiymat qaytarmaydigan funksiyalarning tuzilishini
ko’rib chiqamiz.
Qiymat qaytarmaydigan funksiyaning qiymat qaytaradigan
funksiyadan asosiy farqi bu, funksiyalar qaytariladigan qiymat
turi o’rniga ‘void’ kalit so’zi bilan boshlanadi va qaytariladigan
qiymat return yozilmaydi. Endi esa qiymat qaytarmaydigan
funksiyaga misol yozamiz
Copied!
Bu shunchaki s matnni n marta takma tak chiqaruvchi funksiya
bundan foydalanishni yana console dasturda ham ko’ramiz.
Copied!
Output: dot-net.uz dot-net.uz dot-net.uz
Xulosa qilib aytadigan bo’lsak, bizning og’irimizni yengil
uzog’imizni yaqin qiluvchi yordamchi zamonaviy dasturlash
tillarini funksiyalarsiz tasavvur qilib bo’lmaydi. Katta loyiha qila
turib funksiyalardan foydalanmaslikni yangi uyni faqat qo’l
mehnati bilan qurmoqchi bo’lgan inson harakati bilan o’xshatish
mumkin. <void> <funksiya nomi> (<parametrlar>)
{
//funksiya tanasi
}](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_5.png)
![Bu boshlanishi edi keyingi darslarda funksiyalarga yanada
kengroq to’xtalamiz.
Ayrim algoritmlarning hisoblash jarayonlari o'zlarining ko'p
tarmoqliligi bilan ajralib turadi. Umuman olganda, tarmoqli
jarayonlarni hisoblash uchun shartli operatordan foydalanish
yetarlidir. Lekin, tarmoqlar soni ko'p bo'lsa, shartli
operatordan foydalanish algoritmning ko'rinishini
qo'pollashtirib yuboradi.
Bu hollarda shartli operatorning umumlashmasi bo'lgan variant
tanlash operatoridan foydalanish maqsadga muvofiqdir.
Variant tanlash operatorining sintaksis aniqlanmasi
quyidagicha:
<variant tanlash operatori>::= case <operator selektori>
of <variant ro'yxatining hadlari> end;
bu yerda <operator selektori>::= <ifoda>;
<variant ro'yxatining hadi>::=<variantlar metkalarining
ro'yxati>:<operator>;
<variantlar metkalarining ro'yxati>::=<variant metkasi>{,<
variant metkasi>};
<variant metkasi>::=<o'zgarmas>
Variant tanlash operatori bajarilish paytida oldin selektorning
qiymati hisoblanadi, shundan so'ng selektorning qiymatiga mos
metka bilan jihozlangan operator bajariladi va shu bilan variant
tanlash operatori o'z ishini yakunlaydi.
Shuni esda tutish kerakki, <variant metka>si bilan <operator
metka>si bir xil tushuncha
emas va variant metkasi metkalar (Label) bo'limida
ko'rsatilmasligi kerak. Bundan](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_6.png)
![tashqari, ular o'tish operatorida ishlatilishi mumkin emas.
Misollar:
1.Case I mod 3 of
0: m: = 0;
1: m: = -1;
2: m: = 1
end.
2.Case sum of
“=”, “+”, “/”, “-“: ;
“!”, k: = 2;
“:”, “;” : k: = 3
end.
Case kun of
dush, sesh, chor, pay, jum: writeln('ish kuni');
shan, yaksh: writeln('dam olish kuni') end.
Variant tanlash operatorining tana qismiga kirish faqat case
orqali amalga oshiriladi.
Endi shartli operatornng variant tanlash operatori orqali
ifodalanishini ko'rib chiqaylik:
Quyidagi shartli va variant tanlash operatorlari bir-biriga mos
keladi:
1. If B then S1 else S2 va Case B of
true: S1;
false: S2;
end.
Quyidagi chala shartli va variant tanlash operatorian bir-biriga
mos keladi:](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_7.png)
![2. If B then S va Case B of
True: S;
False:
end.
Variant tanlash operatorlaridan sanalma tiplar qiymatlarini
ko'rishga qulay holda chop etish uchun foydalanish mumkin.
Buni quyidagi misolda ko'rib chiqamiz:
type
hafta=(Du, Se, Cho, Pa, Ju, Sha, Ya);
var
kun:hafta;
begin
kun:=Du;
case kun of
Du, Se, Cho, Pa, Ju: writeln(“Ish kuni”);
Sha, Ya : writeln(“Dam olish kunlari”);
end;
for kun:=Du to Jak do
begin
case kun of
Du: writeln(“Dushanba”);
Se: writeln(“Seshanba”);
Cho: writeln(“Chorshanba”);
Pa: writeln(“Payshanba”);
Ju: writeln(“Juma”);](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_8.png)
![Sha: writeln(“Shanba”);
Ya: writeln(“Yakshanba”);
end;
end;
end;
Sanalma tipli qiymatlarni kiritish ancha qiyin masala hisoblanib,
Bu ishni tashkil qilish uchun to’g’ridan-to’g’ri variant tanlash
operatoridan foydalanish mumkin emas. Ma’lumotlarni kiritish
uchun asosan qatorli (string) tiplarning imkoniyatlaridan
foydalaniladi.
Random sinfi , buning bizga nima keragi bor?
Misol uchun, siz ko’proq sonlar ustida biror amal bajaruvchi
dastur yozdingiz. Dasturingiz to’g’ri ishlayotganini tekshirish
uchun ishga tushirganingizda, shuncha sonni yozib chiqishingiz
shart emas. Shunchaki bitta massiv olib, Random sinfidan
foydalanib uni tasodifiy sonlar bilan osongina to’ldirish mumkin.
Dastur har safar ishga tushirilganida har xil sonlar tanlab
olinadi. Yoki ekranning turli joylarida paydo bo’luvchi shakllar
koordinatasini Random orqali olib, takrorlanmas animatsiyalar
hosil qilishingiz mumkin va hokazo, boshqa ko’p maqsadlarda
ishlatishingiz mumkin.
Endi esa bu sinf metodlaridan qanday foydalanishni ko’rib
chiqamiz.
Random sinfi System standart kutubxonasida joylashgan. Bu
sinfdan foydalanish uchun avval undan obyekt olishimiz kerak :
Random rand = new Random();](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_9.png)
![So'ngra quyidagi metodlardan foydalanishimiz mumkin:
• Random.Next() metodi [0; 2 147 483 647) oraliqdan integer
tipidagi tasodifiy sonni tanlab beradi.
• Random.Next(int a) – [0; a) oraliqdagi tasodifiy butun sonni
olish uchun ishlatiladi.
• Random.Next(int a,int b) – [a;b) oraliqdagi tasodifiy butun
sonni olib beradi. Int tipida qiymat qaytaradi.
• Random.NextBytes(byte [] b) – byte tipidagi b massivni
tasodifiy sonlar bilan to’ldirib beradi.
• Random.NextDouble() – [0;1) oraliqdagi tasodifiy haqiqiy
sonni tanlab olish uchun ishlatiladi.
Metodlarni kodda quyidagicha ishlatish mumkin:
using System;
class dotnetuz
{
public static void Main()
{
Random tasodifiy = new Random();
Console.WriteLine("Integer tipidagi 5 ta tasodifiy sonlar:");
for (int i = 0; i < 5; i++)
{
Console.Write(tasodifiy.Next() + " ");
}
Console.WriteLine();
Console.WriteLine();](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_10.png)
![Console.WriteLine("0 va 40 orasidagi 7 ta tasodifiy
sonlar:");
for (int i = 0; i < 7; i++)
{
Console.Write(tasodifiy.Next(41) + " ");
}
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("40 va 90 orasidagi 8 ta tasodifiy
sonlar:");
for (int i = 0; i < 8; i++)
{
Console.Write(tasodifiy.Next(40, 91) + " ");
}
Console.WriteLine();
Console.WriteLine();
byte[] massiv = new byte[10];
tasodifiy.NextBytes(massiv);
Console.WriteLine("byte tipidagi 10 ta tasodifiy sonlar:");
foreach (byte item in massiv)
{
Console.Write(item + " ");
}
Console.WriteLine();
Console.WriteLine();](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_11.png)
![Console.WriteLine("0 va 1 orasidagi 5 ta tasodifiy haqiqiy
sonlar:");
for (int i = 0; i < 5; i++)
{
Console.Write(tasodifiy.NextDouble() + " ");
}
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("0 va 15 orasidagi 5 ta tasodifiy haqiqiy
sonni olish ham mumkin:");
for (int i = 0; i < 5; i++)
{
Console.Write(tasodifiy.NextDouble() * 15 + " ");
}
Console.ReadKey();
}
}
Struct mavzusiga doir misollar:
1.#include <iostream>
using namespace std;
// Struct tuzish
struct Car {
string model;
string make;
int year;](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_12.png)
![};
int main() {
// Car struct turi bilan obyekt tuzish
Car myCar = {"Toyota", "Camry", 2010};
// myCar'ning xususiyatlarini chiqarish
cout << "Model: " << myCar.model << endl;
cout << “ Make: " << myCar.make << endl;
cout << "Year: " << myCar.year << endl;
return 0;
}
2. #include <iostream>
using namespace std;
struct Kurs {
string nom;
int kreditlar;
double baho;
};
int main() {
// struct obyekti yaratish
Kurs c1 = {"Hisoblash", 4, 3.5};
Kurs c2 = {"Fizika", 3, 3.0};
// structlardan tashkil topilgan massiv](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_13.png)
![Kurs kurslari[2] = {c1, c2};
// Massivda joylashgan har bir obyektning ma'lumotlari
to'plamini chiqarish
for (int i = 0; i < 2; i++) {
cout << "Kurs nomi: " << kurslar[i].nomi << endl;
cout << "Kreditlar: " << kurslar[i].kreditlar << endl;
cout << "Baho: " << kurslar[i].darajali << endl;
}
return 0;
}
3. #include <iostream>
using namespace std;
struct B {
int unlilar = 0;
int undoshlar = 0;
};
int main() {
string s;
getline(cin, s);
harflar_soni, n;
for(char c : s) {
if(isalpha(c)) {
if(c == 'a' c == 'e' c == 'i' c == 'o' c == 'u') {
n.unlilar++;
} else {
n.undoshlar++;
}](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_14.png)
![}
}
cout << "Unlilar harflar soni: " << n.unli harflar << endl;
cout << "Undosh harflar soni: " << n.undosh harflar<< endl;
return 0;
}
4. #include <iostream>
using namespace std;
struct Nuqta {
int x, y;
};
int main() {
Nuqta p = {5, 10};
cout << "Koordinatalar: (" << p.x << ", " << p.y << ")" << endl;
return 0;
}
5. #include <iostream>
using namespace std;
struct Student {
string ism;
int yosh;
double gpa;
};
int main() {](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_15.png)
![Student s1 = {"Sabina", 20, 3.2};
cout << "Ism: " << s1.ism << endl;
cout << "Yosh: " << s1.yosh << endl;
cout << "GPA: " << s1.gpa << endl;
return 0;
}
6. #include <iostream>
using namespace std;
struct Kalkulyator {
int qushish(int x, int y) {
return x + y;
}
int ayirish(int x, int y) {
return x - y;
}
int kupaytirish(int x, int y) {
return x * y;
}
int bulinishi(int x, int y) {
return x / y;
}
};
int main() {
Kalkulator hisobi;](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_16.png)
![cout << calc.qushish(2, 5) << endl;
cout << calc.ayirish(10, 8) << endl;
cout << calc.kupaytirish(3, 4) << endl;
cout << calc.bulish(27, 9) << endl;
return 0;
}
7. #include <iostream>
using namespace std;
struct Shaxs {
string ism;
int yosh;
int buyi;
};
int main() {
Shaxs p1 = {"Umid", 25, 175};
cout << "Ism: " << p1.ism << endl;
cout << "Yosh: " << p1.yosh << endl;
cout << "Buyi: " << p1.buyi << endl;
return 0;
}
8. #include <iostream>
#include <string>
using namespace std;
struct Bankhisobi {
string egasiningismi;](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_17.png)
![int raqami;
double balansi;
};
int main() {
BankAccount b1 = {"Jahongir", 12345, 1000.0};
cout << "Egasining ismi: " << b1.egasining_ismi << endl;
cout << "Hisob raqami: " << b1.raqami << endl;
cout << "Balansi: " << b1.balansi << endl;
return 0;
}
9. #include <iostream>
using namespace std;
struct vazifa {
string nomi;
bool tugallandi;
};
int main() {
Vazifa t1 = {"Kir yuvish", false};
cout << "Vazifa nomi: " << t1.nomi << endl;
cout << "Bajarildimi? " << (t1.bajarildimi ? "Yes" : "No") <<
endl;
return 0;
}
10. #include <iostream>
#include <string>](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_18.png)
![using namespace std;
struct Klub
{
int Tartib;
char nom[10];
char shahar[10];
unsigned short yil;
unsigned short pozitsiya;
};
void Klublar_haqida(Klub K)
{
cout << "Klubning shahri:" << K.shahar;
}
int main()
{
Klub klublar;
klublar.Tartib = 1;
strcpy_s(klublar.nom, "Chelsi");
strcpy_s(klublar.shahar, "London");
Klublar_haqida(klublar);
klublar.yil = 1923;
klublar.pozitsiya = 1;
return 0;
}](/data/documents/e3aa2a8f-97db-4daf-843e-09719660c793/page_19.png)
Mavzu: Funksiyaning jarayonlarini o’rganish. Reja: 1. Qiymat qaytaradidan funksiya jarayonlarini o’rganish. 2. Qiymat qaytarmaydigan funksiya jarayonlarini o’rganish. 3. Random funksiyasining jarayonlarini o’rganish. 4. Struct ni funksiyalar bilan ishlatilishiga doir misollar.
C# dasturlash tilida funksiyalar nimaligini o’rganishdan oldin funksiyaning o’zi nima? u bizga nega kerak degan savollarga javob topamiz. Funksiya nega kerak ? Biz biroz yirikroq dastur yozish mobaynida juda ko’p bir xil bo’lgan vazifani qayta va qayta yozayotgandek bo’lamiz. Bu xuddi kuni bilan paxta terayotgan kishining ishiga o’xshaydi qaniydi bitta robot bo’lsayu unga bir marta paxta terishni o’rgatib qo’ysak keyin har safar aytganingda paxtani terib qo’ysa deb orzu qiladi paxta teruvchi, albatta terimchining bu orzusini amalga oshirish qiyin. Lekin sizning ishingizni (ya’ni kodlashda bir vazifani qayta yozishni) yengillashtirishning yo’li bor, bu yerda bizga Funksiyalar yordamga keladi. Funksiya nima? Bir marta kod yozib uni dasturning istalgan joyida istalgancha ishlatish imkonini beruvchi operatorlar guruhi Funksiya deyiladi. Bu huddi yuqoridagi misolimizga o’xshash bir marta qanday qilishni o’rgat va xoxlagan vaqting xoxlagan joyingda ishlat. Funksiya dasturchining kodini sezilarni darajada qisqartiradi va bu orqali dastur kodini o’qish osonlashadi va xotira hajmidan ham yutiladi. C# da funksiyadan foydalanish. Dasturlashda funksiyalar ikki toifaga bo’linadi. Qiymat qaytaruvchi funksiya, qiymat qaytarmaydigan funksiya. Dastlab biz qiymat qaytarmaydigan funksiyalar ni ko’rib chiqamiz. Qiymat qaytaruvchi funksiyalar malum bir qiymatni (int ,float ,string va boshqa) qaytaradi. Qiymat qaytaruvchi funksiyalarning tuzilishini ko’ramiz. <qaytaruvchi qiymat turi> <funksiya nomi> (<parametrlar>) {
Bularning barchasiga alohida to’xtalib o’tamiz 1. - bu funksiya qaytaradigan qiymat bo’lib turli xil ma’lumot turlaridan foydalanishimiz mumkin masalan int, float string kabilar. 2. - funksiyaning nomi yani uni chaqiradigan ism deyishimiz ham mumkin, unga ism tanlayotganda lotin alifbosidagi katta va kichik harflar, raqamlar va tagchiziq (‘_’) foydalangan holda , raqamdan boshlamasdan va c# tilidagi kalit so’zlardan foydalanmagan holda xoxlagan ismni berishimiz mumkin. 3. (<parametrlar>) – bu funksiya yakuniy qiymatni yaratish uchun foydalanadigan yordamchilar deyishimiz mumkin ushbu yordamchilar sifatida esa turli xil malumot tipidagi o’zgaruvchilar keladi. yordamchilar sifatida 0 tadan xoxlagancha o’zgaruvchilar bo’lishi mumkin ular quyidagicha yoziladi (int a, float b, int c) . 4. // funksiya tanasi - ushbu qism funksiyaning asosiy qismi hisoblaning qaytariladigan yakuniy qiymatgacha bo’lgan barcha ishlar shu yerda qilinadi va figurali qavs (‘{‘) bilan boshlanadi ushbu qismda parametr sifatida kiritilgan o’zgaruvchilar ham ishlatiladi. 5. // return - ushbu amal biz funksiyaning qaytaradigan qiymatini aniqlaydi. Uning turi funksiyada elon qilingan dastlabki qiymat bilan bir xil bo’lishi shart. <qaytaruvchi qiymat turi> <funksiya nomi> (<parametrlar>) {
Ya’ni funksiya int turida bo’lsa biz return dan keyin ham int turidagi o’zgaruvchi bo’ladi. Ming marta eshitgandan ko’ra, bir marta ko’rgan yaxshi deganlaridek, biz C# tilida funksiyaga oddiygina ikkita sondan kattasini topuvchi funksiya orqali misol keltiramiz. int max( int a , int b) C# Console dasturida funksiyadan foydalanish 1 } Copied! output: 8 Yuqorida console dasturida max yani ikki sondan kattasini topuvchi funksiya yaratildi va undan dasturning main qismida foydalanildi. Albatta bu yerda funksiyaning foydasi yaqqol sezilmagandir ammo siz dastur ichida funksiyani bir necha marotaba foydalansangiz naqadar foydali ekanligini tushunasiz. Qiymat qaytarmaydigan funksiyalar. Agar biz funksiyalarni xizmatchi inson deb bilsak, qiymat qaytaradigan va qaytarmaydigan funksiyalarni shunday ta’riflashimiz mumkin. Deylik xizmatchiga qanchadir pul (ya’ni parametr) berib do’konga jo’natamiz va bizga aytgan narsamizni (qaytaradigan qiymat)ni olib keladi, bu qiymat qaytaradigan funksiyaga misol bo’ladi. Boshqa xizmatchiga esa pul (ya’ni parametr) berib unga hovlidagi qandaydir ishlarni aytamiz va u aytgan ishlaringizni qildi, lekin, sizga hech narsa qaytarib kelmadi, bu qiymat qaytarmaydigan funksiyaga misol bo’la oladi.
Qisqa qilib aytganda qiymat qaytarmaydigan funksiyaning qaytaruvchi qiymati bo’lmaydi va u qandaydir vazifani bajargan bo’ladi. Endi esa qiymat qaytarmaydigan funksiyalarning tuzilishini ko’rib chiqamiz. Qiymat qaytarmaydigan funksiyaning qiymat qaytaradigan funksiyadan asosiy farqi bu, funksiyalar qaytariladigan qiymat turi o’rniga ‘void’ kalit so’zi bilan boshlanadi va qaytariladigan qiymat return yozilmaydi. Endi esa qiymat qaytarmaydigan funksiyaga misol yozamiz Copied! Bu shunchaki s matnni n marta takma tak chiqaruvchi funksiya bundan foydalanishni yana console dasturda ham ko’ramiz. Copied! Output: dot-net.uz dot-net.uz dot-net.uz Xulosa qilib aytadigan bo’lsak, bizning og’irimizni yengil uzog’imizni yaqin qiluvchi yordamchi zamonaviy dasturlash tillarini funksiyalarsiz tasavvur qilib bo’lmaydi. Katta loyiha qila turib funksiyalardan foydalanmaslikni yangi uyni faqat qo’l mehnati bilan qurmoqchi bo’lgan inson harakati bilan o’xshatish mumkin. <void> <funksiya nomi> (<parametrlar>) { //funksiya tanasi }