°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡¡¡API¡¡is¡¡vast£»¡¡but¡¡you¡¡will¡¡not¡¡need¡¡to¡¡use¡¡all¡¡of¡¡the¡¡API¡¡all¡¡the¡¡time¡£¡¡What¡¡you¡¡need¡¡to¡¡be¡¡aware¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡of¡¡are¡¡the¡¡general¡¡classes¡¡of¡¡the¡¡API¡£¡¡What¡¡part¡¡of¡¡the¡¡API¡¡is¡¡used¡¡to¡¡read¡¡and¡¡write¡¡streams£¿¡¡What¡¡part¡¡of¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡API¡¡is¡¡used¡¡to¡¡create¡¡GUI¡¡elements£¿¡¡This¡¡means¡¡you¡¡are¡¡not¡¡ever¡¡going¡¡to¡¡be¡¡an¡¡expert¡¡on¡¡all¡¡parts¡¡of¡¡the¡¡API£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡although¡¡you¡¡might¡¡be¡¡an¡¡expert¡¡Visual¡¡Basic¡¡programmer¡¡and¡¡understand¡¡the¡¡general¡¡concepts¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡When¡¡I¡¡understand¡¡a¡¡domain¡¡quite¡¡well£»¡¡I¡¡develop¡¡using¡¡a¡¡bottom¡up¡¡approach¡£¡¡This¡¡works¡¡because¡¡I¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡know¡¡which¡¡interface¡¡and¡¡implementation¡¡need¡¡to¡¡talk¡¡to¡¡which¡¡other¡¡interface¡¡and¡¡implementation¡£¡¡When¡¡I¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡don¡¯t¡¡understand¡¡a¡¡domain¡¡fully£»¡¡I¡¡develop¡¡using¡¡a¡¡top¡down¡¡approach¡£¡¡Using¡¡a¡¡top¡down¡¡approach£»¡¡I¡¡can¡¡figure¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡out¡¡what¡¡the¡¡pieces¡¡are¡¡in¡¡a¡¡simplified¡¡manner¡£¡¡I¡¡create¡¡my¡¡echo¡¡program£»¡¡which¡¡gives¡¡a¡¡plete¡¡round¡trip¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡without¡¡getting¡¡bogged¡¡down¡¡in¡¡the¡¡details¡¡of¡¡the¡¡API¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Think¡¡of¡¡a¡¡bunch¡¡of¡¡guys¡¡putting¡¡together¡¡a¡¡barbecue¡¡grill¡£¡¡They¡¡might¡¡look¡¡at¡¡the¡¡instructions£»¡¡but¡¡more¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡likely£»¡¡they¡¡will¡¡look¡¡at¡¡the¡¡parts¡¡and¡¡try¡¡to¡¡mentally¡¡fit¡¡the¡¡pieces¡¡together¡£¡¡They¡¡might¡¡even¡¡put¡¡a¡¡couple¡¡of¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pieces¡¡together¡¡to¡¡get¡¡an¡¡idea¡¡of¡¡what¡¡each¡¡piece¡¡does¡¡and¡¡how¡¡the¡¡overall¡¡grill¡¡should¡¡appear¡£¡¡Once¡¡they¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bee¡¡confident¡¡of¡¡their¡¡prototype£»¡¡they¡¡build¡¡the¡¡real¡¡thing£»¡¡which¡¡hopefully¡¡resembles¡¡a¡¡barbecue¡¡grill¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡When¡¡you¡¡use¡¡this¡¡approach£»¡¡what¡¡you¡¡are¡¡doing¡¡is¡¡building¡¡a¡¡mockup£»¡¡proof¡¡of¡¡concept£»¡¡or¡¡prototype¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Maybe¡¡two¡¡or¡¡three¡¡team¡¡members¡¡might¡¡help¡¡develop¡¡this¡¡prototype£»¡¡but¡¡the¡¡fact¡¡that¡¡your¡¡code¡¡needs¡¡to¡¡be¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡declared¡¡as¡¡a¡¡prototype¡¡is¡¡extremely¡¡important¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡279¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡A¡¡PT¡¡E¡¡R¡¡¡¡¡¡1¡¡0¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡O¡¡U¡¡T¡¡¡¡P¡¡E¡¡R¡¡S¡¡IS¡¡T¡¡E¡¡N¡¡CE¡¡257¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Visual¡¡Basic¡¡Express¡¡and¡¡the¡¡Visual¡¡Studio¡¡products¡¡help¡¡you¡¡in¡¡that¡¡they¡¡allow¡¡you¡¡to¡¡embed¡¡task¡¡markers¡£¡¡Go¡¡¡¡
¡¡¡¡¡¡back¡¡to¡¡the¡¡source¡¡code¡¡example¡¡where¡¡LottoTicketProcessor¡¡was¡¡illustrated¡¡and¡¡look¡¡at¡¡the¡¡ment£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡'¡¡TODO£º¡¡Finish¡¡implementing¡¡the¡¡class¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Notice¡¡TODO¡¡is¡¡in¡¡all¡¡capital¡¡letters¡£¡¡That¡¡type¡¡of¡¡ment¡¡is¡¡special¡£¡¡It¡¡is¡¡called¡¡a¡¡¡¡task¡¡and¡¡is¡¡tracked¡¡by¡¡¡¡
¡¡¡¡¡¡Visual¡¡Basic¡¡Express¡¡in¡¡the¡¡Task¡¡List¡¡window¡£¡¡To¡¡open¡¡ments¡¡in¡¡the¡¡Task¡¡List¡¡window£»¡¡select¡¡View¡¡¡¡Other¡¡¡¡
¡¡¡¡¡¡Windows¡¡¡¡Task¡¡List£»¡¡and¡¡then¡¡select¡¡ments¡¡from¡¡the¡¡drop¡down¡¡list¡¡at¡¡the¡¡top¡¡of¡¡the¡¡window¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡This¡¡allows¡¡a¡¡team¡¡of¡¡developers¡¡to¡¡add¡¡markers¡¡throughout¡¡the¡¡entire¡¡code¡¡base£»¡¡indicating¡¡what¡¡is¡¡done¡¡¡¡
¡¡¡¡¡¡and¡¡not¡¡done¡£¡¡That¡¡way£»¡¡you¡¡will¡¡not¡¡forget¡¡to¡¡do¡¡certain¡¡tasks¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Some¡¡other¡¡identifiers¡¡that¡¡you¡¡can¡¡use¡¡are¡¡HACK¡¡to¡¡identify¡¡some¡¡code¡¡that¡¡is¡¡not¡¡correct£»¡¡but¡¡hacked¡¡in¡¡so¡¡¡¡
¡¡¡¡¡¡that¡¡it¡¡works£»¡¡and¡¡UNDONE¡£¡¡If¡¡you¡¡happen¡¡to¡¡be¡¡using¡¡a¡¡Visual¡¡Studio¡¡edition¡¡other¡¡than¡¡Express£»¡¡you¡¡can¡¡define¡¡¡¡
¡¡¡¡¡¡your¡¡own¡¡ment¡¡identifiers¡£¡¡For¡¡more¡¡information£»¡¡see¡¡the¡¡MSDN¡¡article¡¡¡°Visual¡¡Studio¡¡How¡¡to£º¡¡Create¡¡Custom¡¡¡¡
¡¡¡¡¡¡ment¡¡Tokens¡±¡¡£¨http£º//msdn2¡£microsoft¡£/en¡US/library/ekwz6akh£¨VS¡£80£©¡£aspx£©¡£¡¡
Implementing¡¡Stream¡¡Reading¡¡and¡¡Writing¡¡
Finishing¡¡the¡¡stream¡¡reading¡¡and¡¡writing¡¡means¡¡looking¡¡at¡¡the¡¡possible¡¡arguments¡¡that¡¡can¡¡be¡¡¡¡
given£»¡¡and¡¡then¡¡implementing¡¡the¡¡code¡¡to¡¡process¡¡the¡¡arguments¡£¡¡Here¡¡is¡¡the¡¡plete¡¡source¡¡¡¡
code¡¡for¡¡ReaderWriter¡£Bootstrap£º¡¡
#Const¡¡DEBUG_OUTPUT¡¡=¡¡True¡¡
Imports¡¡System¡£IO¡¡
Public¡¡Module¡¡Bootstrap¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡DisplayHelp£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨You¡¡need¡¡help£¿¡¡Right¡¡now£¿¡¨£©¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡Start£¨ByVal¡¡args¡¡As¡¡String£¨£©£»¡¡ByVal¡¡processor¡¡As¡¡IProcessor£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡#If¡¡DEBUG_OUTPUT¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨Argument¡¡count£¨¡¨¡¡&¡¡args¡£Length¡¡&¡¡¡¨£©¡¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡For¡¡Each¡¡argument¡¡As¡¡String¡¡In¡¡args¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨Argument¡¡£¨¡¨¡¡&¡¡argument¡¡&¡¡¡¨£©¡¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Next¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡#End¡¡If¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡reader¡¡As¡¡TextReader¡¡=¡¡Nothing¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡writer¡¡As¡¡TextWriter¡¡=¡¡Nothing¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡args¡£Length¡¡=¡¡0¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡reader¡¡=¡¡Console¡£In¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡writer¡¡=¡¡Console¡£Out¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ElseIf¡¡args¡£Length¡¡=¡¡1¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡args£¨0£©¡¡=¡¡¡¨¡help¡¨¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Bootstrap¡£DisplayHelp£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡If¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡280¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
258¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡0¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡P¡¡E¡¡R¡¡S¡¡IS¡¡TE¡¡N¡¡CE¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡reader¡¡=¡¡File¡£OpenText£¨args£¨0£©£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡writer¡¡=¡¡Console¡£Out¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ElseIf¡¡args¡£Length¡¡=¡¡2¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡args£¨0£©¡¡¡¡¡¨¡out¡¨¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Bootstrap¡£DisplayHelp£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡If¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡reader¡¡=¡¡Console¡£In¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡writer¡¡=¡¡File¡£CreateText£¨args£¨1£©£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ElseIf¡¡args¡£Length¡¡=¡¡3¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡args£¨0£©¡¡¡¡¡¨¡out¡¨¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Bootstrap¡£DisplayHelp£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡If¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡reader¡¡=¡¡File¡£OpenText£¨args£¨2£©£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡writer¡¡=¡¡File¡£CreateText£¨args£¨1£©£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Else¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Bootstrap¡£DisplayHelp£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡If¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡writer¡£Write£¨processor¡£Process£¨reader¡£ReadToEnd£©£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Module¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡code£»¡¡before¡¡the¡¡first¡¡If¡¡block£»¡¡the¡¡variables¡¡reader¡¡and¡¡writer¡¡are¡¡assigned¡¡to¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡value¡¡¡¡Nothing£»¡¡indicating¡¡that¡¡there¡¡is¡¡a¡¡reader¡¡and¡¡there¡¡is¡¡writer£»¡¡but¡¡we¡¡don¡¯t¡¡know¡¡whether¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡they¡¡will¡¡reference¡¡streams¡¡or¡¡files¡£¡¡Then¡¡the¡¡If¡¡blocks¡¡go¡¡through¡¡the¡¡different¡¡binations¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡and¡¡variations¡¡of¡¡the¡¡mand¡line¡¡arguments¡¡£¨see¡¡Table¡¡10¡1£©¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡code¡¡follows¡¡a¡¡truth¡¡table¡¡app