02 / 69

What is an Algorithm?

Algoritm nima?

Kompyuter dasturlash nuqtai nazaridan, algoritm — bu muayyan muammoni hal qilish uchun aniq belgilangan ko'rsatmalar to'plamidir. U kiruvchi ma'lumotlar to'plamini (input) qabul qiladi va kutilgan natijani (output) ishlab chiqaradi.

Masalan, ikkita sonni qo'shish algoritmi:

  1. Ikkita sonni kiritish sifatida qabul qilish
  2. + operatori yordamida sonlarni qo'shish
  3. Natijani ko'rsatish

Yaxshi algoritmning xususiyatlari

  • Kiritish va chiqarish aniq belgilangan bo'lishi kerak.
  • Algoritmning har bir bosqichi aniq va bir ma'noli bo'lishi kerak.
  • Algoritmlar muammoni hal qilishning ko'plab usullari orasida eng samaralisi bo'lishi kerak.
  • Algoritm kompyuter kodini o'z ichiga olmasligi kerak. Buning o'rniga, algoritm turli dasturlash tillarida qo'llanilishi mumkin bo'lgan tarzda yozilishi kerak.

Algoritm misollari

1-algoritm: Foydalanuvchi kiritgan ikkita sonni qo'shish

kod
1-qadam: Boshlash
2-qadam: num1, num2 va sum o'zgaruvchilarini e'lon qilish.
3-qadam: num1 va num2 qiymatlarini kiritish (o'qish).
4-qadam: num1 va num2 ni qo'shib, natijani sum ga yuklash:
         sum ← num1 + num2
5-qadam: sum qiymatini ekranga chiqarish.
6-qadam: Tugatish

2-algoritm: Uchta son orasidan eng kattasini topish

kod
1-qadam: Boshlash
2-qadam: a, b va c o'zgaruvchilarini e'lon qilish.
3-qadam: a, b va c qiymatlarini o'qish.
4-qadam: Agar a > b bo'lsa:
           Agar a > c bo'lsa:
             a eng katta son deb chiqarish.
           Aks holda:
             c eng katta son deb chiqarish.
         Aks holda:
           Agar b > c bo'lsa:
             b eng katta son deb chiqarish.
           Aks holda:
             c eng katta son deb chiqarish.
5-qadam: Tugatish

3-algoritm: Kvadrat tenglama ildizlarini topish: ax² + bx + c = 0

kod
1-qadam: Boshlash
2-qadam: a, b, c, D, r1, r2, rp, ip, j o'zgaruvchilarini e'lon qilish.
3-qadam: a, b va c qiymatlarini o'qish.
4-qadam: Diskriminantni hisoblash:
         D ← b² - 4ac
5-qadam: Agar D ≥ 0 bo'lsa:
           r1 ← (-b + √D) / (2a)
           r2 ← (-b - √D) / (2a)
           r1 va r2 ni haqiqiy ildizlar deb ekranga chiqarish.
         Aks holda:
           j ← √(-1)
           Haqiqiy va mavhum qismlarni hisoblash:
           rp ← -b / (2a)
           ip ← √(-D) / (2a)
           rp + j(ip) va rp - j(ip) ni kompleks ildizlar deb ekranga chiqarish.
6-qadam: Tugatish

4-algoritm: Sonning faktorialini topish

kod
1-qadam: Boshlash
2-qadam: n, factorial va i o'zgaruvchilarini e'lon qilish.
3-qadam: Boshlang'ich qiymat berish:
         factorial ← 1
         i ← 1
4-qadam: n qiymatini o'qish.
5-qadam: i = n bo'lguniga qadar qadamlarni takrorlash:
         5.1: factorial ← factorial * i
         5.2: i ← i + 1
6-qadam: factorial qiymatini ekranga chiqarish.
7-qadam: Tugatish

5-algoritm: Sonning tub yoki tub emasligini tekshirish

kod
1-qadam: Boshlash
2-qadam: n, i, flag o'zgaruvchilarini e'lon qilish.
3-qadam: Boshlang'ich qiymat berish:
         flag ← 1
         i ← 2
4-qadam: Foydalanuvchidan n qiymatini o'qish.
5-qadam: i = (n / 2) bo'lguniga qadar qadamlarni takrorlash:
         5.1 Agar n ÷ i qoldig'i 0 ga teng bo'lsa:
               flag ← 0
               6-qadamga o'tish
         5.2 i ← i + 1
6-qadam: Agar flag = 0 bo'lsa:
           n tub son emas deb chiqarish
         Aks holda:
           n tub son deb chiqarish
7-qadam: Tugatish

6-algoritm: 1000 dan kichik bo'lgan Fibonachchi ketma-ketligini topish

kod
1-qadam: Boshlash
2-qadam: first_term, second_term va temp o'zgaruvchilarini e'lon qilish.
3-qadam: Boshlang'ich qiymat berish:
         first_term ← 0
         second_term ← 1
4-qadam: first_term va second_term qiymatlarini ekranga chiqarish.
5-qadam: second_term ≤ 1000 bo'lguniga qadar qadamlarni takrorlash:
         5.1: temp ← second_term
         5.2: second_term ← second_term + first_term
         5.3: first_term ← temp
         5.4: second_term qiymatini ekranga chiqarish
6-qadam: Tugatish