C programmering :: Kontrolstrukturer

switch - Multi-forgrening

Kildeteksten:

1 /* switch.c - Kontrolstruktur */ 2 3 #include <stdio.h> 4 5 main() 6 { 7 int nCifre=0,nWhite=0,nAndre=0; 8 char c; 9 10 while ((c = getchar()) != '\n') { 11 switch (c) { 12 case '0': 13 case '1': 14 case '2': 15 case '3': 16 case '4': 17 case '5': 18 case '6': 19 case '7': 20 case '8': 21 case '9': 22 nCifre++; 23 break; 24 case '\t': 25 case ' ': 26 nWhite++; 27 break; 28 default: 29 nAndre++; 30 } 31 } 32 printf("Antal cifre = %d\n",nCifre); 33 printf("Antal white space = %d\n",nWhite); 34 printf("Antal andre tegn = %d\n",nAndre); 35 36 }
  • indtast programmet eller download og gem på filen switch.c
  • compiler og kør programmet med:
# gcc switch.c # ./a.out 0 1a2 Antal cifre = 3 Antal white space = 2 Antal andre tegn = 1 #

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.

 

Ressourcer C Library opslag The Single UNIX® Specification, Version 2 Copyright © 1997 The Open Group GNU C Library Engelsk, med masser af gode og dybe artikler. Danske søgeord Find selv de bedste danske søgeord til din hjemmeside.
Produkter Bookingsystem
System for reservation af tid for behandlinger, aftaler, lokaler, udstyr, personale. Tilpasset lektionstimer. Udskriver arbejdsplaner og ugeskema for opslag. Statistik. Danmarks bedste pris nu kun kr. 1.695,-
HelpdeskEffektiviser din support-organisation med et Helpdesksystem. Fjern tidrøvere der forhindrer fokus på problemløsning. Lektionsplan Formidling af generelle information og specifikke lektioner fra undervisere til studerende/elever. Medlemssystem Medlemssystem online med administration af medlemskartotek, kontingentbetalinger, flettefiler m.m.
Styr selv Styr selv indholdet på dine hjemmesider med Content Management System.
Citat Samvittighed er en svigermor, hvis besøg aldrig hører op.

H. L. Mencken



Professionelle løsninger til Internettet. Webdesign, e-handel, cms, søgeoptimering, webhotel, analyse, Intranet mm.