പാഠം 2: പ്രോജക്റ്റ് നിർമ്മിക്കുകയും പരീക്ഷിക്കുകയും ചെയ്യുക
പദ്ധതിയുടെ നിർമ്മാണം തുടരുന്നു
-
ഇനി if elseസ്റ്റേറ്റ്മെന്റിന്റെ അവസ്ഥ സജ്ജീകരിക്കേണ്ടതുണ്ട്. കോട്ടകൾ കണ്ടെത്തുന്നതിന് ഡിസ്റ്റൻസ് സെൻസർ ഉപയോഗിക്കുന്നതിന്, found_objectകമാൻഡ് ഉപയോഗിക്കാം. കണ്ടീഷനിലേക്ക് found_objectകമാൻഡ് ചേർക്കുക. നിങ്ങളുടെ പ്രോജക്റ്റ് ഇപ്പോൾ ഇതുപോലെ ആയിരിക്കണം:
def main(): # ഡിസ്റ്റൻസ് സെൻസർ ഒരു കാസിൽ കണ്ടെത്തുന്നുണ്ടോ? if front_distance.found_object(): # ഒരു ഡിസ്റ്റൻസ് സെൻസർ കണ്ടെത്തിയ ക്രാഷ് കാസിൽ പാസ് മറ്റുള്ളവ: # ഡിസ്റ്റൻസ് സെൻസർ പാസ് ഉപയോഗിച്ച് ഒരു കോട്ട കണ്ടെത്താൻ തിരിയുക -
ഡിസ്റ്റൻസ് സെൻസർ ഒരു വസ്തു കണ്ടെത്തിയാൽ, വിആർ റോബോട്ട് കോട്ടയെ ഇടിച്ചുതെറിപ്പിക്കാൻ മുന്നോട്ട് ഓടണം. if else സ്റ്റേറ്റ്മെന്റിന്റെ 'if' ബ്രാഞ്ചിലേക്ക് ഒരു driveകമാൻഡ് ചേർത്ത്, VR റോബോട്ടിനെ മുന്നോട്ട് നയിക്കുന്നതിനുള്ള പാരാമീറ്റർ സജ്ജമാക്കുക. (ഈ കമാൻഡ് 'പാസ് 'ന് പകരമായിരിക്കണം).
def main(): # ഡിസ്റ്റൻസ് സെൻസർ ഒരു കാസിൽ കണ്ടെത്തുന്നുണ്ടോ? front_distance.found_object(): ആണെങ്കിൽ # ഒരു ഡിസ്റ്റൻസ് സെൻസർ drivetrain.drive(FORWARD) കണ്ടെത്തിയ ക്രാഷ് കാസിൽ else: # ഡിസ്റ്റൻസ് സെൻസർ പാസ് ഉപയോഗിച്ച് ഒരു കോട്ട കണ്ടെത്താൻ തിരിയുക -
found_object കമാൻഡ് False എന്ന് റിപ്പോർട്ട് ചെയ്യുമ്പോൾ, 'else' ബ്രാഞ്ച് പ്രവർത്തിക്കും, അതിനാൽ VR റോബോട്ട് പ്ലേഗ്രൗണ്ടിൽ ഒരു കോട്ട കണ്ടെത്താൻ തിരിയേണ്ടിവരും. 'else' ബ്രാഞ്ചിനുള്ളിൽ ഒരു turn കമാൻഡ് ചേർക്കുക, VR റോബോട്ടിനെ വലത്തേക്ക് തിരിക്കാൻ പാരാമീറ്ററുകൾ സജ്ജമാക്കുക.
def main(): # ഡിസ്റ്റൻസ് സെൻസർ ഒരു കാസിൽ കണ്ടെത്തുന്നുണ്ടോ? front_distance.found_object(): ആണെങ്കിൽ # ഒരു Distance Sensor drivetrain.drive(FORWARD) കണ്ടെത്തിയ ക്രാഷ് കാസിൽ else: # Distance Sensor drivetrain.turn(RIGHT) ഉപയോഗിച്ച് ഒരു കാസിൽ കണ്ടെത്താൻ തിരിയുക.
നിങ്ങളുടെ അറിവിലേക്കായി
if elseസ്റ്റേറ്റ്മെന്റിന്റെ 'else' ബ്രാഞ്ച് ഒരു പ്രോജക്റ്റിൽif elseസ്റ്റേറ്റ്മെന്റിന്റെ ഭാഗമായി മാത്രമേ പ്രവർത്തിക്കൂ. സ്റ്റേറ്റ്മെന്റ് മാത്രമാണെങ്കിൽ നിങ്ങൾക്ക്സ്റ്റേറ്റ്മെന്റ് ഉണ്ടാകാമെങ്കിലും, VEXcode VR പൈത്തണിൽ ഒരു 'മറ്റൊരു' സ്റ്റേറ്റ്മെന്റ് ഇല്ല. 'if' ബ്രാഞ്ചിന്റെ വ്യവസ്ഥ പാലിക്കാത്തപ്പോൾ 'else' ബ്രാഞ്ച് പ്രവർത്തിപ്പിക്കപ്പെടുന്നു. ഒരു നിർവചിക്കപ്പെട്ട അവസ്ഥ ('if' ബ്രാഞ്ച്) ഇല്ലാതെ, 'else' ബ്രാഞ്ച് ഒരിക്കലും പ്രവർത്തിക്കില്ല. 
ഒരു ലൂപ്പ് ചേർത്ത് പ്രോജക്റ്റ് പരീക്ഷിക്കുക.
- പ്രോജക്റ്റ് പരീക്ഷിക്കുന്നതിനുമുമ്പ്, ഒരു കമാൻഡ് കൂടി ചേർക്കേണ്ടതുണ്ട്. അല്ലെങ്കിൽ സ്റ്റേറ്റ്മെന്റുകൾ സ്റ്റേറ്റ്മെന്റിന് പുറത്തുള്ള അടുത്ത കമാൻഡിലേക്ക് പോകുന്നതിന് മുമ്പ് ഒരിക്കൽ മാത്രമേ അവസ്ഥ പരിശോധിക്കൂ. യൂണിറ്റ് 7-ൽ, ഡൗൺ ഐ സെൻസറിന്റെ അവസ്ഥ ആവർത്തിച്ച് പരിശോധിക്കാൻ VR റോബോട്ടിനോട് നിർദ്ദേശിക്കുന്നതിനായി ഒരു അനന്തമായഉം ലൂപ്പും പ്രോജക്റ്റിലേക്ക് ചേർത്തു. ഡിസ്റ്റൻസ് സെൻസർ അവസ്ഥ ആവർത്തിച്ച് പരിശോധിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കാൻ, ഇൻഫിനിറ്റ് while ലൂപ്പ് ഡ്രാഗ് ചെയ്യുക അല്ലെങ്കിൽ ടൈപ്പ് ചെയ്യുക, തുടർന്ന് ഇൻഫിനിറ്റ്while ലൂപ്പിനുള്ളിൽif elseസ്റ്റേറ്റ്മെന്റ് പകർത്തുക. നിങ്ങളുടെ പ്രോജക്റ്റ് ഇപ്പോൾ ഇതുപോലെ ആയിരിക്കണം:
-
ഒരു ലൂപ്പിലേക്ക് കമാൻഡുകൾ പകർത്തി ഒട്ടിക്കുമ്പോൾ ഇൻഡന്റേഷൻ ശ്രദ്ധിക്കാൻ ഓർമ്മിക്കുക, അതുവഴി പ്രോജക്റ്റ് പ്രവർത്തിപ്പിക്കുമ്പോൾ ഉദ്ദേശിച്ച രീതിയിൽ പ്രവർത്തിക്കും.
def main(): while True: # ഡിസ്റ്റൻസ് സെൻസർ ഒരു കാസിൽ കണ്ടെത്തുന്നുണ്ടോ? front_distance.found_object(): ആണെങ്കിൽ # ഒരു ഡിസ്റ്റൻസ് സെൻസർ drivetrain.drive(FORWARD) കണ്ടെത്തിയ ക്രാഷ് കാസിൽ else: # ഡിസ്റ്റൻസ് സെൻസർ drivetrain.turn(RIGHT) ഉപയോഗിച്ച് ഒരു കാസിൽ കണ്ടെത്താൻ തിരിയുക wait(5, MSEC)
-
- പ്ലേഗ്രൗണ്ട് വിൻഡോ തുറന്നിട്ടില്ലെങ്കിൽ അത് തുറക്കുക. ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ട്തുറന്നിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക, തുടർന്ന് പ്രോജക്റ്റ് പ്രവർത്തിപ്പിക്കുക.

- VR റോബോട്ട് കുറഞ്ഞത് രണ്ട് കോട്ടകളെങ്കിലും തകർത്തുകഴിഞ്ഞാൽ, പ്ലേഗ്രൗണ്ട് വീണ്ടും ലോഡുചെയ്ത് ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ടിന്റെ മറ്റൊരു ലേഔട്ടിൽ പ്രോജക്റ്റ് പ്രവർത്തിപ്പിക്കുക.

- പ്രോജക്റ്റിന്റെ ഓരോ ഓട്ടത്തിലും, ഡിസ്റ്റൻസ് സെൻസർ ഒരു കോട്ട കണ്ടെത്തുന്നതുവരെ VR റോബോട്ട് തിരിയും, തുടർന്ന് അത് തകർക്കാൻ ആ കെട്ടിടത്തിലേക്ക് ഓടിച്ചുകൊണ്ടുപോകും.

- പ്രോജക്റ്റ് നടക്കുന്നതിനിടയിൽ, വിആർ റോബോട്ട് ഒരു കോട്ടയുടെ ഒരു ഭാഗം അരികിലേക്ക് തള്ളിയിട്ട് പ്ലേഗ്രൗണ്ടിൽ നിന്ന് വീണേക്കാം. കാരണം, found_objectകമാൻഡ് ഇപ്പോഴും VR റോബോട്ടിന് മുന്നിൽ ഒരു ഒബ്ജക്റ്റ് ഉണ്ടെന്ന് റിപ്പോർട്ട് ചെയ്യുന്നു. ഈ കമാൻഡ് ട്രൂ എന്ന് റിപ്പോർട്ട് ചെയ്യുമ്പോൾ, വിആർ റോബോട്ട് മുന്നോട്ട് നീങ്ങുന്നു, വിആർ റോബോട്ടിനെ പ്ലേഗ്രൗണ്ടിൽ നിന്ന് വീഴാൻ നയിക്കുന്നു.
അല്ലെങ്കിൽ സ്റ്റേറ്റ്മെന്റുള്ള പ്രോജക്റ്റ് ഫ്ലോ
VR റോബോട്ടിന് ഒരു തീരുമാനമെടുക്കാൻ വേണ്ടി if else സ്റ്റേറ്റ്മെന്റ് ഉപയോഗിക്കുന്നു. ബൂളിയൻ കൺഡിഷൻ True ആണെങ്കിൽ, 'if' ബ്രാഞ്ചിനുള്ളിലെ കമാൻഡുകൾ പ്രവർത്തിക്കും. ബൂളിയൻ അവസ്ഥ തെറ്റാണെങ്കിൽ, 'else' ബ്രാഞ്ചിനുള്ളിലെ കമാൻഡുകൾ പ്രവർത്തിക്കും.
ഉദാഹരണത്തിന്, ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ടിന്റെ ഈ ആവർത്തനത്തിൽ, പ്രോജക്റ്റ് ആരംഭിക്കുമ്പോൾ ഡിസ്റ്റൻസ് സെൻസർ ഒരു വസ്തുവിനെ കണ്ടെത്തുന്നു -found_objectകമാൻഡിന്റെ അവസ്ഥ True എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നു. ഇനി പദ്ധതിയുടെ 'if'ശാഖ പ്രവർത്തിക്കും, VR റോബോട്ട് മുന്നോട്ട് നീങ്ങും. VR റോബോട്ട് പ്രോജക്റ്റിന്റെ 'മറ്റൊരു' ശാഖ ഒഴിവാക്കും.
- ഡിസ്റ്റൻസ് സെൻസർ ഡാറ്റയും ഡാഷ്ബോർഡിൽ റിപ്പോർട്ട് ചെയ്തിട്ടുണ്ടെന്ന് ശ്രദ്ധിക്കുക. ഒരു വസ്തു കണ്ടെത്തുമ്പോൾ, ദൂര മൂല്യം പ്രദർശിപ്പിക്കും.
എന്നിരുന്നാലും, ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ടിന്റെ ഈ ആവർത്തനത്തിൽ, പ്രോജക്റ്റ് ആരംഭിക്കുമ്പോൾ ഡിസ്റ്റൻസ് സെൻസർ ഒരു വസ്തുവിനെ കണ്ടെത്തുന്നില്ല -found_object കമാൻഡിന്റെ അവസ്ഥ False എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നു. ഇനി VR റോബോട്ട് പ്രോജക്റ്റിന്റെ 'if' ബ്രാഞ്ച് ഒഴിവാക്കും, കൂടാതെ പ്രോജക്റ്റിന്റെ 'else' ബ്രാഞ്ച് പ്രവർത്തിക്കും, അങ്ങനെ VR റോബോട്ട് വലത്തേക്ക് തിരിയും.
- ഡാഷ്ബോർഡിലെ ഡിസ്റ്റൻസ് സെൻസർ മൂല്യം > 3000 മിമി ആയി റിപ്പോർട്ട് ചെയ്തിരിക്കുന്നത് ശ്രദ്ധിക്കുക. ഡിസ്റ്റൻസ് സെൻസറിന് 3000 മില്ലിമീറ്റർ (മില്ലീമീറ്റർ) പരിധിയിലുള്ള വസ്തുക്കളെ കണ്ടെത്താൻ കഴിയും, അതിനാൽ ഒരു വസ്തു കണ്ടെത്താത്തപ്പോൾ, മൂല്യം (>) 3000 മില്ലിമീറ്ററിൽ കൂടുതലായി റിപ്പോർട്ട് ചെയ്യപ്പെടുന്നു.
കാരണം if else സ്റ്റേറ്റ്മെന്റ് ഒരു ഇൻഫിനിറ്റ് ന്റെ ഉള്ളിലാണ്, ലൂപ്പിലും, പ്രോജക്റ്റ് ഇൻഫിനിറ്റ്ന്റെ മുകളിലേക്ക് തിരികെ ലൂപ്പ് ചെയ്യുകയും ലൂപ്പും if else സ്റ്റേറ്റ്മെന്റിന്റെ അവസ്ഥ ആവർത്തിച്ച് പരിശോധിക്കുകയും ചെയ്യുന്നു. ഈ ലൂപ്പ് എന്നെന്നേക്കുമായി തുടരും, if elseഅവസ്ഥ സെക്കൻഡിൽ നൂറുകണക്കിന് തവണ തുടർച്ചയായി പരിശോധിക്കാൻ VR റോബോട്ടിനോട് നിർദ്ദേശിക്കുന്നു.
- elseസ്റ്റേറ്റ്മെന്റ് നോൺ-വെയിറ്റിംഗ് കമാൻഡുകളാണെങ്കിൽ, നുള്ളിലെ ഡ്രൈവ് ഉം ടേൺ കമാൻഡുകളും ശ്രദ്ധിക്കുക. ഒരു പ്രോജക്റ്റ് പ്രവർത്തിക്കുമ്പോൾ കാത്തിരിക്കാത്ത കമാൻഡുകൾ അവയുടെ ഒഴുക്ക് തടയുന്നില്ല. ഒരു if else സ്റ്റേറ്റ്മെന്റിൽ ('ഡ്രൈവ് ഫോർവേഡ് ഇഫ് ഒബ്ജക്റ്റ് കണ്ടെത്തിയാൽ' പോലുള്ളവ) എക്സിക്യൂട്ട് ചെയ്യുന്ന ഒരു നോൺ-വെയിറ്റിംഗ് സ്വഭാവം, കണ്ടീഷൻ പരിശോധിക്കുമ്പോൾ തുടരും, കണ്ടീഷൻ മാറുമ്പോൾ മാത്രമേ മാറുകയുള്ളൂ.
നിങ്ങളുടെ അറിവിലേക്കായി
കണ്ടീഷൻ പരിശോധിക്കുമ്പോൾ പ്രോജക്റ്റിലെ ഒരു ബ്രാഞ്ച് മാത്രമേ പ്രവർത്തിക്കുന്നുള്ളൂ എന്ന് ഉറപ്പാക്കാൻif elseസ്റ്റേറ്റ്മെന്റ് ഉപയോഗിക്കുന്നു. ഒരു സന്ദർഭമോ വ്യവസ്ഥയോ മാത്രമേ ഏത് സമയത്തും ശരിയാകാൻ കഴിയൂ. ഇത് പദ്ധതിയെ കൂടുതൽ കാര്യക്ഷമമാക്കുന്നു.

യൂണിറ്റ് 7-ൽ സൃഷ്ടിച്ച പ്രോജക്റ്റുമായി നിലവിലെ പ്രോജക്റ്റ് താരതമ്യം ചെയ്യുക. യൂണിറ്റ് 7 പ്രോജക്റ്റ് നാല് if പ്രസ്താവനകൾ ഉപയോഗിക്കുന്നു.

ഒന്നിലധികം if സ്റ്റേറ്റ്മെന്റുകളുള്ള ഒരു പ്രോജക്റ്റിലൂടെ പ്രവർത്തിക്കുമ്പോൾ, അനന്തമായ ലൂപ്പിലും കമാൻഡുകൾ വഴി പ്രോജക്റ്റ് പ്രവർത്തിക്കുമ്പോൾ ഒന്നിലധികം അവസ്ഥകൾ ശരി (അല്ലെങ്കിൽ തെറ്റ്) എന്ന് റിപ്പോർട്ട് ചെയ്യാൻ സാധ്യതയുണ്ട്. ഇതുപോലുള്ള സംഘർഷങ്ങൾ പ്രോജക്റ്റ് പ്രവർത്തനം നിർത്താനോ കൂടുതൽ മന്ദഗതിയിലാക്കാനോ ഇടയാക്കും.
മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, ഒരു പ്രോജക്റ്റിൽസ്റ്റേറ്റ്മെന്റുകളുടെ ഗുണിതം ആണെങ്കിൽ, അത് ഒന്നിലധികം എക്സിറ്റ് റാമ്പുകളുള്ള ഒരു റോഡിലൂടെ സഞ്ചരിക്കുന്നതിന് തുല്യമാണ്. നിങ്ങൾ പോകാൻ ശ്രമിക്കുന്ന സ്ഥലത്തെ ആശ്രയിച്ച്, നിങ്ങൾ വ്യത്യസ്ത സ്ഥലങ്ങളിൽ തിരിയും. ഉദാഹരണത്തിന്,ആണെങ്കിൽ നിങ്ങൾ സ്കൂളിൽ പോകുകയാണെങ്കിൽ, നിങ്ങൾ ഇടത്തേക്ക് തിരിയും; ആണെങ്കിൽ നിങ്ങൾ കടയിലേക്ക് പോകുകയാണെങ്കിൽ, നിങ്ങൾ വലത്തേക്ക് തിരിയും. പക്ഷേ നീ സ്കൂളിലോ കടയിലോ പോകുന്നില്ലെങ്കിൽ എന്തുചെയ്യും? രണ്ട് അവസ്ഥകളും തെറ്റാണെന്ന് റിപ്പോർട്ട് ചെയ്യും, നിങ്ങൾ നേരായ പാതയിൽ തന്നെ തുടരും. അല്ലെങ്കിൽ നിങ്ങൾ സ്കൂളിലും കടയിലും പോകുന്നെങ്കിലോ? രണ്ട് അവസ്ഥകളും ശരിയാണെന്ന് റിപ്പോർട്ട് ചെയ്യും, പക്ഷേ നിങ്ങൾക്ക് ഒരേ സമയം രണ്ട് സ്ഥലങ്ങളിൽ തിരിയാൻ കഴിയില്ല. 
സാമ്യം തുടരാൻ, ഒരു if elseപ്രസ്താവന റോഡിലെ ഒരു നാൽക്കവലയിലേക്ക് സഞ്ചരിക്കുന്നത് പോലെയാണ് - അത് നിങ്ങളെ ഒരു തീരുമാനമെടുക്കാൻ നിർബന്ധിക്കുന്നു. നിങ്ങൾ സ്കൂളിൽ പോകുകയാണെങ്കിൽ, ഇടത്തേക്ക് തിരിയുക; മറ്റുള്ളവ, വലത്തേക്ക് തിരിയുക. നീ എവിടേക്ക് പോയാലും, നീ ഇടത്തോട്ടോ വലത്തോട്ടോ തിരിയണം. മുകളിൽ പറഞ്ഞതുപോലുള്ള ബഗുകൾ ഒഴിവാക്കാൻ if elseഎന്ന പ്രസ്താവന ഉപയോഗിക്കാം, കാരണം ഒരു നിശ്ചിത സമയത്ത് ഒരു വ്യവസ്ഥ മാത്രമേ ശരിയാകാൻ കഴിയൂ എന്നതിനാൽ, അത് നിങ്ങളെ ഒരു തീരുമാനമെടുക്കാൻ നിർബന്ധിതരാക്കും.
ചോദ്യങ്ങൾ
പാഠ ക്വിസ് ആക്സസ് ചെയ്യുന്നതിന് താഴെയുള്ള ലിങ്ക് തിരഞ്ഞെടുക്കുക.