Skip to main content

പാഠം 2: താരതമ്യ ഓപ്പറേറ്ററുകൾ ഉപയോഗിക്കുന്നു

ഈ പാഠത്തിൽ, താരതമ്യ ഓപ്പറേറ്ററുകളെക്കുറിച്ചും, ഡിസ്റ്റൻസ് സെൻസറിൽ നിന്നുള്ള ഡാറ്റ ഉപയോഗിച്ച് ഒരു പ്രോജക്റ്റിൽ അവ ഉപയോഗിക്കുന്നതിനെക്കുറിച്ചും നിങ്ങൾ ചിന്തിക്കും. പിന്നെ നിങ്ങൾ ഉം ലൂപ്പുകളും (>) ൽ കൂടുതലുള്ള ഓപ്പറേറ്ററും ഉപയോഗിച്ച് ഡിസ്റ്റൻസ് സെൻസർ ഉപയോഗിച്ച് VR റോബോട്ടിനെ 'A' എന്ന അക്ഷരത്തിലേക്ക് നാവിഗേറ്റ് ചെയ്യുന്ന ഒരു പ്രോജക്റ്റ് സൃഷ്ടിക്കും. മിനി-ചലഞ്ചിൽ, വാൾ മേസിന്റെ തുടക്കം മുതൽ '1' എന്ന നമ്പറിലേക്ക് നാവിഗേറ്റ് ചെയ്യാൻ നിങ്ങൾ ഈ കഴിവുകൾ പ്രയോഗിക്കും.

പ്ലേഗ്രൗണ്ടിന്റെ മധ്യഭാഗത്ത് ആരംഭ സ്ഥാനത്ത് VR റോബോട്ടുള്ള വാൾ മെയ്സ് പ്ലേഗ്രൗണ്ടിന്റെ മുകളിൽ നിന്ന് താഴേക്കുള്ള കാഴ്ച. എ എന്ന അക്ഷരം റോബോട്ടിന്റെ ഇടതുവശത്താണ്, ഒരു ചെറിയ ഭിത്തിയാൽ വേർതിരിച്ചിരിക്കുന്നു. നമ്പർ 1 റോബോട്ടിന്റെ വലതുവശത്തെ മൂലയിലാണ്, ലംബവും തിരശ്ചീനവുമായ ഒരു മതിൽ കൊണ്ട് വേർതിരിച്ചിരിക്കുന്നു.

പഠന ഫലങ്ങൾ

  • (>) നേക്കാൾ വലുത്, (<) നേക്കാൾ കുറവ്, (==) ന് തുല്യം എന്നിവ രണ്ട് മൂല്യങ്ങൾ താരതമ്യം ചെയ്യുന്ന താരതമ്യ ഓപ്പറേറ്ററുകളാണെന്ന് തിരിച്ചറിയുക, അവയെ ഓപ്പറേറ്റുകൾ എന്നറിയപ്പെടുന്നു.  
  • (>) നെക്കാൾ വലുതായ ഓപ്പറേറ്റർ രണ്ട് മൂല്യങ്ങൾ താരതമ്യം ചെയ്ത് ഇടതുവശത്തുള്ള മൂല്യം വലത് മൂല്യത്തേക്കാൾ വലുതാണെങ്കിൽ ശരി എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നുവെന്ന് തിരിച്ചറിയുക.
  • (<) ൽ താഴെയുള്ള ഓപ്പറേറ്റർ രണ്ട് മൂല്യങ്ങൾ താരതമ്യം ചെയ്ത് ഇടതുവശത്തുള്ള മൂല്യം വലത് മൂല്യത്തേക്കാൾ കുറവാണെങ്കിൽ ശരി എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നുവെന്ന് തിരിച്ചറിയുക.
  • ലൂപ്പിൽകണ്ടീഷനായി ഉപയോഗിക്കുമ്പോൾ (>) നേക്കാൾ വലുതോ (<)കുറവോ ആയ ഓപ്പറേറ്റർമാർ ശരി അല്ലെങ്കിൽ തെറ്റ് മൂല്യം റിപ്പോർട്ട് ചെയ്യുന്നുവെന്ന് തിരിച്ചറിയുക.
  • ഡിസ്റ്റൻസ് സെൻസറിന്റെ മൂല്യം ഒരു നിശ്ചിത അളവിൽ താഴെയാകുന്നതുവരെ ഒരു VR റോബോട്ട് ഡ്രൈവ് മുന്നോട്ട് കൊണ്ടുപോകുന്ന ഒരു പ്രോജക്റ്റ് എങ്ങനെ സൃഷ്ടിക്കാമെന്ന് വിവരിക്കുക.

താരതമ്യ ഓപ്പറേറ്റർമാർ

(<) നേക്കാൾ ചെറുതും, (>) നേക്കാൾ വലുതും, (==) ന് തുല്യവുമായ ഓപ്പറേറ്ററുകൾ രണ്ട് മൂല്യങ്ങളെ താരതമ്യം ചെയ്യുന്നു, അവയെ ഓപ്പറേറ്റുകൾ എന്നും വിളിക്കുന്നു. ഓപ്പറേറ്ററുടെ ഇടതുവശത്തുള്ള മൂല്യം ആദ്യത്തെ ഓപ്പറാൻഡും വലതുവശത്തുള്ള മൂല്യം രണ്ടാമത്തെ ഓപ്പറാൻഡുമാണ്. ഓപ്പറേറ്റർമാർ ബൂളിയൻ മൂല്യങ്ങൾ റിപ്പോർട്ട് ചെയ്യുകയും താരതമ്യം ശരിയാകുമ്പോൾ True മൂല്യം നൽകുകയും ചെയ്യുന്നു, താരതമ്യം അല്ലശരിയാകുമ്പോൾ False മൂല്യം നൽകുന്നു.

  • ഈ ഉദാഹരണങ്ങളിൽ (<) ലെസ് ടെൻ ഓപ്പറേറ്റർ ഉപയോഗിച്ച്, പ്രസ്താവന സംഖ്യാപരമായി ശരിയാണെങ്കിൽ, അത് True എന്ന് റിപ്പോർട്ട് ചെയ്യും.ഓപ്പറേറ്ററുകളേക്കാൾ കുറവുള്ള വരികൾക്ക് - മുകളിലെ വരി 25 നേക്കാൾ 50 കുറവ് എന്ന് വായിക്കുകയും 'റിപ്പോർട്ടുകൾ തെറ്റാണ്' എന്ന് ലേബൽ ചെയ്യുകയും ചെയ്യുന്നു. താഴത്തെ വരിയിൽ 50 നേക്കാൾ 25 കുറവ് എന്ന് എഴുതിയിരിക്കുന്നു, കൂടാതെ 'റിപ്പോർട്ടുകൾ ശരിയാണ്' എന്ന് ലേബൽ ചെയ്തിരിക്കുന്നു.
  • അതുപോലെ, ഈ ഉദാഹരണങ്ങളിൽ (>) ത്തിൽ കൂടുതൽ ഓപ്പറേറ്റർ ഉപയോഗിക്കുമ്പോൾ, സംഖ്യാപരമായി ശരിയായ പ്രസ്താവന True എന്ന് റിപ്പോർട്ട് ചെയ്യും.ഓപ്പറേറ്റർമാരെക്കാൾ വലുതായ വരികൾക്ക് - മുകളിലെ വരി 25 നേക്കാൾ വലുതായ 50 എന്ന് വായിക്കുകയും 'റിപ്പോർട്ടുകൾ ശരിയാണ്' എന്ന് ലേബൽ ചെയ്യുകയും ചെയ്യുന്നു. താഴത്തെ വരിയിൽ 50 നേക്കാൾ വലുത് 25 എന്ന് വായിക്കുകയും 'തെറ്റായ റിപ്പോർട്ടുകൾ' എന്ന് ലേബൽ ചെയ്യുകയും ചെയ്യുന്നു.
  • രണ്ട് മൂല്യങ്ങളും കൃത്യമായി തുല്യമാകുമ്പോൾ (==) ന് തുല്യമായ ഓപ്പറേറ്റർ True എന്നും അല്ലാത്തപ്പോൾ False എന്നും റിപ്പോർട്ട് ചെയ്യുന്നു.ഓപ്പറേറ്റർമാർക്ക് തുല്യമായ വരികൾക്ക് - മുകളിലെ വരി 50 = = 50 എന്ന് വായിക്കുകയും 'റിപ്പോർട്ടുകൾ ശരിയാണ്' എന്ന് ലേബൽ ചെയ്യുകയും ചെയ്യുന്നു. താഴത്തെ വരി 25 = = 50 എന്ന് വായിക്കുകയും 'തെറ്റായ റിപ്പോർട്ടുകൾ' എന്ന് ലേബൽ ചെയ്യുകയും ചെയ്യുന്നു.
    • ഇരട്ട സമ ചിഹ്നം "തുല്യം" എന്നർത്ഥമാക്കുകയും രണ്ട് മൂല്യങ്ങളെയും താരതമ്യം ചെയ്യുകയും ചെയ്യുന്നുവെന്ന് ശ്രദ്ധിക്കുക. ഒരു വേരിയബിളിന് ഒരു മൂല്യം നൽകുന്ന ഒരു അസൈൻമെന്റ് ഓപ്പറേറ്ററാണ് സിംഗിൾ ഈക്വൽസ് ചിഹ്നം.

താരതമ്യ ഓപ്പറേറ്റർമാർക്ക് ദശാംശങ്ങൾ, പൂർണ്ണസംഖ്യകൾ അല്ലെങ്കിൽ സംഖ്യാ റിപ്പോർട്ടിംഗ് കമാൻഡുകൾ താരതമ്യം ചെയ്യാൻ കഴിയും.

ദൂര സെൻസർ ഡാറ്റയുമായി താരതമ്യ ഓപ്പറേറ്റർമാരെ ഉപയോഗിക്കുന്നു

വിആർ റോബോട്ടിനെ ഒരു തീരുമാനമെടുക്കാൻ പ്രേരിപ്പിക്കുന്നതിന്, ഡിസ്റ്റൻസ് സെൻസർ പോലുള്ള ഒരു സെൻസറിൽ നിന്നുള്ള സംഖ്യാ ഡാറ്റ ഉപയോഗിക്കുമ്പോൾ താരതമ്യ ഓപ്പറേറ്ററുകൾ പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്. മുൻ യൂണിറ്റിൽ, ബമ്പർ സെൻസർ അമർത്തുമ്പോൾ VR റോബോട്ടിനെ തിരിയാൻ ബമ്പർ സെൻസറിൽ നിന്നുള്ള ഡാറ്റ ഉപയോഗിച്ചിരുന്നു. എന്നിരുന്നാലും, ഒരു താരതമ്യ ഓപ്പറേറ്റർ ഉപയോഗിച്ച്, വിആർ റോബോട്ടിനെ കൂടുതൽ കൃത്യമായ സ്ഥലത്ത് തിരിക്കാൻ നമുക്ക് ഡിസ്റ്റൻസ് സെൻസറിൽ നിന്നുള്ള ഡാറ്റ ഉപയോഗിക്കാം. ചുമരുകളിലേക്ക് വാഹനമോടിക്കുന്നത് ഒഴിവാക്കുന്നതിനോ വിആർ റോബോട്ടിനെ കളിസ്ഥലത്തെ ഒരു പ്രത്യേക സ്ഥലത്തേക്ക് നാവിഗേറ്റ് ചെയ്യുന്നതിനോ ഇത് ഉപയോഗപ്രദമാണ്. 

താരതമ്യ ഓപ്പറേറ്ററിലെ മൂല്യങ്ങളിൽ ഒന്നായി ഡിസ്റ്റൻസ് സെൻസറിൽ നിന്നുള്ള ഡാറ്റ ഉപയോഗിക്കാം.

ഫ്രണ്ട്_ഡിസ്റ്റൻസ്.ഗെറ്റ്_ഡിസ്റ്റൻസ്(എംഎം) > 50

ഉദാഹരണത്തിന്, നമുക്ക് VR റോബോട്ട് ഒരു ഭിത്തി പോലുള്ള ഒരു വസ്തുവിലേക്ക് ഓടിച്ചെന്ന്, അത് വസ്തുവിനടുത്തായിരിക്കുമ്പോൾ നിർത്തണമെങ്കിൽ, ഒരു താരതമ്യ ഓപ്പറേറ്ററും get _distance ഫംഗ്ഷനും ഉപയോഗിച്ച് നമുക്ക് ഇത് ചെയ്യാൻ കഴിയും. അടിസ്ഥാനപരമായി, റോബോട്ടും വസ്തുവും തമ്മിലുള്ള ദൂരം 50 മില്ലിമീറ്റർ (മില്ലീമീറ്റർ) പോലെയുള്ള ഒരു പരിധിയേക്കാൾ കൂടുതലായിരിക്കുമ്പോൾ വിആർ റോബോട്ടിനോട് ഓടിക്കാൻ ഞങ്ങൾ ആവശ്യപ്പെടുന്നു.വാൾ മെയ്സ് കളിസ്ഥലത്തിന്റെ താഴത്തെ മധ്യഭാഗത്തിന്റെ ഒരു അടുത്ത കാഴ്ച, ആരംഭ സ്ക്വയറിൽ VR റോബോട്ടും. റോബോട്ടിന്റെ മുൻവശത്ത് നിന്ന് എതിർവശത്തുള്ള ആദ്യത്തെ ഭിത്തിയിൽ നിന്ന് ഏകദേശം 50mm വരെ ഒരു പച്ച അമ്പടയാളം നീളുന്നു, 50mm-ൽ കൂടുതലുള്ള ഗെറ്റ് ദൂരം ശരിയാണെന്ന് റിപ്പോർട്ട് ചെയ്യുന്നിടത്ത് ഇത് ചിത്രീകരിക്കുന്നു. പച്ച അമ്പടയാളത്തിന്റെ മുൻവശത്ത് നിന്ന് ചുവരിലേക്ക് ഒരു ചുവന്ന അമ്പടയാളം നീണ്ടുകിടക്കുന്നു, 50mm-ൽ കൂടുതലുള്ള ഗെറ്റ് ദൂരം തെറ്റാണെന്ന് റിപ്പോർട്ട് ചെയ്യുന്നിടത്ത് ഇത് ചിത്രീകരിക്കുന്നു.

ഡിസ്റ്റൻസ് സെൻസർ 50 മില്ലിമീറ്ററിൽ (മില്ലീമീറ്റർ)ആണെന്നും അല്ലെങ്കിൽ മൂല്യം(>) 50 നേക്കാൾകൂടുതലാണെന്നും റിപ്പോർട്ട് ചെയ്യുമ്പോൾ, VR റോബോട്ടിന് സ്വതന്ത്രമായി ഓടിക്കാൻ കഴിയും. ഡിസ്റ്റൻസ് സെൻസർ 50 മില്ലിമീറ്ററിനേക്കാൾ (മില്ലീമീറ്റർ)അടുത്താണ്എന്ന് റിപ്പോർട്ട് ചെയ്യുമ്പോൾ, അല്ലെങ്കിൽ മൂല്യം (>) 50 നേക്കാൾഅല്ലകൂടുതലാണെന്ന് റിപ്പോർട്ട് ചെയ്യുമ്പോൾ, ഭിത്തിയിൽ ഇടിക്കുന്നതിന് മുമ്പ് VR റോബോട്ട് നിർത്തുകയോ തിരിയുകയോ ചെയ്യേണ്ടതുണ്ട്. 

നിങ്ങളുടെ അറിവിലേക്കായി

ഏത് താരതമ്യ ഓപ്പറേറ്ററാണ് ഉപയോഗിക്കേണ്ടതെന്ന് തിരഞ്ഞെടുക്കുന്നത് ഒരു സ്റ്റൈലിസ്റ്റിക് തിരഞ്ഞെടുപ്പായിരിക്കാം. മുകളിലുള്ള ഉദാഹരണത്തിൽ പ്രോജക്റ്റ് കഴിയുന്നത്ര വ്യക്തവും വായിക്കാൻ കഴിയുന്നതുമാക്കാൻ (>) ത്തിൽ കൂടുതൽ ഓപ്പറേറ്റർ ഉപയോഗിച്ചു. വിആർ റോബോട്ട് 50 മില്ലിമീറ്ററിൽ കൂടുതൽ അകലെയായിരിക്കുമ്പോൾ, മുന്നോട്ട് ഓടിക്കുക. ഓപ്പറേറ്ററിലെ മൂല്യങ്ങളുടെ ക്രമം വിപരീത ക്രമത്തിലാക്കിയും (<താഴെ) ഓപ്പറേറ്റർ ഉപയോഗിച്ചും നിങ്ങൾക്ക് ഇതേ ലക്ഷ്യം കൈവരിക്കാൻ കഴിയും.

50 > front_distance.get_distance(MM):

ഇവിടെ, ഡിസ്റ്റൻസ് സെൻസർ റിപ്പോർട്ട് ചെയ്ത മൂല്യത്തേക്കാൾ 50 മില്ലിമീറ്റർ കൂടുതലായിരിക്കുമ്പോൾ വിആർ റോബോട്ട് ഓടിക്കും. വിആർ റോബോട്ട് അതേ സ്വഭാവം തന്നെയായിരിക്കും പ്രകടിപ്പിക്കുന്നത്, എന്നിരുന്നാലും, പ്രോജക്റ്റ് അൽപ്പം വ്യക്തത കുറഞ്ഞതും വായിക്കാൻ കഴിയുന്നതുമാണ്. 

നിങ്ങൾ ഉപയോഗിക്കുന്ന സെൻസർ ഡാറ്റയെ ആശ്രയിച്ച്, (==) ഓപ്പറേറ്റർ നിങ്ങൾ ഉദ്ദേശിച്ചതുപോലെ VR റോബോട്ടിനെ പ്രവർത്തിപ്പിച്ചേക്കില്ല. ഉദാഹരണത്തിന്, ഒരു വസ്തുവിൽ നിന്ന് 50 മില്ലിമീറ്റർ അകലെ VR റോബോട്ട് നിർത്തുക എന്നതാണ് ലക്ഷ്യമെങ്കിൽ, (==) എന്ന ഓപ്പറേറ്റർ ഉപയോഗിക്കുന്നതിനെക്കുറിച്ച് നിങ്ങൾ ചിന്തിച്ചേക്കാം.

front_distance.get_distance(MM) == 50 ആയിരിക്കുമ്പോൾ:

എന്നിരുന്നാലും, ഉദാഹരണത്തിന് വാൾ മെയ്സിൽ, ഡിസ്റ്റൻസ് സെൻസറുള്ള (==) ന് തുല്യമായ ഓപ്പറേറ്റർ ഉപയോഗിക്കുന്നതിന് സെൻസറിൽ നിന്ന് ഇത്രയും കൃത്യമായ റീഡിംഗ് ആവശ്യമായി വരും, അതായത്കൃത്യമായി50 മില്ലിമീറ്റർ ആയിരിക്കണം, അതിനാൽ VR റോബോട്ടിന്റെ വേഗത റിയൽ ടൈമിൽ ആ ലെവൽ കൃത്യത നേടുന്നത് അസാധ്യമാക്കും. അതിനാൽ, VR റോബോട്ട് പരിധി കടന്ന് ഓടിക്കുന്നത് തുടരാൻ സാധ്യതയുണ്ട്, കാരണം അത് 100 മില്ലിമീറ്ററോ 25 മില്ലിമീറ്ററോ മൂല്യം റിപ്പോർട്ട് ചെയ്താലും, അവയൊന്നും 50 mmന് തുല്യമല്ല, അതിനാൽ ഓപ്പറേറ്റർ ഒരിക്കലും True ആയി റിപ്പോർട്ട് ചെയ്യുന്നില്ല. 

താരതമ്യ ഓപ്പറേറ്റർമാരും വാൾ മെയ്സ് പ്രശ്നവും

താരതമ്യ ഓപ്പറേറ്ററുകളുമായും ഡിസ്റ്റൻസ് സെൻസറുമായും ഒരു while ലൂപ്പ് ഉപയോഗിക്കാൻ കഴിയും, അതുവഴി VR റോബോട്ട് സെൻസർ ഡാറ്റ തുടർച്ചയായി പരിശോധിക്കുകയും താരതമ്യം വിലയിരുത്തുകയും ചെയ്യുന്നു. ഇത് VR റോബോട്ടിനെ എന്ന പെരുമാറ്റം നടത്താൻ പ്രാപ്തമാക്കും, അതേസമയം a മൂല്യം ഒരു നിശ്ചിത പരിധിക്ക് മുകളിലോ താഴെയോ ആണ്. വാൾ മെയ്സിൽ, ആവശ്യമുള്ള ഫലം VR റോബോട്ട്മുന്നോട്ട് നയിക്കുക എന്നതാണ്, അതേസമയംഡിസ്റ്റൻസ് സെൻസർ ഭിത്തിയിൽ നിന്ന് 50 മില്ലിമീറ്റർ (മില്ലീമീറ്റർ) നേക്കാൾ വലുതാണ്. പിന്നെ, അത് നിർത്തുകയോ തിരിയുകയോ ചെയ്ത് മസിലിലൂടെ മുന്നോട്ട് പോകണം.

def main():
    while front_distance.get_distance(MM) > 50:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

ഈ വീഡിയോ ക്ലിപ്പ് ഉദാഹരണത്തിൽ, ഇടതുവശത്ത് കാണിച്ചിരിക്കുന്ന പ്രോജക്റ്റിലെ whileലൂപ്പ്, വ്യവസ്ഥ പാലിക്കുന്നിടത്തോളം, VR റോബോട്ടിനെ ആരംഭ സ്ഥാനത്ത് നിന്ന് മുന്നോട്ട് നയിക്കും, കൂടാതെ VR റോബോട്ടും ഏറ്റവും അടുത്തുള്ള വസ്തുവും (എതിർവശത്തുള്ള ആദ്യത്തെ മതിൽ) തമ്മിലുള്ള ദൂരം 50 മില്ലിമീറ്ററിൽ (മില്ലീമീറ്ററിൽ) കൂടുതലാണെന്ന് റിപ്പോർട്ട് ചെയ്തിരിക്കുന്നു. ആദ്യത്തെ മതിലിനടുത്തെത്തുമ്പോൾ റോബോട്ട് നിർത്തുന്നു, റിപ്പോർട്ട് ചെയ്യപ്പെട്ട ദൂരം 50 മില്ലിമീറ്ററിൽ താഴെയാണ്.

വീഡിയോ ഫയൽ

മുകളിലുള്ള പ്രോജക്റ്റിന്റെ ഒഴുക്ക് ഈ ചിത്രം വിശദീകരിക്കുന്നു:

  • ഡിസ്റ്റൻസ് സെൻസർ ഭിത്തിയിൽ നിന്ന് 50 മില്ലിമീറ്ററിൽ (മില്ലീമീറ്റർ) കൂടുതലായിരിക്കുമ്പോൾ, ഓപ്പറേറ്റർ ട്രൂ എന്ന് റിപ്പോർട്ട് ചെയ്യുകയും ലും ലൂപ്പിലും തുടരുകയും ചെയ്യുന്നു.
  • ഭിത്തിയിൽ നിന്ന് 50 മില്ലിമീറ്ററിൽ (മില്ലീമീറ്റർ) താഴെയായിരിക്കുമ്പോൾ, ഓപ്പറേറ്റർ False എന്ന് റിപ്പോർട്ട് ചെയ്യുകയുംwhileലൂപ്പിൽ നിന്ന് പുറത്തുകടക്കുകയും ചെയ്യുന്നു.

മുകളിലുള്ള പ്രോജക്റ്റിലെ while ലൂപ്പിന്റെ പ്രോജക്റ്റ് ഫ്ലോ ഡയഗ്രം. ഭിത്തിയിൽ നിന്നുള്ള ദൂരം 50 മില്ലിമീറ്ററിൽ കൂടുതലാകുമ്പോഴും while ലൂപ്പ് പ്രവർത്തിക്കുന്നത് തുടരും, ആ അവസ്ഥ ശരിയാണെന്ന് റിപ്പോർട്ട് ചെയ്യപ്പെടുകയും റോബോട്ട് മുന്നോട്ട് ഓടിക്കുകയും ചെയ്യും. ഭിത്തിയിൽ നിന്നുള്ള ദൂരം 50 ഡിഗ്രിയിൽ കൂടാത്തപ്പോൾ, വ്യവസ്ഥ തെറ്റാണെന്ന് റിപ്പോർട്ട് ചെയ്യുന്നു, പ്രോജക്റ്റിൽ while loop നിലനിൽക്കുന്നു, ഇത് റോബോട്ട് ഡ്രൈവിംഗ് നിർത്താൻ കാരണമാകുന്നു.

ഈ പാഠത്തിന്റെ ബാക്കി ഭാഗം തുടരാൻ അടുത്തത് ബട്ടൺ തിരഞ്ഞെടുക്കുക.