Rami / conteggio delle decisioni in un esempio

6

Dopo aver letto SO, trova questa domanda:

if (x > y)
     print (x)
else if (x < y)
     print (y)
else
     print (x,y)

Quanti rami e decisioni ci sono? Si dice che dovrebbero esserci 3 decisioni e 5 rami, ma non riesco a vedere come. Per me posso solo immaginare 4 rami (2 If con due possibili risultati).

Domanda originale qui

    
posta John V 31.01.2013 - 09:43
fonte

3 risposte

0

Studiando questo un po 'di più, ho concluso che la dichiarazione su questo codice con 5 diramazioni non è corretta. Questo codice ha sicuramente solo 4 rami - 4 lati da attraversare. Dato che IF ha sempre due rami (uno per il vero e uno per il falso), con due IF ci sono 4 rami nel codice. Il diagramma di questo caso (IF, ELSE IF, ELSE) è il seguente. Puoi facilmente vedere solo quattro rami:

    
risposta data 01.02.2013 - 11:34
fonte
3
           if
          /  \    < ---- 2 branches
      false true
      else 
       if
      /  \        < ---- 2 branches
   false true
   else 
    |             < ---- 5th and final branch 

come altrimenti parte dà una decisione, è anche un ramo

    
risposta data 31.01.2013 - 09:52
fonte
0

Penso che dipenda un po 'da come definiresti la decisione e il ramo. Da una prospettiva logica direi che ci sono 3 rami, a causa delle 3 chiamate a print . Poiché vengono utilizzati due% diif s, vengono prese due decisioni.

A livello di macchina questo potrebbe sembrare diverso, perché il compilatore genererà codice che potrebbe coinvolgere più rami e decisioni. Ad esempio il compilatore potrebbe generare codice per il test x==y .

    
risposta data 31.01.2013 - 20:42
fonte

Leggi altre domande sui tag