Skip to main content

പാഠം 4: നെസ്റ്റഡ് ലൂപ്പുകൾ ഉപയോഗിക്കുന്നു

മുൻ പാഠത്തിൽ, ഡിസ്ക് മൂവർ പ്ലേഗ്രൗണ്ട് ലെ മൂന്ന് നീല ഡിസ്കുകളും നീല ലക്ഷ്യത്തിലേക്ക് ഡ്രൈവ് ചെയ്യാനും, എടുക്കാനും, നീക്കാനും VR റോബോട്ടിനോട് നിർദ്ദേശിക്കുന്നതിനുള്ള ഒരു പ്രോജക്റ്റ് നിങ്ങൾ സൃഷ്ടിച്ചു. ഈ പാഠത്തിൽ, നെസ്റ്റഡ് ലൂപ്പുകൾ ഉപയോഗിച്ച് ഡിസ്ക് മൂവർ പ്ലേഗ്രൗണ്ട് ലെ ഓരോ നിറത്തിന്റെയും ഒരു ഡിസ്ക് അതിന്റെ അനുബന്ധ നിറമുള്ള ലക്ഷ്യത്തിലേക്ക് എടുത്ത് നീക്കുന്നതിനുള്ള ഒരു പ്രോജക്റ്റ് നിങ്ങൾ സൃഷ്ടിക്കും!

പൊരുത്തപ്പെടുന്ന കളർ ഗോളിലെ ഓരോ നിറത്തിന്റെയും ആദ്യ ഡിസ്ക് ഉള്ള ഡിസ്ക് മൂവർ പ്ലേഗ്രൗണ്ടിന്റെ മുകളിൽ നിന്ന് താഴേക്കുള്ള കാഴ്ച. താഴെ വലത് കോണിലുള്ള പച്ച ഗോളിന്റെ അരികിൽ വലതുവശത്തെ ഭിത്തിക്ക് അഭിമുഖമായി VR റോബോട്ട് നിൽക്കുന്നു.

പഠന ഫലങ്ങൾ

  • ലൂപ്പുകൾ എങ്ങനെ നെസ്റ്റ് ചെയ്യാമെന്ന് തിരിച്ചറിയുക.
  • നെസ്റ്റഡ് ലൂപ്പുകളിലൂടെയുള്ള ഒരു പ്രോജക്റ്റിന്റെ ഒഴുക്ക് വിവരിക്കുക.
  • ഒരു പ്രോജക്റ്റിൽ നെസ്റ്റഡ് ലൂപ്പുകൾ ഉപയോഗിക്കുന്നതിന്റെ കാരണം വിശദീകരിക്കുക.

നെസ്റ്റഡ് ലൂപ്പുകൾ എന്തൊക്കെയാണ്?

ഈ കോഴ്‌സിലെ മുൻ യൂണിറ്റുകളിലും പാഠങ്ങളിലും, പെരുമാറ്റങ്ങൾ ആവർത്തിക്കാൻ നിങ്ങൾ നിയന്ത്രണ വിഭാഗത്തിൽ നിന്നുള്ള ലൂപ്പുകൾ ഉപയോഗിച്ചു, ഉദാഹരണത്തിന് for loop, while loop, infinite whileloops. ഒരു ലൂപ്പ് മറ്റൊരു ലൂപ്പിനുള്ളിൽ സ്ഥാപിക്കുന്നതിനെ 'നെസ്റ്റിംഗ്' എന്ന് വിളിക്കുന്നു. പ്ലേഗ്രൗണ്ടിൽ ഒന്നിലധികം ഡിസ്കുകൾ നീക്കുന്നത് പോലെ, ഒരു VR റോബോട്ട് ഒരേ പെരുമാറ്റങ്ങൾ ഒന്നിലധികം തവണ ആവർത്തിക്കുന്ന പ്രോജക്റ്റുകളിൽ നെസ്റ്റഡ് ലൂപ്പുകൾ സഹായകരമാണ്. ഒരു പ്രോജക്റ്റ് കൂടുതൽ എളുപ്പത്തിൽ മനസ്സിലാക്കാൻ, അത് സംഘടിപ്പിക്കാനും സംഗ്രഹിക്കാനും നെസ്റ്റിംഗ് ലൂപ്പുകൾക്ക് കഴിയും. കോഡിന്റെ സന്ദർഭവും ഉദ്ദേശ്യവും നന്നായി മനസ്സിലാക്കുന്നതിനും, പിശകുകൾ തിരിച്ചറിയുന്നതിനും ഒരു പ്രോജക്റ്റ് ട്രബിൾഷൂട്ട് ചെയ്യുന്നതിനും ഇത് സഹായകമാകും. 

ഉദാഹരണത്തിന്, മൂന്ന് നീല ഡിസ്കുകളും നീല ലക്ഷ്യത്തിലേക്ക് നീക്കാൻ, ഒരു ഡിസ്ക് ശേഖരിക്കുന്ന പ്രക്രിയ ഒന്നിലധികം തവണ ആവർത്തിക്കാൻന്ലൂപ്പ് ഉപയോഗിക്കാം. ഇവിടെ കാണിച്ചിരിക്കുന്ന പ്രോജക്റ്റ്, ആദ്യത്തെ നീല ഡിസ്ക് നീല ലക്ഷ്യത്തിലേക്ക് നീക്കുന്നതിനുള്ള പാഠം 3 പ്രോജക്റ്റിനെ ഫോർ ലൂപ്പിനുള്ളിൽ സ്ഥാപിക്കുന്നു, പാരാമീറ്റർ 3 ആയി സജ്ജീകരിച്ചിരിക്കുന്നു. മുൻ പ്രോജക്റ്റിന്റെ നാല് ഭാഗങ്ങൾ ഫോർ ലൂപ്പിനുള്ളിൽ എങ്ങനെയാണ് ഇൻഡന്റ് ചെയ്തിരിക്കുന്നതെന്ന് ശ്രദ്ധിക്കുക.

repeat_count range(3):
        #1 ന് വേണ്ടി def main():
. ആദ്യത്തെ ഡിസ്ക്
        ലേക്ക് ഡ്രൈവ് ചെയ്യുക, അതേസമയം down_eye.near_object():
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 2 അല്ല. ഡിസ്ക് എടുക്കുക
        മാഗ്നെറ്റ്.എനർജിസ്(ബൂസ്റ്റ്)

        # 3. ലക്ഷ്യത്തിലേക്ക് ഡ്രൈവ് ചെയ്യുക
        drivetrain.turn_to_heading(180, DEGREES)
        അതേസമയം front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 4. ലക്ഷ്യത്തിൽ ഡിസ്ക് ഇടുക
        magnet.energize(DROP)

        drivetrain.drive_for(REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, DEGREES)

    wait(5, MSEC)

നിങ്ങൾ ലൂപ്പുകൾ 'നെസ്റ്റ്' ചെയ്യുമ്പോൾ, അകത്തെ ലൂപ്പ് എത്ര തവണ എക്സിക്യൂട്ട് ചെയ്യണമെന്ന് പുറം ലൂപ്പ് നിയന്ത്രിക്കുന്നു.  ഈ പ്രോജക്റ്റിൽ,ഫോർലൂപ്പ് ആണ് പുറം ലൂപ്പ്, ഇത് ലൂപ്പിലെ പെരുമാറ്റങ്ങൾ മൂന്ന് തവണ ആവർത്തിക്കും.

മുകളിലുള്ള പ്രോജക്റ്റ്, ഫോർ ലൂപ്പ് ചുവന്ന ബോക്സിൽ ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്നു. പ്രധാന നിർവചനത്തിന് താഴെ ഇൻഡന്റ് ചെയ്തിരിക്കുന്ന, (3) ശ്രേണിയിലെ ആവർത്തന അണ്ടർസ്കോർ കൗണ്ട് കോളൺ ലൂപ്പിന്റെ ആരംഭമാണ്, കൂടാതെ പ്രോജക്റ്റിന്റെ നാല് വിഭാഗങ്ങളും അതിനു താഴെയായി ഇൻഡന്റ് ചെയ്തിരിക്കുന്നു. പ്രോജക്റ്റിന്റെ അടിയിലുള്ള for loop കമാൻഡുമായി വിന്യസിച്ചിരിക്കുന്ന ഒരു wait കമാൻഡ്, ലൂപ്പ് എവിടെ അവസാനിക്കുന്നുവെന്ന് കാണിക്കുന്നു.

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

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

VEXcode VR പൈത്തൺ പ്രോജക്റ്റുകളിൽ ഇൻഡന്റേഷൻ പ്രധാനമാണ്. ലൂപ്പുകൾ നെസ്റ്റുചെയ്യുമ്പോൾ, നിങ്ങളുടെ പ്രോജക്റ്റ് ഉദ്ദേശിച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കാൻ, വർക്ക്‌സ്‌പെയ്‌സിലെ ചാരനിറത്തിലുള്ള ഇൻഡിക്കേറ്റർ ലൈനുകൾ ഒരു ദൃശ്യ സഹായമായി ഉപയോഗിക്കാം. ഓരോ വരിയും ഒരു ലൂപ്പിന്റെ ആരംഭത്തെയും അവസാനത്തെയും സൂചിപ്പിക്കുന്നു.

മുകളിലുള്ള അതേ പ്രോജക്റ്റ്, ഗൈഡിംഗ് ലൈനുകൾ ചുവന്ന ബോക്സുകളിൽ ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്നു, പ്രോജക്റ്റിന്റെ ബാക്കി ഭാഗങ്ങളുമായി ബന്ധപ്പെട്ട് ഓരോ ആന്തരിക ലൂപ്പുകളുടെയും ഇൻഡന്റേഷൻ വിന്യാസം കാണിക്കുന്നു. ഫോർ ലൂപ്പ് ലൈൻ നേരെ ഫൈനൽ വെയ്റ്റ് കമാൻഡിലേക്ക് നീളുന്നു. ഓരോ while ലൂപ്പ് ലൈനുകളും stop കമാൻഡുകളിലേക്ക് നീളുന്നു.

ഒരു നെസ്റ്റഡ് ലൂപ്പ് പ്രോജക്റ്റിന്റെ ഫ്ലോ 

ഈ ഉദാഹരണത്തിൽ, ഓരോ തവണയുംലൂപ്പിനുള്ളആവർത്തിക്കുമ്പോൾ, ഒരു നീല ഡിസ്ക് എടുത്ത് നീല ലക്ഷ്യത്തിലേക്ക് തിരികെ കൊണ്ടുവരുന്നു. 

ആദ്യ ആവർത്തനത്തിനുശേഷം, ആദ്യത്തെ നീല ഡിസ്ക് നീല ലക്ഷ്യത്തിലേക്ക് തിരികെ കൊണ്ടുവരികയും രണ്ടാമത്തെ ഡിസ്ക് ശേഖരിക്കാൻ തയ്യാറായ നിലയിൽ VR റോബോട്ടിനെ മാറ്റുകയും ചെയ്യുന്നു.

മുകളിൽ നിന്നുള്ള പ്രോജക്റ്റിന്റെ വശങ്ങളിലായി ഒരു ചിത്രം വർക്ക്‌സ്‌പെയ്‌സിൽ ഇടതുവശത്തും പ്ലേഗ്രൗണ്ട് വിൻഡോ വലതുവശത്തും കാണിച്ചിരിക്കുന്നു. പ്രോജക്റ്റ് മുഴുവൻ പ്രോജക്റ്റിലും ഫോർ ലൂപ്പ് കമാൻഡിൽ നിന്ന് ഓറഞ്ച് നിറത്തിലുള്ള ഒരു അമ്പടയാളം പൊതിയുന്നു, ഇത് ഫോർ ലൂപ്പിന്റെ ആദ്യ ആവർത്തനം ചിത്രീകരിക്കുന്നു. പ്ലേഗ്രൗണ്ടിൽ, ആദ്യത്തെ നീല ഡിസ്ക് നീല ഗോളിലാണ്, VR റോബോട്ട് ബാക്കിയുള്ള നീല ഡിസ്കുകൾക്ക് അഭിമുഖമായി, ഗോളിന്റെ മുൻവശത്ത് സ്ഥാപിച്ചിരിക്കുന്നു, ഇത് ആദ്യ ആവർത്തനത്തിന് ശേഷമുള്ള റോബോട്ടിന്റെ സ്ഥാനം സൂചിപ്പിക്കുന്നു.

രണ്ടാമത്തെ ആവർത്തനത്തിനുശേഷം, രണ്ടാമത്തെ നീല ഡിസ്ക് ശേഖരിക്കുകയും മൂന്നാമത്തെ ഡിസ്ക് ശേഖരിക്കാൻ തയ്യാറായ രീതിയിൽ VR റോബോട്ടിനെ തിരിക്കുകയും ചെയ്യുന്നു.

മുകളിൽ നിന്നുള്ള പ്രോജക്റ്റിന്റെ വശങ്ങളിലായി ഒരു ചിത്രം വർക്ക്‌സ്‌പെയ്‌സിൽ ഇടതുവശത്തും പ്ലേഗ്രൗണ്ട് വിൻഡോ വലതുവശത്തും കാണിച്ചിരിക്കുന്നു. പ്രോജക്റ്റ് മുഴുവൻ പ്രോജക്റ്റിലും ഫോർ ലൂപ്പ് കമാൻഡിൽ നിന്ന് ഓറഞ്ച് നിറത്തിലുള്ള ഒരു അമ്പടയാളം പൊതിയുന്നു, ഇത് ഫോർ ലൂപ്പിന്റെ രണ്ടാമത്തെ ആവർത്തനം ചിത്രീകരിക്കുന്നു. പ്ലേഗ്രൗണ്ടിൽ, നീല ഗോളിൽ 2 നീല ഡിസ്കുകൾ ഉണ്ട്, VR റോബോട്ട് ഗോളിന്റെ മുൻവശത്ത് ബാക്കിയുള്ള നീല ഡിസ്കിന് അഭിമുഖമായി സ്ഥാപിച്ചിരിക്കുന്നു, ഇത് രണ്ടാമത്തെ ആവർത്തനത്തിന് ശേഷമുള്ള റോബോട്ടിന്റെ സ്ഥാനം സൂചിപ്പിക്കുന്നു.

മൂന്നാമത്തെ ആവർത്തനത്തിനുശേഷം, മൂന്നാമത്തെ നീല ഡിസ്ക് ശേഖരിക്കപ്പെടുന്നു, വിആർ റോബോട്ട് ചലനം നിർത്തുന്നു. ഫോർ ലൂപ്പ് ഇപ്പോൾ അതിന്റെ ശ്രേണി പൂർത്തിയാക്കി, അതിനാൽ പ്രോജക്റ്റ് പൂർത്തിയായി. 

മുകളിൽ നിന്നുള്ള പ്രോജക്റ്റിന്റെ വശങ്ങളിലായി ഒരു ചിത്രം വർക്ക്‌സ്‌പെയ്‌സിൽ ഇടതുവശത്തും പ്ലേഗ്രൗണ്ട് വിൻഡോ വലതുവശത്തും കാണിച്ചിരിക്കുന്നു. പ്രോജക്റ്റ് മുഴുവൻ പ്രോജക്റ്റിലും ഫോർ ലൂപ്പ് കമാൻഡിൽ നിന്ന് ഓറഞ്ച് നിറത്തിലുള്ള ഒരു അമ്പടയാളം പൊതിയുന്നു, ഇത് ഫോർ ലൂപ്പിന്റെ മൂന്നാമത്തെ ആവർത്തനത്തെ ചിത്രീകരിക്കുന്നു. പ്ലേഗ്രൗണ്ടിൽ, മൂന്ന് നീല ഡിസ്കുകളും നീല ഗോളിലാണ്, കൂടാതെ വിആർ റോബോട്ട് ഗോൾ ബോക്സിന് പുറത്ത് ഗോളിന് അഭിമുഖമായി സ്ഥാപിച്ചിരിക്കുന്നു, ഇത് അവസാന ആവർത്തനത്തിനുശേഷം റോബോട്ടിന്റെ സ്ഥാനം സൂചിപ്പിക്കുന്നു.

 

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