Laboratoriya ishi 6 usullarni (funktsiyalarni) yaratish va u bilan ishlash


Download 24.07 Kb.
Sana16.06.2023
Hajmi24.07 Kb.
#1511642
Bog'liq
6 lab


LABORATORIYA ISHI 6
USULLARNI (FUNKTSIYALARNI) YARATISH VA U BILAN ISHLASH
Ishning maqsadi: o'rganish funktsiyalarni yaratish, ularning modifikatorlari turlari va funktsiyalarning haddan tashqari yuklanishi. Belgilangan argumentlar bilan funktsiyalarni ishga tushirish bo'yicha tajriba asosida o'rganish.
Nazariy qism
Usul harakatni operatorlar ketma-ketligi sifatida bajaradi. Usul parametrlarni belgilash orqali qo'ng'iroq qiluvchi koddan ma'lumotlarni olishi va qaytish turini ko'rsatish orqali natijani qo'ng'iroq qiluvchi kodga qaytarishi mumkin. Usul uchun qaytariladigan void turini aniqlash mumkin, bu usul hech qanday qiymat qaytarmasligini bildiradi. Usul, shuningdek, ref va out parametrlari orqali qo'ng'iroq kodining chiqishini qaytarishi mumkin.
Usul imzosi tur doirasida noyob bo'lishi kerak. Usul imzosi usul nomi va parametr turlarini o'z ichiga oladi (lekin parametr nomlari va qaytish turini o'z ichiga olmaydi).
Usullar bilan quyidagi modifikatorlardan foydalanishga ruxsat beriladi.
Statik modifikator statik.
Kirish modifikatorlari: jamoat, ichki, xususiy, himoyalangan.
Meros modifikatorlari: yangi, virtual, abstrakt, override, sealed.
Qisman qisman usul modifikatori.
Boshqarilmaydigan kod modifikatorlari: unsafe, extern.
A sync asenkron kod modifikatori.
Quyida ko'rsatilganidek, bitta iboradan iborat usul:
int Foo (int x) { return x * 2;}
ifodaga siqilgan usul sifatida qisqacha yozish mumkin (ifoda-tana usuli). Jingalak qavslar va kalit so'z r e tu r n \ u003d \ u003e kombinatsiyasi bilan almashtiriladi:
int Foo (int x) => x * 2;
Ifodalarga siqilgan funktsiyalar, shuningdek, qaytariladigan void turiga ega bo'lishi mumkin:
void Foo (int x) => Console.WriteLine (x) ;
Turi usullarni haddan tashqari yuklashi mumkin (bir xil nomdagi bir nechta usullarga ega), agar ularning imzolari boshqacha bo'lsa. Masalan, quyida keltirilgan barcha usullar bir xil turdagi mavjud bo'lishi mumkin:
void Foo (int x) {...}
void Foo (double x) {...}
void Foo (int x, float y) {...}
void Foo (float x, int y) {...}
Shunga qaramay, quyidagi usul juftlari bitta tur ichida birga yashay olmaydi, chunki qaytariladigan tur va params modifikatori usul imzosining bir qismi emas:
void Foo (int x) {...}
float Foo (int x) {...} / / Kompilyatsiya bosqichida xato
void Goo (int [ ] x) {...}
void Goo (params int[] x) {...} / / Kompilyatsiya bosqichida xato
Parametrni qiymat yoki havola orqali uzatish usuli ham imzoning bir qismidir. Masalan, Foo ( in t ) Foo (ref int ) yoki Foo (out int) bilan birga yashashi mumkin . Biroq, Foo (ref int) va Foo (out int) birga yashay olmaydi:
void Foo (int x) {...}
void Foo (ref int x) {. . .} / / Bu nuqtaga qadar hamma narsa yaxshi
void Foo (out int x) {...} / / Kompilyatsiya bosqichida xato

Ishni bajarish tartibi


Taklif etilgan variantlardan vazifangizni tanlang. Masalan, vazifa:
{█(y=2x_1^2+3 cos⁡〖x_2 〗 agar@<20 y=gunoh⁡〖(x_1)+x_2*π〗≥20 bo'lsa)┤
Bu erda bizga uchta argument kerak (x_1,x_2,a). Berilgan shart asosida ifodani hisoblaydigan va natijani beradigan funktsiyani yarating.
Dastur kodi quyidagicha tuziladi:
using System;

namespace ConsoleApp10


{
internal class Program
{
static void Main(string[] args)
{
double x1, x2;
int a;
Console.Yozish ("x1, x1 = qiymatini kiriting");
x1=double.Parse(Console.ReadLine());

Console.Yozish ("x2, x2 = qiymatini kiriting");


x2 = double.Parse(Console.ReadLine());

Console.Yozish ("a, a=qiymatini kiriting");


a = int.Parse(Console.ReadLine());

Console.WriteLine ("funktsiya natijasi y={0}", Funksiyaiya (x1,x2,a));


Console.ReadKey();
}
static double Funksiya(double x1, double x2, int a) {
double y=0;
if (a < 20) y = 2 * x1 * x1 + 3 * Math.Cos(x2);
if (a>=20) y=Math.Sin(x1)+Math.PI*x2;
return y;
}
}
}
Yaratilgan dasturni ishga tushiring va natijani ko'rsating.



Задача

1



2



3



4



5



6



7



8



9



10



11



12




Download 24.07 Kb.

Do'stlaringiz bilan baham:




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