# #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;

![](/files/-MY3bsW52y3NzObo6l-a)

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://algoritm.sariq.dev/01-algoritm.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
