C programmering :: Kontrolstrukturer
switch - Multi-forgrening
Kildeteksten:
- indtast programmet eller download og gem på filen switch.c
- compiler og kør programmet med:
Programlinier:
10 | Indleder en løkke. I betingelsen ligger sammenligningen forskellig fra (relationeloperator !=) '\n'. '\n' er linieskift dvs. løkken forsætter sålænge resultatet fra funktionen getchar() ikke er et linieskift. I udtrykket (c = getchar) ligger en af de fine detaljer i C idet der også sker en tildeling af funktionsresultatet fra getchar() til c variablen. Funktionen getchar() venter på et tastetryk fra brugeren og returnerer tegnet der tastes. |
11 | Start på switch kontrolstrukturen. Variablen c evalueres. I parantesen er et udtryk, ikke en betingelse, bare et udtryk. Dvs. at udtrykket ikke bare skal være sand/falsk, udtrykket skal give flere værdier. |
12-21 | Hvis c er identisk med tegnene '0' til '9' leder vi udførelsen af sætningerne 22-23. |
22 | Udføres hvis c er et af tegnene '0'-'9'. ++ efter variablen nCifre kaldes en vækstoperator og bevirker at nCifre øges med 1. |
23 | Kommandoen break er en del af kontrolstrukturen for switch og andre kontrolstrukturer, og for switch betyder det at flowet i programmet ikke skal forsætte i de andre forgreninger af kode til swich. Det er vigtigt at huske break, jeg har glemt den adskillige gange og resultatet bliver at programflowet forsætter i den næste forgrening uanset om der er en match på de i case stillede betingelser. |
24-25 | Hvis c er identisk med tegnene '\t' hvilket er notationen for tabulator og ' ' (mellemrum) så udføres sætningerne 26-27. |
26 | Øger vi antal såkaldte white-space tegn. |
28 | Hvis c ikke kan opfyldes af nogen case betingelse havner vi her |
29 | Øger antal andre tegn. Bemærk at der ikke er nogen break. Da det er den sidste forgrening er der ikke noget behov, men på den anden side det er ingen skade sket ved at sætte den ind. |
32- | Efter while løkken udskrives resultatet af optællingerne. |