Algoritmlash asoslari


Download 1.32 Mb.
bet1/16
Sana12.06.2020
Hajmi1.32 Mb.
#117719
  1   2   3   4   5   6   7   8   9   ...   16
Bog'liq
Algoritmlash asoslari


@tuit_online kanali sizlar uchun maxsus...

ALGORITMLASH ASOSLARI

Ushbu maqolalar to`plami dasturchilikning eng muhim bo`g`inlaridan bo`lmish, algoritmlashga bag`ishlanadi. Birinchi maqolamiz algoritmlashning nima ekanligi, uning asosiy turlari, va ularning qo`llanilish joylariga bag`ishlanadi. Demak, ketdik…

Algoritm so`zi barchamizga ma`lum bo`lganidek, vatandoshimiz Muhammad ibn Muso al-Xorazmiyning ismini yevropacha talaffuzidan kelib chiqqan. Demak, hozirda keng foydalanilayotgan algoritmlashning asosi bizning Vatanimizdan boshlangan.

Maktab informatika kursidan ma`lumki, algoritm bu – ma`lum masalani hal qilish uchun bajarish kerak bo`lgan amallar ketma-ketligi. O`sha mashhur choy damlash algoritmidan chekingan holda hayotiy misol keltiramiz. Hayotda eng ko`p bo`ladigan holatimiz bu uyqu. Ko`pchilik rejim bilan uxlaydi, ya`ni uxlashga ma`lum bir vaqtni belgilagan. Misol uchun siz uxlashga yotish uchun 22:00 ni tanladingiz. Har safar soatga qaraganingizda uxlash vaqti bo`lgan yoki bo`lmaganini tekshirasiz. Miyangizda esa quyidagi jarayon bo`ladi:

Bu oddiy uyquga yotish algoritmi edi. Hayotda o`zimiz bilmagan holatda algoritmlardan foydalanamiz. Miyamiz juda tez ishlagani sabab qadamlar ketma-ketligi haqida o`ylab ko`rmaymiz.

Endi maqolamizning asosiy qismi, dasturlashda algoritmlashga o`tamiz. Dasturlashda algoritm bu – masalani yechish uchun bajarilishi kerak bo`lgan amallar ketma-ketligini kodga o`girilgan varianti. Bunda masalani yechish uchun miyamizda kechayotgan jarayonni kompyuter tushunadigan qilib yozish talab etiladi.

Algoritmlashning asosi matematika hisoblanadi. Bunda fikrlash muhim rol o`ynaydi. So`zimni quyidagicha isbot qilaman. Dasturlash sanoatida gigant korporatsiya hisoblangan Microsoftning asoschisi Bill Geytsning shunday so`zlari dasturchilar orasidda mashhur:"Qo`shish va ayirishni biladigan har qanday inson dasturchi bo`la oladi". Bu so`zlarni mag`zini chaqish uchun sizlarni boshlang`ich sinflarga qaytishga taklif etaman. Har birimiz boshlang`ich sinflarda qo`shish va ayirish amallarini o`rgangan edik. Ko`pchilik buni barmoqlari orqali bajargan. Chunki barmoqlar 10ta va raqamlarni qo`shish va ayirishda qo`l keladi. Keyinchalik matematik evolutsiyamiz sonlar bilan qo`shish va ayirish amallarini bajarish bosqichiga yetib keladi. Bu rivojlanish jarayoni yangi amallar bilan boyidi va endi bir xil raqamlarni bir necha marta qo`shishni osonlashtirish uchun ko`paytirish jadvalini o`rgandik. E`tibor bering, ko`paytirish algoritmi qo`shish algoritmining asosiga qurilgan. Rivojlanishimiz davom etib, endilikda qoldiqli bo`lish va shu kabi murakkabroq amallarga o`tamiz. Maktabni bitirish vaqtida esa juda murakkab amallarni ham bajara oladigan darajada bo`lamiz. Ana ko`rdingizmi, hamma murakkab amallarning asosi qo`shish va ayirishdan boshlanadi. U yog`i esa fikrlash doirangiz kengligiga bog`liq. Demak, dasturlashdagi asosiy masalalar matematik fikrlashga bog`liq.

Algoritmlashning asosiy shartlaridan biri bu – dasturning ishlash tezligi. Kod qanchalik optimal bo`lsa, dastur shuncha tez ishlaydi. Dastur tezligini pasaytiruvchi omillar bu – loop , ya`ni takrorlanishlar. Sikl ichida sikl ochish yoki sikl ichida shart tekshirish dastur tezligini ma`lum darajada pasaytiradi. Hayotiy misol keltiraman: 7ta 45ni bir biriga qo`shing. Har birini alohida qo`shib chiqish uchun vaqt talab etiladi. Ya`ni 7 marta bir xil amalni bajarish kerak. Xuddi shuni ko`paytirish amali orqali kamroq vaqt sarflab amalga oshirish mumkin. Har birimiz arifmetik progressiya haqida tushunchaga egamiz. Hadlari bir biridan ma`lum d songa farq qiladigan sonli ketma-ketlik. Shuni nta hadi yig`indisini toppish uchun n marta har safar yangi hadni topish va uni oldingi sonlar yig`indisiga qo`shish talab etiladi. Bu esa juda ko`p vaqt talab qiladi. Aynan shu muammo matematikada oddiy formula orqali hal etilgan. Bu muammoni hal etish formulasi esa albatta tafakkur mahsuli hisoblanadi. Siz ham yuqori darajali masalalarni yechishda ana shunday ixtirolar qilasiz yoki boshqa ixtirolardan foydalanasiz.

@tuit_online kanali sizlar uchun maxsus...



Dasturlashda algoritmlashning asosan 4 turi mavjud:

  • Saralash

  • Qidirish

  • Grafiklar

  • Stringlar

Ularning har biriga keyingi maqolalarimizda alohida to`xtalib o`tishga harakat qilamiz. Hozir esa oddiy algoritmlaning kodga o`girilish jarayonini ko`rib chiqamiz. Biz bu misollarni O`zbekistonda anchagina mashhur bo`lgan Java dasturlash tili negizida ko`rib chiqamiz.

Misol: a sonini qiymatini b soniga, b sonini qiymatini a soniga o`zlashtirish dasturini tuzing.

Misol uchun a = 2 , b = 7;

Dastur Java dasturlash tilida quyidagicha bo`ladi:

package dasturchi_uz;

public class Almashtirish1 {

public static void main(String[] args) {

int a = 2;

int b = 7;//Sonlar kiritildi

int temp; // oraliq o`zgaruvchi

temp = a; // a ning qiymatini vaqtincha saqlab turish

a = b; // b ning qiymatini a ga o`zlashtirish

b = temp; // b ga a ning saqlangan qiymatini o`zlashtirish

System.out.println("a = " + a);

System.out.println("b = " + b);

}

}

Aynan shu misolni yechishda xotiradan ortiqcha joy olmaslik talab etilishi mumkin, ya`ni o`rtadagi o`zgaruvchi "temp" ishlatilmasligi talab etiladi. Buni quyidagicha amalga oshirsa bo`ladi:

package dasturchi_uz;

public class Almashtirish2 {

public static void main(String[] args) {

int a = 2;

int b = 7;// sonlar kiritildi

a = a + b;// a ning qiymatini yig`indiga tengladik a = 2 + 7 = 9

b = a - b;// b ga a ning eski qiymatini o`zlashtiramiz b=9 – 7 = 2

a = a - b;// a ga b ning eski qiymatini o`zlashtiramiz a=9 – 2 = 7

System.out.println("a = " + a);

System.out.println("b = " + b);

}

Yuqoridagi misolda biz dasturda yangi qiymat o`zlashtirish orqali eskisini unutish usulidan foydalandik.

Misol: Bo`lish amalidan foydalanmasdan faqat qo`shish va ayirish amallari orqali bo`linmani hisoblang: 676 : 26;

Java dasturlash tilidagi dasturi quyidagicha bo`ladi:

oooo

package dasturchi_uz;

public class Bolinma {

public static void main(String[] args) {

int bolinuvchi = 676;// bo`linuvchi kiritiladi

int boluvchi = 26; // bo`luvchi kiritiladi

int bolinma = 0; // bo`linmaning boshlang`ich qiymati 0 bo`ladi

do {

bolinuvchi-=boluvchi; // har safar bo`linuvchidan bo`luvchi ayiriladi

bolinma ++; //har bir marta ayirish amalga oshirilganda bo`linma qiymati bittaga oshib boradi bu esa bolinuvchi bo`luvchini ichida necha marta joylashganini aniqlashga yordam beradi.

}while (bolinuvchi > 0); // bu takrorlanish bo`linuvchi 0ga teng bolguncha davom etadi.

System.out.println(bolinma);// natija ekranga chiqariladi.

}

}

@tuit_online kanali sizlar uchun maxsus...
1-dars - Java nima?
Java dasturlash tili va platforma

Java yuqori darajada himoyalangan va ob’yektga yo'naltirilgan dashturlash tilidir.
Platforma: dastur bajarila oladigan ixtiyoriy qurilma yoki dasturiy muhit platformadir. Javaning o`zini maxsus bajarilish muhiti – platformasi mavjud (JRE – Java Runtime Environment).

Javadan qayerda foydalaniladi?

Sun firmasining ma'lumotlariga qaraganda 3 mlrd. atrofidagi qurilmada javadan foydalaniladi.

Mana ulardan ba'zilari:

- Shaxsiy kompyuter dasturlari (Desktop Applications) – acrobat reader, media-player, antiviruslar va h.k.;

- Veb dasturlar;

- Korxona-tashkilotlar dasturlari (Enterprise Applications) – bank yoki ishlab chiqarishga oid dasturlar;

- Mobil dasturlar;

- Smart kartalar;

- Robotlar;

- O'yinlar.

Asosiy konsepsiyalari:

Java quyidagi 5 maqsad uchun qurilgan, u shunday til bo'lishi kerakki:

1. Oddiy, ob’yektga mo'ljallangan, taqsimlangan va o'rganishga oson bo'lsin.

2. Mustahkam va xavfsiz bo'lsin

3. Qaysidir qurilma platformasidan yoki uning arxitekturasidan mustaqil bo'lsin(ya'ni qaysidir platformaga tobe' bo'lmasin).

4. Juda samarali bo'lsin.

5. Dasturlash tili uchun tarjimon(interpreter) yozish mumkin bo'lsin. Shuningdek dasturlash tili parallel ishlashni va dinamik tiplashda foydalanishni ta'minlay olsin.

Javada qanaqa dasturlar yoziladi: asosan 4 turdagi

1) Standalone applications – Linux, Mac yoki Windowsga o`rnatib, kundalik ishlatadigan dasturlarimiz: mp3 player, ofis, antivirus kabilar. Ular AWT, Swing yoki JavaFX texnologiyalari orqali tuziladi.

2) Web Applications – tarmoq orqali ishlovchi ixtiyoriy dasturlar. Eslatma: veb dasturlar ikki qismdan, server tomon hamda klient tomon (brauzer) dan iborat. Javada faqat server tomoni uchun yoziladi. Bunda servlet, jsp, jsf kabi fundamental texnologiyalardan boshlab Spring, Play kabi freymworklar qo`l keladi. Umuman olganda brauzer uchun HTML, CSS hamda Java Scriptdan boshqa tilda yozib bo`lmaydi.

3) Enterprise Applications – bu dasturlar yirik salmoqga ega bo`lib, odatda katta jabhalarda ishlatiladi. Banklar, tashkilotlar yoki astronomiya kabi sohalarda. Ular yuqori xavfsizlik, yuklamani (nagruzka) serverlarga teng taqsimlash (load balancing) yoki klasterlash (clustering – katta tizimdan huddi yagona ob’yekt sifatida foydalanish) kabi sifatlarni talab qiladi. Javada bular bor.

4) Mobile Applications – Mobil qurilmalarga mos dasturlarni ham Javada yozish mumkin. Androiddan boshlab, Java ME (JME – Java Micro Edition) gacha. JME ga misol qilib, Nokia telefonlarimiz uchun ishlangan JAR dastur va o`yinlarni misol keltirish mumkin.

Java dasturlash tili – eng yaxshi dasturlash tillaridan biri bo'lib unda korporativ darajadagi mahsulotlarni(dasturlarni) yaratish mumkin. Bu dasturlash tili OAK dasturlash tili asosida paydo bo'ldi. OAK(ma'nosi eman daraxti) dasturlash tili 90-yillarning boshida Microsystems (hozirda Oracle nomidan ish yuritadi) tomonidan platformaga(operatsion tizimga) bog'liq bo'lmagan holda ishlovchi yangi avlod aqlli qurilmalarini yaratishni maqsad qilib harakat boshlagan edi. Bunga erishish uchun Sun xodimlari C++ ni ishlatishni rejalashtirdilar, lekin ba'zi sabablarga ko'ra bu fikridan voz kechishdi. OAK muvofaqiyatsiz chiqdi va 1995-yilda Sun uning nomini Java ga almashtirdi, va uni WWW rivojlanishiga xizmat qilishi uchun ma'lum o'zgarishlar qilishdi.

Java 1990 yillarda ishlab chiqarila boshlangan bo'lsa ham, uning birinchi versiyasi(Java 1.0 ) 1996 yil ommaga taqdim etilgan. Undan so'ng keyingi versiyalar sekin-astalik bilan chiqa boshladi:

  • JDK Alpha va Beta (1995)

  • JDK 1.0 (23 Yan, 1996)

  • JDK 1.1 (19t Feb, 1997)

  • J2SE 1.2 (8 Dek, 1998)

  • J2SE 1.3 (8 May, 2000)

  • J2SE 1.4 (6 Feb, 2002)

  • J2SE 5.0 (30 Sen, 2004)

  • Java SE 6 (11 Dek, 2006)

  • Java SE 7 (28 Iyul, 2011)

  • Java SE 8 (18 Mart, 2014).

Java Ob’yektga Yo'naltirilgan Dasturlash (OOP-object oriented programming, OOP) tili va u C++ ga ancha o'xshash. Eng ko'p yo'l qo'yildigan xatolarga sabab bo'luvchi qismalari olib tashlanib, Java dasturlash tili ancha soddalashtirildi.

Java texnologiyasi o'ta sodda, xavfsizlikni yuqori darajada ta'minlab bera oladigan, kuchli, to'la ob’yektga yo'naltirilgan dasturlash tili bo'lib, muhit (platforma)ga bog'liq bo'lmagan holda ishlaydi. U bilan xatto eng kichik qurilmalarga ham dasturlar yozish mumkin. Java texnologiyasi to'laligicha Javaning sintaksisi C++ ga asoslangan. Shuning uchun C++ tilini biladiganlar Javani oson o`rganishadi. Lekin undagi ko`pchilik xususiyatlar olib tashlangan. Masalan: Pointer(ko`rsatkich)lar bilan to`g`ridan to`g`ri ishlash, ya`ni Javada alohida ko`rsatkich tushunchasi yo`q. Operatorlarni qayta yuklash ham olib tashlangan. Yana eng muhimi, ishlatilmaydigan xotira (unreferenced objects) avtomatik tozalanadi. Buni Javadagi Garbage Collector (GC – chiqindi yig`ishtirgich) amalga oshiradi. C++ da bu destruktorlar orqali qo`lda (manual – ruchnoy) qilingan. Bundan tashqari Java har bir yangi versiyada bundan qulay imkoniyatlarni qo`shib kelmoqda. Ayni paytda oxirgi versiya 8-sidir. 2014-yil 18-martda ommaga e'lon qilindi.



@tuit_online kanali sizlar uchun maxsus...

2-dars - Java qismlari.
Java bir necha qismlarni o'z ichiga oladi va ular:

  • Simple (oddiy)

  • Object-Oriented (ob’yektga yo'naltirilgan) 

  • Platform independent (mustaqil platformalar) 

  • Secured (himoyalangan) 

  • Robust (kuchli) 

  • Architecture neutral (neytral arxitektura) 

  • Portable (ixcham) 

  • Dynamic (dinamik) 

  • Interpreted (interpretatsiyalangan) 

  • High Performance (yuqori tezlik) 

  • Multithreaded (ko'p potokli) 

  • Distributed (model bo'yicha taqsimlanish).


Simple (Oddiy)

Javaning sintaksisi C++ ga asoslangan. Shuning uchun C++ tilini biladiganlar Javani oson o`rganishadi. Lekin undagi ko`pchilik xususiyatlar olib tashlangan. Masalan: Pointer(ko`rsatkich)lar bilan to`g`ridan to`g`ri ishlash, ya`ni Javada alohida ko`rsatkich tushunchasi yo`q. Operatorlarni qayta yuklash ham olib tashlangan.

Object-Oriented (Ob’yektga yo'naltirilgan)

Object – oriented dasturda turli xil ob’yektlarini ularning turli xil xususiyatga ega ma'lumotlarni qo'shish tushuniladi.

Ob’yektga yo'naltirilgan dasturlash (oops) metodologiyasi ba'zi qoidalar bilan ta'minlash orqali dasturiy ta'minot ishlab chiqish xizmatini soddalashtiradi

Oop (Ob’yektga yo'naltirilgan dasturlash) asosiy tushunchalari:

  • Object (Ob’yekt)

  • Class (Klass)

  • Inheritance (Vorislik)

  • Polymorphism (Ko'p formalik)

  • Abstraction (Mavhumlik)

  • Encapsulation (Yashiringanlik)

Platform Independent (Platforma mustaqilligi)

Dastur bajarila oladigan ixtiyoriy apparat yoki dasturiy muhit platformadir. Platformani 2 turi mavjud:

  • Software-based (Dasturga asoslangan)

  • Hardware-based (Qurilmaga asoslangan).

Java Software-based (Dasturga asoslangan) platformasini ta'mininlab beradi. Java platformasi ikki komponentdan iborat boshqa dastur bajarilishi ta'minlovchi platforma va qurilma platformasi bularga

  • Runtime Environment (Bajarilish muhiti)

  • API(Application Programming Interface – dastur uchun dasturlash interfeysi)

Java kodlari bir nechta platformalarda ishlash qobilyatiga ega bo'lib, ular:

  • Windows

  • Linux

  • Sun Solaris

  • Mac/OS va.h.k.



Java kod kompilyatsiya bo'lganda platforma uni bayt kodga o'girib beradi, bayt kod esa mustaqil kod bo'lib, boshqa platformalarda ishlash qobilyatiga ega.

Secured (Xavfsiz)

Java xavfsiz chunki:

  • Ochiq ko'rsatkichga ega emas

  • Dastur virtual mashina muhitida ishlaydi



C++ dasturlar Operatsion Tizimning bajarilish muhitidan foydalanadi



Java dasturlar o'zining bajarilish muhitidan foydalanadi


Download 1.32 Mb.

Do'stlaringiz bilan baham:
  1   2   3   4   5   6   7   8   9   ...   16




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