Thema indholdsfortegnelse -- Tastaturgenvej: 'u'  Forrige tema i denne lektion -- Tastaturgenvej: 'p'  Næste slide i denne lektion -- Tastaturgenvej: 'n'Kontrolstrukturer
5.  Kontrolstrukturer - Motivation og Oversigt

I dette og de følgende afsnit vil vi - vigtigst af alt - møde forgreninger og løkker. Sådanne kaldes kontrolstrukturer, fordi vi med disse kan kontrollere måden hvorpå 'programpegepinden' bevæger sig rundt i programmet. Vi vil også diskutere sekvens og sammensætning.

5.1 Oversigt over kommandoer5.3 Oversigt over konstrolstrukturer
5.2 Motivation: Primitiv kontrol med hop
 

5.1.  Oversigt over kommandoer
Indhold   Op Forrige Næste   Slide Aggregerede slides    Stikord Programindeks Opgaveindeks 

Vi har i de forrige afsnit mødt forskellige kommandoer, som opsummeres herunder. Kontrolstrukturerne, som er fokus i dette og efterfølgende afnit, virker på kommandoer. Med andre ord, kontrolstrukturerne angiver hvorledes en række kommandoer udføres i forhold til hinanden.

Vi starter med en oversigt over de kommandoer vi har mødt indtil nu

  • Assignments

    • Udtryk med en assignment operator efterfulgt af semicolon

  • Printf og scanf kommandoerne

    • Disse er reelt funktionskald efterfulgt af semicolon

  • Den tomme kommando

    • Blot et semicolon

 

5.2.  Motivation: Primitiv kontrol med hop
Indhold   Op Forrige Næste   Slide Aggregerede slides    Stikord Programindeks Opgaveindeks 

Vi vil motivere os selv for at studere moderne kontrolstrukturer ved at se på en primitiv kontrolstyring med goto kommandoen.

En goto kommando tillader hop fra ét sted i programmet til et andet.

Programmer med goto kommandoer kan være meget vanskelige af forstå.

Nedenstående program tildeler værdien 2 til variablen pos (og res bliver j) hvis i er mindre eller lig med j. Hvis i er større end j tildeles pos værdien 1, og res bliver i. De blå programdele i program 5.1 kaldes for labels.

Det er forholdsvis svært at følge kontrolforløbet af selv dette simple program, som bruger betinget og ubetinget flytning af kontrolpunktet med goto kommandoer. Vi vender tilbage til en meget bedre udgave af program 5.1 i program 8.2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main(void) {

  int i, j, pos, res;
  printf("Enter two integers: ");
  scanf("%d %d", &i, &j);

  if (i <= j) goto p1;
  pos = 1; res = i;
  goto p2;
  p1: pos = 2; res = j;

  p2: printf("pos: %d, res: %d\n", pos, res);
  
  return 0;
}
Program 5.1    Et helt C program med to goto kommandoer.

I næsten alle programmeringssituationer anbefales det at bruge kontrolstrukturer i stedet for goto kommandoer

Goto kommandoer er kun acceptable i undtagelsessituationer, eksempelvis for at komme ud af en 'dyb løkke'.

 

5.3.  Oversigt over konstrolstrukturer
Indhold   Op Forrige Næste   Slide Aggregerede slides    Stikord Programindeks Opgaveindeks 

Inden for kaster os over detaljerede kontrolstrukturer giver vi en oversigt over forskellige slags kontrolstrukturer.

De grundlæggende kontrolstrukturer kan klassificeres som sekventielle, sammensættende, udvælgende og gentagende

En kontrolstruktur styrer og kontrollerer rækkefølgen af udførelsen af et antal kommandoer

  • Sekventiel kontrol

    • Kommandoer følger efter hinanden i den angivne rækkefølge

    • kommando1; kommando2;

  • Sammensætning

    • En antal kommandoer sammensættes til én enkelt kommando

    • {kommando1; kommando2;}

  • Udvælgelse

    • Én kommando udvælges blandt flere mulige.

    • Udvælgelsen foretages typisk ud fra værdien af et logisk udtryk.

    • if (logiskUdtryk) kommando1; else kommando2;

  • Gentagelse

    • En kommando gentages et antal gange.

    • Antallet af gentagelser styres typisk af et logisk udtryk

    • while (logiskUdtryk) kommando;

Som sagt er udvælgende og gentagende kontrolstrukturer meget vigtige for langt de fleste af de programmer vi skriver. Sekventiel kontrol medtages for at få et komplet billede. Sammensætning kaldes også undertiden for aggregering. Det at sammensætte dele til helheder vil vi se i mange forskellige sammenhænge.

Genereret: Onsdag 7. Juli 2010, 15:10:23
Thema indholdsfortegnelse -- Tastaturgenvej: 'u'  Forrige tema i denne lektion -- Tastaturgenvej: 'p'  Næste slide i denne lektion -- Tastaturgenvej: 'n'