Ανασκόπηση της Java

fairieshourglassΛογισμικό & κατασκευή λογ/κού

9 Ιουν 2012 (πριν από 5 χρόνια και 2 μήνες)

346 εμφανίσεις

1
1
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
4.
4.
Ανασκόπηση
Ανασκόπηση
της
της
Java
Java
Χειμερινό
Χειμερινό
εξάμηνο
εξάμηνο
200
200
7
7
Πέτρος
Πέτρος
Κωμοδρόμος
Κωμοδρόμος
komodromos@ucy.ac.cy
komodromos@ucy.ac.cy
http://
http://
www.
www.
eng.
eng.
ucy.ac.cy/petros
ucy.ac.cy/petros
ΠΠΜ
ΠΠΜ
500
500
:
:
Προχωρημένη
Προχωρημένη
Ανάπτυξη
Ανάπτυξη
Λογισμικού
Λογισμικού
Εφαρμογών
Εφαρμογών
Μηχανικής
Μηχανικής
2
2
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Θέματα
Θέματα


Εισαγωγή
Εισαγωγή
στη
στη
γλώσσα
γλώσσα
προγραμματισμού
προγραμματισμού
Java
Java


Δημιουργία
Δημιουργία
απλού
απλού
προγράμματος
προγράμματος
σε
σε
Java
Java


Σχόλια
Σχόλια
σε
σε
προγράμματα
προγράμματα
Java
Java


Χρήση
Χρήση
εντολών
εντολών
εισόδου
εισόδου
/
/
εξόδου
εξόδου


Μνήμη
Μνήμη
και
και
μεταβλητές
μεταβλητές


Αριθμητικοί
Αριθμητικοί
τελεστές
τελεστές
και
και
υπολογισμοί
υπολογισμοί


Προτεραιότητα
Προτεραιότητα
αριθμητικών
αριθμητικών
τελεστών
τελεστών


Λογικές
Λογικές
εκφράσεις
εκφράσεις
και
και
αποφάσεις
αποφάσεις


Τελεστές
Τελεστές
συγκρίσεως
συγκρίσεως
και
και
ισότητας
ισότητας


Εντολές
Εντολές
ελέγχου
ελέγχου
:
:
διακλαδώσεις
διακλαδώσεις
και
και
βρόγχοι
βρόγχοι
3
3
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Ανάπτυξης
Ανάπτυξης
και
και
εκτέλεση
εκτέλεση
προγραμμάτων
προγραμμάτων
Java
Java
4
4
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Δημιουργία
Δημιουργία
απλού
απλού
προγράμματος
προγράμματος
σε
σε
Java
Java
Βασικοί
Βασικοί
τύποι
τύποι
προγραμμάτων
προγραμμάτων
Java
Java


Java Application
Java Application


Εκτελείται
Εκτελείται
με
με
τη
τη
χρήση
χρήση
της
της
εντολής
εντολής
java
java
από
από
το
το
παράθυρο
παράθυρο
εντολών
εντολών
(
(
DOS command window
DOS command window
ή
ή
Unix Shell
Unix Shell
)
)
η
η
οποία
οποία
ξεκινά
ξεκινά
τη
τη
νοητή
νοητή
μηχανή
μηχανή
της
της
Java
Java
(
(
Java Virtual Machine
Java Virtual Machine
-
-
JVM
JVM
)
)


Java Applet
Java Applet


Εκτελείται
Εκτελείται
μέσα
μέσα
από
από
το
το
περιβάλλον
περιβάλλον
κάποιου
κάποιου
web
web
-
-
browser
browser
(
(
π
π
.
.
χ
χ
.
.
Internet Explorer, Netscape,
Internet Explorer, Netscape,
κ
κ
.
.
λπ
λπ
.)
.)
,
,
εφόσον
εφόσον
είναι
είναι
δυνατή
δυνατή
και
και
επιτρεπτή
επιτρεπτή
η
η
εκτέλεση
εκτέλεση
προγραμμάτων
προγραμμάτων
Java
Java
http://java.sun.com/docs/books/tutorial/getStarted/cupojava/win3
http://java.sun.com/docs/books/tutorial/getStarted/cupojava/win3
2.html
2.html
5
5
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Τυπική
Τυπική
διαδικασία
διαδικασία
ανάπτυξης
ανάπτυξης
και
και
εκτέλεσης
εκτέλεσης
προγραμμάτων
προγραμμάτων
Java:
Java:
IDE
:
Integrated
Development
Environment
(π.χ. JBuilder,
NetBeans, κλ.π.)
javacmyfile.java
java myfile
6
6
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Java Application
Welcome.java
Welcome.java
public class Welcome
public class Welcome
{
{
public static void main ( String
public static void main ( String
args
args
[ ])
[ ])
{
{
System.out.println("Welcome
System.out.println("Welcome
to CEE
to CEE
500
500
");
");
}
}
}
}
>
>
javac
javac
Welcome.java
Welcome.java
>
>
java
java
Welcome
Welcome
Welcome to CEE
Welcome to CEE
500
500
7
7
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Java Applet
Java Applet
WelcomeApplet.java
WelcomeApplet.java
import
import
java.applet.Applet
java.applet.Applet
;
;
import
import
java.awt
java.awt
.*;
.*;
public class
public class
WelcomeApplet
WelcomeApplet
extends Applet
extends Applet
{
{
public void
public void
paint(Graphics
paint(Graphics
g)
g)
{
{
g.setColor(Color.red
g.setColor(Color.red
);
);
g.drawString("Welcome
g.drawString("Welcome
to CEE
to CEE
500
500
", 50, 35);
", 50, 35);
}
}
}
}
>
>
javac
javac
WelcomeApplet.java
WelcomeApplet.java
8
8
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Χρήση
Χρήση
Applet
Applet
σε
σε
ιστοσελίδα
ιστοσελίδα
myApplet.html:
<HTML>
<HEAD>
<TITLE> A simple program to run a Java Applet</TITLE>
</HEAD>
<BODY>
Here the class myAppletis loaded: <P>
<APPLET CODE=“WelcomeApplet.class" WIDTH=300 HEIGHT=100 align=center>
</APPLET>
</BODY>
</HTML>
9
9
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Δημιουργία
Δημιουργία
,
,
μεταγλώττιση
μεταγλώττιση
και
και
εκτέλεση
εκτέλεση
προγράμματος
προγράμματος
Java
Java


Δημιουργία
Δημιουργία
πηγαίου
πηγαίου
κώδικα
κώδικα
(
(
source code
source code
)
)


Το
Το
αρχείο
αρχείο
πρέπει
πρέπει
να
να
έχει
έχει
επέκταση
επέκταση
.java
.java
,
,
π
π
.
.
χ
χ
.
.
Welcome.java
Welcome.java


Ένα
Ένα
αρχείο
αρχείο
(
(
file
file
)
)
που
που
έχει
έχει
μία
μία
public class
public class
πρέπει
πρέπει
απαραίτητα
απαραίτητα
να
να
έχει
έχει
το
το
ίδιο
ίδιο
όνομα
όνομα
με
με
το
το
όνομα
όνομα
της
της
κλάσης
κλάσης
(
(
τάξης
τάξης
)
)
συν
συν
την
την
.java
.java
επέκταση
επέκταση


Μεταγλώττιση
Μεταγλώττιση
προγράμματος
προγράμματος
Java
Java


Ανοίγοντας
Ανοίγοντας
ένα
ένα
παράθυρο
παράθυρο
εντολών
εντολών
(
(
command prompt window
command prompt window
)
)
,
,
αφού
αφού
πάτε
πάτε
στο
στο
directory
directory
όπου
όπου
βρίσκεται
βρίσκεται
το
το
αρχείο
αρχείο
,
,
πληκτρολογήστε
πληκτρολογήστε
:
:
>
>
javac
javac
fileName
fileName
(
(
π
π
.
.
χ
χ
.
.
javac
javac
Welcome.java
Welcome.java
)
)


Αν
Αν
δεν
δεν
υπάρχουν
υπάρχουν
λάθη
λάθη
δημιουργείται
δημιουργείται
το
το
αρχείο
αρχείο
Welcome.class
Welcome.class


Το
Το
αρχείο
αρχείο
αυτό
αυτό
περιέχει
περιέχει
bytecodes
bytecodes
τα
τα
οποία
οποία
μπορούν
μπορούν
να
να
εκτελεστούν
εκτελεστούν
από
από
οποιοδήποτε
οποιοδήποτε
JVM
JVM
,
,
ασχέτως
ασχέτως
του
του
τύπου
τύπου
του
του
Η
Η
/
/
Υ
Υ
στον
στον
οποίο
οποίο
τρέχει
τρέχει


Εκτέλεση
Εκτέλεση
ενός
ενός
προγράμματος
προγράμματος
>
> java Welcome
java Welcome


Η
Η
εντολή
εντολή
java
java
ξεκινά
ξεκινά
την
την
JVM
JVM
,
,
φορτώνει
φορτώνει
τα
τα
bytecodes
bytecodes
του
του
Welcome
Welcome
.class
.class
και
και
,
,
αφού
αφού
κάνει
κάνει
κάποιους
κάποιους
ελέγχους
ελέγχους
,
,
τα
τα
εκτελεί
εκτελεί
καλώντας
καλώντας
πρώτα
πρώτα
τη
τη
μέθοδο
μέθοδο
main
main
10
10
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Είδη
Είδη
σχολίων
σχολίων
σε
σε
προγράμματα
προγράμματα
Java
Java
//
//
.
.
……
……
.
.
/*
/*


..
..


.....
.....
………
………
..*/
..*/
/**
/**
…………
…………
……………
……………
..*/
..*/


Javadoc
Javadoc
>
>
javadoc
javadoc
Welcome1.java
Welcome1.java
11
11
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
12
12
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Είδη
Είδη
σχολίων
σχολίων
σε
σε
προγράμματα
προγράμματα
Java
Java
//
//
.
.
……
……
.
.
/*
/*


..
..


.....
.....
………
………
..*/
..*/
/**
/**
…………
…………
……………
……………
..*/
..*/


Javadoc
Javadoc
>
>
javadoc
javadoc
Welcome1.java
Welcome1.java
13
13
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
1 // Fig. 2.3: Welcome2.java
2 // Printing a line of text with multiple statements.
3
4 public class Welcome2
5 {
6 // main method begins execution of Java application
7 public static void main( String args[] )
8 {
9 System.out.print( "Welcome to " );
10 System.out.println( "Java Programming!" );
11
12 } // end method main
13
14 } // end class Welcome2

Welcome to Java Programming!

System.out.print
keeps the cursor on
the same line, so
System.out.println
continues on the same line.
Εκτύπωση(output)
14
14
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Outline
Outline
1 // Fig. 2.4: Welcome3.java
2 // Printing multiple lines of text with a single statement.
3
4 public class Welcome3
5 {
6 // main method begins execution of Java application
7 public static void main( String args[] )
8 {
9 System.out.println( "Welcome\nto\nJava\nProgramming!" );
10
11 } // end method main
12
13 } // end class Welcome3
Welcome
to
Java
Programming!
15
15
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Ειδικοί
Ειδικοί
χαρακτήρες
χαρακτήρες
εκτύπωσης
εκτύπωσης
(
(
escape sequences
escape sequences
)
)
Escape
sequence
Description
\n
Newline. Position the screen cursor at the beginning of the next line.
\t
Horizontal tab. Move the screen cursor to the next tab stop.
\r
Carriage return. Position the screen cursor at the beginning of the
current line—do not advance to the next line. Any characters output
after the carriage return overwrite the characters previously output
on that line.
\\
Backslash. Used to print a backslash character.
\"
Double quote. Used to print a double-quote character. For example,
System.out.println( "\"in quotes\"" );
displays
"in quotes"


16
16
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
1 // Fig. 2.6: Welcome4.java
2 // Printing multiple lines in a dialog box.
3
4 public class Welcome4
5 {
6 // main method begins execution of Java application
7 public static void main( String args[] )
8 {
9 System.out.printf( "%s\n%s\n",
10 "Welcome to", "Java Programming!" );
11
12 } // end method main
13
14 } // end class Welcome4

Welcome to
Java Programming!


System.out.printf
displays formatted data.
17
17
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Outline
Outline
1 // Fig. 2.7: Addition.java
2 // Addition program that displays the sum of two numbers.
3 import java.util.Scanner; // program uses class Scanner
4
5 public class Addition
6 {
7 // main method begins execution of Java application
8 public static void main( String args[] )
9 {
10 // create Scanner to obtain input from command window
11 Scanner input = new Scanner( System.in );
12
13 int number1; // first number to add
14 int number2; // second number to add
15 int sum; // sum of number1 and number2
16
17 System.out.print( "Enter first integer: " ); // prompt
18 number1 = input.nextInt(); // read first number from user
19

importdeclaration imports class
Scannerfrom package java.util.
Declare and initialize
variable input, which is
a Scanner.
Declare variables
number1, number2
and sum.
Read an integer from the user
and assign it to number1.
Είσοδος
Είσοδος
δεδομένων
δεδομένων
(
(
input)
input)
Δήλωσηπακέτων(packages)
πριναπότονορισμότάξεων
18
18
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Outline
Outline


Addition.java
Addition.java


(2 of 2)
(2 of 2)


4. Addition
4. Addition


5.
5.
printf
printf
20 System.out.print( "Enter second integer: " ); // prompt
21 number2 = input.nextInt(); // read second number from user
22
23 sum = number1 + number2; // add numbers
24
25 System.out.printf( "Sum is %d\n", sum ); // display sum
26
27 } // end method main
28
29 } // end class Addition

Enter first integer: 45
Enter second integer: 72
Sum is 117


Read an integer from the user and
assign it to number2.
Calculate the sum of the variables number1
and number2, assign result to sum.
Display the sum using
formatted output.
Two integers entered by the user.
19
19
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Παράδειγμα
Παράδειγμα
εισαγωγής
εισαγωγής
δεδομένων
δεδομένων
import
import
java.util.Scanner
java.util.Scanner
;
;
public class Dynamic1
public class Dynamic1
{
{
public static void
public static void
main(String
main(String
args
args
[])
[])
{
{
double m, k, w;
double m, k, w;
System.out.println("Provide
System.out.println("Provide
the properties of a SDOF system:");
the properties of a SDOF system:");
Scanner
Scanner
inputScanner
inputScanner
= new
= new
Scanner(System.in
Scanner(System.in
);
);
System.out.print
System.out.print
(" Mass: m = ");
(" Mass: m = ");
m =
m =
inputScanner.nextDouble
inputScanner.nextDouble
();
();
System.out.print
System.out.print
(" Stiffness: k = ");
(" Stiffness: k = ");
k =
k =
inputScanner.nextDouble
inputScanner.nextDouble
();
();
w =
w =
Math.sqrt(k/m
Math.sqrt(k/m
);
);
System.out.printf("%s
System.out.printf("%s
m=%.3f and k=%.2f equals w=%5.3f",
m=%.3f and k=%.2f equals w=%5.3f",
"The frequency of a SDOF with", m, k, w);
"The frequency of a SDOF with", m, k, w);
}
}
}
}
20
20
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Βασικά
Βασικά
/
/
πρωταρχικά
πρωταρχικά
είδη
είδη
μεταβλητών
μεταβλητών
/
/
δεδομένων
δεδομένων
(
(
primitive data types
primitive data types
)
)


boolean
boolean
(
(
boolean
boolean
value, true or false)
value, true or false)


char
char
(2
(2
-
-
byte, character
byte, character
-
-
Unicode)
Unicode)


byte
byte
(1
(1
-
-
byte, signed integer)
byte, signed integer)


short
short
(2
(2
-
-
byte, signed short integer)
byte, signed short integer)


int
int
(4
(4
-
-
byte, signed integer)
byte, signed integer)


long
long
(8
(8
-
-
byte, signed long integer)
byte, signed long integer)


float
float
(4
(4
-
-
byte, floating point)
byte, floating point)


double
double
(8
(8
-
-
byte, double precision floating point)
byte, double precision floating point)
21
21
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Μετατροπές
Μετατροπές
(casting)
(casting)
βασικών
βασικών
/
/
πρωτόγονων
πρωτόγονων
τύπων
τύπων


Είναι
Είναι
επιτρεπτός
επιτρεπτός
ο
ο
ορισμός
ορισμός
της
της
τιμής
τιμής
μιας
μιας
μεταβλητής
μεταβλητής
βασικού
βασικού
(
(
primitive
primitive
)
)
τύπου
τύπου
σε
σε
μια
μια
μεταβλητή
μεταβλητή
άλλου
άλλου
βασικού
βασικού
τύπου
τύπου
χωρίς
χωρίς
explicit
explicit
cast
cast
αν
αν
ο
ο
τύπος
τύπος
της
της
πρώτης
πρώτης
μεταβλητής
μεταβλητής
είναι
είναι
στα
στα
δεξιά
δεξιά
του
του
τύπου
τύπου
της
της
δεύτερης
δεύτερης
στη
στη
πιο
πιο
κάτω
κάτω
λίστα
λίστα
:
:
byte
byte
<
<
short
short
<
<
int
int
<
<
long
long
<
<
float
float
<
<
double
double


Μεταβλητή
Μεταβλητή
τύπου
τύπου
char
char
μπορεί
μπορεί
να
να


προαχθεί
προαχθεί


σε
σε
int
int
,
,
long, float
long, float
ή
ή
double
double


Μια
Μια
μεταβλητή
μεταβλητή
τύπου
τύπου
boolean
boolean
δεν
δεν
μπορεί
μπορεί
να
να
μετατραπεί
μετατραπεί
σε
σε
άλλο
άλλο
τύπο
τύπο


Ο
Ο
ορισμός
ορισμός
της
της
τιμής
τιμής
μιας
μιας
μεταβλητής
μεταβλητής


ανώτερου
ανώτερου


βασικού
βασικού
(
(
primitive
primitive
)
)
τύπου
τύπου
σε
σε
μια
μια
μεταβλητή
μεταβλητή


κατώτερου
κατώτερου


τύπου
τύπου
είναι
είναι
επιτρεπτή
επιτρεπτή
μόνο
μόνο
όταν
όταν
καθοριστεί
καθοριστεί
η
η
συγκεκριμένη
συγκεκριμένη
μετατροπή
μετατροπή
(
(
explicit casting
explicit casting
),
),
αφού
αφού
έτσι
έτσι
χάνεται
χάνεται
κάποια
κάποια
ακρίβεια
ακρίβεια
,
,
π
π
.
.
χ
χ
.
.
int
int
x = (
x = (
int
int
) 4.75;
) 4.75;
22
22
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Επιτρεπόμενες
Επιτρεπόμενες
μετατροπές
μετατροπές
(casting)
(casting)
βασικών
βασικών
/
/
πρωτόγονων
πρωτόγονων
τύπων
τύπων
Οι
Οι
πιο
πιο
κάτω
κάτω
μετατροπές
μετατροπές
μπορούν
μπορούν
να
να
γίνουν
γίνουν
έμμεσα
έμμεσα
χωρίς
χωρίς
explicit casting:
explicit casting:
23
23
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Μνήμη
Μνήμη
και
και
μεταβλητές
μεταβλητές


Κάθε
Κάθε
μεταβλητή
μεταβλητή
έχει
έχει
όνομα
όνομα
,
,
τύπο
τύπο
,
,
μέγεθος
μέγεθος
και
και
τιμή
τιμή


Η
Η
κάθε
κάθε
μεταβλητή
μεταβλητή
αντιστοιχεί
αντιστοιχεί
σε
σε
μία
μία
θέση
θέση
στη
στη
μνήμη
μνήμη


Όταν
Όταν
μια
μια
νέα
νέα
τιμή
τιμή
δοθεί
δοθεί
σε
σε
μία
μία
μεταβλητή
μεταβλητή
τότε
τότε
αυτή
αυτή
η
η
τιμή
τιμή
αποθηκεύεται
αποθηκεύεται
στην
στην
αντίστοιχη
αντίστοιχη
μνήμη
μνήμη
και
και
η
η
προηγούμενη
προηγούμενη
τιμή
τιμή
χάνεται
χάνεται


Διαβάζοντας
Διαβάζοντας
τιμές
τιμές
από
από
την
την
μνήμη
μνήμη
δεν
δεν
έχει
έχει
καμία
καμία
επίπτωση
επίπτωση
σε
σε
αυτές
αυτές
24
24
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Αριθμητικοί
Αριθμητικοί
τελεστές
τελεστές
*
*
πολλαπλασιασμός
πολλαπλασιασμός
(
(
multiplication
multiplication
)
)
/
/
διαίρεση
διαίρεση
(
(
division
division
)
)
%
%
υπόλοιπο
υπόλοιπο
από
από
διαίρεση
διαίρεση
(
(
remainder
remainder
)
)
+
+
και
και


πρόσθεση
πρόσθεση
και
και
αφαίρεση
αφαίρεση


Διαίρεση
Διαίρεση
ακεραίων
ακεραίων
περικόπτει
περικόπτει
το
το
υπόλοιπο
υπόλοιπο
7 / 5
7 / 5
ισούται
ισούται
με
με
1
1


Ο
Ο
τελεστής
τελεστής
υπολοίπου
υπολοίπου
(
(
remainder)
remainder)
%
%
δίνει
δίνει
το
το
υπόλοιπο
υπόλοιπο
7 % 5
7 % 5
ισούται
ισούται
με
με
2
2
Java
operation
Arithmetic
operator
Algebraic
expression
Java
expression
Addition
+
f + 7
f + 7
Subtraction

p – c
p - c
Multiplication
*
Bm
b * m
Division
/
x / y or or x ÷ y

x / y
25
25
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Προτεραιότητα
Προτεραιότητα
βασικών
βασικών
τελεστών
τελεστών
Operator(s)
Operation(s)
Order of evaluation
(precedence)
*
/
%
Multiplication
Division
Remainder
Evaluated first. If there are
several operators of this type,
they are evaluated from left to
right.
+
-
Addition
Subtraction
Evaluated next. If there are
several operators of this type,
they are evaluated from left to
right.

26
26
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Προτεραιότητα
Προτεραιότητα
τελεστών
τελεστών
:
:
(
(
βλέπε
βλέπε
Appendix A)
Appendix A)
27
27
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Προτεραιότητα
Προτεραιότητα
(
(
precedence)
precedence)
και
και
σχετικότητα
σχετικότητα
(associativity)
(associativity)
τελεστών
τελεστών
(operators)
(operators)
Operators
Associativity
Type
* / %
left to right
multiplicative
+ -
left to right
additive
< <= > >=
left to right
relational
== !=
left to right
equality
=
right to left
assignment



Όταν
Όταν
τελεστές
τελεστές
της
της
ίδιας
ίδιας
τάξης
τάξης
προτεραιότητας
προτεραιότητας
(
(
precedence)
precedence)
παρουσιάζονται
παρουσιάζονται
στην
στην
ίδια
ίδια
έκφραση
έκφραση
,
,
τότε
τότε
η
η
ιδιότητα
ιδιότητα
της
της
associativity
associativity
καθορίζει
καθορίζει
με
με
ποια
ποια
σειρά
σειρά
θα
θα
εκτελεστούν
εκτελεστούν
.
.


Όλοι
Όλοι
οι
οι
τελεστές
τελεστές
με
με
την
την
ίδια
ίδια
προτεραιότητα
προτεραιότητα
εκτελούνται
εκτελούνται
από
από
αριστερά
αριστερά
στα
στα
δεξιά
δεξιά
,
,
εκτός
εκτός
από
από
τους
τους
τελεστές
τελεστές
ορισμού
ορισμού
(
(
assignment operators
assignment operators
)
)
28
28
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Παράδειγμα
Παράδειγμα
29
29
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Άμεση
Άμεση
(
(
ρητή
ρητή
)
)
μετατροπή
μετατροπή
-
-
Explicit casting
Explicit casting


Ο
Ο
τελεστής
τελεστής
(
(
type)
type)
είναι
είναι
διαθέσιμος
διαθέσιμος
για
για
ρητή
ρητή
μετατροπή
μετατροπή
(
(
explicit
explicit
casting
casting
)
)
ενός
ενός
τύπου
τύπου
σε
σε
κάποιο
κάποιο
άλλο
άλλο
:
:
π
π
.
.
χ
χ
.
.
9 / 4
9 / 4


2
2
(double) 9 / 4
(double) 9 / 4


2.25
2.25


Ο
Ο
τελεστής
τελεστής
(
(
type
type
)
)
είναι
είναι
unary operator
unary operator
με
με
προτεραιότητα
προτεραιότητα
ίση
ίση
με
με
τα
τα
unary
unary
+
+
και
και
-
-
,
,
και
και
έχει
έχει
precedence
precedence
από
από
δεξιά
δεξιά
προς
προς
αριστερά
αριστερά
30
30
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Λογικές
Λογικές
εκφράσεις
εκφράσεις
και
και
αποφάσεις
αποφάσεις


Έλεγχος
Έλεγχος
αν
αν
η
η
λογική
λογική
έκφραση
έκφραση
είναι
είναι
αληθής
αληθής
(
(
true
true
)
)
ή
ή
όχι
όχι
(
(
false
false
)
)


Εντολή
Εντολή
διακλάδωσης
διακλάδωσης
if:
if:


Αν
Αν
η
η
λογική
λογική
έκφραση
έκφραση
που
που
χρησιμοποιείται
χρησιμοποιείται
σαν
σαν
συνθήκη
συνθήκη
είναι
είναι
αληθής
αληθής
τότε
τότε
εκτελείται
εκτελείται
η
η
επόμενη
επόμενη
εντολή
εντολή
ή
ή
η
η
ομάδα
ομάδα
εντολών
εντολών
που
που
ακολουθούν
ακολουθούν
μέσα
μέσα
σε
σε
{ }
{ }


Τελεστές
Τελεστές
ισότητας
ισότητας
(
(
equality
equality
)
)
και
και
συγκρίσεως
συγκρίσεως
(
(
relational
relational
)
)
μπορούν
μπορούν
να
να
χρησιμοποιηθούν
χρησιμοποιηθούν
σε
σε
λογικές
λογικές
εκφράσεις
εκφράσεις
:
:
Standard algebraic
equality or relational
operator
Java equality
or relational
operator
Sample
Java
condition

Meaning of
Java condition
Equality operators



=
==
x == y
x is equal to y

!=
x != y
x is not equal to y
Relational operators



>
>
x > y
x is greater than y
<
<
x < y
x is less than y

>=
x >= y
x is greater than or equal to y

<=
x <= y
x is less than or equal to y
31
31
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Outline
Outline
1 // Fig. 2.15: Comparison.java
2 // Compare integers using if statements, relational operators
3 // and equality operators.
4 import java.util.Scanner; // program uses class Scanner
5
6 public class Comparison
7 {
8 // main method begins execution of Java application
9 public static void main( String args[] )
10 {
11 // create Scanner to obtain input from command window
12 Scanner input = new Scanner( System.in );
13
14 int number1; // first number to compare
15 int number2; // second number to compare
16
17 System.out.print( "Enter first integer: " ); // prompt
18 number1 = input.nextInt(); // read first number from user
19
20 System.out.print( "Enter second integer: " ); // prompt
21 number2 = input.nextInt(); // read second number from user
22
23 if ( number1 == number2 )
24 System.out.printf( "%d == %d\n", number1, number2 );
25
26 if ( number1 != number2 )
27 System.out.printf( "%d != %d\n", number1, number2 );
28
29 if ( number1 < number2 )
30 System.out.printf( "%d < %d\n", number1, number2 );
Test for equality, display
result using printf.
Compares two numbers
using relational operator <
32
32
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Outline
Outline


Comparison.java
Comparison.java


(2 of 2)
(2 of 2)


Program output
Program output
31
32 if ( number1 > number2 )
33 System.out.printf( "%d > %d\n", number1, number2 );
34
35 if ( number1 <= number2 )
36 System.out.printf( "%d <= %d\n", number1, number2 );
37
38 if ( number1 >= number2 )
39 System.out.printf( "%d >= %d\n", number1, number2 );
40
41 } // end method main
42
43 } // end class Comparison

Enter first integer: 777
Enter second integer: 777
777 == 777
777 <= 777
777 >= 777


Enter first integer: 1000
Enter second integer: 2000
1000 != 2000
1000 < 2000
1000 <= 2000



Enter first integer: 2000
Enter second integer: 1000
2000 != 1000
2000 > 1000
2000 >= 1000

Compares two numbers
using relational operator >,
<=and >=.
33
33
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Εντολές
Εντολές
ελέγχου
ελέγχου
διακλάδωσης
διακλάδωσης
if
if
(logical test)
(logical test)
statement;
statement;
switch
switch
(variable)
(variable)
{
{
case value1:
case value1:
statements
statements
break;
break;
case value3:
case value3:
statements
statements
break;
break;
case value4: case value5:
case value4: case value5:
statements
statements
break;
break;
default:
default:
statements
statements
}
}
if
if
(logical test)
(logical test)
statement;
statement;
else if
else if
(logical test)
(logical test)
statement;
statement;
else
else
statement;
statement;
if
if
(logical test)
(logical test)
{
{
statements
statements


.
.
}
}
34
34
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Εντολές
Εντολές
ελέγχου
ελέγχου
επαναλήψεων
επαναλήψεων
(
(
βρόγχων
βρόγχων
)
)
for
for
(initialization ; logical test; modification)
(initialization ; logical test; modification)
statement;
statement;
do
do
{
{
statements;
statements;
}
}
while (logical test);
while (logical test);
while
while
(logical test)
(logical test)
statement;
statement;
for
for
(initialization ; logical test; modification)
(initialization ; logical test; modification)
{
{


statements
statements


}
}
while
while
(logical test) {
(logical test) {


statements
statements


}
}
35
35
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Γενικές
Γενικές
Εισηγήσεις
Εισηγήσεις
και
και
Παρατηρήσεις
Παρατηρήσεις


Να
Να
γράφετε
γράφετε
τα
τα
προγράμματα
προγράμματα
σας
σας
με
με
τον
τον
πιο
πιο
απλό
απλό
δυνατό
δυνατό
τρόπο
τρόπο
και
και
με
με
ευκρίνεια
ευκρίνεια
ώστε
ώστε
να
να
μπορεί
μπορεί
κάποιος
κάποιος
εύκολα
εύκολα
να
να
καταλάβει
καταλάβει
τι
τι
κάνετε
κάνετε


Να
Να
χρησιμοποιείτε
χρησιμοποιείτε
πάντα
πάντα
σχόλια
σχόλια
και
και
ομαδοποιήσεις
ομαδοποιήσεις
/
/
στοιχίσεις
στοιχίσεις
(
(
indentation
indentation
)
)


Πάντα
Πάντα
να
να
δοκιμάζετε
δοκιμάζετε
τα
τα
προγράμματα
προγράμματα
σας
σας
κάτω
κάτω
από
από
όλες
όλες
τις
τις
δυνατές
δυνατές
περιπτώσεις
περιπτώσεις
και
και
σε
σε
όλες
όλες
τις
τις
πλατφόρμες
πλατφόρμες
που
που
θα
θα
χρησιμοποιηθούν
χρησιμοποιηθούν


Να
Να
διαβάζετε
διαβάζετε
τις
τις
περιγραφές
περιγραφές
των
των
τάξεων
τάξεων
της
της
Java
Java
(
(
documentation
documentation
)
)
και
και
να
να
είστε
είστε
ενήμεροι
ενήμεροι
με
με
τις
τις
πολλές
πολλές
τους
τους
δυνατότητες
δυνατότητες


Αν
Αν
δεν
δεν
είστε
είστε
σίγουροι
σίγουροι
πώς
πώς
να
να
χρησιμοποιήσετε
χρησιμοποιήσετε
κάποια
κάποια
δυνατότητα
δυνατότητα
της
της
Java
Java
απλά
απλά
δοκιμάστε
δοκιμάστε
μια
μια
απλή
απλή
περίπτωση
περίπτωση


Προσέξτε
Προσέξτε
όλα
όλα
τα
τα
ενδεχόμενα
ενδεχόμενα
λάθη
λάθη
κατά
κατά
τη
τη
διάρκεια
διάρκεια
της
της
μεταγλώττισης
μεταγλώττισης
(
(
compile
compile
-
-
time errors
time errors
or
or
compilation errors
compilation errors
)
)
για
για
να
να
τα
τα
διορθώσετε
διορθώσετε
με
με
τη
τη
σειρά
σειρά


Λάθη
Λάθη
όπως
όπως
η
η
διαίρεση
διαίρεση
με
με
το
το
μηδέν
μηδέν
(
(
division by zero
division by zero
)
)
συμβαίνουν
συμβαίνουν
κατά
κατά
την
την
εκτέλεση
εκτέλεση
ενός
ενός
προγράμματος
προγράμματος
(
(
runtime errors
runtime errors
or
or
execution
execution
-
-
time errors
time errors
)
)


κάποια
κάποια
προκαλούν
προκαλούν
τερματισμό
τερματισμό
της
της
εκτέλεσης
εκτέλεσης
(
(
fatal runtime errors
fatal runtime errors
)
)


κάποια
κάποια
δεν
δεν
προκαλούν
προκαλούν
τερματισμό
τερματισμό
της
της
εκτέλεσης
εκτέλεσης
(
(
nonfatal runtime errors
nonfatal runtime errors
)
)
προκαλώντας
προκαλώντας
λανθασμένα
λανθασμένα
αποτελέσματα
αποτελέσματα
,
,
το
το
οποίο
οποίο
είναι
είναι
πιο
πιο
επικίνδυνο
επικίνδυνο
36
36
ΠΠΜ500: ΠροχωρημένηΑνάπτυξηΛογισμικούΕφαρμογώνΜηχανικής
Εκτέλεση
Εκτέλεση
παρεχόμενων
παρεχόμενων
προγραμμάτων
προγραμμάτων
Java
Java


Από
Από
το
το
συνοδευτικό
συνοδευτικό
CD
CD
του
του
βιβλίου
βιβλίου
: ..
: ..


\
\
examples
examples
\
\
ch01:
ch01:
cd
cd
ATM
ATM
java
java
ATMCaseStudy
ATMCaseStudy
cd
cd
BouncingBall
BouncingBall
java
java
BouncingBall
BouncingBall
cd
cd
GuessGame
GuessGame
java
java
GuessGame
GuessGame
cd
cd
LogoAnimator
LogoAnimator
java
java
LogoAnimator
LogoAnimator
cd
cd
TicTacToe
TicTacToe
java
java
TicTacToeTest
TicTacToeTest