<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  
  <title>Hamid&#39;s Blog</title>
  <subtitle>Software engineering, financial systems, Linux, and personal writing by Hamid Safdari.</subtitle>
  <link href="https://www.hamidsafdari.com/feed.xml" rel="self" />
  <link href="https://www.hamidsafdari.com/" />
  <updated>2025-10-09T00:00:00Z</updated>
  <id>https://www.hamidsafdari.com/</id>
  <author>
    <name>Hamid Safdari</name>
    <email>hamidsafdari22@gmail.com</email>
  </author>
  <entry>
    <title>افعال بی‌قاعده در اردو</title>
    <link href="https://www.hamidsafdari.com/urdu-irregular-verbs/" />
    <updated>2025-10-09T00:00:00Z</updated>
    <id>https://www.hamidsafdari.com/urdu-irregular-verbs/</id>
    <content type="html">&lt;p&gt;در نوشتار قبل با شکلهای فعل در زمان‌های مختلف در زبان اردو آشنا شدیم. در این مقاله به افعال بی‌قاعده می‌پردازیم. در اردو، اکثر افعال طبق قواعد منظمی تغییر می‌کنند اما چند فعل بی‌قاعده نیز وجود دارند. در اینجا به پنج فعل بی‌قاعده پر کاربرد را بررسی می‌کنیم:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;ruby&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; &lt;rt&gt;/hona/&lt;/rt&gt;&lt;/ruby&gt; (بودن/شدن)&lt;/li&gt;
&lt;li&gt;&lt;ruby&gt;&lt;span lang=&quot;ur&quot;&gt;کرنا&lt;/span&gt; &lt;rt&gt;/karna/&lt;/rt&gt;&lt;/ruby&gt; (کردن)&lt;/li&gt;
&lt;li&gt;&lt;ruby&gt;&lt;span lang=&quot;ur&quot;&gt;جانا&lt;/span&gt; &lt;rt&gt;/jana/&lt;/rt&gt;&lt;/ruby&gt; (رفتن)&lt;/li&gt;
&lt;li&gt;&lt;ruby&gt;&lt;span lang=&quot;ur&quot;&gt;دینا&lt;/span&gt; &lt;rt&gt;/dena/&lt;/rt&gt;&lt;/ruby&gt; (دادن)&lt;/li&gt;
&lt;li&gt;&lt;ruby&gt;&lt;span lang=&quot;ur&quot;&gt;لینا&lt;/span&gt; &lt;rt&gt;/lena/&lt;/rt&gt;&lt;/ruby&gt; (گرفتن)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;این افعال بسیار اساسی هستند و در جملات روزمره استفاده فراوان دارند. افعال بی‌قاعده در اردو به این پنج فعل خلاصه نمیشوند، اما کاربرد زیاد، مخصوصا در افعال مرکب (ساخته شده از چند فعل)، باعث میشود که یادگیری این پنج فعل به فهم بهتر مکالمات روزمره کمک کند.&lt;/p&gt;
&lt;h3&gt;فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; به معنی «بودن» و «شدن» و ریشه آن «&lt;span lang=&quot;ur&quot;&gt;ہو&lt;/span&gt;» است. &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;  یکی از کاربردی ترین افعال در اردو است . این فعل علاوه بر اینکه در اکثر زمانها  دیده میشود، برای توصیف حالات، مکان‌ها و یا وجود چیزی نیز استفاده می‌شود. صرف این فعل با معنی «بودن» به این صورت است:&lt;/p&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
&lt;table&gt;
&lt;caption&gt;نکته: شکلهای فعل مونث به صورت رنگی نشان داده شده است. برای زمان حال فقط یک شکل وجود دارد.&lt;/caption&gt;
&lt;thead&gt;
  &lt;tr&gt;
    &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; / بودن&lt;/th&gt;
    &lt;th lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;میں&lt;/th&gt;
    &lt;th lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;تم&lt;/th&gt;
    &lt;th lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;وہ/تو&lt;/th&gt;
    &lt;th lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;ہم / آپ / وہ&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td&gt;حال&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوں&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہے&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہیں&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;گذشته&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھیں&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھیں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr class=&quot;border-b-2&quot;&gt;
    &lt;td&gt;آینده&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوں گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہے گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوں گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;به دلیل اینکه در زمانهای جاری و کامل یکی از اشکال فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; از جدول بالا استفاده شده است، جدول بالا را میتوان به عنوان جزء اساسی افعال در اردو دانست. مثال:‌&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;جا رہا ہوں۔&lt;/span&gt; میروم.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;کر چکے تھے۔&lt;/span&gt;(مذکر) کرده بودی/بودیم/بودید/بودند.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;دیکھتے ہے۔&lt;/span&gt;(مذکر/مونث) دیده ای/است.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;زمانهای جاری&lt;/h4&gt;
&lt;p&gt;به ساختار فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; در زمانهای جاری توجه کنید:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span lang=&quot;ur&quot;&gt;ہو&lt;/span&gt; +‌ پسوند زمانهای جاری +‌ شکل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; در آن زمان&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
&lt;table&gt;&lt;thead lang=&quot;ur&quot;&gt;
  &lt;tr&gt;
    &lt;th&gt;&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;میں&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;تم&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;وہ/تو&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;ہم / آپ / وہ&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td&gt;حال جاری &lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt; ہوں&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt; ہو&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt; ہے&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt; ہیں&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr class=&quot;border-b-2&quot;&gt;
    &lt;td&gt;گذشته جاری&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو رہا تھا / &lt;span class=&quot;text-sky-400&quot;&gt;ہو رہی تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو رہے تھے / &lt;span class=&quot;text-sky-400&quot;&gt;ہو رہی تھیں&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو رہا تھا / &lt;span class=&quot;text-sky-400&quot;&gt;ہو رہی تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو رہے تھے / &lt;span class=&quot;text-sky-400&quot;&gt;ہو رہی تھیں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;مثال:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;بارش ہو رہی تھی۔&lt;/span&gt; باران می‌بارید.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;بارش ہو رہی ہے۔&lt;/span&gt; باران می‌بارد.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;زمانهای کامل&lt;/h4&gt;
&lt;p&gt;ساختار فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; در زمانهای کامل به صورت زیر است. همانطور که مشاهده میکنید در این ساختار فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; دوبار تکرار شده است، فقط با این فرق که بار اول در زمان گذشته و بار دوم به شکل ساده در زمان مورد نظر:‌&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;شکل گذشته &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; + شکل فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; در زمان ساده&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
&lt;table&gt;&lt;thead lang=&quot;ur&quot;&gt;
  &lt;tr&gt;
    &lt;th&gt;&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;میں&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;تم&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;وہ/تو&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;ہم / آپ / وہ&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td&gt;حال کامل&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوا/&lt;span class=&quot;text-sky-400&quot;&gt;ہوی&lt;/span&gt; ہوں&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوے/&lt;span class=&quot;text-sky-400&quot;&gt;ہوی&lt;/span&gt; ہو&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوا/&lt;span class=&quot;text-sky-400&quot;&gt;ہوی&lt;/span&gt; ہے&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوے/&lt;span class=&quot;text-sky-400&quot;&gt;ہوی&lt;/span&gt; ہیں&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;گذشته کامل&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوا تھا / &lt;span class=&quot;text-sky-400&quot;&gt;ہوی تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوے تھے / &lt;span class=&quot;text-sky-400&quot;&gt;ہوی تھیں&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوا تھا / &lt;span class=&quot;text-sky-400&quot;&gt;ہوی تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوے تھے / &lt;span class=&quot;text-sky-400&quot;&gt;ہوی تھیں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;بارش ہوئی ہے۔&lt;/span&gt; باران باریده است.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;زمان آینده کامل و آینده جاری به دلیل کاربرد کم نشان داده نشده‌اند. برای این زمان‌ها از زمان‌های ساده استفاده می‌کنیم. در فارسی هم مشابه این کار را انجام میدهیم. مثلا به جای «در حال شدن خواهد بود»  میتوان از «میشود» استفاده کرد. یا به جای «شده بوده است»‌ میتوان گفت «شده بود».&lt;/p&gt;
&lt;h4&gt;فعل کمکی &lt;span lang=&quot;ur&quot;&gt;چکنا&lt;/span&gt;&lt;/h4&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
&lt;table&gt;&lt;thead lang=&quot;ur&quot;&gt;
  &lt;tr&gt;
    &lt;th&gt;&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;میں&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;تم&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;وہ/تو&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;ہم / آپ / وہ&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td&gt;حال کامل&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو چکا/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt; ہوں&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو چکے/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt; ہو&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو چکا/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt; ہے&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو چکے/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt; ہیں&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;گذشته کامل&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو چکا تھا / &lt;span class=&quot;text-sky-400&quot;&gt;ہو چکی تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو چکے تھے / &lt;span class=&quot;text-sky-400&quot;&gt;ہو چکی تھیں&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو چکا تھا / &lt;span class=&quot;text-sky-400&quot;&gt;ہو چکی تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہو چکے تھے / &lt;span class=&quot;text-sky-400&quot;&gt;ہو چکی تھیں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;توجه داشته باشید که در زمانهای حال کامل و گذشته کامل، از فعل کمکی &lt;span lang=&quot;ur&quot;&gt;چکنا&lt;/span&gt; استفاده نکردیم. از &lt;span lang=&quot;ur&quot;&gt;چکنا&lt;/span&gt; وقتی استفاده می‌کنیم که بخواهیم روی تمام شدن فعل تاکید کنیم. برای نمونه فعل &lt;span lang=&quot;ur&quot;&gt;کھانا&lt;/span&gt; (خوردن)‌ را در این جمله در نظر بگیرید:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میں کھا چکا تھا۔&lt;/span&gt; من غذا خورده بودم.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;در واقع عمل غذا خوردن انجام شده بود. اگر بگوییم «&lt;span lang=&quot;ur&quot;&gt;میں کھایا ہوا تھا۔&lt;/span&gt;» به این معنی است که من در حالتی بودم که غذا خورده بودم. گرچه معنی را می‌رساند اما به جای گفتن این جمله شاید بهتر باشد بگوییم «من سیر شده بودم». همان چیزی که با &lt;span lang=&quot;ur&quot;&gt;چکنا&lt;/span&gt; گفتیم. چند مثال دیگر:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;کل جب میں گھر پہنچا، تو میں بہت تھک ہوا تھا۔&lt;/span&gt; دیروز وقتی به خانه رسیدم،‌ بسیار مانده/خسته بودم. (یعنی در حالت ماندگی/خستگی بودم.)&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;جب وہ آیا، میں کام کر چکا تھا اور تھک چکا تھا۔&lt;/span&gt; وقتی او آمد،‌ من کار کرده بودم و خسته شده بودم. (حالت خستگی قبل از آمدن او شروع شده بود.)&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;بارش ہو چکی ہے اور ہر جگہ گیلی ہے۔&lt;/span&gt; باران باریده است و  همه جا تر است.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;زمانهای عادتی&lt;/h4&gt;
&lt;p&gt;در زمانهای عادتی &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; به این شکل استفاده میشود:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span lang=&quot;ur&quot;&gt;ہو&lt;/span&gt; + پسوند عادتی +‌ شکل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; در آن زمان&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
&lt;table&gt;&lt;thead lang=&quot;ur&quot;&gt;
  &lt;tr&gt;
    &lt;th&gt;&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;میں&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;تم&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;وہ/تو&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;ہم / آپ / وہ&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td&gt;حال جاری &lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوتا/&lt;span class=&quot;text-sky-400&quot;&gt;ہوتی&lt;/span&gt; ہوں&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوتے/&lt;span class=&quot;text-sky-400&quot;&gt;ہوتی&lt;/span&gt; ہو&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوتا/&lt;span class=&quot;text-sky-400&quot;&gt;ہوتی&lt;/span&gt; ہے&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوتے/&lt;span class=&quot;text-sky-400&quot;&gt;ہوتی&lt;/span&gt; ہیں&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;گذشته جاری&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوتا تھا / &lt;span class=&quot;text-sky-400&quot;&gt;ہوتی تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوتے تھے / &lt;span class=&quot;text-sky-400&quot;&gt;ہوتی تھیں&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوتا تھا / &lt;span class=&quot;text-sky-400&quot;&gt;ہوتی تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوتے تھے / &lt;span class=&quot;text-sky-400&quot;&gt;ہوتی تھیں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میں ہمیشہ خوش ہوتا ہوں۔&lt;/span&gt; من همیشه خوشحالم.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;وہ اکثر دیر سے آتی ہے۔&lt;/span&gt; او (مونث) اغلب دیر می‌آید.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;تم ہمیشہ شکایت کرتے ہو۔&lt;/span&gt; تو همیشه شکایت می‌کنی.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;بچے روز اسکول جاتے ہیں۔&lt;/span&gt; اطفال/بچه‌ها از طرف روز به مکتب/مدرسه می‌روند.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;ہم ہر روز صبح ورزش کرتے تھے۔&lt;/span&gt; ما هر روز صبح ورزش می‌کردیم.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;وہ عموماً چائے  پیتا تھا۔&lt;/span&gt; او معمولا چای می‌خورد.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میں اکثر رات کو مطالعہ کرتا تھا۔&lt;/span&gt; من اغلب از طرف شب مطالعه می‌کردم.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; به معنی شدن&lt;/h3&gt;
&lt;p&gt;در تمام مثالهای بالا &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; به معنی بودن نشان داده شد. معنی دیگر این فعل «شدن» است:&lt;/p&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
&lt;table&gt;&lt;thead&gt;
  &lt;tr&gt;
    &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; / شدن&lt;/th&gt;
    &lt;th lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;میں/وہ/تو&lt;/th&gt;
    &lt;th lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;تم / ہم / آپ / وہ&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td&gt;گذشته&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوا/&lt;span class=&quot;text-sky-400&quot;&gt;ہوی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوے/&lt;span class=&quot;text-sky-400&quot;&gt;ہویں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;گذشته کامل&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوا تھا / &lt;span class=&quot;text-sky-400&quot;&gt;ہوی تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td class=&quot;text-center&quot; lang=&quot;ur&quot;&gt;ہوے تھے / &lt;span class=&quot;text-sky-400&quot;&gt;ہوی تھیں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;تم بہت خوش ہوے۔&lt;/span&gt; تو بسیار خوشحال شدی.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میں تھک ہوی۔&lt;/span&gt;(مونث) من مانده/خسته شدم.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میں جب گھر آیا، شیشہ ٹوٹا ہوا تھا۔&lt;/span&gt; وقتی من خانه آمدم، شیشه شکسته شده بود.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; تنها فعلی است که با توجه به زمان و معنی (بودن/شدن) شکلهای متفاوتی به خود میگیرد. دیگر افعال بی‌قاعده فقط در بعضی از زمانها شکل خاصی از خود نشان میدهند و در سایر زمانها از ساختار منظم و مشابه افعال باقاعده پیروی می‌کنند.&lt;/p&gt;
&lt;h3&gt;فعل &lt;span lang=&quot;ur&quot;&gt;کرنا&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span lang=&quot;ur&quot;&gt;کرنا&lt;/span&gt;، به معنی کردن، یکی دیگر از افعال بی‌قاعده در اردو است. &lt;span lang=&quot;ur&quot;&gt;کرنا&lt;/span&gt; فقط در زمان گذشته بی‌قاعده است:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;
  &lt;tr lang=&quot;ur&quot;&gt;
    &lt;th class=&quot;text-center&quot;&gt;&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;میں/وہ/تو&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;تم / ہم / آپ / وہ&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td class=&quot;text-center&quot;&gt;گذشته ساده&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;کیا / &lt;span class=&quot;text-sky-400&quot;&gt;کی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;کیے / &lt;span class=&quot;text-sky-400&quot;&gt;کیں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;زمان گذشته کامل را به میتوان به چند صورت نشان داد:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;وہ اس کو سب کچھ کیا تھا۔&lt;/span&gt; او برایش همه کار انجام داد (او هر کاری میتوانست برایش انجام داد).&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;جب وہ آیا، میں نے سب کچھ کر چکا تھا۔&lt;/span&gt; (وقتی او آمد، من همه کارها را انجام داده بودم).&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;جب وہ آیا، میں نے سب کچھ کر لیا تھا۔&lt;/span&gt; (وقتی او آمد، من همه کارها را انجام داده بودم، نه کس دیگری).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;شکل اول استفاده روزمره دارد و تاکید روی نتیجه و یا حالتی است که از کار به جا مانده است. به صرف این حال توجه کنید:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;
  &lt;tr lang=&quot;ur&quot;&gt;
    &lt;th class=&quot;text-center&quot;&gt;&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;میں/وہ/تو&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;تم / ہم / آپ / وہ&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td class=&quot;text-center&quot;&gt;گذشته ساده&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;کیا تھا / &lt;span class=&quot;text-sky-400&quot;&gt;کی تھی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;کیے تھے / &lt;span class=&quot;text-sky-400&quot;&gt;کیں تھیں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;فعل &lt;span lang=&quot;ur&quot;&gt;جانا&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span lang=&quot;ur&quot;&gt;جانا&lt;/span&gt; به معنی رفتن، مشابه &lt;span lang=&quot;ur&quot;&gt;کرنا&lt;/span&gt; است و فقط در زمان گذشته ساده شکل متفاوتی دارد:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;
  &lt;tr lang=&quot;ur&quot;&gt;
    &lt;th class=&quot;text-center&quot;&gt;&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;میں/وہ/تو&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;تم / ہم / آپ / وہ&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td&gt;گذشته ساده&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;گیا / &lt;span class=&quot;text-sky-400&quot;&gt;گئی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;گئے / &lt;span class=&quot;text-sky-400&quot;&gt;گئیں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span lang=&quot;ur&quot;&gt;جانا&lt;/span&gt; نیز مثل فعل &lt;span lang=&quot;ur&quot;&gt;کرنا&lt;/span&gt; در زمان گذشته کامل به دو صورت نشان داده میشود:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;ہم بازار گئے تھے۔&lt;/span&gt; ما بازار رفته بودیم.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میں بازار جا چکا تھا جب تو فون کیا۔&lt;/span&gt; وقتی تو زنگ زدی من بازار رفته بودم. یعنی وقتی تو زنگ زدی من خانه را ترک کرده بودم و برای همین نتوانستم جواب بدهم.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;در سایر زمانهای فعل &lt;span lang=&quot;ur&quot;&gt;جانا&lt;/span&gt; ساختار متعارف و منظم دیگر افعال را قبول میکند:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;وہ جا رہا ہے۔&lt;/span&gt; او میرود. (در حال رفتن است)&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میں جاؤں گا۔&lt;/span&gt; من خواهد رفتم. (خواهم رفت)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;فعل &lt;span lang=&quot;ur&quot;&gt;دینا&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span lang=&quot;ur&quot;&gt;دینا&lt;/span&gt; به معنی دادن در زمان گذشته ساده و آینده ساده شکل خاص خود را دارد:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;
  &lt;tr lang=&quot;ur&quot;&gt;
    &lt;th class=&quot;text-center&quot;&gt;&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;میں&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;تم&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;وہ/تو&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;ہم / آپ / وہ&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td&gt;گذشته ساده&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;دیا / &lt;span class=&quot;text-sky-400&quot;&gt;دی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;دیے / &lt;span class=&quot;text-sky-400&quot;&gt;دیں&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;دیا / &lt;span class=&quot;text-sky-400&quot;&gt;دی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;دیے / &lt;span class=&quot;text-sky-400&quot;&gt;دیں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;آینده ساده&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;&lt;span class=&quot;text-orange-400&quot;&gt;دوں&lt;/span&gt; گا / &lt;span class=&quot;text-sky-400&quot;&gt;&lt;span class=&quot;text-orange-400&quot;&gt;دوں&lt;/span&gt; گی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;&lt;span class=&quot;text-purple-400&quot;&gt;دے&lt;/span&gt; گا / &lt;span class=&quot;text-sky-400&quot;&gt;&lt;span class=&quot;text-purple-400&quot;&gt;دے&lt;/span&gt; گی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;&lt;span class=&quot;text-orange-400&quot;&gt;دو&lt;/span&gt; گے / &lt;span class=&quot;text-sky-400&quot;&gt;&lt;span class=&quot;text-orange-400&quot;&gt;دو&lt;/span&gt; گی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;&lt;span class=&quot;text-purple-400&quot;&gt;دیں&lt;/span&gt; گے / &lt;span class=&quot;text-sky-400&quot;&gt;&lt;span class=&quot;text-purple-400&quot;&gt;دیں&lt;/span&gt; گی&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span lang=&quot;ur&quot;&gt;دینا&lt;/span&gt; نیز میتواند با &lt;span lang=&quot;ur&quot;&gt;چکا&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;لیا&lt;/span&gt; برای رساندن معانی متفاوت استفاده شود:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میں نے دیا تھا۔&lt;/span&gt; من داده بودم. استفاده معمول و روزمره.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میں نے دے چکا تھا۔&lt;/span&gt; من داده بودم. یعنی عمل دادن تمام شده بود.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میں نے دے لیا تھا۔&lt;/span&gt; من داده بودم (نه کس دیگری).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;فعل &lt;span lang=&quot;ur&quot;&gt;لینا&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;فعل &lt;span lang=&quot;ur&quot;&gt;لینا&lt;/span&gt; (گرفتن) نیز مشابه فعل &lt;span lang=&quot;ur&quot;&gt;دینا&lt;/span&gt; است و فقط در زمانهای گذشته ساده و آینده ساده شکل خاص خود را دارد:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;
  &lt;tr lang=&quot;ur&quot;&gt;
    &lt;th class=&quot;text-center&quot;&gt;&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;میں&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;تم&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;وہ/تو&lt;/th&gt;
    &lt;th class=&quot;text-center&quot;&gt;ہم / آپ / وہ&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td&gt;گذشته ساده&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;لیا / &lt;span class=&quot;text-sky-400&quot;&gt;لی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;لیے / &lt;span class=&quot;text-sky-400&quot;&gt;لیں&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;لیا / &lt;span class=&quot;text-sky-400&quot;&gt;لی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;لیے / &lt;span class=&quot;text-sky-400&quot;&gt;لیں&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;آینده ساده&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;&lt;span class=&quot;text-orange-400&quot;&gt;لوں&lt;/span&gt; گا / &lt;span class=&quot;text-sky-400&quot;&gt;&lt;span class=&quot;text-orange-400&quot;&gt;لوں&lt;/span&gt; گی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;&lt;span class=&quot;text-purple-400&quot;&gt;لے&lt;/span&gt; گا / &lt;span class=&quot;text-sky-400&quot;&gt;&lt;span class=&quot;text-purple-400&quot;&gt;لے&lt;/span&gt; گی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;&lt;span class=&quot;text-orange-400&quot;&gt;لو&lt;/span&gt; گے / &lt;span class=&quot;text-sky-400&quot;&gt;&lt;span class=&quot;text-orange-400&quot;&gt;لو&lt;/span&gt; گی&lt;/span&gt;&lt;/td&gt;
    &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;&lt;span class=&quot;text-purple-400&quot;&gt;لیں&lt;/span&gt; گے / &lt;span class=&quot;text-sky-400&quot;&gt;&lt;span class=&quot;text-purple-400&quot;&gt;لیں&lt;/span&gt; گی&lt;/span&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;فعل &lt;span lang=&quot;ur&quot;&gt;لینا&lt;/span&gt; نیز با &lt;span lang=&quot;ur&quot;&gt;چکا&lt;/span&gt; یکجا شده و برای تاکید روی اتمام کار استفاده میشود:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میں نے کتاب لے چکا تھا جب تو آئی۔&lt;/span&gt; وقتی تو آمدی (مونث) من کتاب را گرفته بودم. یعنی کمی بعد از اینکه من کتاب را گرفتم تو آمدی و گرفتن کتاب قبل از آمدن تو تمام شده بود.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;پیسے لے چکا تھا۔&lt;/span&gt; پول را گرفته بود. تاکید روی اینکه پول گرفته شده بود. مثلا دیگر امکان نداشت به فروشگاه دیگری برویم چون پولمان را داده بودیم.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;نکته&lt;/h3&gt;
&lt;h4&gt;&lt;span lang=&quot;ur&quot;&gt;دے دیا، دے دوں گا، دے دیں گے،&lt;/span&gt; ...&lt;/h4&gt;
&lt;p&gt;فعل &lt;span lang=&quot;ur&quot;&gt;دینا&lt;/span&gt; میتواند با پسوند &lt;span lang=&quot;ur&quot;&gt;دے&lt;/span&gt; یکجا شده و برای تاکید روی عمل دادن استفاده شود. همینطور به دلیل کوتاهی &lt;span lang=&quot;ur&quot;&gt;دے&lt;/span&gt;، از &lt;span lang=&quot;ur&quot;&gt;دیدے&lt;/span&gt; در مکالمات روزمره، با صداری ملایمتر، بدون اینکه تاکیدی در کار باشد نیز استفاده میشود.&lt;/p&gt;
&lt;p&gt;برای نمونه در جمله زیر فروشنده بعد از چند بار یادآوری از طرف مشتری می‌گوید:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;فکر نہ کرو۔ آپ کا سامان دے دوں گا۔&lt;/span&gt; تشویش نکن (نگران نباش). جنست را میدهم.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;span lang=&quot;ur&quot;&gt;لے لیا، لے لوں گا،&lt;/span&gt; ...&lt;/h4&gt;
&lt;p&gt;پسوند &lt;span lang=&quot;ur&quot;&gt;لے&lt;/span&gt; با &lt;span lang=&quot;ur&quot;&gt;لینا&lt;/span&gt; یکجا شده و برای تاکید روی عمل گرفتن استفاده میشود. مثلا در همان مثال فروشگاه، فروشنده دوباره از شما پول را مطالبه میکند و شما برای اینکه او قبلاً پول را گرفته میگویید:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;آپ نے میرے پیسے لے لیا۔&lt;/span&gt; شما پولم را (قبلا)‌ گرفتید.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;باز هم مثل &lt;span lang=&quot;ur&quot;&gt;دیدے&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;دیدو&lt;/span&gt;، از &lt;span lang=&quot;ur&quot;&gt;لیلے&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;لیلو&lt;/span&gt; در مکالمات روزمره (با صدای ملایم) استفاده میشود، بدون اینکه تاکیدی در کار باشد.&lt;/p&gt;
&lt;h2&gt;جمع بندی&lt;/h2&gt;
&lt;p&gt;افعال بی‌قاعده در زبان اردو، هرچند معدود، نقشی کلیدی در شکل‌دهی جملات دارند. پنج فعل اصلی معرفی‌شده—&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;، &lt;span lang=&quot;ur&quot;&gt;کرنا&lt;/span&gt;، &lt;span lang=&quot;ur&quot;&gt;جانا&lt;/span&gt;، &lt;span lang=&quot;ur&quot;&gt;دینا&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;لینا&lt;/span&gt;—اساس بیشتر مکالمات روزمره را تشکیل می‌دهند. شناخت این افعال و کاربرد آن‌ها، به درک متن و گفتار  و ساختارهای پیچیده‌تر مانند افعال مرکب و جملات شرطی نیز کمک می‌کند.&lt;/p&gt;
&lt;p&gt;از شما دعوت می‌شود تا اشتباهات احتمالی را از طریق صفحه &lt;a href=&quot;https://www.hamidsafdari.com/contact&quot;&gt;contact&lt;/a&gt; در میان بگذارید تا در جهت کمال آن بکوشیم.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>زمان در اردو</title>
    <link href="https://www.hamidsafdari.com/urdu-tenses/" />
    <updated>2025-07-26T00:00:00Z</updated>
    <id>https://www.hamidsafdari.com/urdu-tenses/</id>
    <content type="html">&lt;p&gt;فعل‌ کلمه‌ای است که جمله را به حرکت درمی‌آورد و نشان می‌دهد کاری انجام شده (مانند خوردن) یا حالتی وجود دارد (مانند بودن). فاعل انجام دهنده‌ی فعل است و مفعول چیزی است که فعل روی آن انجام میشود. حرف ربط ارتباط بین فاعل و مفعول را نشان می‌دهد. در جمله «شهرام دروازه را باز کرد.»، «شهرام» فاعل، «دروازه» مفعول، «را» حرف ربط و «باز کرد» فعل است.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;صَرفِ فعل&lt;/strong&gt; یعنی تغییر دادن فعل به شکلهای مختلف آن نظر به اشخاص و زمان‌های مختلف. مثلاً «خواندم»، «خواهند خواند» و یا «خوانده بودم». صرف فعل به بیان دقیق‌تر مطلب و فهم بهتر مکالمات کمک می‌کند. شکل فعل در اردو می‌تواند نظر به جنس و سطح احترام مخاطب،‌ وجود مفعول و حروف اضافه در جمله فرق کند. برای ساده کردن این مطلب، در این نوشته ابتدا با &lt;strong&gt;ضمیرها&lt;/strong&gt; شروع می‌کنیم تا با سطح احترام مخاطب در جمله آشنا شویم. سپس به &lt;strong&gt;لازم و متعدی بودن افعال&lt;/strong&gt; میپردازیم تا تاثیر وجود مفعول در جمله را درک کنیم و پس از آن یکی از قوانین کلیدی اردو یعنی &lt;strong&gt;قاعده ارگاتیو&lt;/strong&gt; را بررسی می‌کنیم. در نهایت، با &lt;strong&gt;مصدر فعل&lt;/strong&gt; آشنا می‌شویم و سپس به سراغ &lt;strong&gt;انواع زمان‌ها&lt;/strong&gt; می‌رویم و آن‌ها را به ترتیب ساده، جاری، کامل و کامل جاری مرور می‌کنیم.&lt;/p&gt;
&lt;h3&gt;ضمیرهای اردو&lt;/h3&gt;
&lt;p&gt;ضمیر کلمه‌ای است که به جای اسم به کار میرود. به مثال زیر توجه کنید:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ غضنفر به دکان رفت. او یک بسته پنیر خرید.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;کلمه «او»‌ ضمیری است که به جای غضنفر به کار رفته است. در فارسی برای هر یک از اشخاص ششگانه ضمیری جداگانه داریم؛ «من، تو، او، ما، شما و آنها».  در اردو نیز مشابه آنها وجود دارند؛ «&lt;span lang=&quot;ur&quot;&gt;میں، تم/تو، یہ، وه،‌ ہم، آپ&lt;/span&gt;». ضمیر &lt;span lang=&quot;ur&quot;&gt;تم&lt;/span&gt; صمیمی اما مؤدبانه و معادل &lt;strong&gt;تو&lt;/strong&gt; در فارسی است اما می‌تواند برای جمع (شما) نیز استفاده شود. &lt;span lang=&quot;ur&quot;&gt;تو&lt;/span&gt; عامیانه‌تر، صمیمی‌تر و یا حتی برای تحقیر استفاده میشود. شکل فعل با ضمیر &lt;span lang=&quot;ur&quot;&gt;تم&lt;/span&gt; شبیه حالت جمع و با &lt;span lang=&quot;ur&quot;&gt;تو&lt;/span&gt; مثل سوم شخص مفرد است. تلفظ &lt;span lang=&quot;ur&quot;&gt;تو&lt;/span&gt; در اردو مثل two در انگلیسی است و نه مثل &lt;strong&gt;تو&lt;/strong&gt; در فارسی. علاوه بر این، &lt;span lang=&quot;ur&quot;&gt;یہ&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;وہ&lt;/span&gt; می‌توانند برای جمع نیز استفاده شوند. در این حالت &lt;span lang=&quot;ur&quot;&gt;یہ&lt;/span&gt; به معنای «اینها» و &lt;span lang=&quot;ur&quot;&gt;وہ&lt;/span&gt; به معنای «آنها» به کار میرود. وقتی &lt;span lang=&quot;ur&quot;&gt;وه&lt;/span&gt; با حرف ربط و یا &lt;span lang=&quot;ur&quot;&gt;نے&lt;/span&gt; دنبال شود،‌ شکل &lt;span lang=&quot;ur&quot;&gt;اُن&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;اُنھوں&lt;/span&gt;، و &lt;span lang=&quot;ur&quot;&gt;یہ&lt;/span&gt; شکل &lt;span lang=&quot;ur&quot;&gt;اِن&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;اِنھوں&lt;/span&gt; را به خود میگیرد. جدول زیر صرف فعل &lt;span lang=&quot;ur&quot;&gt;جانا&lt;/span&gt; (رفتن)‌ را در زمان حال جاری نشان می‌دهد:&lt;/p&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;میں&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;تم&lt;/th&gt;
      &lt;th class=&quot;bg-lime-100 text-center&quot;&gt;تو&lt;/th&gt;
      &lt;th class=&quot;bg-lime-100 text-center&quot;&gt;وہ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وه&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th class=&quot;text-center&quot; dir=&quot;ltr&quot;&gt;/me~/&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;/tom/&lt;/th&gt;
      &lt;th class=&quot;bg-lime-100 text-center&quot;&gt;/tu/&lt;/th&gt;
      &lt;th class=&quot;bg-lime-100 text-center&quot;&gt;/wo/&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;/ham/&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;/aap/&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;/wo/&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;من&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;تو&lt;/th&gt;
      &lt;th class=&quot;bg-lime-100 text-center&quot;&gt;-&lt;/th&gt;
      &lt;th class=&quot;bg-lime-100 text-center&quot;&gt;او&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ما&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;شما&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آنها&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td class=&quot;font-bold&quot;&gt;فارسی&lt;/td&gt;
      &lt;td class=&quot;text-center&quot;&gt;میروم&lt;/td&gt;
      &lt;td class=&quot;text-center&quot;&gt;میروی&lt;/td&gt;
      &lt;td class=&quot;bg-lime-100 text-center&quot;&gt;میروی&lt;/td&gt;
      &lt;td class=&quot;bg-lime-100 text-center&quot;&gt;میرود&lt;/td&gt;
      &lt;td class=&quot;text-center&quot;&gt;میرویم&lt;/td&gt;
      &lt;td class=&quot;text-center&quot;&gt;میروید&lt;/td&gt;
      &lt;td class=&quot;text-center&quot;&gt;میروند&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td class=&quot;font-bold&quot;&gt;اردو (مرد)&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;جا &lt;span class=&quot;text-orange-400&quot;&gt;رہا&lt;/span&gt; ہوں&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;جا &lt;span class=&quot;text-rose-600&quot;&gt;رہے&lt;/span&gt; ہو&lt;/td&gt;
      &lt;td colspan=&quot;2&quot; lang=&quot;ur&quot; class=&quot;bg-lime-100 text-center&quot;&gt;جا &lt;span class=&quot;text-orange-400&quot;&gt;رہا&lt;/span&gt; ہے&lt;/td&gt;
      &lt;td colspan=&quot;3&quot; lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;جا &lt;span class=&quot;text-rose-600&quot;&gt;رہے&lt;/span&gt; &lt;span class=&quot;text-fuchsia-600&quot;&gt;ہیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td class=&quot;font-bold&quot;&gt;اردو (زن)&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;جا &lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt; ہوں&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;جا &lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt; ہو&lt;/td&gt;
      &lt;td colspan=&quot;2&quot; lang=&quot;ur&quot; class=&quot;bg-lime-100 text-center&quot;&gt;جا &lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt; ہے&lt;/td&gt;
      &lt;td colspan=&quot;3&quot; lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;جا &lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt; &lt;span class=&quot;text-fuchsia-600&quot;&gt;ہیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;نکات:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;ہوں، ہو، ہے&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;ہیں&lt;/span&gt; شکلهای فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; (بودن)‌ در زمان حال هستند.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot; class=&quot;text-orange-400&quot;&gt;رہا&lt;/span&gt;، &lt;span lang=&quot;ur&quot; class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt; و &lt;span lang=&quot;ur&quot; class=&quot;text-rose-600&quot;&gt;رہے&lt;/span&gt; &lt;strong&gt;پسوندهای زمان جاری&lt;/strong&gt; هستند، مثل «می»‌ در «میروم» و «میروی».&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot; class=&quot;text-orange-400&quot;&gt;رہا&lt;/span&gt; برای مفرد مذکر (به غیر از &lt;span lang=&quot;ur&quot;&gt;تم&lt;/span&gt;) و &lt;span lang=&quot;ur&quot; class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt; برای همه ضمیرهای مونث مشترک است.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot; class=&quot;text-rose-600&quot;&gt;رہے&lt;/span&gt; برای &lt;span lang=&quot;ur&quot;&gt;تم&lt;/span&gt; و اشخاص جمع و &lt;span lang=&quot;ur&quot; class=&quot;text-fuchsia-600&quot;&gt;ہیں&lt;/span&gt; برای تمام ضمیرهای جمع استفاده شده است.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;در جدول می‌بینید که شکل فعل برای &lt;span lang=&quot;ur&quot;&gt;وه&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;تو&lt;/span&gt; یک چیز است. پس در ادامه این دو‌ را با هم نشان می‌دهیم. فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; در اکثر زمان‌ها مورد استفاده قرار گرفته است. این مطلب در فارسی نیز صدق میکند و «بودن» به شکلهای مختلف در زمانها استفاده میشود؛ «بوده‌ام»، «بودند»، «است» و «خواهد بود». به دلیل کاربرد و اهمیت فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;،‌ ابتدا به صرف این فعل می‌پردازیم:&lt;/p&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
  &lt;caption&gt;شکلهای مختلف فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/caption&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;ہونا&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;حال&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہوں&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہو&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ہے&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ہیں&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;گذشته&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;آینده&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہوں گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہو گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ہے گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ہوں گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;همانطور که گفته شد، &lt;span lang=&quot;ur&quot;&gt;رہا، رہی&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;رہے&lt;/span&gt; پسوند زمان جاری هستند و برای نشان دادن جریان کار استفاده میشوند. جدول زیر سایر پسوندهایی که برای زمانها در اردو استفاده میشوند را نشان داده است:&lt;/p&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;caption&gt;پسوند زمانها در اردو&lt;/caption&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند گذشته&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ا/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ے/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ا/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ے/&lt;span class=&quot;text-sky-400&quot;&gt;یں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند عادتی&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند جاری&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند زمان کامل&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;چکا/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;چکے/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;چکا/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;چکے/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt; پسوند آینده&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;وں گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;و گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ے گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;یں گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;نکات:‌&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;به تفاوت بین پسوند آینده در این جدول و شکل آینده &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; در جدول قبل توجه داشته باشید. پسوند آینده &lt;strong&gt;فقط در زمان آینده ساده&lt;/strong&gt; به کار میرود و شکل آینده &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; در دیگر زمانهای آینده؛ آینده جاری، آینده کامل،‌ آینده کامل جاری.&lt;/li&gt;
&lt;li&gt;همچنین توجه کنید که برای جنس مؤنث (رنگ آبی)، «&lt;span lang=&quot;ur&quot;&gt;الف&lt;/span&gt;» و «&lt;span lang=&quot;ur&quot;&gt;ے&lt;/span&gt;» (یای کشیده) در انتهای کلمه به «&lt;span lang=&quot;ur&quot;&gt;ی&lt;/span&gt;» تبدیل میشود. مثلاً &lt;span lang=&quot;ur&quot;&gt;رہا&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;رہے&lt;/span&gt; به &lt;span lang=&quot;ur&quot;&gt;رہی&lt;/span&gt; تبدیل و &lt;span lang=&quot;ur&quot;&gt;چکا&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;چکے&lt;/span&gt; به &lt;span lang=&quot;ur&quot;&gt;چکی&lt;/span&gt; تبدیل میشوند.&lt;/li&gt;
&lt;li&gt;در زمان گذشته ساده، برای سادگی در تلفظ، اگر ریشه فعلی با حرف «&lt;span lang=&quot;ur&quot;&gt;الف&lt;/span&gt;» ختم شود، از حروف «&lt;span lang=&quot;ur&quot;&gt;ی&lt;/span&gt;»‌ و «&lt;span lang=&quot;ur&quot;&gt;ئ&lt;/span&gt;» (همزه روی حرف یاء) قبل از پسوند گذشته استفاده میکنیم؛ مثل (&lt;span lang=&quot;ur&quot;&gt;آنا&lt;/span&gt; ← &lt;span lang=&quot;ur&quot;&gt;آ&lt;/span&gt; (ریشه) ← &lt;span lang=&quot;ur&quot;&gt;آیا، آئی، آئے، آئیں&lt;/span&gt;).&lt;/li&gt;
&lt;li&gt;دو جدول بالا و قاعده ارگاتیو نقش اساسی در یادگیری صرف فعل در زبان اردو دارند.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;مقایسه با زبان فارسی&lt;/h3&gt;
&lt;p&gt;ضمیرهای مشخص، نبودن سطح احترام و تک جنسیتی، زمانها را در زبان فارسی ساده‌تر از اردو جلوه می‌دهد. مثلا از کلمه «میخوانم» میشود در زمان حال ساده،‌ حال جاری و آینده و برای مرد و زن استفاده کرد. به صرف فعل «خواندن» برای اول شخص مفرد در فارسی توجه کنید:&lt;/p&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;حال&lt;/th&gt;
      &lt;th&gt;گذشته&lt;/th&gt;
      &lt;th&gt;آینده&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;ساده&lt;/th&gt;
      &lt;td&gt;میخوانم&lt;/td&gt;
      &lt;td&gt;خواندم&lt;/td&gt;
      &lt;td&gt;خواهم خواند&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;جاری&lt;/th&gt;
      &lt;td&gt;میخوانم&lt;/td&gt;
      &lt;td&gt;میخواندم&lt;/td&gt;
      &lt;td&gt;میخوانم&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;کامل&lt;/th&gt;
      &lt;td&gt;خوانده‌ام&lt;/td&gt;
      &lt;td&gt;خوانده بودم&lt;/td&gt;
      &lt;td&gt;خوانده خواهم بود&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;کامل جاری&lt;/th&gt;
      &lt;td&gt;میخوانده‌ام&lt;/td&gt;
      &lt;td&gt;میخوانده بودم&lt;/td&gt;
      &lt;td&gt;میخوانده خواهم بود/&lt;br&gt;در حال خواندن خواهم بود&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;از پیشوند «می» در زمانهای جاری استفاده شده و برای آینده فعل کمکی «خواستن»‌ است که شکل میپذیرد. پس فارسی هم تابع قوانینی است که ما به آنها عادت کرده‌ایم. اما کسی که برای بار اول با فارسی آشنا میشود وجود این قواعد را بهتر حس خواهد کرد.&lt;/p&gt;
&lt;p&gt;در مقایسه، اردو برای همه زمانها شکل مشخصی از فعل دارد. حالا به صرف فعل «&lt;span lang=&quot;ur&quot;&gt;چلنا&lt;/span&gt;» (رفتن) برای سوم شخص مذکر در اردو توجه کنید. برای بهتر رساندن مطلب معادل انگلیسی هر فعل زیر آن نشان داده شده است.&lt;/p&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;حال&lt;/th&gt;
      &lt;th&gt;گذشته&lt;/th&gt;
      &lt;th&gt;آینده&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th rowspan=&quot;3&quot;&gt;ساده&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;چلتا ہوں&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;چلا&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;چلوں گا&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class=&quot;text-gray-400&quot;&gt;
      &lt;td&gt;go&lt;/td&gt;
      &lt;td&gt;went&lt;/td&gt;
      &lt;td&gt;will go&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class=&quot;text-gray-400&quot;&gt;
      &lt;td&gt;میروم&lt;/td&gt;
      &lt;td&gt;رفتم&lt;/td&gt;
      &lt;td&gt;خواهم رفت&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th rowspan=&quot;3&quot;&gt;جاری&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;چل رہا ہوں&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;چل رہا تھا&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;چل رہا ہوں گا&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class=&quot;text-gray-400&quot;&gt;
      &lt;td&gt;going&lt;/td&gt;
      &lt;td&gt;was going&lt;/td&gt;
      &lt;td&gt;will be going&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class=&quot;text-gray-400&quot;&gt;
      &lt;td&gt;میروم&lt;/td&gt;
      &lt;td&gt;می رفتم&lt;/td&gt;
      &lt;td&gt;میروم/&lt;br&gt;در حال رفتن خواهم بود&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th rowspan=&quot;3&quot;&gt;کامل&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;چل چُکا ہوں&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;چل چُکا تھا&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;چل چُکا ہوں گا&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class=&quot;text-gray-400&quot;&gt;
      &lt;td&gt;have gone&lt;/td&gt;
      &lt;td&gt;had gone&lt;/td&gt;
      &lt;td&gt;will have gone&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class=&quot;text-gray-400&quot;&gt;
      &lt;td&gt;رفته ام&lt;/td&gt;
      &lt;td&gt;رفته بودم&lt;/td&gt;
      &lt;td&gt;رفته خواهم بود&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th rowspan=&quot;3&quot;&gt;کامل جاری&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;چلتا رہا ہوں&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;چلتا رہا تھا&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;چلتا رہا ہوں گا&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class=&quot;text-gray-400&quot;&gt;
      &lt;td&gt;have been going&lt;/td&gt;
      &lt;td&gt;had been going&lt;/td&gt;
      &lt;td&gt;will have been going&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class=&quot;text-gray-400&quot;&gt;
      &lt;td&gt;میرفته ام/&lt;br&gt;در حال رفتن بوده‌ام&lt;/td&gt;
      &lt;td&gt;میرفته بودم/&lt;br&gt;در حال رفتن بودم&lt;/td&gt;
      &lt;td&gt;میرفته خواهم بود/&lt;br&gt;در حال رفتن خواهم بود&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;واضح است که اردو نیز قواعد خاص خود را برای صرف فعل در زمانهای مختلف دارد. یکی از این قواعد، قاعده ارگاتیو است که به تغییر شکل فعل نظر به بودن و یا نبودن مفعول اشاره میکند.&lt;/p&gt;
&lt;h3&gt;قاعده ارگاتیو (Ergative Rule) &lt;span class=&quot;citations&quot;&gt;&lt;sup&gt;&lt;a href=&quot;https://www.hamidsafdari.com/urdu-tenses/#bib-wiki_split_ergativity&quot; id=&quot;citation-wiki_split_ergativity&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;طبق این قاعده، نظر به وجود مفعول در جمله، فعل به یکی از دو صورت زیر استفاده میشود:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;فعل لازم که نیازمند مفعول نیست، همیشه از فاعل شکل میپذیرد:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;میں بازار آیا۔&lt;/td&gt;
      &lt;td&gt;من (به) بازار آمدم. آمدن به مفعول نیاز ندارد و &lt;span lang=&quot;ur&quot;&gt;آیا&lt;/span&gt; از &lt;span lang=&quot;ur&quot;&gt;میں&lt;/span&gt; (مذکر) شکل گرفته است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ ہنسی۔&lt;/td&gt;
      &lt;td&gt;آن (زن) خندید.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ ہنسا۔&lt;/td&gt;
      &lt;td&gt;آن (مرد) خندید.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;فعل متعدی که بدون مفعول ناقص است نظر به جنس و تعداد از مفعول شکل میپذیرد. همینطور به فاعل پسوند &lt;span lang=&quot;ur&quot;&gt;نے&lt;/span&gt; اضافه میشود. این قاعده فقط مربوط به &lt;strong&gt;زمان گذشته ساده و زمانهای کامل&lt;/strong&gt; (حال کامل، گذشته کامل و آینده کامل) است که از تکمیل انجام کاری خبر میرسانند. به همین دلیل،‌ به زبان اردو ارگاتیو ناقص گفته میشود. چند مثال:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;میں نے کھانا کھایا ہے۔&lt;/td&gt;
      &lt;td&gt;(من غذا خورده‌ام) &lt;span lang=&quot;ur&quot;&gt;کھایا ہے&lt;/span&gt; از &lt;span lang=&quot;ur&quot;&gt;کھانا&lt;/span&gt; که مذکر است شکل گرفته است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;احمد نے چائے پی۔&lt;/td&gt;
      &lt;td&gt;احمد چای خورد. &lt;span lang=&quot;ur&quot;&gt;چائے&lt;/span&gt; مؤنث است و &lt;span lang=&quot;ur&quot;&gt;پینا &lt;/span&gt;شکل &lt;span lang=&quot;ur&quot;&gt;پی&lt;/span&gt; به خود میگرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;بچوں نے پانی پیا۔&lt;/td&gt;
      &lt;td&gt;&lt;span lang=&quot;ur&quot;&gt;پانی&lt;/span&gt; مذکر است پس &lt;span lang=&quot;ur&quot;&gt;پینا&lt;/span&gt; شکل &lt;span lang=&quot;ur&quot;&gt;پیا&lt;/span&gt; به خود میگیرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;استثناء&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;در جمله‌ای که فعل متعدی به کار رفته، اگر مفعول با حرف ربط دنبال شده باشد و یا جمله مفعول مستقیم و واضحی نداشته باشد، &lt;em&gt;فعل شکل سوم شخص مذکر را به خود میگیرد&lt;/em&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;sup&gt;(&lt;/sup&gt;&lt;span class=&quot;citations&quot;&gt;&lt;sup&gt;&lt;a href=&quot;https://www.hamidsafdari.com/urdu-tenses/#bib-ranjan2022basicurdu&quot; id=&quot;citation-ranjan2022basicurdu&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt; &lt;sup&gt; page 308)&lt;/sup&gt;&lt;/span&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;احمد نے کتاب کو پڑھا۔&lt;/td&gt;
      &lt;td&gt;احمد کتاب را خواند. کتاب با حرف ربط &lt;span lang=&quot;ur&quot;&gt;کو&lt;/span&gt; دنبال شده است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;نہا نے لکھا۔&lt;/td&gt;
      &lt;td&gt;نها نوشت. نوشتن به مفعول نیاز دارد اما اینجا غیر مستقیم است و مفعول از جملات قبل و یا زمینه به دست می‌آید.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;فاطمہ نے پینٹ کیا۔&lt;/td&gt;
      &lt;td&gt;فاطمه رنگ کرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;شهبانو نے فلم کو دیکھا۔&lt;/td&gt;
      &lt;td&gt;شهبانو فیلم را دید.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;صوفیہ نے دروازے کو کھولا۔&lt;/td&gt;
      &lt;td&gt;صوفیه دروازه را باز کرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ارسلان نے تحفے سے انکار کیا۔&lt;/td&gt;
      &lt;td&gt;ارسلان تحفه را قبول نکرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;فعل کمکی &lt;span lang=&quot;ur&quot;&gt;چکنا&lt;/span&gt; همیشه از فاعل شکل میپذیرد. همچنین در جمله‌ای که این فعل استفاده شده باشد، فاعل پسوند &lt;span lang=&quot;ur&quot;&gt;نے&lt;/span&gt; قبول نمی‌کند. &lt;span lang=&quot;ur&quot;&gt;چکنا&lt;/span&gt; تکمیل عمل یا واقعه‌ای را نسبت به واقعه‌ای دیگر نشان میدهد و اکثراً در زمانهای کامل استفاده میشود &lt;span dir=&quot;ltr&quot;&gt;&lt;sup&gt;(&lt;/sup&gt;&lt;span class=&quot;citations&quot;&gt;&lt;sup&gt;&lt;a href=&quot;https://www.hamidsafdari.com/urdu-tenses/#bib-schmidt1999urdu&quot; id=&quot;citation-schmidt1999urdu&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt; &lt;sup&gt; page 117)&lt;/sup&gt;&lt;/span&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم فلم دیکھ چکے ہیں۔&lt;/td&gt;
      &lt;td&gt;ما فیلم را دیده‌ایم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;میں پیسے بھیج چکا/چکی ہوں۔&lt;/td&gt;
      &lt;td&gt;من پول را فرستاده‌ام.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;مصدر&lt;/h3&gt;
&lt;p&gt;مصدر کلمه‌ای است که بدون اشاره به زمان، شخص و تعداد،‌ معنی فعل را می‌رساند. مثل «کشیدن»، «ساختن» و «سرودن». در فارسی مصدر فعل پسوند «ن»‌ و در اردو پسوند &lt;span lang=&quot;ur&quot;&gt;نا&lt;/span&gt; دارد. با حذف پسوند &lt;span lang=&quot;ur&quot;&gt;نا&lt;/span&gt; از مصدر اردو، ریشه افعال به دست می‌آید. مثلاً ریشه &lt;span lang=&quot;ur&quot;&gt;چَلنا&lt;/span&gt;، &lt;span lang=&quot;ur&quot;&gt;چَل&lt;/span&gt;، ریشه &lt;span lang=&quot;ur&quot;&gt;جانا&lt;/span&gt;، &lt;span lang=&quot;ur&quot;&gt;جا&lt;/span&gt; و ریشه &lt;span lang=&quot;ur&quot;&gt;بولنا&lt;/span&gt;،‌ &lt;span lang=&quot;ur&quot;&gt;بول&lt;/span&gt; است. مصدر فعل می‌تواند با قواعد زیر به صورت اسم استفاده شود:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;به شکل &lt;span lang=&quot;ur&quot;&gt;نا&lt;/span&gt; در اردوی عامیانه. گرچه از نظر گرامری صحیح نیست:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;کہاں جانا ہے۔&lt;/td&gt;
      &lt;td&gt;رفتن به کجاست و یا کجا میروی.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;اب کیا کرنا ہے؟&lt;/td&gt;
      &lt;td&gt;حالا چه کار می‌کنی؟&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;انھیں کب آنا ہے؟&lt;/td&gt;
      &lt;td&gt;آنها چه وقت می‌آیند؟&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;مجھے آج کام کرنا ہے۔&lt;/td&gt;
      &lt;td&gt;من امروز باید کار کنم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;وقتی به صورت فاعل در جمله استفاده میشود:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;سونا صحت کے لیے اچھا ہے۔&lt;/td&gt;
      &lt;td&gt;خوابیدن برای سلامتی خوب (مفید) است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;موسیقی سننا دماغ کو سکون بخش سکتا ہے۔&lt;/td&gt;
      &lt;td&gt;گوش دادن به موسیقی میتواند آرامش بخش باشد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;به شکل &lt;span lang=&quot;ur&quot;&gt;نے&lt;/span&gt; وقتی با حرف ربط دنبال میشود. کاربرد این شکل از مصدر در اردو فراوان است:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;پینے کا پانی&lt;/td&gt;
      &lt;td&gt;آب آشامیدنی&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;جانے کے بعد&lt;/td&gt;
      &lt;td&gt;بعد از رفتن&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;لکھنے میں دلچسپی&lt;/td&gt;
      &lt;td&gt;لذت نوشتن&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ فلم دیکھنے (کے لیے) گیا.&lt;/td&gt;
      &lt;td&gt;او برای فیلم دیدن رفت.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;اس نے مجھے جانے دیا.&lt;/td&gt;
      &lt;td&gt;اجازه رفتن به من داد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;یہ کتاب پڑھنے لائق ہے.&lt;/td&gt;
      &lt;td&gt;این کتاب لیاقت خواندن دارد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;به شکل &lt;span lang=&quot;ur&quot;&gt;نی&lt;/span&gt; وقتی مفعول مونث است:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;مجھے یہ کتاب پڑھنی ہے۔&lt;/td&gt;
      &lt;td&gt;من باید این کتاب را بخوانم. در اینجا کتاب مونث است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;اس نے بات کرنی چاہی۔&lt;/td&gt;
      &lt;td&gt;او می‌خواست حرف بزند. اینجا &lt;span lang=&quot;ur&quot;&gt;بات&lt;/span&gt; مونث است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;زمانها&lt;/h3&gt;
&lt;p&gt;حالا یک به یک به زمانها میپردازیم. با زمانهای ساده شروع، سپس به زمانهای جاری، کامل و در آخر به زبانهای کامل جاری میپردازیم. برای هر زبانی پسوندهایی را که مورد استفاده است نشان می‌دهیم و با تعدادی مثال چگونگی استفاده از آن زمان را در عمل می‌بینیم.&lt;/p&gt;
&lt;h3&gt;زمان حال ساده&lt;/h3&gt;
&lt;p&gt;زمان حال ساده به انجام کاری بر حسب عادت، حقایق عمومی و کارهایی که به طور منظم و تکراری انجام میشود اشاره میکند. زمان حال ساده با در نظرداشت جنس و تعداد، با اضافه کردن &lt;span lang=&quot;ur&quot;&gt;تا، تی، تے&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;تیں&lt;/span&gt; نظر به نیاز و پسوند زمان حال به ریشه فعل به دست می‌آید:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ریشه فعل +‌ (پسوند عادتی) +‌ شکل حال &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند عادتی&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;‌ × زمان حال&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہوں&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہو&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ہے&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ہیں&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;‌ یہ راستہ عالم ہفتم کی طرف جاتا ہے۔&lt;/td&gt;
      &lt;td&gt;این راه به ناکجا آباد میرود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;سیاہ رات کا اختتام سفید ہے۔&lt;/td&gt;
      &lt;td&gt;پایان شب سیه سپید است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;زویا ریاضی کے شعبے میں پڑھتی ہے۔&lt;/td&gt;
      &lt;td&gt;زویا در رشته ریاضی درس میخواند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;سورج مشرق میں طلوع ہوتا ہے۔&lt;/td&gt;
      &lt;td&gt;خورشید در مشرق طلوع میکند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;پانی زندگی کا بنیادی جزو ہے۔&lt;/td&gt;
      &lt;td&gt;آب جز اساسی زندگی است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;احمد ہر صبح کتاب پڑھتا ہے۔&lt;/td&gt;
      &lt;td&gt;احمد هر صبح کتاب میخواند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم ہر ہفتے بازار جاتے ہیں&lt;/td&gt;
      &lt;td&gt;ما هر هفته بازار میرویم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;میں آج بہت خوش ہوں۔&lt;/td&gt;
      &lt;td&gt;من امروز بسیار خوشحال هستم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;یہ ٹرین ہر روز شام کو چلتی ہے۔&lt;/td&gt;
      &lt;td&gt;این قطار/ریل هر روز بعد از ظهر حرکت میکند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;زمان گذشته ساده&lt;/h3&gt;
&lt;p&gt;زمان گذشته ساده به اتفاقات یا کارهایی در گذشته اتفاق افتاده و تمام شده‌اند اشاره میکند. برای تبدیل فعل به گذشته ساده پسوند گذشته را به ریشه فعل اضافه میکنیم:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ریشه فعل +‌ پسوند گذشته&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند گذشته&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ا/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ے/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ا/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ے/&lt;span class=&quot;text-sky-400&quot;&gt;یں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;به یاد داشته باشید که گذشته ساده در اردو تابع قاعده ارگاتیو است. فعلهای متعدی از مفعول شکل میپذیرند و به فاعل پسوند &lt;span lang=&quot;ur&quot;&gt;نے&lt;/span&gt; اضافه میشود. اما فعل لازم بدین صورت صرف میشود:&lt;/p&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہنسنا/&lt;/span&gt;خندیدن&lt;/th&gt;
      &lt;th lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;میں&lt;/th&gt;
      &lt;th lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;تم&lt;/th&gt;
      &lt;th lang=&quot;ur&quot; class=&quot;text-center border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;مذکر&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;ہنسا&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;ہنسے&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;text-center border-e-2&quot;&gt;ہنسا&lt;/td&gt;
      &lt;td colspan=&quot;3&quot; lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;ہنسے&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;مؤنث&lt;/td&gt;
      &lt;td colspan=&quot;3&quot; lang=&quot;ur&quot; class=&quot;text-center border-e-2&quot;&gt;ہنسی&lt;/td&gt;
      &lt;td colspan=&quot;3&quot; lang=&quot;ur&quot; class=&quot;text-center&quot;&gt;ہنسیں&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل لازم&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;اس شہر میں ایک عظیم لائبریری تھی۔&lt;/td&gt;
      &lt;td&gt;در این شهر کتابخانه بزرگی وجود داشت.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ دکان بند ہو گئی۔&lt;/td&gt;
      &lt;td&gt;آن مغازه بسته شد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;اس زمانے میں لاہور پنجاب کا دارالحکومت تھا۔&lt;/td&gt;
      &lt;td&gt;در آن زمان، لاهور پایتخت ایالت پنجاب بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;کل سورج ڈھلنے سے پہلے بارش ہوئی۔&lt;/td&gt;
      &lt;td&gt;دیروز قبل از غروب آفتاب باران بارید.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;قدیم مصر میں لوگ نیل ندی پر انحصار کرتے تھے۔&lt;/td&gt;
      &lt;td&gt;مردم مصر باستان به رودخانه نیل متکی بودند&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ قلعہ شہر کا سب سے بلند مقام تھا۔&lt;/td&gt;
      &lt;td&gt;آن قلعه بلندترین نقطه شهر بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;کل رات بہت تیز بارش ہوئی۔&lt;/td&gt;
      &lt;td&gt;دیشب باران خیلی شدیدی بارید.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل متعدی بدون حرف ربط و مفعول مشخص&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;شاہ جہاں نے تاج محل بنایا۔&lt;/td&gt;
      &lt;td&gt;شاه جهان تاج محل را ساخت.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;زینب نے کل اپنے گاؤں میں ایک درخت لگایا۔&lt;/td&gt;
      &lt;td&gt;زینب دیروز در روستای خود یک درخت نصب کرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم نے گزشتہ جمعہ کو نانی سے ملاقات کی۔&lt;/td&gt;
      &lt;td&gt;جمعه گذشته به دیدن مادرکلان رفتیم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;احمد نے گزشتہ سال امتحان میں اول پوزیشن لی۔&lt;/td&gt;
      &lt;td&gt;احمد سال گذشته در امتحان رتبه اول را کسب کرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;احمد نے ایک کتاب پڑھی۔&lt;/td&gt;
      &lt;td&gt;احمد کتاب خواند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;احمد نے دو کتابیں پڑھیں۔&lt;/td&gt;
      &lt;td&gt;احمد دو کتاب خواند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;زینب نے ایک کہانی سنی۔&lt;/td&gt;
      &lt;td&gt;زینب داستانی شنید.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;زینب نے کئی کہانیاں سنیں۔&lt;/td&gt;
      &lt;td&gt;زینب داستان‌های زیادی شنید.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;زینب نے گانا گایا۔&lt;/td&gt;
      &lt;td&gt;زینب ترانه‌ای خواند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل متعدی همراه با حرف ربط و یا مفعول نامشخص&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;بارش نے رات کو سڑکوں کو ڈبو دیا۔&lt;/td&gt;
      &lt;td&gt;باران شب هنگام سرکها را پر از آب کرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;احمد نے کتاب کو پڑھا۔&lt;/td&gt;
      &lt;td&gt;احمد کتاب را خواند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;صبح کی روشنی میں اس نے سکون سے لکھا۔&lt;/td&gt;
      &lt;td&gt;در روشنی صبح، او با آرامش نوشت (به نوشتن شروع کرد).&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;اونچی پہاڑی سے علی نے دور تک دیکھا۔&lt;/td&gt;
      &lt;td&gt;از تپه بلند، علی تا دوردست دید.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;شدید بھوک لگنے پر احمد نے سارا کھانا کھایا۔&lt;/td&gt;
      &lt;td&gt;(به خاطر) گرسنگی شدید، احمد همه غذا را خورد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;زمان گذشته عادتی&lt;/h3&gt;
&lt;p&gt;گذشته عادتی انجام اتفاق و یا کاری بر حسب عادت در گذشته را نشان میدهد. گذشته عادتی با اضافه کردن پسوند عادتی و شکل گذشته فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; به ریشه فعل به دست می‌آید:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ریشه فعل +‌ پسوند عادتی +‌ شکل گذشته &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند عادتی&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; × زمان گذشته&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;ہر روز اخبار پڑھتا تھا۔&lt;/td&gt;
      &lt;td&gt;هر روز روزنامه می‌خواند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ ہر ہفتے کہانیاں لکھتی تھیں۔&lt;/td&gt;
      &lt;td&gt;آنها (آن زنها) هر هفته داستان‌ها می‌نوشتند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم رات کو ستاروں کو دیکھتے تھے۔&lt;/td&gt;
      &lt;td&gt;ما شب‌ها به ستاره‌ها را تماشا می‌کردیم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;سحر ہر صبح دعا مانگتی تھی۔&lt;/td&gt;
      &lt;td&gt;سحر هر صبح دعا می‌کرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;علی ہر روز خط لکھتا تھا۔&lt;/td&gt;
      &lt;td&gt;علی هر روز نامه می‌نوشت.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;سلمہ ہر رات نظمیں پڑھتی تھی۔&lt;/td&gt;
      &lt;td&gt;سلمه هر شب شعر می‌خواند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;بارش ہر موسم میں فصلیں سیراب کرتی تھی۔&lt;/td&gt;
      &lt;td&gt;باران هر فصل محصولات را آبیاری می‌کرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;زمان آینده ساده&lt;/h3&gt;
&lt;p&gt;زمان آینده ساده کار یا حالتی را نشان می‌دهد که در آینده اتفاق می‌افتد. زمان آینده ساده در اردو با اضافه کردن پسوند آینده به ریشه فعل شکل میگیرد:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ریشه فعل +‌ پسوند آینده&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند آینده&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;وں گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;و گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;‌ے گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;یں گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;تم کام کرو گے۔&lt;/td&gt;
      &lt;td&gt;تو کار خواهی کرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم خط لکھیں گے۔&lt;/td&gt;
      &lt;td&gt;ما نامه‌ها خواهیم نوشت.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;میں کھانا کھاوں گا۔&lt;/td&gt;
      &lt;td&gt;من غذا خواهم خورد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ کتاب پڑھے گا۔&lt;/td&gt;
      &lt;td&gt;او کتاب خواهد خواند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ جائے گا۔&lt;/td&gt;
      &lt;td&gt;او خواهد رفت.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;بارش ہوگی۔&lt;/td&gt;
      &lt;td&gt;باران خواهد بارید.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;بچے کھیلیں گے۔&lt;/td&gt;
      &lt;td&gt;اطفال بازی خواهند کرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;زمان حال جاری&lt;/h3&gt;
&lt;p&gt;زمان حال جاری از انجام کار یا واقعه‌‌ای در حال حاضر خبر میرساند. در اردو زمان حال جاری با اضافه کردن پسوند جاری و شکل حال &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; به وجود می‌آید:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ ریشه فعل +‌ پسوند جاری +‌ شکل حال &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند جاری&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;‌ × زمان حال&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہوں&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہو&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ہے&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ہیں&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;در فارسی فرقی بین زمان حال ساده و حال جاری وجود ندارد. بلکه برای رساندن مطلب از اینکه کاری در همین لحظه در حال وقوع است از دیگر کلمات استفاده میکنیم. مثلا میگوییم «من حالا به پارک میروم». و یا به صورت عامیانه میگوییم «رفته روان هستم»‌ و یا «دارم میروم».&lt;/p&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;میں جا رہا ہوں۔&lt;/td&gt;
      &lt;td&gt;من میروم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ جا رہی ہے۔&lt;/td&gt;
      &lt;td&gt;او (زن) میرود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ جا رہا ہے۔&lt;/td&gt;
      &lt;td&gt;او (مرد) میرود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم کتاب پڑھ رہے ہیں۔&lt;/td&gt;
      &lt;td&gt;ما کتاب میخوانیم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ کھانا کھا رہی ہے۔&lt;/td&gt;
      &lt;td&gt;او غذا میخورد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;زمان گذشته جاری&lt;/h3&gt;
&lt;p&gt;زمان گذشته جاری از کار یا اتفاقی که در گذشته در جریان بوده خبر میرساند. در فارسی با گذاشتن «می» قبل از حالت گذشته فعل، زمان گذشته جاری را نشان میدهیم. در اردو برای ساختن حالت زمان گذشته جاری، بعد از فعل، پسوند جاری و شکل گذشته فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; را قرار میدهیم:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ریشه فعل +‌ پسوند جاری +‌ شکل گذشته &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند جاری&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; × زمان گذشته&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;میں جا رہا تھا۔&lt;/td&gt;
      &lt;td&gt;من میرفتم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ جا رہا تھا۔&lt;/td&gt;
      &lt;td&gt;او (مرد) میرفت.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ جا رہی تھی۔&lt;/td&gt;
      &lt;td&gt;او (زن) میرفت.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ جا رہے تھے۔&lt;/td&gt;
      &lt;td&gt;آنها (مردها و یا مردها و زنها با هم) میرفتند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ جا رہے تھیں۔&lt;/td&gt;
      &lt;td&gt;آنها (آن زنها) میرفتند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم کتاب پڑھ رہے تھے۔&lt;/td&gt;
      &lt;td&gt;ما کتاب میخواندیم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ کھانا کھا رہی تھی۔&lt;/td&gt;
      &lt;td&gt;او (زن) غذا میخورد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;زمان آینده جاری&lt;/h3&gt;
&lt;p&gt;زمان آینده جاری انجام کار یا اتفاقی را که در آینده جریان دارد نشان میدهد. آینده جاری با اضافه کردن پسوند جاری و شکل آینده فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; به دست می‌آید:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ ریشه فعل +‌ پسوند جاری +‌ شکل آینده &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند جاری&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; × زمان آینده&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہوں گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہو گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ہو گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ہوں گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;میں کھا رہا ہوں گا۔&lt;/td&gt;
      &lt;td&gt;من در حال غذا خوردن خواهم بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;میں جا رہی ہوں گی۔&lt;/td&gt;
      &lt;td&gt;من (زن) در حال رفتن خواهم بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ جا رہی ہوگی۔&lt;/td&gt;
      &lt;td&gt;او (زن) در حال رفتن خواهد بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ جا رہے ہوں گے۔&lt;/td&gt;
      &lt;td&gt;آنها در حال رفتن خواهند بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ کنسرٹ کو جا رہی ہوں گی۔&lt;/td&gt;
      &lt;td&gt;آن (زنها)‌ در حال رفتن به کنسرت خواهند بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم کتاب پڑھ رہے ہوں گے۔&lt;/td&gt;
      &lt;td&gt;ما در حال کتاب خواندن خواهیم بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;کل شام وہ بات کر رہا ہوگا۔&lt;/td&gt;
      &lt;td&gt;فردا شب او در حال حرف زدن خواهد بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;زمان حال کامل&lt;/h3&gt;
&lt;p&gt;زمان حال کامل از انجام کار و یا حالتی خبر میرساند که به تازگی تمام شده یا به زمان حال حاضر ارتباط دارد؛ مانند «رسیده‌ام». زمان حال کامل تابع قانون ارگاتیو است. ساختار تشکیل این فعل بدین صورت است:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ ریشه فعل +‌ پسوند زمان کامل (چکا، لیا)‌‌ +‌ شکل حال &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;و یا&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ ریشه فعل +‌ حالت گذشته فعل +‌ شکل حال &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr class=&quot;border-b-2&quot;&gt;
      &lt;th&gt;پسوند زمان کامل&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;چکا/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;چکے/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;چکا/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;چکے/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;‌ × زمان حال&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہوں&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہو&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ہے&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ہیں&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل لازم&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ اسکول جا چکی ہے۔&lt;/td&gt;
      &lt;td&gt;او به مکتب/مدرسه رفته است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;بچہ سو گیا ہے۔&lt;/td&gt;
      &lt;td&gt;طفل/بچه خوابیده است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;کیا تم کبھی لندن گئے ہو؟&lt;/td&gt;
      &lt;td&gt;آیا تا حالا لندن رفته‌ای؟&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;موسم بدل گیا ہے۔&lt;/td&gt;
      &lt;td&gt;هوا تغییر کرده است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل متعدی بدون حرف ربط و مفعول مشخص&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم کراچی شہر دیکھ چکے ہیں۔&lt;/td&gt;
      &lt;td&gt;ما شهر کراچی را دیده‌ایم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;میں نے کام ختم کر لیا ہے۔&lt;/td&gt;
      &lt;td&gt;من کار را تمام کرده‌ام.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;اُس نے کتاب لکھ لی ہے۔&lt;/td&gt;
      &lt;td&gt;او کتاب را نوشته است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;انھوں نے گھر بیچ دیا ہے۔&lt;/td&gt;
      &lt;td&gt;آنها خانه را فروخته‌اند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;میں نے کھانا کھا لیا/لی ہوں۔&lt;/td&gt;
      &lt;td&gt;من غذا را خورده‌ام.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;تم کام کر چکے ہو۔&lt;/td&gt;
      &lt;td&gt;تو کار را کرده‌ای.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل متعدی همراه با حرف ربط و یا مفعول نامشخص&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;میں نے بچوں کو دیکھا ہے۔&lt;/td&gt;
      &lt;td&gt;من اطفال را دیده‌ام. (&lt;span lang=&quot;ur&quot;&gt;بچوں&lt;/span&gt; جمع است)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم نے گاڑی پر پانی ڈالا ہے۔&lt;/td&gt;
      &lt;td&gt;ما روی موتر/خودرو آب انداخته‌ایم. (&lt;span lang=&quot;ur&quot;&gt;گاڑی&lt;/span&gt; مونث است)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;اس نے نوکر سے کام کروایا ہے۔&lt;/td&gt;
      &lt;td&gt;او کار را توسط خدمتکار انجام داد. (خدمتکار را موظف یا مجبور کرد کار را انجام دهد).&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;میں نے دروازے کو بند کیا ہے۔&lt;/td&gt;
      &lt;td&gt;من دروازه را بسته‌ام. (&lt;span lang=&quot;ur&quot;&gt;دروازے&lt;/span&gt; مونث است)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;فرق بین «&lt;span lang=&quot;ur&quot;&gt;چکا&lt;/span&gt;» و «&lt;span lang=&quot;ur&quot;&gt;لیا&lt;/span&gt;» &lt;span class=&quot;citations&quot;&gt;&lt;sup&gt;&lt;a href=&quot;https://www.hamidsafdari.com/urdu-tenses/#bib-wiki_lightverb_lena_cukna&quot; id=&quot;citation-wiki_lightverb_lena_cukna&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;در زمانهای کامل،‌ به غیر از پسوند &lt;span lang=&quot;ur&quot;&gt;چُکا&lt;/span&gt; میتوان از &lt;span lang=&quot;ur&quot;&gt;لیا&lt;/span&gt; نیز استفاده کرد. با این فرق که در شهرهای بزرگ مثل اسلام آباد، &lt;span lang=&quot;ur&quot;&gt;چکا&lt;/span&gt; بیشتر استفاده میشود. از سوی دیگر، &lt;span lang=&quot;ur&quot;&gt;لیا&lt;/span&gt; اغلب در محاوره‌ برای تاکید انجام کار توسط شخص استفاده می‌شود:&lt;/p&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;میں نے ہوم ورک کر لیا ہے۔&lt;/td&gt;
      &lt;td&gt;من (خودم) کارخانگی را انجام داده‌ام.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;انھوں نے ہوم ورک کر چکے ہیں۔&lt;/td&gt;
      &lt;td&gt;آنها کارهای خانگی خود را انجام داده اند. به این منظور که کار خانگی‌ها انجام داده شده است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;زمان گذشته کامل&lt;/h3&gt;
&lt;p&gt;زمان گذشته کامل به انجام کار و یا حالتی اشاره میکند که قبل از کار دیگری و یا زمانی مشخص در گذشته انجام شده است. به یاد داشته باشید که زمان گذشته کامل نیز تابع قانون ارگاتیو است. در فارسی حالت گذشته فعل و سپس حالت گذشته فعل بودن برای نشان دادن زمان گذشته کامل استفاده میشود. مثلا «شبنم زحمت زیادی برای مسابقه کشیده بود». در اردو هم مشابه همین ساختار وجود دارد:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ شکل گذشته فعل + پسوند زمان کامل +‌ شکل گذشته &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;و یا&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ شکل گذشته فعل + شکل گذشته &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو /tu/&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند گذشته&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ا/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ے/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ا/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ے/&lt;span class=&quot;text-sky-400&quot;&gt;یں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class=&quot;border-b-2&quot;&gt;
      &lt;th&gt;پسوند زمان کامل&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;چکا/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;چکے/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;چکا/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;چکے/&lt;span class=&quot;text-sky-400&quot;&gt;چکی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; ×‌ زمان گذشته&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل لازم&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ سٹیشن پہنچنے سے پہلے ٹرین جا چکی تھی۔&lt;/td&gt;
      &lt;td&gt;ریل/قطار قبل از رسیدن او، ایستادگاه/ایستگاه را ترک کرده بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;جب ہم نے دروازہ کھولا، بچہ سو گیا تھا۔&lt;/td&gt;
      &lt;td&gt;وقتی ما دروازه را باز کردیم،‌ اطفال خوابیده بودند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;صبح تک ستارے غائب ہو چکے تھے۔&lt;/td&gt;
      &lt;td&gt;تا صبح، ستاره‌ها ناپدید شده بودند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل متعدی بدون حرف ربط و مفعول مشخص&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;میں نے خط لکھنے کے بعد ہی اسے بھیجا تھا۔&lt;/td&gt;
      &lt;td&gt;من نامه را دقیقا/درست بعد از نوشتن فرستاده بودم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;انھوں نے خبر سننے سے پہلے ہی فیصلہ کر لیا تھا۔&lt;/td&gt;
      &lt;td&gt;آنها قبل از شنیدن خبر تصمیم خود گرفته بودند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم نے کہانی کئی بار پڑھی تھی۔&lt;/td&gt;
      &lt;td&gt;ما چند بار داستان را خوانده بودیم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل متعدی همراه با حرف ربط و یا مفعول نامشخص&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;وزیر اعظم نے عوام کو خطاب کیا تھا۔&lt;/td&gt;
      &lt;td&gt;نخست وزیر برای مردم سخنرانی کرده بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;بچوں نے ہاتھی کو دیکھا تھا۔&lt;/td&gt;
      &lt;td&gt;بچه‌ها فیل را دیده بودند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;پولیس نے چوروں کو پکڑا تھا۔&lt;/td&gt;
      &lt;td&gt;پلیس سارقان را دستگیر کرده بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;انھوں نے بہت کوشش کی تھی۔&lt;/td&gt;
      &lt;td&gt;آنها زیاد تلاش کرده بودند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;میں نے سنا تھا کہ وہ واپس نہیں آئیں گے۔&lt;/td&gt;
      &lt;td&gt;من شنیده بودم که آنها برنمیگردند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;زمان آینده کامل&lt;/h3&gt;
&lt;p&gt;زمان آینده کامل در برای توصیف عملی استفاده می‌شود که تا زمان مشخصی یا قبل از عمل دیگری در آینده تکمیل خواهد شد. این زمان بر تکمیل یک عمل نسبت به یک نقطه در آینده تمرکز دارد. این شکل از فعل در اردو با یک جا کردن حالت گذشته فعل، پسوند زمان کامل و حالت آینده فعل &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; به دست می‌آید. در فارسی بعد از حالت گذشته فعل،‌ حالت آینده فعل خواستن را استفاده میکنیم. مثل «رفته خواهم بود» و «خورده خواهم بود». در فارسی عامیانه افغانستان، اغلب به جای «خواهند بود» گفته میشود «خواهد بودند»، همینطور «رفته خواهد بودم» و «خورده خواهد بودم» و غیره. ساختار تشکیل این فعل بدین صورت است:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ شکل گذشته فعل +‌ پسوند زمان کامل +‌ شکل آینده &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;و یا&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ شکل گذشته فعل + شکل آینده &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند گذشته&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ا/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ے/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ا/&lt;span class=&quot;text-sky-400&quot;&gt;ی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ے/&lt;span class=&quot;text-sky-400&quot;&gt;یں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; × زمان آینده&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہوں گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہو گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ہو گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ہوں گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل لازم&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;اگلے سال تک میرا بھائی یونیورسٹی سے فارغ ہو چکا ہو گا۔&lt;/td&gt;
      &lt;td&gt;تا سال آینده برادرم از دانشگاه فارغ‌التحصیل شده خواهد بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;جب آپ واپس آئیں گے، میں جا چکا ہوں گا۔&lt;/td&gt;
      &lt;td&gt;وقتی شما برگردید، من رفته خواهم بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;سورج نکلنے سے پہلے اوس گر چکی ہو گی۔&lt;/td&gt;
      &lt;td&gt;قبل از طلوع خورشید، شبنم افتاده خواهد بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل متعدی با مفعول مشخص و بدون حرف ربط بعد از مفعول&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;2030 تک حکومت نے ملک بھر میں نئے اسکول بنا لیے ہوں گے۔&lt;/td&gt;
      &lt;td&gt;تا سال ۲۰۳۰، دولت مکتب‌های جدیدی را در سراسر کشور ساخته خواهد بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;امتحان سے پہلے ہم نے تمام نصاب پڑھ لیا ہو گا۔&lt;/td&gt;
      &lt;td&gt;پیش از امتحان، ما تمام نصاب را خوانده خواهیم بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;جب آپ آئیں گے، میں نے کھانا تیار کر لیا ہو گا۔&lt;/td&gt;
      &lt;td&gt;وقتی شما بیایید، من غذا را آماده کرده خواهم بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;فعل متعد با مفعول نامشخص و یا حرف اضاف بعد از مفعول&lt;/h4&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;حکام نے تمام متاثرین کو امداد فراہم کر دی ہو گی۔&lt;/td&gt;
      &lt;td&gt;مقامات تمام قربانیان را کمک فراهم کرده خواهند بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;پولیس نے مشتبہ افراد کو صبح تک گرفتار کر لیا ہو گا۔&lt;/td&gt;
      &lt;td&gt;پلیس مظنونان را تا صبح بازداشت کرده خواهد بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;انتظامیہ نے تمام ضروری اقدامات کر لیے ہوں گے۔&lt;/td&gt;
      &lt;td&gt;اداره تمام اقدامات لازم را انجام داده خواهد بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;میں نے تمام قواعد کو یاد کر لیا ہو گا۔&lt;/td&gt;
      &lt;td&gt;من تمام قواعد را حفظ کرده خواهم بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;انھوں نے اس معاملے پر پہلے ہی غور کر لیا ہو گا۔&lt;/td&gt;
      &lt;td&gt;آنها به این موضوع قبلاً فکر کرده خواهند بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;زمانهای کامل جاری&lt;/h3&gt;
&lt;p&gt;زمانهای کامل جاری از جریان کار و یا حالتی نظر به یک نقطه زمانی در گذشته، حال و یا آینده خبر میرسانند. زمانهای کامل جاری تابع قاعده ارگاتیو نیستند و فعل همیشه از فاعل شکل میپذیرد. گرچه ساختار گرامری این زمانها وجود دارد، در اردوی روزمره کمتر و بیشتر در نوشتار رسمی، ادبیات و داستان‌ مورد استفاده قرار میگیرند. در هر کدام از این زمانها،‌ میتوان مطلب را با زمانهای ساده‌تر بیان کرد. در فارسی دقیقا همین کار را میکنیم و ساختار جداگانه‌ای برای این زمانها نداریم. برای همین مطالعه نکردن این سه زمان مشکلی در یادگیری زبان اردو به وجود نخواهد آورد. در اینجا صرف برای کامل بودن مقاله به این زمانها میپردازیم.&lt;/p&gt;
&lt;h3&gt;حال کامل جاری&lt;/h3&gt;
&lt;p&gt;زمان حال کامل جاری برای توصیف عملی که در گذشته شروع شده و هنوز در زمان حال ادامه دارد، استفاده می‌شود. تقریباً همیشه شامل یک مرجع زمانی است (مثلاً «به مدت دو ساعت»، «از صبح»). ساختار تشکیل این فعل به این صورت است:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ ذکر زمانی در گذشته +‌ ... +‌ ریشه فعل +‌ پسوند عادتی +‌ پسوند جاری +‌ شکل حال &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;این زمان با حذف پسوند عادتی، به حال جاری تبدیل میشود. در اردوی روزمره نیز می‌توان با ذکر زمانی در گذشته و استفاده از زمان حال جاری، عین مطلب را رساند. در فارسی نیز همین کار را میکنیم. مثل این جمله؛ «یک ساعت می‌شود که کودک گریه میکند». فرق این زمان با دیگر زمانهای کامل جاری در این است که چون انجام عمل شامل زمان حال میشود، مدت زمان عمل به صورت واضح بیان نمیشود. مثلا در این جمله که گذشته کامل جاری است «وقتی به خانه رسیدم، او دو ساعت بود که گریه میکرد»،‌ مدت زمان عمل (گریه کردن)، دو ساعت ذکر شده است. اما در جمله «او از صبح گریه میکرد»، مدت زمان عمل از صبح تا حالا است.&lt;/p&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند عادتی&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند جاری&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; × زمان حال&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہوں&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہو&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ہے&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ہیں&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ صبح سے رو(تا) رہا ہے۔&lt;/td&gt;
      &lt;td&gt;او از صبح گریه میکند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;کئی گھنٹوں سے بارش ہو(تی) رہی ہے۔&lt;/td&gt;
      &lt;td&gt;چند ساعت است که باران می‌بارد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;بچے دو گھنٹے سے کھیل(تے) رہے ہیں۔&lt;/td&gt;
      &lt;td&gt;بچه‌ها دو ساعت است که بازی می‌کنند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;میں پچھلے سال سے اس شہر میں رہ(تا) رہا ہوں۔&lt;/td&gt;
      &lt;td&gt;من از سال گذشته در این شهر زندگی میکنم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ہم صبح سے اخبار پڑھ(تے) رہے ہیں۔&lt;/td&gt;
      &lt;td&gt;ما از صبح روزنامه میخوانیم. یعنی صبح روزنامه خواندن را شروع کردیم و هنوز این کار ادامه دارد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ کئی دنوں سے اپنی کتاب لکھ(تی) رہی ہے۔&lt;/td&gt;
      &lt;td&gt;او چند روز است که کتابش را می‌نویسد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;طلباء تین گھنٹے سے سوال حل کر(تے) رہے ہیں۔&lt;/td&gt;
      &lt;td&gt;دانشجویان سه ساعت است که سؤال حل میکنند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;انتظامیہ اس مسئلے پر پچھلے ماہ سے غور کر(تی) رہی ہے۔&lt;/td&gt;
      &lt;td&gt;اداره از ماه گذشته به این مشکل فکر میکند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;گذشته کامل جاری&lt;/h3&gt;
&lt;p&gt;گذشته کامل جاری عمل یا حالتی را که تا نقطه خاصی در گذشته ادامه داشته است را بیان میکند. ساختار این زمان:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ زمانی در گذشته +‌ ... +‌ مدت زمان +‌ ریشه فعل + پسوند عادتی + پسوند جاری + شکل گذشته &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;در این زمان نیز میتوان با حذف پسوند عادتی مطلب را ادا کرد اما باید نقطه زمانی در گذشته و مدت زمانی که عمل در جریان بوده را ذکر کرد؛ «وقتی او به خانه رسید، ده دقیقه بود که همه غذا می‌خوردند».&lt;/p&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند عادتی&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند جاری&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; ×‌ زمان گذشته&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;تھا/&lt;span class=&quot;text-sky-400&quot;&gt;تھی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;تھے/&lt;span class=&quot;text-sky-400&quot;&gt;تھیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;جب میں وہاں پہنچا، بچہ صبح سے سو(تا) رہا تھا۔&lt;/td&gt;
      &lt;td&gt;وقتی به آنجا رسیدم، کودک از صبح در حال خوابیدن بود.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;کئی دنوں سے موسم بدل(تا) رہا تھا جب بالآخر بارش ہوئی۔&lt;/td&gt;
      &lt;td&gt;چند روز بود که آب و هوا تغییر میکرد تا اینکه بالاخره باران بارید.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;پروفیسر کے آنے تک، طلباء کئی گھنٹوں سے کتابیں پڑھ(تے) رہے تھے۔&lt;/td&gt;
      &lt;td&gt;تا قبل از رسیدن استاد، دانشجویان چند ساعت بود که در حال کتاب خواندن بودند. (و یا چند ساعت بود که دانشجویان کتاب میخواندند).&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;وہ کئی سالوں سے اپنا یہ کاروبار چلا(تا) رہا تھا جب اس نے اسے بیچنے کا فیصلہ کیا۔&lt;/td&gt;
      &lt;td&gt;او چند سال بود که در حال اداره کسب‌وکارش بود که تصمیم گرفت آن را بفروشد. (او چند سال بود که کسب‌وکارش را اداره میکرد تا تصمیم گرفت آن را
        بفروشد).
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;آینده کامل جاری&lt;/h3&gt;
&lt;p&gt;این زمان برای توصیف عمل یا حالتی استفاده می‌شود که تا نقطه خاصی در آینده ادامه داشته و برای مدتی ادامه خواهد داشت. ساختار این زمان به این شکل است:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‌ زمانی در آینده +‌ ... +‌ مدت زمان +‌ ریشه فعل +‌ پسوند عادتی +‌ پسوند جاری +‌ شکل آینده &lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;مانند دیگر زمانهای کامل جاری،‌ میتوان پسوند عادتی را در این زمان حذف و مطلب را بیان کرد. اما باید در نظر داشت که عمل یا حالت تا نقطه زمانی در آینده و برای مدتی جریان خواهد داشت؛ «وقتی آنها به دانشگاه برسند، دو هفته است که درسها جریان دارد».&lt;/p&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;thead&gt;
    &lt;tr lang=&quot;ur&quot;&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;میں&lt;/th&gt;
      &lt;th&gt;تم&lt;/th&gt;
      &lt;th class=&quot;border-e-2&quot;&gt;وہ / تو&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;ہم&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;آپ&lt;/th&gt;
      &lt;th class=&quot;text-center&quot;&gt;وہ&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند عادتی&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;تا/&lt;span class=&quot;text-sky-400&quot;&gt;تی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;تے/&lt;span class=&quot;text-sky-400&quot;&gt;تیں&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;پسوند جاری&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;رہا/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;رہے/&lt;span class=&quot;text-sky-400&quot;&gt;رہی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;span lang=&quot;ur&quot;&gt;ہونا&lt;/span&gt; × زمان آینده&lt;/th&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہوں گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot;&gt;ہو گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; class=&quot;border-e-2&quot;&gt;ہو گا/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
      &lt;td lang=&quot;ur&quot; colspan=&quot;3&quot; class=&quot;text-center&quot;&gt;ہوں گے/&lt;span class=&quot;text-sky-400&quot;&gt;گی&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;div class=&quot;urdu-examples&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;آنے والے سال تک، وہ دس سال سے اس کمپنی میں کام کر(تا) رہا ہو گا۔&lt;/td&gt;
      &lt;td&gt;تا سال آینده، ده سال خواهد بود که او در این شرکت کار می کند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;جب تک تم گھر پہنچو گے، بارش تین گھنٹے سے ہو(تی) رہی ہو گی۔&lt;/td&gt;
      &lt;td&gt;تا زمانی که به خانه برسی، باران برای سه ساعت است که میبارد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;اگلے ماہ تک، یہ کتاب بازار میں چھ ماہ سے فروخت ہو(تی) رہی ہو گی۔&lt;/td&gt;
      &lt;td&gt;تا ماه آینده، شش ماه خواهد شد که این کتاب در بازار به فروش میرسد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ایک ماہ بعد، شہری انتظامیہ پل کی تعمیر پر ایک سال سے کام کر(تی) رہی ہو گی۔&lt;/td&gt;
      &lt;td&gt;پس از یک ماه، یک سال خواهد شد که اداره شهری روی ساخت پل کار می کند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;دو بجے تک، بچہ ایک گھنٹے سے رو(تا) رہا ہو گا۔&lt;/td&gt;
      &lt;td&gt;تا ساعت دو، یک ساعت خواهد شد که کودک گریه میکند.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;جب سورج غروب ہو گا، کسان صبح سے کھیت میں ہل چلا(تا) رہا ہو گا۔&lt;/td&gt;
      &lt;td&gt;وقتی خورشید غروب کند، کشاورز از صبح در مزرعه شخم می زده است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;امتحان شروع ہونے تک، طالب علم دو ماہ سے تیاری کر(تا) رہا ہو گا۔&lt;/td&gt;
      &lt;td&gt;تا شروع امتحان، دو ماه میشود که دانش آموز آمادگی میگیرد.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2030 تک، حکومت پانچ سال سے اس منصوبے پر کام کر(تی) رہی ہو گی۔&lt;/td&gt;
      &lt;td&gt;تا سال 2030، پنج سال میشود که دولت روی این پروژه کار کرده است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;برسوں بعد بھی، ملک میں اقتصادی اصلاحات پر بحث جاری ہو(تی) رہی ہو گی۔&lt;/td&gt;
      &lt;td&gt;حتی پس از سال ها، بحث بر سر اصلاحات اقتصادی در کشور ادامه خواهد داشت.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;دن ڈھلنے تک، ہم چھ گھنٹے سے سفر کر(تے) رہے ہوں گے۔&lt;/td&gt;
      &lt;td&gt;تا غروب آفتاب، ما شش ساعت است که سفر می کنیم.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;اگلی صبح تک، دریا میں پانی کئی دنوں سے بہہ(تا) رہا ہو گا۔&lt;/td&gt;
      &lt;td&gt;تا صبح فردا، آب در رودخانه برای چند روز در حال جریان بوده است.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;جمع بندی&lt;/h3&gt;
&lt;p&gt;با شروع از ضمایر و بررسی انواع افعال (لازم و متعدی) و قاعده ارگاتیو، این مقاله کوشید تا هر یک از زمان‌ها را با نمونه‌های کاربردی روشن سازد. گرچه گستردگی مبحث زمان در اردو به طولانی‌شدن این نوشته انجامید، اما هدف اصلی کمک به فهم آسان‌تر آن بوده است. بسیار واضح است که جنبه‌های دیگری مانند افعال بی‌قاعده، مرکب، سببی و حالت مجهول در اینجا گنجانده نشده‌اند. این مقاله تلاشی است در جهت آموزش؛ و همچون هر کار دیگری، از نقد و پیشنهاد خالی نیست. در تالیف این مقاله به منابع &lt;span class=&quot;citations&quot;&gt;&lt;sup&gt;&lt;a href=&quot;https://www.hamidsafdari.com/urdu-tenses/#bib-ranjan2022basicurdu&quot; id=&quot;citation-ranjan2022basicurdu&quot;&gt;2&lt;/a&gt;,&lt;a href=&quot;https://www.hamidsafdari.com/urdu-tenses/#bib-schmidt1999urdu&quot; id=&quot;citation-schmidt1999urdu&quot;&gt;3&lt;/a&gt;,&lt;a href=&quot;https://www.hamidsafdari.com/urdu-tenses/#bib-small1895grammar&quot; id=&quot;citation-small1895grammar&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt; که در قسمت مراجع آورده شده‌اند، اتکا شده است. از شما دعوت می‌شود تا اشتباهات احتمالی را از طریق صفحه &lt;a href=&quot;https://www.hamidsafdari.com/contact&quot;&gt;contact&lt;/a&gt; در میان بگذارید تا در جهت کمال آن بکوشیم.&lt;/p&gt;
&lt;h3&gt;منابع&lt;/h3&gt;
</content>
  </entry>
  <entry>
    <title>اعداد در اردو</title>
    <link href="https://www.hamidsafdari.com/urdu-numbers/" />
    <updated>2025-01-13T00:00:00Z</updated>
    <id>https://www.hamidsafdari.com/urdu-numbers/</id>
    <content type="html">&lt;p&gt;اردو نیز مثل هر زبان دیگری، بی‌قاعدگی‌های خاص خود را دارد. یکی از این بی‌قاعدگی‌ها، اعداد هستند. بر خلاف زبانهای دیگر که فقط باید از ۱ تا ۲۰ را یاد گرفت و پس از آن ده ده پیش رفت (۳۰، ۴۰، ۵۰، ...)، در اردو باید از ۱ تا ۱۰۰ را حفظ کرد. دلیلی که برای این مسئله گفته شده این است که اردو و هندی از زبان سانسکریت منشأ گرفته‌اند. در زبان سانسکریت نیز اعداد از یک تا صد مشابهت چندانی با هم ندارند. با به وجود آمدن زبانهای هندی و اردو، مردمی که به این زبانها تکلم میکردند، اعداد را با کمی تصرف به همان شکل سانسکریت استفاده کردند. البته در بی‌قاعدگی اعداد، اردو تنها نیست و زبانهای فرانسوی و دانمارکی نیز این مشکل را دارا هستند. مردم اردو زبان از این خاصیت زبانشان اطلاع دارند و در گفتگو با مردم بیگانه از معادل انگلیسی استفاده میکنند. با این حال زحمت یادگیری اعداد، ارزش خود را به شما نشان خواهد داد. برای مثال، یک اردو زبان شماره تلفن خود را به حسب عادت به اردو حفظ میکند. اینکه شما اعداد را به اردو بلد باشید، به روانتر شدن گفتگو کمک میکند تا اینکه از او بخواهید شماره تلفنش را برای شما به انگلیسی بگوید.&lt;/p&gt;
&lt;h4&gt;جدول اول:‌ اعداد با تلفظ به انگلیسی&lt;/h4&gt;
&lt;p&gt;تلفظ درست اعداد به راحتتر یاد گرفتن آنها کمک میکند. در جدول زیر اعداد و تلفظ تقریبی آنها به انگلیسی نشان داده شده‌ است.&lt;/p&gt;
&lt;div id=&quot;table-1&quot; class=&quot;horizontal-table text-2xl&quot;&gt;
    &lt;table dir=&quot;ltr&quot;&gt;
        &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;nawwe&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;نوے&lt;/td&gt;
            &lt;td&gt;۹۰&lt;/td&gt;
            &lt;td&gt;assi&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اسی&lt;/td&gt;
            &lt;td&gt;۸۰&lt;/td&gt;
            &lt;td&gt;sattar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ستر&lt;/td&gt;
            &lt;td&gt;۷۰&lt;/td&gt;
            &lt;td&gt;saath&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ساٹھ&lt;/td&gt;
            &lt;td&gt;۶۰&lt;/td&gt;
            &lt;td&gt;pachaas&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پچاس&lt;/td&gt;
            &lt;td&gt;۵۰&lt;/td&gt;
            &lt;td&gt;chalees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چالیس&lt;/td&gt;
            &lt;td&gt;۴۰&lt;/td&gt;
            &lt;td&gt;tees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تیس&lt;/td&gt;
            &lt;td&gt;۳۰&lt;/td&gt;
            &lt;td&gt;bees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بیس&lt;/td&gt;
            &lt;td&gt;۲۰&lt;/td&gt;
            &lt;td&gt;das&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;دس&lt;/td&gt;
            &lt;td&gt;۱۰&lt;/td&gt;
            &lt;td&gt;sefar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;صفر&lt;/td&gt;
            &lt;td&gt;۰&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;ekyaanawe&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اکانوے&lt;/td&gt;
            &lt;td&gt;۹۱&lt;/td&gt;
            &lt;td&gt;ikyaasi&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اکیاسی&lt;/td&gt;
            &lt;td&gt;۸۱&lt;/td&gt;
            &lt;td&gt;ekhattar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اکہتر&lt;/td&gt;
            &lt;td&gt;۷۱&lt;/td&gt;
            &lt;td&gt;eksath&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اکسٹھ&lt;/td&gt;
            &lt;td&gt;۶۱&lt;/td&gt;
            &lt;td&gt;ekyaavan&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اکیاون&lt;/td&gt;
            &lt;td&gt;۵۱&lt;/td&gt;
            &lt;td&gt;iktalees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اکتالیس&lt;/td&gt;
            &lt;td&gt;۴۱&lt;/td&gt;
            &lt;td&gt;ekatees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اکتیس&lt;/td&gt;
            &lt;td&gt;۳۱&lt;/td&gt;
            &lt;td&gt;ikkees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اکیس&lt;/td&gt;
            &lt;td&gt;۲۱&lt;/td&gt;
            &lt;td&gt;giaara&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;گیاره&lt;/td&gt;
            &lt;td&gt;۱۱&lt;/td&gt;
            &lt;td&gt;ek&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ایک&lt;/td&gt;
            &lt;td&gt;۱&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;baanawwe&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بانوے&lt;/td&gt;
            &lt;td&gt;۹۲&lt;/td&gt;
            &lt;td&gt;biyaasi&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بیاسی&lt;/td&gt;
            &lt;td&gt;۸۲&lt;/td&gt;
            &lt;td&gt;behattar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بہتر&lt;/td&gt;
            &lt;td&gt;۷۲&lt;/td&gt;
            &lt;td&gt;baasath&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;باسٹھ&lt;/td&gt;
            &lt;td&gt;۶۲&lt;/td&gt;
            &lt;td&gt;baavan&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;باون&lt;/td&gt;
            &lt;td&gt;۵۲&lt;/td&gt;
            &lt;td&gt;biyalees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بیالیس&lt;/td&gt;
            &lt;td&gt;۴۲&lt;/td&gt;
            &lt;td&gt;battees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بتیس&lt;/td&gt;
            &lt;td&gt;۳۲&lt;/td&gt;
            &lt;td&gt;bais&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بائیس&lt;/td&gt;
            &lt;td&gt;۲۲&lt;/td&gt;
            &lt;td&gt;baara&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;باره&lt;/td&gt;
            &lt;td&gt;۱۲&lt;/td&gt;
            &lt;td&gt;do&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;دو&lt;/td&gt;
            &lt;td&gt;۲&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;tiraanawwe&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ترانوے&lt;/td&gt;
            &lt;td&gt;۹۳&lt;/td&gt;
            &lt;td&gt;tiraasi&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تراسی&lt;/td&gt;
            &lt;td&gt;۸۳&lt;/td&gt;
            &lt;td&gt;tihattar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تہتر&lt;/td&gt;
            &lt;td&gt;۷۳&lt;/td&gt;
            &lt;td&gt;tresath&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ترسٹھ&lt;/td&gt;
            &lt;td&gt;۶۳&lt;/td&gt;
            &lt;td&gt;tarippan&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ترپن&lt;/td&gt;
            &lt;td&gt;۵۳&lt;/td&gt;
            &lt;td&gt;te&amp;#39;en talees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تینتالیس&lt;/td&gt;
            &lt;td&gt;۴۳&lt;/td&gt;
            &lt;td&gt;te&amp;#39;en tees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تینتیس&lt;/td&gt;
            &lt;td&gt;۳۳&lt;/td&gt;
            &lt;td&gt;taees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تئیس&lt;/td&gt;
            &lt;td&gt;۲۳&lt;/td&gt;
            &lt;td&gt;tera&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تیره&lt;/td&gt;
            &lt;td&gt;۱۳&lt;/td&gt;
            &lt;td&gt;teen&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تین&lt;/td&gt;
            &lt;td&gt;۳&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;choranawwe&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چورانوے&lt;/td&gt;
            &lt;td&gt;۹۴&lt;/td&gt;
            &lt;td&gt;choraasi&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چوراسی&lt;/td&gt;
            &lt;td&gt;۸۴&lt;/td&gt;
            &lt;td&gt;chohattar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چوہتر&lt;/td&gt;
            &lt;td&gt;۷۴&lt;/td&gt;
            &lt;td&gt;chonsath&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چونسٹھ&lt;/td&gt;
            &lt;td&gt;۶۴&lt;/td&gt;
            &lt;td&gt;chawan&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چون&lt;/td&gt;
            &lt;td&gt;۵۴&lt;/td&gt;
            &lt;td&gt;chavalees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چوالیس&lt;/td&gt;
            &lt;td&gt;۴۴&lt;/td&gt;
            &lt;td&gt;chontees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چونتیس&lt;/td&gt;
            &lt;td&gt;۳۴&lt;/td&gt;
            &lt;td&gt;chobees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چوبیس&lt;/td&gt;
            &lt;td&gt;۲۴&lt;/td&gt;
            &lt;td&gt;choda&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چوده&lt;/td&gt;
            &lt;td&gt;۱۴&lt;/td&gt;
            &lt;td&gt;chaar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چار&lt;/td&gt;
            &lt;td&gt;۴&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;pachaanawwe&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پچانوے&lt;/td&gt;
            &lt;td&gt;۹۵&lt;/td&gt;
            &lt;td&gt;pachaasi&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پچاسی&lt;/td&gt;
            &lt;td&gt;۸۵&lt;/td&gt;
            &lt;td&gt;pachattar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پچہتر&lt;/td&gt;
            &lt;td&gt;۷۵&lt;/td&gt;
            &lt;td&gt;pa&amp;#39;ansath&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پینسٹھ&lt;/td&gt;
            &lt;td&gt;۶۵&lt;/td&gt;
            &lt;td&gt;pachpan&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پچپن&lt;/td&gt;
            &lt;td&gt;۵۵&lt;/td&gt;
            &lt;td&gt;
                &lt;div&gt;pe&amp;#39;en talees&lt;/div&gt;
            &lt;/td&gt;
            &lt;td&gt;پینتالیس&lt;/td&gt;
            &lt;td&gt;۴۵&lt;/td&gt;
            &lt;td&gt;pe&amp;#39;en ntees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پینتیس&lt;/td&gt;
            &lt;td&gt;۳۵&lt;/td&gt;
            &lt;td&gt;pachchees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پچیس&lt;/td&gt;
            &lt;td&gt;۲۵&lt;/td&gt;
            &lt;td&gt;pandra&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پندره&lt;/td&gt;
            &lt;td&gt;۱۵&lt;/td&gt;
            &lt;td&gt;paanch&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پانچ&lt;/td&gt;
            &lt;td&gt;۵&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;chhiyaanawwe&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چھیانوے&lt;/td&gt;
            &lt;td&gt;۹۶&lt;/td&gt;
            &lt;td&gt;chiyaasi&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چھیاسی&lt;/td&gt;
            &lt;td&gt;۸۶&lt;/td&gt;
            &lt;td&gt;chehattar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چھہتر&lt;/td&gt;
            &lt;td&gt;۷۶&lt;/td&gt;
            &lt;td&gt;chhiyasath&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چھیاسٹھ&lt;/td&gt;
            &lt;td&gt;۶۶&lt;/td&gt;
            &lt;td&gt;chappan&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چھپن&lt;/td&gt;
            &lt;td&gt;۵۶&lt;/td&gt;
            &lt;td&gt;chhiyalees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چھیالیس&lt;/td&gt;
            &lt;td&gt;۴۶&lt;/td&gt;
            &lt;td&gt;chatees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چھتیس&lt;/td&gt;
            &lt;td&gt;۳۶&lt;/td&gt;
            &lt;td&gt;chabbees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چھببیس&lt;/td&gt;
            &lt;td&gt;۲۶&lt;/td&gt;
            &lt;td&gt;sola&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سولہ&lt;/td&gt;
            &lt;td&gt;۱۶&lt;/td&gt;
            &lt;td&gt;cheh&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چھ&lt;/td&gt;
            &lt;td&gt;۶&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;sataanawwe&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ستانوے&lt;/td&gt;
            &lt;td&gt;۹۷&lt;/td&gt;
            &lt;td&gt;sataasi&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ستاسی&lt;/td&gt;
            &lt;td&gt;۸۷&lt;/td&gt;
            &lt;td&gt;satattar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ستتر&lt;/td&gt;
            &lt;td&gt;۷۷&lt;/td&gt;
            &lt;td&gt;sadasath&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سڑسٹھ&lt;/td&gt;
            &lt;td&gt;۶۷&lt;/td&gt;
            &lt;td&gt;sataawan&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ستاون&lt;/td&gt;
            &lt;td&gt;۵۷&lt;/td&gt;
            &lt;td&gt;
                &lt;div&gt;se&amp;#39;en talees&lt;/div&gt;
            &lt;/td&gt;
            &lt;td&gt;سینتالیس&lt;/td&gt;
            &lt;td&gt;۴۷&lt;/td&gt;
            &lt;td&gt;sa&amp;#39;antees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سینتیس&lt;/td&gt;
            &lt;td&gt;۳۷&lt;/td&gt;
            &lt;td&gt;sataaees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ستائیس&lt;/td&gt;
            &lt;td&gt;۲۷&lt;/td&gt;
            &lt;td&gt;satra&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ستره&lt;/td&gt;
            &lt;td&gt;۱۷&lt;/td&gt;
            &lt;td&gt;saat&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سات&lt;/td&gt;
            &lt;td&gt;۷&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;athaanawwe&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اٹھانوے&lt;/td&gt;
            &lt;td&gt;۹۸&lt;/td&gt;
            &lt;td&gt;athaasi&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اٹھاسی&lt;/td&gt;
            &lt;td&gt;۸۸&lt;/td&gt;
            &lt;td&gt;athhattar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اٹھہتر&lt;/td&gt;
            &lt;td&gt;۷۸&lt;/td&gt;
            &lt;td&gt;adsath&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اٹھسٹھ&lt;/td&gt;
            &lt;td&gt;۶۸&lt;/td&gt;
            &lt;td&gt;athaawan&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اٹھاون&lt;/td&gt;
            &lt;td&gt;۵۸&lt;/td&gt;
            &lt;td&gt;adtaalees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اڑتالیس&lt;/td&gt;
            &lt;td&gt;۴۸&lt;/td&gt;
            &lt;td&gt;adha tees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اڑتیس&lt;/td&gt;
            &lt;td&gt;۳۸&lt;/td&gt;
            &lt;td&gt;athaaees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اٹھائیس&lt;/td&gt;
            &lt;td&gt;۲۸&lt;/td&gt;
            &lt;td&gt;athaara&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اٹھارہ&lt;/td&gt;
            &lt;td&gt;۱۸&lt;/td&gt;
            &lt;td&gt;aath&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;آٹھ&lt;/td&gt;
            &lt;td&gt;۸&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;nenaanawwe&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ننانوے&lt;/td&gt;
            &lt;td&gt;۹۹&lt;/td&gt;
            &lt;td&gt;nawaasi&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;نواسی&lt;/td&gt;
            &lt;td&gt;۸۹&lt;/td&gt;
            &lt;td&gt;unaasi&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اناسی&lt;/td&gt;
            &lt;td&gt;۷۹&lt;/td&gt;
            &lt;td&gt;unhattar&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;انہتر&lt;/td&gt;
            &lt;td&gt;۶۹&lt;/td&gt;
            &lt;td&gt;unsathh&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;انسٹھ&lt;/td&gt;
            &lt;td&gt;۵۹&lt;/td&gt;
            &lt;td&gt;unchaas&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;انچاس&lt;/td&gt;
            &lt;td&gt;۴۹&lt;/td&gt;
            &lt;td&gt;untaalees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;انتالیس&lt;/td&gt;
            &lt;td&gt;۳۹&lt;/td&gt;
            &lt;td&gt;unnatees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;انتیس&lt;/td&gt;
            &lt;td&gt;۲۹&lt;/td&gt;
            &lt;td&gt;unnees&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;انیس&lt;/td&gt;
            &lt;td&gt;۱۹&lt;/td&gt;
            &lt;td&gt;no&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;نو&lt;/td&gt;
            &lt;td&gt;۹&lt;/td&gt;
        &lt;/tr&gt;
        &lt;/tbody&gt;
    &lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;توضیحات&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;های دوچشم&lt;/strong&gt; «&lt;span lang=&quot;ur&quot;&gt;ھ&lt;/span&gt;» تلفظ نشده و فقط باعث میشود که حرف قبل از آن کمی ملایمتر تلفظ شود. ملایمتر تلفظ کردن بعضی حروف مثل «چ» برای ما فارسی زبانها شاید کمی گنگ باشد. فقط کوشش کنید «&lt;span lang=&quot;ur&quot;&gt;چھ&lt;/span&gt;» را مثل «چـ» بخوانید و «&lt;span lang=&quot;ur&quot;&gt;ھ&lt;/span&gt;ـ» را در نظر نگیرید. مثلا «&lt;span lang=&quot;ur&quot;&gt;چھببیس&lt;/span&gt;» (۲۶) به صورت «چَب بیس» خوانده میشود و نه «چه هب بیس» و «&lt;span lang=&quot;ur&quot;&gt;اٹھارہ&lt;/span&gt;» به صورت «اتاره» خوانده میشود و نه «ات ها ره».&lt;/li&gt;
&lt;li&gt;«a&#39;a» را به صورت فتحه کشیده بخوانید. مثلا «&lt;span lang=&quot;ur&quot;&gt;سینتیس&lt;/span&gt;» (۳۷) را که با تلفظ «sa&#39;antees» نشان داده شده به صورت «سَـــــــن تیس» بخوانید.&lt;/li&gt;
&lt;li&gt;«e&#39;e» را به صورت کسره کشیده بخوانید. مثلا «&lt;span lang=&quot;ur&quot;&gt;سینتالیس&lt;/span&gt;» (۴۷) را که با تلفظ «se&#39;en talees» نشان داده شده به صورت «سِـــــــن تالیس» بخوانید.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;جدول دوم:‌ اعداد با زیر و زبر&lt;/h4&gt;
&lt;p&gt;در جدول دوم فقط خود اعداد با زیر و زبر نوشته شده‌اند. اگر با زیر و زبر آشنایی دارید، خواندن جدول دوم احتمالا آسانتر از جدول اول است.&lt;/p&gt;
&lt;div id=&quot;table-2&quot; class=&quot;horizontal-table text-2xl&quot;&gt;
    &lt;table dir=&quot;ltr&quot;&gt;
        &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;۹۰&lt;/td&gt;
            &lt;td&gt;۸۰&lt;/td&gt;
            &lt;td&gt;۷۰&lt;/td&gt;
            &lt;td&gt;۶۰&lt;/td&gt;
            &lt;td&gt;۵۰&lt;/td&gt;
            &lt;td&gt;۴۰&lt;/td&gt;
            &lt;td&gt;۳۰&lt;/td&gt;
            &lt;td&gt;۲۰&lt;/td&gt;
            &lt;td&gt;۱۰&lt;/td&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td lang=&quot;ur&quot;&gt;نَوّے&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اَسّی&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سَتّر&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;ساٹھ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پَچاس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چالیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;دَسْ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;صِفَرْ&lt;/td&gt;
            &lt;td&gt;۰&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td lang=&quot;ur&quot;&gt;اِکانَوّے&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اِکیاسی&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اِکہَتّر&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اِکسَٹھ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اِکیاوَن&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اِکتالیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اِکتیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اِکّیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;گیارَه&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اِیکْ&lt;/td&gt;
            &lt;td&gt;۱&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td lang=&quot;ur&quot;&gt;بانَوّے&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بیاسی&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بِہَتّر&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;باسَٹھ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;باوَن&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بِیالیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بَتّیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بائیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;بارَه&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;دُو&lt;/td&gt;
            &lt;td&gt;۲&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td lang=&quot;ur&quot;&gt;تِرانَوّے&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تِراسی&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تَہَتّر&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تَرسَٹھ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تَرپَن&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تِینتالیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تِینتیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تَئیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تِیرَه&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;تینْ&lt;/td&gt;
            &lt;td&gt;۳&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td lang=&quot;ur&quot;&gt;چُورانَوّے&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چُوراسی&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چُوہَتّر&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چُونسَٹھ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چَوّن&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چَوالیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چُونتیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چُوبیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چُودَه&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چارْ&lt;/td&gt;
            &lt;td&gt;۴&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td lang=&quot;ur&quot;&gt;پَچانَوّے&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پَچاسی&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پَچہَتّر&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پِینسَٹھ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پَچپَن&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پِینتالیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پِینتیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پَچّیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پَنْدْرَه&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;پانْچْ&lt;/td&gt;
            &lt;td&gt;۵&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td lang=&quot;ur&quot;&gt;چِھیانَوّے&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چِھیاسی&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چَھہَتَّر&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چِھیاسَٹھ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چَھپَّن&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چِھیالیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چَھتیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چَھبْبیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سُولَہ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;چِھ&lt;/td&gt;
            &lt;td&gt;۶&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td lang=&quot;ur&quot;&gt;سَتانَوّے&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سَتاسی&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سَتَتّر&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سَڑسَٹھ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سَتاوَن&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سِینتالیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سِینتیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سَتائیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سَتْرَه&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;سات&lt;/td&gt;
            &lt;td&gt;۷&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td lang=&quot;ur&quot;&gt;اَٹھانَوّے&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اَٹھاسی&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اَٹْھہَتَّر&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اَٹھسَٹھ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اَٹھاوَن&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اَڑْتالیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اَڑْتیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اَٹھائیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اَٹھارَہ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;آٹھ&lt;/td&gt;
            &lt;td&gt;۸&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td lang=&quot;ur&quot;&gt;نِنانَوّے&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;نَواسی&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اُناسی&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اُنْہَتَّر&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اُنْسَٹھ&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اُنْچاس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اُنْتالیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اُنْتیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;اُنّیس&lt;/td&gt;
            &lt;td lang=&quot;ur&quot;&gt;نُو&lt;/td&gt;
            &lt;td&gt;۹&lt;/td&gt;
        &lt;/tr&gt;
        &lt;/tbody&gt;
    &lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;توضیحات&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;همانطور که در &lt;a href=&quot;https://www.hamidsafdari.com/urdu-alphabet/&quot;&gt;الفبای زبان اردو&lt;/a&gt; اشاره شد، یای کشیده «&lt;span lang=&quot;ur&quot;&gt;ے&lt;/span&gt;» در وسط کلمه به صورت «یـ» و «ـیـ» نوشته میشود. در اعدادی مثل «&lt;span lang=&quot;ur&quot;&gt;   پِینتیس  &lt;/span&gt;» (۳۵) و «&lt;span lang=&quot;ur&quot;&gt;   پِینتالیس  &lt;/span&gt;» (۴۵)، یای اول همان یای کشیده است. به همین دلیل و برای تشخیص بهتر، زیر حرف پ علامت کسره گذاشته شده است. تلفظ این دو عدد بدینصورت است: «پِــــــــن تیس» و «پِــــــــن تالیس».&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;اعداد بعد از ۱۰۰ از یک قاعده پیروی میکنند و تکرار میشوند. تنها تفاوتی که اعداد بعد از ۱۰۰ با فارسی دارند در این است که اردو از حرف اضافه‌ای مثل «و» استفاده نمیکند. مثلا در فارسی میگوییم صد و یک، هزار و پنجصد. اما در اردو اینطور نیست. مثل اعداد زیر:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;۱۰۱: &lt;span lang=&quot;ur&quot;&gt;ایک سو ایک&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;۱۰۰۵: &lt;span lang=&quot;ur&quot;&gt;ایک ہزار پانچ&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;۲۰۲۴: &lt;span lang=&quot;ur&quot;&gt;دو ہزار چوبیس&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;۷۵۶۸: &lt;span lang=&quot;ur&quot;&gt;سات ہزار پانچ سو اڑسٹھ&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;۹۰۲۰: &lt;span lang=&quot;ur&quot;&gt;نو ہزار بیس&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;۶۴۹۹: &lt;span lang=&quot;ur&quot;&gt;چھ ہزار چار سو ننانوے&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;در اردو هم مثل انگلیسی میتوان به جای هزار و صد گفت یازده صد و همینطور دوازده صد، سیزده صد، ...؛ &lt;span lang=&quot;ur&quot;&gt;گیاره سو، باره سو، تیره سو، ...&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;اعداد ترتیبی&lt;/h2&gt;
&lt;p&gt;شش عدد ترتیبی در اردو بی قاعده هستند. به دیگر اعداد نظر به کلمات قبل و بعد آن (جمع و مفرد، مؤنث و مذکر، ...) پسوند «&lt;span lang=&quot;ur&quot;&gt;واں&lt;/span&gt;» و «&lt;span lang=&quot;ur&quot;&gt;ویں&lt;/span&gt;» اضافه میشود. شش عدد بی قاعده نیز نظر به کلمات قبل و بعد خود شکلشان تغییر میکند. این شش عدد عبارتند از:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;یکم: &lt;span lang=&quot;ur&quot;&gt;پِہلا، پہلے، پہلی&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;دوم: &lt;span lang=&quot;ur&quot;&gt;دوسرا، دوسرے، دوسری&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;سوم: &lt;span lang=&quot;ur&quot;&gt;تیسرا، تیسرے، تیسری&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;چهارم: &lt;span lang=&quot;ur&quot;&gt;چوتھا، چوتھے، چوتھی&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;ششم: &lt;span lang=&quot;ur&quot;&gt;چَھٹا، چَھٹے، چَھٹی&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;نهم: &lt;span lang=&quot;ur&quot;&gt;نَواں، نَویں، نَویں&lt;/span&gt; (دو تای آخر یک شکل دارند)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table dir=&quot;rtl&quot;&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th&gt;فارسی&lt;/th&gt;
        &lt;th&gt;اردو&lt;/th&gt;
        &lt;th&gt;فارسی&lt;/th&gt;
        &lt;th&gt;اردو&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td&gt;اول&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;پہلا&lt;/td&gt;
        &lt;td&gt;بیستم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;بیسواں&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;دوم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;دوسرا&lt;/td&gt;
        &lt;td&gt;سی‌ام&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;تیسواں&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;سوم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;تیسرا&lt;/td&gt;
        &lt;td&gt;نودم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;نوے واں&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;چهارم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;چوتھا&lt;/td&gt;
        &lt;td&gt;هزارم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;ہزاروَں&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;پنجم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;پانچواں&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;ششم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;چَھٹا&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;هفتم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;ساتواں&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;هشتم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;آٹھواں&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;نهم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;نوواں&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;دهم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;دسواں&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;چند مثال&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;ہم بائیں طرف ساتویں عمارت میں رہتے ہیں.&lt;/span&gt; ما در ساختمان هفتم طرف چپ زندگی میکنیم.&lt;/li&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;میرا بیٹا کلاس میں پہلا آیا.&lt;/span&gt; پسرم اول نمره صنف شد.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;اعداد کسری&lt;/h2&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table dir=&quot;rtl&quot;&gt;
      &lt;thead&gt;
      &lt;tr&gt;
        &lt;th&gt;اصطلاح&lt;/th&gt;
        &lt;th&gt;معنی&lt;/th&gt;
        &lt;th&gt;مثال&lt;/th&gt;
        &lt;th&gt;معنی&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;پون، پونے، پونا&lt;/td&gt;
        &lt;td&gt;یک بر چهار کم، یک ربع کم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;پونے دو بجے ہے&lt;/td&gt;
        &lt;td&gt;پانزده دقیقه مانده به ساعت یک&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;سَوا&lt;/td&gt;
        &lt;td&gt;جمع یک بر چهار، ... و ربع&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;سوا سو&lt;/td&gt;
        &lt;td&gt;صد و بیست و پنج&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;آدها، آدهـ&lt;/td&gt;
        &lt;td&gt;نیم، نصف&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;آدھا کلو&lt;/td&gt;
        &lt;td&gt;نیم کیلو&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;ساڑھے&lt;/td&gt;
        &lt;td&gt;جمع نصف، ... و نیم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;ساڑھے تین سو روپے&lt;/td&gt;
        &lt;td&gt;سه صد و پنجاه روپیه (ایران: سیصد)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;ڈیڑھ&lt;/td&gt;
        &lt;td&gt;یک و نیم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;ڈیڑھ سو روپے&lt;/td&gt;
        &lt;td&gt;صد و پنجاه روپیه&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;چوتھائی&lt;/td&gt;
        &lt;td&gt;یک بر چهار، ربع&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;چوتھی دفعہ&lt;/td&gt;
        &lt;td&gt;بار چهارم&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;تہائی&lt;/td&gt;
        &lt;td&gt;یک بر سه، ثلث&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;مستطیل کا ایک تہائی&lt;/td&gt;
        &lt;td&gt;یک بر سه حصه مستطیل، ثلث مستطیل&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;ڈھائی&lt;/td&gt;
        &lt;td&gt;دو و نیم&lt;/td&gt;
        &lt;td lang=&quot;ur&quot;&gt;ڈھائی سو کا دہی&lt;/td&gt;
        &lt;td&gt;دو و نیم صد روپیه ماست&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h2&gt;بعضی اصطلاحات دیگر با اعداد&lt;/h2&gt;
&lt;div class=&quot;horizontal-table&quot;&gt;
  &lt;table&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;لاکھ&lt;/td&gt;
        &lt;td&gt;۱۰۰،۰۰۰&lt;/td&gt;
        &lt;td&gt;صد هزار&lt;/td&gt;
        &lt;td&gt;صد هزار&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;کَروڑ&lt;/td&gt;
        &lt;td&gt;۱۰۰،۰۰،۰۰۰&lt;/td&gt;
        &lt;td&gt;صد لاکھ&lt;/td&gt;
        &lt;td&gt;ده میلیون&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;اَرَب&lt;/td&gt;
        &lt;td&gt;۱۰۰،۰۰،۰۰،۰۰۰&lt;/td&gt;
        &lt;td&gt;صد کروڑ&lt;/td&gt;
        &lt;td&gt;یک میلیارد&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td lang=&quot;ur&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;کَھرَب&lt;/td&gt;
        &lt;td&gt;۱۰۰،۰۰،۰۰،۰۰،۰۰۰&lt;/td&gt;
        &lt;td&gt;صد ارب&lt;/td&gt;
        &lt;td&gt;صد میلیارد&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang=&quot;ur&quot;&gt;لامحدود  &lt;/span&gt; (بی نهایت)&lt;/li&gt;
&lt;li&gt;گنا و چند: &lt;span lang=&quot;ur&quot;&gt;دوچند، دوگُنا، چارگُنا، چارچند، ...&lt;/span&gt; &lt;b&gt;چند&lt;/b&gt; با اعداد فارسی نیز به کار میرود: &lt;span lang=&quot;ur&quot;&gt;دو چند، سه چند، هفت چند، ...&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;بار و دفعَه (مثل فارسی): &lt;span lang=&quot;ur&quot;&gt;ایک بار، دوبار، دو دفعَه، ...&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;چند تا چند تا: &lt;span lang=&quot;ur&quot;&gt;دو دو، پانچ پانچ، ...&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>FFmpeg for Developers: Beyond the Surface</title>
    <link href="https://www.hamidsafdari.com/ffmpeg-rocks/" />
    <updated>2024-12-06T00:00:00Z</updated>
    <id>https://www.hamidsafdari.com/ffmpeg-rocks/</id>
    <content type="html">&lt;p&gt;Let&#39;s say you need to convert an MP3 file to the OGG format, or you have separate audio and video files that you&#39;d like to merge. Your options are to either find an online tool where you upload the files and download them after merging, or download (and install) an ad-enabled software that does the job for you.&lt;/p&gt;
&lt;p&gt;If either of those two options sounds frustrating, fear not, because you are not out of options. FFmpeg is the angel you seek. With a download size of a little over 10 to 20 MB, FFmpeg can virtually answer most of your basic multimedia needs. It&#39;s open source, doesn&#39;t show you any ads, and it&#39;s been around for long enough that it&#39;s practically bug free. Also, if you are on a Linux distro, chances are that it&#39;s already installed. All you need to do is learn the basic commands needed to do the job.&lt;/p&gt;
&lt;p&gt;Some of the things that FFmpeg can do for you, are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Convert from one multimedia format to another&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Extract audio, video or even subtitles from a multimedia file&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Crop or join files together&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Merge audio and video&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Take screenshots from videos&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Synchronize audio and video&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;View video from your webcam&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Take screenshots from your computer screen&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What&#39;s amazing is that you only need a single command (i.e., &lt;code&gt;ffmpeg&lt;/code&gt;) to do all of that. You just provide the names of the input and output files and a few sensible arguments. Even if you don&#39;t like running commands in CMD or shell, the fact that you can do so much with a tiny program far outweighs the urge to cling to your mouse. If that sounds like a bold statement, read on and see how wrong you can be.&lt;/p&gt;
&lt;h3&gt;File Format Conversion&lt;/h3&gt;
&lt;p&gt;Converting from one multimedia format to another can be as easy as:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; input.webm output.mp4&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But bear in mind that conversion is one of those operations that need the full power of your system and is time-consuming. To speed things up, you might want to add a few extra arguments:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# use a preset to speed up conversion&lt;/span&gt;
ffmpeg &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; input.webm &lt;span class=&quot;token parameter variable&quot;&gt;-preset&lt;/span&gt; ultrafast &lt;span class=&quot;token string&quot;&gt;&quot;output.mp4&quot;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# or scale down the video if you don&#39;t mind having a smaller resolution&lt;/span&gt;
ffmpeg &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; input.webm &lt;span class=&quot;token parameter variable&quot;&gt;-preset&lt;/span&gt; ultrafast &lt;span class=&quot;token parameter variable&quot;&gt;-vf&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;-1:1080 &lt;span class=&quot;token string&quot;&gt;&quot;output.mp4&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-i&lt;/code&gt; let&#39;s you specify the input file&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-preset&lt;/code&gt; use one of the default presets for conversion (affects conversion speed and quality)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-vf&lt;/code&gt; video filer to use. &lt;code&gt;scale&lt;/code&gt; is the name of the filter fed to &lt;code&gt;-vf&lt;/code&gt;. &lt;code&gt;scale&lt;/code&gt; scales your video to the dimensions specified. &lt;code&gt;-1:1080&lt;/code&gt; will set the height to 1080 and choose the width accordingly, so the video&#39;s aspect ratio is conserved.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Extracting Audio from Video&lt;/h3&gt;
&lt;p&gt;This is probably very useful if you want to cut some audio track out of a video for later use. You only need to provide the &lt;code&gt;-vn&lt;/code&gt; argument to &lt;code&gt;ffmpeg&lt;/code&gt; to indicate that you don&#39;t want the output file to contain a video. In the following example, I&#39;ve specified that I want the audio track to just be copied, and not converted to a different format, the advantage being faster audio extraction.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; video.mp4 &lt;span class=&quot;token parameter variable&quot;&gt;-vn&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-c:a&lt;/span&gt; copy output-audio.aac&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We could also extract the video from the multimedia file by specifying &lt;code&gt;-an&lt;/code&gt; instead of &lt;code&gt;-vn&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Question: How do I find out what audio and video formats are used in a file?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A multimedia file is like a container that holds together multiple audio, video and even subtitles inside it. You can find out these &lt;em&gt;&amp;quot;streams&amp;quot;&lt;/em&gt; by using the following command&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffprobe filename.mp4&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;ffprobe&lt;/code&gt; is a tool that gets installed with FFmpeg. The output of the above command will look like this:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffprobe version &lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
  &lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
Input &lt;span class=&quot;token comment&quot;&gt;#0, mov,mp4,m4a,3gp,3g2,mj2, from &#39;filename.mp4&#39;:&lt;/span&gt;
  Metadata:
    &lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
  Duration: 00:00:40.02, start: &lt;span class=&quot;token number&quot;&gt;0.000000&lt;/span&gt;, bitrate: &lt;span class=&quot;token number&quot;&gt;282&lt;/span&gt; kb/s
    Stream &lt;span class=&quot;token comment&quot;&gt;#0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 ...&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
    Stream &lt;span class=&quot;token comment&quot;&gt;#0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can find out from the output that the file contains an audio stream in the &lt;code&gt;aac&lt;/code&gt; format.&lt;/p&gt;
&lt;h3&gt;Cropping&lt;/h3&gt;
&lt;p&gt;To cut out a portion of your audio or video file, use the following command. &lt;code&gt;-ss&lt;/code&gt; is the starting second to crop from, &lt;code&gt;-t&lt;/code&gt; is the number of seconds and &lt;code&gt;-to&lt;/code&gt; is the specific second desired. The following commands result in the same output.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg &lt;span class=&quot;token parameter variable&quot;&gt;-ss&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-t&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; input.mp3 output.mp3
ffmpeg &lt;span class=&quot;token parameter variable&quot;&gt;-ss&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-to&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; input.mp3 output.mp3&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Merging audio and video&lt;/h3&gt;
&lt;p&gt;Put the names of the files you want to merge in a text file as shown below. Enclose the file names within double quotes if your file names contain spaces or special characters.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;file&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;file001.mp4&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;file&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;file002.avi&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;file&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;file003.mkv&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After you have created the text file above, use the following command to concatenate your multimedia files together:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffpmeg &lt;span class=&quot;token parameter variable&quot;&gt;-f&lt;/span&gt; concat &lt;span class=&quot;token parameter variable&quot;&gt;-safe&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; files.txt &lt;span class=&quot;token parameter variable&quot;&gt;-c&lt;/span&gt; copy output.mp4&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-safe 0&lt;/code&gt; is used when your file names contain special characters&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Converting a video into a series of images&lt;/h3&gt;
&lt;p&gt;The following command will take a screenshot of the video every second. If you need to take more screenshots per second, you can use &lt;code&gt;fps=1/4&lt;/code&gt; for example, which will take four screenshots every second.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; video.mp4 &lt;span class=&quot;token parameter variable&quot;&gt;-vf&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;fps&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;screenshots/images_%06d.png&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;fps&lt;/code&gt; short for &lt;code&gt;frames per second&lt;/code&gt; will specify the number of frames that can be taken in a second&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-i&lt;/code&gt; the input file&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;%06d&lt;/code&gt; append a six-digit number to the name of each image taken from the video and left pad the number with zeros&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Syncing audio and video&lt;/h3&gt;
&lt;p&gt;If you have a multimedia file in which the audio and video in it are not in sync, use the following command&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;movie.mp4&quot;&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-itsoffset&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3.84&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;movie.mp4&quot;&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-map&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;:v &lt;span class=&quot;token parameter variable&quot;&gt;-map&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;:a &lt;span class=&quot;token parameter variable&quot;&gt;-c&lt;/span&gt; copy &lt;span class=&quot;token string&quot;&gt;&quot;movie-audio-delayed.mp4&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-itoffset&lt;/code&gt; short for &lt;code&gt;input timestamp offset&lt;/code&gt; specifies the second you want to offset the input. Here, the audio and video inputs are the same file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-map 0:v -map 1:a&lt;/code&gt; take the video from the first input and audio from the second input&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Stream video from the webcam&lt;/h3&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg &lt;span class=&quot;token parameter variable&quot;&gt;-f&lt;/span&gt; x11grab &lt;span class=&quot;token parameter variable&quot;&gt;-r&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt; 1920x1080 &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; :0.0  out.mp4&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-f x11grab&lt;/code&gt; the name of the format to use&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-r&lt;/code&gt; frames in a second&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To find the dimensions of your screen:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;xdpyinfo &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; dimensions&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-i&lt;/code&gt; input file (or device). 0:0 is the current display. You can find your current display name using:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token environment constant&quot;&gt;$DISPLAY&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Recording audio from the microphone&lt;/h3&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg &lt;span class=&quot;token parameter variable&quot;&gt;-f&lt;/span&gt; pulse &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; default out.aac&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Description&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-f&lt;/code&gt; The name of the format to use for recording audio. To get a list of formats, use &lt;code&gt;ffmpeg -formats&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-i&lt;/code&gt; the input. Here, we have specified the default audio device.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;Capturing video/audio from the webcam/microphone and streaming it at the same time&lt;/h3&gt;
&lt;p&gt;Run the following commands in two different shells&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# play from the webcam&lt;/span&gt;
ffplay &lt;span class=&quot;token parameter variable&quot;&gt;-f&lt;/span&gt; video4linux2 &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; /dev/video0 &lt;span class=&quot;token parameter variable&quot;&gt;-video_size&lt;/span&gt; 320x240 &lt;span class=&quot;token parameter variable&quot;&gt;-fflags&lt;/span&gt; nobuffer
&lt;span class=&quot;token comment&quot;&gt;# record from the screen&lt;/span&gt;
ffmpeg &lt;span class=&quot;token parameter variable&quot;&gt;-f&lt;/span&gt; pulse &lt;span class=&quot;token parameter variable&quot;&gt;-ac&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; default &lt;span class=&quot;token parameter variable&quot;&gt;-f&lt;/span&gt; x11grab &lt;span class=&quot;token parameter variable&quot;&gt;-r&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt; 1920x1080 &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; :0.0 &lt;span class=&quot;token parameter variable&quot;&gt;-vcodec&lt;/span&gt; libx264 &lt;span class=&quot;token parameter variable&quot;&gt;-preset&lt;/span&gt; ultrafast out.mp4&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/ffmpeg-rocks.jpg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Sources&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://trac.ffmpeg.org/wiki/Capture/ALSA#Recordaudiofromyourmicrophone&quot;&gt;https://trac.ffmpeg.org/wiki/Capture/ALSA#Recordaudiofromyourmicrophone&lt;/a&gt; &lt;a href=&quot;https://stackoverflow.com/a/22082953/2139684&quot;&gt;https://stackoverflow.com/a/22082953/2139684&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://ffmpeg.org/ffmpeg.html&quot;&gt;https://ffmpeg.org/ffmpeg.html&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>الفبای زبان اردو</title>
    <link href="https://www.hamidsafdari.com/urdu-alphabet/" />
    <updated>2024-11-29T00:00:00Z</updated>
    <id>https://www.hamidsafdari.com/urdu-alphabet/</id>
    <content type="html">&lt;p&gt;الفبای زبان اردو&lt;span class=&quot;citations&quot;&gt;&lt;sup&gt;&lt;a href=&quot;https://www.hamidsafdari.com/urdu-alphabet/#bib-wiki_urdu_alphabet&quot; id=&quot;citation-wiki_urdu_alphabet&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt; مشترکات زیادی با زبان فارسی دارد. اما چند حرف در زبان اردو هست که باید مورد توجه بیشتری قرار بگیرند. حروف الفبای اردو عبارتند از:&lt;/p&gt;
&lt;div lang=&quot;ur&quot; class=&quot;text-2xl leading-10&quot;&gt;
الف ب پ ت ٹ ث ج چ ح خ د ڈ ذ ر ڑ ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ں و ه ھ ی ے ء
&lt;/div&gt;
&lt;p&gt;اینکه تعداد حروف در اردو دقیقاً چند حرف است مورد بحث است&lt;span class=&quot;citations&quot;&gt;&lt;sup&gt;&lt;a href=&quot;https://www.hamidsafdari.com/urdu-alphabet/#bib-parekh2009_urdualphabet&quot; id=&quot;citation-parekh2009_urdualphabet&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;. اداره‌ی ملی زبان اردو، «ادارۂ فروغِ قومی زبان»،‌ این عدد را ۵۸ در نظر گرفته. البته افراد به حسب سلیقه‌ی خود و در کتابهای گوناگون تعداد حروف را از ۳۵ تا ۹۲ اعلام کرده‌اند. این اختلاف نظر از اینجا نشأت میگیرد که زبان هندی، که اردو از آن انشعاب گرفته،‌ دارای حروف و صداهایی است که با جمع بین دو حرف نشان داده میشوند. یک نوع از این صداها «همخوان حلقی» است؛ مثلاً، اگرچه &lt;span lang=&quot;ur&quot;&gt;بھ&lt;/span&gt; از دو حرف جدا تشکیل شده است، به عنوان یک واحد صوتی با تلفظ خاص خودش شناخته می‌شود.‌ البته،‌ این اختلاف نظر در تعداد حروف نباید علاقمندان به یادگیری این زبان را دلسرد نماید. چرا که حتی با عدم شناخت این حروف و صداها،‌ یک فارسی‌زبان در تلفظ و معنای کلمات از حدس خوبی برخوردار است. اگر برای آسان شدن کار،‌ این حروف را در نظر نگیریم، می‌توان گفت تعداد حروف مشخص و مجزا در اردو ۳۹ است. حروفی که در فارسی وجود ندارند از این قرارند: &lt;span lang=&quot;ur&quot;&gt;ٹ، ڈ،‌ ڑ،‌ ں، ھ،‌ ے&lt;/span&gt;.&lt;/p&gt;
&lt;h2&gt;حروف &lt;span lang=&quot;ur&quot;&gt;ٹ، ڈ، ڑ&lt;/span&gt; &lt;span class=&quot;citations&quot;&gt;&lt;sup&gt;&lt;a href=&quot;https://www.hamidsafdari.com/urdu-alphabet/#bib-wiki_voiceless_retroflex_plosive&quot; id=&quot;citation-wiki_voiceless_retroflex_plosive&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;، &lt;span class=&quot;citations&quot;&gt;&lt;sup&gt;&lt;a href=&quot;https://www.hamidsafdari.com/urdu-alphabet/#bib-wiki_voiced_retroflex_plosive&quot; id=&quot;citation-wiki_voiced_retroflex_plosive&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;، &lt;span class=&quot;citations&quot;&gt;&lt;sup&gt;&lt;a href=&quot;https://www.hamidsafdari.com/urdu-alphabet/#bib-wiki_voiced_retroflex_flap&quot; id=&quot;citation-wiki_voiced_retroflex_flap&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;در تلفظ شکل ساده این حروف، «ت، د، ر»، نوک زبان به دندان‌های بالای پیش روی دهان برخورد می‌کند و یا نزدیک است. برای تلفظ حروف «&lt;span lang=&quot;ur&quot;&gt;ٹ، ڈ، ڑ&lt;/span&gt;»، نوک زبان را کمی به عقب برده، به قسمت برآمدگی قبل از دندانها بچسبانید و کوشش کنید حروف مشابه آنها را تلفظ کنید. برای حرف « &lt;span lang=&quot;ur&quot;&gt;ڑ&lt;/span&gt; »، نوک زبان مدت زمان کمتری با قسمت بالای دهان برخورد می‌کند. توجه داشته باشید که حرف &lt;span lang=&quot;ur&quot;&gt;ڑ&lt;/span&gt;،‌ بر خلاف « ر »،‌ سایشی نیست. مثلاً کلمه‌ی «&lt;span lang=&quot;ur&quot;&gt;ڈیڑھ&lt;/span&gt;» &lt;code&gt;/dedh/&lt;/code&gt; (به معنی یک و نیم) بیشتر به صورت « دِد » خوانده و شنیده میشود تا « دِر ». حروف سایشی حروفی هستند که در تلفظ آنها صدا (یا جریان هوا) قطع نمی‌شود. بعضی دیگر از حروف سایشی عبارتند از «س»،‌ «ش»،‌ «ز»،‌ «ژ»، «ذ» و غیره. در مقابل حروف انسدادی قرار دارند که صدا بعد از تلفظ این حروف قطع می‌شود. مثل حروف «د»، «ت»،‌ «ک» و «گ».&lt;/p&gt;
&lt;p&gt;از این سه حرف در کلماتی که از انگلیسی به اردو آورده شده‌اند نیز استفاده می‌شود؛ مثل &lt;span lang=&quot;ur&quot;&gt;ڈاکٹر، الیکٹریشن&lt;/span&gt; و &lt;span lang=&quot;ur&quot;&gt;یونیورسٹی&lt;/span&gt;. البته استفاده این سه حرف در این کلمات صرف برای نشان دادن منبع انگلیسی آنها است. تلفظ این کلمات همان تلفظ انگلیسی است و حروف «&lt;span lang=&quot;ur&quot;&gt;ٹ، ڈ، ڑ&lt;/span&gt;» مشابه حروف ساده «ت، د، ر» تلفظ می‌شوند.&lt;/p&gt;
&lt;h2&gt;&lt;span lang=&quot;ur&quot;&gt;ں&lt;/span&gt; (نونِ غُنّه)&lt;/h2&gt;
&lt;p&gt;تلفظ این حرف در بینی و بدین صورت است که بخواهید حرف «ن» را تلفظ کنید اما قبل از اتمام، صدا را قطع کنید؛ نوک زبان به بالای برخورد نمی‌کند. این حرف اکثراً در آخر کلمات دیده می‌شود. البته در ادبیات و بعضی لهجه‌ها در وسط کلمه نیز استفاده می‌شود. اما هیچ وقت در ابتدای کلمه به کار نمی‌رود. چند مثال با این حرف:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;
  &lt;tr&gt;
    &lt;th&gt;کلمه&lt;/th&gt;
    &lt;th&gt;تلفظ&lt;/th&gt;
    &lt;th&gt;معنی&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td lang=&quot;ur&quot;&gt;میں&lt;/td&gt;
    &lt;td class=&quot;text-right&quot; dir=&quot;ltr&quot;&gt;me~&lt;/td&gt;
    &lt;td&gt;من (ضمیر اول شخص مفرد)&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td lang=&quot;ur&quot;&gt;ہیں&lt;/td&gt;
    &lt;td class=&quot;text-right&quot; dir=&quot;ltr&quot;&gt;he~&lt;/td&gt;
    &lt;td&gt;هستیم/هستید/هستند&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td lang=&quot;ur&quot;&gt;نہیں&lt;/td&gt;
    &lt;td class=&quot;text-right&quot; dir=&quot;ltr&quot;&gt;nahī~&lt;/td&gt;
    &lt;td&gt;نه، حرف نفی&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td lang=&quot;ur&quot;&gt;یہاں&lt;/td&gt;
    &lt;td class=&quot;text-right&quot; dir=&quot;ltr&quot;&gt;yahā~&lt;/td&gt;
    &lt;td&gt;اینجا&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td lang=&quot;ur&quot;&gt;وہاں&lt;/td&gt;
    &lt;td class=&quot;text-right&quot; dir=&quot;ltr&quot;&gt;wahā~&lt;/td&gt;
    &lt;td&gt;آنجا&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td lang=&quot;ur&quot;&gt;کہاں&lt;/td&gt;
    &lt;td class=&quot;text-right&quot; dir=&quot;ltr&quot;&gt;kahā~&lt;/td&gt;
    &lt;td&gt;کجا&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;حرف &lt;span lang=&quot;ur&quot;&gt;ھ&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;این حرف به نام «&lt;span lang=&quot;ur&quot;&gt;دو چشمی ہے&lt;/span&gt;» &lt;code&gt;/do-chashmī hē/&lt;/code&gt; و یا های دوچشم یاد میشود. فرق بین حرف «&lt;span lang=&quot;ur&quot;&gt;ه&lt;/span&gt;»‌ (های ساده)‌ و «&lt;span lang=&quot;ur&quot;&gt;ھ&lt;/span&gt;» در اینجاست که «&lt;span lang=&quot;ur&quot;&gt;ه&lt;/span&gt;» در جایی به کار رفته که مقصد شنیده شدن این صدا باشد. مثلاً در کلمه‌ی «&lt;span lang=&quot;ur&quot;&gt;ہمزہ&lt;/span&gt;» &lt;code&gt;/hamzah/&lt;/code&gt;،‌ در اول و آخر از این حرف استفاده شده است. توجه داشته باشید که حرف های ساده «‌ ه » در اردو به غیر از وقتی که در انتهای کلمه می‌آید، همیشه به صورت نستعلیق نوشته میشود. مثل «&lt;span lang=&quot;ur&quot;&gt;ہے&lt;/span&gt;» (است) و «&lt;span lang=&quot;ur&quot;&gt;تمہارا&lt;/span&gt;» (از تو،‌ مال تو).&lt;/p&gt;
&lt;p&gt;حرف «&lt;span lang=&quot;ur&quot;&gt;ھ&lt;/span&gt;»‌،‌ با حروف صامت (بی‌صدا) مثل ب، پ و ت یکجا شده و باعث صدادار شدن آنها می‌شود. به این صورت که تلفظ حرف اصلی (مثل ب، ت، ...) با خروج هوا از دهان همراه است. به عبارت دیگر به جریان هوا در دهان هنگام تلفظ حرف « ھ »‌ توجه کنید و سعی کنید هنگام تلفظ حرف ب (ت، پ، ...) همان مقدار هوا از دهان خارج شود. سعی کنید مثالهای زیر را با در نظرداشت هدایات بالا تلفظ کنید:&lt;/p&gt;
&lt;table class=&quot;table-fixed&quot;&gt;&lt;thead&gt;
  &lt;tr&gt;
    &lt;th&gt;کلمه&lt;/th&gt;
    &lt;th&gt;معنی&lt;/th&gt;
    &lt;th&gt;کلمه&lt;/th&gt;
    &lt;th&gt;معنی&lt;/th&gt;
  &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;span lang=&quot;ur&quot;&gt;بال&lt;/span&gt; (bāl)&lt;/td&gt;
    &lt;td&gt;موی، مو&lt;/td&gt;
    &lt;td&gt;&lt;span lang=&quot;ur&quot;&gt;بھال&lt;/span&gt; (bhāl)&lt;/td&gt;
    &lt;td&gt;پیشانی&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;span lang=&quot;ur&quot;&gt;تک&lt;/span&gt; (tak)&lt;/td&gt;
    &lt;td&gt;تا (حرف ربط)&lt;/td&gt;
    &lt;td&gt;&lt;span lang=&quot;ur&quot;&gt;تھک&lt;/span&gt; (thak)&lt;/td&gt;
    &lt;td&gt;خسته شدن&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;همچنین توجه داشته باشید که های دوچشم « &lt;span lang=&quot;ur&quot;&gt;ھ&lt;/span&gt; »، هیچ گاه در ابتدای کلمه قرار نمی‌گیرد و همیشه به صورت های دوچشم نوشته می‌شود. مثل «&lt;span lang=&quot;ur&quot;&gt;بھائی&lt;/span&gt;»‌ (برادر)، «&lt;span lang=&quot;ur&quot;&gt;گھی&lt;/span&gt;» (روغن مایع) و «&lt;span lang=&quot;ur&quot;&gt;بدھ&lt;/span&gt;» (چهارشنبه).&lt;/p&gt;
&lt;h2&gt;حرف &lt;span lang=&quot;ur&quot;&gt;ے&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;به این حرف «&lt;span lang=&quot;ur&quot;&gt;بڑی یے&lt;/span&gt;» و یا یای کشیده گفته می‌شود. بر خلاف اسم آن، صدای حرکت کسره (یا زیر)‌ را دارد. مثل «&lt;span lang=&quot;ur&quot;&gt;سلسلے&lt;/span&gt;» &lt;code&gt;/selsele/&lt;/code&gt;. در مقابل کلماتی که با «ـه» آخر نوشته میشوند، با صدای فتحه (زبر)‌ ختم میشوند. درست مثل فارسی افغانستان. مثلاً «&lt;span lang=&quot;ur&quot;&gt;ہمزہ&lt;/span&gt;» به صورت &lt;code&gt;/hamzah/&lt;/code&gt;‌ خوانده میشود. حرف «&lt;span lang=&quot;ur&quot;&gt;ے&lt;/span&gt;» اگر در اول کلمه قرار بگیرد مثل «&lt;span lang=&quot;ur&quot;&gt;ایـ  &lt;/span&gt;» نوشته میشود مانند «&lt;span lang=&quot;ur&quot;&gt;ایک&lt;/span&gt;»‌ &lt;code&gt;/ek/&lt;/code&gt; (یک)‌، اگر در آخر کلمه قرار بگیرد به همین صورت نوشته میشود،‌ مثل «&lt;span lang=&quot;ur&quot;&gt;کمرے&lt;/span&gt;» &lt;code&gt;/kamre/&lt;/code&gt; (جمع اتاق،‌ اتاقها)، اما اگر در وسط قرار بگیرد به صورت یای دونقطه نوشته میشود، مثل «&lt;span lang=&quot;ur&quot;&gt;میں&lt;/span&gt;» &lt;code&gt;/me~/&lt;/code&gt; (من). دقت داشته باشید که حرف «&lt;span lang=&quot;ur&quot;&gt;ی‌&lt;/span&gt;» (یای ساده،‌ نه یای کشیده)، اگر در اول کلمه قرار بگیرد بصورت « یـ »، در وسط به صورت « ـیـ » و در آخر به صورت « ـی » و « ی » نوشته میشود. تشخیص حرف «&lt;span lang=&quot;ur&quot;&gt;ی&lt;/span&gt;» از «&lt;span lang=&quot;ur&quot;&gt;ے&lt;/span&gt;» در وسط کلمات تابع قاعده مشخصی نیست و نیازمند تمرین و ممارست است.&lt;/p&gt;
&lt;h2&gt;کلام آخر&lt;/h2&gt;
&lt;p&gt;در آخر،‌ اینکه از نظر یک اردو زبان تلفظ دقیق هر حرف شاید کمی متفاوت باشد جای شک نیست. سعی من در این بوده که الفبای اردو به صورتی ساده معرفی و نکات ریز و ظریف آن به عهده خود علاقمند گذاشته شود. سپاسگذار میشوم اگر اشتباهات این مقاله را با من در میان بگذارید.&lt;/p&gt;
&lt;h2&gt;منابع&lt;/h2&gt;
</content>
  </entry>
  <entry>
    <title>Implementing a Morphing Number Animation in Android</title>
    <link href="https://www.hamidsafdari.com/morphing-number-animation-in-jetpack-compose-part-2/" />
    <updated>2024-02-26T00:00:00Z</updated>
    <id>https://www.hamidsafdari.com/morphing-number-animation-in-jetpack-compose-part-2/</id>
    <content type="html">&lt;p&gt;This is a two-part article. In &lt;a href=&quot;https://hamidsafdari.com/morphing-number-animation-in-jetpack-compose&quot;&gt;part one&lt;/a&gt;, I described how I created a morph number animation in Jetpack Compose. Each number is a set of nodes, creating a path that gets drawn on Canvas. However, I didn&#39;t go into detail about how the paths used to draw each digit were obtained. This post intends to do that.&lt;/p&gt;
&lt;h3&gt;Generate an SVG image for each digit&lt;/h3&gt;
&lt;p&gt;SVG is a standard format for dealing with vector graphics. It&#39;s so common that almost all vector graphics editors import from or export into this format. The famous D3.js library is a wrapper for SVG. Also, the HTML5 and the Android canvas have commands very similar to SVG commands. In the case of Android, there&#39;s a way to convert an SVG path to a Canvas one. That&#39;s why we&#39;re going to create each digit in our animation using SVG.&lt;/p&gt;
&lt;p&gt;The essence of animation is to gradually change values that correspond to visual items on the screen. For that to happen, you need to make sure everything else remains constant while the animated values are changing. An example would be when you are trying to animate the color of a shape. You have to decide beforehand if you want to use RGB or CMYK to represent the color. You can&#39;t switch between them mid-animation. The same goes for animating our numbers. We have to decide the number of nodes, their types, positions, and the direction they are laid out on their paths. I chose each digit to be made up of only five points, and I found it easier to draw the numbers on a piece of paper before opening up any graphics editor:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/07a73392-33f6-4ea8-8f4f-4136b10dd860.jpeg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Notice how, for zero (0), points 1 and 5 are overlapping? Also, note that zero is not a closed loop. Points 1 and 5 are on top of each other, but they are not connected. Also, for two (2), points 4 and 5 are very close to each other. I&#39;ve done that so the lower part of 3 can be extended from that part when animated.&lt;/p&gt;
&lt;p&gt;Use the paper as a reference to draw the digits in a graphics editor that can output SVG. I used Inkscape since it is free and easy to use. In Inkscape, create a new blank document and select the Text tool (t on the keyboard). Enter the numbers from zero to nine, with a space separating every two numbers. Each digit is represented as a filled shape with a stroke around it. We could use them the way they are now, but they are made up of too many points. We need to make things easier for ourselves by simplifying the shapes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/01968810-4e77-4510-b67c-f193c3ac8263.jpeg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Single stroke digits&lt;/h3&gt;
&lt;p&gt;One way to simplify the shapes would be if they were drawn with a single stroke. Inkscape can&#39;t do that by default, so we will use an Extension called Hershey Text. To start, choose the select tool (the s key), and click on a digit so all of them get selected. Go to the Extensions menu, select Text, and then Hershey Text. Check the Live Preview checkbox and, select a font face. You will need to choose either a one-stroke font face or a font face called EMS. I chose &amp;quot;Hershey Sans 1-Stroke&amp;quot;. Click Apply and then Close.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/ac6776df-81ad-4720-8811-91aa28c373ed.jpeg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Remove extra nodes&lt;/h3&gt;
&lt;p&gt;Again, using the Select tool, select the numbers and, from the Path menu, choose Object to Path to convert each digit to a set of nodes. Then, while the numbers are still selected, press Ctrl+Shift+G twice to ungroup the digits, so you can work on them individually. Select one of the digits, and press 3 to zoom the document and fit the digit on the screen. Select the Node tool (n on the keyboard) and if the digit is not selected, select it again. You can now see the nodes that the digit is made of.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/c546a36f-3a9c-4a12-981d-0220da997561.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can see that there are still too many points. However, we are only going to need five. To reduce the number of points, press Ctrl+L a few times to simplify the path. You&#39;ll get to a point where Ctrl+L won&#39;t remove any more nodes, and you will have to drag over the nodes and press Delete to remove them.&lt;/p&gt;
&lt;h3&gt;Position and type of nodes&lt;/h3&gt;
&lt;p&gt;If a node on the shape is not where it is on your paper drawing, instead of dragging it with the node tool, double-click where the node should be to create a new node. Then drag over the nodes you want to get rid of and press Delete.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/17ff9bb7-307c-4c4b-a842-1c9658eb358e.gif&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Before we move any further, you have to make sure Inkscape only uses absolute commands in the SVG output. I found it hard to control how many or if the same Compose commands were used to generate the paths if the SVG path used relative commands. To make sure Inkscape outputs absolute commands, go to the Edit Menu, Preferences, SVG output, and from &amp;quot;Path string format&amp;quot;, choose Absolute. You will know if absolute or relative commands are used in an SVG file by opening the file in a text editor and looking at the path value. If lowercase letters like c, m, l, and v are used, they are relative commands. Otherwise, if all the commands are uppercase letters, they are absolute commands.&lt;/p&gt;
&lt;p&gt;To ensure the same commands are used to generate the path for all digits, we will convert all nodes to curves. To do this, using the node tool, drag over all the nodes in a digit and then select the &amp;quot;Curve Icon&amp;quot; in the toolbar.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/29b20999-788b-459d-841e-bceb00d558d0.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;If the number is now out of shape, adjust the handles to make it look like before. For a corner node like in 1, 7, or 4, select the node and choose the corner node icon.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/78faae87-8065-4eb4-b632-a30cb3bcdf6f.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Also, make sure the digit is a single continuous stroke and there are no two overlapping nodes where there shouldn&#39;t be any. For this, slightly move the nodes one by one and then press Ctrl+Z to return them to their original positions. If by moving the node, another one appears behind it, they are not connected. Drag over the nodes with the cursor and click on the &amp;quot;Join Nodes&amp;quot; icon to join them.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/522e9270-78ce-4878-abd7-1137d9acc8dd.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;However, if there is a single node where there should be a split, like in 0 or 8, click on the node and then click on the &amp;quot;Split Icon&amp;quot;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/321bd44f-fd66-40bb-b122-e91479c858b7.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Export the digits to SVG&lt;/h3&gt;
&lt;p&gt;Once all that is done, using the select tool, drag the digit over to the top left corner. You can turn on snapping (the % key) to make that easier. Then export the digit as Plain SVG. Select the digit you want to export, then hit Ctrl+Shift+E, select the Selection tab, check the &amp;quot;Export Selected only&amp;quot; checkbox, choose &amp;quot;Plain SVG&amp;quot; as the output format, set the path and name for the output file, and click Export.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/6baa7cf4-a3d3-48b6-a6ee-b44327ce8f57.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Clean up the paths&lt;/h3&gt;
&lt;p&gt;Now, open the SVG file using a text editor. The path used to generate the image should look like this:&lt;/p&gt;
&lt;pre class=&quot;language-plaintext&quot;&gt;&lt;code class=&quot;language-plaintext&quot;&gt;M x1,y1 C x2,y2 x3,y3 x4,y4 x5,y5 x6,y6 x7,y7 x8,y8 x9,y9 x10,y10 x11,y11 x12,y12 x13,y13&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;i.e., a single move command (M) at the beginning and a single curve command (C) followed by a set of coordinates. In SVG, this means: move to these coordinates and start a path from there, then draw curves with the following coordinates. Because we only have curves in our path, only the first one is preceded by a C command as a shorthand.&lt;/p&gt;
&lt;p&gt;Now, open two instances (or tabs) of your text editor. In the first one, copy the SVG path for each digit. In the second one, copy all the paths from the first tab and remove the M and C commands, and replace the spaces with commas to make the paths arrays of float values. I&#39;m using Sublime Text. So, to make this easier, select a single space character, hit Alt+F3 to select all the spaces, and type a single comma (,) to replace them with commas. Do the same to delete all the double quotes, Ms and Cs. Now go to the beginning of the first line, then press the Alt+Shift+Down combination on your keyboard to select the start of the lines below it. Then type &amp;quot;val points = arrayOf(&amp;quot;. Then press End to go to the end of all the lines and then enter a closing brace &amp;quot;)&amp;quot;. The output will be a list of float arrays that we can use in Kotlin:&lt;/p&gt;
&lt;pre class=&quot;language-kotlin&quot;&gt;&lt;code class=&quot;language-kotlin&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;y1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// ...&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;y1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now select all the &amp;quot;points&amp;quot; words by selecting one of them and then pressing Alt+F3, hitting End, and then Ctrl+Shift+P. Type in &amp;quot;Text Pastry&amp;quot; and choose &amp;quot;&#92;i from 0 to 10&amp;quot;. Now, each array has a unique name corresponding to its digit.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you don&#39;t have Text Pastry installed, press Ctrl+Shift+P, type &amp;quot;install&amp;quot; in the modal that appears and, choose &amp;quot;Package Control: Install Package&amp;quot;. In the new dialog, type &amp;quot;Text Pastry&amp;quot; and select the first item. You will see the installation progress in the bottom left corner of Sublime Text.&lt;/p&gt;
&lt;p&gt;Also, if you are are not using Sublime Text, just make sure the path for digit 0 is called points0, the path for digit 1 is called points1 and so on.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/06b10403-a67e-4dd4-9fab-a52e909aba6e.gif&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/8378a139-a1b9-4ef5-96c0-108e5e7899ff.gif&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;The paths in the first tab of your text editor can be used to get the commands needed to generate the same shapes in Compose. The second tab contains arrays of values that we will pass to the Compose commands that were generated.&lt;/p&gt;
&lt;h3&gt;We are done&lt;/h3&gt;
&lt;p&gt;Bravo. Now you have the paths needed to draw digits 0 to 9 in Compose. However, that was only the first step towards animating the digits. Check out &lt;a href=&quot;https://hamidsafdari.com/morphing-number-animation-in-jetpack-compose&quot;&gt;my other post&lt;/a&gt; to see how we can now create the morph animations.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Animating Number Changes on Android: Concepts and Constraints</title>
    <link href="https://www.hamidsafdari.com/morphing-number-animation-in-jetpack-compose/" />
    <updated>2024-02-25T00:00:00Z</updated>
    <id>https://www.hamidsafdari.com/morphing-number-animation-in-jetpack-compose/</id>
    <content type="html">&lt;p&gt;Jetpack Compose has made building Android apps easier than ever before. One aspect that is now easier to deal with is animation. That said, creating animations, in general, requires time and patience. In this blog post, I will show you how to create a morphing number animation where each digit gradually morphs into the next one.&lt;/p&gt;
&lt;p&gt;To make these animations, you need to create each digit in a vector graphics editor like Inkscape and export them to SVG. We will use the SVG path for each digit and use Compose commands to draw them on Canvas. Canvas is used to draw everything you see on your screen on an Android device. To simplify our task, each digit will be drawn using a single stroke and only five nodes. This will make managing transitions easier by dealing with a fixed set of coordinates, rather than a variable number or variable types of commands.&lt;/p&gt;
&lt;p&gt;Generating SVG images for all the digits is an involved process. To make this post easier to grasp, I have described how I created the SVG images &lt;a href=&quot;https://hamidsafdari.com/morphing-number-animation-in-jetpack-compose-part-2&quot;&gt;in another post&lt;/a&gt;. You can refer to that post if you don&#39;t like how the digits or the transitions look like. Otherwise, you can just copy the ones I have already generated:&lt;/p&gt;
&lt;pre class=&quot;language-plaintext&quot;&gt;&lt;code class=&quot;language-plaintext&quot;&gt;// SVG paths for digits 0 to 9
M 9.5711,149.46543 C 9.4772,86.81623 23.8726,8.74773 91.5763,4.53473 177.6464,-0.82107 202.5491,76.67563 200.7606,153.58433 200.2051,194.06073 190.073,297.12078 100.9805,292.54051 20.6571,288.41107 9.6441,198.09063 9.5711,149.46543
M 70.96325,59.18415 C 70.96325,59.18415 94.64565,46.46215 105.16455,38.20135 117.79115,28.28515 105.16455,38.20135 139.36595,4.28765 139.36595,4.28765 139.36595,94.72995 139.36595,139.95105 139.36595,190.87135 139.36595,292.71185 139.36595,292.71185
M 20.092742,73.588205 C 22.783442,-3.3354848 156.58864,-19.320625 176.83914,43.003315 203.17774,139.11666 106.15864,210.59574 11.931042,292.38013 95.809642,292.38013 135.99244,292.37463 198.02314,292.36814 198.03814,292.36813 198.05314,292.36813 198.06824,292.36813
M 35.0707,4.27402 C 35.0707,4.27402 84.0763,4.27402 108.5791,4.27402 134.1587,4.27402 185.318,4.27402 185.318,4.27402 130.7398,77.29711 128.6435,80.20258 103.6807,113.70261 313.538,97.84669 144.3483,418.1831 7.7136,237.02686
M 205.80476,192.59182 C 205.80476,192.59182 55.25923,192.92034 4.1948476,192.59182 27.430317,159.61295 102.25792,54.636836 138.45938,4.1952421 138.45938,53.311994 138.45938,130.20089 138.45938,193.20371 138.45938,224.2571 138.45938,286.36387 138.45938,286.36387
M 173.2887,4.298099 C 173.2887,4.298099 57.235402,4.298099 36.559902,4.298099 32.553402,39.855799 27.300002,86.480099 22.670002,127.5711 98.069502,59.533499 236.7401,120.7315 192.3053,235.49644 160.0425,315.53808 31.280502,307.4445 9.2142025,236.95416
M 180.6085,46.41543 C 170.477,8.05393 78.6828,-26.9429 37.3649,48.81914 15.5501,93.86806 13.4856,147.64663 19.1209,196.8542 23.999,90.50136 196.8706,87.98967 193.5056,204.21197 190.5619,305.87852 37.5273,340.55817 19.1209,196.8542
M 9.0506,4.28824 C 9.0506,4.28824 72.4102,4.28824 104.09,4.28824 136.4559,4.28824 171.1942,4.28824 201.1878,4.28824 180.111,48.58288 156.1061,99.03131 133.5652,146.40285 110.3591,195.17249 63.9469,292.71177 63.9469,292.71177
M 103.98236,123.90755 C -10.87144,105.65558 -0.2418397,8.938676 100.41516,4.221746 193.70096,-0.149754 235.81526,100.54044 104.01286,123.9475 220.75826,135.92096 245.49376,289.88455 105.21576,292.55385 -30.73964,295.61275 -15.84014,137.13145 104.04336,123.98745
M 193.46807,99.965401 C 159.02126,243.85802 -13.647492,172.39794 19.290401,68.241119 44.886316,-12.698763 178.54551,-30.17994 193.46807,99.965401 199.40338,151.7295 186.78965,213.13596 177.09557,239.7362 153.55747,311.24389 41.825865,305.84029 28.447965,251.2339&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The paths above will output digits that look like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/443951f7-020c-4a18-a7f8-74c576133946.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;The paths need to be converted to arrays of floats so we can use them in Compose:&lt;/p&gt;
&lt;pre class=&quot;language-kotlin&quot;&gt;&lt;code class=&quot;language-kotlin&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points0 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9.5711f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;149.46542f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9.4772f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;86.81623f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;23.8726f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8.74773f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;91.5763f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.53473f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;177.6464f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.82107f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;202.5491f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;76.67563f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200.7606f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;153.58434f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200.2051f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;194.06073f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;190.073f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;297.1208f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100.9805f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;292.5405f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20.6571f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;288.41107f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9.6441f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;198.09064f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9.5711f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;149.46542f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;70.96325f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;59.18415f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;70.96325f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;59.18415f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;94.64565f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;46.46215f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;105.16455f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;38.20135f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;117.79115f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;28.28515f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;105.16455f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;38.20135f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;139.36595f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.28765f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;139.36595f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.28765f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;139.36595f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;94.72995f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;139.36595f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;139.95105f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;139.36595f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;190.87135f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;139.36595f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;292.71185f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;139.36595f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;292.71185f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20.1064f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;73.93557f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20.0159f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;34.525f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;63.4161f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9.7031f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;97.6948f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.9576f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;126.7435f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.9361f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;169.1022f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;15.0676f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;176.8528f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;43.35068f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;203.1914f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;139.46402f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;106.1723f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;210.9431f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11.9447f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;292.72748f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;95.8437f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;292.72748f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;136.0465f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;292.7245f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;198.0819f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;292.71548f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points3 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;35.0707f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.27402f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;35.0707f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.27402f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;84.0763f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.27402f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;108.5791f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.27402f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;134.1587f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.27402f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;185.318f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.27402f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;185.318f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.27402f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;130.7398f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;77.29711f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;128.6435f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80.20258f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;103.6807f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;113.70261f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;313.538f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;97.84669f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;144.3483f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;418.1831f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7.7136f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;237.02686f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points4 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;205.80476f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;192.59183f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;205.80476f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;192.59183f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;55.25923f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;192.92033f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.1948476f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;192.59183f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;27.430317f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;159.61295f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;102.25792f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;54.636837f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;138.45938f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.195242f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;138.45938f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;53.311993f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;138.45938f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;130.2009f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;138.45938f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;193.2037f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;138.45938f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;224.2571f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;138.45938f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;286.36386f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;138.45938f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;286.36386f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points5 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;173.2887f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.298099f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;173.2887f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.298099f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;57.2354f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.298099f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;36.559902f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.298099f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;32.553402f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;39.8558f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;27.300001f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;86.4801f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;22.670002f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;127.5711f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;98.0695f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;59.5335f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;236.7401f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;120.7315f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;192.3053f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;235.49644f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;160.0425f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;315.5381f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;31.280502f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;307.4445f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9.214203f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;236.95416f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points6 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;180.6085f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;46.41543f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;170.477f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8.05393f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;78.6828f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;26.9429f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;37.3649f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;48.81914f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;15.5501f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;93.86806f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;13.4856f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;147.64664f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;19.1209f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;196.8542f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;23.999f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90.50136f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;196.8706f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;87.98967f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;193.5056f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;204.21198f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;190.5619f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;305.8785f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;37.5273f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;340.55817f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;19.1209f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;196.8542f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points7 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9.0506f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.28824f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9.0506f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.28824f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;72.4102f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.28824f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;104.09f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.28824f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;136.4559f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.28824f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;171.1942f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.28824f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;201.1878f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.28824f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;180.111f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;48.58288f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;156.1061f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;99.03131f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;133.5652f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;146.40285f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;110.3591f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;195.17249f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;63.9469f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;292.71176f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;63.9469f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;292.71176f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points8 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;103.98236f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;123.90755f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10.87144f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;105.65558f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.2418397f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8.938676f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100.41516f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4.221746f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;193.70096f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.149754f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;235.81526f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100.54044f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;104.01286f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;123.9475f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;220.75826f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;135.92096f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;245.49376f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;289.88455f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;105.21576f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;292.55385f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;30.73964f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;295.61275f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;15.84014f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;137.13145f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;104.04336f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;123.98745f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points9 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;arrayOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;193.46807f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;99.965401f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;159.02126f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;243.85802f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;13.647492f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;172.39794f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;19.290401f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;68.241119f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;44.886316f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12.698763f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;178.54551f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;30.17994f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;193.46807f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;99.965401f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;199.40338f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;151.7295f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;186.78965f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;213.13596f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;177.09557f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;239.7362f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;153.55747f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;311.24389f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;41.825865f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;305.84029f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;28.447965f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;251.2339f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Drawing the first digit&lt;/h3&gt;
&lt;p&gt;Our first step would be to use the path coordinates for a single digit and draw it on Canvas. I could cheat and tell you that you will need a single &amp;quot;Move&amp;quot; followed by four &amp;quot;Curve&amp;quot; commands, but since I wasn&#39;t sure before I started this, I used &lt;code&gt;androidx.compose.ui.graphics.vector.PathParser&lt;/code&gt; to read a single path and then convert it to a set of &lt;code&gt;PathNodes&lt;/code&gt; by calling &lt;code&gt;toNodes()&lt;/code&gt; on the output. All the commands used are sealed classes that implement &lt;code&gt;PathNode&lt;/code&gt;, and you will get their names if you loop through the nodes output by &lt;code&gt;toNodes()&lt;/code&gt;. Also, you only need to do this for a single path since all of them use the same commands and only the coordinates are different.&lt;/p&gt;
&lt;pre class=&quot;language-kotlin&quot;&gt;&lt;code class=&quot;language-kotlin&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// you could do this in a unit test&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ui&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;graphics&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;vector&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PathParser

&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; svgPath &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal singleline&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;M 9.5711,149.46543 C 9.4772,86.81623 23.8726,8.74773 91.5763,4.53473 177.6464,-0.82107 202.5491,76.67563 200.7606,153.58433 200.2051,194.06073 190.073,297.12078 100.9805,292.54051 20.6571,288.41107 9.6441,198.09063 9.5711,149.46543&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; nodes &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;PathParser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;parsePathString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;svgPath&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toNodes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;node &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; nodes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;node&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// which will output&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;MoveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9.5711&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;149.46542&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x1&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9.4772&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y1&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;86.81623&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x2&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;23.8726&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y2&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;8.74773&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x3&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;91.5763&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y3&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4.53473&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x1&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;177.6464&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y1&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.82107&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x2&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;202.5491&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y2&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;76.67563&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x3&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;200.7606&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y3&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;153.58434&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x1&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;200.2051&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y1&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;194.06073&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x2&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;190.073&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y2&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;297.1208&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x3&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100.9805&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y3&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;292.5405&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x1&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20.6571&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y1&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;288.41107&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x2&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9.6441&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y2&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;198.09064&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x3&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9.5711&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y3&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;149.46542&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To draw the digit on the screen, we will convert the list of commands to a &lt;code&gt;NodePath&lt;/code&gt; and then draw it using &lt;code&gt;drawPath()&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-kotlin&quot;&gt;&lt;code class=&quot;language-kotlin&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ui&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;graphics&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;vector&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;toPath
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ui&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;graphics&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;vector&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PathNode

&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; pz &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; listOf&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Float&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;/* list of coordinates for a single digit */&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;listOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    PathNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;MoveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    PathNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    PathNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    PathNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    PathNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;22&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;Spacer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;modifier &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Modifier&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;onDrawBehind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;drawPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Color&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Black&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; style &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Stroke&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/04117e42-1eb6-4eee-891f-432c680d8257.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Animating the digit&lt;/h3&gt;
&lt;p&gt;As Compose works with &lt;code&gt;State&lt;/code&gt;s and an animation is merely a gradual change of &lt;code&gt;State&lt;/code&gt;, we will use a class (calling it &lt;code&gt;TransitionData&lt;/code&gt;) that stores the state of the current digit being displayed. We also write delegated &amp;quot;by&amp;quot; properties to make it easier to deal with this class:&lt;/p&gt;
&lt;pre class=&quot;language-kotlin&quot;&gt;&lt;code class=&quot;language-kotlin&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;TransitionData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;points&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; List&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;State&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Float&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; p0 &lt;span class=&quot;token keyword&quot;&gt;by&lt;/span&gt; points&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; p1 &lt;span class=&quot;token keyword&quot;&gt;by&lt;/span&gt; points&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; p2 &lt;span class=&quot;token keyword&quot;&gt;by&lt;/span&gt; points&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// ...&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; p25 &lt;span class=&quot;token keyword&quot;&gt;by&lt;/span&gt; points&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We will also use an Enum to represent the digits and a &lt;code&gt;@Composable&lt;/code&gt; function that takes in the Enum and returns the &amp;quot;remembered&amp;quot; digit path using the &lt;code&gt;TransitionData&lt;/code&gt; class.&lt;/p&gt;
&lt;pre class=&quot;language-kotlin&quot;&gt;&lt;code class=&quot;language-kotlin&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;enum&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; Digit &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; ONE&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; TWO&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; THREE&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; FOUR&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; FIVE&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; SIX&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; SEVEN&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; EIGHT&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; NINE&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; ZERO &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token annotation builtin&quot;&gt;@Composable&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;updateTransitionData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;digit&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; TransitionData &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; transition &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;updateTransition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;digit&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; points &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mutableListOf&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;State&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Float&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; until &lt;span class=&quot;token number&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        points&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;transition&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;animateFloat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; digit &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;digit&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ONE &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; points1&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
                Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;TWO &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; points2&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
                &lt;span class=&quot;token comment&quot;&gt;// ...&lt;/span&gt;
                Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ZERO &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; points0&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;remember&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;transition&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;TransitionData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;points&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;updateTransition&lt;/code&gt; function sets up a &lt;code&gt;Transition&lt;/code&gt; which is the basis of our animation. We pass &lt;code&gt;digit&lt;/code&gt; to it to set its current state, which is a &amp;quot;remembered&amp;quot; value. The output of &lt;code&gt;updateTransition&lt;/code&gt; is a &lt;code&gt;Transition&lt;/code&gt; value, which we can use to add more animations to, using &lt;code&gt;animateFloat&lt;/code&gt;, &lt;code&gt;animateColor&lt;/code&gt;, etc.&lt;/p&gt;
&lt;p&gt;To use the animated digit, we will then just need to use &lt;code&gt;DrawScope.drawPath(path)&lt;/code&gt; in a &lt;code&gt;@Composable&lt;/code&gt;. We can do that inside &lt;code&gt;Modifier.drawBehind()&lt;/code&gt;, but it would be more efficient to also use &lt;code&gt;drawWithCache()&lt;/code&gt; to reduce the number of draws to only when the screen size or the digit changes.&lt;/p&gt;
&lt;pre class=&quot;language-kotlin&quot;&gt;&lt;code class=&quot;language-kotlin&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;foundation&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;layout&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Spacer
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;runtime&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Composable
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ui&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Modifier
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ui&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;draw&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;drawWithCache
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ui&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;graphics&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Color
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ui&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;graphics&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;drawscope&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Stroke
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ui&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;graphics&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;vector&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PathNode
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ui&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;graphics&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;vector&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;toPath
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;github&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hamidsafdari&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;animatedtext&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Digit
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;github&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hamidsafdari&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;animatedtext&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;updateTransitionData

&lt;span class=&quot;token annotation builtin&quot;&gt;@Composable&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MorphingDigit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;digit&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; pz &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;updateTransitionData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;digit&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;Spacer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;modifier &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Modifier
        &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;drawWithCache&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;listOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                PathNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;MoveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                PathNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p3&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p4&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p5&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p6&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p7&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                PathNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p8&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p9&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p10&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p11&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p12&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p13&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                PathNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p14&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p15&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p16&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p17&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p18&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p19&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                PathNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;CurveTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p20&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p21&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p22&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p23&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p24&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;p25&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

            onDrawBehind &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;drawPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Color&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Black&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; style &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Stroke&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;A number is more than one digit&lt;/h3&gt;
&lt;p&gt;We are nearly done but, what gets drawn is a single digit number (i.e., 0 to 9), and you have to pass a &lt;code&gt;Digit&lt;/code&gt; to it rather than something like a &lt;code&gt;Long&lt;/code&gt;. To show longer numbers, we can convert our number to a string, map each character to a &lt;code&gt;Digit&lt;/code&gt; , and then pass the result to a &lt;code&gt;LazyRow&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-kotlin&quot;&gt;&lt;code class=&quot;language-kotlin&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;foundation&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lazy&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LazyRow
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;foundation&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lazy&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;itemsIndexed
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; androidx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;compose&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;runtime&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Composable
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;github&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hamidsafdari&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;animatedtext&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Digit
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;github&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hamidsafdari&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;animatedtext&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;MorphingDigit

&lt;span class=&quot;token annotation builtin&quot;&gt;@Composable&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MorphingNumber&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;number&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Long&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;val&lt;/span&gt; digits &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; number&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;map&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;when&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token char&quot;&gt;&#39;1&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ONE
            &lt;span class=&quot;token char&quot;&gt;&#39;2&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;TWO
            &lt;span class=&quot;token char&quot;&gt;&#39;3&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;THREE
            &lt;span class=&quot;token char&quot;&gt;&#39;4&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;FOUR
            &lt;span class=&quot;token char&quot;&gt;&#39;5&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;FIVE
            &lt;span class=&quot;token char&quot;&gt;&#39;6&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;SIX
            &lt;span class=&quot;token char&quot;&gt;&#39;7&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;SEVEN
            &lt;span class=&quot;token char&quot;&gt;&#39;8&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;EIGHT
            &lt;span class=&quot;token char&quot;&gt;&#39;9&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NINE
            &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; Digit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ZERO
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;LazyRow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;reverseLayout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;itemsIndexed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;digits&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reversed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; _&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; item &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;MorphingDigit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We are passing &lt;code&gt;reverseLayout&lt;/code&gt; to &lt;code&gt;LazyRow&lt;/code&gt; and reversing the list of digits, so the last digit is drawn first. That&#39;s because when we go from a shorter number to a larger number, the digits at the end should stay put. That means if the current number being shown is 99, and we go to 100, it&#39;s the 9s that get morphed into 0s and not the first two digits (e.g., 10).&lt;/p&gt;
&lt;h3&gt;Using the animation&lt;/h3&gt;
&lt;p&gt;We are done. All you need to do now is to use the &lt;code&gt;MorphingNumber&lt;/code&gt; function like any other &lt;code&gt;@Composable&lt;/code&gt; and pass a number to it. To see the animation in action, make the number change on click or after a delay in &lt;code&gt;LaunchedEffect&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-kotlin&quot;&gt;&lt;code class=&quot;language-kotlin&quot;&gt;&lt;span class=&quot;token annotation builtin&quot;&gt;@Preview&lt;/span&gt;
&lt;span class=&quot;token annotation builtin&quot;&gt;@Composable&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MorphingNumberPreview&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; count &lt;span class=&quot;token keyword&quot;&gt;by&lt;/span&gt; remember &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;mutableLongStateOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;LaunchedEffect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; until &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            count &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;Surface&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        modifier &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Modifier
            &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;dp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;110&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;dp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;MorphingNumber&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;number &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://www.hamidsafdari.com/assets/images/53e208e6-94dc-4242-a4ac-74ce383a0822.gif&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Last words&lt;/h3&gt;
&lt;p&gt;In this post, I showed you how to create a morphing number animation in Jetpack Compose. Needless to say, you can use this process to animate any other shape as long as the number of points and the commands used to generate the shape are consistent between the two states. The source code for this post &lt;a href=&quot;https://github.com/hamidsafdari/animatedtext&quot;&gt;is available here&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>QueryDSL with JPA: Safer, Cleaner Queries in Java</title>
    <link href="https://www.hamidsafdari.com/querydsl-for-jpa/" />
    <updated>2023-07-11T00:00:00Z</updated>
    <id>https://www.hamidsafdari.com/querydsl-for-jpa/</id>
    <content type="html">&lt;p&gt;If we could say Hibernate provides a way to map database tables to classes, QueryDSL does the same for queries. QueryDSL lets you leverage the same entities defined for Hibernate and uses them to make legible queries that closely resemble native SQL queries. The result is queries written in native Java with IDE code completion and inline error detection.&lt;/p&gt;
&lt;p&gt;QueryDSL closes the gap between your Java code and the database by letting you define queries in the most natural way you could expect, as in &lt;code&gt;fruit.taste.eq(&amp;quot;sweet&amp;quot;)&lt;/code&gt; or if &lt;code&gt;Taste&lt;/code&gt; was an Enum, &lt;code&gt;fruit.taste.in(Taste.SWEET, Taste.SOUR)&lt;/code&gt;. QueryDSL does this by generating what it calls Q-classes from entities. Each Q-class exports a static field that represents the entity and can be used several times to make complex queries.&lt;/p&gt;
&lt;p&gt;My goal in this article is to quickly get you started with QueryDSL. I will create a database with two entities; &lt;code&gt;Fruit&lt;/code&gt; and &lt;code&gt;Batch&lt;/code&gt;. I will then demonstrate how easy it is to build queries with Q-classes.&lt;/p&gt;
&lt;h3&gt;Setup&lt;/h3&gt;
&lt;p&gt;The setup I used for this project was:&lt;/p&gt;
&lt;pre class=&quot;language-plaintext&quot;&gt;&lt;code class=&quot;language-plaintext&quot;&gt;Platform: Archlinux 6.4.1
Java: 11.0.19
Spring Boot: 2.7.13
Build Tool: Maven 3.8.7&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I used the &lt;a href=&quot;https://start.spring.io/&quot;&gt;https://start.spring.io/&lt;/a&gt; tool to generate a Spring Boot project with &amp;quot;Spring Data JPA&amp;quot;, the &amp;quot;H2 Database&amp;quot; and &amp;quot;Lombok&amp;quot; as dependencies. Then manually added the QueryDSL dependencies to pom.xml:&lt;/p&gt;
&lt;pre class=&quot;language-xml&quot;&gt;&lt;code class=&quot;language-xml&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;dependency&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;groupId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;com.querydsl&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;groupId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;querydsl-jpa&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;version&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;5.0.0&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;version&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;dependency&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;dependency&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;groupId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;com.querydsl&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;groupId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;querydsl-apt&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;version&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;5.0.0&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;version&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;classifier&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;jpa&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;classifier&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;dependency&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div data-node-type=&quot;callout&quot;&gt;
&lt;div data-node-type=&quot;callout-emoji&quot;&gt;💡&lt;/div&gt;
&lt;div data-node-type=&quot;callout-text&quot;&gt;You might notice that some articles online (including the official QueryDSL website) mention a &lt;code&gt;&amp;lt;plugin&amp;gt;&lt;/code&gt; part in pom.xml to make QueryDSL generate Q-classes. The &lt;code&gt;&amp;lt;classifier&amp;gt;&lt;/code&gt; tag for the &lt;code&gt;querydsl-apt&lt;/code&gt; dependency does the same thing in a more concise way. If this method doesn&#39;t work for you, use the &lt;code&gt;&amp;lt;plugin&amp;gt;&lt;/code&gt; approach.&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Define Entities and Repositories&lt;/h3&gt;
&lt;p&gt;Define two Enums &lt;code&gt;Category&lt;/code&gt; and &lt;code&gt;Taste&lt;/code&gt; and the &lt;code&gt;Fruit&lt;/code&gt; and &lt;code&gt;Batch&lt;/code&gt; entities.&lt;/p&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;enum&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token constant&quot;&gt;PIT&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;CORE&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;CITRUS&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;BERRY&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;MELON&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;TROPICAL&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;enum&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Taste&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token constant&quot;&gt;SWEET&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;SOUR&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;SALTY&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;BITTER&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;UMAMI&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token annotation punctuation&quot;&gt;@Data&lt;/span&gt;
&lt;span class=&quot;token annotation punctuation&quot;&gt;@Entity&lt;/span&gt;
&lt;span class=&quot;token annotation punctuation&quot;&gt;@NoArgsConstructor&lt;/span&gt;
&lt;span class=&quot;token annotation punctuation&quot;&gt;@RequiredArgsConstructor&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@Id&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@GeneratedValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;strategy &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GenerationType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;IDENTITY&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Long&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@NonNull&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@NonNull&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; description&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@NonNull&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; region&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@NonNull&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@Enumerated&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;EnumType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;STRING&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt; category&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@NonNull&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@Enumerated&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;EnumType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;STRING&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Taste&lt;/span&gt; taste&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token annotation punctuation&quot;&gt;@ManyToMany&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Batch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; batches&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token annotation punctuation&quot;&gt;@Data&lt;/span&gt;
&lt;span class=&quot;token annotation punctuation&quot;&gt;@Entity&lt;/span&gt;
&lt;span class=&quot;token annotation punctuation&quot;&gt;@NoArgsConstructor&lt;/span&gt;
&lt;span class=&quot;token annotation punctuation&quot;&gt;@RequiredArgsConstructor&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Batch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@Id&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@GeneratedValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;strategy &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GenerationType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;IDENTITY&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Long&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@NonNull&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Long&lt;/span&gt; amountKilo&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@NonNull&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ZonedDateTime&lt;/span&gt; arrivalDate&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@NonNull&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Double&lt;/span&gt; cost&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@NonNull&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Double&lt;/span&gt; shipping&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@NonNull&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; orderNumber&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token annotation punctuation&quot;&gt;@NonNull&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@ManyToMany&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; fruits&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;@Data&lt;/code&gt; annotation will tell Lombok to generate getter and setter methods for the entities. Lombok will also add an empty constructor for &lt;code&gt;@NoArgsConstructor&lt;/code&gt; and a constructor for fields annotated with &lt;code&gt;@NoArgsConstructor&lt;/code&gt;. There is also a many-to-many relationship between the Fruit and Batch tables.&lt;/p&gt;
&lt;p&gt;There are many ways to query the database, and one of them is by getting an instance of &lt;code&gt;EntityManager&lt;/code&gt; and using it with a Q-class to fetch entities. An easier way is to define a repository that extends both &lt;code&gt;JpaRepository&lt;/code&gt; and &lt;code&gt;QueryDslPredicateExecutor&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FruitRepository&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;JpaRepository&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;QuerydslPredicateExecutor&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BatchRepository&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;JpaRepository&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Batch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;QuerydslPredicateExecutor&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Batch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This way, in addition to the default &lt;code&gt;find*&lt;/code&gt;, &lt;code&gt;delete&lt;/code&gt;, and &lt;code&gt;save&lt;/code&gt; operations provided by &lt;code&gt;JpaRepository&lt;/code&gt;, we have access to QueryDSL methods.&lt;/p&gt;
&lt;h3&gt;Generate Q-classes&lt;/h3&gt;
&lt;p&gt;Since we are using Maven, we will build our application using the following command to generate the Q-classes:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# append -Dmaven.test.skip=true to save time on compilation&lt;/span&gt;
mvn clean &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Our directory structure before the Q-classes were generated will look something like this:&lt;/p&gt;
&lt;pre class=&quot;language-plaintext&quot;&gt;&lt;code class=&quot;language-plaintext&quot;&gt;.
├── pom.xml
└── src
    └── main
        ├── java
        │   └── com
        │       └── brainoffloaded
        │           └── querydsl
        │               ├── entity
        │               │   ├── Batch.java
        │               │   ├── Category.java
        │               │   ├── Fruit.java
        │               │   └── Taste.java
        │               ├── BatchRepository.java
        │               ├── FruitRepository.java
        │               └── QuerydslIntroApplication.java
        └── resources
            └── application.properties&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After a successful build, the Q-classes will appear under &lt;code&gt;&amp;lt;project root&amp;gt;/target/generated-sources&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-plaintext&quot;&gt;&lt;code class=&quot;language-plaintext&quot;&gt;.
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── brainoffloaded
    │   │           └── querydsl
    │   │               ├── entity
    │   │               │   ├── Batch.java
    │   │               │   ├── Category.java
    │   │               │   ├── Fruit.java
    │   │               │   └── Taste.java
    │   │               ├── BatchRepository.java
    │   │               ├── FruitRepository.java
    │   │               └── QuerydslIntroApplication.java
    │   └── resources
    │       └── application.properties
    └── target
        └── generated-sources
            └── annotations
                └── com
                    └── brainoffloaded
                        └── querydsl
                            └── entity
                                ├── QBatch.java
                                └── QFruit.java&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You IDE should recognize and add the &lt;code&gt;generated-sources&lt;/code&gt; path to the list of project sources. In JetBrains&#39; IntelliJ IDEA, you might need to do a simple build (Ctrl + F9). However, if you use Eclipse, have a look at the end of this article to check what worked for me.&lt;/p&gt;
&lt;h3&gt;Writing Queries&lt;/h3&gt;
&lt;p&gt;Now that we have defined our Entities and repositories and the Q-classes are generated by QueryDSL and recognized by our IDE, we can start writing queries. We will query our database inside a test case. But first, we need to tell Spring how to connect to our in-memory H2 database when running our test. We can do that by adding a properties file at the path &lt;code&gt;src/test/resources/application-test.properties&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-plaintext&quot;&gt;&lt;code class=&quot;language-plaintext&quot;&gt;spring.datasource.url             = jdbc:h2:mem:querydsl-intro
spring.datasource.driverClassName = org.h2.Driver
spring.datasource.username        = test
spring.datasource.password        = test
spring.jpa.database-platform      = org.hibernate.dialect.H2Dialect&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can now write a test class annotated with &lt;code&gt;@DataJpaTest&lt;/code&gt; that will load the database context but not the entire Spring application context:&lt;/p&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token annotation punctuation&quot;&gt;@DataJpaTest&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FruitServiceTest&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@Autowired&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FruitRepository&lt;/span&gt; fruitRepository&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token annotation punctuation&quot;&gt;@Autowired&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BatchRepository&lt;/span&gt; batchRepository&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;QFruit&lt;/span&gt; fruit &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;QFruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fruit&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;QBatch&lt;/span&gt; batch &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;QBatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;batch&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token annotation punctuation&quot;&gt;@Test&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;testSaveFruits&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt; apple &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fruitRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;yellow&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;everywhere&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;CORE&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Taste&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;SWEET&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt; banana &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fruitRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;banana&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;yellow&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;tropical areas&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;TROPICAL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Taste&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;SWEET&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt; blueberries &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fruitRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;blueberries&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;blue&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;humid northern areas&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;BERRY&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Taste&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;SWEET&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    fruitRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;flush&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token class-name&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; batch1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;HashSet&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    batch1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;apple&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    batch1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;banana&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    batchRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Batch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100L&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ZonedDateTime&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;18.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;AKO-02838&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; batch1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    batchRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Batch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;40L&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ZonedDateTime&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;360.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;26.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;WDF-08021&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Collections&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;singleton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;blueberries&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    batchRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;flush&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token class-name&quot;&gt;Pageable&lt;/span&gt; pageable &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PageRequest&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;of&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;by&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;Predicate&lt;/span&gt; predicate &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fruit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;taste&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eq&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Taste&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;SWEET&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;and&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fruit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eq&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;yellow&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;and&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fruit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;category&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;CORE&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;TROPICAL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token class-name&quot;&gt;Page&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fruitRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;findAll&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;predicate&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pageable&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;assertEquals&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; result&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getTotalElements&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token class-name&quot;&gt;Page&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Batch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; batchResult &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; batchRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;findAll&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;batch&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fruits&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;any&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eq&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PageRequest&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;of&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;assertEquals&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; batchResult&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getTotalElements&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;assertEquals&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;AKO-02838&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; batchResult&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getContent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getOrderNumber&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now let&#39;s break down the example.&lt;/p&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;QFruit&lt;/span&gt; fruit &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;QFruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fruit&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;QBatch&lt;/span&gt; batch &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;QBatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;batch&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&#39;ve defined &lt;code&gt;QFruit.fruit&lt;/code&gt; and &lt;code&gt;QBatch.batch&lt;/code&gt; as class fields since they immutable and can be used in as many queries as we want. So it makes sense to define them only once. However, there might be cases where you need to refer to the same table twice. In those situations, you can use &lt;code&gt;new QFruit(&amp;quot;fruit1&amp;quot;)&lt;/code&gt; to create a new reference to the table.&lt;/p&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt; apple &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fruitRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;yellow&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;everywhere&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;CORE&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Taste&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;SWEET&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt; banana &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fruitRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;banana&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;yellow&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;tropical areas&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;TROPICAL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Taste&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;SWEET&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt; blueberries &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fruitRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;blueberries&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;blue&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;humid northern areas&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;BERRY&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Taste&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;SWEET&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
fruitRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;flush&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token class-name&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; batch1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;HashSet&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
batch1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;apple&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
batch1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;banana&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
batchRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Batch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100L&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ZonedDateTime&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;18.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;AKO-02838&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; batch1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
batchRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Batch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;40L&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ZonedDateTime&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;360.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;26.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;WDF-08021&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Collections&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;singleton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;blueberries&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
batchRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;flush&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Before we can query the database, we need some data in our tables. Here, we have saved a few fruits and the batches they arrived in and we call &lt;code&gt;.flush()&lt;/code&gt; to persist the changes to the database.&lt;/p&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Pageable&lt;/span&gt; pageable &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PageRequest&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;of&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;by&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token class-name&quot;&gt;Predicate&lt;/span&gt; predicate &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fruit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;taste&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eq&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Taste&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;SWEET&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;and&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fruit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eq&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;yellow&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;and&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fruit&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;category&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;CORE&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Category&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;TROPICAL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token class-name&quot;&gt;Page&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fruitRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;findAll&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;predicate&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pageable&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;assertEquals&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; result&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getTotalElements&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is our first query. Because we need to test the results returned by the database rather than just return them, we use a variation of &lt;code&gt;findAll&lt;/code&gt; provided by &lt;code&gt;QuerydslPredicateExecutor&lt;/code&gt; that accepts a &lt;code&gt;Predicate&lt;/code&gt; and a &lt;code&gt;Pageable&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A predicate can be created by an expression as simple as &lt;code&gt;fruit.taste.eq(Taste.SWEET)&lt;/code&gt; or as we have done in our example, multiple expressions can be joined together using &lt;code&gt;.and()&lt;/code&gt;. Other connective methods include &lt;code&gt;.or()&lt;/code&gt;, &lt;code&gt;.in()&lt;/code&gt;, &lt;code&gt;.notIn()&lt;/code&gt;, &lt;code&gt;.coalese()&lt;/code&gt;, &lt;code&gt;.andAnyOf()&lt;/code&gt;, &lt;code&gt;.orAllOf()&lt;/code&gt; and so on. You can find the full list on the &lt;a href=&quot;http://querydsl.com/static/querydsl/5.0.0/apidocs/&quot;&gt;QueryDSL API documentation website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;Pageable&lt;/code&gt; limits the amount of data returned by the query and accepts a page number, a start index, and an optional &lt;code&gt;Sort&lt;/code&gt; parameter. The return data is of type &lt;code&gt;Page&lt;/code&gt; which contains our data in the &lt;code&gt;content&lt;/code&gt; field and the total number of pages and elements in the result set. Also, the &lt;code&gt;Page&lt;/code&gt; class implements the &lt;code&gt;Iterable&lt;/code&gt; interface which means you can map your result to DTOs if you wanted.&lt;/p&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Page&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Batch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; batchResult &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; batchRepository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;findAll&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;batch&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fruits&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;any&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eq&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PageRequest&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;of&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;assertEquals&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; batchResult&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getTotalElements&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;assertEquals&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;AKO-02838&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; batchResult&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getContent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getOrderNumber&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In our second query, we have used &lt;code&gt;QBatch.batch&lt;/code&gt; to get any batch that has a fruit named &amp;quot;apple&amp;quot; in it. As you can see, the predicate &lt;code&gt;batch.fruits.any().name.eq(&amp;quot;apple&amp;quot;)&lt;/code&gt; is almost as readable as natural language. To give you a comparison, check the equivalent for our first query written using JpaRepository method expressions:&lt;/p&gt;
&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token annotation punctuation&quot;&gt;@Query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;select f from Fruit f where f.category in (&#39;CORE&#39;, &#39;TROPICAL&#39;) and f.taste = :taste and f.color = :color&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;findCoreOrTropicalFruitsByTasteAndColor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; taste&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// OR&lt;/span&gt;
&lt;span class=&quot;token annotation punctuation&quot;&gt;@Query&lt;/span&gt;
&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Fruit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;findAllByCategory_CoreOrCategory_TropicalAndTasteEqualsAndColorEquals&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Taste&lt;/span&gt; taste&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It is quite obvious that the QueryDSL version is easier to understand and modify further in the future. Also, since with the QueryDSL version you get compile-time errors rather than runtime ones, you can probably get away from writing a test case just to test the correctness of your query.&lt;/p&gt;
&lt;h3&gt;Wrap Up&lt;/h3&gt;
&lt;p&gt;QueryDSL lets you construct type-safe and expressive SQL queries using native Java. This not only improves readability and maintainability but also reduces the chances of errors that can occur from writing native SQL statements. By leveraging Q-classes and Predicates, QueryDSL seamlessly integrates with existing JPA and Hibernate entities, making it an essential addition to any Java developer&#39;s toolkit.&lt;/p&gt;
&lt;p&gt;If you liked this article, please share it with others. If you find any errors in this article, please let me know in the comments. The project source for this article is &lt;a href=&quot;https://github.com/hamidsafdari/querydsl-intro&quot;&gt;available on GitHub&lt;/a&gt;. I&#39;ve made branches for Maven and Gradle and different versions of Java (11 and 17) to help you get started with QueryDSL in no time.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;Extra Tip: Making Eclipse work with QueryDSL and Lombok&lt;/h3&gt;
&lt;p&gt;The version of Eclipse I used at the time of writing this article was 2023-03 (4.27.0). The first item in the following list (plus a restart) is enough to make QueryDSL work in Eclipse. To make Lombok work, I had to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Select an &amp;quot;Annotation Processing Mode&amp;quot; under &amp;quot;Window &amp;gt; Preferences &amp;gt; Maven &amp;gt; Annotation Processing&amp;quot;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://projectlombok.org/download&quot;&gt;Download&lt;/a&gt; the Lombok .jar file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the .jar file using &lt;code&gt;java -jar lombok.jar&lt;/code&gt; and point it to my Eclipse installation directory. If you choose the correct directory, it will be listed on the screen with a ticked checkbox.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the following lines to &lt;code&gt;eclipse.ini&lt;/code&gt; in the Eclipse installation directory after the &lt;code&gt;-vmargs&lt;/code&gt; line (add the line if it doesn&#39;t exist):&lt;br&gt;
-Xbootclasspath/a:lombok.jar&lt;br&gt;
-javaagent:lombok.jar&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Quit Eclipse, then start it with &lt;code&gt;--clean&lt;/code&gt;. You will only need to use this argument once and not in subsequent runs.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You might also need to run &lt;code&gt;mvn eclipse:eclipse&lt;/code&gt;, clean (F5), and refresh (Alt + F5) the project to make things work.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Why Bash Still Matters: Practical Power Beyond the Basics</title>
    <link href="https://www.hamidsafdari.com/bash-rocks/" />
    <updated>2022-01-10T00:00:00Z</updated>
    <id>https://www.hamidsafdari.com/bash-rocks/</id>
    <content type="html">&lt;p&gt;If you are one of those people who have migrated from Windows to Linux but you are still using a graphical user interface like Gnome or KDE to do daily routine tasks, you are missing a lot.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I&#39;m not saying you shouldn&#39;t use a graphical user interface. I&#39;m saying if you are using the GUI to escape doing things in command line, you&#39;re really doing it wrong.&lt;/p&gt;
&lt;p&gt;What are you talking about? You might say. What am I missing? A lot, actually. But I hate typing, you might say. Get used to it, get out of your comfort zone. Why crawl when you can sprint? How? Read on.&lt;/p&gt;
&lt;p&gt;Let&#39;s say you are asked to replace a set of words in a bunch of files. You open a file editor like &lt;code&gt;gedit&lt;/code&gt; or &lt;code&gt;kate&lt;/code&gt;. You open one of the files and do a &lt;code&gt;Ctrl+F&lt;/code&gt; or &lt;code&gt;Ctrl+H&lt;/code&gt; to find the word you have to replace. After a few minutes (depending on how big the file is) you are done with the file and open the next one. You do the same with the next file and go on to edit the next. At this rate, you are going to be done in a couple of hours.&lt;/p&gt;
&lt;p&gt;If you were a little smart, like you&#39;re going to be in a few minutes, you&#39;d probably put all your files in a directory and open the directory in a more advanced text editor like &amp;quot;Sublime Text&amp;quot;, click on the directory name and choose &amp;quot;Replace in All Files&amp;quot;. You enter the text you want to find and the one you want to replace it with and hit &amp;quot;Replace All&amp;quot;. That&#39;s fast and you didn&#39;t use the command line for it. So why bother?&lt;/p&gt;
&lt;p&gt;There&#39;s a way to do all this in just a few seconds. Just a few commands. You only have to &lt;em&gt;learn a few commands&lt;/em&gt;. The command you need to use is called &lt;code&gt;sed&lt;/code&gt;. Let&#39;s say you are a database guy and you have exported a bunch of data from your production database and you want to import it into your dev database. You want to replace anything that starts with &lt;code&gt;PROD_&lt;/code&gt; with &lt;code&gt;TEST_&lt;/code&gt;. All you need to do is run:&lt;/p&gt;
&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sed&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;s/PROD_/TEST_/&#39;&lt;/span&gt; file.sql&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&#39;s it. Seriously. It&#39;s going to be so fast that you will not believe anything was done at all. But go on and open the files to check the result. There&#39;s a tiny little catch though. This works on a single file at a time. But this shouldn&#39;t discourage you from the command line. There&#39;s a simple remedy. If your files have a common part like if they all have the extension &lt;code&gt;.sql&lt;/code&gt; then you can specify the target file like the glob pattern &lt;code&gt;*.sql&lt;/code&gt;. The edited command will look like this:&lt;/p&gt;
&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sed&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;s/PROD_/TEST_/&#39;&lt;/span&gt; *.sql&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If the file names are different though or if you don&#39;t know what files might contain the word you are looking for, there&#39;s a simple solution for that too. You can find all the files that contain your word using the &lt;code&gt;grep&lt;/code&gt; command:&lt;/p&gt;
&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-rl&lt;/span&gt; PROD_ &lt;span class=&quot;token builtin class-name&quot;&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The parameter &lt;code&gt;r&lt;/code&gt; means to recursively go through directories and &lt;code&gt;l&lt;/code&gt; means to only show file names. By default grep will also show you the line that contains the text you are looking for which might be too long but it could also be useful. The &lt;code&gt;.&lt;/code&gt; (dot) means to start from the current directory.&lt;/p&gt;
&lt;p&gt;Now that you have the file names, how can you use them to replace the text? We use a tiny bit of bash programming:&lt;/p&gt;
&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token for-or-select variable&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-rl&lt;/span&gt; PROD_ &lt;span class=&quot;token builtin class-name&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sed&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;s/PROD_/TEST_/&#39;&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$i&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here&#39;s what&#39;s going on here. We know we can get the file names we want using grep. We use a for loop to go through the file names. The &lt;code&gt;$()&lt;/code&gt; let&#39;s us give the output of our command to the for loop. The syntax for a for loop is:&lt;/p&gt;
&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token for-or-select variable&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; list&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;# your logic here;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We just used our grep command in place of the list and put our logic inside the body of the for loop. For the record, since each statement in bash is ended with a semicolon, we can put everything in a single line. Also, inside the body of the loop, we can access the current item using &lt;code&gt;$i&lt;/code&gt;.&lt;/p&gt;
</content>
  </entry>
</feed>