Our website is made possible by displaying online advertisements to our visitors.
Please consider supporting us by disabling your ad blocker.

Responsive image


Strukturerad programmering

Strukturerad programmering är ett programmeringsparadigm som strävar efter att koden ska ha avskilda kodblock. Ofta gör man detta genom att undvika explicita GOTO-satser. Istället använder man endast de strukturerade kontrollflödes-mekanismerna som det använda programspråket erbjuder. Därmed undviks de problem som ostrukturerad spagettikod leder till. Många moderna programspråk omöjliggör ostrukturerad programmering genom att helt enkelt inte erbjuda någon explict GOTO-sats. Observera att det går att programmera strukturerat även när man använder GOTO. I assemblerkod gör man det genom att skicka med en returadress när man hoppar till en subrutin, och när subrutinen är klar hoppar programmet tillbaka till det ställe det var när subrutinen användes. Här är ett exempel i MIPS:

print_helloworld: # Subrutin för att skriva ut strängen "Hello World!"
   .data
helloworldstr:
   .asciiz "Hello World!\n"

   .text

   la $a0, helloworldstr
   li $v0, 4
   syscall

   jr $ra        # Här är en av två rader som gör programmet strukturerat. När subrutinen anropas av main sparas 
                 # först returadressen i $ra så att programmet kan hoppa tillbaka till exakt samma adress som hoppet kom ifrån.

main:
   .data
firststr:
   .ascii "När denna strängen skrivits ut gör vi ett strukturerat hopp till " 
   .asciiz "en subrutin som skriver ut Hello world!\n"
secondstr:
   .ascii "Nu fortsätter vi på instruktionen precis efter att vi anropade subrutinen.\n"

   .text

   la $a0, firststr           # Dessa tre rader skriver ut den första strängen
   li $v0, 4
   syscall

   jal print_helloworld      # Här anropas subrutinen, men adressen till nästa instruktion sparas i register $ra

   la $a0, secondstr         # Dessa tre rader skriver ut den andra strängen.
   li $v0, 4
   syscall

Previous Page Next Page