2-Mustaqil ish
Tarmoqlanuvchijarayonlarni tashkil etish (Algoritm va dastur)
Ichma-ich joylashgan siklik jarayonlarini tashkil etish.
Bir o’lchovli massivlarni funksiya parametrlari sifatida qo’lanillishi
Matritsalarni funksiya parametrlari sifatida qo’llanilishi
Vektorlarni funksiya parametrlari sifatida qo’lanillishi
Elektron hisoblash mashinalarining vujudga kelishiga qadar algoritmga har xil ta’rif berib kelindi. Lekin ularning barchasi ma’no jihatdan bir-biriga juda yaqin bo’lib, bu ta’rif hozirgi kunda quyidagicha talqin qilinadi. Ta’rif. Algoritm deb, qo’yilgan masalani echish uchun ma’lum qoidaga binoan bajariladigan amallarning chekli qadamlar ketma-ketligiga aytiladi.
Har qanday algoritm ma’lum ko’rsatmalarga binoan bajariladi va bu ko’rsatmalarga buyruq deyiladi.
Algoritm quyidagi muhim xossalarga ega:
Tarmoqlanuvchi algoritm - deb ma’lum shartlarga muvofiq bajariladigan ko’rsatmalardan tuzilgan algoritmga aytiladi.
Takrorlanuvchi algoritm biron bir shart tekshirilishi yoki biron parametrning har xil qiymatlari asosida algoritmda takrorlanish yuz beradigan jarayonlarga aytiladi.
Algoritmlarni turli usullarda tasvirlash mumkin. Masalan: so’z bilan ifodalash; formulalarda berish; blok-sxemalarda tasvirlash; dastur shaklida ifodalash va boshqalar.
Algoritmlarni blok-sxema ko’rinishda tasvirlash qulay va tushunarli bo’lgani uchun ko’p ishlatiladi. Bunda algoritmdagi har bir ko’rsatma o’z shakliga ega. Masalan: parallelogramm ko’rinishdagi belgi ma’lumotlarni kiritish va chiqarish; to’g’ri to’rtburchak belgisi hisoblash jarayonini; romb belgisi shartlarning tekshirilishini bildiradi.
Hayotimizda algoritmlarni turli sohalarda ba’zan bilgan holda ba’zan esa bilmagan holda ishlatamiz. Algoritmlar faqat matematik xarakterga ega bo’lmasdan ularni oddiy hayotiy turmushimizda ham ko’p qo’llaymiz. Masalan, ovqat tayyorlash, choy damlash, biror berilgan ishni bajarish va boshqa. Bu ishlarni bajarishda ma’lum bo’lgan aniq ko’rsatmalarni ketma ket bajaramiz. Agar bu ko’rsatmalar aniq bir ketma ketlik tartibida bajarilmasa kerakli natijani olaolmaymiz. Misol tariqasida matematik xarakterga ega bo’lmagan butelbrod tayyorlash algoritmini ko’rib chiqaylik. Bunda boshlang’ich berilganlar: non, kolbasa va pishloq. Natija: butelbrod. Butelbrod tayyorlash algoritmi:
non bo’lagini kesib olish;
kolbasa va pishloq bo’lagini kesib olish;
kolbasa va pishloq bo’lagini non bo’lagi orasiga qo’yish.
Agar bu jarayonning ketma ketlik o’rinlari almashsa yoki biror bir bosqich amalga oshirilmasa natija bo’lmaydi.
Algoritmik tillar Masalani echish algoritmi ishlab chiqilgandan so’ng dastur tuziladi.
Dastur - bu berilgan algoritmga asoslangan biror bir algoritmik tilda yozilgan ko’rsatmalar, ya’ni buyruqlar yoki operatorlar to’plamidir.
Dasturlash - esa bu dastur tuzish jarayoni bo’lib, u quyidagi bosqichlardan iboratdir:
dasturga bo’lgan talablar;
qo’yilgan masala algoritmini tanlash yoki ishlab chiqish;
dastur kodlarini (matnlari, buyruqlarni) yozish;
dasturni to’g’rilash va test o’tkazish.
Hozirgi kunda juda ko’plab algoritmik tillar mavjud. Ularga dasturlash tillari deb ataymiz. Algoritmik til - algoritmlarni bir xil va aniq yozish uchun ishlatiladigan belgilashlar va qoidalar tizimidir. Algoritmik til oddiy tilga yaqin bo’lib u matematik belgilarni o’z ichiga oladi. Tuzilgan algoritmlarni to’g’ridan-to’g’ri mashinaga berib bo’lmaydi, shu sababli yozilgan algoritmni biror bir algoritmik tilga o’tkazish zarur. Har qanday algoritmik til o’z qo’llanilish sohasiga ega. Masalan, muxandislik hisob ishlarini bajarishda Paskal, Beysik va Fortran. Iqtisod masalalarini echishda Paskal va Kobol. Mantiqiy dasturlash uchun Prolog va boshqalar. O’quv jarayonlari uchun Beysik, Paskal va boshqalar.
Paskal, Fortran va Kobol tillari universal tillardan hisoblanadi. Assembler tili mashina tiliga ancha yaqin til bo’lib o’rta darajadagi tildir. Algoritmik til inson tillariga qancha yaqin bo’lsa, u tilga yuqori darajali til deyiladi. Mashina tili esa eng pastkidarajalitildir.
Tarmoqlanuvchi jarayonlarni dasturlash - Tarmoqlanuvchi hisoblash jarayonlarini algoritmlash va dasturlash. Ko’pgina masalalami yechishda ba’zi bir jarayonlar ma’him shart yoki shartlaming qo’yilishiga nisbatan bajariladi. Bunday jarayonlar tarmoqlanuvchi jarayonlar deb yuritiladi va bu jarayonlaming algoritmik tavsiflari bilan awalgi boblarda tanishgan edik.
Tarmoqlanuvchi hisoblash jarayonlari oddiy va murakkab boTishi mumkin. Bu esa jarayondagi tarmoqlar soniga bogTiq. MaTum bir tarmoqlanuvchi jarayon tarkibida yana tarmoqlanishlar boTishi mumkin. Bunday tarmoqlanishlari bor boTgan hisoblash jarayonlari murakkab tarmoqlanuvchi hisoblash jarayonlari deb ataladi.
C++ tilida tarmoqlanuvchi jarayonlarni dasturlash uchun shartsiz, shartli oTish va tanlash operatorlaridan foydalaniladi: IF, CASE.
Shartsiz o’tish operatori - Dasturda ba'zi bir hollar da boshqaruvni to’g’ridan-to’g’ri biron-bir operatorga uzatishga, ya'ni dastuming bajarilish ketma-ketligini buzishga to’g’ri keladi. Bu jarayon shartsiz o’tish operatori yordamida bajariladi. Shartsiz o’tish operatorining umumiy ko’rinishi quyidagicha:
GOTO - Bu yerda identifikator bo Tib, goto yo’riqnomasidan keyin bajariladigan yo’riqning oldida joylashadi va nishon dastuming nishonlarini tafsiflash bo’limida label kalit so’zi yordamida tafsiflangan boTishi kerak, bu bo’lim dasturda o’zgaruvchilarni tafsiflash bo’limidan oldin turadi. Dastur matnida nishon, bajarilishi kerak boTgan operatordan oldin va birdaniga undan keyin ikki nuqta qo’yiladi.
Dasturlashtirishga bag’ishlangan adabiyotlarda ayrim hollarda goto yo’riqnomasidan foydalanmaslik tug’risidagi fikrlarni uchratish muumkin, go’yoki goto dastuming chalkashishiga olib kelishi mumkin. Bu fikrlarga ot’liq qo’shilish to’g’ri emas. Nishonlarning ko’p bo’lishi, xaqiqatdan ham chalkashtirishi mumkin, ammo ko’pincha nishondan foydalanish qulay, hamda dasturning ixcham bo’lishini taminlaydi.
Zаmоnаviy аlgоritmlаr nаzаriyasi rivоjidаgi bоshlаng’ich nuqtа dеb, nеmis mаtеmаtigi Kurt Gyodеlning ilmiy ishini ko’rsаtib o’tish mumkin (1931 y. Simvоlik mаntiqlаrning to’lаmаsligi to’g’risidаgi tеоrеmа). Ushbu ishdа bа’zi mаtеmаtik muаmmоlаrni qаysidir sinfgа tааlluqli аlgоritmlаr yordаmidа hаl etib bo’lmаsligi ko’rsаtib bеrilgаn. …
1936 yildа Аlgоritmlаr nаzаriyasi bo’yichа birinchi fundаmеntаl ilmiy ishlаr bir-biridаn аlоhidа tаrzdа Аlаn Tyuring, Аlоiz CHyorch vа Emil Pоstlаr e’lоn qildilаr. Ulаr tоmоnidаn tаklif etilgаn Tyuring mаshinаsi, Pоst mаshinаsi vа CHyorchning lyamdа-hisоblаnuvchаnlik usuli аlgоritm fоrmаlizmining ekvivаlеnt shаkllаridir. Ulаr tоmоnidаn tаklif etilgаn tеzislаr аlgоritm intuitiv tushаnchаsi vа fоrmаl tizimlаrning ekvivаlеntligini tа’kidlаb bеrdi. Аlgоritmik еchimsiz muаmmоlаrning fоrmulirоvkаsi vа isbоti ushbu ishlаrning muhim nаtijаsi bo’ldi.
1950- yillаrdа Аlgоritmlаr nаzаriyasi rivоjlаnishigа rus mаtеmаtiklаri Kоlmоgоrоv vа Mаrkоvlаri z hissаlаrini qo’shdilаr . 60-70-yillаrgа kеlib Аlgоritmlаr nаzаriyasi fаnidа quyidаgi mustаqil yo’nаlishlаr аjrаlib chiqdi:
- Klаssik аlgоritmlаr nаzаriyasi(fоrmаl tillаr tеrminlаridа mаsаlаlаrni ifоdаlаsh, еchimli mаsаlа tushunchаsi, 1965 yildа Edmоnds tоmоnidаn tа’riflаngаn PqNP muаmmоsi, NP to’liq mаsаlаlаr sinfining оchilishi vа tеkshirilishi);
- Аlgоritmlаrning аsimptоtik аnаlizi nаzаriyasi(аsimptоtik bаhоlаsh usullаri, аlgоritmlаrning murаkkаbligi, аlgоritmlаrni bаhоlаsh kritеriylаri vа hokazo). Ushbu yo’nаlish rivоjigа Knut, Ахо, Хоpkrоft, Ulmаn, Kаrp kаbi оlimlаr o’z hissаlаrini qo’shdilаr;
- hisоblаsh аlgоritmlаrining prаktik аnаlizi nаzаriyasi(аlgоritmlаrning mеhnаttаlаbligi оshkоr funksiyasini tоpish, funksiyalаrning chеgаrаviy аnаlizi, rаsiоnаl аlgоritmlаrni tаnlаsh mеtоdikаsi).Ushbu yo’nаlish rivоjlаnishigа sаbаb bo’lgаn ilmiy ish D.Knutning “Isskustvо prоgrаmmirоvаniya dlya EVM” kitоbidаn ibоrаt.
Algoritmni tasvirlashni turlicha usullari mavjud. Odatda biz masalani yechish algoritmini so‘zlar va matematik formulalar orqali ifodaladik. Lekin algoritm boshqa ko‘rinishlarda ham berilishi mumkin. Biz endi algoritmlarning eng ko‘p uchraydigan turlari bilan tanishamiz. Algoritmning so‘zlar orqali ifodalanishi. Bu usulda ijrochi uchun beriladigan har bir ko‘rsatma jumlalar, so‘zlar orqali buyruq shaklida beriladi. Algoritmning formulalar bilan berilish usulidan matematika, fizika, kimyo kabi aniq fanlardagi formulalarni o‘rganishda foydalaniladi. Bu usulni ba’zan analitik ifodalash deyiladi. 3. Algoritmlarning grafik shaklida tasvirlanishida algoritmlar maxsus geometrik figuralar yordamida tasvirlanadi va bu grafik ko‘rinishi blok-sxema deyiladi. 4. Algoritmning jadval ko‘rinishda berilishi. Algoritmning bu tarzda tasvirlanishdan ham ko‘p foydalanamiz. Masalan, maktabda qo‘llanib kelinayotgan to‘rt xonali matematik jadvallar yoki turli xil lotereyalar jadvallari. Funksiyalarning grafiklarini chizishda ham algoritmlarning qiymatlari jadvali ko‘rinishlaridan foydalanamiz. Bu kabi jadvallardan foydalanish algoritmlari sodda bo‘lgan tufayli ularni o‘zlashtirib olish oson. Men ushbu kurs ishimda algortimni asosan blok-sxemalar orqali ifodalaganman.
Algoritmlarni shartli ravishda quyidagi turlarga ajratish mumkin:
- chiziqli algoritmlar;
- tarmoqlanuvchi algoritmlar;
- takrorlanuvchi yoki siklik algoritmlar;
- ichma-ich joylashgan siklik algoritmlar;
- rekurrent algoritmlar;
- takrorlanishlar soni oldindan no’malum algoritmlar;
- ketma-ket yaqinlashuvchi algoritmlar.
Faqat ketma-ket bajariladigan amallardan tashkil topgan algoritmlarga - chiziqli algoritmlar deyiladi. Bunday algoritmni ifodalash uchun ketma-ketlik strukturasi ishlatiladi.
Strukturada bajariladigan amal mos keluvchi shakl bilan ko‘rsatiladi. Chiziqli algoritmlar blok-sxemasining umumiy strukturasini quyidagi ko‘rinishda ifodalash mumkin:
Bosh.
Kiritiladigan qiymat
1-amal
2-amal
n-amal
Chop qilish
Tamom
Agar hisoblash jarayoni biror bir berilgan shartning bajarilishiga qarab turli tarmoqlar bo‘yicha davom ettirilsa va hisoblash jarayonida har bir tarmoq faqat bir marta bajarilsa, bunday hisoblash jarayonlariga tarmoqlanuvchi algoritmlar deyiladi. Tarmoqlanuvchi algoritmlar uchun ayri strukturasi ishlatiladi. Tarmoqlanuvchi struktura berilgan shartning bajarilishiga qarab ko‘rsatilgan tarmoqdan faqat bittasining bajarilishini ta’minlaydi.
P - shart
+ -
A-amal
B-amal
Berilgan shart romb orqali ifodalanadi, P - berilgan shart. Agar shart bajarilsa, "ha" tarmoq bo‘yicha A - amal, shart bajarilmasa "yo‘q" tarmoq bo‘yicha B - amal bajariladi.
Ko‘pgina masalalarni yechishda, shart asosida tarmoqlanuvchi algoritmlarning ikkita tarmog‘idan bittasining, ya’ni yoki «ha» yoki «yo‘q» ning bajarilishi yetarli bo‘ladi. Bu holat tarmoqlanuvchi algoritmning xususiy holi sifatida aylanish strukturasi deb atash mumkin. Aylanish strukturasi quyidagi ko‘rinishga ega:
P – shart
Amal
Takrorlanuvchi algoritmlar. Agar biror masalani yechish uchun tuzilgan zarur bo‘lgan amallar ketma-ketligining ma’lum bir qismi biror parametrga bog‘liq ko‘p marta qayta bajarilsa, bunday algoritm takrorlanuvchi algoritm yoki siklik algoritmlar deyiladi. Takrorlanuvchi algoritmlarga tipik misol sifatida odatda qatorlarning yig‘indisi yoki ko‘patmasini hisoblash jarayonlarini qarash mumkin.
Bosh.
N
S=0;
i = 1,. N
S=S+i;
S
Tamom
Ichma-ich joylashgan siklik algoritmlar . Ba’zan, takrorlanuvchi algoritmlar bir nechta parametrlarga bog‘liq bo‘ladi. Odatda bunday algoritmlarni ichma-ich joylashgan algortmlar deb ataladi.
Ichma-ich joylashgan takrorlanuvchi jarayonlar asosan ikki va undan yuqori bo’lgan o’lchovli massivlarda kuzatiladi. Misol tariqasi soddaroqi ikki o’lchovli massivni ko’rib chiqamiz.
Bosh.
N, M
i = 1,. N
k = 1,. M
A[i, k]
i = 1,. N
k = 1,. M
A[i, k]
Tamom
Ushbu blok sxemada ikki o’lchovli massivning satri N va ustuni M ga teng bo’lgan massiv kiritlgan va u chop qilingan. Quyida shu blok sxemaning Visual Studio muhiti C# dasturlash tilidagi kodi keltirilgan:
Ma'lumot parametr sifatida funksiyaga o'tkazilishi mumkin bo'lgan qiymatlar. Parametrlar qavs ichida () beriladi. Istalgancha parametrlar ko'rsatishinigiz mumkin virgul bilan ajratilib beriladi. quyidagiga nazar soling.
void functionName(parameter1, parameter2, parameter3) {
// funsiya tanasi
}
Quyidagi misolda siz string tipida parametr keladi va tuliq ism qilib qaytariladi.
#include
#include
using namespace std;
void myFunction(string fname) {
cout << fname << " Sherkulov\n";
}
int main() {
myFunction("Mister");
myFunction("Master");
myFunction("Farrukh");
return 0;
}
Mister Sherkulov
Master Sherkulov
Farrukh Sherkulov
Parametrning standart qiymati.
Parametr ga standart qiymat yuklasa bo'ladi. buning uchun funksiya e'lon qilgan vaqtida = belgisi bilan e'lon qilinib ketadi. quyidagi misolga qarang.
#include
#include
using namespace std;
void myFunction(string fname, string lname="Sherkulov") {
cout << fname << lname << "\n";
}
int main() {
myFunction("Master");
myFunction("Farrukh", "Hamzayevich");
return 0;
}
Master Sherkulov
Farrukh Hamzayevich
Izoh: lname parametrga qiymat yuklamasa ham bo'ladi. Yuklanmasa uning standart nomi sifatida (ya'ni qiymati sifatida) lname="Sherkulov" nomi qabul qilinadi.
Bir nechta parametrlar.
Funktsiya ichida siz xohlagancha ko'p parametrlarni qo'shishingiz mumkin:
#include
#include
using namespace std;
void myFunction(string fname, int age) {
cout << fname << " Sherkulov. " << age << " yoshda. \n";
}
int main() {
myFunction("Mister", 13);
myFunction("Master", 14);
myFunction("Farrukh", 30);
return 0;
}
Mister Sherkulov 13 yoshda
Master Sherkulov 14 yoshda
Farrukh Sherkulov 30 yoshda
E'tibor bering, bir nechta parametrlar bilan ishlaganda, funktsiyani chaqirish parametrlari bo'lgani kabi bir xil argumentlarga ega bo'lishi kerak va tiplari bir xil tartibda o'tkazilishi kerak.
Qiymat qaytarish.
voidOldingi misollarda ishlatiladigan kalit so'z, vazifasi qiymat qaytarilmaydigan funksiyalar oldidan qo'llaniladi. Agar qiymat qaytaradi vazifasi bo'lsangiz, siz void bir ma'lumot turini (masalan, foydalanish mumkin int, stringva boshqalar) , va ishlatish return funktsiyasi ichki kalit so'zni.
#include
using namespace std;
int myFunction(int x) {
return 5 + x;
}
int main() {
cout << myFunction(3);
return 0;
}
8
Endi ikkita parametrli funktsiyaning yig'indisini hisoblash funksiyasi.
#include
using namespace std;
int myFunction(int x, int y) {
return x + y;
}
int main() {
cout << myFunction(5, 3);
return 0;
}
Siz shuningdek natijani o'zgaruvchiga saqlashingiz mumkin.
#include
using namespace std;
int myFunction(int x, int y) {
return x + y;
}
int main() {
int z = myFunction(5, 3);
cout << z;
return 0;
}
8
Xulosa
Hozirgi kunda juda ko’plab algoritmik tillar mavjud. Ularga dasturlash tillari deb ataymiz. Algoritmik til - algoritmlarni bir xil va aniq yozish uchun ishlatiladigan belgilashlar va qoidalar tizimidir. Algoritmik til oddiy tilga yaqin bo’lib u matematik belgilarni o’z ichiga oladi. Tuzilgan algoritmlarni to’g’ridan-to’g’ri mashinaga berib bo’lmaydi, shu sababli yozilgan algoritmni biror bir algoritmik tilga o’tkazish zarur. Har qanday algoritmik til o’z qo’llanilish sohasiga ega. Masalan, muxandislik hisob ishlarini bajarishda Paskal, Beysik va Fortran. Iqtisod masalalarini echishda Paskal va Kobol. Mantiqiy dasturlash uchun Prolog va boshqalar. O’quv jarayonlari uchun Beysik, Paskal va boshqalar.
Paskal, Fortran va Kobol tillari universal tillardan hisoblanadi. Assembler tili mashina tiliga ancha yaqin til bo’lib o’rta darajadagi tildir. Algoritmik til inson tillariga qancha yaqin bo’lsa, u tilga yuqori darajali til deyiladi. Mashina tili esa eng pastki darajali tildir.
Tarmoqlanuvchi jarayonlarni dasturlash - Tarmoqlanuvchi hisoblash jarayonlarini algoritmlash va dasturlash. Ko’pgina masalalami yechishda ba’zi bir jarayonlar ma’him shart yoki shartlaming qo’yilishiga nisbatan bajariladi.
Internet resurslar.
1. http://www.stroustrup.com/4th.html
2. http://www.cplusplus.com/
3. http://acm.tuit.uz/- дастурий ечим тўғрилигини автоматик тестловчи тизим.
4. http://acm.tuit.uz/forum/
5. http://acm.timus.ru/ – дастурларни тестловчи тизим.
6. http://codeforces.com/ - дастурий ечим тўғрилигини автоматик тестловчи тизим
Dostları ilə paylaş: |