# #01 ALGORITM NIMA?

{% embed url="<https://youtu.be/KgOmr6eW5R4>" %}

## ALGORITM NIMA?

Algoritm - bu muammoni hal qilish uchun aniq ketma-ketlikda berilgan ko'rsatmalar to'plami.

Algoritmni huddi ovqat pishirish uchun berilgan reseptga o'xshatish mumkin.&#x20;

![](https://4125204830-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MXvrcaHK096p9ws6VTG%2F-MY3GafLvZo6nNWkJOcq%2F-MY3bsW52y3NzObo6l-a%2Fimage.png?alt=media\&token=0a070aac-db3f-4946-b80c-38606caba131)

Bir muammoga bir nechta yechim - algoritm bo'lishi mumkin.

Algoritmlar bir-biridan tezligi va qancha xotira egallashi bilan farq qiladi.&#x20;

**Yaxshi algoritmning belgilari:**

* Kirish (muammo) va chiqish (yechim) aniq berilgan bo'lishi kerak.&#x20;
* Algoritmning har bir bosqichi aniq va ravshan bo'lishi kerak.&#x20;
* Algoritm muammoni hal qilishning turli usullari orasida eng samaralisi bo'lishi kerak.&#x20;
* Algoritmda kompyuter kodi bo'lmasligi kerak. Buning o'rniga algoritm turli xil dasturlash tillarida ishlatilishi mumkin bo'lgan tarzda yozilishi kerak.

### ALGORITMGA MISOLLAR

#### Foydalanuvchi kiritgan ikki sonni qo'shish algoritmi:

1. Start
2. `son1`, `son2` va `summa` o'zgaruvchilarini yaratamiz
3. `son1` va `son2` qiymatlarini qabul qilamiz
4. `son1` va `son2` qo'shamiz, natijani `summa` ga yuklaymiz: `summa=son1+son2`
5. `summa` ni foydalanuvchiga qaytaramiz
6. Stop

```python
# Ikki son yi'gindisi
son1 = int(input("1-sonni kiriting: "))
son2 = int(input("2-sonni kiriting: "))
summa = son1 + son2
print(summa)
```

#### Uchta sondan eng kattasini topish algoritmi:

1. Start
2. `a`, `b` va `c` o'zgaruvchilarini yaratamiz
3. `a`, `b` va `c` ga qiymatlar beramiz
4. Agar `a>b` bo'lsa
   1. agar `a>c` bo'lsa
      1. `a` eng katta son deb qaytar
   2. aks holda
      1. `c` eng katta son deb qaytar
5. aks holda (ya'ni `a<b`) bo'lsa
   1. agar `b>c` bo'lsa
      1. `b` eng katta son deb qaytar
   2. aks holda
      1. `c` eng katta son deb qaytar

```python
# Uchta sondan eng kattasini topish algoritmi
def getLargest(a,b,c):
    if a>b:
        if a>c:
            return a
        else: 
            return c
    else:
        if b>c:
            return b
        else:
            return c
```

#### N faktorialni hisoblash algoritmi

{% hint style="info" %}
`N` faktorial deb `1` dan `N` gacha bo'lgan sonlarning ko'paytmasiga aytiladi. Maslana `N=5` bo'lsa, 5 faktorial `1*2*3*4*5=120` ga teng.
{% endhint %}

1. Start
2. `N`, `faktorial` va `i` o'zgaruvchilarini yaratamiz
3. `faktorial` va `i` ga `1` qiymatini yuklaymiz: `factorial=1`, `i=1`
4. Foydalanuvchidan `N` qiymatini qabul qilamiz
5. `i=N` bo'lgunga qadar quyidagi qadamlarni takrorlaymiz:
   1. `faktorial = faktorial * i`
   2. `i = i + 1`
6. faktorial qiymatini qaytar
7. Stop

```python
# N-faktorial hisoblash funksiyasi
def faktorial(N):
    i=1
    fakt=1
    while i!=N+1:
        fakt = fakt*i
        i += 1
    return fakt
```

Algoritm haqida tushunchaga ega bo'ldingiz deb umid qilamiz. Dasturlash jarayonida aksar algoritmlar ma'lumotlarni qidirish (searching) va tartiblashga (sorting) borib taqaladi. Keling endi birinchi qidirish algoritmi bilan tanishamiz.

## AMALIYOT

Yuqoridagi 3 ta algoritm uchun dastur yozing
