
C / C ++ã®gotoæŒç®åã«å¯Ÿããããªãã®æ 床ã¯äœã§ããïŒ ã»ãšãã©ã®å Žåãããã°ã©ãã³ã°ãåŠãã ãšãã«ããã䜿çšããŸããã ããããããªãã¯ãããæªãããšãç¥ãããããå¿ããŸããã è€éãªãšã©ãŒåŠçã䌎ãããšããããŸãããããããããè©ŠããŠã¿ãŠãã ãã... throw ... catchã ãŸãã¯ãã¹ããããã«ãŒããçµäºããã«ã¯...ãããããã©ã°ãšå€ãã®å°é£ããããŸãã ãŸãã¯ããã¹ããããã¹ã€ããã...ããããããããããããåããã©ã°ãããå Žåã
ããã§ããå€ã®éå¯ã®äžã§ãããªãã¯æœåšæèã«çœªæ·±ãæèãèš±ããŸãã-ã ãã㧠gotoã䜿çšããªãã®ã¯ãªãã§ããïŒ ãããŠããã®ããã°ã©ã ã¯ããã¹ãªã ã«èŠããããã§ãæé©ãªåœ¢ã§ç»å ŽããŸãã ã¯ããããã¯è¯ãã§ããã...ããããããã- ããã¯äžå¯èœã§ã ã圌ãã¯å¿ããŠããŸããïŒã
ãªãããã§ããïŒ
é·å¹Žã®å®è·µãšããŸããŸãªãã©ãããã©ãŒã ã«åºã¥ããå°ããªèª¿æ»ãšããã®åé¡ã«å¯Ÿããç§ã®å§¿å¢ã§ãã ãã®èšäºã¯ã C ++ã®å Žåãšåããã®ã§ãããCããã³ãã€ã¯ãã³ã³ãããŒã©ãŒå°çšã®ãã€ã©ã€ãã§ãã
gotoã®ç±çãªå察è ãžã®ãªã¯ãšã¹ã-ç§ããã®ãããã¯ãæèµ·ããgotoã®éšåçãªæ¯æè ã§ãããšããçç±ã ãã§ãç§ããã€ãã¹ã«ã«ãã®å°çã®ç«ã«åããªãã§ãã ããïŒ
æŽå²çå°æ è¡
çµã¿åããåè·¯ãã¡ã¢ãªä»ãåè·¯ãäœã§ãããããããŠã¢ã»ã³ãã©ãŒãããããã©ã®ããã«æé·ããããå®å šã«ããç¥ã£ãŠãã人ã®ããã«ãç§ãã¡ã¯å®å šã«çµè«ã«ã¹ãããããããšãã§ããŸãã
ãããŠãããã¯ãã¹ãŠçµã¿åããåè·¯ããå§ãŸããŸãã

æåã¯èšèã§ãã-ãããŠèšèã¯æ©èœã§ããã ãããè«çå€æ°ã®ããŒã«é¢æ°ã§ããããšã¯ããã»ã©éèŠã§ã¯ãããŸãã-ããã«åºã¥ããŠã圌ãã¯ãã¹ãŠã®ïŒã»ãŒïŒæ°åŠããããŠããã¹ããã°ã©ãã£ãã¯ã¹ãå®è£ ããããšã«æåããŸãã...ãšã«ãããã³ã³ãã¥ãŒã¿æè¡ã䜿çšãããšéåžžã«äŸ¿å©ã§ããããšãå€æããŸããç®è¡ã次ã«äžè§æ³ããã³ãã®ä»ã®ã¢ã¯ã·ã§ã³ãå®è¡ããå€æ°ã®é¢æ°ã®å€ãèŠã€ããŸãã
ã€ãŸããå€æ°ã®å€ã«ãã£ãŠé¢æ°ã®å€ãèŠã€ããããã€ã¹ãäœæããå¿ èŠããããŸããã
ãã®å°é£ãªåé¡ã解決ããããã«ãç®è¡æŒç®ãå®è¡ããããã®é次ã¢ã«ãŽãªãºã ãæ§ç¯ãããŸããïŒãã®ãããªã¢ã«ãŽãªãºã ã§èšç®ã®ç²ŸåºŠãäžå®ã®å Žåãåç®è¡æŒç®ã¯1ã¯ããã¯ãµã€ã¯ã«ã§å®è¡ã§ããŸãïŒã
ã¢ã«ãŽãªãºã ã䜿çšããããšã§ãçµã¿åããåè·¯ãæ§ç¯ããããšã¯é£ãããããŸãã-å³åº§ã«ïŒè«çããã€ã¹ã®åäœãšä¿¡å·ã®äŒææéãŸã§ïŒåºåã§çããåºãåè·¯ã
åé¡ã¯ãããã§ç§»è¡ãå¿ èŠã§ããïŒ ãããã圌ãã¯åã«ããã«ããŸããã äžè²«ããè¡åæ¹éããããŸãã æçµçã«ããããã®ãã¹ãŠã®ã¢ã¯ã·ã§ã³ã¯åäžã®ã¯ããã¯ãµã€ã¯ã«ã§å®è£ ã§ããŸãïŒç§ã¯äž»åŒµããŸããããéåžžã«é¢åã«ãªããŸããããã¹ãŠã®ããŒã¿ã®ããã深床ãèãããšãåŠçã¯VHDLãŸãã¯Verilogã®ã·ã³ã»ãµã€ã¶ãŒã¯èšããŸã§ããªãããã®ãããªã¹ããŒã ãæ§ç¯ããŸãïŒ
ãããããã®åŸãã¡ã¢ãªåè·¯ãä»å ¥ããŸãã

ãããŠã誰ãã®ã¹ããŒããããããã£ãŒãããã¯åè·¯ïŒRSããªã¬ãŒãªã©ïŒãæãã€ããŸããã ãããŠãåè·¯ã®ç¶æ ãçŸããŸããã ãããŠãç¶æ ã¯ã¡ã¢ãªãæã€ãã¹ãŠã®èŠçŽ ã®çŸåšã®å€ã«ä»ãªããŸããã
ãã®ãããªã¡ã¢ãªãšã¬ã¡ã³ãã®åºçŸã«ãããããŒãã¯ã€ã€ãŒãããã€ã¹ãããã¡ãŒã ãŠã§ã¢ãžã®é©æ°çãªé²æ©ãå¯èœã«ãªããŸããã ç°¡åã«èšããšããã¡ãŒã ãŠã§ã¢ã«ã¯ã³ãã³ãã¡ã¢ãªããããŸãã çŸåšã®ãã¡ãŒã ãŠã§ã¢ïŒå ç®ãæžç®ããŸãã¯ãã®ä»ïŒãå®è£ ããå¥ã®ããã€ã¹ããããŸãã ããããå¥ã®ããã€ã¹ããçŸåšã®ããã¡ãŒã ãŠã§ã¢ã®éžæã«é¢äžããŠããŸã-ãããããµã³ããªã³ã°ããã€ã¹ãã«ããŸãã
åé¡ã¯ã移è¡ããããã©ããã§ãã ééããªãã¯ãïŒ ããã«ãç¡æ¡ä»¶ã®é·ç§»ïŒæ¬¡ã®ã³ãã³ãã®ã¢ãã¬ã¹ã¯ããŒã¿ã®çŸåšã®ç¶æ ã«äŸåããªãïŒãšæ¡ä»¶ä»ãïŒæ¬¡ã®ã³ãã³ãã®ã¢ãã¬ã¹ã¯ããŒã¿ã®ç¶æ ã«äŸåããïŒã衚瀺ãããŸãã
ããããªãã§è¡ãããšã¯å¯èœã§ããïŒ ãŸããïŒ é·ç§»ã䜿çšããªãå Žåãã¡ã¢ãªãªãã§çµã¿åããåè·¯ã«æ»ããŸãã
ãã®çµæãã¢ã»ã³ãã©ãŒã«æ¥ãŸãã
ãã®ãããªã³ã³ãã¥ãŒãã£ã³ã°ããã€ã¹ã®ç¥æ Œåã¯ããã€ã¯ãã³ã³ãã¥ãŒã¿ãŒãã·ã³ãã«ã³ã³ãã¥ãŒã¿ãŒãã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã«ãªããŸããã ãããã¯ãã¹ãŠãåºæ¬çã«ã»ãŒåãã³ãã³ãã»ããã§ã¢ã»ã³ãã©ãŒã«ç°¡åã«å€æã§ããã³ãŒãèšèªã«åºã¥ããŠããŸãã ãã€ã¯ãã³ã³ãããŒã©ã®ç¹å®ã®å¹³ååãããã¢ã»ã³ãã©ãèããŠã¿ãŸãããïŒATmegãPICãAT90ã®ã¢ã»ã³ãã©ã«ç²ŸéããŠããŸãïŒã 圌ã®ç§»è¡äœæ¥ã¯ã©ã®ããã«æ§ç¯ãããŸããïŒ
é·ç§»ã¯ç¡æ¡ä»¶ïŒæ¬¡ã®ã¢ãã¬ã¹ãžã®ç§»åããµãããã°ã©ã ãžã®ç§»åãçµäºïŒã§ãããæ¡ä»¶ä»ãïŒãã©ã°ã®ç¶æ ã«å¿ããŠïŒã§ãã
ç§ã¯ãã¹ãŠã®è²¬ä»»ã宣èšããŸã- ã¢ã»ã³ãã©ãŒã§ã®é·ç§»æäœãªãã«è¡ãããšã¯äžå¯èœã§ãïŒ ã¢ã»ã³ãã©ãŒã®ããã°ã©ã ã¯ã©ããç®ã奪ããŸãïŒ ãã ããããã§ç§ãšäž»åŒµãã人ã¯ããŸããã
ãŸãšã
èŠçŽãããšäœãã§ããŸããïŒ ãã€ã¯ãããã»ããµã¬ãã«ã§ã¯ã移è¡æäœãéåžžã«ç©æ¥µçã«äœ¿çšãããŸãã ãããã䜿çšããªãå®éã®ããã°ã©ã ãäœæããããšã¯ã»ãšãã©äžå¯èœã§ãïŒå®è¡ã§ããå¯èœæ§ããããŸãããããã¯è¶ ã¡ã¬åé¯ã§ãããå®éã®ããã°ã©ã ã§ã¯ãããŸããïŒïŒã 誰ãããã«ã€ããŠè°è«ããŸããã
ãããããªããããé«ãã¬ãã«ã®èšèªã§-ãã€ã¯ãã³ã³ãããŒã©ã®Cã«éäžããŠ-gotoæŒç®åãçªç¶æ¯æã倱ããŸãããïŒ..
ã¢ã«ãŽãªãºã ã«ã€ããŠå°ã

ããã§ã¯ãããªãããŒãªã¢ã«ãŽãªãºã ãèŠãŠã¿ãŸãããã ãããã©ã®ãããªãã³ã»ã³ã¹ãªã®ãã¯ããããŸããããå®è£ ããå¿ èŠããããŸãã ãããTKã§ãããšä»®å®ããŸãã
ããã§ãAãBãCãDãEã¯ããã€ãã®æäœã§ãããé¢æ°åŒã³åºãã§ã¯ãããŸããïŒ å€ãã®ããŒã«ã«å€æ°ã䜿çšããå¯èœæ§ããããŸãã ãããŠã圌ãã¯åœŒãã®ç¶æ ãå€ããå¯èœæ§ããããŸãã ã€ãŸãããã®å Žåãé¢æ°ã®åŒã³åºãã«ã€ããŠã¯èª¬æããŸãã-äžéšã®ã¢ã¯ã·ã§ã³ã¯è©³çŽ°ã«ãªããŸããã
gotoã§ã¯æ¬¡ã®ããã«ãªããŸãã
if (a) { A; goto L3; } L1: if (b) { L2: B; L3: C; goto L1; } else if (!c) { D; goto L2; } E;
éåžžã«ç°¡æœã§èªã¿ãããã ããã- ããã¯äžå¯èœã§ãïŒ gotoãªãã§è©ŠããŠã¿ãŸãããïŒ
char bf1, bf2, bf3; if (a) { A; bf1 = 1; } else bf1 = 0; bf2 = 0; do { do { if (bf3 || b) bf3 = 1; else bf3 = 0; if (bf3 || bf2) B; if (bf3 || bf1 || bf2) { C; bf1 = 0; bf2 = 1; } if (!bf3) { if (!c) { D; bf3 = 1; } else { bf3 = 0; bf2 = 0; } } } while (bf3); } while (bf2); E;
2çªç®ã®ãªã¹ãã®ããžãã¯ããäœãç解ã§ããŸããïŒ..
äž¡æ¹ã®ãªã¹ããæ¯èŒããŸãã
- æåã®ãªã¹ãã«è²»ããæéã¯ã2çªç®ã®ãªã¹ãã«æ¯ã¹ãŠ5åçããªããŸããã
- gotoã䜿çšãããªã¹ãã¯ãå°ãªããšã2åçããªããŸãã
- gotoã䜿çšãããªã¹ãã£ã³ã°ã¯ãCã§æå°éã®ãã¬ãŒãã³ã°ãè¡ã£ãŠãã人ãªã誰ã§ãç解ã§ããŸãã次ã«ãã§ããã ãã¢ã¯ã»ã¹ããããããããããããã®ã«ããããšããŸããã
- æåã®ãªãã·ã§ã³ããããã°ããã®ã«ã©ããããæéããããã2çªç®ã®ãªãã·ã§ã³ããããã°ããã®ã«ã©ããããæéãããããŸããïŒ
- ãããŠäžè¬çã«ãæãããã¢ã«ãŽãªãºã ãåé¡ã®ã¹ããŒãã¡ã³ããšèããå Žåãæåã®ãªã¹ãã¯100ïŒ æ£ããã§ãã 2çªç®ã«ã€ããŠã¯ãå°ãªããšãæ¡ä»¶ãšãã©ã°ããã§ãã¯ããé åºã«ã€ããŠã¯ãŸã ããããããŸããã
- 1çªç®ãš2çªç®ã®ãªã¹ãã®ã¢ã»ã³ããªã³ãŒããæ¯èŒããŸãã
ãããã2çªç®ã®ãªã¹ãã«ã¯gotoã¯ãããŸããïŒ
ãã®ãããªã¢ã«ãŽãªãºã ãå®è£ ããããã«ããã®ã¢ã«ãŽãªãºã ãæäŸãããŸãã ã
if a
A
C
while b or not c
if not b
D
B
C
E
ããã¯çŸããããã§ãããïŒ ã³ããŒããŒã¹ããããªãã®ã¯ãªãã§ãããè¿œå ã®ãã§ãã¯ãçµäºããªãã®ã¯ãªãã§ãã... goto以å€ã®ãã¹ãŠãå®è¡ããŠãã ãã!!!
ãŸãã倧äžå€«ã人çã§ã¯ãã®ãããªã¢ã«ãŽãªãºã ã¯ã»ãšãã©èŠåœãããŸããã 人çã«ã€ããŠã®ããè¯ã話ã
å®éã®ããã°ã©ã ã§goto
20幎以äžã®çµéšã®äžã§ãç§ã¯ããã€ãã®ããŒããŠã§ã¢ãã©ãããã©ãŒã ãšæ°ååã®ããã°ã©ãã³ã°èšèªã䜿ã ã倧ããªActiveHDLãœãããŠã§ã¢è£œåã®äœæã«åå ããåçšããŒã¿ããŒã¹ãšãªãªã³ããã¯ç«¶æ倧äŒã§äœ¿çšãããæ©åšããããã°ããããã®å€ãã®å°ããªããã°ã©ã ãäœæãããã®ããã®ããã€ã¹ãäœæããŸãããªãªã³ããã¯ãã®ãã®ïŒæ£ç¢ºã«ã¯ããã§ã«ããã€ãã®ãªãªã³ããã¯ïŒã èŠããã«ãç§ã¯ããã°ã©ãã³ã°ã§ã·ã£ããã«ããŠããŸãã ãããŠãã¯ããç§ã¯å¿ããŠããŸãã-ç§ã¯KHNUREããåèªåæ¥èšŒæžãåæ¥ããŸãã -ã€ãŸããçè«çã«ã¯ãç§ããã¡ãã¯ããŸãã
ãããã£ãŠãç§ã®ãã®åŸã®èããç¶æ³...ç§ã¯ãããã«å¯Ÿããé埳çæš©å©ãæã£ãŠãããšèšã£ãŠã¿ãŸãããã
gotoã®æé»çãªäœ¿çš
Cã«ã¯ãæ¡ä»¶ä»ããŸãã¯ç¡æ¡ä»¶ã®ãå®éã«ã¯äºçŽ°ãªgotoã§ããå€ãã®æŒç®åããããŸãã ãããã¯ããã¹ãŠã®çš®é¡ã®forïŒ...ïŒãwhileïŒ...ïŒ{...}ã{...} whileïŒ...ïŒã«ãŒããå®è¡ããŸãã ããã¯ãæ°å€å€æ°switchïŒ...ïŒ{case ... case ...}ã®åæã§ãã ãããã¯ããã¬ãŒã¯ã«ãŒããšã³ã³ãã£ãã¥ãŒã«ãŒãã®åãå²ã蟌ã¿/ãžã£ã³ãã¹ããŒãã¡ã³ãã§ãã æåŸã«ããããã¯functïŒïŒé¢æ°ã®åŒã³åºãã§ãããããããçµäºããŸãã
ãããã®gotoã¯ãåæ³ããšèŠãªãããŸã-gotoèªäœã¯ãªãéæ³ã§ããïŒ
gotoãéé£ããããã®
圌ãã¯åœŒãå€èªäžèœã«ãªããäžååã«æé©åããããšéé£ãããšã©ãŒãçŸãããããããŸããã ããã¯å®çšçãªçæã§ãã ãããŠãçè«çãªãã®ã¯åã«æªããšæç²ã§ããããã ãã§ãïŒ
ã³ãŒãã®èªã¿ããããšæé©åã®æªãã«ã€ããŠã¯ãäžèšã®ãªã¹ããããäžåºŠèŠãŠãã ããã
ãšã©ãŒã®å¯èœæ§ã«é¢ããŠã¯-ç§ã¯åæããŸããããã®ã³ãŒãã¯ãªã¹ããäžããäžã«èªãããšã«æ £ããŠãããšããäºå®ã«ãããããè€éã«æããããŸãã ããããããã ãã§ãïŒ ããããCã®ä»ã®æ段ã¯å®å šã§ãããã³ãŒãã«ãšã©ãŒãäœæã§ããªãã®ã§ããããïŒ ã¯ããå°ãªããšãåå€æãè¡ãããã€ã³ã¿ãŒãæäœããŸãã ãããå°ç¡ãã«ããã«ã¯-äœãããªãã§ïŒ
ãã€ãã¯éåžžã«å±éºãªãã®ã ãšæããŸãããïŒ ãããããããã³ã§äœããã®çç±ã§ããã䜿çšããŠããŸãã ãããŠ220ãã«ã-ææããªããŠå±éºãªããšã§ãããïŒ ãããããããè³¢ã䜿çšããã°ãçããããšãã§ããŸãã
gotoã«ã€ããŠãåãããšãèšããŸãã ãããè³¢ã䜿çšããå¿ èŠããããŸã-ãããŠãã³ãŒãã¯æ£ããåäœããŸãã
ãããŠãçè«çè°è«ã«ã€ããŠ-ããã¯ããã¿ãŸããã奜ã¿ã«ã€ããŠã®è°è«ã§ãã ãã³ã¬ãªãŒèšæ³ã䜿çšããŠããŸããïŒ ç§-ããããç§ã¯åœŒå¥³ãææ ¢ã§ããªãïŒ ããããç§ã¯åœŒå¥³ããã®ããã«æªããšèšã£ãŠããã®ã§ã¯ãããŸããïŒ å人çã«ã¯ãå€æ°ã«ã¯ã»ãã³ãã£ãã¯ããŒããå¿ èŠã§ãããšèããŠããŸã-ãªãäœæãããã®ãã ããããä»ã®äººããã®åœåèŠåã䜿çšããããšãçŠæ¢ããŸããïŒ
ãŸãã¯ãa = ++ iãæžãããšã¯æç²ã§ãããšä¿¡ãã麻é å»ãããŸããi= i + 1ãšæžãå¿ èŠããããŸãã a = iã ãããŠä»ããããçŠæ¢ããã«ã¯ïŒ
ãšã©ãŒåŠç
å€éšããã€ã¹ããã®å ¥åãã±ããã®åŠçãè¡ããŸãã
pack = receive_byte (); switch (pack) { case 'A': for (f = 0; f < 10; ++f) { ⊠if (timeout) goto Leave; ⊠} break; case 'B': ⊠} Leave: âŠ
ããã±ãŒãžããããŒãååŸããŸããã åææžã¿ã ãããããã±ãŒãž 'A'-ã€ãŸãã10åäœããããå¿ èŠããããŸãã ãã®ãµã€ãã®çšŒåæéãå¶åŸ¡ããããšãå¿ããªãã§ãã ãã-å察åŽãåçµããŠããå Žåã¯ã©ããªããŸããïŒ ãããããã¯ãŸã ãã³ã°ããŠããŸã-ã¿ã€ã ã¢ãŠãæ¡ä»¶ã¯æ©èœããŸãã-ãããŠãç§ãã¡ã¯å€ã«åºãŸã-ã«ãŒããããã¹ã€ããããã
åãããšã¯ãããããçš®é¡ã®ãã©ã°ã§å®è¡ã§ããŸãããåäœãé ããªããå ããŠãã®ãããªåžå°ãªã¡ã¢ãªã»ã«ãå æããŸãã ããã¯äŸ¡å€ããããŸããïŒ
ããã¯åçŽãªã±ãŒã¹ã§ãã ãã ããreceive_byteïŒïŒã¯ãåŠçã¿ã€ã ã¢ãŠãã®ãããã¯ãé¢æ°ã«ããããšãã§ããŸãã ãããŠããã®ãããªéãåºå£ããããŸãã
ããã¯ããŸãã«gotoãç©æ¥µçã«äœ¿çšããå Žåã§ãã ããã«ãããå€éšããã€ã¹ãUARTãUSBãªã©ã§åé¡ãçºçãããšãã«ç«ã¡åŸçããããšããªããªããŸããã
ãã¹ããããã«ãŒãã¢ãŠããçµäº
以äžã®ããã°ã©ã ãã芧ãã ããã
char a, b, c; for (a = 0; a < 10; ++a) { for (b = 0; b < a; ++b) { if (!c) goto Leave; } for (b = 10; b < 15; ++b) { d (); } } Leave: e ();
äœãèµ·ãã£ãŠãã-ç解ããŸããïŒ ãã¹ããããã«ãŒãããããŸãã äœããã®æ¡ä»¶ãçºçããå ŽåãåŸç¶ã®åŠçã¯ãã¹ãŠçµäºããŸãã
ãã©ã°ä»ãã®ãã®ã³ãŒãã¯ç°ãªã£ãŠèŠããŸãïŒ
char a, b, c, f1; f1 = 1; for (a = 0; a < 10 && f1; ++a) { for (b = 0; b < a && f1; ++b) { if (!c) f1 = 0; } if (f1) { for (b = 10; b < 15; ++b) { d (); } } } e ();
ãã®å Žåã¯ã©ããªããŸãããïŒ åå埩ã§ããã©ã°ããã§ãã¯ããŸãã ããã«ç¢ºèªããããšãå¿ããªãã§ãã ããã ç¹°ãè¿ããå€ããªããPCã®ãç¡æ¬¡å ãã¡ã¢ãªã«ã€ããŠè©±ããŠããå Žåããããã¯äºçŽ°ãªããšã§ãã ãããŠãããã°ã©ã ããã€ã¯ãã³ã³ãããŒã©çšã«æžãããŠãããšã-ããã¯ãã¹ãŠäžå¯æ¬ ã«ãªããŸãã
ã¡ãªã¿ã«ããã®ç¹ã«é¢ããŠãäžéšã®èšèªïŒJavaã§èª€è§£ããŠããªãå ŽåïŒã§ã¯ããã©ãŒã ãã¬ã€ã¯Leaveã®ã©ãã«ã§ã«ãŒããçµäºããæ©äŒããããŸãã ã¡ãªã¿ã«åãgotoïŒ
switchïŒ...ïŒ{case ...}ã§ã®åŠçãšãŸã£ããåãäŸã瀺ãããšãã§ããŸãã ç°ãªãæ§é ã®çä¿¡ãã±ãããåŠçãããšãã«ãããã«ééããããšããããããŸãã
èªåã³ãŒãçæ
èªåããã°ã©ãã³ã°ã«ç²ŸéããŠããŸããïŒ ãŸãã¯ä»ã®èªååãããã³ãŒãçæïŒ ã¬ãã·ã«ã«ãã³ãã©ãŒã®äœæè ïŒå€§ãããªããŒã¹ã::ã¹ããªããã䜿çšããã«ïŒãšèšããŸãã ãããã®ããã°ã©ã ã¯ãã¹ãŠãããã©ãã¯ããã¯ã¹ããšããŠäœ¿çšã§ããã³ãŒããäœæããŸããå éšã«äœããã£ãŠãããŸããŸããã 圌ãäœããããã¯ããªãã«ãšã£ãŠéèŠã§ãã ãããŠãããã«ã¯gotoãéåžžã«é »ç¹ã«äœ¿çšãããŠããŸã...
1ãæã§çµäº
Cã§ã¯ã次ã®ãããªèšè¿°ãå¿ èŠãªå ŽåããããŸãã
int f (âŠ) { ⊠if (a) { c = 15; return 10; } ⊠if (b) { c = 15; return 10; } ⊠= 10; return 5; }
ãã®ã³ãŒãã¯ã次ã®ããã«ã¯ããã«æ£ç¢ºã«ãªããŸãã
int f (âŠ) { ⊠if (a) goto Exit; ⊠if (b) goto Exit; ⊠= 10; return 5; Exit: c = 15; return 10; }
ã¢ã€ãã¢ã¯æ確ã§ããïŒ æã ãçµäºæã«äœããããå¿ èŠããããŸãã æã ããããšããããããããŸãã ãããŠgotoã¯éåžžã«åœ¹ç«ã¡ãŸãã ãã®ãããªäŸããããŸãã
ããã¯ãã¹ãŠããªã¹ãããããã§ããä»ããªãã¯èŠçŽããããšãã§ããŸã...
ãŸãšã
ãããç§ã®ãã€ã³ãã§ãïŒ ãããŠåœŒå¥³ã¯ç§ã«ãšã£ãŠå ¬å¹³ã§ãã ãã¶ã-ããªãã®ããã§ãããç§ã¯ããªãã«ããã«åŸãããšã匷å¶ããŸããïŒ
ãã®ãããgotoãããã€ãã®åé¡ãæé©ãã€ããè¯ãæ¹æ³ã§è§£æ±ºããã®ã«åœ¹ç«ã€ããšã¯æããã§ãã
ãŸããéã®å ŽåããããŸã-gotoã¯å€ãã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã
UPD ïŒ ããããã®ã³ã¡ã³ããèªãã§ãgotoã䜿çšããããšã®ãã©ã¹é¢ãšãã€ãã¹é¢ãèªåã§åŒ·èª¿ããŸããã
gotoã䜿çšããå©ç¹ ïŒ
- ããã€ãã®ãã¹ããããã«ãŒããšswitch ...ã±ãŒã¹ããã®æé©ãªæ¹æ³ïŒãªã¹ããšçµæã³ãŒãïŒ
- CïŒãšã©ãŒãåŠçããæãçµæžçãªïŒãªã¹ããšçµæã³ãŒãã«ããïŒæ¹æ³
- åã ã®å Žåãã¢ã«ãŽãªãºã ã®æãæé©ãªæ§ç¯
- æ éã«äœ¿çšããããšã§ã¡ã¢ãªãšã¿ã¯ããç¯çŽããŸãããããã¯éåžžã«éèŠãªå ŽåããããŸã
gotoã䜿çšããããšã®çæ ïŒ
- ã³ãŒãã«äžæ £ã
- ãªã¹ããäžããäžã«èªãé åºã®éåãããã³ã³ãŒãå ã®æšæºåããããããã¯ãã©ããŒãµã«ïŒ ãããã¯ã®äžå¿ã«ç§»åããããããåºãããšãã§ãããšããæå³ã§ ïŒ
- ã³ãŒãæé©åããã»ã¹ã®ã³ã³ãã€ã©ãŒïŒããã³äžå¯èœãªå ŽåãããïŒã®è€éã
- 埮åŠãªã³ãŒããšã©ãŒãäœæããå¯èœæ§ãé«ãã
è³åŠäž¡è«ãäŒããã®ã¯èª°ã§ããïŒ åœŒããæ£åœåããããæžããŸã
ç§ã¯ããäžåºŠæ³šæãæããŸã ïŒ ç§ã¯gotoã«ã©ãã«ã§ãè¡ãããã«ä¿ããªãã§ãã ãã ïŒ ãã ããå Žåã«ãã£ãŠã¯ãä»ã®ãã¹ãŠã®æ段ãããã¯ããã«å¹ççã«ã¢ã«ãŽãªãºã ãå®è£ ã§ããŸãã