styrande_satser

26
7/25/2019 styrande_satser http://slidepdf.com/reader/full/styrandesatser 1/26 Styrande satser Lektion 4 Jonas Lundberg, kontor B3024 [email protected] Slides och Java-exempel finns i Moodle November 15, 2014 The Software Technology Group Styrande satser 1(26)

Transcript of styrande_satser

Page 1: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 126

Styrande satserLektion 4

Jonas Lundberg kontor B3024

JonasLundberglnuse

Slides och Java-exempel finns i Moodle

November 15 2014

The Software Technology Group

Styrande satser 1(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 226

Styrande satser

Mha styrande satser (eng control statements

) kan programmet valja enav era tankbara exekveringsvagar eller upprepa samma sekvens av satserera ganger

Fram tills nu

1 Sekvensiell exekvering (uppifran och ned)2 Metodanrop rArr hopp till annan plats

Styrande satserSelektiva (eller villkorade ) satserSelektion rArr valj en av era tankbara vagarI Java if- eller switch-satsen

Iterativa (eller loop) satserIteration rArr upprepa samma sats-sekvens era gangerI Java while- do - eller for-satsen

Introduktion The Software Technology Group

Styrande satser 2(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 326

Agenda ndash Styrande satser

Selektiva satserif-satsen ( Viktig )villkors-satsen switch-satsen

Iterativa satserwhile-satsen ( Viktig )do-satsenfor-satsen ( Viktig )

Nastlade satser

Lasanvisningar Kapitel 3 och 4Uppgifter 1-9 Lab 2

Introduktion The Software Technology Group

Styrande satser 3(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 426

Exempel TentaResultatjavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift

Ange tentaresutat 78Betyg Val Godkant

Introduktion The Software Technology Group

Styrande satser 4(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 526

Boolska uttryckif ( res gt =MIN ampamp res lt G )

Systemout println (rdquoBetyg Underkantrdquo)

resgt=MIN ampamp resltG ar ett sk boolskt uttryck(eng boolean expression )

Boolska uttryck beraknas till vardet sant ( true ) eller falskt (false )

if-satsen exekveras endast om det boolska uttrycket far vardet true Ett boolskt uttryck byggs vanligen upp av

1 Numeriska varden (tex 17 -100 314 ) ellernumeriska variabler (tex MAX PI int n )

2 Jamfumlorelse-operatorerna lt lt= gt gt= == =

3 De logiska operatorerna AND ( ampamp ) OR ( || ) NOT ( )4 Metoder som returnerar boolean

(Tex metoden CharacterisUpperCase(char c) ) Notera Resultatet av en jamfumlorelse (tex res lt G ) ar sant eller falsktrArr betrakta varje jamforelse som ett pastaende

Boolska uttryck The Software Technology Group

Styrande satser 5(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 626

Logiska operatorer

AND A ampamp B ar sant om bade A och B ar sanna annars falskt

OR A || B ar sant om A ocheller B ar sanna annars falskt

NOT byter logiskt varde Dvs A ar sant om A ar falsk

SanningstabellerA B A ampamp B A || B A

==== ==== ======== ======== ====true true true true falsetrue false false truefalse true false true truefalse false false false

Boolska uttryck The Software Technology Group

Styrande satser 6(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 726

Uppgifter Sant eller falskt

12 gt 10 ampamp 9 lt 6 = true ampamp false = false

5 gt 4 || 8 lt 6 = true || false = true

7 lt 4 || 12 gt 8 ampamp 4 lt 8 = false || true ampamp true = true

6 gt 3 ampamp (5 lt 3) ampamp (8 gt 3)= true ampamp false ampamp true

= true ampamp true ampamp true = true

Vilket varde har f oljande uttryck10 + 20 lt 3 + 4 lowast 5

Svar Se nasta slide

Boolska uttryck The Software Technology Group

Styrande satser 7(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 826

Operator-prioritet

10 + 20 lt 3 + 4 5 (FALSKT eftersom 30 gt 23)10 == 20 || 3 + 4 gt 5 (SANT eftersom 7gt5 uml ar sant)10 = 20 ampamp (7gt5) || 5gt=5 (==gt true ampamp false || true ==gt SANT)

Olika operationer har olika prioritet De med h ogst prioritet utfumlors forst Mha av paranteser kan man andra (styra) ordningenTex 3+45 = (3+4)5

Numersika operationer har hogre prioritet an +- Dvs beraknas fumlore +-

Logiska operationer beraknas fumlore ampamp som beraknas f ore ||Dvs A || B ampamp C beraknas som A || (BampampC)

Generellt sett NumOP gt JamfOP gt LogOP Fel anvanding rArr typfel rArr kompilatorfel

if (MIN lt= res lt G) ==gt truefalse lt G ==gt kompilatorfelSystemoutprintln(Betyg Godkuml ant)

Boolska uttryck The Software Technology Group

Styrande satser 8(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 926

Exempel TentaResultatjava (Igen)public static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift Ange tentaresutat 78Betyg Val Godkant

Boolska uttryck The Software Technology Group

Styrande satser 9(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1026

If-satsenIf-satsen nns i olika varianter

if (n gt 1) if (n == 0) if (n == 0)gor n˚agot huml ar fall 1 fall 1

else if (n == -1) else if (n == -1)fall 2 fall 2

if (n gt 1) else if (n == 1) else if (n == 1)gor n˚agot huml ar fall 3 fall 3

else elseannars huml ar uml ovriga fall

Notera

Forsta villkoret (uppifran) som ger true exekveras Indenteringen (indragningen) har ingen effekt Det gor bara kodenmer lattlast

Sista varianten Inget av fallen utfors om n = 0 plusmn 1rArr satsen hoppas over

Selektiva satser The Software Technology Group

Styrande satser 10(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1126

Satsblock Troligen felaktigtif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Bumlattre luml osningif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Om if-satsens villkor ar uppfyllt utf ors efterfoljande

sats (en instruktion som avslutas med ) ellersatsblock (era satser inuti ) Ovanstande galler aven else if () och else konstruktioner Notera Indenteringen (indragningen) ar viktig fumlor forstaelsen men denkan ocksa luras om den anvands felaktigt

Selektiva satser The Software Technology Group

Styrande satser 11(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 2: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 226

Styrande satser

Mha styrande satser (eng control statements

) kan programmet valja enav era tankbara exekveringsvagar eller upprepa samma sekvens av satserera ganger

Fram tills nu

1 Sekvensiell exekvering (uppifran och ned)2 Metodanrop rArr hopp till annan plats

Styrande satserSelektiva (eller villkorade ) satserSelektion rArr valj en av era tankbara vagarI Java if- eller switch-satsen

Iterativa (eller loop) satserIteration rArr upprepa samma sats-sekvens era gangerI Java while- do - eller for-satsen

Introduktion The Software Technology Group

Styrande satser 2(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 326

Agenda ndash Styrande satser

Selektiva satserif-satsen ( Viktig )villkors-satsen switch-satsen

Iterativa satserwhile-satsen ( Viktig )do-satsenfor-satsen ( Viktig )

Nastlade satser

Lasanvisningar Kapitel 3 och 4Uppgifter 1-9 Lab 2

Introduktion The Software Technology Group

Styrande satser 3(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 426

Exempel TentaResultatjavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift

Ange tentaresutat 78Betyg Val Godkant

Introduktion The Software Technology Group

Styrande satser 4(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 526

Boolska uttryckif ( res gt =MIN ampamp res lt G )

Systemout println (rdquoBetyg Underkantrdquo)

resgt=MIN ampamp resltG ar ett sk boolskt uttryck(eng boolean expression )

Boolska uttryck beraknas till vardet sant ( true ) eller falskt (false )

if-satsen exekveras endast om det boolska uttrycket far vardet true Ett boolskt uttryck byggs vanligen upp av

1 Numeriska varden (tex 17 -100 314 ) ellernumeriska variabler (tex MAX PI int n )

2 Jamfumlorelse-operatorerna lt lt= gt gt= == =

3 De logiska operatorerna AND ( ampamp ) OR ( || ) NOT ( )4 Metoder som returnerar boolean

(Tex metoden CharacterisUpperCase(char c) ) Notera Resultatet av en jamfumlorelse (tex res lt G ) ar sant eller falsktrArr betrakta varje jamforelse som ett pastaende

Boolska uttryck The Software Technology Group

Styrande satser 5(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 626

Logiska operatorer

AND A ampamp B ar sant om bade A och B ar sanna annars falskt

OR A || B ar sant om A ocheller B ar sanna annars falskt

NOT byter logiskt varde Dvs A ar sant om A ar falsk

SanningstabellerA B A ampamp B A || B A

==== ==== ======== ======== ====true true true true falsetrue false false truefalse true false true truefalse false false false

Boolska uttryck The Software Technology Group

Styrande satser 6(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 726

Uppgifter Sant eller falskt

12 gt 10 ampamp 9 lt 6 = true ampamp false = false

5 gt 4 || 8 lt 6 = true || false = true

7 lt 4 || 12 gt 8 ampamp 4 lt 8 = false || true ampamp true = true

6 gt 3 ampamp (5 lt 3) ampamp (8 gt 3)= true ampamp false ampamp true

= true ampamp true ampamp true = true

Vilket varde har f oljande uttryck10 + 20 lt 3 + 4 lowast 5

Svar Se nasta slide

Boolska uttryck The Software Technology Group

Styrande satser 7(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 826

Operator-prioritet

10 + 20 lt 3 + 4 5 (FALSKT eftersom 30 gt 23)10 == 20 || 3 + 4 gt 5 (SANT eftersom 7gt5 uml ar sant)10 = 20 ampamp (7gt5) || 5gt=5 (==gt true ampamp false || true ==gt SANT)

Olika operationer har olika prioritet De med h ogst prioritet utfumlors forst Mha av paranteser kan man andra (styra) ordningenTex 3+45 = (3+4)5

Numersika operationer har hogre prioritet an +- Dvs beraknas fumlore +-

Logiska operationer beraknas fumlore ampamp som beraknas f ore ||Dvs A || B ampamp C beraknas som A || (BampampC)

Generellt sett NumOP gt JamfOP gt LogOP Fel anvanding rArr typfel rArr kompilatorfel

if (MIN lt= res lt G) ==gt truefalse lt G ==gt kompilatorfelSystemoutprintln(Betyg Godkuml ant)

Boolska uttryck The Software Technology Group

Styrande satser 8(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 926

Exempel TentaResultatjava (Igen)public static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift Ange tentaresutat 78Betyg Val Godkant

Boolska uttryck The Software Technology Group

Styrande satser 9(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1026

If-satsenIf-satsen nns i olika varianter

if (n gt 1) if (n == 0) if (n == 0)gor n˚agot huml ar fall 1 fall 1

else if (n == -1) else if (n == -1)fall 2 fall 2

if (n gt 1) else if (n == 1) else if (n == 1)gor n˚agot huml ar fall 3 fall 3

else elseannars huml ar uml ovriga fall

Notera

Forsta villkoret (uppifran) som ger true exekveras Indenteringen (indragningen) har ingen effekt Det gor bara kodenmer lattlast

Sista varianten Inget av fallen utfors om n = 0 plusmn 1rArr satsen hoppas over

Selektiva satser The Software Technology Group

Styrande satser 10(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1126

Satsblock Troligen felaktigtif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Bumlattre luml osningif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Om if-satsens villkor ar uppfyllt utf ors efterfoljande

sats (en instruktion som avslutas med ) ellersatsblock (era satser inuti ) Ovanstande galler aven else if () och else konstruktioner Notera Indenteringen (indragningen) ar viktig fumlor forstaelsen men denkan ocksa luras om den anvands felaktigt

Selektiva satser The Software Technology Group

Styrande satser 11(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 3: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 326

Agenda ndash Styrande satser

Selektiva satserif-satsen ( Viktig )villkors-satsen switch-satsen

Iterativa satserwhile-satsen ( Viktig )do-satsenfor-satsen ( Viktig )

Nastlade satser

Lasanvisningar Kapitel 3 och 4Uppgifter 1-9 Lab 2

Introduktion The Software Technology Group

Styrande satser 3(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 426

Exempel TentaResultatjavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift

Ange tentaresutat 78Betyg Val Godkant

Introduktion The Software Technology Group

Styrande satser 4(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 526

Boolska uttryckif ( res gt =MIN ampamp res lt G )

Systemout println (rdquoBetyg Underkantrdquo)

resgt=MIN ampamp resltG ar ett sk boolskt uttryck(eng boolean expression )

Boolska uttryck beraknas till vardet sant ( true ) eller falskt (false )

if-satsen exekveras endast om det boolska uttrycket far vardet true Ett boolskt uttryck byggs vanligen upp av

1 Numeriska varden (tex 17 -100 314 ) ellernumeriska variabler (tex MAX PI int n )

2 Jamfumlorelse-operatorerna lt lt= gt gt= == =

3 De logiska operatorerna AND ( ampamp ) OR ( || ) NOT ( )4 Metoder som returnerar boolean

(Tex metoden CharacterisUpperCase(char c) ) Notera Resultatet av en jamfumlorelse (tex res lt G ) ar sant eller falsktrArr betrakta varje jamforelse som ett pastaende

Boolska uttryck The Software Technology Group

Styrande satser 5(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 626

Logiska operatorer

AND A ampamp B ar sant om bade A och B ar sanna annars falskt

OR A || B ar sant om A ocheller B ar sanna annars falskt

NOT byter logiskt varde Dvs A ar sant om A ar falsk

SanningstabellerA B A ampamp B A || B A

==== ==== ======== ======== ====true true true true falsetrue false false truefalse true false true truefalse false false false

Boolska uttryck The Software Technology Group

Styrande satser 6(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 726

Uppgifter Sant eller falskt

12 gt 10 ampamp 9 lt 6 = true ampamp false = false

5 gt 4 || 8 lt 6 = true || false = true

7 lt 4 || 12 gt 8 ampamp 4 lt 8 = false || true ampamp true = true

6 gt 3 ampamp (5 lt 3) ampamp (8 gt 3)= true ampamp false ampamp true

= true ampamp true ampamp true = true

Vilket varde har f oljande uttryck10 + 20 lt 3 + 4 lowast 5

Svar Se nasta slide

Boolska uttryck The Software Technology Group

Styrande satser 7(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 826

Operator-prioritet

10 + 20 lt 3 + 4 5 (FALSKT eftersom 30 gt 23)10 == 20 || 3 + 4 gt 5 (SANT eftersom 7gt5 uml ar sant)10 = 20 ampamp (7gt5) || 5gt=5 (==gt true ampamp false || true ==gt SANT)

Olika operationer har olika prioritet De med h ogst prioritet utfumlors forst Mha av paranteser kan man andra (styra) ordningenTex 3+45 = (3+4)5

Numersika operationer har hogre prioritet an +- Dvs beraknas fumlore +-

Logiska operationer beraknas fumlore ampamp som beraknas f ore ||Dvs A || B ampamp C beraknas som A || (BampampC)

Generellt sett NumOP gt JamfOP gt LogOP Fel anvanding rArr typfel rArr kompilatorfel

if (MIN lt= res lt G) ==gt truefalse lt G ==gt kompilatorfelSystemoutprintln(Betyg Godkuml ant)

Boolska uttryck The Software Technology Group

Styrande satser 8(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 926

Exempel TentaResultatjava (Igen)public static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift Ange tentaresutat 78Betyg Val Godkant

Boolska uttryck The Software Technology Group

Styrande satser 9(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1026

If-satsenIf-satsen nns i olika varianter

if (n gt 1) if (n == 0) if (n == 0)gor n˚agot huml ar fall 1 fall 1

else if (n == -1) else if (n == -1)fall 2 fall 2

if (n gt 1) else if (n == 1) else if (n == 1)gor n˚agot huml ar fall 3 fall 3

else elseannars huml ar uml ovriga fall

Notera

Forsta villkoret (uppifran) som ger true exekveras Indenteringen (indragningen) har ingen effekt Det gor bara kodenmer lattlast

Sista varianten Inget av fallen utfors om n = 0 plusmn 1rArr satsen hoppas over

Selektiva satser The Software Technology Group

Styrande satser 10(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1126

Satsblock Troligen felaktigtif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Bumlattre luml osningif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Om if-satsens villkor ar uppfyllt utf ors efterfoljande

sats (en instruktion som avslutas med ) ellersatsblock (era satser inuti ) Ovanstande galler aven else if () och else konstruktioner Notera Indenteringen (indragningen) ar viktig fumlor forstaelsen men denkan ocksa luras om den anvands felaktigt

Selektiva satser The Software Technology Group

Styrande satser 11(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 4: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 426

Exempel TentaResultatjavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift

Ange tentaresutat 78Betyg Val Godkant

Introduktion The Software Technology Group

Styrande satser 4(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 526

Boolska uttryckif ( res gt =MIN ampamp res lt G )

Systemout println (rdquoBetyg Underkantrdquo)

resgt=MIN ampamp resltG ar ett sk boolskt uttryck(eng boolean expression )

Boolska uttryck beraknas till vardet sant ( true ) eller falskt (false )

if-satsen exekveras endast om det boolska uttrycket far vardet true Ett boolskt uttryck byggs vanligen upp av

1 Numeriska varden (tex 17 -100 314 ) ellernumeriska variabler (tex MAX PI int n )

2 Jamfumlorelse-operatorerna lt lt= gt gt= == =

3 De logiska operatorerna AND ( ampamp ) OR ( || ) NOT ( )4 Metoder som returnerar boolean

(Tex metoden CharacterisUpperCase(char c) ) Notera Resultatet av en jamfumlorelse (tex res lt G ) ar sant eller falsktrArr betrakta varje jamforelse som ett pastaende

Boolska uttryck The Software Technology Group

Styrande satser 5(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 626

Logiska operatorer

AND A ampamp B ar sant om bade A och B ar sanna annars falskt

OR A || B ar sant om A ocheller B ar sanna annars falskt

NOT byter logiskt varde Dvs A ar sant om A ar falsk

SanningstabellerA B A ampamp B A || B A

==== ==== ======== ======== ====true true true true falsetrue false false truefalse true false true truefalse false false false

Boolska uttryck The Software Technology Group

Styrande satser 6(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 726

Uppgifter Sant eller falskt

12 gt 10 ampamp 9 lt 6 = true ampamp false = false

5 gt 4 || 8 lt 6 = true || false = true

7 lt 4 || 12 gt 8 ampamp 4 lt 8 = false || true ampamp true = true

6 gt 3 ampamp (5 lt 3) ampamp (8 gt 3)= true ampamp false ampamp true

= true ampamp true ampamp true = true

Vilket varde har f oljande uttryck10 + 20 lt 3 + 4 lowast 5

Svar Se nasta slide

Boolska uttryck The Software Technology Group

Styrande satser 7(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 826

Operator-prioritet

10 + 20 lt 3 + 4 5 (FALSKT eftersom 30 gt 23)10 == 20 || 3 + 4 gt 5 (SANT eftersom 7gt5 uml ar sant)10 = 20 ampamp (7gt5) || 5gt=5 (==gt true ampamp false || true ==gt SANT)

Olika operationer har olika prioritet De med h ogst prioritet utfumlors forst Mha av paranteser kan man andra (styra) ordningenTex 3+45 = (3+4)5

Numersika operationer har hogre prioritet an +- Dvs beraknas fumlore +-

Logiska operationer beraknas fumlore ampamp som beraknas f ore ||Dvs A || B ampamp C beraknas som A || (BampampC)

Generellt sett NumOP gt JamfOP gt LogOP Fel anvanding rArr typfel rArr kompilatorfel

if (MIN lt= res lt G) ==gt truefalse lt G ==gt kompilatorfelSystemoutprintln(Betyg Godkuml ant)

Boolska uttryck The Software Technology Group

Styrande satser 8(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 926

Exempel TentaResultatjava (Igen)public static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift Ange tentaresutat 78Betyg Val Godkant

Boolska uttryck The Software Technology Group

Styrande satser 9(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1026

If-satsenIf-satsen nns i olika varianter

if (n gt 1) if (n == 0) if (n == 0)gor n˚agot huml ar fall 1 fall 1

else if (n == -1) else if (n == -1)fall 2 fall 2

if (n gt 1) else if (n == 1) else if (n == 1)gor n˚agot huml ar fall 3 fall 3

else elseannars huml ar uml ovriga fall

Notera

Forsta villkoret (uppifran) som ger true exekveras Indenteringen (indragningen) har ingen effekt Det gor bara kodenmer lattlast

Sista varianten Inget av fallen utfors om n = 0 plusmn 1rArr satsen hoppas over

Selektiva satser The Software Technology Group

Styrande satser 10(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1126

Satsblock Troligen felaktigtif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Bumlattre luml osningif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Om if-satsens villkor ar uppfyllt utf ors efterfoljande

sats (en instruktion som avslutas med ) ellersatsblock (era satser inuti ) Ovanstande galler aven else if () och else konstruktioner Notera Indenteringen (indragningen) ar viktig fumlor forstaelsen men denkan ocksa luras om den anvands felaktigt

Selektiva satser The Software Technology Group

Styrande satser 11(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 5: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 526

Boolska uttryckif ( res gt =MIN ampamp res lt G )

Systemout println (rdquoBetyg Underkantrdquo)

resgt=MIN ampamp resltG ar ett sk boolskt uttryck(eng boolean expression )

Boolska uttryck beraknas till vardet sant ( true ) eller falskt (false )

if-satsen exekveras endast om det boolska uttrycket far vardet true Ett boolskt uttryck byggs vanligen upp av

1 Numeriska varden (tex 17 -100 314 ) ellernumeriska variabler (tex MAX PI int n )

2 Jamfumlorelse-operatorerna lt lt= gt gt= == =

3 De logiska operatorerna AND ( ampamp ) OR ( || ) NOT ( )4 Metoder som returnerar boolean

(Tex metoden CharacterisUpperCase(char c) ) Notera Resultatet av en jamfumlorelse (tex res lt G ) ar sant eller falsktrArr betrakta varje jamforelse som ett pastaende

Boolska uttryck The Software Technology Group

Styrande satser 5(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 626

Logiska operatorer

AND A ampamp B ar sant om bade A och B ar sanna annars falskt

OR A || B ar sant om A ocheller B ar sanna annars falskt

NOT byter logiskt varde Dvs A ar sant om A ar falsk

SanningstabellerA B A ampamp B A || B A

==== ==== ======== ======== ====true true true true falsetrue false false truefalse true false true truefalse false false false

Boolska uttryck The Software Technology Group

Styrande satser 6(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 726

Uppgifter Sant eller falskt

12 gt 10 ampamp 9 lt 6 = true ampamp false = false

5 gt 4 || 8 lt 6 = true || false = true

7 lt 4 || 12 gt 8 ampamp 4 lt 8 = false || true ampamp true = true

6 gt 3 ampamp (5 lt 3) ampamp (8 gt 3)= true ampamp false ampamp true

= true ampamp true ampamp true = true

Vilket varde har f oljande uttryck10 + 20 lt 3 + 4 lowast 5

Svar Se nasta slide

Boolska uttryck The Software Technology Group

Styrande satser 7(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 826

Operator-prioritet

10 + 20 lt 3 + 4 5 (FALSKT eftersom 30 gt 23)10 == 20 || 3 + 4 gt 5 (SANT eftersom 7gt5 uml ar sant)10 = 20 ampamp (7gt5) || 5gt=5 (==gt true ampamp false || true ==gt SANT)

Olika operationer har olika prioritet De med h ogst prioritet utfumlors forst Mha av paranteser kan man andra (styra) ordningenTex 3+45 = (3+4)5

Numersika operationer har hogre prioritet an +- Dvs beraknas fumlore +-

Logiska operationer beraknas fumlore ampamp som beraknas f ore ||Dvs A || B ampamp C beraknas som A || (BampampC)

Generellt sett NumOP gt JamfOP gt LogOP Fel anvanding rArr typfel rArr kompilatorfel

if (MIN lt= res lt G) ==gt truefalse lt G ==gt kompilatorfelSystemoutprintln(Betyg Godkuml ant)

Boolska uttryck The Software Technology Group

Styrande satser 8(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 926

Exempel TentaResultatjava (Igen)public static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift Ange tentaresutat 78Betyg Val Godkant

Boolska uttryck The Software Technology Group

Styrande satser 9(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1026

If-satsenIf-satsen nns i olika varianter

if (n gt 1) if (n == 0) if (n == 0)gor n˚agot huml ar fall 1 fall 1

else if (n == -1) else if (n == -1)fall 2 fall 2

if (n gt 1) else if (n == 1) else if (n == 1)gor n˚agot huml ar fall 3 fall 3

else elseannars huml ar uml ovriga fall

Notera

Forsta villkoret (uppifran) som ger true exekveras Indenteringen (indragningen) har ingen effekt Det gor bara kodenmer lattlast

Sista varianten Inget av fallen utfors om n = 0 plusmn 1rArr satsen hoppas over

Selektiva satser The Software Technology Group

Styrande satser 10(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1126

Satsblock Troligen felaktigtif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Bumlattre luml osningif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Om if-satsens villkor ar uppfyllt utf ors efterfoljande

sats (en instruktion som avslutas med ) ellersatsblock (era satser inuti ) Ovanstande galler aven else if () och else konstruktioner Notera Indenteringen (indragningen) ar viktig fumlor forstaelsen men denkan ocksa luras om den anvands felaktigt

Selektiva satser The Software Technology Group

Styrande satser 11(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 6: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 626

Logiska operatorer

AND A ampamp B ar sant om bade A och B ar sanna annars falskt

OR A || B ar sant om A ocheller B ar sanna annars falskt

NOT byter logiskt varde Dvs A ar sant om A ar falsk

SanningstabellerA B A ampamp B A || B A

==== ==== ======== ======== ====true true true true falsetrue false false truefalse true false true truefalse false false false

Boolska uttryck The Software Technology Group

Styrande satser 6(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 726

Uppgifter Sant eller falskt

12 gt 10 ampamp 9 lt 6 = true ampamp false = false

5 gt 4 || 8 lt 6 = true || false = true

7 lt 4 || 12 gt 8 ampamp 4 lt 8 = false || true ampamp true = true

6 gt 3 ampamp (5 lt 3) ampamp (8 gt 3)= true ampamp false ampamp true

= true ampamp true ampamp true = true

Vilket varde har f oljande uttryck10 + 20 lt 3 + 4 lowast 5

Svar Se nasta slide

Boolska uttryck The Software Technology Group

Styrande satser 7(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 826

Operator-prioritet

10 + 20 lt 3 + 4 5 (FALSKT eftersom 30 gt 23)10 == 20 || 3 + 4 gt 5 (SANT eftersom 7gt5 uml ar sant)10 = 20 ampamp (7gt5) || 5gt=5 (==gt true ampamp false || true ==gt SANT)

Olika operationer har olika prioritet De med h ogst prioritet utfumlors forst Mha av paranteser kan man andra (styra) ordningenTex 3+45 = (3+4)5

Numersika operationer har hogre prioritet an +- Dvs beraknas fumlore +-

Logiska operationer beraknas fumlore ampamp som beraknas f ore ||Dvs A || B ampamp C beraknas som A || (BampampC)

Generellt sett NumOP gt JamfOP gt LogOP Fel anvanding rArr typfel rArr kompilatorfel

if (MIN lt= res lt G) ==gt truefalse lt G ==gt kompilatorfelSystemoutprintln(Betyg Godkuml ant)

Boolska uttryck The Software Technology Group

Styrande satser 8(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 926

Exempel TentaResultatjava (Igen)public static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift Ange tentaresutat 78Betyg Val Godkant

Boolska uttryck The Software Technology Group

Styrande satser 9(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1026

If-satsenIf-satsen nns i olika varianter

if (n gt 1) if (n == 0) if (n == 0)gor n˚agot huml ar fall 1 fall 1

else if (n == -1) else if (n == -1)fall 2 fall 2

if (n gt 1) else if (n == 1) else if (n == 1)gor n˚agot huml ar fall 3 fall 3

else elseannars huml ar uml ovriga fall

Notera

Forsta villkoret (uppifran) som ger true exekveras Indenteringen (indragningen) har ingen effekt Det gor bara kodenmer lattlast

Sista varianten Inget av fallen utfors om n = 0 plusmn 1rArr satsen hoppas over

Selektiva satser The Software Technology Group

Styrande satser 10(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1126

Satsblock Troligen felaktigtif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Bumlattre luml osningif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Om if-satsens villkor ar uppfyllt utf ors efterfoljande

sats (en instruktion som avslutas med ) ellersatsblock (era satser inuti ) Ovanstande galler aven else if () och else konstruktioner Notera Indenteringen (indragningen) ar viktig fumlor forstaelsen men denkan ocksa luras om den anvands felaktigt

Selektiva satser The Software Technology Group

Styrande satser 11(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 7: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 726

Uppgifter Sant eller falskt

12 gt 10 ampamp 9 lt 6 = true ampamp false = false

5 gt 4 || 8 lt 6 = true || false = true

7 lt 4 || 12 gt 8 ampamp 4 lt 8 = false || true ampamp true = true

6 gt 3 ampamp (5 lt 3) ampamp (8 gt 3)= true ampamp false ampamp true

= true ampamp true ampamp true = true

Vilket varde har f oljande uttryck10 + 20 lt 3 + 4 lowast 5

Svar Se nasta slide

Boolska uttryck The Software Technology Group

Styrande satser 7(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 826

Operator-prioritet

10 + 20 lt 3 + 4 5 (FALSKT eftersom 30 gt 23)10 == 20 || 3 + 4 gt 5 (SANT eftersom 7gt5 uml ar sant)10 = 20 ampamp (7gt5) || 5gt=5 (==gt true ampamp false || true ==gt SANT)

Olika operationer har olika prioritet De med h ogst prioritet utfumlors forst Mha av paranteser kan man andra (styra) ordningenTex 3+45 = (3+4)5

Numersika operationer har hogre prioritet an +- Dvs beraknas fumlore +-

Logiska operationer beraknas fumlore ampamp som beraknas f ore ||Dvs A || B ampamp C beraknas som A || (BampampC)

Generellt sett NumOP gt JamfOP gt LogOP Fel anvanding rArr typfel rArr kompilatorfel

if (MIN lt= res lt G) ==gt truefalse lt G ==gt kompilatorfelSystemoutprintln(Betyg Godkuml ant)

Boolska uttryck The Software Technology Group

Styrande satser 8(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 926

Exempel TentaResultatjava (Igen)public static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift Ange tentaresutat 78Betyg Val Godkant

Boolska uttryck The Software Technology Group

Styrande satser 9(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1026

If-satsenIf-satsen nns i olika varianter

if (n gt 1) if (n == 0) if (n == 0)gor n˚agot huml ar fall 1 fall 1

else if (n == -1) else if (n == -1)fall 2 fall 2

if (n gt 1) else if (n == 1) else if (n == 1)gor n˚agot huml ar fall 3 fall 3

else elseannars huml ar uml ovriga fall

Notera

Forsta villkoret (uppifran) som ger true exekveras Indenteringen (indragningen) har ingen effekt Det gor bara kodenmer lattlast

Sista varianten Inget av fallen utfors om n = 0 plusmn 1rArr satsen hoppas over

Selektiva satser The Software Technology Group

Styrande satser 10(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1126

Satsblock Troligen felaktigtif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Bumlattre luml osningif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Om if-satsens villkor ar uppfyllt utf ors efterfoljande

sats (en instruktion som avslutas med ) ellersatsblock (era satser inuti ) Ovanstande galler aven else if () och else konstruktioner Notera Indenteringen (indragningen) ar viktig fumlor forstaelsen men denkan ocksa luras om den anvands felaktigt

Selektiva satser The Software Technology Group

Styrande satser 11(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 8: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 826

Operator-prioritet

10 + 20 lt 3 + 4 5 (FALSKT eftersom 30 gt 23)10 == 20 || 3 + 4 gt 5 (SANT eftersom 7gt5 uml ar sant)10 = 20 ampamp (7gt5) || 5gt=5 (==gt true ampamp false || true ==gt SANT)

Olika operationer har olika prioritet De med h ogst prioritet utfumlors forst Mha av paranteser kan man andra (styra) ordningenTex 3+45 = (3+4)5

Numersika operationer har hogre prioritet an +- Dvs beraknas fumlore +-

Logiska operationer beraknas fumlore ampamp som beraknas f ore ||Dvs A || B ampamp C beraknas som A || (BampampC)

Generellt sett NumOP gt JamfOP gt LogOP Fel anvanding rArr typfel rArr kompilatorfel

if (MIN lt= res lt G) ==gt truefalse lt G ==gt kompilatorfelSystemoutprintln(Betyg Godkuml ant)

Boolska uttryck The Software Technology Group

Styrande satser 8(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 926

Exempel TentaResultatjava (Igen)public static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift Ange tentaresutat 78Betyg Val Godkant

Boolska uttryck The Software Technology Group

Styrande satser 9(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1026

If-satsenIf-satsen nns i olika varianter

if (n gt 1) if (n == 0) if (n == 0)gor n˚agot huml ar fall 1 fall 1

else if (n == -1) else if (n == -1)fall 2 fall 2

if (n gt 1) else if (n == 1) else if (n == 1)gor n˚agot huml ar fall 3 fall 3

else elseannars huml ar uml ovriga fall

Notera

Forsta villkoret (uppifran) som ger true exekveras Indenteringen (indragningen) har ingen effekt Det gor bara kodenmer lattlast

Sista varianten Inget av fallen utfors om n = 0 plusmn 1rArr satsen hoppas over

Selektiva satser The Software Technology Group

Styrande satser 10(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1126

Satsblock Troligen felaktigtif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Bumlattre luml osningif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Om if-satsens villkor ar uppfyllt utf ors efterfoljande

sats (en instruktion som avslutas med ) ellersatsblock (era satser inuti ) Ovanstande galler aven else if () och else konstruktioner Notera Indenteringen (indragningen) ar viktig fumlor forstaelsen men denkan ocksa luras om den anvands felaktigt

Selektiva satser The Software Technology Group

Styrande satser 11(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 9: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 926

Exempel TentaResultatjava (Igen)public static void main(String [] args)

Scanner scan = new Scanner(Systemin)nal int MIN=0 MAX=100 G=50 VG=75

Systemout print (rdquoAnge tentaresultat rdquo)int res = scannextInt ()

if ( resgt

=MIN ampamp reslt

G ) mellan MIN och G Systemout println (rdquoBetyg Underkantrdquo)else if (res gt =G ampamp res lt VG) mellan G och VG

Systemout println (rdquoBetyg Godkantrdquo)else if (res gt =VG ampamp res lt =MAX) mellan VG och MAX

Systemout println (rdquoBetyg Val Godkantrdquo)else ogiltiga varden

Systemout println ( res +rdquo ar ett ogiltigt resultat rdquo )Systemout println (rdquoDet maste vara mellan rdquo+MIN+rdquo och rdquo+MAX)

Utskrift Ange tentaresutat 78Betyg Val Godkant

Boolska uttryck The Software Technology Group

Styrande satser 9(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1026

If-satsenIf-satsen nns i olika varianter

if (n gt 1) if (n == 0) if (n == 0)gor n˚agot huml ar fall 1 fall 1

else if (n == -1) else if (n == -1)fall 2 fall 2

if (n gt 1) else if (n == 1) else if (n == 1)gor n˚agot huml ar fall 3 fall 3

else elseannars huml ar uml ovriga fall

Notera

Forsta villkoret (uppifran) som ger true exekveras Indenteringen (indragningen) har ingen effekt Det gor bara kodenmer lattlast

Sista varianten Inget av fallen utfors om n = 0 plusmn 1rArr satsen hoppas over

Selektiva satser The Software Technology Group

Styrande satser 10(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1126

Satsblock Troligen felaktigtif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Bumlattre luml osningif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Om if-satsens villkor ar uppfyllt utf ors efterfoljande

sats (en instruktion som avslutas med ) ellersatsblock (era satser inuti ) Ovanstande galler aven else if () och else konstruktioner Notera Indenteringen (indragningen) ar viktig fumlor forstaelsen men denkan ocksa luras om den anvands felaktigt

Selektiva satser The Software Technology Group

Styrande satser 11(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 10: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1026

If-satsenIf-satsen nns i olika varianter

if (n gt 1) if (n == 0) if (n == 0)gor n˚agot huml ar fall 1 fall 1

else if (n == -1) else if (n == -1)fall 2 fall 2

if (n gt 1) else if (n == 1) else if (n == 1)gor n˚agot huml ar fall 3 fall 3

else elseannars huml ar uml ovriga fall

Notera

Forsta villkoret (uppifran) som ger true exekveras Indenteringen (indragningen) har ingen effekt Det gor bara kodenmer lattlast

Sista varianten Inget av fallen utfors om n = 0 plusmn 1rArr satsen hoppas over

Selektiva satser The Software Technology Group

Styrande satser 10(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1126

Satsblock Troligen felaktigtif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Bumlattre luml osningif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Om if-satsens villkor ar uppfyllt utf ors efterfoljande

sats (en instruktion som avslutas med ) ellersatsblock (era satser inuti ) Ovanstande galler aven else if () och else konstruktioner Notera Indenteringen (indragningen) ar viktig fumlor forstaelsen men denkan ocksa luras om den anvands felaktigt

Selektiva satser The Software Technology Group

Styrande satser 11(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 11: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1126

Satsblock Troligen felaktigtif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Bumlattre luml osningif (resultat gt VG)

Systemoutprintln(Betyg Vuml al godkuml ant)Systemoutprintln(Str˚ alande)

Om if-satsens villkor ar uppfyllt utf ors efterfoljande

sats (en instruktion som avslutas med ) ellersatsblock (era satser inuti ) Ovanstande galler aven else if () och else konstruktioner Notera Indenteringen (indragningen) ar viktig fumlor forstaelsen men denkan ocksa luras om den anvands felaktigt

Selektiva satser The Software Technology Group

Styrande satser 11(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 12: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1226

Villkors-operatorn

Villkors-operatorn paminner om if-else satsenSkillnad den returnerar ett varde

int max = (tal1 gt tal2) tal1 tal2

Ovanstaende max tilldelas det st orsta av vardena tal1 och tal2

Generellt far operatorn

boolUttryck Uttryck1 Uttryck2

boolUttryck ar sant ( true ) rArr Uttryck1 beraknas och returneras

boolUttryck ar falskt ( false ) rArr Uttryck2 beraknas och returneras

Exempel med utskrift

Systemoutprintln(Talet +N+ uml ar +( (N2==0)juml amntudda ) )

Villkors-operatorn bor anvandas sparsamt Den ger latt upphov tillobegriplig kod Anvand if-else om de inblandade uttrycken ar komplicerade

Selektiva satser The Software Technology Group

Styrande satser 12(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 13: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1326

Exempel Switch-satsen lowast Las in veckodagsnummer lowast Scanner scan = new Scanner(Systemin)Systemout print (rdquoAnge ett veckodagsnummer rdquo)int dayNumber = scannextInt()

String weekDayswitch (dayNumber)

case 1weekDay = rdquoMandagrdquobreak

case 2weekDay = rdquoTisdagrdquobreak

Hoppar over 3 minus 6

case 7weekDay = rdquoSondagrdquobreak

default weekDay = rdquoFelaktigt veckodagsnummerrdquo

Systemout println (rdquoVeckodag rdquo + weekDay)

Selektiva satser The Software Technology Group

Styrande satser 13(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 14: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1426

Switch-satsen Switch-satsen valjer fall (eng case) beroende pa ett varde

switch (vuml arde ) case vuml arde1 Om vuml arde1 = vuml arde

gor n˚agot huml arbreak avbryter ==gt hoppar till numl asta sats

case vuml arde2gor n˚agot huml arbreak

defaultovriga vuml arden hanteras huml ar

nasta sats

Mojliga varde-typer heltal ( longintshortbyte ) och tecken ( char )och fran och med Java 7 aven String

Valjer f orsta case om era passar Skippa break rArr vi fortsatter in i nasta fall rArr knepig kod Skippa default rArr som if-sats utan else Mellan case och break kan det nnas era satser(utan att de ar inuti )

Selektiva satser The Software Technology Group

Styrande satser 14(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 15: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1526

while -Exempel MedelVardejava

public static void main(String [] args) Scanner scan = new Scanner(Systemin)int summa = 0 antal = 0 varde = minus 1

while (varde = 0) antal++Systemout print (rdquoEtt heltal ( noll for att avsluta ) rdquo)varde = scannextInt ()summa = summa + varde

antal minusminus Rakna inte sista nollan

Systemout println (rdquo nSlutsumma rdquo+summa)Systemout println (rdquoAntal rdquo +antal)Systemout println (rdquoMedelvarde rdquo+( double )summaantal)

Iterativa satser The Software Technology Group

Styrande satser 15(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 16: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1626

while-satsenwhile ( boolUttryck )

nasta sats

while-satsen upprepas tills boolUttryck antar vardet false Dvs instruktionerna inuti while-satsen exekveras gang pa gang Anvands nar vi inte vet hur manga ganger loopen skall upprepasvi vet bara ett villkor nar den skall avbrytas

Problem Finn minsta K sadant att 1 + 2 + 3 + 4 + + K gt 10000int K = 0 sum = 0while (sum lt= 10000)

K++sum = sum + K

Systemoutprintln(K = +K+ ==gt 1+2+3+ K = +sum)

Alternativ Sats-blocket kan ersattas med en enda satswhile ( boolUttryck )

satsnasta sats ing˚ ar ej i while-satsen

Iterativa satser The Software Technology Group

Styrande satser 16(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 17: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1726

do break och continueDo-satsen ar en nara slakting till while-satsen

do

while ( boolUttryck ) Notera avslutande semikolon

do-satsen upprepas tills boolUttryck antar vardet false

Tank sa harUpprepa en eller era ganger rArr do-satsenUpprepa noll eller era ganger rArr while-satsen

Nyckelorden break och continue break och continue anvands fumlor att avbryta en loop pa ett godtyckligt stalle

while ( boolUttryck )

if ()break Avbryt loopen hoppa till numl asta sats

if ()continue Avbryt varvet hoppar till while ( boolUttryck )

nasta satsIterativa satser The Software Technology GroupStyrande satser 17(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 18: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1826

for -Exempel MultiplikationsTabelljavapublic static void main(String [] args)

Scanner scan = new Scanner(Systemin)Systemout print (rdquoEtt heltal N storre an noll rdquo)int N = scannextInt ()

Systemout println (rdquo nlowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowastrdquo)for ( int i=0 i lt =N i++) i = 0123 N

int n = i lowast NSystemout println ( i+rsquorsquo lowast rdquo+N+rsquorsquo = rdquo+n)

Exempel pa exekvering

Ett heltal N storre an noll 4lowastlowastlowastlowastlowastlowast Multiplikationstabell for N lowastlowastlowastlowastlowastlowastlowastlowast0 lowast 4 = 01 lowast 4 = 42 lowast 4 = 83 lowast 4 = 124 lowast 4 = 16

Iterativa satser The Software Technology GroupStyrande satser 18(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 19: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 1926

for-satsenfor ( initialisering boolUttryck fuml orumlandring )

nasta sats

for-satsen startar med initialiseringDet vanliga ar att en sk raknare deklareras och tilldelas ett startvarde

for-satsen upprepas tills boolUttryck antar vardet falseVanligen ar detta ett slutvillkor fuml or raknaren

Varje varv avslutas med f orumlandringDet vanliga ar att raknaren fuml orandras

Problem Addera alla udda tal mellan 1 och 99int sum = 0for (int i=99 igt0 i=i-2 ) i = 999795

sum = sum + iSystemoutprintln(99+97+95+ +5+3+1 = +sum)

for-satser anvands nar vi vet hur manga varv som skall guml oras Notera raknaren i kan bara anvandas inuti loopen

Iterativa satser The Software Technology GroupStyrande satser 19(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 20: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2026

Nastlade satser Att forsta hur de olika styrande satserna fungerar ar ganska latt

Problem som bara kraver en enda styrande sats ar ocksa ganska enkelt Tyvarr sa kraver manga problem multipla nastlade satser Nastlade rArr en sats inuti en annan satsi f (n gt 0)

if ( n 2 == 0 )

else

else

for (int i=n ilt=0 i++)

Problem med nastlade satser rArr betydligt svarare rArr kraver mycket traning

Nastlade satser The Software Technology GroupStyrande satser 20(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 21: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2126

Exercise Fargen pa en schackruta

Varje ruta pa ett schackbrade identiers med en bostav (a-h) och en siffra (1-8) Mansager tex c3 eller f5 Skriv ett program SquareColorjava som laser in en ruta (egc5) och sedan avgumlor om den ar mumlork (svart) eller ljus (vit)

Nastlade satser The Software Technology GroupStyrande satser 21(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 22: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2226

Solution Fargen pa en schackruta User instructions + Reading square identier Systemoutprint (rdquoEnter Chess Square Identier (eg e5) rdquo)Scanner scan = new Scanner(Systemin)String text = scannextLine() e g rdquoe5rdquochar letter = text charAt(0) rsquoersquo char digitChar = textcharAt(1) rsquo5rsquo int digit = CharactergetNumericValue(digitChar) char minus to minus int

if ( digit 2 == 0) Even row == gt 2468 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)

Systemout println (rdquoThe square is light rdquo)else

Systemout println (rdquoThe square is darkrdquo)

else Odd row == gt

1357 if ( letter ==rsquoarsquo || letter ==rsquocrsquo || letter ==rsquoersquo || letter ==rsquogrsquo)Systemout println (rdquoThe square is darkrdquo)

elseSystemout println (rdquoThe square is light rdquo)

Nastlade satser The Software Technology GroupStyrande satser 22(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 23: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2326

Uppgift Stupid Encryption

En mycket enkel (dum) krypteringsmetod fuml or texter ar att byta ut varje bokstav motnasta bokstav i alfabetet

a --gt b b --gt c y --gt z z --gt aA --gt B B --gt C Y --gt Z Z --gt A

Alla icke-bokstaver tex siffror och whitespace lamnas ofuml orandrade

Uppgift Skriv ett program StupidEncryptionjava som laser en rad text frantangentbordet och sedan skriver ut den i krypterad formExempel pa hur det kan se ut

Provide a line of text Was it a rat I sawEncrypted Text Xbt ju b sbu J tbx

Nastlade satser The Software Technology GroupStyrande satser 23(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 24: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2426

Exempel Stupid EncryptionSystemout print (rdquoProvide a line of text rdquo)

Scanner scan = new Scanner(Systemin)String text = scannextLine()

String text = rdquoabcdefghijklmnopqrstuvxyz ABCDEFGHIJKLMNOPQRSTUVXYZ

StringBuilder buf = new StringBuilder()for ( int i=0 i lt textlength () i++)

char c = textcharAt(i )if ( Character isLetter (c) ) Non minus letter == gt do nothing

bufappend(c)else if (c == rsquozrsquo) Special case rsquozrsquo

bufappend(rsquoarsquo)else if (c == rsquoZrsquo)

bufappend(rsquoArsquo) Special case rsquozrsquo else Default Convert to ASCII add 1 convert back to char

int ascii = ( int ) c ASCII Value char nextChar = ( char ) ( ascii +1)bufappend(nextChar)

Systemout println (rdquoEncrypted Text rdquo+buftoString ())

Nastlade satser The Software Technology GroupStyrande satser 24(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 25: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2526

Lab 2 - Uppgift 1

Skriv ett program RaknaAjava som laser in en textrad fran tangentbordet och sedanskriver hur ut manga rsquoarsquo och rsquoArsquo det nns i raden En kuml orning kan se ut enligt fumloljande

Mata in en textrad Alla barn fick huml ogsta betyget AAntal a 3Antal A 2

Sketch till l osning1 Las in en textrad rArr String text

2 For varje char c i text

if c = rsquoArsquo rArr nA++else if c = rsquoarsquo rArr na++

3 Presentera resultat rArr Skriv ut nA and na

Tips Vanta med punkt 1 (lasa in text) till sist Varfuml or

Nastlade satser The Software Technology GroupStyrande satser 25(26)

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)

Page 26: styrande_satser

7252019 styrande_satser

httpslidepdfcomreaderfullstyrandesatser 2626

Kursinformation

Lab 1 rArr Deadline 1611 Lab 2 rArr Deadline 3011

Dagens uppgifter 1-9 Lab 2Ganska jobbiga om man ej anvant styrande satser f orutrArr Se till att ni har gott om tid

Nasta f orelasning ar pa onsdag

Nastlade satser The Software Technology GroupStyrande satser 26(26)