Skip to main content

പാഠം 4: [Forever] ബ്ലോക്കുകൾ ഉപയോഗിക്കുന്നു

വ്യവസ്ഥകൾ ആവർത്തിച്ച് പരിശോധിക്കുന്നു

മുൻ പാഠത്തിൽ നിരീക്ഷിച്ചതുപോലെ, [If then] ബ്ലോക്ക് ഒരിക്കൽ മാത്രമേ അവസ്ഥകൾ പരിശോധിക്കൂ. [If then] ബ്ലോക്കുകളിൽ അടങ്ങിയിരിക്കുന്ന വ്യവസ്ഥകൾ ആവർത്തിച്ച് പരിശോധിക്കുന്നതിന്, ഒരു [Forever] C ബ്ലോക്ക് ആവശ്യമാണ്. [Forever] ബ്ലോക്ക് എന്നത് കൺട്രോൾ വിഭാഗത്തിൽ നിന്നുള്ള ഒരു C ബ്ലോക്കാണ്, അത് അതിനുള്ളിലെ പെരുമാറ്റങ്ങൾ എന്നെന്നേക്കുമായി ആവർത്തിക്കുന്നു.

ഒരു ശൂന്യമായ VEXcode VR ഫോറെവർ ബ്ലോക്ക്.
  • മുൻ പാഠത്തിൽ നിന്ന് യൂണിറ്റ്7ലെസൺ പ്രോജക്റ്റ് ലോഡ് ചെയ്യുക.

    കഴിഞ്ഞ പാഠത്തിന്റെ അവസാനം മുതലുള്ള അതേ VEXcode VR ബ്ലോക്ക് പ്രോജക്റ്റ്. ഇത് When Started ബ്ലോക്കിൽ ആരംഭിക്കുന്നു, തുടർന്ന് 'Front Eye detects green?' എന്ന് വായിക്കുന്ന ഒരു കളർ സെൻസിംഗ് ബ്ലോക്കിന്റെ ബൂളിയൻ പാരാമീറ്ററുള്ള ഒരു If Then ബ്ലോക്കും If കണ്ടെയ്നറിനുള്ളിൽ 90 ഡിഗ്രി ബ്ലോക്കിന് വലത്തേക്ക് തിരിയുക എന്നതും ഉണ്ടാകും. അടുത്തതായി if ബ്ലോക്കും ടേൺ ബ്ലോക്ക് സ്റ്റാക്കും ഒന്നുതന്നെയാണ്, പക്ഷേ നീല നിറം കണ്ടെത്തിയാൽ 90 ഡിഗ്രി ഇടത്തേക്ക് തിരിയാൻ മാറ്റി. അടുത്തതായി, ബ്ലോക്ക്, ടേൺ ബ്ലോക്ക് സ്റ്റാക്ക് ഉപയോഗിച്ചാലും ഇതുതന്നെയാണ് സ്ഥിതി, പക്ഷേ ചുവപ്പ് നിറം കണ്ടെത്തിയാൽ ഡ്രൈവിംഗ് നിർത്തുക എന്നാക്കി മാറ്റും. അവസാനമായി, ബ്ലോക്ക് ആൻഡ് ടേൺ ബ്ലോക്ക് സ്റ്റാക്ക് ഉപയോഗിച്ചാലും ഇതുതന്നെയാണ്, പക്ഷേ നിറം കണ്ടെത്തിയില്ലെങ്കിൽ ഡ്രൈവ് ഫോർവേഡിലേക്ക് മാറ്റും.
  • പ്രോജക്റ്റിന്റെ പേര് Unit7Lesson4എന്ന് മാറ്റുക.

    Select Playground ബട്ടണിന്റെ ഇടതുവശത്ത്, ചുവന്ന ബോക്സിൽ 'Project Name' ബട്ടൺ ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്ന VEXcode VR ടൂൾബാർ. പ്രോജക്റ്റിന്റെ പേര് യൂണിറ്റ് 7 പാഠം 4 എന്നാണ് സജ്ജീകരിച്ചിരിക്കുന്നത്.
  • വർക്ക്‌സ്‌പെയ്‌സിലേക്ക് ഒരു [Forever] ബ്ലോക്ക് വലിച്ചിട്ട് ബ്ലോക്കുകളുടെ സ്റ്റാക്കിന്റെ മുകളിൽ ഘടിപ്പിക്കുക. [Forever] ബ്ലോക്കിനുള്ളിലെ നാല് [If then] ബ്ലോക്കുകളും ഇതിൽ ഉൾപ്പെടുമെന്ന് ശ്രദ്ധിക്കുക.

    VEXcode VR മുമ്പത്തെ പ്രോജക്റ്റിനെ ബ്ലോക്ക് ചെയ്യുന്നു, പക്ഷേ എല്ലാ if സ്റ്റേറ്റ്മെന്റുകളിലും ഒരു Forever ബ്ലോക്ക് ചേർത്തിരിക്കുന്നതായി സൂചിപ്പിക്കുന്ന ഒരു അമ്പടയാളം ഉണ്ട്. ഇത് ഒരു When Started ബ്ലോക്കിൽ നിന്നാണ് ആരംഭിക്കുന്നത്, തുടർന്ന് ഒരു Forever ബ്ലോക്കിൽ പൊതിഞ്ഞ നാല് if സ്റ്റേറ്റ്മെന്റുകളുടെ ഒരു പരമ്പര ഉണ്ടാകും. 'ഫ്രണ്ട് ഐ ഡിറ്റക്റ്റ്സ് ഗ്രീൻ?' എന്ന് വായിക്കുന്ന കളർ സെൻസിംഗ് ബ്ലോക്കിന്റെ ബൂളിയൻ പാരാമീറ്ററുള്ള ഒരു ഇഫ് തെൻ ബ്ലോക്കും ഇഫ് കണ്ടെയ്നറിനുള്ളിൽ 90 ഡിഗ്രി ബ്ലോക്കിന് വലത്തേക്ക് തിരിയുക എന്നതുമാണ് ആദ്യത്തേത്. അടുത്തതായി if ബ്ലോക്കും ടേൺ ബ്ലോക്ക് സ്റ്റാക്കും ഒന്നുതന്നെയാണ്, പക്ഷേ നീല നിറം കണ്ടെത്തിയാൽ 90 ഡിഗ്രി ഇടത്തേക്ക് തിരിയാൻ മാറ്റി. അടുത്തതായി, ബ്ലോക്ക്, ടേൺ ബ്ലോക്ക് സ്റ്റാക്ക് ഉപയോഗിച്ചാലും ഇതുതന്നെയാണ് സ്ഥിതി, പക്ഷേ ചുവപ്പ് നിറം കണ്ടെത്തിയാൽ ഡ്രൈവിംഗ് നിർത്തുക എന്നാക്കി മാറ്റും. അവസാനമായി, ബ്ലോക്ക് ആൻഡ് ടേൺ ബ്ലോക്ക് സ്റ്റാക്ക് ഉപയോഗിച്ചാലും ഇതുതന്നെയാണ്, പക്ഷേ നിറം കണ്ടെത്തിയില്ലെങ്കിൽ ഡ്രൈവ് ഫോർവേഡിലേക്ക് മാറ്റും.

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

    പ്രോജക്റ്റ് സ്റ്റാക്കിന്റെ തുടക്കത്തിലോ മധ്യത്തിലോ ബ്ലോക്കുകൾ ചേർക്കാൻ കഴിയും, ബ്ലോക്കിന്റെ മുകൾഭാഗം നിരത്തി, സ്റ്റാക്കിൽ ആവശ്യമുള്ള സ്ഥാനം നൽകിക്കൊണ്ട്.

    ഒരു ഫോറെവർ ബ്ലോക്ക് എങ്ങനെ ഒരു സ്റ്റാക്കിന്റെ മുകളിലേക്ക് വലിച്ചിട്ട് സ്റ്റാക്കിന്റെ ഉള്ളടക്കങ്ങൾ സ്വയമേവ പൊതിയാമെന്നതിന്റെ ഒരു ദൃശ്യവൽക്കരണം. VEXcode VR ബ്ലോക്ക്സ് പ്രോജക്റ്റ് മുമ്പത്തെപ്പോലെ തന്നെ, എന്നെന്നേക്കുമായി ഒരു ലൂപ്പിൽ അടങ്ങിയിരിക്കുന്നു. if സ്റ്റേറ്റ്‌മെന്റുകൾ ഇപ്രകാരമാണ്: ആദ്യത്തേത് 'Front Eye detects green?' എന്ന് വായിക്കുന്ന ഒരു കളർ സെൻസിംഗ് ബ്ലോക്കിന്റെ ബൂളിയൻ പാരാമീറ്ററുള്ള ഒരു If Then ബ്ലോക്കാണ്, If കണ്ടെയ്‌നറിനുള്ളിൽ 90 ഡിഗ്രി ബ്ലോക്കിന് വലത്തേക്ക് തിരിയുക. അടുത്തതായി if ബ്ലോക്കും ടേൺ ബ്ലോക്ക് സ്റ്റാക്കും ഒന്നുതന്നെയാണ്, പക്ഷേ നീല നിറം കണ്ടെത്തിയാൽ 90 ഡിഗ്രി ഇടത്തേക്ക് തിരിയാൻ മാറ്റി. അടുത്തതായി, ബ്ലോക്ക്, ടേൺ ബ്ലോക്ക് സ്റ്റാക്ക് ഉപയോഗിച്ചാലും ഇതുതന്നെയാണ് സ്ഥിതി, പക്ഷേ ചുവപ്പ് നിറം കണ്ടെത്തിയാൽ ഡ്രൈവിംഗ് നിർത്തുക എന്നാക്കി മാറ്റും. അവസാനമായി, ബ്ലോക്ക് ആൻഡ് ടേൺ ബ്ലോക്ക് സ്റ്റാക്ക് ഉപയോഗിച്ചാലും ഇതുതന്നെയാണ്, പക്ഷേ നിറം കണ്ടെത്തിയില്ലെങ്കിൽ ഡ്രൈവ് ഫോർവേഡിലേക്ക് മാറ്റും.

    നിലവിലുള്ള പ്രോജക്റ്റിലെ നാല് [അപ്പോൾ] ബ്ലോക്കുകൾക്ക് ചുറ്റും [Forever ബ്ലോക്ക്] എങ്ങനെ ചേർക്കാമെന്ന് താഴെയുള്ള ഈ വീഡിയോ കാണിക്കുന്നു. [Forever] ബ്ലോക്കിന്റെ മുകൾഭാഗം [When started] എന്നതിനും ആദ്യത്തെ [If then] ബ്ലോക്കിനും തൊട്ടുപിന്നാലെ നിരത്തിയിരിക്കുന്നത് ശ്രദ്ധിക്കുക. തുടർന്ന് [Forever] ബ്ലോക്ക് പ്രോജക്റ്റ് സ്റ്റാക്കിലെ തുടർന്നുള്ള എല്ലാ ബ്ലോക്കുകളെയും ചുറ്റിപ്പിടിക്കുന്നു.

  • ഇപ്പോൾ [Forever] ബ്ലോക്ക് പ്രോജക്റ്റിലേക്ക് ചേർത്തിരിക്കുന്നതിനാൽ എല്ലാ [if then] ബ്ലോക്കുകളുടെയും അവസ്ഥകൾ നിരന്തരം പരിശോധിക്കപ്പെടും, ഡിസ്ക് മേസ് പ്ലേഗ്രൗണ്ട് തുറന്ന് പ്രോജക്റ്റ് പ്രവർത്തിപ്പിക്കുക.
  • ഈ പ്രോജക്റ്റ് റൺ ചെയ്യുമ്പോൾ, VR റോബോട്ട് തുടക്കം മുതൽ അവസാനം വരെ ഡിസ്ക് മേസ് പ്ലേഗ്രൗണ്ട് നാവിഗേറ്റ് ചെയ്യും. ചുവപ്പ് നിറം കണ്ടെത്തിയാൽ, വിആർ റോബോട്ട് ഡ്രൈവിംഗ് നിർത്തും.

    വിആർ ഡിസ്ക് മെയ്സ് പ്ലേഗ്രൗണ്ടിന്റെ മുകളിൽ നിന്ന് താഴേക്കുള്ള കാഴ്ച, വിആർ റോബോട്ട് ഓരോ ഡിസ്കും കടന്ന് അവസാനത്തെ ചുവന്ന ഡിസ്കിൽ വിശ്രമിക്കുന്നു.
  • മുൻ പാഠത്തിലെ പ്രോജക്റ്റിൽ, [അങ്ങനെയാണെങ്കിൽ] ബ്ലോക്കുകളിലെ അവസ്ഥകൾ ഒരിക്കൽ മാത്രമേ പരിശോധിച്ചിട്ടുള്ളൂ. [അപ്പോൾ] ബ്ലോക്കുകളിലെ അവസ്ഥകൾ ഒരിക്കൽ മാത്രമേ പരിശോധിച്ചിട്ടുള്ളൂ എന്നതിനാൽ, നിറം കണ്ടെത്താത്ത അവസ്ഥ TRUE ആയി റിപ്പോർട്ട് ചെയ്യപ്പെട്ടതിനാൽ VR റോബോട്ട് എന്നെന്നേക്കുമായി മുന്നോട്ട് പോയി.

    ഫോറെവർ ബ്ലോക്ക് ഇല്ലാതെ തന്നെ, ഞങ്ങളുടെ VEXcode VR ബ്ലോക്ക്സ് പ്രോജക്റ്റിലെ ലോജിക്കിന്റെ ഒഴുക്കിന്റെ ഒരു ഡയഗ്രം. പ്രോജക്റ്റ് അവസാനിക്കുന്നതിന് മുമ്പ് ഓരോ if സ്റ്റേറ്റ്മെന്റും ഒരിക്കൽ മാത്രമേ പ്രവർത്തിപ്പിക്കുന്നുള്ളൂ എന്ന് അമ്പടയാളങ്ങൾ സൂചിപ്പിക്കുന്നു, അങ്ങനെ നമ്മുടെ പ്രോജക്റ്റ് നമ്മൾ ആഗ്രഹിക്കുന്നതിലും വളരെ കുറച്ച് പ്രതികരണശേഷിയുള്ളതാകുന്നു. മുൻ കണ്ണ് പച്ച നിറത്തിൽ കാണുന്നുണ്ടോ എന്നും അങ്ങനെയാണെങ്കിൽ അത് 90 ഡിഗ്രി വലത്തേക്ക് തിരിയുന്നുണ്ടോ എന്നും ഞങ്ങളുടെ പ്രോജക്റ്റ് പരിശോധിക്കുന്നു. അടുത്തതായി, മുൻ കണ്ണ് നീലനിറം കണ്ടെത്തിയാൽ അത് 90 ഡിഗ്രി ഇടത്തേക്ക് തിരിയുന്നു. അടുത്തതായി, മുൻ കണ്ണിൽ ചുവപ്പ് നിറം കണ്ടെത്തിയാൽ അത് ഡ്രൈവിംഗ് നിർത്തുന്നു. അവസാനമായി, മുൻകണ്ണ് ഒന്നും കണ്ടെത്തിയില്ലെങ്കിൽ അത് മുന്നോട്ട് ഓടുന്നു.
  • ഇപ്പോൾ [Forever] ബ്ലോക്ക് ചേർത്തിരിക്കുന്നതിനാൽ, [If then] C ബ്ലോക്കുകളുടെ ഓരോ അവസ്ഥയും ആവർത്തിച്ച് പരിശോധിക്കപ്പെടും. പ്രോജക്റ്റിന്റെ ഫ്ലോ സമയത്ത്, [If then] C ബ്ലോക്കിന്റെ അവസ്ഥ TRUE ആണെങ്കിൽ, [If then] C ബ്ലോക്കിനുള്ളിലെ ബ്ലോക്കുകൾ എക്സിക്യൂട്ട് ചെയ്യപ്പെടും. [If then] C ബ്ലോക്കിന്റെ അവസ്ഥ FALSE ആണെങ്കിൽ, [If then] C ബ്ലോക്കിനുള്ളിലെ ബ്ലോക്കുകൾ ഒഴിവാക്കപ്പെടും, കൂടാതെ പ്രോജക്റ്റിന്റെ ഒഴുക്ക് സ്റ്റാക്കിലെ അടുത്ത ബ്ലോക്കിലേക്ക് തുടരും. ഒരു പ്രത്യേക നിറം തിരിച്ചറിഞ്ഞാൽ തിരിയുകയോ നിർത്തുകയോ പോലുള്ള വ്യതിരിക്തമായ പെരുമാറ്റങ്ങൾ നടത്താൻ ഇത് VR റോബോട്ടിനെ പ്രാപ്തമാക്കുന്നു.

    വലതുവശത്തുള്ള ചിത്രത്തിൽ VR റോബോട്ടിന്റെ ഒരു ഉദാഹരണത്തിലൂടെ ഇടതുവശത്തേക്ക് പോകുന്ന VEXcode VR ബ്ലോക്കുകളുടെ ലോജിക്കിന്റെ ഒഴുക്കിന്റെ ഒരു ഡയഗ്രം. ചിത്രത്തിൽ VR റോബോട്ട് ഒരു നീല ഡിസ്കിൽ എത്തി ഇടത്തേക്ക് തിരിയുന്നത് കാണിക്കുന്നു. if സ്റ്റേറ്റ്‌മെന്റുകൾ എന്നെന്നേക്കുമായി ആവർത്തിക്കുന്നുവെന്ന് ഡയഗ്രം സൂചിപ്പിക്കുന്നു, കൂടാതെ ഓരോ ലൂപ്പിലും ഓരോന്നും പരിശോധിക്കുന്നു. മുൻ കണ്ണിന് പച്ച നിറം തിരിച്ചറിയാൻ കഴിഞ്ഞില്ലെങ്കിൽ, അത് നീല നിറം പരിശോധിക്കുന്നു, അത് ശരിയാണെന്ന് കണ്ടെത്തി റോബോട്ടിനെ 90 ഡിഗ്രി ഇടത്തേക്ക് തിരിക്കുന്നു. അതിനുശേഷം, ലോജിക്കിന്റെ ഒഴുക്ക് സ്റ്റാക്കിലൂടെ താഴേക്ക് തുടരുന്നു, ചുവപ്പും ഒന്നുമില്ല എന്നതും പരിശോധിക്കുന്നു.
  • [അങ്ങനെയാണെങ്കിൽ] ബ്ലോക്കുകൾ [Forever] ബ്ലോക്കുകൾക്കൊപ്പം ഉപയോഗിക്കുന്നു, അതിനാൽ അവസ്ഥകൾ നിരന്തരം പരിശോധിക്കപ്പെടുന്നു.

    ഞങ്ങളുടെ VEXcode VR ബ്ലോക്ക് പ്രോജക്റ്റിലെ ലോജിക്കിന്റെ ഒഴുക്കിന്റെ ഒരു ഡയഗ്രം, ബാഹ്യ ഫോറെവർ ബ്ലോക്ക് ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. ഓരോ അമ്പടയാളവും ഇപ്പോൾ ആ ലോജിക് കമാൻഡ് അളക്കുന്നത് ഉപയോഗിച്ച് ലേബൽ ചെയ്തിരിക്കുന്നു, കൂടാതെ ഫോറെവർ ലൂപ്പിലെ ഓരോ ബ്ലോക്കിലൂടെയും തുടർച്ചയായി ആവർത്തിക്കുന്ന ലോജിക്കിന്റെ ഒഴുക്ക് ഒരു മഞ്ഞ അമ്പടയാളം കാണിക്കുന്നു. ഫലം ശരിയോ തെറ്റോ ആണെങ്കിലും, ഫോർഎവർ ബ്ലോക്കിന്റെ ഓരോ ലൂപ്പിലും ഓരോ if സ്റ്റേറ്റ്മെന്റും പരിശോധിക്കുന്നുണ്ടെന്ന് വ്യക്തമാണ്.

സ്വിച്ച് ബ്ലോക്കുകൾ ഉപയോഗിക്കുന്നു 

ഇതാണ് സ്വിച്ച് [ഫോറെവർ] ബ്ലോക്ക്. Forever നുള്ള Switch Python കമാൻഡ് ഒരു while ലൂപ്പ് സൃഷ്ടിക്കുന്നു, അവിടെ അവസ്ഥ True ആണ്. ലൂപ്പിനുള്ളിൽ നെസ്റ്റ് ചെയ്തിരിക്കുന്ന കമാൻഡുകൾ പിന്നീട് എന്നെന്നേക്കുമായി ആവർത്തിക്കപ്പെടും, കാരണം വ്യവസ്ഥ എല്ലായ്പ്പോഴും ശരിയാണ്. 

ഫോറെവർ ബ്ലോക്കിന്റെ ഒരു VEXcode VR സ്വിച്ച് ബ്ലോക്ക് പതിപ്പ്. പൈത്തൺ കോഡ് 'while True:' എന്ന് വായിക്കുന്നു, ഇത് ഒരു forever സ്റ്റേറ്റ്മെന്റിന് തുല്യമായ പൈത്തൺ ആണ്.

ചോദ്യങ്ങൾ

പാഠ ക്വിസ് ആക്‌സസ് ചെയ്യുന്നതിന് താഴെയുള്ള ലിങ്ക് തിരഞ്ഞെടുക്കുക.

ഗൂഗിൾ ഡോക് / .ഡോക്സ് / .പിഡിഎഫ്