<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dilbar</title>
    <description>The latest articles on DEV Community by Dilbar (@udilbar).</description>
    <link>https://dev.to/udilbar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F542931%2Fe44d18c2-1cc8-4d71-85ec-037d991947f6.jpg</url>
      <title>DEV Community: Dilbar</title>
      <link>https://dev.to/udilbar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/udilbar"/>
    <language>en</language>
    <item>
      <title>CS50 - Week 6</title>
      <dc:creator>Dilbar</dc:creator>
      <pubDate>Fri, 03 Jan 2025 12:12:47 +0000</pubDate>
      <link>https://dev.to/udilbar/cs50-week-6-14d9</link>
      <guid>https://dev.to/udilbar/cs50-week-6-14d9</guid>
      <description>&lt;h2&gt;
  
  
  Python
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Python&lt;/strong&gt; - foydalanish uchun qulay, ko'p qirrali dasturlash tili bo'lib, dasturlashga yangi kirganlar uchun ham, soha mutaxassislari uchun ham zo'r tanlov hisoblanadi.&lt;br&gt;
C tilidan farqli o‘laroq, Python interpretatsiya qilinadigan til bo‘lib, unda dasturni alohida kompilyatsiya qilish shart emas. Buning o‘rniga dasturni Python interpretatorida ishga tushiriladi.&lt;/p&gt;

&lt;p&gt;C tilida yozilgan &lt;code&gt;"hello, world"&lt;/code&gt; xabarini ekranga chiqaruvchi kod Python tilida quyidagicha ifodalanadi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hello, world&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E’tibor beradigan bo'lsak bunda hech qanday nuqtali vergul yo‘q va hech qanday kutubxona talab qilinmaydi. Pythonda C tilida ancha murakkab bo‘lgan kodlarni nisbatan oddiylik bilan amalga oshirishi mumkin.&lt;/p&gt;

&lt;p&gt;O‘zgaruvchini e’lon qilish &lt;em&gt;(Variable declaration)&lt;/em&gt; jarayoni Python tilida soddalashtirilgan. Masalan, C tilida o'zgaruvchini &lt;code&gt;int counter = 0;&lt;/code&gt; kabi e'lon qilinadi. Python tilida esa o‘zgaruvchining turini e’lon qilish talab qilinmaydi: &lt;code&gt;counter = 0&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Python’da ma’lumot turlarini aniq ko‘rsatish shart emas, uni interpretatorning o'zi o'zgaruvchining qiymatiga qarab aniqlashtirib oladi.&lt;br&gt;
Python’da odatda quyidagi ma'lumot turlar qo‘llaniladi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;bool&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;float&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;int&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;str&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;C tilidagi kabi &lt;code&gt;long&lt;/code&gt; va &lt;code&gt;double&lt;/code&gt; turlari Python'da mavjud emas. Python katta va kichik sonlar uchun qaysi ma’lumot turini ishlatish kerakligini o‘zi hal qiladi.&lt;/p&gt;

&lt;p&gt;Python’da qo'llaniladigan boshqa ma’lumot turlariga quyidagilar kiradi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;range&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;list&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tuple&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dict&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;set&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bu ma’lumot turlarining har birini C tilida ham amalga oshirish mumkin, biroq Python’da ularni yanada soddaroq tarzda qo‘llash imkoniyati mavjud.&lt;/p&gt;


&lt;h2&gt;
  
  
  Shart operatorlari
&lt;/h2&gt;

&lt;p&gt;Python'da shart operatorlaridan foydalanganda qavslar - &lt;code&gt;()&lt;/code&gt; majburiy emas.&lt;br&gt;
Python'da &lt;code&gt;{}&lt;/code&gt; o‘rniga &lt;strong&gt;indentatsiya&lt;/strong&gt; ishlatiladi.&lt;br&gt;
&lt;code&gt;else if&lt;/code&gt; C'da ishlatilsa, Python'da buning o‘rniga &lt;code&gt;elif&lt;/code&gt; qo‘llaniladi.&lt;br&gt;
&lt;code&gt;if&lt;/code&gt;, &lt;code&gt;elif&lt;/code&gt; va &lt;code&gt;else&lt;/code&gt; operatorlaridan keyin qo'sh nuqta &lt;code&gt;:&lt;/code&gt; qo‘yiladi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cs50&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;

&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x ni kiriting: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;y ni kiriting: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x soni y sonidan kichik&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x soni y sonidan katta&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x soni y soniga teng&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;C'da &lt;code&gt;||&lt;/code&gt; bilan ifodalanadigan &lt;em&gt;"yoki"&lt;/em&gt; mantiqiy operatori Python'da &lt;code&gt;or&lt;/code&gt; bilan almashtiriladi.&lt;br&gt;
Python'da &lt;code&gt;char&lt;/code&gt; o‘rniga &lt;code&gt;str&lt;/code&gt; ishlatiladi, bu esa bitta belgi yoki satr bilan ishlash imkonini beradi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cs50&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;get_string&lt;/span&gt;
&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ma&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;lumotlar o&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;zgartirilishiga rozimisiz? &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Y&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;y&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ha.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Yo&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;q.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Takrorlash operatorlari
&lt;/h2&gt;

&lt;p&gt;Python’da takrorlanish operatorlari &lt;em&gt;(loops)&lt;/em&gt; sintaksisi C ga juda o‘xshash, lekin sodda va tushunarliroq.&lt;br&gt;
&lt;code&gt;while&lt;/code&gt; sikli yordamida &lt;em&gt;"meow"&lt;/em&gt; xabarini ekranga chiqaramiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;meow&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;for&lt;/code&gt; sikli yordamida yuqoridagi kodni yana ham soddalashtirishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;meow&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu yerda &lt;code&gt;i&lt;/code&gt;ning qiymatini Python avtomatik ravishda oshirib boradi.&lt;br&gt;
Shuningdek, yuqoridagi kodni quyidagicha yozishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;meow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;meow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;meow&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bunday yondashuv kodni modullashtiradi.&lt;/p&gt;




&lt;h2&gt;
  
  
  List (Ro'yxat)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;List&lt;/strong&gt; yordamida bir o'zgaruvchida ko'p qiymatlar saqlashimiz mumkin. Listlarning elementlariga indexsi orqali murojaat qila olamiz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;72&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;73&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# O'rtacha qiymatni topamiz
&lt;/span&gt;&lt;span class="n"&gt;average&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Average: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;average&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;len()&lt;/code&gt; metodi yordamida listing uzunligini, ya'ni elementlar sonini aniqlaymiz.&lt;br&gt;
&lt;code&gt;sum()&lt;/code&gt; metodi yordamida sonlardan iborat bo’lgan listning elemtlari yig’indisini hisoblaymiz.&lt;/p&gt;

&lt;p&gt;Foydalanuvchidan qiymatlarni olish uchun sikldan foydalanish mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cs50&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;

&lt;span class="c1"&gt;# Foydalanuvchidan qiymatlarni kiritishni so'raymiz
&lt;/span&gt;&lt;span class="n"&gt;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Score: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;score&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# O'rtacha qiymatni topamiz
&lt;/span&gt;&lt;span class="n"&gt;average&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Average: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;average&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;append&lt;/code&gt; metodi listga yangi qiymat qo‘shadi.&lt;/p&gt;

&lt;p&gt;Python’da list ichida qiymatni qidirish uchun sikldan foydalanish yoki qisqaroq usuldan foydalanish mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Ismlar ro'yxati
&lt;/span&gt;&lt;span class="n"&gt;names&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Carter&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;David&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;John&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Foydalanuvchidan ism kiritishni so'raymiz
&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Name: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Ro'yxatdan qidiramiz
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Topildi&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Topilmadi&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;in&lt;/code&gt; operatori list ichida qaralayotgan qiymat bor-yo‘qligini tekshiradi.&lt;/p&gt;




&lt;h2&gt;
  
  
  Dictionary (Lug'at)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Dictionary&lt;/strong&gt; — bu kalit-qiymat juftliklari bo‘lib, qidiruv jarayonini tezlashtiradi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cs50&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;get_string&lt;/span&gt;

&lt;span class="n"&gt;people&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Carter&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;+1-617-495-1000&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;David&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;+1-617-495-1000&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;John&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;+1-949-468-2750&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Kiritilgan ismni qo'yxatdan qidiramiz
&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Name: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;people&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Telefon raqam: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;people&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Topilmadi&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;people[name]&lt;/code&gt; orqali lug‘at ichidan mos qiymat olinadi.&lt;br&gt;
Lug‘atning qidirish tezligi odatda &lt;code&gt;O(1)&lt;/code&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Buyruq Qatori Argumentlari
&lt;/h2&gt;

&lt;p&gt;Python’da &lt;code&gt;sys&lt;/code&gt; kutubxonasi yordamida buyruq qatori argumentlarini ishlatish mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;argv&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;salom, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;salom, dunyo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;argv&lt;/code&gt; - argumentlar ro‘yxatini o‘z ichiga oladi, birinchi element esa fayl nomidir.&lt;br&gt;
Barcha argumentlarni ekranga chiqaramiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;argv&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;arg&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;arg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dastur qanday holatda yakunlagnanini bildirish uchun ma’lum &lt;strong&gt;chiqish kodlari&lt;/strong&gt; &lt;em&gt;(exit status)&lt;/em&gt; dan foydalanamiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Buyruq qatori argumentini kiriting.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;salom, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;sys.exit()&lt;/code&gt; yordamida chiqish kodi qaytariladi &lt;em&gt;(masalan, 0 — dastur muvaffaqiyatli yakunlanganligini bildiradi)&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Ushbu maqolada &lt;a href="https://cs50.harvard.edu/x/2024" rel="noopener noreferrer"&gt;CS50x 2024&lt;/a&gt; manbasidan foydalanilgan.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>cs50</category>
      <category>python</category>
      <category>programming</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>CS50 - Week 5</title>
      <dc:creator>Dilbar</dc:creator>
      <pubDate>Fri, 27 Dec 2024 06:27:30 +0000</pubDate>
      <link>https://dev.to/udilbar/cs50-week-5-204h</link>
      <guid>https://dev.to/udilbar/cs50-week-5-204h</guid>
      <description>&lt;h2&gt;
  
  
  Ma'lumot tuzilmalari
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ma'lumot tuzilmalari&lt;/strong&gt; - xotiradagi ma'lumotlarni tashkil qilish shakllaridir. Xotirada ma'lumotlarni tashkil qilishning ko‘plab usullari mavjud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Abstrakt ma'lumot tuzilmalari&lt;/strong&gt; – bu biz konseptual tarzda tasavvur qiladigan tuzilmalardir. Ushbu abstrakt tuzilmalar bilan tanishish kelgusida ma'lumot tuzilmalarini amaliyotda amalga oshirishni osonlashtiradi.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stack va Queue
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Queue&lt;/strong&gt; – bu abstrakt ma'lumot tuzilmalarining bir shakli.&lt;br&gt;
Queue ma'lumot tuzilmasi &lt;strong&gt;FIFO&lt;/strong&gt; &lt;em&gt;(First In First Out, "birinchi qo'shilgan element birinchi chiqadi")&lt;/em&gt; qoidasi bo‘yicha ishlaydi.&lt;br&gt;
Buni attraksionda navbatda turgan odamlar misolida tasavvur qilish mumkin: navbatda birinchi bo‘lgan odam birinchi bo‘lib kiradi, oxirgi bo‘lgan esa oxirgi kiradi.&lt;/p&gt;

&lt;p&gt;Queue'lar bilan quyidagi operatsiyalarni bajarish mumkin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enqueue&lt;/strong&gt;: navbatning oxiriga yangi element qo‘shish.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dequeue&lt;/strong&gt;: navbatning boshidan elementni o'chirish.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stack&lt;/strong&gt; ma'lumot tuzilmasi esa &lt;strong&gt;LIFO&lt;/strong&gt; &lt;em&gt;(Last In First Out, "oxirgi qo'shilgan element birinchi chiqadi")&lt;/em&gt; qoidasi bo‘yicha ishlaydi.&lt;br&gt;
Masalan, oshxonada laganlarni ustma-ust taxlash: eng oxirgi qo‘yilgan lagan birinchi olinadi.&lt;/p&gt;

&lt;p&gt;Stack quyidagi operatsiyalarga ega:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Push&lt;/strong&gt;: stack'ga yangi element qo‘yish.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pop&lt;/strong&gt;: stack'dan elementni o'chirish.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Massiv
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Massiv&lt;/strong&gt; – ma'lumotlarni xotirada ketma-ket saqlash usulidir. Massivni quyidagicha tasavvur qilish mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rcs2dmld39c2n9we5e5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rcs2dmld39c2n9we5e5.png" alt="array" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Xotirada boshqa dasturlar, funktsiyalar va o'zgaruvchilar tomonidan saqlanadigan boshqa qiymatlar, shuningdek, avval foydalanilib, hozir foydalanilmayotgan keraksiz qiymatlar ham mavjud bo'lishi mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F527j8mxwi1jw5hjoksor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F527j8mxwi1jw5hjoksor.png" alt="array inside memory" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agar massivga yangi element – &lt;code&gt;4&lt;/code&gt;ni qo‘shmoqchi bo‘lsak, yangi xotira ajratib, eski massivni unga ko‘chirishimiz kerak bo‘ladi. Ushbu yangi xotira keraksiz qiymatlar &lt;em&gt;(garbage values)&lt;/em&gt; bilan to'la bo'lishi mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Facl35t9e9fi9e9pp3o89.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Facl35t9e9fi9e9pp3o89.png" alt="two arrays with garbage values" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Massivga elementlarni ko'chirib, yangi qiymatni qo'shsak, ajratilgan yangi xotiradagi eski kearksiz qiymatlar ustiga yangi qiymatlar yoziladi: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n0hjuji1qqn3cupeesi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n0hjuji1qqn3cupeesi.png" alt="two arrays" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bu yondashuvning kamchiligi – har bir yangi element qo‘shilganda massivni to‘liq nusxalash kerak bo‘ladi.&lt;br&gt;
Agar biz &lt;code&gt;4&lt;/code&gt; ni xotirada boshqa joyga joylashtirsakchi? U holda, ta'rifga ko'ra, bu endi massiv bo'lmaydi, chunki &lt;code&gt;4&lt;/code&gt; xotirada massiv elementlari bilan ketma-ket joylashmaydi.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ba’zida, dasturchilar kerak bo‘lganidan ko‘proq xotira ajratadilar &lt;em&gt;(masalan, 30 ta element uchun 300 ta joy ajratilishi)&lt;/em&gt;. Ammo bu yomon dizayn hisoblanadi, chunki tizim resurslari bekor sarflanadi va ko‘p hollarda ortiqcha xotira kerak bo‘lmaydi. Shuning uchun xotirani aniq ehtiyojga mos ravishda ajratish muhimdir.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Linked List
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Linked List&lt;/strong&gt; - &lt;code&gt;C&lt;/code&gt; dasturlash tilidagi eng kuchli ma’lumot tuzilmalaridan biridir. Ular turli xotira hududlarida joylashgan qiymatlarni bir ro‘yxatda birlashtirish imkonini beradi. Shuningdek, ro‘yxatni xohlaganimizcha dinamik tarzda kengaytirish yoki qisqartirish imkonini ham beradi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flspt6zgb1xes3bfrky8o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flspt6zgb1xes3bfrky8o.png" alt="linked list" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Har bir &lt;strong&gt;node&lt;/strong&gt; o'zida ikki qiymatni saqlaydi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;qiymat;&lt;/li&gt;
&lt;li&gt;keyingi node'ning xotiradagi manzilini o'zida saqlovchi ko'rsatkich.
Oxirgi &lt;strong&gt;node&lt;/strong&gt; esa undan keyin boshqa element yo'qligini ko'rsatish uchun o'zida &lt;code&gt;NULL&lt;/code&gt;ni saqlaydi.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9shaiut0d8i396y46me.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9shaiut0d8i396y46me.png" alt="linked list" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linked list birinchi elementinining manzilini bir ko'rsatkich &lt;em&gt;(pointer)&lt;/em&gt; ga saqlab qo'yamiz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylkcdvgt38u7aq0p46i1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylkcdvgt38u7aq0p46i1.png" alt="linked list" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;C&lt;/code&gt; dasturlash tilida &lt;strong&gt;node&lt;/strong&gt;'ni quyidagicha yozishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Linked list&lt;/strong&gt; yaratish jarayonini ko'rib chiqamiz:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;node *list&lt;/code&gt;ni e'lon qilamiz:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63gekjq64i0ih2rndus3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63gekjq64i0ih2rndus3.png" alt="node list" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;node&lt;/code&gt; uchun xotira ajratamiz:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5r80od0v9auayity5pw9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5r80od0v9auayity5pw9.png" alt="node" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;node&lt;/code&gt;ning qiymatni kiritamiz: &lt;code&gt;n-&amp;gt;number = 1&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp7tm4los0ivoj02ddgd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp7tm4los0ivoj02ddgd.png" alt="node value" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;node&lt;/code&gt;ning &lt;code&gt;next&lt;/code&gt; ko'rsatkichini &lt;code&gt;NULL&lt;/code&gt;ga tenglaymiz: &lt;code&gt;n-&amp;gt;next = NULL&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0w56xqxybbvbz30hok0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0w56xqxybbvbz30hok0.png" alt="node next" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;list&lt;/code&gt;ni &lt;code&gt;n&lt;/code&gt;ga tenglaymiz:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkb793qfpdzb6y2l542dl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkb793qfpdzb6y2l542dl.png" alt="list = n" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Xuddi shunday tartibda, &lt;code&gt;2&lt;/code&gt; qiymatiga ega yangi &lt;code&gt;node&lt;/code&gt;ni yaratamiz:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjd19hbrhwmrp68ads9kx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjd19hbrhwmrp68ads9kx.png" alt="two nodes" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ikkala &lt;code&gt;node&lt;/code&gt;larni bir-biriga bog'lash uchun &lt;code&gt;n&lt;/code&gt;ning &lt;code&gt;next&lt;/code&gt; ko'rsatkichini &lt;code&gt;list&lt;/code&gt;ga tenglaymiz:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxp35zx25mnv4gx2mnacg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxp35zx25mnv4gx2mnacg.png" alt="two nodes list" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Va nihoyat, &lt;code&gt;list&lt;/code&gt;ni &lt;code&gt;n&lt;/code&gt;ga tenglaymiz. Endi bizda ikkita elementlardan tashkil topgan &lt;code&gt;linked list&lt;/code&gt; mavjud:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwz2wq5rq3excysl604t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwz2wq5rq3excysl604t.png" alt="linked list" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;C&lt;/code&gt; dasturlash tilida ushbu jarayonning kodini quyidagicha yozishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[])&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Linked list'ni e'lon qilamiz&lt;/span&gt;
    &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Har bir buyruq qatori argumenti uchun&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Argumentni butun songa o‘tkazamiz&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;atoi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

        &lt;span class="c1"&gt;// Yangi element uchun xotira ajratamiz&lt;/span&gt;
        &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;malloc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Linked list'ning boshiga node'ni qo‘shamiz&lt;/span&gt;
        &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Linked list elementlarini ekranga chiqaramiz&lt;/span&gt;
    &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;ptr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ptr&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%i&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ptr&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;ptr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ptr&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Xotirani bo‘shatamiz&lt;/span&gt;
    &lt;span class="n"&gt;ptr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ptr&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ptr&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;free&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ptr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;ptr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Linked list bilan ishlashda bir qancha kamchiliklar mavjud:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Ko‘proq xotira&lt;/em&gt;: har bir element uchun nafaqat elementning o‘z qiymatini, balki keyingi elementga ko‘rsatkichni ham saqlash kerak.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Elementlarni indeks orqali chaqirish&lt;/em&gt;: massivlarda ma’lum bir elementni indeks orqali chaqirishimiz mumkin, lekin linked list'da bu imkonsiz. Ma’lum bir elementning joylashuvini topish uchun birinchi elementdan boshlab barcha elementlarni ketma-ket ko'rib chiqish kerak bo'ladi.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Tree
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Binary Search Tree&lt;/strong&gt; &lt;em&gt;(BST)&lt;/em&gt; – bu ma’lumotlarni samarali saqlash, qidirish va olish imkonini beruvchi ma’lumot tuzilmasidir.&lt;br&gt;
Bizga saralangan sonlar ketma-ketligi berilgan bo'lsin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzjxpna7giv5vtvnkwtr2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzjxpna7giv5vtvnkwtr2.png" alt="tree" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Markazdagi elementni eng yuqoriga, markazdagi elementdan kichik qiymatlarni chap tomonga, katta qiymatlarni esa o‘ng tomonga joylashtiramiz:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqqo27gzq0p6v9jjf79nx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqqo27gzq0p6v9jjf79nx.png" alt="tree" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ko‘rsatkichlardan foydalanib har bir elementni bir-biri bilan bog'laymiz:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvb3yid2o58qplj1crb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvb3yid2o58qplj1crb1.png" alt="tree" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quyidagi kod &lt;em&gt;BST&lt;/em&gt; ni qanday amalga oshirishni ko‘rsatadi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;free_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;print_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Ma'lumot tuzilmasini e'lon qilamiz&lt;/span&gt;
    &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;tree&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// 2 qiymatini qo'shamiz&lt;/span&gt;
    &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;malloc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;tree&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// 1 qiymatini ma'lumot tuzilmasining chap tomoniga qo'shamiz&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;malloc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;free_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// 3 qiymatini ma'lumot tuzilmasining o'ng tomoniga qo'shamiz&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;malloc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;free_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Elementlarni ekranga chiqaramiz&lt;/span&gt;
    &lt;span class="n"&gt;print_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Xotirani bo‘shatamiz&lt;/span&gt;
    &lt;span class="n"&gt;free_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Xotirani bo‘shatish funksiyasi&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;free_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;free_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;free_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;free&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Elementlarni ekranga chiqarish funksiyasi&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;print_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;print_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%i&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;print_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Har bir &lt;code&gt;node&lt;/code&gt; uchun xotira ajratamiz va uning qiymati &lt;code&gt;number&lt;/code&gt;ga saqlanadi, shunindek har bir &lt;code&gt;node&lt;/code&gt; - &lt;code&gt;left&lt;/code&gt;, va &lt;code&gt;right&lt;/code&gt; ko'rsatkichlariga ega. &lt;code&gt;print_tree&lt;/code&gt; funksiyasi har bir &lt;code&gt;node&lt;/code&gt;ni chapdan o‘ngga ketma-ket rekursiya orqali chop etadi. &lt;code&gt;free_tree&lt;/code&gt; funksiyasi ma'lumot tuzilmasining barcha &lt;code&gt;node&lt;/code&gt;larini rekursiv ravishda xotiradan bo‘shatadi.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;BST&lt;/em&gt; ning afzalliklari:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dinamizm&lt;/strong&gt;: elementlarni samarali qo'shishimiz yoki o'chirishimiz mumkin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qidiruv samaradorligi&lt;/strong&gt;: &lt;em&gt;BST&lt;/em&gt; da ma'lum bir elementni qidirishga ketadigan vaqt &lt;code&gt;O(log n)&lt;/code&gt; bo‘ladi, chunki har bir qidiruvda daraxtning yarmi qidiruvdan chiqarib tashlanadi.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;BST&lt;/em&gt; ning kamchiliklari:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Tree&lt;/code&gt;ning muvozanati buzilgan bo‘lsa &lt;em&gt;(masalan, barcha elementlar ketma-ket joylashsa)&lt;/em&gt;, qidiruv samaradorligi &lt;code&gt;O(n)&lt;/code&gt;ga tushib ketadi.&lt;/li&gt;
&lt;li&gt;Har bir &lt;code&gt;node&lt;/code&gt; uchun &lt;code&gt;left&lt;/code&gt; va &lt;code&gt;right&lt;/code&gt; ko‘rsatkichlarini ham saqlashni talab qiladi, bu kompyuterda xotira iste’molini oshiradi.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Dictionary
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Dictionary&lt;/strong&gt; - bu xuddi lug‘at kitoblarlar kabi, unda so‘z va uning ta’rifi bo‘lganidek, uning elementlari &lt;strong&gt;kalit&lt;/strong&gt; &lt;em&gt;(key)&lt;/em&gt; va &lt;strong&gt;qiymat&lt;/strong&gt; &lt;em&gt;(value)&lt;/em&gt; ga ega.&lt;/p&gt;

&lt;p&gt;Dictionary'dan biror bir elementni so'rasak, u elementni bizga &lt;code&gt;O(1)&lt;/code&gt; vaqtda qaytaradi. Dictionary'lar xeshlash orqali aynan shu tezlikni ta’minlay oladi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Xeshlash&lt;/strong&gt; – kirish massividagi ma'lumotlarni maxsus algoritm yordamida bitlar ketma-ketligiga aylantirish jarayonidir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Xesh funksiyasi&lt;/strong&gt; – bu ixtiyoriy uzunlikdagi satrdan aniq uzunlikdagi bitlardan iborat satrni hosil qiladigan algoritmdir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hash table&lt;/strong&gt; – bu massivlar va linked list'larning ajoyib kombinatsiyasidir. Uni quyidagicha tasavvur qilishimiz mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F32rxsm2ey581g91ywd38.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F32rxsm2ey581g91ywd38.png" alt="hash table" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kolliziya&lt;/strong&gt; &lt;em&gt;(Collisions)&lt;/em&gt; – bu ikkita har xil kirish ma'lumotidan bir xesh qiymat hosil bo'lib qolishidir. Yuqoridagi rasmda kolliziya bo'lgan elementlar linked list sifatida bog'langan. Xesh funksiyasini yaxshilash orqali kolliziya bo'lish ehtimolini kamashtirish mumkin.&lt;/p&gt;

&lt;p&gt;Xesh funksiyasiga oddiy bir misol:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;ctype.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;unsigned&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;word&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;toupper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;word&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="sc"&gt;'A'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Ushbu maqolada &lt;a href="https://cs50.harvard.edu/x/2024" rel="noopener noreferrer"&gt;CS50x 2024&lt;/a&gt; manbasidan foydalanilgan.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>cs50</category>
      <category>algorithms</category>
      <category>programming</category>
      <category>c</category>
    </item>
    <item>
      <title>CS50 - Week 4</title>
      <dc:creator>Dilbar</dc:creator>
      <pubDate>Wed, 25 Dec 2024 14:10:21 +0000</pubDate>
      <link>https://dev.to/udilbar/cs50-week-4-24pl</link>
      <guid>https://dev.to/udilbar/cs50-week-4-24pl</guid>
      <description>&lt;h2&gt;
  
  
  Piksellar
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Piksellar&lt;/strong&gt; – bu rasmni tashkil etuvchi eng kichik rangli nuqtalardir.&lt;br&gt;
Rasmni nollardan va birlardan iborat deb tasavvur qilsak, bunda nollar qora rangni, birlar esa oq rangni ifodalaydi:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuf76wxj472lgt24sk2qd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuf76wxj472lgt24sk2qd.png" alt="smiley" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RGB&lt;/strong&gt; &lt;em&gt;(Red, Green, Blue)&lt;/em&gt; – bu har bir rangning miqdorini ifodalovchi sonlar. &lt;strong&gt;Adobe Photoshop&lt;/strong&gt; dasturida ushbu sozlamalarni ko‘ramiz:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foa27q03zkmhkdc6o5sme.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foa27q03zkmhkdc6o5sme.png" alt="hex in photoshop" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Qizil, yashil va ko‘k ranglarining tanglangan miqdori rangni qanday o‘zgartirishini yuqoridagi rasmda ko‘rishimiz mumkin. Shuningdek, ushbu rasmda rang faqat uchta qiymat orqali emas, balki maxsus raqam va belgilardan tashkil topgan qiymat bilan ifodalanishini ham ko‘rishimiz mumkin. Masalan, &lt;code&gt;255&lt;/code&gt; qiymati &lt;code&gt;FF&lt;/code&gt; sifatida ko‘rsatilgan.&lt;/p&gt;


&lt;h2&gt;
  
  
  O‘n oltilik sanoq sistemasi (Hexadecimal)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;O‘n oltilik sanoq sistemasi&lt;/strong&gt; - sonlarni faqat 16 belgidan foydalanib yozishga asoslangan sanoq sistemasi. Ular quyidagilar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 1 2 3 4 5 6 7 8 9 A B C D E F
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O‘n oltilik sanoq sistemasida har bir ustun 16 darajasini ifodalaydi.&lt;br&gt;
&lt;code&gt;0&lt;/code&gt; – &lt;code&gt;00&lt;/code&gt; sifatida&lt;br&gt;
&lt;code&gt;1&lt;/code&gt; – &lt;code&gt;01&lt;/code&gt; sifatida&lt;br&gt;
&lt;code&gt;9&lt;/code&gt; – &lt;code&gt;09&lt;/code&gt; sifatida&lt;br&gt;
&lt;code&gt;10&lt;/code&gt; – &lt;code&gt;0A&lt;/code&gt; sifatida&lt;br&gt;
&lt;code&gt;15&lt;/code&gt; – &lt;code&gt;0F&lt;/code&gt; sifatida&lt;br&gt;
&lt;code&gt;16&lt;/code&gt; – &lt;code&gt;10&lt;/code&gt; sifatida&lt;br&gt;
&lt;code&gt;255&lt;/code&gt; – &lt;code&gt;FF&lt;/code&gt; sifatida ifodalanadi, chunki &lt;code&gt;16 x 15&lt;/code&gt; (yoki &lt;code&gt;F&lt;/code&gt;) &lt;code&gt;240&lt;/code&gt; ga teng, unga yana &lt;code&gt;15&lt;/code&gt; qo‘shilganda &lt;code&gt;255&lt;/code&gt; bo‘ladi. Bu o‘n oltilik sanoq sistemasida ifodalash mumkin bo‘lgan ikki xonali eng katta son hisoblanadi.&lt;/p&gt;

&lt;p&gt;O‘n oltilik sanoq sistemasi ma’lumotlarni qisqaroq ko‘rinishda ifodalash imkonini beradi. Shuning uchun u ma’lumotlarni ixchamroq ifodalash uchun qulay hisoblanadi.&lt;/p&gt;


&lt;h2&gt;
  
  
  Xotira (Memory)
&lt;/h2&gt;

&lt;p&gt;Xotira bloklarini o‘n oltilik sanoq sistemasi orqali raqamlab chiqsak, ularni quyidagicha tasavvur qilishimiz mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7ujo7lbx50btb0dmvuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7ujo7lbx50btb0dmvuf.png" alt="memory hex" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rasmdagi &lt;code&gt;10&lt;/code&gt; bloki xotiradagi joylashuvni yoki &lt;code&gt;10&lt;/code&gt; qiymatini ifodalayotganini aniqlash qiyin bo‘lishi mumkin. Shuning uchun, odatda, barcha o‘n oltilik sonlar &lt;code&gt;0x&lt;/code&gt; prefiksi bilan ifodalanadi:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frg14dgig4ap0jgnw5b72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frg14dgig4ap0jgnw5b72.png" alt="0x" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Butun son &lt;code&gt;n&lt;/code&gt; o'zgaruvchisiga &lt;code&gt;50&lt;/code&gt; qiymatini beramiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%i&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dasturning ushbu qiymatni xotirada qanday saqlayotganini quyidagicha tasavvur qilish mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyv7isl4ywxzi1sfxco19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyv7isl4ywxzi1sfxco19.png" alt="hex" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;C&lt;/code&gt; tilida xotira bilan ishlashga oid quyidagi operatorlar mavjud:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;amp;&lt;/code&gt; – Xotiradagi biror qiymatning manzilini beradi.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*&lt;/code&gt; – Kompilyatorga xotiradagi joylashuvga borishni buyuradi.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agar &lt;code&gt;n&lt;/code&gt; o'rgaruvchimizning xotiradigi manzilini bilmoqchi bo'lsak, yuqoridagi kodimizni quyidagicha o'zgartirishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%p&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;%p&lt;/code&gt; – xotiradagi joylashuv manzilini ko‘rish imkonini beradi. &lt;code&gt;&amp;amp;n&lt;/code&gt; esa kodni ishga tushirganimizda &lt;code&gt;n&lt;/code&gt; o'zgaruvchisining xotiradagi &lt;code&gt;0x&lt;/code&gt; bilan boshlangan manzilini qaytaradi.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ko'rsatkichlar (Pointers)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ko‘rsatkich&lt;/strong&gt; – bu qiymatning kompyuter xotirasidagi manzilini o‘zida saqlaydigan o‘zgaruvchi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bunda &lt;code&gt;p&lt;/code&gt; ko‘rsatkich bo‘lib, u butun son &lt;code&gt;n&lt;/code&gt;ning manzilini o‘z ichiga oladi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxm2gumuna3qrxd22ur75.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxm2gumuna3qrxd22ur75.png" alt="pointer" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ko‘rsatkichlar odatda 8 baytli qiymat sifatida saqlanadi. &lt;code&gt;p&lt;/code&gt; yuqoridagi rasmda &lt;code&gt;50&lt;/code&gt; qiymatining manzilini saqlamoqda.&lt;br&gt;
Ko‘rsatkichni xotiradagi bir manzildan boshqasiga ishora qiluvchi o‘q sifatida tasavvur qilishimiz mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftgas7idp147tk3ylj66m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftgas7idp147tk3ylj66m.png" alt="pointer" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  String
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;String&lt;/strong&gt; - bu oddiygina belgilar massividir. Masalan, &lt;code&gt;string s = "HI!"&lt;/code&gt;ni kompyuter xotirasida quyidagicha tasvirlash mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4r40ytwzgth3lcqwd3db.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4r40ytwzgth3lcqwd3db.png" alt="hi" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;s&lt;/code&gt; deb nomlangan ko‘rsatkich kompilyatorga berilgan qiymatning birinchi bayti qayerda joylashganini ko‘rsatadi:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsr2uou604t6wnel8wk5b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsr2uou604t6wnel8wk5b.png" alt="hi pointer" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;string&lt;/code&gt; ma'lumot turidagi o'zgaruvchini quyidagicha yaratishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"HI!"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yuqoridagi kod &lt;code&gt;s&lt;/code&gt; joylashuvdan boshlanadigan belgilar massivini ekranga chiqaradi.&lt;/p&gt;




&lt;h2&gt;
  
  
  String Comparison (Solishtirish)
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;string&lt;/code&gt; ma'lumot turidagi o'zgaruvchi qiymatlarni bir-biri bilan solishtiramiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Qiymatlarni olish&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"s: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"t: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Solishtirish&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Bir xil&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Turlicha&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yuqoridagi kodimizda &lt;code&gt;s&lt;/code&gt; va &lt;code&gt;t&lt;/code&gt; o'zgaruvchilarimizga bir xil &lt;code&gt;"Hi!"&lt;/code&gt; qiymatini bersak ham natija sifatida &lt;code&gt;"Turlicha"&lt;/code&gt; xabari ekranga chiqadi.&lt;br&gt;
Nega bunday bo'layotganligini bilish uchun &lt;code&gt;s&lt;/code&gt; va &lt;code&gt;t&lt;/code&gt; o'zgaruvchilarimizga bir xil qiymat berib, ularni kompyuter xotirasida quyidagicha tasvirlashimiz mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frp11ope4aqi6ucusb564.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frp11ope4aqi6ucusb564.png" alt="two strings" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Demak, yuqoridagi kod aslida, &lt;code&gt;s&lt;/code&gt; va &lt;code&gt;t&lt;/code&gt; o'zgaruvchilarining xotiradagi manzillarini solishtirishga urinayotgan ekan, ularning qiymatlarini emas.&lt;/p&gt;


&lt;h2&gt;
  
  
  Copying (Nusxalash)
&lt;/h2&gt;

&lt;p&gt;Quyidagi kod berilgan bo'lsin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;ctype.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Qiymat kiritamiz&lt;/span&gt;
    &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"s: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Manzilini nusxalaymiz&lt;/span&gt;
    &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Birinchi harfini kattalashtiramiz&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;toupper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

    &lt;span class="c1"&gt;// Ekranga chop etamiz&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"s: %s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"t: %s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;string t = s&lt;/code&gt; kodida &lt;code&gt;s&lt;/code&gt; manzili &lt;code&gt;t&lt;/code&gt;ga nusxalanadi. Bu biz xohlagan natijani bermaydi, chunki qiymat nusxalanmadi – faqat uning manzili nusxalandi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftdhxolb5phdskjsvllhl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftdhxolb5phdskjsvllhl.png" alt="copying" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;s&lt;/code&gt; va &lt;code&gt;t&lt;/code&gt; bir xil xotira bloklariga ishora qilmoqda. &lt;code&gt;s&lt;/code&gt;dan &lt;code&gt;t&lt;/code&gt;ga uning qiymatini nusxalay olmadik, balki ular bitta qatorni ko‘rsatib turgan ikkita ko‘rsatkichga aylanishdi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;malloc&lt;/strong&gt; – dasturchiga ma’lum o‘lchamdagi xotira blokini ajratish imkonini beradi.&lt;br&gt;
&lt;strong&gt;free&lt;/strong&gt; – oldin ajratilgan xotira blokini bo‘shatishni kompyuterdan so‘raydi.&lt;br&gt;
Kodni haqiqiy nusxa yaratish uchun quyidagicha o‘zgartiramiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;ctype.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Qiymat kiritamiz&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"s: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Yangi o'zgaruvchi uchun xotira ajratamiz&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;malloc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strlen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Qiymatni yangi o'zaruvchi uchun ajratilgan xotiraga nusxalaymiz&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;strlen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Birinchi harfini kattalashtiramiz&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;toupper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

    &lt;span class="c1"&gt;// Ekranga chop etamiz&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"s: %s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"t: %s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Xotirani bo‘shatish&lt;/span&gt;
    &lt;span class="n"&gt;free&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;malloc(strlen(s) + 1)&lt;/code&gt; - &lt;code&gt;s&lt;/code&gt; o'zgaruvchi uzunligiga birni qo‘shib, &lt;code&gt;\0&lt;/code&gt; belgisi uchun joy ajratadi. Keyin &lt;code&gt;for&lt;/code&gt; sikli orqali &lt;code&gt;s&lt;/code&gt; qiymatlari &lt;code&gt;t&lt;/code&gt;ga nusxalanadi.&lt;/p&gt;




&lt;h2&gt;
  
  
  Garbage Values (Keraksiz qiymatlar)
&lt;/h2&gt;

&lt;p&gt;Agar kompilyatordan xotira bloki so‘rasak, bu xotiraning bo‘sh bo‘lishiga kafolat yo‘q. Ajratilgan xotira ilgari kompyuter tomonidan ishlatilgan bo‘lishi mumkin, shuning uchun u yerda keraksiz qiymatlar bor bo‘lishi ehtimoli mavjud:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2snaf29jl2e4a4rot9de.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2snaf29jl2e4a4rot9de.png" alt="garbage values" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%i&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ushbu kodni ishga tushirganimizda, massiv uchun 1024 ta xotira joyi ajratiladi, lekin &lt;code&gt;for&lt;/code&gt; sikli yordamida massiv elementlarining qiymatlarini ekranga chiqarganimizda ularning hammasi ham &lt;code&gt;0&lt;/code&gt; qiymatga ega bo'lmasligini ko'ramiz.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Kompyuterdan har doim biror-bir o'zgaruvchi uchun xotira ajratishni so'raganimizda, unga &lt;code&gt;0&lt;/code&gt; yoki boshqa qiymat berib boshlang'ich holatga keltirish yaxshi amaliyot hisoblanadi.&lt;/p&gt;

&lt;p&gt;Ushbu maqolada &lt;a href="https://cs50.harvard.edu/x/2024" rel="noopener noreferrer"&gt;CS50x 2024&lt;/a&gt; manbasidan foydalanilgan.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>cs50</category>
      <category>memory</category>
      <category>pointers</category>
      <category>c</category>
    </item>
    <item>
      <title>CS50 - Week 3</title>
      <dc:creator>Dilbar</dc:creator>
      <pubDate>Tue, 24 Dec 2024 09:31:03 +0000</pubDate>
      <link>https://dev.to/udilbar/cs50-week-3-157c</link>
      <guid>https://dev.to/udilbar/cs50-week-3-157c</guid>
      <description>&lt;p&gt;&lt;strong&gt;Algoritm&lt;/strong&gt; - bu muammoni hal qilish uchun aniq ketma-ketlikda berilgan ko'rsatmalar to'plami. Algoritmlar bir-biridan tezligi va qancha xotira egallashi bilan farq qiladi. Dasturlash jarayonida aksar algoritmlar ma'lumotlarni qidirish (&lt;em&gt;searching&lt;/em&gt;) va tartiblashga (&lt;em&gt;sorting&lt;/em&gt;) borib taqaladi. Keling, ma'lumotlarni qidirish algoritmlari bilan tanishamiz:&lt;/p&gt;

&lt;h2&gt;
  
  
  Chiziqli qidiruv (Linear search)
&lt;/h2&gt;

&lt;p&gt;Bizga quyidagi massiv berilgan bo'lsin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[20, 500, 10, 5, 100, 1, 50]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Massivni tasavvur qilishda uni quyidagi kabi yonma-yon turgan yettita qizil shkaf sifatida ko‘rish mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2q2jwifelzebey1elgoh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2q2jwifelzebey1elgoh.png" alt="lockers" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ushbu massivdan 50 sonini topishimiz kerak. Kompyuter 50 sonini topish uchun har bir shkafni tekshirishi kerak. Ushbu jarayonni, ya’ni massiv ichida ma’lum bir raqamni, belgini yoki boshqa elementni izlashni &lt;em&gt;"qidiruv"&lt;/em&gt; deb ataymiz.&lt;br&gt;
Biz massivimizni algoritmga topshirib, algoritm orqali shkaflarni ochib, 50 raqami bor-yo‘qligini aniqlashni so‘rashimiz mumkin. Natijada, algoritm bizga &lt;em&gt;“ha”&lt;/em&gt; yoki &lt;em&gt;“yo‘q”&lt;/em&gt; (&lt;code&gt;true&lt;/code&gt; yoki &lt;code&gt;false&lt;/code&gt;) deb javob beradi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjp1scecw6i06bwiy4j5e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjp1scecw6i06bwiy4j5e.png" alt="lockers as algorithm" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quyidagi kabi ko‘rsatmalar yordamida algoritmni tuzishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Chapdan&lt;/span&gt; &lt;span class="nx"&gt;o&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;ngga&lt;/span&gt; &lt;span class="nx"&gt;har&lt;/span&gt; &lt;span class="nx"&gt;bir&lt;/span&gt; &lt;span class="nx"&gt;eshikni&lt;/span&gt; &lt;span class="nx"&gt;tekshirish&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;Agar&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt; &lt;span class="nx"&gt;soni&lt;/span&gt; &lt;span class="nx"&gt;bor&lt;/span&gt; &lt;span class="nx"&gt;bo&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;lsa&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nx"&gt;Ha&lt;/span&gt; &lt;span class="nx"&gt;deb&lt;/span&gt; &lt;span class="nf"&gt;qaytaramiz &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;Yo&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;q&lt;/span&gt; &lt;span class="nx"&gt;deb&lt;/span&gt; &lt;span class="nf"&gt;qaytaramiz &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yuqoridagi ko‘rsatmalar inson o‘qishi uchun mo‘ljallangan &lt;strong&gt;pseudokod&lt;/strong&gt; bo‘lib, kompyuterga topshiriladigan buyruqlarning oddiyroq ko‘rinishidir.&lt;/p&gt;

&lt;p&gt;Chiziqli qidiruv algoritmini quyidagi kod yordamida &lt;code&gt;C&lt;/code&gt; tilida amalga oshirishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Butun sonlardan iborat massiv berilgan&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="c1"&gt;// Kiritilgan sonni massivdan qidiramiz&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Number: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Topildi&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Topilmadi&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu yerda &lt;code&gt;for&lt;/code&gt; sikli yordamida chiziqli qidiruv amalga oshirilmoqda.&lt;br&gt;
&lt;code&gt;return 0&lt;/code&gt; - dastur muvaffaqiyatli tugaganini bildiradi va dasturdan chiqiladi.&lt;br&gt;
&lt;code&gt;return 1&lt;/code&gt; - dasturda xatolik yuz berganligini bildiradi.&lt;/p&gt;


&lt;h2&gt;
  
  
  Binar qidiruv (Binary search)
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Binar qidiruv&lt;/em&gt; – bu 50 raqamini izlashda qo‘llaniladigan yana bir algoritm.&lt;br&gt;
Agar massivdagi qiymatlar o'sish tartibida saralangan bo‘lsa, binar qidiruvning pseudokodini quyidagicha keltirishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Agar&lt;/span&gt; &lt;span class="nx"&gt;tekshiriladigan&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="nx"&gt;qolmagan&lt;/span&gt; &lt;span class="nx"&gt;bo&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;lsa&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;Yo&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;q&lt;/span&gt; &lt;span class="nx"&gt;deb&lt;/span&gt; &lt;span class="nf"&gt;qaytaramiz &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;Agar&lt;/span&gt; &lt;span class="nx"&gt;massivning&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;o&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;rta&lt;/span&gt; &lt;span class="nx"&gt;elementi&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt; &lt;span class="nx"&gt;soniga&lt;/span&gt; &lt;span class="nx"&gt;teng&lt;/span&gt; &lt;span class="nx"&gt;bo&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;lsa&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;Ha&lt;/span&gt; &lt;span class="nx"&gt;deb&lt;/span&gt; &lt;span class="nf"&gt;qaytaramiz &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;Agar&lt;/span&gt; &lt;span class="nx"&gt;massivning&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;o&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;rta&lt;/span&gt; &lt;span class="nx"&gt;elementi&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;Massivning&lt;/span&gt; &lt;span class="nx"&gt;chap&lt;/span&gt; &lt;span class="nx"&gt;yarmidan&lt;/span&gt; &lt;span class="nx"&gt;qidiramiz&lt;/span&gt;
&lt;span class="nx"&gt;Agar&lt;/span&gt; &lt;span class="nx"&gt;massivning&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;o&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;rta&lt;/span&gt; &lt;span class="nx"&gt;elementi&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;Massivning&lt;/span&gt; &lt;span class="nx"&gt;o&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;ng&lt;/span&gt; &lt;span class="nx"&gt;yarmidan&lt;/span&gt; &lt;span class="nx"&gt;qidiramiz&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Big O notatsiyasi
&lt;/h2&gt;

&lt;p&gt;Algoritmning ishlashiga ketadigan vaqtini tahlil qilish uchun &lt;strong&gt;Big O&lt;/strong&gt; &lt;strong&gt;notatsiyasi&lt;/strong&gt;dan foydalaniladi. Quyidagi grafikni ko‘rib chiqamiz:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdj029s4gwtzj1neepj14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdj029s4gwtzj1neepj14.png" alt="big o graphed" width="800" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Kiritiladigan ma'lumot hajmi"&lt;/em&gt; – &lt;code&gt;x&lt;/code&gt; o‘qi; &lt;em&gt;"Yechim uchun vaqt"&lt;/em&gt; – &lt;code&gt;y&lt;/code&gt; o‘qi;&lt;br&gt;
Algoritmning samaradorligi uning egri chizig‘ining shakliga qarab aniqlanadi:&lt;br&gt;
&lt;code&gt;O(n²)&lt;/code&gt; - eng yomon ishlash vaqti hisoblanadi.&lt;br&gt;
&lt;code&gt;O(log n)&lt;/code&gt; - eng tezkor ishlash vaqtidir.&lt;/p&gt;

&lt;p&gt;Chiziqli qidiruv algoritmi ishlalishiga ketadigan vaqt - &lt;code&gt;O(n)&lt;/code&gt;, chunki eng yomon holatda &lt;code&gt;n&lt;/code&gt; qadam talab qilinishi mumkin.&lt;br&gt;
Binar qidiruv algoritmi ishlashiga ketadigan vaqt esa &lt;code&gt;O(log n)&lt;/code&gt;, chunki eng yomon holatda qadamlar soni tobora kamayib boradi.&lt;/p&gt;

&lt;p&gt;Dasturchilarni qiziqtiradigan ikkita holat mavjud:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eng yomon holat yoki yuqori chegarasi &lt;strong&gt;(upper bound)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Eng yaxshi holat yoki quyi chegarasi &lt;strong&gt;(lower bound)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;Ω&lt;/code&gt; belgisi algoritmning eng yaxshi holatini &lt;em&gt;(quyi chegarani)&lt;/em&gt; belgilash uchun ishlatiladi, masalan, &lt;code&gt;Ω(n)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Θ&lt;/code&gt; belgisi esa yuqori va quyi chegaralar bir xil bo‘lgan holatni belgilaydi, ya’ni eng yaxshi va eng yomon ishlash vaqtining bir xil bo‘lishi.&lt;/p&gt;


&lt;h2&gt;
  
  
  Saralash algoritmlari (Sorting)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Saralash&lt;/strong&gt; – bu tartiblanmagan qiymatlar ro‘yxatini tartiblangan holda o‘zgartirish jarayonidir.&lt;br&gt;
Massiv tartiblangan holatda bo‘lsa, undan ma'lum bir elementni qidirish kompyuter uchun ancha yengil bo‘ladi. Masalan, &lt;strong&gt;binar qidiruv&lt;/strong&gt; &lt;em&gt;(binary search)&lt;/em&gt; tartiblangan massivda ishlaydi, ammo tartiblanmagan massivda ishlamaydi.&lt;/p&gt;

&lt;p&gt;Saralash algoritmlarining ko‘plab turlari mavjud. Ulardan biri &lt;strong&gt;tanlash usuli&lt;/strong&gt; &lt;em&gt;(selection sort)&lt;/em&gt; ni ko'rib chiqamiz. Bizga quyidagicha massiv berilgan bo'lsin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4t0mx0x2ek4izuacoj1d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4t0mx0x2ek4izuacoj1d.png" alt="red lockers" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tanlash usuli algoritmining pseudokodi quyidagicha bo'ladi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nx"&gt;dan&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nx"&gt;gacha&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="nx"&gt;va&lt;/span&gt; &lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="nx"&gt;orasidagi&lt;/span&gt; &lt;span class="nx"&gt;eng&lt;/span&gt; &lt;span class="nx"&gt;kichik&lt;/span&gt; &lt;span class="nx"&gt;sonni&lt;/span&gt; &lt;span class="nx"&gt;topamiz&lt;/span&gt;
    &lt;span class="nx"&gt;Eng&lt;/span&gt; &lt;span class="nx"&gt;kichik&lt;/span&gt; &lt;span class="nx"&gt;sonni&lt;/span&gt; &lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="nx"&gt;bilan&lt;/span&gt; &lt;span class="nx"&gt;almashtiramiz&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bosqichlar tahlili:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Birinchi marta massiv elementlari bo‘ylab yurish &lt;code&gt;n - 1&lt;/code&gt; qadam talab qiladi.&lt;/li&gt;
&lt;li&gt;Ikkinchi marta esa &lt;code&gt;n - 2&lt;/code&gt; qadam talab qilinadi.&lt;/li&gt;
&lt;li&gt;Ushbu mantiq davom ettirilsa, kerakli qadamlar quyidagicha ifodalanishi mumkin:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(n - 1) + (n - 2) + (n - 3) + ... + 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu formulani soddalashtirish orqali quyidagini olamiz: &lt;code&gt;n(n-1)/2&lt;/code&gt; yoki &lt;code&gt;O(n²)&lt;/code&gt;.&lt;br&gt;
Demak, tanlash usuli algoritmi eng yomon holatda &lt;code&gt;O(n²)&lt;/code&gt; tartibida saralar ekan. Hatto barcha qiymatlar tartiblangan bo‘lsa ham, qadamlar soni o‘zgarmaydi, ya’ni eng yaxshi holat ham &lt;code&gt;O(n²)&lt;/code&gt; tartibida ishlaydi.&lt;/p&gt;


&lt;h2&gt;
  
  
  Pufakchali saralash algoritmi (Bubble sort)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Pufakchali saralash&lt;/strong&gt; — yana bir saralash algoritmi bo'lib, bunda elementlarni qayta-qayta joylarini almashtirib, kattaroq qiymatlarni oxiriga &lt;em&gt;“ko‘taramiz”&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Pufakchali saralash algoritmining pseudokodi quyidagicha bo'ladi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="err"&gt;–&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nx"&gt;marta&lt;/span&gt; &lt;span class="nx"&gt;takrorlaymiz&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nx"&gt;dan&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="err"&gt;–&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="nx"&gt;gacha&lt;/span&gt; &lt;span class="nx"&gt;har&lt;/span&gt; &lt;span class="nx"&gt;bir&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="nx"&gt;uchun&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nx"&gt;Agar&lt;/span&gt; &lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="nx"&gt;va&lt;/span&gt; &lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="nx"&gt;noto&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;ri&lt;/span&gt; &lt;span class="nx"&gt;tartibda&lt;/span&gt; &lt;span class="nx"&gt;bo&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;lsa&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nx"&gt;Ularni&lt;/span&gt; &lt;span class="nx"&gt;joyini&lt;/span&gt; &lt;span class="nx"&gt;almashtiramiz&lt;/span&gt;
    &lt;span class="nx"&gt;Agar&lt;/span&gt; &lt;span class="nx"&gt;almashtirishlar&lt;/span&gt; &lt;span class="nx"&gt;qolmagan&lt;/span&gt; &lt;span class="nx"&gt;bo&lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;lsa&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nx"&gt;Dasturdan&lt;/span&gt; &lt;span class="nx"&gt;chiqamiz&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Massivni tartiblash davomida shuni bilamizki, uning ko‘proq qismi tartiblanib boradi, shuning uchun faqat hali tartiblanmagan juftliklarni tekshirishning o'zi kifoya qiladi.&lt;br&gt;
Shuning uchun pufakchali saralash algoritmi eng yomon holatda massiv tartiblanmagan bo'lsa &lt;code&gt;O(n²)&lt;/code&gt;, eng yaxshi holatda massiv allaqachon tartiblangan bo‘lsa &lt;code&gt;O(n)&lt;/code&gt; tartibida ishlaydi.&lt;/p&gt;

&lt;p&gt;Saralash algoritmlari qanday holatda qanday ishlashini &lt;a href="https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html" rel="noopener noreferrer"&gt;ushbu sahifa&lt;/a&gt;da vizual ko'rishimiz mumkin.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ushbu maqolada &lt;a href="https://cs50.harvard.edu/x/2024" rel="noopener noreferrer"&gt;CS50x 2024&lt;/a&gt; manbasidan foydalanilgan.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>cs50</category>
      <category>algorithms</category>
      <category>c</category>
      <category>programming</category>
    </item>
    <item>
      <title>CS50 - Week 2</title>
      <dc:creator>Dilbar</dc:creator>
      <pubDate>Fri, 14 Jun 2024 10:19:09 +0000</pubDate>
      <link>https://dev.to/udilbar/cs50-week-2-23cf</link>
      <guid>https://dev.to/udilbar/cs50-week-2-23cf</guid>
      <description>&lt;h2&gt;
  
  
  Kompilyatsiya qilish
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Shifrlash&lt;/strong&gt; - bu oddiy matnni begona ko'zlardan yashirish jarayoni. &lt;strong&gt;Deshifrlash&lt;/strong&gt; esa, shifrlangan matnni inson o'qiy oladigan shaklga qaytarishdir.&lt;br&gt;
Shifrlangan matn quyidagicha ko'rinishi mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0okpdbspdefph2h7yjp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0okpdbspdefph2h7yjp.png" alt="shifrlangan matn" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kompilyator&lt;/strong&gt; - dastlabki kodni kompyuter tushunadigan mashina kodiga aylantiradigan maxsus kompyuter dasturi.&lt;br&gt;
Bizga &lt;code&gt;hello.c&lt;/code&gt; faylida quyidagi berilgan bo'lsin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hello, world&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kompilyator yuqoridagi kodni olib, quyidagi mashina kodiga aylantiradi:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuabtsrajoi1rl4pkzo3f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuabtsrajoi1rl4pkzo3f.png" alt="mashina kodi" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VS Code&lt;/strong&gt; - to'liq nomi &lt;strong&gt;Visual Studio Code&lt;/strong&gt;, bu &lt;em&gt;Microsoft&lt;/em&gt; tomonidan ishlab chiqilgan bepul va ochiq manbali kod muharriri hisoblanadi. CS50 kursi talabalari uchun &lt;a href="https://cs50.dev" rel="noopener noreferrer"&gt;cs50.dev&lt;/a&gt; saytida &lt;em&gt;VS Code&lt;/em&gt; kod muharriri sozlangan bo'lib, unda kompilyator sifatida &lt;code&gt;clang&lt;/code&gt; ni ishlatadi.&lt;br&gt;
&lt;strong&gt;clang&lt;/strong&gt; – bu C, C++, va boshqa dasturlash tillari uchun mo‘ljallangan yuqori samarali va tezkor kompilyator hisoblanadi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faxggo9j33w1783yd2ev2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faxggo9j33w1783yd2ev2.png" alt="VS Code" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rasmda chap tomonda fayllarimizni topishimiz mumkin. Shuningdek, o'rtada matn muharriri joylashgan. O'ng tomon pastda &lt;strong&gt;buyruqlar qatori interfeysi&lt;/strong&gt; (&lt;em&gt;CLI&lt;/em&gt;) yoki &lt;strong&gt;terminal oynasi&lt;/strong&gt; deb ataladigan soha mavjud bo'lib, bu yerdan kompyuterga buyruqlarni yuborishimiz mumkin.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;make hello&lt;/code&gt; buyrug'ini &lt;em&gt;VS Code&lt;/em&gt; kod muharrining terminal oynasida kiritadigan bo'lsak, u &lt;code&gt;clang&lt;/code&gt; ni chaqiradi va &lt;code&gt;hello.c&lt;/code&gt; faylimizni kompilyatsiya qiladi. Dasturimizni &lt;code&gt;./hello&lt;/code&gt; buyrug'i orqali ishga tushura olamiz.&lt;/p&gt;

&lt;p&gt;Kompilyatsiya qilish bir nechta qadamlarni o'z ichiga oladi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;oldindan qayta ishlash&lt;/em&gt; (&lt;em&gt;preprocessing&lt;/em&gt;) - bu koddagi sarlavha fayllari (masalan, &lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/code&gt;) faylimizga nusxalanib, joylashtiriladigan bosqichdir:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...);&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hello, world&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;kompilyatsiya qilish&lt;/em&gt; (&lt;em&gt;compiling&lt;/em&gt;) - bu dasturni assembler kodiga aylantirishdir:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5x9zntobgod27r0kb6vj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5x9zntobgod27r0kb6vj.png" alt="compiling" width="588" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;yig'ish&lt;/em&gt; (&lt;em&gt;assembling&lt;/em&gt;) - kompilyatorning assembler kodini mashina kodiga aylantirish:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zwu38mzgf6r8q0beg8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zwu38mzgf6r8q0beg8y.png" alt="assembling" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;bog'lash&lt;/em&gt; (&lt;em&gt;linking&lt;/em&gt;) - bu bosqichda kodimizga kiritilgan kutubxonalar kodlari ham mashina kodiga aylantiriladi va birlashtiriladi:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszf1jsare047tvvtw1jp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszf1jsare047tvvtw1jp.png" alt="linking" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  "Debug" qilish
&lt;/h2&gt;

&lt;p&gt;Har kim ham dasturlash jarayonida xatolar qiladi. Quyidagi ataylab xato bilan yozilgan &lt;code&gt;buggy.c&lt;/code&gt; faylini ko'rib chiqsak:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"#&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ushbu kodni ishga tushirganimizda, ekranga uchta belgi o'rniga to'rtta belgi ekranga chiqadi. &lt;code&gt;printf&lt;/code&gt; funksiyasi yordamida dasturimizning qayerida xato qilganimizni qanday topishni ko'rib chiqamiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"i - bu %i&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yuqoridagi kodimizni ishga tushirsak, terminalda quyidagi matnlar paydo bo'ladi:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdjlwgff45m4qp9zrcce4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdjlwgff45m4qp9zrcce4.png" alt="Debugging" width="468" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Buni ko'rib, kodni quyidagicha to'g'rilash kerakligini tushunamiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"#&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ya'ni, &lt;code&gt;&amp;lt;=&lt;/code&gt; (&lt;em&gt;kichik yoki teng&lt;/em&gt;) belgisini &lt;code&gt;&amp;lt;&lt;/code&gt; (&lt;em&gt;kichik&lt;/em&gt;) belgisiga o'zgartirdik.&lt;br&gt;
Dasturdagi xatolarni to'g'rilashning ikkinchi vositasi "&lt;strong&gt;debugger&lt;/strong&gt;" deb atalib, u dasturchilar tomonidan koddagi xatolarni kuzatishda yordam berish uchun yaratilgan dasturiy vositadir.&lt;br&gt;
&lt;em&gt;VS Code&lt;/em&gt; da oldindan sozlangan &lt;em&gt;debugger&lt;/em&gt; mavjud. Ushbu debuggerdan foydalanish uchun quyidagi bosqichlarni bajaramiz:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"&lt;strong&gt;Breakpoint&lt;/strong&gt;" &lt;em&gt;qo'yish&lt;/em&gt; - kod satrining chap tomoniga bosganimizda qizil nuqta (&lt;em&gt;to'xtash belgisi&lt;/em&gt;) paydo bo'ladi va u kompilyatorga ushbu kod qismida to'xtab, nima sodir bo'layotganini ko'rib chiqishimiz mumkinligini bildiradi.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbrn8cej7xe1bqo6wmhs0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbrn8cej7xe1bqo6wmhs0.png" alt="breakpoint" width="800" height="594"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Debuggerni ishga tushirish&lt;/em&gt; - terminalda &lt;code&gt;debug50 ./buggy&lt;/code&gt; buyrug'ini bersak debugger ishga tushadi va breakpoint qo'yilgan satrda kod bajarilishi to'xtaydi.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Kodni tahlil qilish&lt;/em&gt; - barcha mahalliy o'zgaruvchilar chap yuqori burchakda ko'rsatiladi. Ekranning yuqorisida joylashgan "&lt;strong&gt;step over&lt;/strong&gt;" tugmasini bosib, kodimizni birma-bir tekshirib chiqamiz. Bunda &lt;code&gt;i&lt;/code&gt; o'zgaruvchisining qiymati qanday oshayotganini ko'rishimiz mumkin bo'ladi.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Debugger bizga qayerda xato borligini ko'rsatmasa ham, kodning qanday ishlashini asta-sekin ko'rib chiqishimizga yordam beradi.&lt;/p&gt;


&lt;h2&gt;
  
  
  Massivlar
&lt;/h2&gt;

&lt;p&gt;Kompyuterimiz ichida mavjud bo'lgan xotira miqdori cheklangan.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94umtn07kgo7xq81gybl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94umtn07kgo7xq81gybl.png" alt="memory" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kompyuter xotirasida ma'lum turdagi ma'lumotlar qanday saqlanishini tasavvur qilaylik. Masalan, &lt;code&gt;char&lt;/code&gt; turi faqat 1 bayt xotira talab qiladi va u quyidagicha ko'rinishi mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faaqqr2met7nllphjco7v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faaqqr2met7nllphjco7v.png" alt="byte" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shuningdek, 4 bayt xotira talab qiladigan &lt;code&gt;int&lt;/code&gt; turi esa quyidagicha ko'rinishi mumkin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkffw96fak7r95nwb4fsd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkffw96fak7r95nwb4fsd.png" alt="4 bytes" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Massivlar&lt;/strong&gt; - ma'lumotlarni xotirada ketma-ket saqlash usulidir. Shuning uchun bu ma'lumotlarni osonlik bilan olish mumkin.&lt;br&gt;
&lt;code&gt;int scores[3]&lt;/code&gt; - bu kompilyatorga &lt;code&gt;int&lt;/code&gt; turidagi uchta butun sonlarni saqlash uchun ketma-ket uchta joy ajratish buyrug'idir. Keling, ushbu ballarning o'rta arifmetigini topuvchi dastur yaratamiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Ballar qiymatini kiritish&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;72&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;73&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// O'rta arifmetigini hisoblash va ekranga chiqarish&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Average: %f&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;scores[0]&lt;/code&gt; - massivning 0-indexsida turgan qiymatini kompyuter xotirasidan ko'rib chiqadi. Keling, &lt;code&gt;scores&lt;/code&gt; massivi xotirada qanday joylashganini ko'ramiz:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiswnmfiwpdkezk1jr2yt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiswnmfiwpdkezk1jr2yt.png" alt="scores in memory" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Keling, yuqoridagi kodimizni abstraktlaymiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="c1"&gt;// O'zgarmas butun son&lt;/span&gt;
&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;N&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Funksiya prototipi&lt;/span&gt;
&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nf"&gt;average&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[]);&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Ballar qiymatini kiritish&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Score: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// O'rta arifmetikni ekranga chiqarish&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Average: %f&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;average&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nf"&gt;average&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[])&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// O'rta arifmetikni hisoblash&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;float&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;for&lt;/code&gt; sikli orqali &lt;code&gt;scores[i]&lt;/code&gt; yordamida massiv elementlariga qiymat kiritamiz. O'zgarmas butun son &lt;code&gt;N&lt;/code&gt; e'lon qilingan. Shuningdek, &lt;code&gt;average&lt;/code&gt; funksiyasi e'lon qilingan va u &lt;code&gt;int array[]&lt;/code&gt; qabul qiladi, ya'ni kompilyator massivni ushbu funksiyaga o'tkazadi.&lt;br&gt;
Demak, massivlar nafaqat konteyner bo'lishi, shu bilan birga ular funksiyalar orasida o'tkazilishi mumkin ekan.&lt;/p&gt;


&lt;h2&gt;
  
  
  String
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;String&lt;/strong&gt; - bu &lt;code&gt;char&lt;/code&gt; turidagi o'zgaruvchilar massividir, ya'ni belgilar massivi. Bunda u ma'lum belgi bilan boshlanib, satr tugaganini bildirish uchun maxsus &lt;code&gt;NUL&lt;/code&gt; belgisi bilan tugaydi:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1wwodmk4o22hfi0tooi6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1wwodmk4o22hfi0tooi6.png" alt="char array" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Keling, &lt;code&gt;char&lt;/code&gt; turidagi o'zgaruvchilarni ekranga chiqaruvchi dastur yozamiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sc"&gt;'H'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sc"&gt;'I'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sc"&gt;'!'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%c%c%c&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agar &lt;code&gt;%c&lt;/code&gt; format kodini &lt;code&gt;%i&lt;/code&gt; bilan almashtirsak, berilgan &lt;code&gt;char&lt;/code&gt; turidagi o'zgaruvchilarning &lt;strong&gt;ASCII&lt;/strong&gt;  kodlari chop etiladi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sc"&gt;'H'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sc"&gt;'I'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sc"&gt;'!'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%i %i %i&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;string&lt;/code&gt; qanday ishlashini yaxshiroq tushunish uchun kodimizni quyidagicha o'zgartiramiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"HI!"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%c%c%c&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bunda &lt;code&gt;string&lt;/code&gt; turidagi &lt;code&gt;s&lt;/code&gt; o'zgaruvchimiz aslida massiv bo'lganligi sababli, 0-, 1- va 2-indeksdagi qiymatlarni chaqirishimiz mumkin.&lt;br&gt;
Oldingidek, &lt;code&gt;%c&lt;/code&gt; format kodini &lt;code&gt;%i&lt;/code&gt; bilan almashtirishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"HI!"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%i %i %i %i&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bunda &lt;code&gt;string&lt;/code&gt; turidagi &lt;code&gt;s&lt;/code&gt; o'zgaruvchisi belgilarining &lt;strong&gt;ASCII&lt;/strong&gt; kodlari hamda &lt;code&gt;NUL&lt;/code&gt; belgisi ekranga chiqadi.&lt;/p&gt;

&lt;h2&gt;
  
  
  String uzunligi
&lt;/h2&gt;

&lt;p&gt;C tilida massivning uzunligini aniqlash muammosi mavjud. &lt;code&gt;string&lt;/code&gt; ham aslida belgilar massividir. Keling &lt;code&gt;string&lt;/code&gt; turidagi o'zgaruvchi uzunligini aniqlaymiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;string_length&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Foydalanuvchining ismini so'rash&lt;/span&gt;
    &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Name: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;string_length&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%i&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;string_length&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Belgilar sonini NUL belgisigacha hisoblash&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sc"&gt;'\0'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bunda &lt;code&gt;string&lt;/code&gt; turidagi &lt;code&gt;name&lt;/code&gt; o'zgaruvchisining uzunligi &lt;code&gt;NUL&lt;/code&gt; belgisi topilgunga qadar hisoblanyabdi.&lt;br&gt;
Bu dasturlashda juda keng tarqalgan muammo bo'lganligi sababli, boshqa dasturchilar &lt;code&gt;string&lt;/code&gt; uzunligini hisoblashni osonlashtirish uchun &lt;code&gt;string.h&lt;/code&gt; kutubxonasida tayyor &lt;code&gt;strlen&lt;/code&gt; funksiyasini yaratganlar va biz uni shunchaki chaqirib ishlatishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Foydalanuvchining ismini so'rash&lt;/span&gt;
    &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Name: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;strlen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%i&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;string.h&lt;/code&gt; kutubxonasi kodning yuqori qismida e'lon qilingan va foydalanuvchi kiritgan &lt;code&gt;name&lt;/code&gt; o'zgaruvchisining uzunligini hisoblash uchun tayyor &lt;code&gt;strlen&lt;/code&gt; funksiyasidan foydalanilyabdi.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ushbu maqolada &lt;a href="https://cs50.harvard.edu/x/2024" rel="noopener noreferrer"&gt;CS50x 2024&lt;/a&gt; manbasidan foydalanilgan.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>cs50</category>
      <category>programming</category>
      <category>c</category>
      <category>learning</category>
    </item>
    <item>
      <title>CS50 - Week 1</title>
      <dc:creator>Dilbar</dc:creator>
      <pubDate>Fri, 07 Jun 2024 11:20:11 +0000</pubDate>
      <link>https://dev.to/udilbar/cs50-week-1-4p7i</link>
      <guid>https://dev.to/udilbar/cs50-week-1-4p7i</guid>
      <description>&lt;p&gt;&lt;strong&gt;بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم&lt;/strong&gt;&lt;br&gt;
Mashinalar faqat binarni tushunadi. Biz kompyuter uchun biror-bir inson o'qiy oladigan ko'rsatmalar ro'yxatini yozganimizda, mashinalar faqat biz hozir &lt;em&gt;mashina kodi&lt;/em&gt; deb ataydigan narsani tushunadilar. Bu mashina kodi faqat 1 va 0 lardan iboratdir.&lt;br&gt;
&lt;strong&gt;Kompilyator&lt;/strong&gt; deb ataladigan maxsus dastur yordamida dastlabki kodni mashina kodiga aylantira olamiz.&lt;/p&gt;

&lt;p&gt;Yaxshi kodni 3 asosga ko'ra baholashimiz mumkin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;to'g'rilik (&lt;em&gt;kod istalgan natijani beryabdimi?&lt;/em&gt;),&lt;/li&gt;
&lt;li&gt;dizayni (&lt;em&gt;kod dizayni yoki strukturasi yaxshi tuzilganmi?&lt;/em&gt;),&lt;/li&gt;
&lt;li&gt;stil (&lt;em&gt;kod qanchalik chiroyli ko'rinishda yozilgan?&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Salom, dunyo!
&lt;/h2&gt;

&lt;p&gt;C dasturlash tilida ekranga biror-bir matnni chiqarmoqchi bo'lsak, &lt;code&gt;printf&lt;/code&gt; funksiyasidan foydalanamiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"salom, dunyo&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;printf&lt;/code&gt; funksiyasi &lt;em&gt;&lt;code&gt;salom, dunyo&lt;/code&gt;&lt;/em&gt; matnini ekranga chiqaradi. Undagi maxsus &lt;code&gt;\&lt;/code&gt; belgisi kompilyatorga keyingi keladigan belgi maxsus ko'rsatma ekanligini anglatadi. Undan keyin kelayotgan &lt;code&gt;n&lt;/code&gt; belgisi esa &lt;em&gt;"new line"&lt;/em&gt; (&lt;em&gt;yangi qator&lt;/em&gt;) belgisini bildiradi.&lt;br&gt;
Kodning birinchi qatoridagi ifoda &lt;code&gt;stdio.h&lt;/code&gt; nomli kutubxona imkoniyatlaridan foydalanmoqchi ekanligimizni bildiruvchi juda maxsus buyruqdir. Bu kutubxona bizga &lt;code&gt;printf&lt;/code&gt; funksiyasidan foydalanish imkonini beradi.&lt;br&gt;
&lt;strong&gt;Kutubxonalar&lt;/strong&gt; - bu bizning kodimizda foydalanishimiz mumkin bo'lgan tayyor funktsiyalar to'plamidir.&lt;/p&gt;
&lt;h2&gt;
  
  
  O'zgaruvchilar
&lt;/h2&gt;

&lt;p&gt;Keling, foydalanuvchidan uning ismi nima ekanligini so'rab, unga salom beruvchi kodni C tilida yozamiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Ismingiz nima? "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Assalomu alaykum, %s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;answer&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CS50 kursi uchun maxsus ishlab chiqilgan &lt;code&gt;cs50.h&lt;/code&gt; kutubxonasi imkoniyatlaridan ushbu kurs davomida foydalaniladi. Ulardan biri &lt;code&gt;get_string&lt;/code&gt; funksiyasidir. &lt;code&gt;get_string&lt;/code&gt; funksiyasi foydalanuvchi kiritgan matnni olish uchun ishlatiladi.&lt;br&gt;
&lt;code&gt;answer&lt;/code&gt; - bu biz o'zgaruvchi deb ataydigan maxsus foydalanuvchi kiritadigan matnni eslab qolish uchun ajratilgan joy. &lt;code&gt;answer&lt;/code&gt; &lt;em&gt;string&lt;/em&gt; turiga kiradi. Shuningdek, undan tashqari &lt;em&gt;int&lt;/em&gt;, &lt;em&gt;bool&lt;/em&gt;, &lt;em&gt;char&lt;/em&gt; va boshqalar kabi ko'plab ma'lumotlar turlari mavjud.&lt;br&gt;
&lt;code&gt;%s&lt;/code&gt; - bu &lt;code&gt;printf&lt;/code&gt; funksiyasiga qandaydir &lt;code&gt;string&lt;/code&gt; turidagi o'zgaruvchini qabul qilib olishga tayyorgarlik ko'rishini bildiruvchi &lt;em&gt;format kodi&lt;/em&gt; deb ataladigan to'ldiruvchidir.&lt;br&gt;
Shuningdek, boshqa ma'lumot turlari uchun ham format kodlari mavjud, masalan:&lt;br&gt;
&lt;code&gt;%i&lt;/code&gt; - &lt;em&gt;int&lt;/em&gt; (butun sonlar) uchun.&lt;/p&gt;
&lt;h2&gt;
  
  
  Shart operatorlari
&lt;/h2&gt;

&lt;p&gt;Keling, foydalanuvchidan &lt;code&gt;int&lt;/code&gt; turidagi &lt;code&gt;x&lt;/code&gt; va &lt;code&gt;y&lt;/code&gt; o'zgaruvchilarini kiritishini so'rab, kiritilgan sonlarni bir-biri bilan solishtiramiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"x ni kiriting: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"y ni kiriting: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"x soni y sonidan kichik&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu yerda biz &lt;code&gt;int&lt;/code&gt; (&lt;em&gt;butun son&lt;/em&gt;) turidagi ikkita o'zgaruvchini, &lt;code&gt;x&lt;/code&gt; va &lt;code&gt;y&lt;/code&gt; o'zgaruvchilarini yaratyabmiz. Ularning qiymatlari &lt;code&gt;cs50.h&lt;/code&gt; kutubxonasining &lt;code&gt;get_int&lt;/code&gt; funksiyasi yordamida to'ldiriladi. Shart operatori yordamida &lt;code&gt;x&lt;/code&gt; va &lt;code&gt;y&lt;/code&gt; qiymatlarini bir-biriga solishtirib, natijaga qarab ekranga xabar chiqaryabmiz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blok-sxema&lt;/strong&gt; - kompyuter dasturi qanday ishlashini tekshirishimiz mumkin bo'lgan usuldir. Bu usul yordamida biz kodimizning samaradorligini tekshirishimiz mumkin.&lt;br&gt;
Yuqoridagi kodimizning blok-sxemasini ko'ramiz:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frmdmtj69443dbvqoos8i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frmdmtj69443dbvqoos8i.png" alt="Conditional 1" width="765" height="785"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dasturni quyidagi tarzda kodlash orqali yaxshilashimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"x ni kiriting: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"y ni kiriting: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"x soni y sonidan kichik&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"x soni y sonidan katta&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"x soni y soniga teng&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Endi barcha mumkin bo'lgan holatlar hisobga olinadi. Uning blok-sxemasini ko'ramiz:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokdsr438q6shdkm5w74r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokdsr438q6shdkm5w74r.png" alt="Conditional 2" width="800" height="636"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Takrorlash operatorlari
&lt;/h2&gt;

&lt;p&gt;Keling, 3 marta ekranga &lt;em&gt;"meow"&lt;/em&gt; xabarini chiqaramiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"meow&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"meow&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"meow&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yozgan kodimiz to'g'ri ishlaydi, lekin undagi takrorlanishlarni oldini olib, dasturimizni quyidagicha yaxshilashimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"meow&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bunda &lt;code&gt;int&lt;/code&gt; turidagi &lt;code&gt;i&lt;/code&gt; o'zgaruvchisi yaratilib, unga 3 qiymati berilgan. Keyin &lt;code&gt;i &amp;lt; 3&lt;/code&gt; bo'lgan vaqt davom etadigan &lt;code&gt;while&lt;/code&gt; sikli yaratilgan. Har safar &lt;code&gt;i++&lt;/code&gt; ifodasi yordamida &lt;code&gt;i&lt;/code&gt; sonimiz bittaga oshib boradi va qachonki &lt;code&gt;i = 3&lt;/code&gt; bo'lganida sikl to'xtaydi.&lt;br&gt;
&lt;code&gt;for&lt;/code&gt; sikli yordamida dasturimiz dizaynini yanada yaxshilashimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"meow&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;for&lt;/code&gt; sikli uchta argumentni o'z ichiga oladi.&lt;br&gt;
Birinchi argument: &lt;code&gt;int i = 0&lt;/code&gt; hisoblagichimizni noldan boshlaydi.&lt;br&gt;
Ikkinchi argument: &lt;code&gt;i &amp;lt; 3&lt;/code&gt; - tekshirilayotgan shart.&lt;br&gt;
Nihoyat, &lt;code&gt;i++&lt;/code&gt; argumenti har safar &lt;code&gt;i&lt;/code&gt; sonimiz bittaga oshishini bildiradi.&lt;br&gt;
Biz o'zimizning funksiyamizni yaratishimiz ham mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;meow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"meow&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;void&lt;/code&gt; - funktsiya hech qanday qiymat qaytarmasligini bildiradi. Qavslar ichidagi &lt;code&gt;(void)&lt;/code&gt; - funktsiya hech qanday parametr qabul qilmasligini bildiradi.&lt;br&gt;
Ushbu yaratgan &lt;code&gt;meow&lt;/code&gt; funksiyamizni asosiy funksiya ichida ishlatamiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;meow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;meow&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;meow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"meow&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;meow&lt;/code&gt; funksiyasini asosiy funksiya ichida chaqira olishimiz uchun funksiya prototipi kodning yuqori qismida &lt;code&gt;void meow(void)&lt;/code&gt; sifatida berilgan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Arifmetik operatorlar va akstraksiya
&lt;/h2&gt;

&lt;p&gt;Keling, C tilida kalkulyator yasaymiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// x qiymati kiritilsin&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"x: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// y qiymati kiritilsin&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"y: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Qo'shish amalini bajarish&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%i&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;get_int&lt;/code&gt; funktsiyasi yordamida foydalanuvchidan butun son bo'lgan &lt;code&gt;x&lt;/code&gt; va &lt;code&gt;y&lt;/code&gt; o'zgaruvchilariga qiymat berishi so'ralyabdi. Keyin &lt;code&gt;printf&lt;/code&gt; funksiyasi butun son uchun format kodi - &lt;code&gt;%i&lt;/code&gt; belgisi yordamida &lt;code&gt;x + y&lt;/code&gt; qiymatini chop etadi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arifmetik operatorlar&lt;/strong&gt; kompilyator tomonidan qo'llab-quvvatlanadigan matematik operatsiyalardir. C tilida arifmetik operatorlarga quyidagilar kiradi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;+&lt;/code&gt; - qo'shish uchun;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-&lt;/code&gt; - ayirish uchun;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*&lt;/code&gt; - ko'paytirish uchun;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt; - bo'linish uchun;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;%&lt;/code&gt; - bir sonni ikkinchi songa bo'lgandagi qoldiqni hisoblash uchun.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Abstraksiya&lt;/strong&gt; - bu muammoni kichik-kichik bo'laklarga bo'lib hal qilish orqali kodimizni soddalashtirish san'ati.&lt;br&gt;
Biz yuqoridagi kodimizni quyidagicha abstraktlashimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// x qiymati kiritilsin&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"x: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// y qiymati kiritilsin&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"y: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Qo'shish amalini bajarish&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%i&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bunda parametr sifatida &lt;code&gt;a&lt;/code&gt; va &lt;code&gt;b&lt;/code&gt; butun sonlarini qabul qilib oladigan va ularning yig'indisini qaytaradigan alohida &lt;code&gt;add&lt;/code&gt; funksiyasi e'lon qilingan va asosiy funksiya ichida argument sifatida &lt;code&gt;x&lt;/code&gt; va &lt;code&gt;y&lt;/code&gt; butun sonlarini olib &lt;code&gt;add(x, y)&lt;/code&gt; funksiyamiz chaqirilyabdi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kommentlar (izohlar)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kommentlar&lt;/strong&gt; - kompyuter dasturining asosiy qismlari bo'lib, yozgan kodimiz nima vazifa bajarayotganini ifodalovchi, boshqa dasturchilarga, shuningdek o'zimizga tushunarli hamda qisqa qilib qoldirgan izohlarimizdir. Kommentni yozish uchun shunchaki ikkita &lt;code&gt;//&lt;/code&gt; beligisidan foydalanamiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cs50.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Musbat butun son kiritilsin&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Musbat butun son kiriting: "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Ma'lumot turlari
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ma'lumotlar turlari&lt;/strong&gt; o'zgaruvchida saqlanishi mumkin bo'lgan ma'lumotlar turini belgilaydi. Misol uchun, o'zgaruvchilar raqamlar, belgilar yoki mantiqiy qiymatlarni saqlashi mumkin. O'zgaruvchining turi kompyuterga ushbu ma'lumotlarni qanday boshqarishni aytadi.&lt;br&gt;
C tilidagi umumiy maʼlumotlar turlari:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;bool&lt;/code&gt;: &lt;em&gt;rost&lt;/em&gt; (&lt;code&gt;true&lt;/code&gt;) yoki &lt;em&gt;yolg'on&lt;/em&gt; (&lt;code&gt;false&lt;/code&gt;) kabi mantiqiy qiymatlarni saqlashi mumkin.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;char&lt;/code&gt;: faqat bitta belgini saqlashi mumkin.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;float&lt;/code&gt;: o'nlik qiymatlari bo'lgan haqiqiy son.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;int&lt;/code&gt;: kasrsiz butun son.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;long&lt;/code&gt;: &lt;code&gt;int&lt;/code&gt; dan kattaroq butun sonni saqlashi mumkin, chunki u ko'proq bit ishlatadi.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;string&lt;/code&gt;: belgilar ketma-ketligini saqlashi mumkin (masalan, so'z).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Har bir turning o'ziga xos chegaralari bor. Misol uchun, xotiradagi cheklovlar tufayli &lt;code&gt;int&lt;/code&gt; ning eng yuqori qiymati 4294967295 bo'lishi mumkin. Agar biz &lt;code&gt;int&lt;/code&gt; ni uning eng yuqori qiymatidan o'tkazib sanashga harakat qilsak, bu o'zgaruvchida noto'g'ri qiymat saqlanishiga (&lt;em&gt;integer overflow&lt;/em&gt;) olib keladi.&lt;br&gt;
Xotirani noto'g'ri ishlatish kodimizdagi xatolar yoki muammolarga olib kelishi mumkin. Muammolarni oldini olish uchun biz to'g'ri ma'lumot turidan foydalanayotganimizga ishonch hosil qilishimiz kerak.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ushbu maqolada &lt;a href="https://cs50.harvard.edu/x/2024" rel="noopener noreferrer"&gt;CS50x 2024&lt;/a&gt; manbasidan foydalanilgan.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>cs50</category>
      <category>c</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>CS50 - Week 0</title>
      <dc:creator>Dilbar</dc:creator>
      <pubDate>Tue, 02 Apr 2024 18:10:59 +0000</pubDate>
      <link>https://dev.to/udilbar/cs50-week-0-4eo0</link>
      <guid>https://dev.to/udilbar/cs50-week-0-4eo0</guid>
      <description>&lt;p&gt;&lt;strong&gt;بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Garvard universiteti tomonidan taqdim etilgan o'sha mashhur kurs -  &lt;a href="https://www.edx.org/learn/computer-science/harvard-university-cs50-s-introduction-to-computer-science" rel="noopener noreferrer"&gt;CS50&lt;/a&gt; kursini o'rganishni boshladim. O'rganish davomida o'rganganlarim, kerakli deb hisoblagan ma'lumotlarni sizlar bilan bo'lishib bormoqchiman. Ushbu kursda amerikalik professor &lt;a href="https://en.wikipedia.org/wiki/David_J._Malan" rel="noopener noreferrer"&gt;David J.Malan&lt;/a&gt; tomonidan dasturlash tushunchalari, algoritmlar, ma'lumot tuzilmalari va umuman, kompyuterlar qanday paydo bo'lib, hozirgi holatga qanday kelib qolgan, barchasi aniq misollar bilan juda qiziqarli usulda tushuntirilgan.&lt;/p&gt;

&lt;p&gt;Demak, boshladik!&lt;/p&gt;

&lt;h2&gt;
  
  
  Dasturlash
&lt;/h2&gt;

&lt;p&gt;Dasturlash - bu kirish (&lt;em&gt;input&lt;/em&gt;) ma'lumotini olib unga mos natija (&lt;em&gt;output&lt;/em&gt;) yaratish, umuman olganda qandaydir mavjud muammoni yechish hisoblanadi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcy00fu2lyopejuo4peqx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcy00fu2lyopejuo4peqx.png" alt="Programming" width="747" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ikkilik sanoq sistemasi
&lt;/h2&gt;

&lt;p&gt;Bugungi kunda kompyuterlar ikkilik &lt;em&gt;(binary)&lt;/em&gt; deb ataladigan sanoq sistemasidan foydalanadi. &lt;em&gt;Bit&lt;/em&gt; - ikkilik sanoq sistemasidagi raqamdir. Bir bit - o'chiq yoki yoniqlikni beradi.&lt;br&gt;
Kompyuterlar faqat nol va birlar shaklida gaplashadi. Nol - o'chiqni, birlar esa yoniqlikni ifodalaydi. Kompyuterlarda millionlab, milliardlab shunday o'chiq yoki yoniq bo'lgan tranzistorlar ishlatilinadi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrs8couy7emqcbsxhngv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrs8couy7emqcbsxhngv.png" alt="Binary system" width="681" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kompyuterlar raqamni ifodalash uchun sakkiz bit (&lt;em&gt;bayt&lt;/em&gt;) dan foydalanadi. Masalan, &lt;em&gt;00000111&lt;/em&gt; ikkilik sanoq sistemada &lt;em&gt;7&lt;/em&gt; raqamini beradi. &lt;em&gt;11111111&lt;/em&gt; esa &lt;em&gt;255&lt;/em&gt; raqamini bildiradi.&lt;/p&gt;

&lt;h2&gt;
  
  
  ASCII (American Standard Code for Information Interchange)
&lt;/h2&gt;

&lt;p&gt;Raqamlar birlar va nollar yordamida ikkilik sanoq sistemasida ifodalangani kabi, harflar ham bir va nol yordamida ifodalanadi! Raqamlar va harflarni ifodalovchi birlar va nollar o'rtasida o'xshashlik mavjudligi sababli, &lt;em&gt;ASCII&lt;/em&gt; &lt;em&gt;standarti&lt;/em&gt; yaratilingan.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdjq41wvau9duln0jwa8u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdjq41wvau9duln0jwa8u.png" alt="ASCII" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Misol uchun, ushbu standartga ko'ra &lt;em&gt;A&lt;/em&gt; harfi &lt;em&gt;65&lt;/em&gt; raqami bilan belgilashga kelishilingan. Bu ikkilik sanoq sistemasida &lt;em&gt;01000001&lt;/em&gt; ni ifodalaydi. Ikkilik sanoq tizimi bilan faqat &lt;em&gt;255&lt;/em&gt; gacha hisoblash mumkinligi sababli &lt;em&gt;ASCII&lt;/em&gt; bilan ifodalash mumkin bo'lgan belgilar soni cheklangan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unicode
&lt;/h2&gt;

&lt;p&gt;Ikkilik sanoq tizimida 8 bitlikda odamlar tomonidan ifodalanishi mumkin bo'lgan barcha turli belgilarni ifodalash uchun raqamlar yetarli emasligi sababli, &lt;em&gt;Unicode standarti&lt;/em&gt; kompyuterlar tomonidan uzatilishi va tushunilishi mumkin bo'lgan bitlar sonini kengaytirdi. &lt;em&gt;Unicode&lt;/em&gt; nafaqat maxsus belgilarni, balki emojilarni ham o'z ichiga oladi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcidohxrymqdg47gxbhjt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcidohxrymqdg47gxbhjt.png" alt="Unicode" width="437" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rangni ifodalash uchun ham nol va birlardan foydalanish mumkin.&lt;br&gt;
&lt;strong&gt;RGB&lt;/strong&gt; - qizil (&lt;em&gt;red&lt;/em&gt;), yashil (&lt;em&gt;green&lt;/em&gt;) va ko'k (&lt;em&gt;blue&lt;/em&gt;) uchta raqamning kombinatsiyasidir.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpsrj5h4gvyrlbvx786f5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpsrj5h4gvyrlbvx786f5.png" alt="rgb" width="209" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shuningdek, rasmlar oddiygina &lt;em&gt;RGB&lt;/em&gt; qiymatlari to'plamidir.&lt;br&gt;
Videolar esa ko'plab tasvirlar ketma-ketligidir.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Ushbu maqolada &lt;a href="https://cs50.harvard.edu/x/2024" rel="noopener noreferrer"&gt;CS50x 2024&lt;/a&gt; manbasidan foydalanilgan.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>cs50</category>
      <category>programming</category>
    </item>
    <item>
      <title>Algoritmni optimallashritish usullari</title>
      <dc:creator>Dilbar</dc:creator>
      <pubDate>Sun, 09 Jul 2023 10:00:19 +0000</pubDate>
      <link>https://dev.to/udilbar/algoritmni-optimallashritish-usullari-3j0e</link>
      <guid>https://dev.to/udilbar/algoritmni-optimallashritish-usullari-3j0e</guid>
      <description>&lt;p&gt;Intervyuda beriladigan masalalarni yechishda avvalambor, &lt;em&gt;"Brute Force"&lt;/em&gt;, ya'ni unchalik optimal bo'lmagan, lekin ishlaydigan yechim berish kerak. Keyinchalik shu &lt;em&gt;"Brute Force"&lt;/em&gt; yechimni qanday qilib optimallashtirish mumkin? Aslida sizni intervyu qiladigan odam ham shuni kutib turadi va ko'p hollarda optimal yechimga olib boradigan ishoralar berishga harakat qiladi.&lt;br&gt;
Buning birinchi usullaridan biri: &lt;strong&gt;"BUD"&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  BUD usuli
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;BUD&lt;/strong&gt; - quyidagi so'zlarning bosh harflaridan tuzilgan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;B&lt;/strong&gt;ottlenecks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;U&lt;/strong&gt;nnecessary work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;D&lt;/strong&gt;uplicated work&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;"Bottlenecks"&lt;/strong&gt; - to'siqlar. Bu algoritm hisoblanishiga ketadigan vaqtni sekinlashtirayotgan qismidir.&lt;br&gt;
Masalan: bizda mavjud ko'p qismli algoritmning 1-qismi berilgan massivni saralasin, 2-qismi esa saralangan massivdan ma'lum bir elementni topsin. Algoritm hisoblanishiga ketadigan vaqt 1-qismda &lt;code&gt;O(n*log(n))&lt;/code&gt;, 2-qismda &lt;code&gt;O(n)&lt;/code&gt; bo'lsin. Ko'rinib turibdiki, algorimning 1-qismi algoritm hisoblanish vaqtini sekinlashtiryapti. Agar biz uni optimallashtiradigan bo'lsak, algoritmni optimallashtirgan bo'lamiz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fped6h72u9w1iiu8h9vp3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fped6h72u9w1iiu8h9vp3.png" alt="O(n) vs O(n*log(n))" width="400" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Masala:&lt;/strong&gt;&lt;br&gt;
Butun sonlardan tashkil topgan va bo'sh bo'lmagan massiv berilgan bo'lsin. Massivda bir elementdan tashqari har bir element ikki martadan qatnashadi. Takrorlanmagan elementni topish va uni qaytarish kerak.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yechish:&lt;/strong&gt;&lt;br&gt;
Birinchi bo'lib hayolga keladigan yechim quyidagicha bo'lishi mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;singleNumber&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Demak, biz avvalambor berilgan massivimizni o'sish tartibida saralab oldik. JavaScriptning &lt;code&gt;sort()&lt;/code&gt; metodi &lt;code&gt;O(n*log(n))&lt;/code&gt; o'rtacha hisoblash vaqtiga ega, bu yerda &lt;code&gt;n&lt;/code&gt; massiv uzunligidir. Keyingi sikl esa har bir elementni tekshiradi va agar massiv elementi undan oldingi va keyingi elementlarga teng bo'lmasa, shu elementni qaytaradi. Bu sikl &lt;code&gt;O(n)&lt;/code&gt; chiziqli hisoblash vaqtiga  ega.&lt;br&gt;
Funksiyaning umumiy hisoblash vaqti &lt;code&gt;O(n*log(n)) + O(n)&lt;/code&gt; bo'lib, &lt;code&gt;O(n*log(n))&lt;/code&gt;ga soddalashadi. Bu funksiyamizdagi hisoblash vaqtini sekinlashtirayotgan qismi - massivni saralagan qismimizdir. Umuman olganda, bizga massivni saralashimiz kerakmi? Masalani massivni saralamasdan ham yecha olamizmi?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fha7nac89t4hd5ni6apuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fha7nac89t4hd5ni6apuf.png" alt="Thinking meme" width="300" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Endi &lt;em&gt;"Brute Force"&lt;/em&gt; yechimimizni optimallashtirishga o'tamiz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;singleNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;singleNum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;singleNum&lt;/span&gt; &lt;span class="o"&gt;^=&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;singleNum&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ushbu optimallashtirilgan algoritmimizda biz massivning har bir elementini ko'rib chiqyapmiz va bitli &lt;em&gt;XOR&lt;/em&gt; operatoridan &lt;code&gt;^&lt;/code&gt; foydalangan holda &lt;code&gt;singleNum&lt;/code&gt; o'zgaruvchimizga qo'shib bormoqdamiz. Raqamni o'zi bilan &lt;em&gt;XOR&lt;/em&gt; lash 0 qiymatini beradi, shuning uchun takroriy raqamlar mavjud bo'lganda, ular 0 bo'lib ketadi va faqatgina takrorlanmagan raqam qoladi. Bu esa umumiy &lt;code&gt;O(n)&lt;/code&gt; hisoblash vaqtini oladi.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Unnecessary work&lt;/strong&gt; - keraksiz ish. Biz algoritmimizda biror-bir keraksiz ishni amalga oshiryapmizmi?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Masala:&lt;/strong&gt;&lt;br&gt;
Quyidagi ikki xususiyatga ega (m x n) butun sonlar matritsasi berilgan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Har bir qator kamaymaydigan tartibda tartiblangan.&lt;/li&gt;
&lt;li&gt;Har bir satrning birinchi butun soni oldingi qatorning oxirgi butun sonidan kattaroqdir.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Masalan:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0i4xiprb64booyddgape.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0i4xiprb64booyddgape.jpg" alt="Sorted matrix" width="322" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Butun son &lt;code&gt;target&lt;/code&gt; berilgan bo'lsa, agar &lt;code&gt;target&lt;/code&gt; matritsada bo'lsa, &lt;code&gt;true&lt;/code&gt;, aks holda &lt;code&gt;false&lt;/code&gt; qaytarish kerak.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yechish:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"Brute Force"&lt;/em&gt; yechim quyidagicha bo'lishi mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;searchMatrix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bunda biz matritsani har bir elementini berilgan &lt;code&gt;target&lt;/code&gt;ga teng yoki teng emasligini tekshirish uchun ichma-ich &lt;code&gt;for&lt;/code&gt; sikllaridan foydalanyapmiz. Bu algoritmning hisoblash vaqti &lt;code&gt;O(m*n)&lt;/code&gt;, m - matritsaning qatorlar soni, n - matritsaning ustunlari soni. Aslida, keraksiz ishni amalga oshiryapmiz. Bizga matritsa elementlari ma'lum bir tartibda saralangani haqidagi ma'lumotdan foydalanmayapmiz, ya'ni keraksiz ishni bajaryabmiz.&lt;br&gt;
Matritsaning elementlari ma'lum bir qoida asosida saralangani haqidagi ma'lumotni inobatga olib, biz quyidagi yechimni berishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;searchMatrix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;numRows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;numCols&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;numRows&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;numCols&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;midElement&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;numCols&lt;/span&gt;&lt;span class="p"&gt;)][&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;numCols&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;midElement&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;midElement&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ma'lumki, saralangan massivdan biror-bir elementni topish uchun &lt;em&gt;"Binary search"&lt;/em&gt; algoritmidan foydalanish samaralidir. Ushbu yondashuvda element har doim massivning o'rtasidan qidiriladi. Bizda matritsa bo'lganligi uchun matritsaning o'rta elementini topish hisob-kitoblarimiz biroz boshqacharoq bo'ladi. Agar matritsaning o'rta elementi qidirilayotgan elementdan kichik bo'lsa bizga matritsaning o'rta elementidan chap qismi kerak emas, ularni tashlab yuborsak bo'ladi. Agar matritsaning o'rta elementi qidirilayotgan elementdan katta bo'lsa bizga matritsaning o'rta elementidan o'ng qismi kerak emas, ularni tashlab yuborsak bo'ladi. Shunday yo'l bilan biz matritsadan ma'lum bir elementni qidirishni optimallashtirdik. Bunda algoritm hisoblanishiga ketadigan vaqt &lt;code&gt;O(log(m*n))&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Duplicated work&lt;/strong&gt; - takroriy ish. Algoritmda biror-bir ishni takroran bajaryapmizmi?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Masala:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;n&lt;/code&gt;-chi &lt;code&gt;fibonacci&lt;/code&gt; sonini qaytaring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yechim:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ushbu funksiya &lt;code&gt;fibonacci&lt;/code&gt; sonlar ketma-ketligidan &lt;code&gt;n&lt;/code&gt;-sonni qaytaradi. Bu sonlar ketma-ketligi - har bir raqam oldingi ikkitasining yig'indisi bo'lgan raqamlar qatoridir. U 0 va 1 dan boshlanadi va keyingi raqamlar oldingi ikkita raqamni qo'shish orqali hosil bo'ladi. Masalan:&lt;br&gt;
&lt;code&gt;0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...&lt;/code&gt;&lt;br&gt;
Biroq, buni amalga oshirishda, funktsiya bir xil &lt;code&gt;fibonacci&lt;/code&gt; raqamlarini bir necha marta qayta-qayta hisoblab chiqadi, ya'ni takroriy ishni bajaryapmiz. Algoritm hisoblanishiga ketadigan vaqt &lt;code&gt;O(2^n)&lt;/code&gt;. Uni qanday optimallashtirishimiz mumkin?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u43qr7m4qewbra42tu0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u43qr7m4qewbra42tu0.png" alt="Thinking meme" width="320" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Biz qo'shimcha xotiradan foydalanishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;memo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fibonacciHelper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;memo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;fibonacciHelper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;memo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;memo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;memo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nx"&gt;memo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fibonacciHelper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;memo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;fibonacciHelper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;memo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;memo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;fibonacciHelper&lt;/code&gt; funksiyasi argument sifatida &lt;code&gt;n&lt;/code&gt; va &lt;code&gt;memo&lt;/code&gt;ni qabul qiluvchi rekursiv yordamchi funksiyadir. &lt;code&gt;fibonacciHelper&lt;/code&gt; funktsiyasi ichida biz  berilgan &lt;code&gt;n&lt;/code&gt; uchun &lt;code&gt;fibonacci&lt;/code&gt; raqami &lt;code&gt;memo&lt;/code&gt; ob'ektida mavjudligini tekshiramiz. Agar u mavjud bo'lsa, biz &lt;code&gt;memo&lt;/code&gt; ob'ektidan oldindan hisoblangan qiymatni qaytaramiz. Agar &lt;code&gt;fibonacci&lt;/code&gt; raqami &lt;code&gt;memo&lt;/code&gt; ob'ektida mavjud bo'lmasa, u &lt;code&gt;fibonacci&lt;/code&gt; raqamini rekursiv hisoblab chiqadi. Hisoblangan &lt;code&gt;fibonacci&lt;/code&gt; raqami keyinchalik ma'lumot sifatida &lt;code&gt;memo&lt;/code&gt; ob'ektida saqlanadi va qaytariladi.&lt;br&gt;
Qo'shimcha xotiradan foydalangan holda oldindan hisoblangan &lt;code&gt;fibonacci&lt;/code&gt; raqamlarini saqlash orqali takroriy ishlarni oldini olamiz. Bu &lt;code&gt;fibonacci&lt;/code&gt; hisobining samaradorligini sezilarli darajada yaxshilaydi. Algoritm hisoblanishiga ketadigan vaqt &lt;code&gt;O(n)&lt;/code&gt;. Bu yaxshilanishga avvaldan hisoblangan &lt;code&gt;fibonacci&lt;/code&gt; raqamlarini saqlash yordamida ortiqcha hisob-kitoblarni yo‘q qilish orqali erishildi.&lt;/p&gt;




&lt;h2&gt;
  
  
  Xulosa:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;BUD&lt;/strong&gt; optimallashtirish usuli - "to'siqlar, keraksiz ish va takroriy ish" degan ma'noni anglatadi va algoritmlar yoki kodlardagi samarasizlikni aniqlash va bartaraf etish uchun ishlatiladigan printsipdir. Ushbu usul &lt;em&gt;"Brute Force"&lt;/em&gt; yechimini ishlab chiqqandan keyingi birinchi variantlardan biri bo'lishi kerak. Chunki u algoritmning hisoblash vaqtini yaxshilash usullarini aniqlashga qaratilgandir.&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>javascript</category>
      <category>interview</category>
    </item>
    <item>
      <title>"Big O" haqida gaplashamiz</title>
      <dc:creator>Dilbar</dc:creator>
      <pubDate>Wed, 05 Jul 2023 05:03:04 +0000</pubDate>
      <link>https://dev.to/udilbar/big-o-haqida-gaplashamiz-4ni9</link>
      <guid>https://dev.to/udilbar/big-o-haqida-gaplashamiz-4ni9</guid>
      <description>&lt;h2&gt;
  
  
  Big O - nima?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Big O&lt;/strong&gt; - bu yozilgan algoritm qanchalik samaradorligini aniqlovchi o'lchov. Bu o'lchov algoritmga kiruvchi qiymatlar o'sib borishi bilan algoritm hisoblanishiga ketadigan vaqt yoki maydon qanday o'zgarishini taqribiy ko'rsatadi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O(1)&lt;/strong&gt; - algoritmga kiruvchi qiymatlar o'sib borsa ham, algoritm hisoblanishiga ketadigan vaqt yoki maydon o'zgarmasdan qolishini anglatadi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F24y6gxcytis8qeedtdmc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F24y6gxcytis8qeedtdmc.png" alt="O(1)" width="700" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function addValues(a, b) {
  return a + b;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ushbu &lt;code&gt;addValues&lt;/code&gt; funksiyasi &lt;code&gt;a&lt;/code&gt; va &lt;code&gt;b&lt;/code&gt; o'zgaruvchilarini kiruvchi qiymatlar sifatida oladi va ularning yig'indisini qaytaradi. &lt;code&gt;a&lt;/code&gt; va &lt;code&gt;b&lt;/code&gt; o'zgaruvchilarining qiymati ortib borishi algoritm hisoblanishiga ketadigan vaqtga hech qanday ta'sir qilmaydi. Shuning uchun ushbu algoritm hisoblanishiga &lt;code&gt;O(1)&lt;/code&gt; vaqt talab qilinadi, hech qanday qo'shimcha joy ishlatilinmaganligi sababli algoritm talab qiladigan joy ham &lt;code&gt;O(1)&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;O(n)&lt;/strong&gt; - algoritmga kiruvchi qiymatlar o'sib borishi bilan algoritm hisoblanishiga ketadigan vaqt yoki maydon ham birdek o'sib borishini anglatadi.&lt;br&gt;
Masalan: Agar biz algoritmda &lt;code&gt;n&lt;/code&gt; o'lchamdagi massiv yaratsak, algoritm &lt;code&gt;O(n)&lt;/code&gt; joy talab qiladi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffhb7owp8osw7uy64bctz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffhb7owp8osw7uy64bctz.png" alt="O(n)" width="700" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function calculateSum(a) {
  let sum = 0;
  for (const value of a) {
    sum += value;
  }
  return sum;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ushbu algoritm &lt;code&gt;a&lt;/code&gt; massiv elementlarining yig'indisini qaytaradi. Massiv uzunligini &lt;code&gt;n&lt;/code&gt; deb belgilab oladigan bo'lsak, &lt;code&gt;n&lt;/code&gt; oshib borgani sari algoritm hisoblanishiga ketadigan vaqt - massivning har bir elementini &lt;code&gt;sum&lt;/code&gt; o'zgaruvchisiga qo'shish kerakligi sababli, u ham birdek oshib boradi. Shuning uchun, algoritm hisoblanishiga ketadigan vaqt &lt;code&gt;O(n)&lt;/code&gt;. Talab qilinadigan maydon esa faqat &lt;code&gt;sum&lt;/code&gt; o'zgaruvchisi e'lon qilinganligi sababli &lt;code&gt;O(1)&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;O(log(n))&lt;/strong&gt; - algoritmga kiruvchi qiymatlar o'sib borishi bilan algoritm hisoblanishiga ketadigan vaqt yoki maydon logarifmik ravishda o'sadi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fspc1g8x2le7qcbbr9y50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fspc1g8x2le7qcbbr9y50.png" alt="O(log(n))" width="800" height="473"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function powersOf2(n) {
  if (n &amp;lt; 1) {
    return 0;
  } else if (n === 1) {
    console.log(1);
    return 1;
  } else {
    let prev = powersOf2(Math.floor(n / 2));
    let curr = prev * 2;
    console.log(curr);
    return curr;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Berilgan funksiya &lt;code&gt;powersOf2&lt;/code&gt; berilgan &lt;code&gt;n&lt;/code&gt; sonigacha bo‘lgan 2 ning darajalarini hisoblab chiqadi va chop etadi. Rekursiv ravishda &lt;code&gt;n&lt;/code&gt; ni yarmiga bo'lish va har bir qadamda 2 ning oldingi darajasini 2 ga ko'paytirish orqali funktsiya &lt;code&gt;n&lt;/code&gt; ning berilgan qiymatiga qadar 2 ning darajasini hosil qiladi va chop etadi. Masalan: &lt;code&gt;n = 4&lt;/code&gt; bo'lganida funksiya quyidagicha ishlaydi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;powersOf2(4)
  -&amp;gt; powersOf2(2)
    -&amp;gt; powersOf2(1)
      -&amp;gt; chop etish va 1 ni qaytarish
    -&amp;gt; chop etish va 2 ni qaytarish
  -&amp;gt; chop etish va 4 ni qaytarish
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;n = 4 =&amp;gt; n = 2^2&lt;/code&gt; bo'lganida, funksiya 2 marta,&lt;br&gt;
&lt;code&gt;n = 8 =&amp;gt; n = 2^3&lt;/code&gt; bo'lganida, funksiya 3 marta,&lt;br&gt;
&lt;code&gt;n = 16 =&amp;gt; n = 2^4&lt;/code&gt; bo'lganida, funksiya 4 marta chaqirilyapti. Har 2 ning darajalarida funksiya 1ta ko'p chaqiriladi. Tenglikni ikkala tarafini logarifmlab yuborsak, kutgan natijamizga erishamiz:&lt;br&gt;
&lt;code&gt;n = 4 =&amp;gt; log(n) = log(2^2) =&amp;gt; log(n) = 2&lt;/code&gt;&lt;br&gt;
Demak, algoritm hisoblanishiga ketadigan vaqt &lt;code&gt;O(log(n))&lt;/code&gt; ekan. Algoritm hisoblanishiga ketadigan maydon ham funksiya har chaqirilganida avvalgi funksiya qaytargan qiymatni saqlab turishiga joy olganligi sababli &lt;code&gt;O(log(n))&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Algoritmga kiruvchi elementlar soni har safar algoritm ishga tushganida ikki baravar kamayadigan bo'lsa, bu algoritm hisoblanishiga ketadigan vaqt &lt;code&gt;O(log(n))&lt;/code&gt; bo'lishi mumkin.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;&lt;strong&gt;O(2^n)&lt;/strong&gt; - algoritmga kiruvchi qiymatlar o'sib borishi bilan algoritm hisoblanishiga ketadigan vaqt yoki maydon eksponensial ravishda ortib boradi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffgqtddig3eakf27ntuu3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffgqtddig3eakf27ntuu3.png" alt="O(2^n)" width="313" height="277"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function fibonacci(n) {
  if (n &amp;lt;= 0) return 0;
  else if (n === 1) return 1;
  return fibonacci(n - 1) + fibonacci(n - 2);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Berilgan funksiya &lt;code&gt;fibonacci&lt;/code&gt; sonlar ketma-ketligidan &lt;code&gt;n&lt;/code&gt;-sonni qaytaradi. Bu sonlar ketma-ketligi - har bir raqam oldingi ikkitasining yig'indisi bo'lgan raqamlar qatoridir. U 0 va 1 dan boshlanadi va keyingi raqamlar oldingi ikkita raqamni qo'shish orqali hosil bo'ladi. Masalan:&lt;br&gt;
&lt;code&gt;0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;n = 4&lt;/code&gt; bo'lganida funksiya quyidagicha ishlaydi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                             fibonacci(4)
                             /          \
                      fibonacci(3)   fibonacci(2)
                     /  \                     /  \
          fibonacci(2)  fibonacci(1) fibonacci(1) fibonacci(0)
             / \
   fibonacci(1) fibonacci(0)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;n = 1&lt;/code&gt; bo'lganida, funksiya 1 marta,&lt;br&gt;
&lt;code&gt;n = 2&lt;/code&gt; bo'lganida, funksiya 3 marta,&lt;br&gt;
&lt;code&gt;n = 3&lt;/code&gt; bo'lganida, funksiya 5 marta,&lt;br&gt;
&lt;code&gt;n = 4&lt;/code&gt; bo'lganida, funksiya 9 marta, &lt;br&gt;
&lt;code&gt;n = 5&lt;/code&gt; bo'lganida, funksiya 15 marta,&lt;br&gt;
&lt;code&gt;n = 6&lt;/code&gt; bo'lganida, funksiya 25 marta chaqirilyapti.&lt;br&gt;
Funksiya chaqiruvlari eksponensial o'sib bormoqda. U deyarlik &lt;code&gt;O((1.6)^n)&lt;/code&gt; ga yaqin. &lt;code&gt;1.6&lt;/code&gt; sonini taqriban &lt;code&gt;2&lt;/code&gt; ga teng deb olib, algoritm hisoblanishiga ketadigan vaqtni &lt;code&gt;O(2^n)&lt;/code&gt; deb olishimiz mumkin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtsnw32gy3736iy23l5z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtsnw32gy3736iy23l5z.png" alt="Big O Chart" width="800" height="518"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Big O qoidalari
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;O'zgarmaslarni tushirib qoldirish&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;O(n + n) = O(2*n)&lt;/code&gt; - quyidagicha vaqt talab qiluvchi algoritm aslida &lt;code&gt;O(n)&lt;/code&gt;. Bu yerdagi 2 soni o'zgarmas, ya'ni algoritmga kiruvchi qiymat ortib boragni sari u o'zgarmaydi. Shuning uchun uni bemalol tushirib qoldirish mumkin. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dominant bo'lmaganlarini tushirib qoldirish&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;O(n^2 + n ^2) = O(2 * n^2)&lt;/code&gt; - bundan 2 ni, ya'ni bitta &lt;code&gt;n^2&lt;/code&gt; ni tushirib qoldirishimiz mumkin (o'zgarmaslarni tushirib qoldirish qoidasiga ko'ra). &lt;br&gt;
&lt;code&gt;O(n^2 + n)&lt;/code&gt; - bu ifodadachi? Avvalgi ifodada bemalol bitta &lt;code&gt;n^2&lt;/code&gt; ni tushirib qoldirgan bo'lsak, bunisida &lt;code&gt;n&lt;/code&gt; ni ham tushirib qoldirishimiz mumkin. Chunki, u algoritmga kiruvchi qiymat oshib borgani sari &lt;code&gt;n^2&lt;/code&gt; chalik oshmaydi, uning o'zgarishi deyarli sezilarsiz.&lt;/p&gt;


&lt;h2&gt;
  
  
  Ko'p qismli algoritmlar
&lt;/h2&gt;

&lt;p&gt;Algoritm bir nechta qismli bo'lishi mumkin. Masalan, quyidagi algoritm 2 o'zgaruvchini oladi (&lt;code&gt;a&lt;/code&gt; va &lt;code&gt;b&lt;/code&gt; massivlarini) va ular ustida ishlaydi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function printElements(a, b) {
  for (const aValue of a) {
    console.log(aValue);
  }
  for (const bValue of b) {
    console.log(bValue);
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ushbu algoritmning hisoblanishiga ketadigan vaqtni aytishga shoshilmang. Birinchi for sikli &lt;code&gt;a&lt;/code&gt; massiv uzunligi - &lt;code&gt;A&lt;/code&gt; bo'yicha, ikkinchi &lt;code&gt;for&lt;/code&gt; sikli &lt;code&gt;b&lt;/code&gt; massiv uzunligi - &lt;code&gt;B&lt;/code&gt; bo'yicha vaqt sarflaydi. Avval &lt;code&gt;a&lt;/code&gt; massiviga, keyin &lt;code&gt;b&lt;/code&gt; massiviga murojaat qilinmoqda. Shuning uchun, bu yerda algoritm hisoblash vaqtlari qo'shiladi: &lt;code&gt;O(A + B)&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function printElements(a, b) {
  for (const aValue of a) {
    for (const bValue of b) {
      console.log(aValue, ' , ', bValue);
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ushbu algoritmda esa hisoblash vaqtlari ko'paytiriladi: &lt;code&gt;O(A*B)&lt;/code&gt;. Buning sababi, har bir &lt;code&gt;a&lt;/code&gt; massivi elementi uchun butun &lt;code&gt;b&lt;/code&gt; massiv elementlariga murojaat qilinmoqda.&lt;/p&gt;

&lt;h2&gt;
  
  
  Xulosa:
&lt;/h2&gt;

&lt;p&gt;Xulosa qilib aytganda, &lt;strong&gt;Big O&lt;/strong&gt; algoritmlarning samaradorligini tahlil qilish uchun qimmatli vositadir. U algoritmning vaqt yoki maydon talablarini kiruvchi qiymatlar bilan qanday o'lchashni ifodalashning standartlashtirilgan usulini taqdim etadi. Algoritmning &lt;strong&gt;Big O&lt;/strong&gt; murakkabligini tushunib, biz uning ishlash xususiyatlarini baholashimiz va algoritmlarni tanlash yoki optimallashtirishda asosli qarorlar qabul qilishimiz mumkin.&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>javascript</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Nega dasturchi uchun muloqot qilish qobiliyati bo’lishi muhim?</title>
      <dc:creator>Dilbar</dc:creator>
      <pubDate>Tue, 04 Jul 2023 08:56:30 +0000</pubDate>
      <link>https://dev.to/udilbar/nega-dasturchi-uchun-muloqot-qilish-qobiliyati-bolishi-muhim-1kgf</link>
      <guid>https://dev.to/udilbar/nega-dasturchi-uchun-muloqot-qilish-qobiliyati-bolishi-muhim-1kgf</guid>
      <description>&lt;p&gt;&lt;strong&gt;بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dasturchilarda asosan muloqot qila olish qobiliyati kam bo’ladi. Chunki ular insonlar muammolarini hal qiladigan dasturlarni ishlab chiqish, ya’ni asosan kod yozish bilan shug’ullanishadi. Xo’sh, nega unda dasturchilar biror joyga ishga topshirganlarida ularni ishga olishni hal qilishda ularning muloqot qila olish qobiliyatlariga ham qarashadi?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmx7lug452unygt8cgkg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmx7lug452unygt8cgkg.png" alt="Communication skills" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Buning bir necha sabablari bor:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dasturchilar ko’p hollarda jamoada ishlashadi. Jamoada turli fe’l-atvorli odamlar bilan ishlashga to’g’ri keladi. Ular bilan til topisha olish, bir-birini tushunib ishlash uchun albatta muloqot qilish qobiliyatlari muhim!&lt;/li&gt;
&lt;li&gt;Dasturchi qanday muammoni hal qilishi kerakligi, dasturning talablari va maqsadlarini to’g’ri tushunib olishi kerak. Buning uchun ham muloqot qilish qobiliyatlari muhim. Dasturda nimalar bo’lishi kerakligi haqidagi tavsilotlarni to’g’ri savollar berib, so’rab bilib olish dasturchining mahorati sanaladi. Shunda keyinchalik kelib chiqishi mumkin bo’lgan tushunmovchiliklar bo’lishining ehtimolini kamaytirish, dastur tezroq muddatda hamda muvaffaqiyatli yakunlanishi imkoniyatini oshirish mumkin bo’ladi.&lt;/li&gt;
&lt;li&gt;Ba’zan mijoz bilan bevosita gaplashishga to’g’ri kelishi mumkin. O’sha paytda muloqot qilish qobiliyati qanchalik muhimligi bilinadi. Bunda texnik va texnik bo’lmagan nutq o’rtasidagi farqni bilish zarurdir. Chunki qanday turdagi mijoz bilan muloqot qilinishini bilib bo’lmaydi, mijozga o’zini tilida tushunarli muloqot qilish muhimdir.&lt;/li&gt;
&lt;li&gt;Samarali muloqot qilish qobiliyati boshqa dasturchilar bilan keng aloqalarni o’rnatishga, sohadagi eng soʻnggi texnologiyalar, oxirgi yangiliklar, qiziqarli loyihalar va turli ish imkoniyatlari haqida maʼlumotlarni olishga yordam beradi. Shu bilan birga ishga oluvchilar bilan samarali munosabatlarni rivojlantirishga xizmat qiladi, bu esa ular tomonidan ishga tavsiyanomalar olinishiga olib kelishi mumkin.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;Xulosa:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yuqorida keltirilgan bir nechta sabablardan ko’rinib turibdiki, hozirgi kunda dasturchilar uchun samarali muloqot qilish qobiliyatlarini o’zlarining texnik ko’nikmalari bilan birga o’stirib borishlari talab darajasiga aylanib ulgurgan. Dasturchi sifatida yaxshiroq va samaraliroq muloqot qilish uchun faol tinglashni ham bilish juda zarurdir.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>dasturlash</category>
      <category>developer</category>
      <category>communicationskills</category>
    </item>
  </channel>
</rss>
