Professional Documents
Culture Documents
Lecture 2
Lecture 2
http://tinyurl.com/programmeringDT2012
F
orelasning 2
Ver
onica Gaspes
www2.hh.se/staff/vero
/*
Prints the first command line argument
*/
public class UseCommandLine{
public static void main(String [] cmdLn){
System.out.println(cmdLn[0]);
}
}
Flera kommandon
/*
Prints
Hello to you, <the first command line argument>!
*/
public class Hello2You{
public static void main(String [] cmdLn){
System.out.print("Hello to you, ");
System.out.print(cmdLn[0]);
System.out.println("!");
}
}
Text
F
or att hantera text finns en typ
av data som i Java kallas f
or
String.
Typer
I de flesta programspr
ak finns
flera typer av data. En typ ar en
mangd varden och de operationer
man kan g
ora med dessa varden.
Typen String
Varden
Typiska literaler
operation
operator
f
oljder av tecken
"Hello, " "1 " " * "
Att satta ihop
+
Text
F
or att hantera text finns en typ
av data som i Java kallas f
or
String.
Typer
I de flesta programspr
ak finns
flera typer av data. En typ ar en
mangd varden och de operationer
man kan g
ora med dessa varden.
Typen String
Varden
Typiska literaler
operation
operator
f
oljder av tecken
"Hello, " "1 " " * "
Att satta ihop
+
Text
F
or att hantera text finns en typ
av data som i Java kallas f
or
String.
Typer
I de flesta programspr
ak finns
flera typer av data. En typ ar en
mangd varden och de operationer
man kan g
ora med dessa varden.
Typen String
Varden
Typiska literaler
operation
operator
f
oljder av tecken
"Hello, " "1 " " * "
Att satta ihop
+
Text
F
or att hantera text finns en typ
av data som i Java kallas f
or
String.
Typer
I de flesta programspr
ak finns
flera typer av data. En typ ar en
mangd varden och de operationer
man kan g
ora med dessa varden.
Typen String
Varden
Typiska literaler
operation
operator
f
oljder av tecken
"Hello, " "1 " " * "
Att satta ihop
+
Text
Exempel
Uttryck
Varde
"Hello, Vero!"
"1 2 1"
"1234 + 99"
"1234" + "99"
"123499"
Variabler
Exempel
I programmet Hello2You ar
CmdLn ett s
adant namn och vi
sager att det ar parametern till
main. Och cmdLn[0] st
ar for ett
varde av typen String.
Variabler
Exempel
I programmet Hello2You ar
CmdLn ett s
adant namn och vi
sager att det ar parametern till
main. Och cmdLn[0] st
ar for ett
varde av typen String.
Variabler
Exempel
I programmet Hello2You ar
CmdLn ett s
adant namn och vi
sager att det ar parametern till
main. Och cmdLn[0] st
ar for ett
varde av typen String.
Variabler
Exempel
I programmet Hello2You ar
CmdLn ett s
adant namn och vi
sager att det ar parametern till
main. Och cmdLn[0] st
ar for ett
varde av typen String.
Variabler
Exempel
I programmet Hello2You ar
CmdLn ett s
adant namn och vi
sager att det ar parametern till
main. Och cmdLn[0] st
ar for ett
varde av typen String.
Hello2You igen
/*
Prints
Hello to you, <the first command line argument>!
*/
public class Hello2You{
public static void main(String [] cmdLn){
System.out.println("Hello to you, "
+ cmdLn[0]
+ "!");
}
}
Heltal
For att hantera heltal finns en typ av data som i Java kallas for
int
Typen int
Varden
Typiska literaler
operation
operator
Heltal
For att hantera heltal finns en typ av data som i Java kallas for
int
Typen int
Varden
Typiska literaler
operation
operator
Heltal
For att hantera heltal finns en typ av data som i Java kallas for
int
Typen int
Varden
Typiska literaler
operation
operator
Heltal
Exempel
uttryck
5 + 3
5 - 3
5 * 3
5 / 3
5 % 3
1 / 0
3 * 5 - 2
3 + 5 / 2
3 - 5 - 2
(3 - 5) - 2
3 - (5 - 2)
varde
8
2
15
1
2
13
5
-4
-4
0
kommentar
inga decimaler!
resten!
exekveringsfel!
* har precedens!
/ har precedens!
vanster associativitet
battre stil!
Heltal
Typkonvertering
Vi gor om programmet f
or att testa med tal angivna i
kommandoraden. Vi vill till exempel kunna k
ora
> java IntOps 9 2
public class IntOpsCmdLn{
public static void main(String[] cmdLn){
System.out.println(cmdLn[0] / cmdLn[1]);
System.out.println(cmdLn[0] % cmdLn[1]);
}
}
Typkonvertering
Vi gor om programmet f
or att testa med tal angivna i
kommandoraden. Vi vill till exempel kunna k
ora
> java IntOps 9 2
public class IntOpsCmdLn{
public static void main(String[] cmdLn){
System.out.println(cmdLn[0] / cmdLn[1]);
System.out.println(cmdLn[0] % cmdLn[1]);
}
}
Typkonvertering
> javac IntOpsCmdLn.java
IntOpsCmdLn.java:8: operator / cannot be applied
to java.lang.String,java.lang.String
System.out.println(cmdLn[0]/cmdLn[1]);
^
IntOpsCmdLn.java:9: operator % cannot be applied
to java.lang.String,java.lang.String
System.out.println(cmdLn[0]%cmdLn[1]);
^
2 errors
>
Det blir kompileringsfel: operatorerna / och % fungerar inte med
String! och cmdLn[0] och cmdLn[1] ar strangar!
Typkonvertering
> javac IntOpsCmdLn.java
IntOpsCmdLn.java:8: operator / cannot be applied
to java.lang.String,java.lang.String
System.out.println(cmdLn[0]/cmdLn[1]);
^
IntOpsCmdLn.java:9: operator % cannot be applied
to java.lang.String,java.lang.String
System.out.println(cmdLn[0]%cmdLn[1]);
^
2 errors
>
Det blir kompileringsfel: operatorerna / och % fungerar inte med
String! och cmdLn[0] och cmdLn[1] ar strangar!
Typkonvertering
public class IntOpsCmdLnConv{
public static void main(String[] cmdLn){
int x = Integer.parseInt(cmdLn[0]);
int y = Integer.parseInt(cmdLn[1]);
System.out.println(x / y);
System.out.println(x % y);
}
}
1
Typkonvertering
public class IntOpsCmdLnConv{
public static void main(String[] cmdLn){
int x = Integer.parseInt(cmdLn[0]);
int y = Integer.parseInt(cmdLn[1]);
System.out.println(x / y);
System.out.println(x % y);
}
}
1
Typkonvertering
public class IntOpsCmdLnConv{
public static void main(String[] cmdLn){
int x = Integer.parseInt(cmdLn[0]);
int y = Integer.parseInt(cmdLn[1]);
System.out.println(x / y);
System.out.println(x % y);
}
}
1
Typkonvertering
public class IntOpsCmdLnConv{
public static void main(String[] cmdLn){
int x = Integer.parseInt(cmdLn[0]);
int y = Integer.parseInt(cmdLn[1]);
System.out.println(x / y);
System.out.println(x % y);
}
}
1
Typkonvertering
public class IntOpsCmdLnConv{
public static void main(String[] cmdLn){
int x = Integer.parseInt(cmdLn[0]);
int y = Integer.parseInt(cmdLn[1]);
System.out.println(x / y);
System.out.println(x % y);
}
}
1
Logik
For att hantera booleska varden finns en typ av data som i Java
kallas for
boolean
Typen boolean
values
literals
operations
operators
true
true
and
&&
false
false
or
not
||
!
Logik
For att hantera booleska varden finns en typ av data som i Java
kallas for
boolean
Typen boolean
values
literals
operations
operators
true
true
and
&&
false
false
or
not
||
!
Booleska operationer
a
true
false
!a
false
true
a
true
true
false
false
b
true
false
true
false
a && b
true
false
false
false
a || b
true
true
true
false
Booleska operationer
a
true
false
!a
false
true
a
true
true
false
false
b
true
false
true
false
a && b
true
false
false
false
a || b
true
true
true
false
Booleska operationer
a
true
false
!a
false
true
a
true
true
false
false
b
true
false
true
false
a && b
true
false
false
false
a || b
true
true
true
false
Jamforelser
betyder
likhet
olikhet
mindre an
mindre eller lika an
mindre an
mindre eller lika an
true
2 == 2
2 != 3
2 < 13
2 <= 2
13 > 2
2 >= 2
false
2 == 3
2 != 2
2 < 2
3 <= 2
2 > 2
2 >= 3
Jamforelser
betyder
likhet
olikhet
mindre an
mindre eller lika an
mindre an
mindre eller lika an
true
2 == 2
2 != 3
2 < 13
2 <= 2
13 > 2
2 >= 2
false
2 == 3
2 != 2
2 < 2
3 <= 2
2 > 2
2 >= 3
ett
Ar
artal skott
ar?
Ett
ar ar skott
ar om det ar delbart med 400 eller om det ar delbart
med 4 men inte med 100!
public class LeapYear{
public static void main(String[] cmdLn){
int year = Integer.parseInt(cmdLn[0]);
boolean isLeapYear = year % 400 == 0
||
year % 4
== 0
&&
year % 100 != 0);
System.out.println(isLeapYear);
}
}
ett
Ar
artal skott
ar?
Ett
ar ar skott
ar om det ar delbart med 400 eller om det ar delbart
med 4 men inte med 100!
public class LeapYear{
public static void main(String[] cmdLn){
int year = Integer.parseInt(cmdLn[0]);
boolean isLeapYear = year % 400 == 0
||
year % 4
== 0
&&
year % 100 != 0);
System.out.println(isLeapYear);
}
}
Reella tal
For att hantera reella tal finns en typ av data som i Java kallas for
double
Typen double
Varden
Typiska literaler
operation
operator
Reella tal
For att hantera reella tal finns en typ av data som i Java kallas for
double
Typen double
Varden
Typiska literaler
operation
operator
Reella tal
Exempel
public class DoubleOps{
public static void main(String[] cmdLn){
System.out.println(3.141 + .03);
System.out.println(3.141 - .03);
System.out.println(6.02e23 / 2.0);
System.out.println(5.0 / 3.0);
System.out.println(10.0 % 3.141);
System.out.println(1.0 / 0.0);
System.out.println(Math.sqrt(2.0));
System.out.println(Math.sqrt(-1.0));
}
}
Testa det!
Reella tal
Exempel
public class DoubleOps{
public static void main(String[] cmdLn){
System.out.println(3.141 + .03);
System.out.println(3.141 - .03);
System.out.println(6.02e23 / 2.0);
System.out.println(5.0 / 3.0);
System.out.println(10.0 % 3.141);
System.out.println(1.0 / 0.0);
System.out.println(Math.sqrt(2.0));
System.out.println(Math.sqrt(-1.0));
}
}
Testa det!
Matematik i Java
Det finns mycket fardigprogrammerat med doublel:
Math.abs(x)
Math.max(x,y)
Math.min(x,y)
Math.sin(x)
Math.cos(x)
Math.tan(x)
Math.exp(x)
ex
Math.log(x)
Math.pow(x,y)
Math.round(x) narmaste heltal
Math.random() slumptal i [0, 1)
Math.E
Math.PI
Slumpen
Vi testar slumpgeneratorn!
public class Random{
public static void main(String[] cmdLn){
System.out.println( Math.round( Math.random() ) );
}
}
Vad skriver programmet ut?
Slumpen
Vi testar slumpgeneratorn!
public class Random{
public static void main(String[] cmdLn){
System.out.println( Math.round( Math.random() ) );
}
}
Vad skriver programmet ut?
Slumpen
Vi testar slumpgeneratorn!
public class Random{
public static void main(String[] cmdLn){
System.out.println( Math.round( Math.random() ) );
}
}
Vad skriver programmet ut?
Typkonvertering
Automatisk: antingen nar det inte blir mindre exakt eller mot
String
Explicit: antingen genom cast eller med hjalp av en metod.
uttryck
"1234" + 99
Integer.parseInt("123")
(int) 2.71828
Math.round(2.71828)
(int) Math.round(2.71828)
(int) Math.round(3.14159)
11 * 0.3
(int) 11 * 0.3
11 * (int) 0.3
(int) (11 * 0.3)
typ
String
int
int
long
int
int
double
double
int
int
varde
"123499
123
2
3
3
3
3.3
3.3
0
3
Typkonvertering
Automatisk: antingen nar det inte blir mindre exakt eller mot
String
Explicit: antingen genom cast eller med hjalp av en metod.
uttryck
"1234" + 99
Integer.parseInt("123")
(int) 2.71828
Math.round(2.71828)
(int) Math.round(2.71828)
(int) Math.round(3.14159)
11 * 0.3
(int) 11 * 0.3
11 * (int) 0.3
(int) (11 * 0.3)
typ
String
int
int
long
int
int
double
double
int
int
varde
"123499
123
2
3
3
3
3.3
3.3
0
3
Typkonvertering
Automatisk: antingen nar det inte blir mindre exakt eller mot
String
Explicit: antingen genom cast eller med hjalp av en metod.
uttryck
"1234" + 99
Integer.parseInt("123")
(int) 2.71828
Math.round(2.71828)
(int) Math.round(2.71828)
(int) Math.round(3.14159)
11 * 0.3
(int) 11 * 0.3
11 * (int) 0.3
(int) (11 * 0.3)
typ
String
int
int
long
int
int
double
double
int
int
varde
"123499
123
2
3
3
3
3.3
3.3
0
3
Typkonvertering
Automatisk: antingen nar det inte blir mindre exakt eller mot
String
Explicit: antingen genom cast eller med hjalp av en metod.
uttryck
"1234" + 99
Integer.parseInt("123")
(int) 2.71828
Math.round(2.71828)
(int) Math.round(2.71828)
(int) Math.round(3.14159)
11 * 0.3
(int) 11 * 0.3
11 * (int) 0.3
(int) (11 * 0.3)
typ
String
int
int
long
int
int
double
double
int
int
varde
"123499
123
2
3
3
3
3.3
3.3
0
3
Slumpheltal
Slumpheltal