Algoritme

Fra HTX Arduino
Spring til navigation Spring til 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.

Programmering
Programmeringsbegreber Initialisering - Sekvens - Algoritme - Hexadecimal - Det Binære Talsystem - HEX-fil - ASCII - Interrupt - Events - Styresystem - Autocomplete - Selvstudie Programmering - Hour Of Code - Stepwise Improvement - Syntaks - Prog-links - Microcontroller
Grundlæggende C C float - C double - C-løkker - Datatyper - Konstanter - Regnearter - Funktioner - Return - Returværdi - Rekursion - Semikolon
Variabel Typer boolean - byte - int - unsigned int - word - long - unsigned long - short - float - double - char - unsigned char - string - char array - String - object - Array - 2-dimensionelt Array - void
Program-klassikere Polling - State-machine - Trykknap - Forkant - Bagkant - Prel
Arduino Arduino til Programmering - C til Arduino - Programmering Shield - Arduino PC-software - Arduino Udviklingsmiljø - Arduino Pin Library - Funktion - Arduino Seriel - Arduino String - Arduino String Split - Arduino StateChangeDetection - setup() - loop() - Compilerdirektiver - Asynkron kommunikation - millis() - micros() - Scratch for Arduino - Send fra Arduino til Excel - [[]] - [[]]
Processing Grafik i Processing‎ - Keyboard i Processing - Mus i Processing‎ - Tid i Processing‎ - Draw() - Setup() - Tal Input til Processing - Syntaksfarvning - Kommunikation fra Arduino til Processing - Kommunikation fra Processing til Arduino
javaScript Javascript input‎ - Javascript output‎ - Javascript strukturer‎ - Javascript syntaks‎ - Tid i javaScript - Objekt‎ - AJAX
Serverprogrammering PHP - MySQL - Task Scheduler - WeMOS
PIC JAL - [[]]
Scratch for Arduino S4A Installation - S4A programmering - S4A undervisningsforløb - S4A begrænsninger
Program Dokumentation Algoritme - Flowchart - Pseudokode - Datastruktur - Dataabstraktion - Pulsplaner - Program-kommentar - Teori - Test - UML