Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: [C] Eliminare i goto

  1. #1

    Eliminare i goto

    Salve come mi avete consigliato voi sto cercando di eliminare i goto, purtroppo i batch che facevo mi hanno molto influenzato e il mio uso del goto è spropositato ed orribile, ne ho eliminati altri all'interno, ma gli switch case come li posso far funzionare senza goto? In alcuni casi potrei ma il codice diventerebbe molto più lungo no?
    codice:
    {//variabili
    	switch1:
    	printf("Digita 0 per.. 1 per .. 2 per...");scanf("%d",&a);
    	switch (a) 
    	{case 0:
    		goto filedac;
    	case 1:
    		goto ritorno;
    	case 2:
    		goto modifica;
    	default :
    		goto switch1;}
    	filedac:
    	// fai questo
    	ritorno:
    	//fai questo
    	printf("vuoi fare questo?");
    	goto switch2;
    	modifica:
    	printf("Cosa fare ora?\n");scanf("%d",&b);
    	switch (b)
    	{case 0:
    		goto ritorno;
    	case 1:
    		goto modifica;
    
    	case 2:
    		goto fine;}
    	switch2:
    	printf("cosa fare ora?");scanf("%d",&vuoto);
    	switch (vuoto) 
    	{case 0:
    		goto fine;
    	case 1:
    		goto ritorno;
    	default:
    		goto switch2;}
    	fine:}
    scusatemi se ho postato così tante linee di codice ma vorrei cercare di renderlo più leggibile eliminando i goto

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa ... di quale linguaggio parliamo? Sempre di C? Comunque specificalo nel titolo ...

    Con i linguaggi come il C devi prevedere l'uso di funzioni e procedure (funzioni che non restituiscono valori). Il codice non va pensato tutto in una unica "lista" come in batch ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Chiedo scusa lo avevo letto sul regolamento, sto parlando di [C] dovrei contattare qualcuno per far edit al posto, comunque sto risolvendo con un enorme ciclo while dici che è giusto?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Per i goto che vanno verso l'inizio del programma, sì, utilizza un while ...

    Per i goto usati per selezionare parti di codice, metti il codice in una funzione e chiama la funzione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    ok grazie mille,ho optato per creare un unico enorme switch contenuto in un while, così mi sono risparmiato anche altri switch

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    un mio prof di programmazione diceva sempre: "se gli if iniziano ad essere tanti, la stessa cosa puoi farla in un altro modo".
    In soldoni, uno switch (che non è altro che un if evoluto) enorme è davvero necessario? Stai modellando bene il tuo programma?
    La logica della programmazione (procedurale o ad oggetti) è molto lontana da quella di scripting tipica dei batch o sh.
    Il mio consiglio è visto che a quanto vedo sei all'inizio, rivedi bene la logica che usi e come scrivi il programma.
    RTFM Read That F*** Manual!!!

  7. #7
    Originariamente inviato da fabioowen
    ok grazie mille,ho optato per creare un unico enorme switch contenuto in un while, così mi sono risparmiato anche altri switch
    Hai separato il codice in funzioni diverse o è ancora tutto nel main?
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Per me devi prenderti un bel manuale e iniziare a imparare il C, anche una guida online va bene.
    Per me è a dir poco RIDICOLO presentare uno switch tramite goto (cosa avanzata /deprecata) senza nemmeno sapere la sintassi propria dello switch (cosa base) che sarebbe questa:

    codice:
    case 1:
     <fai questo>
     break;
    case 2:
      <fai questo>
       break;
    ...
    default:
      <fai questo se la scelta non è presente>
       break;
    ...come vedi basta semplicemente mettere dopo i cases le istruzioni a cui punti con goto, se andavi al paragrafo "costrutto switch" di un qualsiasi manuale e avresti capito subito.

    Quindi i casi sono 2:
    -se devi adattare dei batch in C x ragioni tue e poi buttare il C, allora continua pure a postare frammenti come quello e fatti aiutare.
    -se vuoi cambiare stile e imparare a programmare in C cambia strada.

  9. #9
    Hai separato il codice in funzioni diverse o è ancora tutto nel main?
    Certo l'ho separato
    Per me è a dir poco RIDICOLO presentare uno switch tramite goto (cosa avanzata /deprecata) senza nemmeno sapere la sintassi propria dello switch (cosa base) che sarebbe questa:
    Ora l'ho ho capita meglio come struttarla.
    In soldoni, uno switch (che non è altro che un if evoluto) enorme è davvero necessario? Stai modellando bene il tuo programma?
    Se il programma deve fare 7 operazioni e queste sette sono indipendenti le une dalle altre, anche se servono per la stessa cosa credo che un switch sia utile? alla fine è il menù principale che poi indirizza ad altre funzioni.
    se vuoi cambiare stile e imparare a programmare in C cambia strada.
    E' il mio primo programma in [C] con più di 10 linee, mi sono procurato un manuale da un amico si chiama qualcosa tipo "Sh int" appena me lo passa lo studio per bene.
    Grazie a Oregon per i consigli, li ho sfruttati, grazie anche a voi per le critiche costruttive

  10. #10
    Magari posta l'intero programma com'è ora che vediamo se c'è qualche altro "batch-ismo" da rimuovere.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.