C programmering :: Kontrolstrukturer

while og do-while

og i kildetekst bliver det til:

1 /* while.c - Kontrolstruktur */ 2 3 #include <stdio.h> 4 5 #define FALSE 0 6 #define TRUE 1 7 8 main() 9 { 10 int Start=3; 11 int Slut=20; 12 int i,j,erPrimtal; 13 i=Start; 14 while (i < Slut) 15 { 16 j = i-1; 17 erPrimtal = TRUE; 18 while (j > 1) 19 { 20 if (i % j == 0) 21 { 22 erPrimtal = FALSE; 23 break; 24 } 25 j--; 26 } 27 if (erPrimtal) 28 { 29 printf("%d er primtal\n",i); 30 } 31 i++; 32 } 33 }
  • indtast programmet eller download og gem på filen while.c
  • compiler og kør programmet med:
# gcc while.c # ./a.out 3 er primtal 5 er primtal 7 er primtal 11 er primtal 13 er primtal 17 er primtal 19 er primtal #

Programlinier:

10-13 Definerer variabler og initialiserer værdier.
14 Start på while-løkken der gentager sætningerne i blokken {} i linierne 15-32. Betingelsen er at i er mindre end Slut for gentagelsen.
16-17 Sætter variblers startværdier før den næste indre while-løkke.
18 Start på næste niveau af en while-løkke, der gentager sætningerne i blokken i linierne 19-26.
20 Test om i kan deles med j. Operatoren % kaldes modulos og giver rest ved divisionen i/j. F.eks. 2/3 giver rest 2, 3/3 giver 0, 4/3 giver 1 i rest o.s.v. Hvis rest giver 0 kan i deles med j og sætninger i blokken linie 21-24 udføres.
22 Sæt erPrimtal til falsk.
23 Afbryd den inderste løkke med break, der er ingen grund at forsøge med flere værdier af j. break tvinger programmet til at springe ud af løkken og fortsætte i linie 27.
25 Mindsk j med 1 til næste divisor.
26 Slut på whileblok spring til starten på while-betingelsen i linie 18.
27-30 Udskriv hvis det var et primtal.
31 Øg værdien af i med 1 til næste test.
32 Slut på whileblok spring til starten på while-betingelsen i linie 14.

Vi kan bruge break og continue til at lave brud i løkken. Typisk anvendelse er at du i en while eller do-while placerer en if med en betingelse der laver brudet:

while (betingelse)
{
...sætninger
  if (betingelse)
  {
    break;
  }
}
...break springer hertil

I eksemplet fra while.c programmet har en while indlejret i en while, to niveauer en ydre og indre niveau. Den break er i den inderste while-blok og springer derfor kun ud af den inderste while-blok, ikke den yderste.

Med continue springer eksekveringen til den tilhørende while's betingelse, dvs. den springer altså ikke ud af løkken, den starter påny med testen af betingelsen.

while (betingelse) ...continue springer hertil
{
...sætninger
  if (betingelse)
  {
    continue;
  }
}

og hvis det er med do-while springer eksekveringen stadig til while-betingelse som er placeret i bunden af denne kontrolstruktur.

 

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 Den, der er bidt af en slange, er bange for selv skyggen af et reb.

Arabisk ordsprog



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