Codice con switch

di il
32 risposte

32 Risposte - Pagina 2

  • Re: Codice con switch

    andbin ha scritto:



    wd settato inizialmente a 0.

    4 cicli:
    - per "sun" fa wd -=1;
    - per "mon" fa wd++; E wd+=2;
    - per "wed" fa wd+=2;
    - per "sat" fa wd -=1;
    Quindi "sat" essendo vuoto prende il valore del case successivo giusto? Invece "mon" dove lo prende wd+=2?
  • Re: Codice con switch

    maracaibo25 ha scritto:


    Quindi "sat" essendo vuoto prende il valore del case successivo giusto? Invece "mon" dove lo prende wd+=2?
    Ma allora 'sto fall-through non l'hai proprio ancora capito (?)
  • Re: Codice con switch

    Che non ci siano istruzioni non importa, è il break che non c'è.

    Ma davvero non comprendi ancora?
  • Re: Codice con switch

    Ragazzi non so che dirvi a me sembra un concetto abbastanza facile quello del fall-through (premetto che al corso il prof non ce lo ha mai accennato)
    ma forse non è cosi,oppure sono io che non ci arrivo e la cosa mi fa arrabbiare,ho visto anche se cè qualcosa online a riguardo ma niente,sto codice mi è rimasto indigesto e credo che me l'abbiate spiegato nella maniera piu semplice
  • Re: Codice con switch

    Scusa ma cosa c'è da capire ancora?
  • Re: Codice con switch

    maracaibo25 ha scritto:


    Ragazzi non so che dirvi a me sembra un concetto abbastanza facile quello del fall-through (premetto che al corso il prof non ce lo ha mai accennato)
    ma forse non è cosi
    Vediamo quindi se hai capito (o no):

    switch scritto al volo (e che non ha utilità pratica se non questa di verifica):
    switch (num) {
    case 0:
    case 2:
    case 4:
        System.out.println("A");
    default:
        System.out.println("D");
    case 1:
    case 3:
    case 5:
        System.out.println("B");
        break;
    case -1:
        System.out.println("N");
    }
    Cosa succede quando num vale 2?
    Cosa succede quando num vale 5?
    Cosa succede quando num vale 8?
  • Re: Codice con switch

    Allora se num vale 2 stampa "A"
    se vale 5 stampa"B"
    se vale 8 stampa"D"
  • Re: Codice con switch

    maracaibo25 ha scritto:


    Allora se num vale 2 stampa "A"
    se vale 5 stampa"B"
    se vale 8 stampa"D"
    Ok ... non hai compreso il fall-through
  • Re: Codice con switch

    Me lo rispieghi su questo codice gentilmente
    grazie per la pazienza
  • Re: Codice con switch

    maracaibo25 ha scritto:


    Me lo rispieghi su questo codice gentilmente
    grazie per la pazienza
    Allora: un case (idem il default) è solamente un punto di "ingresso". Una volta individuato il punto di ingresso il codice fluisce verso il basso fino a che c'è qualcosa che fa uscire dallo switch. Può essere un break ma anche qualcosa di più drastico che fa terminare lo switch e potenzialmente anche qualcosa più a monte (es. il metodo) come un return o un throw.

    Quindi: c'è un case con 2? Sì, bene è questo il punto di ingresso. Ora, gli altri case/default è come se non ci fossero più. E quindi procede facendo:

    System.out.println("A");
    System.out.println("D");
    System.out.println("B");
    poi incontra il break che termina lo switch.

    Il fatto che è passato ANCHE sui case 4/default/case 1/case 3/case 5 QUESTO è concettualmente il fall-through. Ma è perché non c'è niente che fa terminare prima lo switch, se non arrivando a quel break prima del case -1.

    Tutto qui.

    Quindi: con 5? con 8?
  • Re: Codice con switch

    Con 5 farà System.out.println("B"); e termina con il break
    con 8 invece non cè nessun case "d'ingresso" dunque va nel case di default andando a fare:
    System.out.println("D");
    System.out.println("B");
    e terminare nuovamente con il break
  • Re: Codice con switch

    maracaibo25 ha scritto:


    Con 5 farà System.out.println("B"); e termina con il break
    Sì (è un caso semplice in effetti)

    maracaibo25 ha scritto:


    con 8 invece non cè nessun case "d'ingresso" dunque va nel case di default andando a fare:
    System.out.println("D");
    System.out.println("B");
    e terminare nuovamente con il break
    Sì.

    E quindi ... hai capito il fall-through

    P.S. ora riprova con quell'array/switch dell'inizio con il wd
  • Re: Codice con switch

    Ok ok ci sono andbin grazie
    in pratica i due punti d'uscita dello switch sono il break e la } alla fine ho capito
    spero di ricordarmelo in furturo adesso
  • Re: Codice con switch

    >>> w = 0
    >>> arr = [-1,1+2,2,-1]
    >>> for el in arr:
    ...     w += el
    ... 
    >>> w
    3
    
    Se sostituisci i giorni con i valori hai
  • Re: Codice con switch

    Ma che è, Python?
Devi accedere o registrarti per scrivere nel forum
32 risposte