Sobirjonov O'tkirbek


Download 88.66 Kb.
bet4/11
Sana25.01.2023
Hajmi88.66 Kb.
#1121060
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
dotnet

Nega kerak?
Endi funksiyaga qaytsak funksiyada ham deyarli shunday vaziyat. Ba’zan biz bitta funksiya orqali har xil qiymat olishga ehtiyoj sezamiz. Masalan ikki sondan kattasini topadigan funksiya yaratdik deylik uni biz int turidagi qiymat qaytaradigan qilib yaratdik , va float parametr kiritib ishlatganimizda bizga bu xatolik olib keldi nima endi float uchun alohida funksiya yozishimiz kerakmi , yo’q albatta funksiyani qiymatini chaqirish orqali bu muammoni yechamiz.
Yaratish
Demak bu yerda bir xil nomga ega va bir biridan parametr orqali (ya'ni parametrlar soni yoki parametr turi) farq qiluvchi funksiyalar yoziladi.
int max(int a, int b)
{
int max;
if (a > b)
max = a;
else
max = b;
return max;
}
float max(float a, float b)
{
float max;
if (a > b)
max = a;
else
max = b;
return max;
}
Ko’rib turganingizdek biz max funksiyasini chaqirsak qaysi ishlaydi degan savol tug’iladi albatta. Bu yerda kiritilgan parametr orqali funksiya chaqiriladi.
Misol uchun:
max(1.5 , 9.6) ko’rinishida funksiyani chaqirsak demak 2-funksiya chaqiriladi. max(5 , 9) ko’rinishda chaqirganimizda esa 1-funksiya chaqiriladi.
Dasturda Foydalanish
Endi esa ushbu misolni Console oynada ko'rib chiqamiz:
using System;
namespace function2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(max(11, 5));
Console.WriteLine(max(1.4f, 5.4f));

Console.ReadKey();
}
static int max(int a, int b)
{
int max;
if (a > b)
max = a;
else
max = b;
return max;
}
static float max(float a, float b)
{
float max;
if (a > b)
max = a;
else
max = b;
return max;
}
}
}

 << output
 11

  • 5.4

Xulosa qilib aytganda funksiyalarni qiymati orqali chaqirish imkoniyati bizga bitta ovqatning turli xil variantini taklif etatayotgan oshpazga o'xshaydi, hamma o'ziga ma'qulini tanlashi mumkin!

Funksiyada Ref kalit so'zidan foydalanish


Xolbek Xoliyorov
Biz shu vaqtgacha foydalangan funksiyalarda parametr sifatida berilgan o’zgaruvchilardan ma’lum natija olish uchun foydalandik, lekin biz hali parametrning qiymatini o’zgartirib ko’rmabmiz. Xo’sh parametrning qiymatini o’zgartirib nima qilamiz degan savol tug’ilishi tabiiy. Keling ikki sonni qiymatlarini o’zaro almashtiruvchi ‘swapp’ atalmish funksiya yaratib ko’ramiz.
Bu funksiyani ikki idish usuli (ya’ni ikkita idishdagi mahsulotlarni o’zaro almashtirish uchun uchinchi idishdan foydalanish ) yordamida tayyorlaymiz.
void swapp(int a, int b)
{
int k = a;
a = b;
b = k;
}
Va buni dasturda ishlatamiz:
using System;
namespace function3
{
class Program
{
static void Main(string[] args)
{
int a = 8, b = 5;
swapp(a, b);

Console.WriteLine(a+" "+b);
Console.ReadKey();
}
static void swapp(int a, int b)
{
int k = a;
a = b;
b = k;
}
}
}
<Afsuski natija biz kutgandek chiqmadi, ikki son o’z o’rnida chunki funksiya parametrlari standart holatda funksiya ichida o’zgarishlari funksiya tashqariga ta’sir qilmaydi. Bu muammoni hal qilish uchun bizga ref kalit so’zi yordamga keladi.
Biz yana yuqoridagi algoritm orqali funksiya yaratib olamiz faqat endigi safar ref yordamida.
static void swapp(ref int a, ref int b)
{
int k = a;
a = b;
b = k;
}
Va yangi funksyiani chaqirishda ham ref dan foydalanamiz.
using System;
namespace function3
{
class Program
{
static void Main(string[] args)
{
int a = 8, b = 5;

swapp(ref a,ref b);

Console.WriteLine(a+" "+b);
Console.ReadKey();
}
static void swapp(ref int a,ref int b)
{
int k = a;
a = b;
b = k;
}
}
}
<Va nihoyat biz kutgan natija ikki sonning o'rni almashmoqda buni ref kalit so'zisiz yaratish juda qiyin bo'lardi.
Xulosa
ref kalit so’zi qachonki biz funksiya parametri faqat kerakli natija uchun vosita sifatida emas balki parametrni o’zining qiymatini o’zgartirish ustuvor vazifa bo’lsa biz uchun juda zarur bo’ladi.

Funksiyada Out parametri


Xolbek Xoliyorov
Biz shu vaqtgacha funksiya bilan ishlash davomida bir nechta parametrlar orqali biror qiymatni topish va undan foydalanishni ko’rdik. Lekin biz bitta funksiya bir emas, bir nechta qiymatni aniqlashi kerak bo’lib qolsa nima qilamiz? Misol uchun kvadratning tomoni yordamida uning yuzasini, peremetrini va ichki chizilgan aylana radiusini hisoblaydigan funksiya yaratishimiz kerak. Buni odatiy holda har biri uchun alohida funksiya yozib chiqishimiz kerak. Lekin out yordamida buning hammasi oson bo'lib qoladi!!!
E'lon qilish
Ming marta maqolani o'qigandan ko'ra bir marta dastur kodini ko'rgan yaxshi!:)))
void kvadrat(float a,out float yuza, out float peremetr, out float radius)
{
yuza = a * a;
peremetr = 4 * a;
radius = a / 2;
}
Demak out parametrli o’zgaruvchi oldidan ‘out’ kalit so’zi ishlatiladi.
Yuqoridagi misolda funksiyani chaqirgandan keyin yuza , peremetr va radiusning qiymatidan foydanishimiz mumkin va ular oldindan qiymatga ega bo’lishi shart emas!
Foydalanish
Endi esa konsol oynada ushbu funksiyani chaqirib ko'ramiz.
using System;
namespace function4
{
class Program
{
static void Main(string[] args)
{
float a = 5;
kvadrad(a, out float yuza1, out float peremetr1, out float radius1);

Console.WriteLine(yuza1+" "+peremetr1+" "+radius1);
Console.ReadKey();
}
static void kvadrad(float a,out float yuza, out float peremetr, out float radius)
{
yuza = a * a;
peremetr = 4 * a;
radius = a / 2;
}
}
}
< Ko'rib turganingizdek out parametrlar qiymatga ega emas
 Qiymatga ega bo'lgan o'zgaruvchilarni ham out bilan chaqirishimiz mumkin
out parametrli o'zgaruvchi funksiya tashqarisida e'lon qilinmagan, lekin tashqarida foydalanish mumkin

  • out parametr sifatida oldin funksiya tashqarisida e'lon qilingan o'zgaruvchilardan foydalanishimiz mumkin.

Eslatma:

Download 88.66 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




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