Algoritme

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

Hvad er en Algoritme?

En algoritme er en opskrift, en beskrivelse af en måde at gøre noget på, en metode, eller hvad man vil kalde det.

Algoritmer indeholder tit en eller anden form for gentagelse, og skal normalt også have en betingelse på hvornår skal algoritmen afsluttes.

Opstilling af algoritme

Det er vigtigt at man beskriver sin algoritme så præcist at man kan programmere den.

En algoritme kan altså ikke beskrives som "Prøv dig frem"

En algoritme skal beskrives så entydigt at man kan teste den i hånden før man programmerer den, og man skal kunne se om den virker som den skal.

Eksempel på en algoritme

En algoritme til at veje med en gammeldags balancevægt kunne beskrives som følger:

Placer det man ønsker at veje i den ene vægtskål
Find det største lod man har

Bliv ved med at
    Placer det fundne lod i den anden vægtskål
    hvis vægten vipper over, så
        fjern det sidst placerede lod
        find det næste mindre lod
    ellers
        find det næste mindre lod
indtil man har prøvet helt ned til det mindste lod man har

læg alle loddernes værdi sammen

Hvis man tester denne algoritme, så vil man se at den kun fungerer til alle mulige vejninger, hvis de lodder man har er netop halveringer af hinanden (8kg, 4kg, 2kg, 1kg, ½kg osv.) - hvis det derimod var lodder som 10kg, 5kg, 2kg, 1kg, 500g, 200g, 100g, 50g, 20g, 10g, 5g, 2g, 1g - så ville man ikke kunne veje en ukendt vægt mellem 9 og 10kg, da man ville komme frem til resultatet 8,888 kg. (prøv selv med 9,5 kg).

Det betyder at algoritmen nok skal skrives om, hvis man skal bruge disse lodder, og det vil betyde at man skal have flere lodder (2 stk af hver på 2kg, 200g, 20g og 2g).

Dokumentation af en algoritme

Normalt vil man dokumentere sine algoritmer som flowcharts.

Som det kan ses, så kan man også dokumentere en algoritme i forståeligt hverdagssprog, og den metode der er anvendt er faktisk pseudokode, der er enkelt at oversætte til programkode, men som også har den fordel, at det er uafhængigt af hvilket programsprog man vil lave det i.