Lär dig ett nytt programmeringsspråk kan vara roligt. När jag försöker lära mig ett nytt språk fokuserar jag på att definiera variabler, skriva ett uttalande och utvärdera uttryck. När jag väl har en allmän förståelse för dessa begrepp kan jag oftast räkna ut resten på egen hand. De flesta programmeringsspråk har vissa likheter, så när man väl kan ett programmeringsspråk handlar det för att lära sig nästa om att ta reda på de unika detaljerna och känna igen skillnaderna i det.

För att hjälpa mig att öva på ett nytt programmeringsspråk skriver jag gärna några testprogram. Ett provprogram som jag ofta skriver är ett enkelt ”gissa talet”-program, där datorn väljer ett tal mellan ett och 100 och ber mig gissa talet. Programmet går i loop tills jag gissar rätt.

Programmet ”gissa antalet” övar flera begrepp i programmeringsspråk: hur man tilldelar värden till variabler, hur man skriver påståenden och hur man utför villkorlig utvärdering och loopar. Det är ett utmärkt praktiskt experiment för att lära sig ett nytt programmeringsspråk.

Gissa numret i Bash

Bash är standardskalet för de flesta Linuxsystem. Förutom att tillhandahålla ett rikt kommandoradsgränssnitt har Bash också stöd för ett komplett programmeringsspråk i form av skript.

Om du inte är bekant med Bash rekommenderar jag dessa introduktioner:

  • Vad är Bash?
  • Kom igång med Bash-programmering
  • Kom igång med Bash-skript för sysadmins
  • Hur man skriver funktioner i Bash
  • Läs mer om Bash

Du kan utforska Bash genom att skriva en version av spelet ”gissa numret”. Här är min implementering:

Skripten delas upp

Den första raden i skriptet, #!/bin/bash, talar om för Linux att det här skriptet ska köras med hjälp av Bash-skalet. Varje skript börjar med teckenparet #!, vilket visar att detta är ett skalskript. Det som följer omedelbart efter #! är det skal som ska köras. I det här fallet är /bin/bash Bash-skalet.

För att tilldela ett värde till en variabel listar du variabelns namn följt av tecknet =. Till exempel tilldelar uttalandet guess=0 ett nollvärde till variabeln guess.

Du kan också uppmana användaren att ange ett värde med uttalandet read. Om du skriver read guess väntar Bash på att användaren ska skriva in en text och lagrar sedan värdet i variabeln guess.

Om du vill hänvisa till värdet på en variabel använder du $ före variabelnamnet. När du har lagrat ett värde i variabeln guess kan du alltså hämta det med $guess.

Du kan använda vilka namn som helst för variablerna, men Bash reserverar några speciella variabelnamn för sig själv. En speciell variabel är RANDOM, som genererar ett mycket stort slumptal varje gång du refererar till den.

Om du vill utföra en operation samtidigt som du lagrar ett värde måste du omsluta uttalandet med speciella parenteser. Detta säger till Bash att utföra det uttalandet först, och = lagrar det resulterande värdet i variabeln. Om du vill utvärdera ett matematiskt uttryck använder du $(( )) runt ditt uttalande. De dubbla parenteserna anger ett aritmetiskt uttryck. I mitt exempel utvärderar number=$(( $RANDOM % 100 + 1 )) uttrycket $RANDOM % 100 + 1 och lagrar sedan värdet i variabeln number.

Standardiserade aritmetiska operatorer som + (plus), - (minus), * (multiplicera), / (dela) och % (modulo) är tillämpliga.

Det innebär att uttalandet number=$(( $RANDOM % 100 + 1 )) genererar ett slumpmässigt tal mellan ett och 100. Operatorn modulo (%) returnerar återstoden efter att ha dividerat två tal. I det här fallet delar Bash ett slumpmässigt tal med 100 och lämnar en rest i intervallet noll till 99. Genom att lägga till ett till det värdet får du ett slumpmässigt tal mellan ett och 100.

Bash har stöd för villkorliga uttryck och flödeskontroll som slingor. I spelet ”gissa numret” fortsätter Bash med slingan så länge värdet i guess inte är lika med number. Om gissningen är mindre än det slumpmässiga talet skriver Bash ut ”För lågt”, och om gissningen är större än talet skriver Bash ut ”För högt”.

Hur det fungerar

Nu när du har skrivit ditt Bash-skript kan du köra det för att spela ”gissa talet”-spelet. Fortsätt gissa tills du hittar rätt nummer:

Guess a number between 1 and 100
50
Too high
30
Too high
20
Too high
10
Too low
15
Too high
13
Too low
14
That's right!

Varje gång du kör skriptet kommer Bash att välja ett annat slumpmässigt nummer.

Det här ”gissa numret”-spelet är ett bra introduktionsprogram när du lär dig ett nytt programmeringsspråk eftersom det övar upp flera vanliga programmeringsbegrepp på ett ganska enkelt sätt. Genom att implementera det här enkla spelet i olika programmeringsspråk kan du demonstrera några centrala begrepp och jämföra detaljer i varje språk.

Har du ett favoritprogrammeringsspråk? Hur skulle du skriva spelet ”gissa numret” i det? Följ den här artikelserien för att se exempel på andra programmeringsspråk som kan intressera dig.