![]() ![]() ![]() | Kontrolstrukturer |
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 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 |
|
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; } | |||
|
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 |
|
|
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.