

PROGRAMMERING 1 Oscar Antbring
Copyright © Docendo AB
Det Àr förbjudet att kopiera bilder och text i denna bok genom att trycka, fotokopiera, skanna eller pÄ annat sÀtt mÄngfaldiga enligt upphovsrÀttslagen.
VÄra böcker och tillhörande produkter Àr noggrant kontrollerade, men det Àr ÀndÄ möjligt att fel kan förekomma. Vi tar gÀrna emot förbÀttringsförslag.
Produkt- och producentnamnen som anvÀnds i boken Àr Àgarens varumÀrken eller registrerade varumÀrken.
Tryckt av Elanders
Utgiven 2024
ISBN: 978-91-7531-176-0
Artikelnummer: 3118
Författare: Oscar Antbring
Omslag: Docendo AB
Bild pÄ omslaget: © Adobe Stock
InnehÄllsförteckning
Det âhemligaâ talet 98
Bra villkor och flödeskontroll 100
NĂ€stlade loopar 102
Pseudokod och en nÀstlad loop 104
En variabels livslÀngd ......................................... 104
Ett förbÀttrat gissningsspel 106
Sammanfattning ............................................. 108
9 Planera din kod................................ 109
Pseudokod ..................................................... 110
Pseudokod och kodflödet ..................................... 110
Skriv pseudokod med talsprÄk ............................... 110
Hur kan pseudokod formuleras?............................. 111
Indentera pseudokoden ....................................... 111
Vad utmÀrker en bra pseudokod? ........................... 112
Exempel pÄ pseudokoder ..................................... 112
Pseudokod för mer komplex kod 116
Aktivitetsdiagram 117
Aktivitetsdiagram och kodflöde 117
Att hantera lÄnga diagram 119
Exempel pÄ diagram utifrÄn koder 120
Sammanfattning 122
10 Vektorer ....................................... 123
Skapa en vektor med tal ................................... 124
Ett âbingo-spelâ och en vektor 125
Specificera indexposition med en variabel 127
Vektorer och loopar 127
Hur en for loop itererar 129
Anpassa for loopen 131
Ett âbingo-spelâ med vektorer och loopar 132
Nyckelordet var och for-each
NĂ€stlade
2 Programutveckling i Java
Vad utmÀrker Java?
Fördelar med Java
Nackdelar med Java
.8
10
Att utveckla program i Java . . . . . . . . . 10
Mer om ramverket och klasser . . . . . . 13
En utvecklingsmiljö för Java . . . . . . . . 15
I detta kapitel ska du fÄ lÀsa om Java som Àr ett av vÀrldens mest kÀnda och populÀra programmeringssprÄk. Det Àr oerhört mÄngsidigt programmeringssprÄk och anvÀnds för att exempelvis bygga mobila applikationer, konstruera chatbottar eller för att styra smarta prylar i vÄra hem.
Du kommer vidare att fÄ lÀsa om hur du installerar rÀtt mjukvara som krÀvs för att du ska kunna börja skriva dina första koder. Och i samband med detta skriver vi om ramverket JDK och som bestÄr av massa fÀrdiga sÄ kallade klasser.
Men vi inleder med att skriva om Java och vad som kan sÀgas vara för- och nackdelar med detta programmeringssprÄk
Vad utmÀrker Java?
Om du skulle lÀsa pÄ nÀtet eller i böcker om vilka för- och nackdelar som Java medför som utvecklingssprÄk sÄ finns mÄnga aspekter i detta och som ofta beror pÄ vad man du Àmnar utveckla för typ av program.
HÀr följer nÄgra generella och ofta omnmÀnda styrkor och svagheter med Java
Plattformsoberoende
En av de mest utmÀrkande fördelarna med Java Àr att det Àr plattformsoberoende.
För att förstÄ vad det innebÀr sÄ behöver vi grÀva lite i begreppet plattform och vad det innebÀr. En plattform handlar i princip om vilken datormiljö du syftar till och dÄ en specifik hÄrdvara och ett operativsystem.
NÀr det handlar om hÄrdvara sÄ grupperar man dessa efter vilken processor som finns i datorn och den vanligaste sÄdan Àr x86 (som i tur tur inkluderar flera olika varianter av den) .
Eller som du troligtvis kÀnner igen plattformen som: PC (Àven om kopplingen mellan begreppet PC och x86 inte Àr helt okomlicerad).

Andra exempel pÄ hÄrdvaruplattformar Àr ARM (som anvÀnds i exempelvis Chromebook, mobiltelefoner och Arduino) och Playstation.
I bilden kan du en Arduino som Àr en sÄ kallad enkorts-dator och som bland annat bestÄr av en processor med ARM-arkitekturen.
Ăven en dator med samma hĂ„rdvara (som en PC) kan innefatta flera plattformar och det beror pĂ„ att en dator kan köras med olika operativsystem.
Ett operativsystem Àr den viktigaste mjukvaran pÄ en dator och som hanterar datorns hÄrdvara samt tillÄter en miljö för andra program att köra i. Det betyder att program som webblÀsare, ordbehandlingsprogram och datorspel behöver ett operativsystem för att kunna köra.
Exempel pĂ„ operativsystem som finns till PC-kompatibla arkitekturer Ă€r OS/2 (âmacâ), Linux och Microsoft Windows.
Alla dessa kombinationer av hÄrdvara och mjukvara bildar en möjlig plattform. Och att Java Àr plattformsoberoende innebÀr alltsÄ att den kod som du skriver kan köras oberoende av vilken typ av dator (med operativsystem) som anvÀnds.
Vi kommer att Äterkomma lite mer till detta nÀr du kommer lÀsa om hur kod som du skriver i Java blir ett körbart program.
Fördelar med Java
Följande fördelar omnÀmns ofta i samband med att man lÀser om Java som programmeringssprÄk:
Java Àr sÀkert
Det blir genast rÀtt tekniskt om vi ska grÀva i varför Java betecknas som ett av de mest sÀkra programmeringssprÄken. Men en viktig anledning till varför det Àr sÄ Àr för att Java-program körs i en sÄ kallad virtuell maskin som gör att programmet körs i en skyddad miljö.
Du kommer ocksÄ kunna lÀsa mer om vad en virtuell maskin Àr lite lÀngre in i detta kapitel.
Java Àr objekt-orienterat
I det sista kapitlet i denna lÀrobok sÄ kommer du lÀra dig om vad det innebÀr att jobba med enligt ett objektorientering tankesÀtt. Dock Àr det sÄ att du arbetar enligt detta paradigm redan nÀr du skriver dina första koder.
Ett programmeringsparadigm Àr ett synsÀtt pÄ hur program ska konstrueras och fungera. Ett objektorienterat paradigm anvÀnds i sprÄk som Java, C# och Python
Men vi tror nog att du gör bÀst i att lÀgga det begreppet lite Ät sidan innan du faktiskt kommer fram till just det kapitlet. LikvÀl har du möjlighet att lÀsa mer om vad objektorienterad programmering innebÀr i bokens bilaga. Vi har valt det upplÀgget sÄ att du sjÀlv kan avgöra om och nÀr du vill ta dig an teorin som förmedlas dÀr.
Java har hög prestanda
Ăven om pĂ„stĂ„endet att Java har hög prestanda Ă€r lite mer komplicerat idag sĂ„ fĂ„r vi Ă€ndĂ„ lov att sĂ€ga att Java som programmeringssprĂ„k alltid legat i framkant vad gĂ€ller att optimera prestanda för program. Men dĂ„ i jĂ€mförelse med programmeringssprĂ„k som fungerar pĂ„ liknande sĂ€tt (med en virtuell maskin).
Vi tÀnker sÀrskilt pÄ dess inbyggda hantering av flera trÄdar och att Java var vÀldigt tidigt ute med detta. En process Àr en program eller en tjÀnst pÄ datorn som körs. En process kan i sin tur delas upp i just trÄdar och moderna programmeringssprÄk kan köra flera sÄdana samtidigt.
Moderna programmeringssprÄk kan bryta ner en process i mindre komponenter (sÄ kallade trÄdar) som kan hanteras bÀttre och enklare. Och att flera trÄdar kan köras samtidigt (eng: multithreading)
Om du anvÀnder Microsoft Windows sÄ kan du öppna aktivitetshanteraren för att se alla processer som för tillfÀllet körs. Du kan ocksÄ exempelvis öppna kommandotolken (cmd) och skriva kommandot tasklist.

Vissa av dessa processer Àr sÄdana som du kan knyta an till specifika program som Excel och Google Chrome i exemplet. Andra processer Àr knutna till mer obskyra tjÀnster som puttrar i bakgrunden och som du som anvÀndare aldrig kommer tÀnka pÄ.
Java har ett enormt
âcommunityâ
âCommunityâ Ă€r inte bara en vĂ€ldigt rolig tv-serie utan ocksĂ„ begreppet för en grupp som verkar för att tillsammans utveckla det som de brinner för. I detta fall programmeringssprĂ„ket Java.
Och de personer som Àr en del av denna gemenskap har en betydande roll i hur Java utvecklar sig som programmeringssprÄk. Detta skapar ett genuint engagemang dÀr pengar inte nödvÀndigtvis Àr den högsta motivationsfaktorn.
Nackdelar med Java
Följande nackdelar omnÀmns ofta i samband med att man lÀser om Java som programmeringssprÄk:
Java Àr lÄngsamt
Java har en bra prestanda jÀmfört med programmeringssprÄk som fungerar pÄ liknande sÀtt, men Àr betydligt lÄngsammare Àn program som Àr kompilerade för en specifik plattform. Det kan handla om program som Àr skrivna i C eller C++ exempelvis.
Komplicerad kod
Java kan vĂ€l inte sĂ€gas vara utmĂ€rkande i att ha en komplicerad kod med mĂ„nga âordâ men i jĂ€mförelse med ett sprĂ„k som Python sĂ„ Ă€r det definitivt sĂ„. JĂ€mför du en kod mellan dessa programmeringssprĂ„k sĂ„ framför koden i det sistnĂ€mnda som enklare att utlĂ€sa och mindre komplex
Utmaningar vid utveckling av GUI
Ett sĂ„ kallat âGUIâ Ă€r kort för âgraphical user interfaceâ. AlltsĂ„ att vi skapar ett grafiskt grĂ€nssnitt för vĂ„rt program, vilket förvisso inte Ă€r nĂ„got som du kommer göra i och med denna lĂ€robok men förr eller senare sĂ„ blir det aktuellt sĂ„ klart.
Det finns ingen enhetlig stil knuten till Java och för komplexa skrivbordsprogram sÄ Àr det sÀkerligen bÀttre att jobba i andra programmeringssprÄk sÄsom C# om du ska skriva skrivbordsprogram för Windows.
Att utveckla program i Java
I detta avsnitt sÄ kommer du att kunna lÀsa om vad du behöver installera för program för att kunna börja utveckla program i Java. Och det ska sÀgas direkt, det Àr rÀtt komplext detta. Men vi ska göra vÄrt bÀsta i att berÀtta om det pÄ ett greppbart sÀtt.
Om du kÀnner att detta avsnitt tills vidare Àr ointressant sÄ kan du fortsÀtta och lÀsa om hur du installerar och kommer igÄng med IntelliJ. Det du kan lÀsa om hÀr Àr alltsÄ ingen förutsÀttning att förstÄ för att du ska kunna börja skriva dina första koder.
Java bestÄr i alla fall av tre grundlÀggande paket av mjukvara som samverkar för att kunna utveckla program i Java och köra dessa.
3 Hello World
Utskriften âHello Worldâ
Programsatsen under lupp . . . .
. . 21
22
Kommentarer?
Sammanfattning
Stunden Àr kommen för att du ska börja skriva dina första körbara koder. Sedan kommer du bara att utveckla dina kunskaper genom kommande kapitel och dina program kommer bli alltmer omfattande och anvÀndbara. Och roliga att skriva koden för.
Detta kapitel kommer att bli ett förhĂ„llandevis kort sĂ„dant och utgör startskottet pĂ„ din resa i kodandets vĂ€rld. Du ska skriva ett program som skriver ut en klassisk text âHello Worldâ som brukar utgöra det allra första programmet som en programmere skriver.
Ja, utskriften âHello Worldâ har en liten sĂ€rskild plats i mĂ„nga programmerares hjĂ€rtan. Den brukar alltsĂ„ utgöra ett grundlĂ€ggande program som inte tar emot nĂ„gon text alls frĂ„n tangentbordet, utan enbart skriver ut en text. Programmet bygger dĂ€rmed pĂ„ en kod som innefattar den allra mest grundlĂ€ggande syntax i ett programmeringssprĂ„k.
Dessutom sÄ brukar programmeraren vilja testa utvecklings- och körmiljön sÄ att koden kan kompileras korrekt och bli ett körbart program, och detta ska inte underskattas. För att du ska kunna köra mer komplexa program lÀngre fram sÄ Àr det ju rimligt att ditt ramverk kan hantera en enkel utskrift. Vi kan kalla detta för en hÀlsocheck av utvecklingsmiljön.
Utskriften âHello Worldâ
I kodexempel (1) sĂ„ har vi skrivit en programsats som skriver ut texten âHello Worldâ pĂ„ skĂ€rmen.
1 //Exempel 1: Utskrift av âHello worldâ
2
3 . public class Main
4 { 5 public static void main(String[] args) //Metoden main()
6 . {
7 . //Kodblock som tillhör metoden main() börjar : Du skriver all din kod hÀr .
8 System out println(âHello world!â); //En programsats för utskrift
9 //Kodblock som tillhör metoden main() slutar : Du slutar skriva all din kod hÀr
10 . }
11 . }
23
24
Du fÄr nu inledningsvis ha instÀllningen att den kod som du skriver ska hamna innanför de innersta mÄsvingarna. Den kod som tillhör en uppsÀttning mÄsvingar kallas för ett kodblock. Det finns en del kryptisk kod utanför detta kodblock och som du bör förbise sÄ hÀr i början men vill du sÀtta tÀnderna i hela grundkoden som du kan se i exemplet (1) sÄ kan du lÀsa om detta i bilagan.
Den programsats (eng: statement) som skapar sjÀlva utskriften kan se se pÄ kodrad 8.
En programsats Àr en ÄtgÀrd i koden som avslutas med ett semikolon. Och som kan liknas vid en mening i vanligt skriftsprÄk.
NÀr vi syftar till en programsats sÄ handlar det om en kod som avslutas med ett semikolon. Och koden gör en sak. LÀngre fram i boken sÄ kommer du börja jobba med villkor och dÄ kan man ocksÄ prata om uttryck (engelska expressions).
Vi kommer sÄ lÄngt som möjligt att anvÀnda begreppet programsats i boken. Det finns mÄnga definitioner pÄ en programsats och vi kan exempelvis kalla den för en enskild enhet för exekvering som inte utvÀrderar nÄgonting. Vi har nÀmnt att en annan typ av kod i stÀllet kan utvÀrdera nÄgot och dÄ kallas det för uttryck.
Om du befinner dig i ditt hus och du bestÀmmer dig för att gÄ ut oavsett vÀder sÄ Àr det en sats. Men om du i stÀllet funderar över att gÄ ut, men bara om temperaturen Àr över 20 grader, sÄ Àr det i stÀllet ett uttryck. Innan du gÄr ut kommer du först utvÀrdera om vÀdret Àr tillrÀckligt bra.
Programsatsen under lupp
Ăven om konceptet med ett objektorienterat paradigm Ă€r nĂ„got som du direkt uttryckligen kommer att arbeta med förrĂ€n i slutet av lĂ€roboken. DĂ€remot kan du ha den insikten att kod i ett sprĂ„k som Java konstrueras utifrĂ„n klasser (och dĂ€rmed objekt) samt metoder. Dessa begrepp förklarade vi i föregĂ„ende kapitel.
Och programsatsen i frÄga beskriver just detta sÀtt att bygga koden. System (1) Àr en vanlig klass som ingÄr i Javas bibliotek och som frÀmst innehÄller metoder för att hantera in- och utmatningar.

För att anvÀnda resurser som ingÄr i en klass sÄ skriver du klassens namn följt av en punkt (2). Detta tecken kallas för en medlemsoperator (eng: member operator) och dÄ syftar namnet alltsÄ till att vi berÀttar för koden att vi nu vill komma Ät de medlemmar som tillhör klassen och som föregÄr punkten.
4 Variabler
Att skapa en variabel
Mer om datatyper i Java
Att skapa och anvÀnda variabler
Inmatningar i programmet
36
att namnge variabler
Med all respekt för programmet som kan skriva ut âHello Worldâ men det hĂ€nder inte sĂ„ dĂ€r vĂ€ldigt mycket. För att vi ska kunna ta nĂ€sta steg och involvera anvĂ€ndaren i programmet sĂ„ behöver vi lĂ€ra oss att anvĂ€nda variabler.
En fundamental komponent i alla programmeringssprÄk Àr variabler som Àr ett sÀtt för oss att hantera vÀrden. Dessa vÀrden kan vara av olika typer som text, heltal och decimaltal. Vi kan ge en variabel ett vÀrde direkt i koden, men Ànnu mer spÀnnande blir det nÀr vi ber anvÀndaren att mata in vÀrdet. DÄ öppnas Àntligen dörrarna för att vi ska kunna skapa interaktiva program. AlltsÄ att anvÀndaren fÄr en aktiv roll i programmet, att det sker ett samspel mellan anvÀndaren och datorn.
I detta kapitel sÄ kommer du att fÄ lÀra dig att hantera variabler och olika typer av vÀrden. Detta kommer du behöva tampas med ett tag. Sedan kommer du ocksÄ att lÀra dig hantera inmatningar frÄn anvÀndaren, som dÄ alltsÄ Àr en förutsÀttning för att skapa en interaktion med programmet.
Att skapa en variabel
En variabel Àr oavsett en plats i ett program dÀr vi kan lagra ett vÀrde, och för att Ästadkomma detta sÄ behöver du tÀnka pÄ tre moment.
NedanstÄende beskrivning utgÄr ifrÄn scenariot att du skapar tre olika variabler i koden och som alla kan lagra ett specifikt typ av vÀrde.
1 //Exempel 1: Tre variabler med olika datatyper
2
3 . int wholeNumber = 15;
4 double decimalNumber = 3 14159;
5 String letters = âhejâ;
I kodexemplet (1) kan du se en kod som skapar de tre variabler vilket involverar tre moment:
Namnge variabeln
Du behöver först bestÀmma namnet pÄ variabeln (1) och detta kommer du att mÀrka Àr inte sÄ lÀtt som det lÄter. I alla fall nÀr det kommer till att vÀlja bra namn för variabler. Men försök att vÀlja ett namn som Äterspeglar vad variabeln lagrar för vÀrde.

Vi kommer att Äterkomma till namngivning av variabler titt som tÀtt genom boken.
I bilden sĂ„ har vi exempelvis gett en variabel namnet âwholeNumberâ och för detta exempel fĂ„r vi lov att sĂ€ga att det Ă€r ett tydligt och lĂ€mpligt namn. Men i kommande program sĂ„ Ă€r det troligtvis inget vidare bra namn.
FaststÀlla en datatyp
Utöver att ge en variabel ett namn sÄ behöver du ocksÄ faststÀlla vilken typ av vÀrde som den ska kunna lagra (2). Inledningsvis sÄ kommer du att jobba med tre sÄdana:
âą Datatypen int som kan lagra heltal.
⹠Datatypen String som kan lagra tecken, bokstÀver och siffror.
âą Datatypen double som kan lagra decimaltal.
Vi kan tÀnka oss att dessa hinkar ser olika ut beroende pÄ typen den hanterar. Exempelvis kan olika datatyper hantera olika stora vÀrden, och dÄ kan hinkarna vara mindre eller större.
Om du skulle försöka stoppa in bokstÀver i en hink som Àr gjord för att lagra heltal, sÄ kommer heltalshinken protestera sÄ vÄldsamt att programmet kraschar (om anvÀndaren har matat in en uppsÀttning tecken nÀr programmet förvÀntar sig ett tal).
Denna problematik kommer vi Äterkomma till, bÄde i detta kapitel men framför allt i kapitlet om undantagshantering lÀngre fram i boken.
PROGRAMMERING 1 MED JAVA
Boken Àr skriven för dig som vill lÀra dig programmering med Java frÄn grunden. Programmering Àr utvecklande pÄ flera sÀtt, du kommer att utveckla din problemlösningsförmÄga och din logiska tankeförmÄga.
LikasÄ kommer du att fÄ trÀna upp ditt tÄlamod och din förmÄga att uppmÀrksamma detaljer och vÄr utgÄngspunkt nÀr vi skrev boken Àr att programmering Àr lika mycket ett kreativt omrÄde som ett tekniskt.
I denna lÀrobok sÄ fÄr du lÀra dig det som krÀvs för att du ska fÄ en stabil grund att stÄ pÄ inför ytterligare studier och med mer avancerad programmering. Du kommer att fÄ lÀra dig om variabler och vektorer som Àr tvÄ olika sÀtt att lagra vÀrden pÄ. Vidare kommer du att fÄ lÀra dig att anvÀnda kontrollstrukturer som anvÀnds för att styra program i olika riktningar. Som vi ofta vill ska styras av anvÀndaren till programmering. Vidare sÄ kommer du att fÄ lÀra dig att anvÀnda funktioner som anvÀnds för att gruppera koder som fyller ett sÀrskilt syfte och att vi sedan kan anvÀnda den uppsÀttning kod nÀr vi behöver den. PÄ samma sÀtt som att vi har olika verktyg i en verktygslÄda och som alla har en specifik uppgift, en funktionalitet.
Du kommer fÄ lÀsa om vad som anses vara en bra kod. Hur du kommenterar och dokumenterar kod, hur du strukturerar koden och hur du ska tÀnka för att efterstrÀva enkel kod i förmÄn för onödigt svÄr kod. LikasÄ kommer du att fÄ lÀra dig om vad som utmÀrker Java som programmeringssprÄk och vad som krÀvs för att du ska kunna skriva dina allra första program. Boken Àr grundad i ett paradigm eller tankesÀtt som kallas för objektorienterad programmering. Det innebÀr att du lÀr dig att skriva klasser som representerar saker eller sÄ kallade entiteter i vÄr omvÀrld, och att du sedan kan skapa förekomster av dessa som kallas för objekt.
Boken Àr skriven utifrÄn gymnasieskolans lÀroplan och de riktlinjer som ligger till grund för kursen Programmering 1.