Om du är programmerare så vet du att det ofta kan vara en tidskrävande och felfylld process att skriva kod. Det kan vara lika frustrerande som tillfredsställande att ta reda på hur du får din applikation eller din webb-applikation att göra som du vill.  Sedan så ska det dessutom förklaras för andra, t.ex. ditt team eller dina aktieägare.

Det är där som pseudokod kommer in i bilden.

Pseudokod är ett sätt att representera kod med hjälp av en kombination av ett enkelt, naturligt språk och element från programmeringsspråk. Du kanske precis har börjat i programmeringsvärlden eller är ett erfaret proffs. Oavsett vilket så är förståelse för pseudokod ett tidsbesparande knep som du kan integrera i din process när som helst.

I den här artikeln så ska vi fördjupa oss i vad pseudokod är. Vi kommer därefter att förklara hur den används och varför den är ett viktigt verktyg för alla utvecklare.

Låt oss köra igång direkt.

Vad är pseudokod?

Pseudokod är ett sätt att representera kod, såsom exempelvis algoritmer, funktioner och andra processer. Detta sker med hjälp av en kombination av naturliga språk och programspråksliknande element.

Det kallas ”pseudokod” eftersom koden inte kan exekveras. Den är i stället ett sätt för människor att förstå och planera logiken i kodningen. Stegen beskrivs på ett sätt som är lätt för människor att förstå. Det är samtidigt tillräckligt detaljerat för att snabbt kunna omvandlas till ett specifikt programmeringsspråk.

Här är ett enkelt exempel på pseudokod där vi utarbetar den grundläggande logiken för att hälsa en besökare vid namn när han eller hon navigerar till vår webbplats eller app:

PROCESS GreetUser
    INPUT userName
    DISPLAY "Hello, " + userName + "!"
END

Som du kan se så är pseudokoden ovan inte skriven med syntax från något riktigt språk eller ramverk. I stället så används enkla, allmänt begripliga språk- och programmeringselement – som PROCESS, DISPLAY och + – som syntax, vilket gör det enkelt för vem som helst att följa.

Det är en av krafterna med att skriva pseudokod. Genom att lägga ut kodens intentioner i en gemensam syntax så kan du hoppa över alla hinder för programmering och språkliga färdigheter. Vi kommer att tala mer om detta i nästa avsnitt.

Fördelar med att skriva pseudokod

En av de största fördelarna med pseudokod är att den gör det möjligt för utvecklare att skissa upp sin kod utan att fastna i syntaxen och strukturen för ett specifikt språk. Som ett resultat så blir det lättare att upptäcka fel i en applikations eller en funktions logik, utan att behöva skriva eller felsöka någon egentlig kod.

Dessutom så kan pseudokod enkelt anpassas till olika programmeringsspråk. Detta gör det exempelvis till ett användbart verktyg för utvecklare som är bekanta med flera språk och som behöver översätta sina idéer mellan dem. Tänk dig att kunna förklara ditt Node.js-skript för en Laravel-utvecklare! Detta kan vara särskilt användbart för teams som arbetar med ett projekt tillsammans. Pseudokod kan nämligen användas som ett gemensamt språk för att kommunicera idéer och funktioner.

Här är de viktigaste fördelarna som pseudokod kan ge utvecklare, både nybörjare och erfarna:

  • Förbättrad effektivitet: Genom att skriva ut stegen i en process i pseudokod så kan utvecklare spara tid. De kan ju planera sin kod innan de djupdyker i detaljerna eller syntaxen i ett specifikt programmeringsspråk. Som ett resultat så kan kodare undvika misstag och minska behovet av felsökning.
  • Lättare att läsa: Eftersom pseudokod är skriven så att alla kan förstå den, blir det lättare för utvecklare att läsa och förstå koden. Detta gäller särskilt om de arbetar med ett team eller behöver se över gammal kod.
  • Större flexibilitet: Eftersom pseudokod inte är bunden till något specifikt programmeringsspråk så kan den lätt anpassas till olika språk. Som ett resultat så blir det ett användbart verktyg för utvecklare som är bekanta med flera språk och som behöver översätta sina idéer mellan dem.
  • Förbättrat samarbete: Pseudokod kan användas som ett gemensamt språk för ett team av utvecklare för att kommunicera och samarbeta i ett projekt. Detta kan vara särskilt användbart för teams som arbetar med ett projekt tillsammans, eftersom pseudokod gör det möjligt för utvecklare att tydligt och kortfattat kommunicera sina idéer.
  • Lokal hantering: Eftersom den inte är körbar så behöver din pseudokod inte vara hostad på nätet eller ansluten till några externa skript som en fullfjädrad app skulle vara. Den kan skapas och sparas i en fil på din lokala maskin, i en molnfil eller till och med kopieras i ett e-postmeddelande.

Det är dessutom lätt att skriva pseudokod och implementera den i alla skeden av din utvecklingsprocess. Även om du aldrig har använt det tidigare så kan du börja redan nu, oavsett var du befinner dig i din kodningsframgång. Du kan omedelbart ta del av de fördelar som beskrivs ovan.

Vanliga användningsområden för pseudokod

Pseudokod har en stor inneboende flexibilitet. Det finns därför många användningsområden för den – även utanför programmering.

Här är exempelvis flera vanliga användningsområden för utvecklare:

  • Planering och utformning av processer: Pseudokod kan användas för att planera stegen i en process, funktion eller algoritm. Som ett resultat så kan utvecklare tänka igenom logiken och se till att den är korrekt innan den implementeras i ett specifikt programmeringsspråk.
  • Kommunicera idéer till icke-tekniska intressenter: Pseudokod kan användas för att tydligt förklara stegen i en process eller algoritm för icke-tekniska intressenter, exempelvis projektledare eller kunder, på ett sätt som gör att de lätt kan förstå konceptet.
  • Samarbete med ett team: Pseudokod kan användas som ett gemensamt språk för ett team av utvecklare för att kommunicera och samarbeta i ett projekt, oavsett deras individuella programmeringsexpertis.
  • Anpassning av kod till olika programmeringsspråk: Eftersom pseudokod inte är bunden till något särskilt programmerings- eller skriptspråk så kan den snabbt och enkelt anpassas och översättas till olika språk. Detta är särskilt användbart för utvecklare och teams som arbetar med flera språk.
  • Undervisning i programmeringskoncept: Pseudokod kan vara ett användbart verktyg för att lära ut grunderna i programmering, eftersom det gör att eleverna kan fokusera på logiken och strukturen i en applikation utan att fastna i syntaxen.

Detta är bara några exempel, det finns många fler. Möjligheterna till att använda pseudokod till din fördel är praktiskt taget obegränsade.

Hur man skriver pseudokod

Det finns inget korrekt sätt att skriva pseudokod. Samma brist på specifik syntax som gör den så flexibel är precis det som utesluter att den har några särskilda syntaxregler.

Även om vissa språk som Pascal och Basic erbjuder syntaxspecifika riktlinjer för pseudokod, så kan du faktiskt skriva pseudokod med vilken terminologi du vill. Det viktiga är bara att dina termer är allmängiltiga och att logiken är följbar.

Med detta sagt så finns det några grundläggande steg och riktlinjer för pseudokod som de flesta utvecklare följer. Vi kommer att fördjupa oss i dessa härnäst.

Steg för att skriva pseudokod

Här är några allmänna steg som du kan följa för att skriva bra pseudokod:

  1. Öppna din textredigerare: Pseudokod skrivs oftast som text eller i HTML-editorn. Du kan välja din favorit och öppna en ny fil.
  2. Definiera ditt mål: Bestäm syftet med din applikation eller din funktion. Vad vill du att den ska göra?
  3. Dela upp det i olika delar: Dela upp problemet i mindre, mer hanterbara delar. Som ett resultat så kan du tänka tydligare på problemet och göra det lättare att ordna delarna så att de fungerar där och när de ska.
  4. Organisera det i steg: Skriv ut stegen i din applikation i logisk ordning. Använd ett naturligt språk och undvik att använda specifika programmeringskonstruktioner eller metoder, t.ex. kontrollstrukturer eller typbrytning.
  5. Inskjut dina rader: Använd indragning för att visa programmets struktur. Du kan exempelvis ange de kodrader som hör hemma i en slinga.
  6. Testa det: Testa din pseudokod för att se till att den är tydlig och logisk. Du kan göra detta genom att gå igenom den muntligt eller genom att låta någon annan läsa den och rapportera till dig vad de tror att pseudokoden ska göra.

När din pseudokod är skriven så måste du översätta den till ett körbart skript. Du kan öva på detta utanför dina projekt genom att bidra till Git-arkiv med öppen källkod, anta kodutmaningar och ställa/besvara frågor på StackOverflow eller inom ditt utvecklings-community.

Pseudokodkonstruktioner

Trots att pseudokod saknar en definierad syntax så finns det flera vanliga programmeringskonstruktioner som utvecklare ofta använder när de skriver pseudokod. Låt oss ta en titt på var och en av dem.

Sekvenser

En sekvens är en grupp uttalanden som utförs i en viss ordning. De används för att utföra eller upprepa en serie enkla åtgärder. Några välkända sekvenskommandon som ofta används i pseudokod är INPUT, SET, PRINT, READ, DISPLAY, SHOW och CALCULATE.

Här är ett exempel på pseudokod där några av dessa kommandon används:

PROCESS CalculateCost
    INPUT price, quantity
    SET cost = price * quantity
    PRINT "The cost is: " + cost
END

Den här pseudokoden definierar en process som heter CalculateCost som tar in ett pris och en kvantitet, multiplicerar dem tillsammans för att beräkna kostnaden och sedan visar resultatet.

Villkor

Med hjälp av villkorliga påståenden så kan en applikation fatta beslut som bygger på vissa villkor och sedan styra applikationen så att den utför vissa påståenden om ett villkor uppfylls (eller inte uppfylls). IF-ELSE, IF-IF ELSE-ELSE, och CASE-anvisningarna används ofta i pseudokod.

Här är ett exempel som visar ett IF-ELSE-skript i pseudokod:

IF user = returning
    PRINT "Welcome back!"
ELSE
    PRINT "Welcome!"

I exemplet ovan så beskriver vi en process som visar ett ”Välkommen tillbaka”-meddelande till användare som har besökt oss tidigare, men som bara visar ”Välkommen!” till nya användare.

Iterationer

Iterationsförklaringar upprepar en uppsättning steg inom en större funktion eller process. De används ofta för att utföra samma operation på flera objekt i en lista eller för att upprepa en process tills vissa villkor är uppfyllda.

Iterationer är användbara för att upprepa en uppsättning steg flera gånger och kan implementeras med hjälp av olika typer av slingor, inklusive FOR, WHILE och DO-WHILE-slingor.

Låt oss titta på lite pseudokod som använder en FOR-slinga för att iterera genom en lista med siffror:

PROCESS PrintWholeList
    INPUT listOfNumbers 
    FOR each number in listOfNumbers
    PRINT number
    END FOR
END

I pseudokoden ovan så tar vår process PrintWholeList emot en lista med siffror och itererar sedan genom listan och visar varje nummer på skärmen. Med FOR-slingan så kan processen upprepa PRINT-kommandot för varje objekt i listan.

Alternativt så skulle vi kunna använda den vanliga pseudokoden för att åstadkomma samma sak som vår ovanstående slinga. I pseudokod så är det vanligare att använda nyckelorden REPEAT och UNTIL i stället för DO-WHILE:

PROCESS PrintWholeList
    INPUT listOfNumbers 
    SET counter = 0
    REPEAT
    PRINT listOfNumbers[counter]
    SET counter = counter + 1
    UNTIL counter = length of listOfNumbers
END

Som du kan se här så kan vi byta ut namn, nyckelord och syntaxdelar hur mycket vi vill. Detta är bara ett exempel på pseudokodens flexibilitet. Nyckeln är att se till att logiken är stabil samtidigt som man använder namn som är tillräckligt vanliga för att kunna läsas av vem som helst.

Du kan se några av dessa konstruktioner användas i de pseudokodexempel som vi kommer att arbeta med senare.

Bästa praxis för pseudokod

Som vi nämnde tidigare finns det ingen strikt syntax för att skriva pseudokod, eftersom det inte är ett egentligt programmeringsspråk.

Med detta sagt så finns här några allmänna riktlinjer som kan hjälpa dig att skriva en tydlig och effektiv pseudokod varje gång:

  1. Använd ett naturligt språk: Pseudokod bör skrivas på ett sätt som är lätt att förstå för vem som helst, genom att använda naturligt språk snarare än en teknisk jargong.
  2. Håll det enkelt: Undvik att använda ett komplicerat språk eller syntax och fokusera på att uttrycka algoritmens eller processens steg på ett tydligt och kortfattat sätt.
  3. Var specifik: Var så specifik som möjligt när du skriver pseudokod, inkludera information som variabelnamn och specifika värden.
  4. Utelämna onödiga detaljer: Oroar du dig för vilken konvention för stora och små bokstäver som ska användas eller om du ska använda semikolon? Då tänker du för mycket på formen. Gör istället din pseudokodtext så enkel och okomplicerad som möjligt.
  5. Använd programmeringsliknande element: Pseudokod bör inte skrivas i ett specifikt programmeringsspråk. Det kan dock vara till hjälp att använda element som slingor, villkorssatser och funktionsanrop. Som ett resultat så blir det lättare för läsarna att förstå din applikations steg.
  6. Använd indragning för att visa hierarki: Indragning kan användas för att visa hierarkin i stegen i din applikation. Som ettt resultat så förenklas översikten av logiken och strukturen.

Genom att följa dessa riktlinjer så kan du skriva en tydlig och effektiv pseudokod som du och andra kan använda som en vägledning. Du kan sedan implementera din funktion eller algoritm i ett visst programmerings- eller skriptspråk.

Exempel på pseudokod och översättningar

Låt oss titta på några exempel på pseudokod, tillsammans med deras översättningar till körbar kod i olika språk och ramverk.

PHP

Till att börja med så skriver vi lite pseudokod som är tänkt att efterlikna logiken i att addera alla siffror i en given lista:

PROCESS FindTotal
    INPUT listOfNumbers
    SET sum = 0
    FOR EACH number IN listOfNumbers
    SET sum = sum + number
    END FOR
    PRINT sum
END

Vår pseudokodlogik följer dessa steg:

  1. Ge funktionen ett namn.
  2. Hämta listan med nummer från slutanvändaren.
  3. Skapa en variabel som heter summa för att rymma den numeriska summan när den beräknas.
  4. Iterera genom varje nummer i listan ett efter ett och lägg till varje nummer till summan.
  5. När alla nummer har lagts till så avslutar du iterationen (slingan).
  6. Visa den slutliga summan som erhålls genom att addera alla nummer tillsammans.
  7. Avsluta funktionen.

Nu när vi känner till logiken i vår funktion så kan vi översätta denna pseudokod till något annat språk eller ramverk. Låt oss exempelvis se hur det kan se ut när det är översatt till PHP:

function findTotal($listOfNumbers) {
    $sum = 0;
    foreach ($listOfNumbers as $number) {
    $sum += $number;
    }
    echo $sum;
}

Node.js

Låt oss sedan skriva en pseudokod som vi kan använda för att kontrollera vad klockan är för vår besökare och sedan skicka en lämplig hälsning till dem beroende på vilken tid på dygnet som de befinner sig i:

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

Vår pseudokodlogik följer dessa steg:

  1. Ge funktionen ett namn.
  2. Hitta användarens tid.
  3. Om användarens tid är mellan 6:00 och 12:00 så visas meddelandet ”God morgon!”
  4. Om användarens tid ligger mellan kl. 12.00 och 18.00 så visas meddelandet ”God eftermiddag!”
  5. Vid alla andra tider så visas meddelandet ”God kväll!”
  6. Avsluta funktionen.

Översatt till Node.js så kan det exempelvis se ut så här:

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 vårt nästa exempel så ska vi skriva lite pseudokod för att beskriva logiken för att vända en sträng (i det här fallet en mening) som en användare har gett oss:

PROCESS ReverseString
    INPUT string
    SET reversed_string = reverse of string
    PRINT "The reversed sentence is: ", reversed_string
END

Vår pseudokodlogik följer dessa steg:

  1. Ge funktionen ett namn.
  2. Fråga användaren om en sträng och acceptera det som användaren anger.
  3. Lagra värdet av användarens strängvariabel.
  4. Skiva det lagrade strängvärdet för att vända det och lagra resultatet i en ny variabel.
  5. Visa den omvända strängen på skärmen.
  6. Avsluta funktionen.

Översatt till Python kan det se ut så här:

string = input("Enter a sentence: ")
reversed_string = string[::-1]
print("The reversed sentence is: ", reversed_string)

I vissa fall kommer din faktiska översatta kod att vara kortare än din pseudokod. Det är okej. Så länge som logiken i din pseudokod är sund och den översatta koden fungerar som den ska, kan du bortse från skillnaderna i längd.

Processer i den verkliga världen

Tack vare sin läsbarhet och flexibilitet så kan pseudokod även användas för att definiera processer som ligger utanför kodningsvärlden.

Säg att du vill beskriva de steg som du behöver för att måla ditt sovrum. Pseudokoden för en sådan syssla kan se ut ungefär så här:

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

Eftersom målning av ett sovrum är en fysisk operation som inte har med datorer att göra, behöver du naturligtvis inte översätta detta till ett programmeringsspråk. Men detta visar hur lätt det är att kartlägga och kommunicera även verkliga processer genom pseudokod.

Sammanfattning

Som utvecklare så är du medveten om hur värdefull din tid är. Du bör försöka skydda den där det är möjligt genom att införa strategier som sparar tid, ansträngning och frustration.

Att skriva pseudokod är en utmärkt åtgärd för att spara tid och ansträngning för utvecklare av alla språk och kunskapsnivåer. Den kan dessutom integreras smidigt i ditt arbetsflöde utan behov av ytterligare verktyg eller overhead. Utvecklare kan på så sätt spara tid, undvika misstag och få ett enklare samarbete med sina team-medlemmar. Allt genom att planera sin kod tydligt och kortfattat med hjälp av pseudokod. De kan sedan ge sig in i det praktiska arbetet med att skriva och testa koden.

Vilka andra användningsområden har du hittat för pseudokod? Berätta för oss i kommentarsfältet!