Προς το περιεχόμενο

C/C++ goto αντι για function


NewProject

Προτεινόμενες αναρτήσεις

Δημοσ.
Η goto είναι πολύ χρήσιμη εντολή για να γράφεις πιο "elegant" κώδικα αν ξέρεις να την χρησιμοποιείς εκεί που πρέπει.

 

Η αποστροφη της goto εχει να κανει κυριως με την αποφυγη spaghetti code. Δηλαδη να πηγαινεις απο το ενα σημειο στο αλλο πανω κατω χωρις δομη.

 

Οταν η goto σε πηγαινει υποχρεωτικα σε σημειο πιο κατω, οπως στο παραδειγμα σου, αυτο το προβλημα δεν υπαρχει. Στη Java για παραδειγμα υπαρχει goto αλλα νομιζω ισχυει ο περιορισμος αυτος

  • Απαντ. 31
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

Τυχαιο;

 

>[color="Red"]Find all "goto", Subfolders, Find Results 1, "Visual C++ Include Directories"[/color]
 E:\Program Files\Microsoft Visual Studio 10.0\VC\include\delayhlp.cpp(294):            goto HookBypass;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\include\delayhlp.cpp(375):                    goto SetEntryHookBypass;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xkeycheck.h(23):	|| defined(goto) \
 E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xkeycheck.h(83):	|| defined(goto) \
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\afxwin.h(3440):	void GotoDlgCtrl(CWnd* pWndCtrl);
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\afxwin2.inl(682):_AFXWIN_INLINE void CDialog::GotoDlgCtrl(CWnd* pWndCtrl)
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlcom.h(1920):		goto _Error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlcom.h(1927):			goto _Error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlcom.h(1936):		goto _Error_CloseHandle;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlcom.h(1947):		goto _Error_CloseHandle;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlctl.h(3002):			goto outofmem;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlctl.h(3006):			goto outofmem;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlctl.h(3023):					goto outofmem;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlctl.h(3027):					goto outofmem;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlctl.h(3031):					goto outofmem;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(1959):			goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2110):			goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2200):					goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2206):					goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2260):						goto NEXT_SET;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2311):					goto NEXT_SET;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2455):				goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2768):			goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2795):			goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2810):					goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2823):						goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2829):					goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2848):					goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(2851):				goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(3140):							goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(3142):							goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(3148):					goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(3160):				goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(3665):						goto NEXT_SET;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(3693):				goto NEXT_SET;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(3715):					goto NEXT_SET;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldb.h(4099):			goto EXIT;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2671):				goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2685):						goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2697):								goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2739):							goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2751):							goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2756):							goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2764):							goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2771):						goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2778):					goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2783):					goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2799):						goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2809):						goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2829):			goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2835):				goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2849):			goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2857):				goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlutil.h(2865):			goto error;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlwin.h(1897):	void GotoDlgCtrl(_In_ HWND hWndCtrl) const throw()
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\statreg.h(464):		goto ReturnHR;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\statreg.h(476):		goto ReturnHR;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\statreg.h(484):		goto ReturnHR;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\statreg.h(494):		goto ReturnHR;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\statreg.h(501):		goto ReturnHR;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\statreg.h(509):		goto ReturnHR;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\statreg.h(679):		goto ReturnHR;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\statreg.h(697):			goto ReturnHR;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\statreg.h(703):			goto ReturnHR;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\statreg.h(1433):					goto EndCheck;
 E:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\statreg.h(1468):				goto EndCheck;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\BluetoothAPIs.h(219):                                                // list, goto the Bluetooth specification website and get the Bluetooth
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\CeLib.h(59):	goto label; \
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\CeLib.h(76):	    goto label; \
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\CeLib.h(117):	goto label; \
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\CeLib.h(126):	    goto label; \
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2504):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2517):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2540):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2553):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2575):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2584):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2607):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2620):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2643):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2656):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2678):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2687):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2710):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2723):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2746):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2759):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2782):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2795):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2818):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2831):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2977):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(2990):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3013):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3026):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3049):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3062):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3085):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3098):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3120):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3129):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3152):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3165):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3188):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3201):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3223):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3232):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3255):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3268):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3291):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3304):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3327):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3340):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3363):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3376):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3399):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3412):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3476):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3489):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3512):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3521):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3544):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3553):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3576):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3589):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3612):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3625):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3648):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\commctrl.inl(3661):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\corhlpr.h(75):#ifndef IfFailGoto
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\corhlpr.h(76):#define IfFailGoto(EXPR, LABEL) \
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\corhlpr.h(77):do { hr = (EXPR); if(FAILED(hr)) { goto LABEL; } } while (0)
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\corhlpr.h(81):#define IfFailGo(EXPR) IfFailGoto(EXPR, ErrExit)
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\dot1x.h(90):    If dwEvent = OneXNotificationTypeGotOneXIdentityString, pvEventData points to
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\esent.h(1730):	//	Flags for JetGotoSecondaryIndexBookmark
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\esent.h(4146):JetGotoPosition(
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\esent.h(4553):JetGotoBookmark(
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\esent.h(4561):JetGotoSecondaryIndexBookmark(
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\GenLex.h(63):    WORD wGotoState;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\mimeole.idl(3041):cpp_quote("#define MEST_EDIT						0")    // goto the edit tab
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\mimeole.idl(3042):cpp_quote("#define MEST_SOURCE	                    1")    // goto the source tab
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\mimeole.idl(3043):cpp_quote("#define MEST_PREVIEW                     2")    // goto the preview tab
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\mimeole.idl(3044):cpp_quote("#define MEST_NEXT	                    3")    // goto the next tab
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\mimeole.idl(3045):cpp_quote("#define MEST_PREVIOUS					4")    // goto the previous tab
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\MsHtmcid.h(217):#define IDM_GOTO                    2239
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\mstime.h(7432):        virtual /* [id] */ HRESULT STDMETHODCALLTYPE gotoMenu( void) = 0;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\mstime.h(7498):        /* [id] */ HRESULT ( STDMETHODCALLTYPE *gotoMenu )( 
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\mstime.h(7552):#define ITIMEDVDPlayerObject_gotoMenu(This)	\
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\mstime.h(7553):    ( (This)->lpVtbl -> gotoMenu(This) ) 
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\mstime.idl(866):        [id(DISPID_ITIMEDVDPLAYEROBJECT_GOTOMENU)] HRESULT gotoMenu();
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\mstimeid.h(342):#define DISPID_ITIMEDVDPLAYEROBJECT_GOTOMENU                    (DISPID_TIMEDVDPLAYEROBJECT_BASE +0x06)
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\odbcss.h(365):#define SQL_DIAG_DFC_SS_GOTO					(SQL_DIAG_DFC_SS_BASE-23)
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\RpcProxy.h(490):        { low = split; goto found_label; }
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\RpcProxy.h(495):        { low = low + split; if ( !result ) goto found_label; }
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\RpcProxy.h(500):        goto not_found_label;                          \
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\RpcProxy.h(503):        goto not_found_label;                          \
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\ShlObj.h(1012):#define FCIDM_MENU_TOOLS_SEP_GOTO   (FCIDM_GLOBALFIRST+0x00c1) // for Win9x compat
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\ShObjIdl.idl(6902):        BFO_NO_PARENT_FOLDER_SUPPORT        = 0x00001000,      // Can you NOT navigate to a parent folder?  Used for Backspace button to parent folder or the View.GoTo.ParentFolder feature.
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\spddkhlp.h(1016):                    goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\sqlext.h(1843):"GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,"\
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\Vfw.h(152):#define ICERR_GOTOKEYFRAME	3L
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(396):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(408):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(434):        goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(441):        goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(453):        goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(467):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(479):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(485):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(489):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(505):                goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(614):        goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(622):            goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinBase.Inl(626):        goto Exit;
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinNT.h(10236):    BYTE  IncreaseLevel;        // goto higher state
 E:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinNT.h(10237):    BYTE  DecreaseLevel;        // goto lower state
 [color="red"]Matching lines: 176    Matching files: 31    Total files searched: 2664[/color]

 

Δημοσ.
Άρα NewProject, τι συμπέρασμα έβγαλες; Ότι αν και ίσως και υπό συνθήκες μπορεί; :lol:

 

καπως ετσι... και συμφωνω με τον Smirnov γιατι για να την εχουν βαλει , καπου θα χρησιμευει . το οτι δεν μπορεις να ορισεις μια συναρτηση μεσα στην αλλη σε αναγκαζει να βρεις αλλες λυσεις εξισου καλες απλα θελουν περισσοτερο χρονο :fear:

 

---------- Προσθήκη στις 17:14 ---------- Προηγούμενο μήνυμα στις 17:06 ----------

 

>
[color=#0000ff][b]for[/b][/color] ([color=#8000ff]int[/color] i=[color=#ff8000]0[/color]; i<lenX; i++)
{
   [color=#0000ff][b]for[/b][/color] ([color=#8000ff]int[/color] j=[color=#ff8000]0[/color]; j<lenY; j++)
   {
       [color=#0000ff][b]if[/b][/color] (array[i][j] == [color=#ff8000]5[/color])
       {
           [color=#0000ff][b]goto[/b][/color] found;
       }
   }
}

[color=#0000ff][b]return[/b][/color] [color=#ff8000]0[/color];
found:
   printf([color=#a31515]"vrethike"[/color]);
   [color=#0000ff][b]return[/b][/color] [color=#ff8000]1[/color];

 

Offtopic : ειχα μεινει με την εντυπωση οτι στους πινακες με διαφορετικες διαστασεις κανουμε array[z][y][x] και οχι array[x][y][z] ... :fear:

Δημοσ.
καπως ετσι...

και συμφωνω με τον Smirnov γιατι για να την εχουν βαλει , καπου θα χρησιμευει .

 

E, βέβαια....

Εδώ είχε goto η pascal που είναι (ή σωστότερα ήταν) η απόλυτη έκφραση του στρουκτουραλισμού...

 

 

Offtopic : ειχα μεινει με την εντυπωση οτι στους πινακες με διαφορετικες διαστασεις κανουμε array[z][y][x] και οχι array[x][y][z] ... :fear:

 

Όπως θέλεις τους ορίζεις, εξαρτάται από το πώς θεωρείς ότι περιέχουν τα δεδομένα.

Να σου το πω και αλλιώς. Όταν λαμβάνεις ένα στοιχείο, π.χ. Α[n][m], που βρίσκεται στον πίνακα ;

- στην οριζόντια θέση n και κατακόρυφη m ;

- ή στην γραμμή n και στήλη m (που είναι το ανάστροφο του παραπάνω) ;

Πρέπει να επιλέξεις τη σύμβαση.

 

Εκείνο που όμως που πρέπει να θυμάσαι είναι το εξής : να κάνεις την σάρωση πάντα από τον εσωτερικό στον εξωτερικό δείκτη.

Δηλ. αν έχεις ορίσει π.χ. array[z][y][x] καλό είναι να σαρώνεις (δηλ. τα for κλπ) με την σειρά x,y,z κι' όχι το ανάποδο ή στην τύχη. ;)

Δημοσ.
αυτο λεω και εγω και μου εκανε εντυπωση γιατι ο φιλος μας το ειχε γραψει αναποδα

 

Χμμ....δεν κατάλαβες καλά (ή εγώ δεν εκφράστηκα σαφώς).

Ο kagelos σύμφωνα με την παρατήρηση που έγραψα κάνει σωστά την σάρωση:

 

>for (int i=0; i<lenX; i++)
{
   for (int j=0; j<lenY; j++)
   {
       if (array[i][j] == 5)
....

 

O εσωτερικός δείκτης του πίνακα είναι το j και το προσπελαύνει πρώτο, διότι το for j=... είναι πλησιέστερα στον πίνακα (πριν το for i).

Εδώ σαρώνει διαδοχικά όλα τα στοιχεία κάθε γραμμής, δηλ. κατά τις οριζόντιες γραμμές του πίνακα.

Δες το πάλι.

Δημοσ.
Χμμ....δεν κατάλαβες καλά (ή εγώ δεν εκφράστηκα σαφώς).

Ο kagelos σύμφωνα με την παρατήρηση που έγραψα κάνει σωστά την σάρωση:

 

>for (int i=0; i<lenX; i++)
{
   for (int j=0; j<lenY; j++)
   {
       if (array[i][j] == 5)
....

O εσωτερικός δείκτης του πίνακα είναι το j και το προσπελαύνει πρώτο, διότι το for j=... είναι πλησιέστερα στον πίνακα (πριν το for i).

Εδώ σαρώνει διαδοχικά όλα τα στοιχεία κάθε γραμμής, δηλ. κατά τις οριζόντιες γραμμές του πίνακα.

Δες το πάλι.

 

ναι αλλα το lenY ειναι στο εσωτρικο for αρα εχει φτιαξει array[x][y] και ψαχνει 1α το y ενω εγω λεω οτι θα επρεπε να ειχε γραψει array[y][x] και να ψαχνει παλι τον εσωτερικο (που αυτη τη φορα ειναι ο x) ...

 

με λιγα λογια , κατι τετοιο :

 

>
for(i=0;i<=lenY;i++)
  for(j=0;j<=lenX;j++){
     if(array[i][j]==5)
        ;
     }

Δημοσ.
ναι αλλα το lenY ειναι στο εσωτρικο for αρα εχει φτιαξει array[x][y] και ψαχνει 1α το y ενω εγω λεω οτι θα επρεπε να ειχε γραψει array[y][x] και να ψαχνει παλι τον εσωτερικο (που αυτη τη φορα ειναι ο x) ...

 

με λιγα λογια , κατι τετοιο :

 

>
for(i=0;i<=lenY;i++)
  for(j=0;j<=lenX;j++){
     if(array[i][j]==5)
        ;
     }

 

 

Έχεις δίκιο, δεν το πρόσεξα πριν.

Όπως το δίνεις τώρα είναι το σωστό.

Εγώ προηγουμένως είδα μόνον τους δείκτες της σάρωσης - αβλεψία μου....

Δημοσ.

Προσωπικά πιστεύω ότι η goto δεν πρέπει να χρησιμοποιείται αν δεν υπάρχει συγκεκριμένος λόγος. Προσφέρει κάποιες δυνατότητες και για αυτό υπάρχει στις γλώσσες προγραμματισμού, αλλά η χρήση της δημιουργεί κατά βάση κώδικα ο οποίος είναι δύσκολο να διαβαστεί από κάποιον άλλον και κατ' επέκταση να συντηρηθεί, το οποίο είναι σημαντικό για κάποιον επαγγελματία προγραμματιστή. Στις περισσότερες περιπτώσεις η χρήση της goto μπορεί να παρακαμφθεί με τη χρήση συναρτήσεων.

 

Θεωρώ ότι η goto είναι χρήσιμη για low level προγραμματισμό (OS, drivers, κτλ) και για περιπτώσεις όπου η απόδοση ενός αλγορίθμου είναι βασικό ζητούμενο, π.χ. να μπορέσεις να μειώσεις τον αριθμό των loops σε μία function.

Δημοσ.

Η χρήση της goto σε μια συνάρτηση (στη γενική), δείχνει πως η συνάρτηση (function) κάνει περισσότερα πράγματα από όσα πρέπει. Υπάρχουν οπως αναφέρθηκε παραπάνω κάποιες περιπτώσεις που μπορεί (και ίσως πρέπει) να χρησιμοποιηθεί, αλλά στο 99.9% των περιπτώσεων δείχνει τεμπελιά από την πλευρά του προγραμματιστή να δομήσει σωστά τη λογική του, άρα και τον κώδικα που γράφει. Για μια εργασία στη σχολή μπορεί να μην υπάρχει πρόβλημα, αντίθετα, για κώδικα στη δουλειά δεν προτείνεται. Στις μέρες μας, ακόμη και η κληρονομικότητα (inheritance) πλέον δεν προτείνεται στις περισσότερες των περιπτώσεων για χρήση, ασχέτως αν υπάρχει και υποστηρίζεται από τις γλώσσες προγραμματισμού. To ότι υπάρχει ως keyword δε λέει από μονο του κάτι. Και το do-while υπάρχει και θα υπάρχει, αλλά και αυτό σε ελάχιστες περιπτώσεις είναι χρήσιμο. Οπότε φίλε NewProject, εγώ σου προτείνω να το κανεις ΚΑΙ με τους δυο τρόπους, και να μας πεις σε λιγο καιρο απο τωρα, αν τυχει και ασχοληθεις με το ιδιο τμημα του κωδικα, ποιος απο τους δυο σου φαινεται καλυτερος :)

Δημοσ.
Οπότε φίλε NewProject, εγώ σου προτείνω να το κανεις ΚΑΙ με τους δυο τρόπους, και να μας πεις σε λιγο καιρο απο τωρα, αν τυχει και ασχοληθεις με το ιδιο τμημα του κωδικα, ποιος απο τους δυο σου φαινεται καλυτερος :)

 

:-D αυτο ακριβως θα κανω ... δηλαδη οταν τελειωσω αυτο το τμημα θα ποσταρω και θα σας πω αποτελεσματα

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...