Exercises in this lecture   Go to the notes, in which this exercise belongs -- Keyboard shortcut: 'u'   Alphabetic index   Course home   

Exercise solution 3.2
Omformning af if til switch


Programmet beror på den skjulte forudsætning, at procent tallet er mellem 0 og 100. Hvis dette holder, kan man ikke få 0. Hvis man derimod giver programmet et negativt procenttal får man 0. Hvis vi tester tilfældene i omvendt rækkefølge vil programmet ikke virke.

Programmet vil nok være mere klart hvis vi eksplicit tester på intervaller:

  if (procent >= i) && (procent < j) ...;

En Java switch kontrolstruktur udvælger et bestemt tilfælde ud fra et tabelopslag på basis af et heltal eller tegn. Man kan principielt skrive en en switch med 101 tilfælde, som slår karakteren op af procenttallende 100, 99, 98, ..., 0. Dette ville dog være et tåbeligt program, og hvis sproget er implementeret på en uheldig måde, vil den underliggende tabel (hvori der slås op) blive alt for stor. Bedre ville det være at omregne procenttallet p til en størrelse, der kunne bruges som selektor i en switch; Men med denne omregning har vi reelt løst problemet - så det er heller ikke løsningen.

I dette eksempel er det ikke oplagt at bruge en switch kontrolstruktur. Generelt kan vi observere, at en if-then-else kæde er 'mere kraft- og udtryksfuld' end en switch. Det hænger på at switch blot slå op i en underliggende tabel af muligheder, hvorimod en if-then-else kæde gennemfører en række successive tests med vilkårligt komplicerede logiske udtryk