Hvis du er programmør, ved du, at det ofte kan være en tidskrævende og proces med fejl at skrive kode. Det kan være lige så frustrerende som tilfredsstillende at finde ud af, hvordan du får dit program eller din webapplikation til at gøre, hvad du ønsker, og derefter forklare det til andre, f.eks. dit team eller dine aktionærer.
Det er her, pseudokode kommer ind i billedet.
Pseudokode er en måde at repræsentere kode på ved hjælp af en kombination af et simpelt, naturligt sprog og elementer fra programmeringssprog. Uanset om du lige er begyndt i programmeringsverdenen eller er en erfaren professionel, er forståelse af pseudokode et tidsbesparende trick, som du til enhver tid kan integrere i din proces.
I denne artikel vil vi dykke ned i, hvad pseudokode er, hvordan det bruges, og hvorfor det er et vigtigt værktøj for enhver udvikler.
Lad os dykke ned med det samme.
Hvad er pseudokode?
Pseudokode er en måde at repræsentere kode, såsom algoritmer, funktioner og andre processer, ved hjælp af en kombination af naturlige sprog og programmeringssproglignende elementer.
Det kaldes “pseudokode”, fordi det faktisk ikke er eksekverbar. I stedet er det en måde, hvorpå mennesker kan forstå og planlægge logikken i kodning – for at beskrive et programs trin på en måde, der er let at forstå for mennesker, samtidig med at den er detaljeret nok til hurtigt at kunne konverteres til et specifikt programmeringssprog.
Her er et simpelt eksempel på pseudokode, hvor vi udarbejder den grundlæggende logik til at hilse på en besøgende ved navn, når vedkommende navigerer til vores websted eller app:
PROCESS GreetUser
INPUT userName
DISPLAY "Hello, " + userName + "!"
END
Som du kan se, er ovenstående pseudokode ikke skrevet med syntaks fra noget egentligt sprog eller rammeværk. I stedet bruges der enkle, universelt forståelige sprog- og programmeringselementer – som PROCESS
, DISPLAY
og +
– som syntaks, hvilket gør det nemt for alle at følge.
Det er en af styrkerne ved at skrive pseudokode: Ved at lægge kodens hensigter ud i en fælles syntaks kan man springe alle programmerings- og sproglige barrierer over, der er baseret på færdigheder. Vi vil tale mere om dette i næste afsnit.
Fordele ved at skrive pseudokode
En af de største fordele ved pseudokode er, at det giver udviklere mulighed for at skitsere deres kode uden at blive fanget i syntaksen og strukturen i et bestemt sprog. Det gør det lettere at opdage fejl i et programs eller en funktions logik, alt sammen uden at skulle skrive eller fejlfinde egentlig kode.
Desuden kan pseudokode nemt tilpasses til forskellige programmeringssprog, hvilket gør det til et nyttigt værktøj for udviklere, der er fortrolige med flere sprog og har brug for at oversætte deres idéer mellem dem. Forestil dig at kunne forklare dit Node.js-script til en Laravel-udvikler! Dette kan især være nyttigt for teams, der arbejder på et projekt sammen, da pseudokode kan bruges som et fælles sprog til at kommunikere idéer og funktioner.
Her er de vigtigste fordele, som pseudokode kan give udviklere, både nybegyndere og erfarne:
- Forbedret effektivitet: Ved at skrive trinene i en proces ud i pseudokode kan udviklere spare tid ved at planlægge deres kode, før de dykker ned i detaljerne eller syntaksen i et specifikt programmeringssprog. Dette kan hjælpe programmører med at undgå fejl og reducere behovet for fejlfinding.
- Nemmere at læse: Da pseudokode er skrevet så enkelt, at alle kan forstå det, gør det det lettere for udviklere at læse og forstå kode, især hvis de arbejder sammen med et team eller skal gennemgå gammel kode igen.
- Større fleksibilitet: Fordi pseudokode ikke er bundet til et bestemt programmeringssprog, kan det nemt tilpasses til forskellige sprog. Det gør det til et nyttigt værktøj for udviklere, der er fortrolige med flere sprog og har brug for at oversætte deres idéer mellem dem.
- Forbedret samarbejde: Pseudokode kan bruges som et fælles sprog for et team af udviklere til at kommunikere og samarbejde om et projekt. Dette kan især være nyttigt for teams, der arbejder sammen på et projekt, da pseudokode giver udviklerne mulighed for at kommunikere deres idéer klart og præcist.
- Lokal styring: Fordi det ikke er eksekverbart, skal din pseudokode ikke hostes online eller forbindes med eksterne scripts, som en fuldgyldig app ville gøre. Den kan oprettes og gemmes i en fil på din lokale maskine, i en Cloud-fil eller endda kopieres i en e-mail.
Derudover er det nemt at skrive pseudokode på ethvert tidspunkt i din udviklingsproces. Selv hvis du aldrig har brugt det før, kan du begynde lige nu – uanset hvor du befinder dig i din kodningsfremskridt – og straks få de fordele, der er beskrevet ovenfor, med det samme.
Almindelige brugssituationer for pseudokode
På grund af pseudokode’s iboende fleksibilitet er der masser af anvendelsesmuligheder for pseudokode – også uden for programmeringsområdet.
Her er flere almindelige anvendelsesmuligheder for udviklere:
- Planlægning og design af processer: Pseudokode kan bruges til at planlægge trinene i en proces, funktion eller algoritme, så udviklerne kan gennemtænke logikken og sikre, at den er korrekt, før den implementeres i et specifikt programmeringssprog.
- Formidling af idéer til ikke-tekniske interessenter: Pseudokode kan bruges til klart at forklare trinene i en proces eller algoritme til ikke-tekniske interessenter, f.eks. projektledere eller kunder, på en måde, så de nemt kan forstå konceptet.
- Samarbejde med et team: Pseudokode kan bruges som et fælles sprog for et team af udviklere til at kommunikere og samarbejde om et projekt, uanset deres individuelle ekspertise inden for programmering.
- Tilpasning af kode til forskellige programmeringssprog: Fordi pseudokode ikke er bundet til et bestemt programmerings- eller scriptingsprog, kan den hurtigt og nemt tilpasses og oversættes til forskellige sprog. Dette er især nyttigt for udviklere og teams, der arbejder med flere sprog.
- Undervisning i programmeringsbegreber: Pseudokode kan være et nyttigt redskab til undervisning i de grundlæggende programmeringsbegreber, da det giver eleverne mulighed for at fokusere på logikken og strukturen i et program uden at gå i stå med syntaks.
Dette er blot nogle få eksempler; der findes mange flere. Mulighederne for at anvende pseudokode til din fordel er næsten ubegrænsede.
Sådan skriver du pseudokode
Der er ikke én rigtig måde at skrive pseudokode på. Den samme mangel på specifik syntaks, der gør den så fleksibel, er netop det, der udelukker, at den har nogen særlige syntaksregler.
Mens nogle sprog som Pascal og Basic tilbyder syntaks-specifikke retningslinjer for pseudokode, kan du faktisk skrive pseudokode ved hjælp af enhver terminologi, du ønsker, så længe dine termer er allestedsnærværende og logikken er til at følge.
Når det er sagt, er der nogle grundlæggende trin og retningslinjer for pseudokode, som de fleste udviklere overholder. Vi vil dykke ned i disse som det næste.
Skridt til at skrive pseudokode
Her er nogle generelle trin, du kan følge for at skrive god pseudokode:
- Åbn din teksteditor: Pseudokode skrives oftest i en tekst- eller HTML-editor, Du kan vælge din favorit og åbne en ny fil.
- Definer dit mål: Bestem formålet med dit program eller din funktion. Hvad vil du have det til at gøre?
- Opdel det i dele: Opdel problemet i mindre, mere overskuelige dele. Det kan hjælpe dig med at tænke mere klart over problemet og gøre det lettere at arrangere delene, så de fungerer hvor og hvornår de skal.
- Organiser det i trin: Skriv trinene i dit program ud i logisk rækkefølge. Brug et naturligt sprog, og undgå at bruge specifikke programmeringskonstruktioner eller metoder som f.eks. kontrolstrukturer eller typecasting.
- Indryk dine linjer: Brug indrykning for at vise strukturen i dit program. Du kan f.eks. indrykke de kodelinjer, der hører til inden for en loop.
- Test det: Test din pseudokode for at sikre, at den er klar og logisk. Det kan du gøre ved at gennemgå det mundtligt eller ved at få en anden person til at læse det og rapportere tilbage til dig, hvad vedkommende mener, at pseudokoden skal gøre.
Når din pseudokode er skrevet, skal du oversætte den til et eksekverbart script. Du kan øve dig i dette uden for dine projekter ved at bidrage til open source Git-repositories, tage kodeudfordringer op og stille/besvare spørgsmål på StackOverflow eller i dit udviklingsfællesskab.
Pseudokode-konstruktioner
På trods af pseudokodes mangel på en defineret syntaks er der flere almindelige programmeringskonstruktioner, som udviklere ofte bruger, når de skriver pseudokode. Lad os tage et kig på hver enkelt.
Sekvenser
En sekvens er en gruppe af instruktioner, der udføres i en bestemt rækkefølge. De bruges til at udføre eller gentage en række enkle handlinger. Nogle velkendte sekvenskommandoer, der ofte anvendes i pseudokode, omfatter INPUT
, SET
, PRINT
, READ
, DISPLAY
, SHOW
og CALCULATE
.
Her er et eksempel på pseudokode, der anvender nogle af disse kommandoer:
PROCESS CalculateCost
INPUT price, quantity
SET cost = price * quantity
PRINT "The cost is: " + cost
END
Denne pseudokode definerer en proces kaldet CalculateCost, der indhenter en pris og en mængde, multiplicerer dem sammen for at beregne omkostningerne og derefter viser resultatet.
Betingelser
Med betingede udsagn kan et program træffe beslutninger baseret på bestemte betingelser og derefter styre programmet til at udføre bestemte udsagn, hvis en betingelse er opfyldt (eller ikke opfyldt). IF-ELSE
, IF-IF ELSE-ELSE
, og CASE
-sætninger anvendes ofte i pseudokode.
Her er et eksempel, der viser et IF-ELSE
script i pseudokode:
IF user = returning
PRINT "Welcome back!"
ELSE
PRINT "Welcome!"
I ovenstående eksempel beskriver vi en proces, der viser en “Velkommen tilbage!”-meddelelse til brugere, der har besøgt siden tidligere, men kun viser “Velkommen!” til nye brugere.
Iterationer
Iterationsangivelser gentager et sæt trin inden for en større funktion eller proces. De har ofte til opgave at udføre den samme operation på flere elementer i en liste eller at gentage en proces, indtil visse betingelser er opfyldt.
Iterationer er nyttige til at gentage et sæt trin flere gange og kan implementeres ved hjælp af forskellige typer loops, herunder FOR
, WHILE
og DO-WHILE
-bows.
Lad os se på noget pseudokode, der bruger en FOR
-loop til at iterere gennem en liste af tal:
PROCESS PrintWholeList
INPUT listOfNumbers
FOR each number in listOfNumbers
PRINT number
END FOR
END
I ovenstående pseudokode modtager vores PrintWholeList-proces en liste med tal og itererer derefter gennem listen og viser hvert tal på skærmen. FOR
-løkken gør det muligt for processen at gentage PRINT
-kommandoen for hvert element i listen.
Alternativt kunne vi bruge den almindelige pseudokode til at opnå det samme som vores ovenstående løkke. I pseudokode er det mere almindeligt at bruge nøgleordene REPEAT
og UNTIL
i stedet for DO-WHILE:
PROCESS PrintWholeList
INPUT listOfNumbers
SET counter = 0
REPEAT
PRINT listOfNumbers[counter]
SET counter = counter + 1
UNTIL counter = length of listOfNumbers
END
Som vist her kan vi skifte navne, nøgleord og syntaksdele ud, som vi vil. Dette er blot en demonstration af pseudokode’s fleksibilitet. Nøglen er at sikre, at logikken er stabil, samtidig med at man bruger navne, der er alment udbredte nok til at kunne læses af alle.
Du kan se nogle af disse konstruktioner anvendt i de pseudokodeeksempler, som vi skal arbejde med senere.
Bedste praksis for pseudokode
Som vi nævnte tidligere, er der ingen streng syntaks for at skrive pseudokode, da det ikke er et egentligt programmeringssprog.
Når det er sagt, er her et par generelle retningslinjer, der kan hjælpe dig med at skrive klar og effektiv pseudokode hver gang:
- Brug naturligt sprog: Pseudokode skal skrives på en måde, som er let for enhver at forstå, og der skal bruges naturligt sprog frem for teknisk jargon.
- Hold det enkelt: Undgå at bruge komplekst sprog eller syntaks, og fokuser på at udtrykke algoritmens eller processens trin på en klar og præcis måde.
- Vær specifik: Vær så specifik som muligt, når du skriver pseudokode, herunder oplysninger som f.eks. variabelnavne og specifikke værdier.
- Undlad unødvendige detaljer: Hvis du bekymrer dig om, hvilken case-konvention du skal anvende, eller om du skal bruge semikolon, så tænker du for meget over det. Gør din pseudokode-tekst så enkel og ligetil som muligt.
- Brug programmeringslignende elementer: Selv om pseudokode ikke bør skrives i et bestemt programmeringssprog, kan det være nyttigt at bruge elementer som loops, betingede udsagn og funktionsopkald for at gøre det lettere for læserne at forstå dit programs trin.
- Brug indrykning for at vise hierarkiet: Indrykning kan bruges til at vise hierarkiet af trinene i dit program, hvilket gør det lettere at forstå logikken og strukturen.
Ved at følge disse retningslinjer kan du skrive en klar og effektiv pseudokode, som du og andre kan bruge som vejledning til at implementere din funktion eller algoritme i et bestemt programmerings- eller scriptsprog.
Pseudokode Eksempler og oversættelser
Lad os se på nogle eksempler på pseudokode sammen med deres oversættelser til eksekverbar kode i forskellige sprog og frameworks.
PHP
Lad os til at begynde med skrive noget pseudokode, der skal efterligne logikken i at lægge alle tallene i en given liste sammen:
PROCESS FindTotal
INPUT listOfNumbers
SET sum = 0
FOR EACH number IN listOfNumbers
SET sum = sum + number
END FOR
PRINT sum
END
Vores pseudokode-logik følger disse trin:
- Giv funktionen et navn.
- Hent listen med numre fra slutbrugeren.
- Opret en variabel kaldet sum til at rumme den numeriske sum, når den bliver beregnet.
- Iterér gennem hvert tal på listen et efter et og tilføj hvert tal til summen.
- Når alle tallene er blevet tilføjet, afsluttes iterationen (loop).
- Vis den endelige sum, der fremkommer ved at lægge alle tallene sammen.
- Afslut funktionen.
Nu hvor vi kender logikken i vores funktion, kan vi oversætte denne pseudokode til et hvilket som helst andet sprog eller rammeværk. Lad os se, hvordan det kan se ud oversat til PHP:
function findTotal($listOfNumbers) {
$sum = 0;
foreach ($listOfNumbers as $number) {
$sum += $number;
}
echo $sum;
}
Node.js
Lad os dernæst skrive noget pseudokode, som vi kan bruge til at kontrollere, hvad klokken er for vores besøgende, og derefter sende dem den passende hilsen baseret på deres tidspunkt på dagen:
PROCESS TimedGreeting
GET userTime
IF userTime > 6:00 + < 12:00
PRINT "Good morning!"
ELSE IF userTime > 12:00 + < 18:00
PRINT "Good afternoon!"
ELSE
PRINT "Good evening!"
END
Vores pseudokode-logik følger disse trin:
- Giv funktionen et navn.
- Find brugerens tid.
- Hvis brugerens klokkeslæt er mellem 6:00 og 12:00, vises meddelelsen “Godmorgen!”
- Hvis brugerens klokkeslæt ligger mellem 12:00 og 18:00, vises meddelelsen “God eftermiddag!”
- For alle andre tidspunkter vises meddelelsen “God aften!”
- Afslut funktionen.
Oversat til Node.js kan det se således ud:
function timedGreeting() {
const userTime = new Date();
if (userTime.getHours() > 6 && userTime.getHours() < 12) {
console.log('Good morning!');
} else if (userTime.getHours() > 12 && userTime.getHours() < 18) {
console.log('Good afternoon!');
} else {
console.log('Good evening!');
}
}
Python
I vores næste eksempel skal vi skrive noget pseudokode for at skitsere logikken for at vende en streng (i dette tilfælde en sætning), som en bruger har givet os:
PROCESS ReverseString
INPUT string
SET reversed_string = reverse of string
PRINT "The reversed sentence is: ", reversed_string
END
Vores pseudokode-logik følger disse trin:
- Giv funktionen et navn.
- Spørg brugeren om en streng, og accepter det, som brugeren angiver.
- Gem værdien af brugerens strengvariabel.
- Skær den lagrede strengværdi op i skiver for at vende den om, og gem resultatet i en ny variabel.
- Vis den omvendte streng på skærmen.
- Afslut funktionen.
Oversat til Python kan det se således ud:
string = input("Enter a sentence: ")
reversed_string = string[::-1]
print("The reversed sentence is: ", reversed_string)
I nogle tilfælde vil din faktiske oversatte kode være kortere end din pseudokode. Det er helt i orden. Så længe logikken i din pseudokode er sund, og din oversatte kode fungerer som den skal, kan du se bort fra afvigelserne i længden.
Processer i den virkelige verden
Takket være sin læsbarhed og fleksibilitet kan pseudokode endda bruges til at definere processer, der ligger uden for kodningens verden.
Lad os sige, at du ønsker at beskrive de trin, du skal bruge for at male dit soveværelse. Pseudokoden for en sådan opgave kunne se nogenlunde sådan her ud:
PROCESS PaintBedroom
INPUT color
PREPARE bedroom
REMOVE furniture from room
COVER floors with drop cloth
TAPE off trim
PAINT walls
SETUP ladder
LOAD paint roller with paint
ROLL paint onto walls
ALLOW paint to dry
FINISH
REMOVE tape and drop cloth
REPLACE furniture
DISPOSE of trash
END
Da det at male et soveværelse er en fysisk handling, der ikke har noget med computere at gøre, er det naturligvis ikke nødvendigt at oversætte dette til et programmeringssprog. Men ved at overholde de bedste praksis og konventioner for pseudokode kan du se, hvor let det er at kortlægge og kommunikere selv virkelige processer gennem pseudokode.
Opsummering
Som udvikler er du klar over, hvor værdifuld din tid er. Du bør forsøge at beskytte den, hvor det er muligt, ved at implementere strategier, der sparer dig for tid, kræfter og frustrationer.
At skrive pseudokode er en fremragende tids- og arbejdsbesparende foranstaltning for udviklere på alle sprog og færdighedsniveauer, og det kan integreres problemfrit i din arbejdsgang uden behov for yderligere værktøjer eller overhead. Ved at planlægge deres kode klart og præcist ved hjælp af pseudokode, før de går i gang med at skrive og teste den, kan udviklere spare tid, undgå fejl og lettere samarbejde med deres teammedlemmer.
Hvilke andre anvendelsesmuligheder har du fundet for pseudokode? Lad os vide det i kommentarfeltet!