Jeg er for 4 uger siden begyndt på universitet, hvor jeg første semester har et fag der hedder "Digitale Repræsentationer". Målet med faget er at blive i stand til at kode i Actionscript 3.0. I første omgang er vi igang med at lære pseudokode og hvordan det skal opbygges. Jeg er derfor ved at lave en pseudokode for et digitalt ur med dato og vækkeursfunktion. Opgaven er beskrevet sådan her: "en algoritme der opdaterer en clockradios ur. Algoritmen for clockradioen modtager et signal hvert minut når tiden skal opdateres." Indtil videre har jeg kun gjort et forsøg med selve uret, altså tid og dato. Det ser sådan her ud:
En algoritme for en Clockradio med vækkeursfunktion.
TIME: READ time WHILE (secondcount is between 0 and 58) keep counting seconds ENDWHILE IF (secondcount) is 59 THEN OUTPUT increase (minutecount) by one and reset (secondcount) IF (minutecount) is 60 after increase THEN OUTPUT increase (hourcount) by one and reset (minutecount) ENDIF
DATE: READ time WHILE time is between 00:01 and 23:59 Dont change datecount ENDWHILE While time goes increases from 23:59 to 00:00 increase date by one ENDWHILE
Jeg ved ikke om koden er præcis nok, og og den er så utvetydig som den skal være. Skal koden være i ét, eller kan jeg godt dele den op?
Vi er kun lige blevet introduceret til begrebet "pseudokode", og jeg har aldrig arbejdet med det før. Er jeg på rette spor? Hvad ville du lave om? Den skal være god og præcis, men selvfølgelig stadig på det niveau hvor jeg nu er (meget lavt).
Håber der er en flink programmerinskyndig, som vil give mig et godt råd eller to :)
Der er ingen "korrekt" syntax ved pseudokode, men nærmere guidelines som kan fortolkes af den enkelte. Pseudokode er skabt for at man kan lave funktioner/algoritmer uden helt at kode, men samtidig tænke i kode/algoritmetermer. Man kan lidt kalde det brainstorming på kodeform eller flowcharts på kodeform.
Grunden til at der på mange uddannelser bruges pseudokode er at få eleven til at tænke i kodetermer, da størstedelen af kodearbejdet ligger i idéen og tankerne bag koden. Koden er blot tilvejebringelse af idéen.
Om det du har lavet er rigtigt eller forkert afhænger IMO af om du (eller hvis en anden skal lave den "rigtige" kode) kan lave den "rigtige" kode med pseudokoden som "opskrift".
Tillige, kutymen er at lave indrykninger, så at meatware (altså mennesker :-) finder det nemmere at følge i softwaren (så kan man nemt, se hvor langt en logisk blok rækker):
TIME: READ time WHILE (secondcount is between 0 and 58) keep counting seconds ENDWHILE IF (secondcount) is 59 THEN OUTPUT increase (minutecount) by one and reset (secondcount) ??? IF (minutecount) is 60 after increase THEN OUTPUT increase (hourcount) by one and reset (minutecount) ENDIF
DATE: READ time WHILE time is between 00:01 and 23:59 Dont change datecount ENDWHILE While time goes increases from 23:59 to 00:00 increase date by o ENDWHILE
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.