Dasturlashning bir necha yo‘nalishlari mavjud bo‘lib, qo‘yilgan vazifa asosida ulardan biri tanlanadi va shu asosida dastur tuziladi. Shunday yo‘nalishlardan biri — strukturali dasturlash hisoblanadi. Bunda, murakkab dasturiy kodlar bloklarga bo‘linib, kerakli joylarda shu bloklar chaqiriladi. Bloklarga bo‘lish, dasturda takrorlanadigan kodlar asosida amalga oshiriladi. Bu bloklar, qism dasturlar deb yuritiladi va ularning ikki ko‘rinishi mavjud: funksiya va protsedura.

Dasturning ishlashi asosiy blokdan boshlanadi(java dasturlash tilida main() funksiyasi), keyin boshqa qism dasturlar chaqirilib davom ettiriladi. Qism dasturlar ma’lum bir parametrlar yoki umuman parametrlarsiz chaqirilishi mumkin.

Protsedura va funksiyalar — qism dasturlar deb yuritiladi, ob’yektga yo‘naltirilgan dasturlashda esa klass metodlari deyiladi.

Qism dastur — dastur kodining ma’lum bir qismi bo‘lib, o‘z nomiga egadir. Bunda, ma’lum bir jarayonlar aks etadi va istalgancha chaqirib ishlatish  mumkin bo‘ladi. Qism dasturlar, ma’lum bir qiymatlarni qabul qilishi va qaytarishi mumkin.

Funksiya — bu qism dastur turi bo‘lib, parametrlar qabul qilishidan tashqari, bu parametrlar bilan amallar bajarib, natija qaytarishi ham mumkin.

Protsedura — bu ham qism dastur bo‘lib, faqat parametr qabul qiladi, lekin natija qaytarmaydi.

Qism dastur quyidagicha e’lon qilinadi:

qaytaradigan_tip qism dastur_nomi(parametrlar)
{
qism dastur tanasi
}

Agar hech qanday natija qaytarilmasa, «void» tip beriladi. Bunda, qism dastur protsedura deb yuritiladi. Misol ko‘ramiz,

class test {
static void Count(int dan, int gacha)
{
for(int i = dan; i<=gacha; i++)
System.out.println(i);
}
    public static void main(String args[]) {
}
}

Qism dastur main() metodi tashqarisida e’lon qilindi, bu degani, qism dastur chaqirilsagina ishga tushadi, aks holda umuman ishlamaydi(chunki dastur ishlashi main() ichidan boshlanadi).

2-qator. Qism dastur e’lon qilindi.

static — statik qism dastur(dinamik(o‘zgaruvchan emas)).

void — hech qanday qiymat qaytarmaydi, demak protsedura.

Count — qism dastur nomi.

int dan, int gacha — qism dastur parametrlari, ya’ni qism dasturda ishlatiladigan o‘zgaruvchilar.

Shundan so‘ng, qism dastur tanasi ochildi. Bu yerda sikl ishlatildi, bu sikl «dan» va «gacha» o‘zgaruvchilar orqalig‘idagi sonlarni ekranga chiqaradi. Bu o‘zgaruvchilar qism dastur parametrlari bo‘lib, uning qiymatlari asosiy dasturda beriladi.

Endi, biror natija qaytaradigan qism dasturga misol ko‘ramiz,

class test {
static int Compare(double a, double b)
{
int Res = 0;
if(a > b)
Res = 1;
if(a < b)
Res = -1;
return Res;
}
    public static void main(String args[]) {
}
}

Qism dastur «int» tipidagi qiymatni qaytaradi(static int), demak bu qism dastur funksiya hisoblanadi, «a» va «b» nomli o‘zgaruvchilari mavjud. Qism dastur tanasida, faqat shu qism dasturda ishlatish mumkin bo‘lgan «Res» nomli o‘zgaruvchi e’lon qilindi(hattoki bu o‘zgaruvchi main() metodida ham ko‘rinmaydi). So‘ng «a» va «b» o‘zgaruvchilar solishtirildi, agar «a» katta bo‘lsa, Res=1, agar «a» kichik bo‘lsa, Res=-1  qiymatlarni qabul qiladi.

«Return» kalit so‘zi orqali, qism dastur natijasini qaytarish mumkin. Qaytarilayotgan o‘zgaruvchi(Res) tipi, qism dastur tipi bilan bir hil bo‘lishi lozim(int).

Bundan ko‘rinib turibdiki, qism dastur tipi parametrlar tipiga bog‘liq emas, faqat qaytarilayotgan o‘zgaruvchi tipiga bog‘liq.

Agar yuqoridagi kodlarni ishga tushirsangiz, hech qanday natija olaolmaysiz. Natija olish uchun, yoki qism dasturni ishlatish uchun, uni asosiy metodda(main()) chaqirish lozim.

Chaqirish, qism dastur nomi va qism dasturda berilgan parametrlar soni va tipiga mos holda qiymatlar berish orqali amalga oshiriladi. Qism dasturni parametr yoki biror o‘zgaruvchiga o‘zlashtirish orqali chaqirish mumkin. Quyida, yuqoridagi ikki qism dasturni asosiy dasturda chaqiramiz.

class test {
//Dastlabki qism dasturni e'lon qilish
static void Count(int dan, int gacha)
{
for(int i = dan; i<=gacha; i++) System.out.println(i); } //ikkinchi qism dasturni e'lon qilish static int Compare(double a, double b) { int Res = 0; if(a > b)
Res = 1;
if(a < b)
Res = -1;
return Res;
}
// Asosiy dastur, dasturni ishlashi shu yerdan boshlanadi
public static void main(String[] args) {
System.out.println("Count metodini, 1 va 5 qiymati bilan chaqirish");
Count(1, 5);
System.out.println("Compare metodini chaqirish");
int Res2 = Compare(2, 3);
System.out.println(Res2);
System.out.println("Count metodini, 5 va 15 qiymati bilan chaqirish");
Count(5, 15);
}
}

Dastlab, ikki qism dastur e’lon qilindi va ularning tanasida qilinishi kerak bo‘lgan amallar bajarildi(biri funksiya, biri protsedura). Shundan so‘ng, asosiy dasturda, bu qism dasturlar ma’lum bir parametrlar bilan chaqirildi. ko‘rib turganingizdek, qism dasturlarni chaqirish, uning nomi va qiymati bilan amalga oshirilar ekan.

«Compare» qism dasturini chaqirganda, uning qiymati(bu qism dastur Res nomli o‘zgaruvchi qiymatini qaytaradi), asosiy dasturda yaratilgan «Res2» nomli o‘zgaruvchiga berildi.

YUqoridagi dasturning natijasi:

qism_1

Qism dastur va asosiy dasturdagi o‘zgaruvchilarni farqlash uchun, qism dastur o‘zgaruvchilarini «формальные параметры«, asosiy dasturdagi o‘zgaruvchilarni «фактические параметры» deb atash odatga kirgan.

Agar, asosiy dasturdagi biror o‘zgaruvchini, qism dastur parametri sifatida bersangiz, bu parametr qism dasturda o‘zgartirib yuborilsa ham, asosiy dasturdagi o‘zgaruvchi o‘zgarmaydi.

class test {
static int Count(int aa)
{
    int bb = aa*2;
    return bb;
}
public static void main(String[] args) {
int aa2 = 5;
    System.out.println(Count(aa2));
    System.out.println(aa2);
}
}

Dasturda, asosiy dasturdagi»aa2» o‘zgaruvchi, qism dasturda o‘zgartirildi va asosiy dasturga qaytarib berildi. Shundan so‘ng, ikkala hol ham ekranga chiqarildi va asosiy dasturdagi o‘zgaruvchi o‘zining «5» qiymatini saqlab qoldi.

qism_2

Har bir qism dastur ichidagi o‘zgaruvchi faqat shu qism dastur uchundir. Asosiy dasturda yoki boshqa qism dasturda bu o‘zgaruvchini ishlatib bo‘lmaydi.

static void Proc1()
{
System.out.println(b);
}
static void Proc2()
{
double b = 1;
}

«Proc1» nomli qism dasturda, «b» nomli o‘zgaruvchi yo‘q. Bu kodni dasturga kiritsak, xatolik haqida ma’lumot olamiz, agar bu qism dasturni asosiy dasturda chaqirib ishlatsak(chaqirmasak, bu qism dasturga murojaat bo‘lmaydi).