Algoritmning asosiy xossalari.Algoritmning 5-ta asosiy xossasi bor: Diskretlilik (Cheklilik). Bu xossaning mazmuni algoritmlarni doimo chekli qadamlardan iborat qilib bo‘laklash imkoniyati mavjudligida. Ya’ni uni chekli sondagi oddiy ko‘rsatmalar ketma-ketligi shaklida ifodalash mumkin. Agar kuzatilayotgan jarayonni chekli qadamlardan iborat qilib qo‘llay olmasak, uni algoritm deb bo‘lmaydi. Tushunarlilik. Biz kundalik hayotimizda berilgan algoritmlar bilan ishlayotgan elektron soatlar, mashinalar, dastgohlar, kompyuterlar, turli avtomatik va mexanik qurilmalarni kuzatamiz. Ijrochiga tavsiya etilayotgan ko‘rsatmalar, uning uchun tushinarli mazmunda bo‘lishi shart, aks holda ijrochi oddiygina amalni ham bajara olmaydi. Undan tashqari, ijrochi har qanday amalni bajara olmasligi ham mumkin. Har bir ijrochining bajarishi mumkin bo‘lgan ko‘rsatmalar yoki buyruqlar majmuasi mavjud, u ijrochining ko‘rsatmalar tizimi (sistemasi) deyiladi. Demak, ijrochi uchun berilayotgan har bir ko‘rsatma ijrochining ko‘rsatmalar tizimiga mansub bo‘lishi lozim. Ko‘rsatmalarni ijrochining ko‘rsatmalar tizimiga tegishli bo‘ladigan qilib ifodalay bilishimiz muhim ahamiyatga ega. Masalan, quyi sinfning a’lochi o‘quvchisi "son kvadratga oshirilsin" degan ko‘rsatmani tushinmasligi natijasida bajara olmaydi, lekin "son o‘zini o‘ziga ko‘paytirilsin" shaklidagi ko‘rsatmani bemalol bajaradi, chunki u ko‘rsatma mazmunidan ko‘paytirish amalini bajarish kerakligini anglaydi. Aniqlik. Ijrochiga berilayotgan ko‘rsatmalar aniq mazmunda bo‘lishi zarur. Chunki ko‘rsatmadagi noaniqliklar mo‘ljaldagi maqsadga erishishga olib kelmaydi. Odam uchun tushinarli bo‘lgan "3-4 marta silkitilsin", "5-10 daqiqa qizdirilsin", "1-2 qoshiq solinsin", "tenglamalardan biri yechilsin" kabi noaniq ko‘rsatmalar robot yoki kompyuterni qiyin ahvolga solib qo‘yadi. Bundan tashqari, ko‘rsatmalarning qaysi ketma-ketlikda bajarilishi ham muhim ahamiyatga ega. Demak, ko‘rsatmalar aniq berilishi va faqat algoritmda ko‘rsatilgan tartibda bajarilishi shart ekan. Ommaviylik. Har bir algoritm mazmuniga ko‘ra bir turdagi masalalarning barchasi uchun ham o‘rinli bo‘lishi kerak. YA’ni masaladagi boshlang‘ich ma’lumotlar qanday bo‘lishidan qat’iy nazar algorim shu xildagi har qanday masalani yechishga yaroqli bo‘lishi kerak. Masalan, ikki oddiy kasrning umumiy mahrajini topish algoritmi, kasrlarni turlicha o‘zgartirib bersangiz ham ularning umumiy mahrajlarini aniqlab beraveradi. Yoki uchburchakning yuzini topish algoritmi, uchburchakning qanday bo‘lishidan qat’iy nazar, uning yuzini hisoblab beraveradi. Natijaviylik. Har bir algoritm chekli sondagi qadamlardan so‘ng albatta natija berishi shart. Bajariladigan amallar ko‘p bo‘lsa ham baribir natijaga olib kelishi kerak. Chekli qadamdan so‘ng qo‘yilgan masala yechimga ega emasligini aniqlash ham natija hisoblanadi. Agar ko‘rilayotgan jarayon cheksiz davom etib natija bermasa, uni algoritm deb atay olmaymiz.
Paskalda kiritish va chiqarish operatori
Paskal tilida yozilgan dasturlarni kompyuterda bajarish uchun unda qatnashayot- gan va qiymati hozircha noma’lum o’zgaruvchilarga aniq qiymat-larni kiritishga to’g’ri keladi. Buning uchun kiritish operatori qo’lla-niladi. Kiritish operatorlarin- ing umumiy ko’rinishi qo’yidagicha: read (b1,b2,. . .,bn ); readln (b1,b2,. . .,bn); readln; bu yerda b1, b2, ..., bn lar qiymati kiritilishi talab etilayotgan o’zgaruvchilarning nomi. Read (b1,b2,...,bn); operatori ma’lumotlarni kiritishni ta’minlaydi, natijada b1, b2, ..., bn o’zgaruvchilar mos qiymatlarni oladilar. Kiritilayotgan o’zgaruvchilar turi berilayotgan qiymatlar turi bilan mos kelishi kerak. Readln (b1,b2,...,bn); operatori ma’lumotlarni b1, b1, ..., bn o’zgaruvchilarga ta’minlash uchun ishlatiladi va boshqaruvni (kursorni) yangi satr boshiga o’tkazishni amalga oshiradi. Readln; operatori bitta bo’sh satrni o’tkazib yuborishni va yangi satr bo- shiga o’tishni ta’minlaydi. Masalan:read (i,j); readln (k,l); read (m,n);
Qiymatlar kiritish jarayonida haqiqiy o’zgaruvchiga harfiy qiymat yoki harfli
o’zgaruvchiga haqiqiy qiymat mos keltirilsa, u holda kompyuter xatolik ro’y ber-
ganligi tug’risida (Type mitmatch error) ma’lumot beradi.
Dasturning bajarilish natijasida hosil bo’lgan ma’lumotlarni kompyuter
ekraniga yoki chop etish qurilmasiga chiqarish uchun chiqarish operatorlari qo’llaniladi. Bu operatorlar orqali dastur bajarilishidan hosil bo’lgan
o’zgaruvchilarning qiymatlari, natijalar va ixtiyoriy matnlar displey ekraniga yoki
chop etish qurilmasi orqali qog’ozga chiqariladi.
Chiqarish operatorlarining umumiy ko’rinishi quyidagicha:
write (a1,a2,...,an); writeln (a2,a2,...,an); writeln; bu yerda a1, a2, ..., an lar qiymati chiqarilishi kerak bo’lgan o’zgaruvchilar nomi.
Write (a1,a2,...,an); operatori a1,a2,...,an o’zgaruvchilarga mos qiymatlarni
chiqarish vazifasini bajaradi. Chiqarilayotgan qiymatlar bitta satrga joylashtiri-
ladi.
Writeln (a1,a2,...,an); operatori a1,a2,...,an o’zgaruvchilarga mos qiymat-
larni chiqaradi. Oxirgi qiymat chiqarilib bo’lgandan keyin yangi satriga o’tishni
amalga oshiradi.
Writeln; operatori bitta bo’sh satrni o’tkazib yuborishni va keyingi satr
boshiga o’tishni ta’minlaydi.
Masalan: write (i,j); writeln(k,r) ; writeln (r1,t1);
Takrorlanuvchi jarayonlar uchun algoritmlar tuzish. Amalda shunday masalalar uchraydiki, ularning yechimini itеrasiya (kеtma-kеt yaqinlashish) yo`li bilan hosil qilinadi. Bunga sonlardan kvadrat yoki kub ildiz chiqarish, yuqori tartibli algеbraik yoki transsеndеnt tеnglamalarning yechimlarini topish kabilar misol bo`la oladi. Bu turdagi masalalarni yechish algoritmini tuzishda ayrim qoidalarga rioya qilish kеrak. Masalan, bir sondan kvadrat ildiz chiqarish algoritmini ikki xil usulda tuzib ko`raylik.
funksiyaning biror nuqtadagi qiymatini
(5.1)
formula yordamida ixtiyoriy (-kichik son) aniqlikda hisoblash mumkin. Hisoblash jarayonida shart bajarilganda ni ildizning qiymati dеb qabul qilish mumkin. Bu holda ildiz aniqlikda hisoblangan dеyiladi. 5.4-rasmdagi blok-sxеma qanchalik sodda va tushunarli bo`lmasin undan foydalanib to`g`ridan-to`g`ri dastur tuzish mumkin emas. CHunki blok-sxеmada va kabi indеksli o`zgaruvchilar ishtirok etyapti, bu esa dasturda jadval kattalikning (massivning) qaysidir elеmеntini aniqlaydi. Vaholanki jadval kattalik o`zining elеmеntlar soni bilan aniqlangan bo`lishi kеrak. Ammo bu algoritm takrorlanishlar soni oldindan noma`lum bo`lgani uchun uni tasvirlab bo`lmaydi.
Agar biz 5.1-rasmdagi algoritmga e`tibor bеradigan bo`lsak, nning har bir qiymati uchun u massivning bir paytda ikkita elеmеnti, ya`ni va ishtirok etadi, qolgan elеmеntlari hisoblash jarayonida ishtirok etmaydi. Masalan, n0 da va , n1 da va va hokazo. Xuddi shu narsaning o`zi bir jadval kattalikdan kеchib, uning o`rniga ikkita o`zgaruvchidan foydalanish mumkinligini ko`rsatadi. Buni amalga oshirish uchun ni bilan, ni bilan almashtirish yetarli. shartni bilan almashtiramiz. Endi jarayon to`g`ri davom etishi uchun, agar shart bajarilmasa ning qiymatini ga bеrish kifoya. esa formula bilan qayta hisoblanadi. 5.1 –rasmdagi blok-sxеmada n ning qiymatlari massiv elеmеntlarining nomеrini aniqlash uchun xizmat qilardi. Yangi 5.2-rasmdagi blok-sxеmada massiv bo`lmagani uchun n ning qiymatlarini hosil qilishga ehtiyoj yo`q. 5.2-rasmda yuqorida kеltirilgan algoritmning blok-sxеmasi bеrilgan. Bu endi dasturga hеch qanday qo`shimcha chеgara qo`ymaydi.