Post on 27-Feb-2018
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)