• Nenhum resultado encontrado

Shmeiwseis Java

N/A
N/A
Protected

Academic year: 2021

Share "Shmeiwseis Java"

Copied!
222
0
0

Texto

(1)

Προγραµµατισµός µε Java 0

Ε ι σ α γ ω γ ή

(2)

Προγραµµατισµός µε Java 1

Ε ι σ α γ ω γ ή

Πρόλογος

Οι σηµειώσεις αυτές βασίζονται στην εµπειρία που έχουµε

αντλήσει επί σειρά ετών από την διδασκαλία µας σε τµήµατα

ΑΕΙ – ΤΕΙ και ΕΑΠ.

Θεσσαλονίκη Φεβρουάριος 2003

Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(3)

Προγραµµατισµός µε Java 2

Ε ι σ α γ ω γ ή

Ε ι σ α γ ω γ ή

Η γλώσσα προγραµµατισµού Java είναι µία γλώσσα προγραµµατισµού που αναπτύσσεται πολύ γρήγορα. Κυκλοφόρησε σε πρώτη έκδοση το 1991 και έχει ήδη φθάσει στην 4η έκδοση της. Αποτελεί µία πλατφόρµα προγραµµατισµού ανεξάρτητη από τα διαφορετικά λειτουργικά συστήµατα και για τον λόγο αυτό χρησιµοποιείται περισσότερο σε Internet εφαρµογές. Είναι απλή, αντικειµενοστραφής, παρέχει ασφάλεια στις εφαρµογές και επειδή είναι ανεξάρτητη από τα διαφορετικά λειτουργικά συστήµατα, χρησιµοποιείται για εφαρµογές που δεν θα µπορούσαν να γίνουν µε τις λοιπές παραδοσιακές γλώσσες προγραµµατισµού.

Αντικειµενοστραφής προγραµµατισµός (Object Oriented Programming – OOP), είναι ο προγραµµατισµός που χρησιµοποιεί σύνολα προγραµµατιστικών ενοτήτων που ονοµάζονται συστατικά ή αντικείµενα (objects). Τα αντικείµενα υφίστανται και δρουν ανεξάρτητα. Τα αντικείµενα επικοινωνούν µεταξύ τους αλλά και µε το περιβάλλον για να εκτελούν διάφορες εργασίες. Η δύναµη της Java δηλαδή, η ασφάλεια των εφαρµογών αλλά και η ανεξαρτησία της από τα διαφορετικά λειτουργικά συστήµατα, είναι ο Bytecode. Ο Bytecode είναι ο ενδιάµεσος κώδικας που παράγεται κατά την µεταγλώττιση του προγράµµατος και εκτελείται από τον διερµηνέα της ( Java Virtual Machine - JVM ). Με την δοµή αυτή επιτυγχάνεται η ασφαλής διακίνηση των εφαρµογών µέσα στο Internet αλλά και η εκτέλεση τους σε διαφορετικά λειτουργικά συστήµατα αρκεί να υπάρχει ο διερµηνέας της Java στα συστήµατα αυτά. Στο εγχειρίδιο αυτό θα µάθουµε να χρησιµοποιούµε την Java στην επίλυση προβληµάτων προγραµµατισµού, ξεκινώντας από τα πλέον απλά δηλαδή, της εκτέλεσης αριθµητικών πράξεων και εµβαθύνοντας σε δυσκολότερες έννοιες, όπως των αντικειµένων και των applets (προγράµµατα που µεταφέρονται µέσα από το Internet και εκτελούνται σε αυτό). Τα προγράµµατα στην Java είναι αρχεία κειµένου, που γράφονται σε απλούς επεξεργαστές. Τα προγράµµατα πρώτα µεταγλωττίζονται µε την κλήση του µεταγλωττιστή - javac και στην συνέχεια εκτελούνται στον διερµηνέα – java στη γραµµή εντολών. Η σύνταξη των προγραµµάτων πρέπει να γίνεται µε ιδιαίτερη προσοχή. Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(4)

Προγραµµατισµός µε Java

3

Το πρώτο µας πρόγραµµα

Οι εργασίες εγκατάστασης

• Το Java Development Kit (JDK) είναι µια συλλογή προγραµµάτων που µπορούµε να ‘κατεβάσουµε’ χωρίς κόστος από την ιστοσελίδα της εταιρίας Sun (java.sun.com). Το πακέτο έρχεται µε όνοµα jdk1_x_x-XXX-win.exe,

όπου τα x αντιπροσωπεύουν αριθµούς της τρέχουσας έκδοσης. Μετά πρέπει να κατεβάσουµε το εγχειρίδιο χρήσης που έρχεται σε συµπιεσµένη µορφή και µε το αντίστοιχο όνοµα jdk1_x_x-XXX-doc.zip. Το αρχείο αυτό πρέπει να το αποσυµπιέσουµε (unzip), ώστε να µπορέσουµε να διαβάσουµε τις οδηγίες και αντίστοιχες πληροφορίες της java.

Το πρώτο µας Πρόγραµµα

• Το παρακάτω απλό πρόγραµµα θα εµφανίσει στην οθόνη το µήνυµα : Hello Java. /* Αυτό είναι ένα απλό πρόγραµµα στη Java Το όνοµα του αρχείου είναι Hello.java */ class Hello { // Το πρόγραµµα αρχίζει µε µία κλήση στη main() public static void main(String args[])

{ System.out.println("Hello Java"); } } • Για να γράψουµε τον ανωτέρω κώδικα σε ένα απλό κειµενογράφο πρέπει να κάνουµε τα παρακάτω βήµατα:

¾ Πρώτα πηγαίνουµε σε παράθυρο του DOS (MS - DOS Prompt). Μετά πηγαίνουµε σε ένα κατάλογο όπου θα αποθηκεύουµε και θα εκτελούµε

(5)

Προγραµµατισµός µε Java

4

Το πρώτο µας πρόγραµµα

τα προγράµµατά µας. Αν δεν υπάρχει τέτοιος κατάλογος τον δηµιουργούµε.

¾ Μετά καλούµε ένα απλό κειµενογράφο, για παράδειγµα τον Notepad, όπου θα γράψουµε το πρόγραµµα. (Programs | Accessories | Notepad).

¾ Γράφουµε το πρόγραµµα.

(6)

Προγραµµατισµός µε Java

5

Το πρώτο µας πρόγραµµα

¾ Μπορούµε να χρησιµοποιήσουµε και άλλους κειµενογράφους όπως τους Edit, WordPad ή ακόµη και τον Ms – Word, αν αποθηκεύσουµε σωστά το πρόγραµµα δηλαδή, σε text – µορφή και µε κατάληξη java. To πρόγραµµα αυτό λέγεται πηγαίο πρόγραµµα (source program).

¾ Αποθηκεύουµε το πηγαίο πρόγραµµα µε το όνοµα

Hello.java.

¾ Το πηγαίο πρόγραµµα πρέπει πρώτα να µεταγλωττισθεί, ώστε να ελεγχθεί συντακτικά, και η εργασία αυτή γίνεται µε τον µεταγλωττιστή της java (compiler) - τον javac. Για να εκτελεσθεί ο javac πρέπει προηγουµένως να έχει ορισθεί η πλήρης διαδροµή (full path name) δηλαδή, η διαδροµή που θα επιτρέπει στο λειτουργικό σύστηµα να τον καλεί. Για παράδειγµα ορίζουµε την διαδροµή (path):

C:\Jdk1.2.2 \bin

Μεταγλώττιση και εκτέλεση του προγράµµατος

¾ Αν το όνοµα του πηγαίου προγράµµατος είναι Hello.java, τότε η εντολή για την µεταγλώττιση του προγράµµατος θα είναι :

C:\>javac Hello.java

¾ Η κατάληξη του προγράµµατος είναι η λέξη java

,

δηλαδή η κατάληξη περιέχει 4 - χαρακτήρες που δεν υποστηρίζει το λειτουργικό σύστηµα Dos. Για τον λόγο αυτό η java δεν τρέχει στο Dos, ενώ τρέχει σε περιβάλλον Windows 95 / 98 / και ΝΤ.

(7)

Προγραµµατισµός µε Java

6

Το πρώτο µας πρόγραµµα ¾ Ο µεταγλωττιστής παράγει το αρχείο:

Hello.class.

Το αρχείο αυτό δεν είναι απ’ ευθείας εκτελέσιµο (executable), αλλά ένας ενδιάµεσος κώδικας – ο bytecode – που εκτελείται από τον διερµηνέα της java (Interpreter). ¾ Για να εκτελέσουµε το πρόγραµµα καλούµε τον διερµηνέα της java – (Interpreter) τον

java

µε την παρακάτω εντολή

:

C:\>java MyProg

¾ Ο διερµηνέας της java λέγεται Java Virtual Machine (JVM) και εκτελεί τον bytecode – κώδικα. Ο κώδικας αυτός µπορεί να µεταφερθεί σε οποιοδήποτε λειτουργικό σύστηµα αρκεί να περιλαµβάνει τον αντίστοιχο JVM. Η δυνατότητα εκτέλεσης των bytecode – προγραµµάτων της java σε διαφορετικά λειτουργικά συστήµατα την έχει κάνει διάσηµη. Τα προγράµµατα διακινούνται και εκτελούνται µέσα στο Internet. Η εκτέλεση των προγραµµάτων γίνεται από τους πλοηγούς του Internet (Web – Browsers). Τα προγράµµατα αυτά ονοµάζονται applets.

H γενική δοµή του προγράµµατος

/* <σχόλια> */

import <java βιβλιοθήκες - Packages>; // <σχόλια>

(8)

Προγραµµατισµός µε Java

7

Το πρώτο µας πρόγραµµα

public class <όνοµα – κλάσης> { <∆ηλώσεις Μεταβλητών>

<∆ηλώσεις Μεθόδων>

public static void main(String[] args) { <εντολές προγράµµατος> } } • Κάθε πρόγραµµα είναι µια µονάδα µεταγλώττισης. • Το πρόγραµµα της Java είναι ένα αρχείο – κειµένου που περιέχει µία ή περισσότερες Κλάσεις. • Κάθε Κλάση περιέχει τις δικές της εντολές προγράµµατος. • Στη χρήση των ονοµάτων πρέπει να λαµβάνεται υπόψη η διαφορά των κεφαλαίων και µικρών γραµµάτων.

Μία δεύτερη µατιά στο πρόγραµµα

• Σχόλια προγράµµατος πολλαπλών γραµµών. Αρχίζουν µε τα σύµβολα

/*

και τελειώνουν µε τα σύµβολα

*/

.

Τα σχόλια παραβλέπονται από τον µεταγλωτ-τιστή. /* Αυτό είναι ένα απλό πρόγραµµα στη Java Το όνοµα του αρχείου είναι Hello.java */ • Ορισµός της κλάσης του προγάµµατος µε το όνοµα της. Η κλάση αρχίζει µε το άγκιστρο { και κλείνει επίσης µε το άγκιστρο }. class Hello { • Σχόλιο προγράµµατος απλής γραµµής. Αρχίζει µε τα σύµβολα

//

και τελειώνει στο τέλος της γραµµής. // Το πρόγραµµα αρχίζει µε µία κλήση στη main() • Εντολή εκκίνησης της εκτέλεσης του προγράµµατος. Κάθε πρόγραµµα στη java καλεί την µέθοδο main(). Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(9)

Προγραµµατισµός µε Java

8

Το πρώτο µας πρόγραµµα

public static void main(String args[])

• public, καθορίζει ότι το πρόγραµµα θα έχει πρόσβαση στην κλάση – µέλος (καθολική ορατότητα). Το αντίθετο συµβαίνει µε την private, η οποία απαγορεύει την πρόσβαση στον κώδικα της κλάσης – µέλους (τοπική ορατότητα). • static, επιτρέπει στην main() να κληθεί προς εκτέλεση πριν δηµιουργηθεί κάποιο αντικείµενο στην κλάση – µέλος. • void, δηλώνει στον µεταγλωττιστή ότι η main() δεν επιστρέφει κάποια τιµή.

• String args[ ] ή String[ ] args

,

ορίζει ένα πίνακα (array) παραµέτρων µε όνοµα args µε τιµές της κλάσης String. Η args θα πάρει τιµές κατά την εκτέλεση του προγράµµατος (όχι βέβαια στο παράδειγµά µας). • main(), είναι η µέθοδος που καλείται όταν µία εφαρµογή java ξεκινά. Το σώµα της περιέχεται µέσα σε άγκιστρα { }. Η main() είναι το σηµείο εκκίνησης του διερµηνέα. Μία εφαρµογή µπορεί να έχει δεκάδες κλάσεις αλλά µία από αυτές πρέπει να περιέχει την main(). • Η τελευταία εντολή εµφανίζει στην οθόνη το µήνυµα χρησιµοποιώντας την µέθοδο println() και τις System.out που ορίζουν, η µεν πρώτη µία κλάση που παρέχει πρόσβαση στα µέσα του Συστήµατος, ενώ η δεύτερη την δέσµη εξόδου στην οθόνη. System.out.println("Hello Java"); • Η εντολή τελειώνει µε το semicolon (

;

). Όλες οι εντολές της java τελειώνουν µε το σύµβολο αυτό. • Το πρώτο άγκιστρο κλείνει την main(), ενώ το δεύτερο την κλάση Hello. • Όταν το πρόγραµµα είναι µικρό περιέχει συνήθως µία κλάση. Στην περίπτωση αυτή θα πρέπει το όνοµα του πηγαίου κώδικα να είναι απόλυτα ίδιο µε το όνοµα της κλάσης. Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(10)

Προγραµµατισµός µε Java

9

Το πρώτο µας πρόγραµµα • Προσέξτε για µία ακόµη φορά τον τρόπο σύνταξης των στοιχείων του προγράµµατος καθώς η java τα λαµβάνει σοβαρά υπ’ όψιν και επιστρέφει λάθος αν δεν ακολουθήσουµε τους κανόνες σύνταξης. Αν κάνουµε κάποιο συντακτικό λάθος θα το διορθώσουµε χρησιµοποιώντας ξανά τον κειµενογράφο.

Ο κύκλος Γράψε, Μεταγλώττισε, Εκτέλεσε..

1. Γράψε το πρόγραµµα στο Notepad. 2. Αποθήκευσε το πρόγραµµα µε την εντολή Save As. 3. Μεταγλώττισε το πρόγραµµα µε την εντολή javac. 4. Αν έχουµε συντακτικά λάθη πηγαίνουµε στο βήµα 1. 5. Εκτέλεσε το πρόγραµµα µε την εντολή java. 6. Αν έχουµε λάθη πηγαίνουµε στο βήµα 1, ενώ αν εκτελείται σωστά τότε τελειώνουµε.

Παραλλαγή του προγράµµατος Hello

• Στην παραλλαγή θα περάσουµε µε παράµετρο το δεύτερο συνθετικό όνοµα της εµφάνισης του µηνύµατος. Προσέξτε την σύνταξη της args. Η πρώτη παράµετρος κατέχει την θέση 0 στη λίστα των παραµέτρων. /* Αυτό είναι ένα απλό πρόγραµµα στη Java Το όνοµα του αρχείου είναι Hello.java */ class Hello { // Το πρόγραµµα αρχίζει µε µία κλήση στη main() public static void main(String args[])

{

System.out.println("Hello " + args[0]); } }

(11)

Προγραµµατισµός µε Java

10

Το πρώτο µας πρόγραµµα

Αν εκτελέσουµε το πρόγραµµα θα πάρουµε το αποτέλεσµα:

C:\>javac Hello.java C:\>java Hello Java Hello Java

(12)

Προγραµµατισµός µε Java

11

∆εδοµένα – Τελεστές - Μεταβλητές

Αρχικοί τύποι δεδοµένων

Ακέραιοι και ∆εκαδικοί

Αρχικοί τύποι Ακεραίων (Integer)

Τύπος Μέγεθος Όρια τιµών

Byte 8 bits -128 to +127 Short 16 bits -32,768 to +32,767

Int 32 bits (περίπου)-2 billion to +2 billion Long 64 bits (περίπου)-10E18 to +10E18

Αρχικοί τύποι ∆εκαδικών (Floating Point)

Τύπος Μέγεθος

Όρια τιµών

float 32 bits -3.4E+38 to +3.4E+38 double 64 bits -1.7E+308 to 1.7E+308

• Γράφουµε ακέραιους : 123, 0, -34

(Integer literals,

χωρίς υποδιαστολή).

• Γράφουµε δεκαδικούς µε τα δεκαδικά ψηφία να χωρίζονται µε την τελεία :

123.0 -123.5 -198234.234 0.00000381

• Γράφουµε επίσης δεκαδικούς µε επιστηµονική µορφή (scientific

notation) χρησιµοποιώντας το E δηλαδή, 10 εις την δύναµη :

1.23E+02 -1.235E+02 -1.98234234E+05 3.81E-06

Για παράδειγµα ο αριθµός

1.2345E+03

είναι ο

1234.5

σε κανονική µορφή.

(13)

Προγραµµατισµός µε Java

12

∆εδοµένα – Τελεστές - Μεταβλητές

Ακρίβεια δεκαδικών αριθµών

• Ο τύπος δεδοµένων float έχει ακρίβεια 7 - δεκαδικών ψηφίων. • Ο τύπος δεδοµένων double έχει ακρίβεια περίπου 15 - δεκαδικών ψηφίων. Αν γράψουµε τον αριθµό 1.2345 θα θεωρηθεί του τύπου double και είναι ο τύπος που θα χρησιµοποιούµε για δεκαδικούς αριθµούς.

Ο αρχικός τύπος char

• Η java χρησιµοποιεί 16 – bits για την απεικόνιση ενός χαρακτήρα. Συνήθως χρησιµοποιούνται 8 – bits για απεικόνιση Αγγλικών χαρακτήρων και 16 – bits για χαρακτήρες άλλων γλωσσών. Η µέθοδος αυτή καλείται Unicode. Χαρακτήρες θεωρούνται επίσης τα σηµεία στίξης και το κενό διάστηµα. Τα κεφαλαία και τα πεζά γράµµατα θεωρούνται τελείως διαφορετικοί χαρακτήρες γι’ αυτό πρέπει να προσέχουµε ιδιαίτερα κατά τη σύνταξη των προγραµµάτων.

Ένας χαρακτήρας γράφεται µέσα σε αποστρόφους ‘’. Για παράδειγµα ‘Α’, ‘ο’. Υπάρχουν και οι ‘controle’ - χαρακτήρες ή χαρακτήρες εντολών που συντάσσονται µε ιδικό τρόπο : '\n' '\t' '\377'

Ο αρχικός τύπος boolean

• Αντιπροσωπεύει µια απλή τιµή αλήθειας ή ψεύδους (true | false).

H κλάση string

• Κάθε αλυσίδα χαρακτήρων (string) είναι ένα αντικείµενο, ακόµη και οι σταθερές τύπου string. Είδαµε τις σταθερές τύπου string στην εντολή:

System.out.println(“Hello Java”);

Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(14)

Προγραµµατισµός µε Java

13

∆εδοµένα – Τελεστές - Μεταβλητές

• Επειδή τα strings είναι αντικείµενα δεν µπορούν να µεταβληθούν απ’ ευθείας. Θα πρέπει να δηµιουργήσουµε ένα νέο string που θα περιέχει τις µεταβολές ή θα χρησιµοποιήσουµε την κλάση StringBuffer που επιτρέπει τις αλλαγές. • Η java ορίζει ένα τελεστή για τη συνένωση (concatenation) των strings, τον

τελεστή

+ .

Αριθµητικοί τελεστές

Τελεστής Εκτέλεση Πράξης - Πρόσηµο µείον - minus + Πρόσηµο συν – plus * Πολλαπλασιασµός / ∆ιαίρεση % Υπόλοιπο + Πρόσθεση - Αφαίρεση

∆ήλωση Σταθερών (Constants)

• Χρησιµοποιώντας την δεσµευµένη λέξη

final

µπορούµε να δηλώσουµε σταθερές τιµές µέσα στο πρόγραµµα δηλαδή, τιµές που δεν θα αλλάξουν κατά την εκτέλεση του προγράµµατος. class YpologismosFPA {

public static void main ( String[] arg ) {

final double SYNTELESTIS1 = 0.06; final double SYNTELESTIS2 = 0.18;

. . . }

}

(15)

Προγραµµατισµός µε Java

14

∆εδοµένα – Τελεστές - Μεταβλητές

Μεταβλητές (variables)

• Μεταβλητή, είναι ένας χώρος της µνήµης που θα πάρει τιµή µέσα στο πρόγραµµα ή κατά την εκτέλεση του προγράµµατος. Η µεταβλητή µπορεί να αλλάξει τιµή µέσα στο πρόγραµµα. • Πριν χρησιµοποιήσουµε µία µεταβλητή θα πρέπει να ορίσουµε το όνοµα και τον τύπο των δεδοµένων που θα λάβει.

Ονόµατα Μεταβλητών

• Το όνοµα της µεταβλητής αρχίζει µε ένα γράµµα, την underscore (

_

) ή το

$

και µπορεί να περιέχει συνδυασµούς γραµµάτων και αριθµών. • Ένα πρόγραµµα αναφέρεται στην τιµή µιας µεταβλητής, χρησιµοποιώντας το όνοµα της. Το όνοµα της µεταβλητής πρέπει να αποτελείται από σειρές καταλ-λήλων Unicode χαρακτήρων, δηλαδή το σύστηµα κωδικοποίησης χαρακτήρων που υποστηρίζει κείµενο σε διαφορετικές γλώσσες όπως Ελληνική, Ιαπωνική, Εβραϊκή κ.ά. • Το όνοµα της µεταβλητής : 9 ∆εν πρέπει να είναι δεσµευµένη λέξη. 9 Πρέπει να είναι µοναδικό µέσα στο µπλόκ προγράµµατος που ορίζεται – scope.

Ασκήσεις µε χρήση Μεταβλητών

Στο παρακάτω παράδειγµα: • ορίζουµε δύο µεταβλητές τις ar1 και ar2 • στη συνέχεια δίνουµε τιµές στις µεταβλητές • εκτελούµε απλές πράξεις • εµφανίζουµε τα αποτελέσµατα class Example1 {

public static void main(String args[]) {

int ar1; //Ορίζει τη µεταβλητή ar1 που θα πάρει ακέραια τιµή

(16)

Προγραµµατισµός µε Java

15

∆εδοµένα – Τελεστές - Μεταβλητές

int ar2; //Ορίζει τη µεταβλητή ar2 που θα πάρει ακέραια τιµή

ar1 = 45; // δίνουµε στη ar1 την τιµή 45 ar2 = 20; // δίνουµε στη ar2 την τιµή 20 System.out.println("Arithmos1 : " + ar1); System.out.println("Arithmos2 : " + ar2); ar1 = ar1 * 2; ar2 = ar2 * 3; System.out.print("Apotelesma1 : ar1 * 2 = "); System.out.println(ar1); System.out.print("Apotelesma2 : ar2 * 3 = "); System.out.println(ar2); } } • Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: Arithmos1 : 45 Arithmos2 : 20 Apotelesma1 : ar1 * 2 = 90 Apotelesma2 : ar2 * 3 = 60

Εκτέλεση Πράξεων

Κατανόηση της χρήσης των τελεστών

• Στην παρακάτω άσκηση θα δούµε την χρήση των τελεστών :

++x , x++, +x

και x+.

class IncDec {

public static void main(String args[]) { int x = 8, y = 13;

System.out.println("x = " + x);

(17)

Προγραµµατισµός µε Java

16

∆εδοµένα – Τελεστές - Μεταβλητές System.out.println("y = " + y); System.out.println("++x = " + ++x); System.out.println("y++ = " + y++); System.out.println("x = " + x); System.out.println("y = " + y); } } • Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: x = 8 y = 13 ++x = 9 y++ = 13 x = 9 y = 14 • Εκτέλεση απλών αριθµητικών πράξεων. Ένα πρώτο απλό παράδειγµα µε ακέραιους αριθµούς: class Arithmetic {

public static void main(String args[]) { int x = 17, y = 5; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("x + y = " + (x + y)); System.out.println("x - y = " + (x - y)); System.out.println("x * y = " + (x * y)); System.out.println("x / y = " + (x / y)); System.out.println("x % y = " + (x % y)); } } Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: x = 17 y = 5 x + y = 22 x - y = 12 x * y = 85 x / y = 3 x % y = 2 Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(18)

Προγραµµατισµός µε Java

17

∆εδοµένα – Τελεστές - Μεταβλητές • Εκτέλεση απλών αριθµητικών πράξεων. Ένα δεύτερο απλό παράδειγµα µε πραγµατικούς αριθµούς: class FloatMath {

public static void main(String args[]) { float x = 23.5F, y = 7.3F; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("x + y = " + (x + y)); System.out.println("x - y = " + (x - y)); System.out.println("x * y = " + (x * y)); System.out.println("x / y = " + (x / y)); System.out.println("x % y = " + (x % y)); } } • Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: x = 23.5 y = 7.3 x + y = 30.8 x - y = 16.2 x * y = 171.55 x / y = 3.219178 x % y = 1.5999994

Ανάλυση της εκτέλεσης αριθµητικών πράξεων

Πρόσθεση και αφαίρεση ακεραίων - Int

Στο παρακάτω παράδειγµα: • Ορίζουµε τρεις ακέραιες µεταβλητές a, b, c. ∆ίνουµε τιµές στις a = 1 και b = 2 Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(19)

Προγραµµατισµός µε Java

18

∆εδοµένα – Τελεστές - Μεταβλητές • Εκτελούµε πρόσθεση και αφαίρεση των αριθµών a και b και τοποθετούµε το αποτέλεσµα στη µεταβλητή c. • Τέλος εµφανίζουµε τα αποτελέσµατα. class Example2 {

public static void main(String args[]) { int a = 1; int b = 2; int c; System.out.println("a = " + a); System.out.println("b = " + b); c = a + b; System.out.println("a + b = " + c); c = a - b; System.out.println("a - b = " + c); } } • Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: a = 1 b = 2 a + b = 3 a - b = -1

Πρόσθεση και αφαίρεση πραγµατικών - Double

Στο παρακάτω παράδειγµα: • Ορίζουµε τρεις µεταβλητές, που θα πάρουν πραγµατικές τιµές, τις a, b, c. ∆ίνουµε τιµές στις a = 8.5 και b = 6.5 • Εκτελούµε πρόσθεση και αφαίρεση των αριθµών a και b και τοποθετούµε το αποτέλεσµα στη µεταβλητή c. • Τέλος εµφανίζουµε τα αποτελέσµατα. Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(20)

Προγραµµατισµός µε Java

19

∆εδοµένα – Τελεστές - Μεταβλητές

class Example3 {

public static void main(String args[]) { double a = 8.5; double b = 6.5; double c; System.out.println("a = " + a); System.out.println("b = " + b); c = a + b; System.out.println("a + b = " + c); c = a - b; System.out.println("a - b = " + c); } } Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: a = 8.5 b = 6.5 a + b = 15.0 a - b = 2.0

Πολλαπλασιασµός και ∆ιαίρεση ακεραίων

Στο παρακάτω παράδειγµα: • Ορίζουµε τρεις ακέραιες µεταβλητές a, b, c. ∆ίνουµε τιµές στις : a = 20 και b = 2 • Εκτελούµε πολλαπλασιασµό και διαίρεση των αριθµών a και b και τοποθετού-µε το αποτέλεσµα στη τοποθετού-µεταβλητή c. • Τέλος εµφανίζουµε τα αποτελέσµατα. Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(21)

Προγραµµατισµός µε Java

20

∆εδοµένα – Τελεστές - Μεταβλητές

class Example4 {

public static void main(String args[]) { int a = 20; int b = 2; int c; System.out.println("a = " + a); System.out.println("b = " + b); c = a/b; System.out.println("a / b = " + c); c = a * b; System.out.println("a * b = " + c); } } Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: a = 20 b = 2 a / b = 10 a * b = 40

Ο Τελεστής - υπόλοιπο διαίρεσης (%)

Στο παρακάτω παράδειγµα: • Ορίζουµε τρεις ακέραιες µεταβλητές a, b, c. ∆ίνουµε τιµές στις : a = 10 και b = 3 • Εκτελούµε την διαίρεση των αριθµών a και b µε τον τελεστή % και τοποθετούµε το αποτέλεσµα στη µεταβλητή c. • Τέλος εµφανίζουµε τα αποτελέσµατα. Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(22)

Προγραµµατισµός µε Java

21

∆εδοµένα – Τελεστές - Μεταβλητές

class Example5 {

public static void main(String args[]) { int a = 10; int b = 3; int c; System.out.println("a = " + a); System.out.println("b = " + b); c = a

%

b; System.out.println("a % b = " + c); } } Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τo αποτέλεσµα: a = 10 b = 3 a

%

b = 1

Πράξεις µε µεικτούς τύπους

class Example6 {

public static void main(String[] args) { //Μεταβλητές διάφορων τύπων int i = 37; int j = 42; double x = 27.475; double y = 7.22; //Πρόσθεση αριθµών System.out.println("Adding..."); System.out.println(" i + j = " + (i + j)); System.out.println(" x + y = " + (x + y)); //Αφαίρεση αριθµών System.out.println("Subtracting..."); System.out.println(" i - j = " + (i - j)); System.out.println(" x - y = " + (x - y)); //Πολλαπλασιασµός αριθµών System.out.println("Multiplying..."); Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(23)

Προγραµµατισµός µε Java

22

∆εδοµένα – Τελεστές - Μεταβλητές System.out.println(" i * j = " + (i * j)); System.out.println(" x * y = " + (x * y)); //∆ιαίρεση αριθµών System.out.println("Dividing..."); System.out.println(" i / j = " + (i / j)); System.out.println(" x / y = " + (x / y)); //Υπολογισµός υπολοίπου διαίρεσης

System.out.println("Computing the remainder..."); System.out.println(" i % j = " + (i % j)); System.out.println(" x % y = " + (x % y)); //Μεικτοί τύποι System.out.println("Mixing types..."); System.out.println(" j + y = " + (j + y)); System.out.println(" i * x = " + (i * x)); } } Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: Adding... i + j = 79 x + y = 34.695 Subtracting... i - j = -5 x - y = 20.255000000000003 Multiplying... i * j = 1554 x * y = 198.36950000000002 Dividing... i / j = 0 x / y = 3.805401662049862 Computing the remainder...

i % j = 37 x % y = 5.815000000000002 Mixing types... j + y = 49.22 i * x = 1016.575 Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(24)

Προγραµµατισµός µε Java

23

∆εδοµένα – Τελεστές - Μεταβλητές

Πράξεις µε boolean – τελεστές

• Στην παρακάτω άσκηση θα δούµε την χρήση των λογικών τελεστών και τα αποτελέσµατα διαφόρων συγκρίσεων : class Relational {

public static void main(String args[]) { int x = 7, y = 11, z = 11; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("x < y = " + (x < y)); System.out.println("x > z = " + (x > z)); System.out.println("y <= z = " + (y <= z)); System.out.println("x >= y = " + (x >= y)); System.out.println("y == z = " + (y == z)); System.out.println("x != z = " + (x != z)); } } • Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: x = 7 y = 11 x < y = true x > z = false y <= z = true x >= y = false y == z = true x != z = true

String – τελεστές (συνένωση - concatenation)

• Στην παρακάτω άσκηση θα δούµε την συνένωση διαφόρων string : class Concatenation {

public static void main (String args[]) {

(25)

Προγραµµατισµός µε Java

24

∆εδοµένα – Τελεστές - Μεταβλητές

String firstHalf = "What " + "did "; String secondHalf = "you " + "say?";

System.out.println(firstHalf + secondHalf); }

}

Αν εκτελέσουµε το πρόγραµµα θα πάρουµε το αποτέλεσµα:

What did you say?

Bitwise - λογικοί τελεστές

• Στην παρακάτω θα δούµε τους Bitwise – λογικούς τελεστές :

|

, &,

^

,

~

class BitLogic {

public static void main(String args[]) {

String binary[] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110","0111","1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"}; int a = 3; // 0 + 2 + 1 or 0011 in binary int b = 6; // 4 + 2 + 0 or 0110 in binary int c = a | b; int d = a & b; int e = a ^ b;

int f = (~a & b) | (a & ~b); int g = ~a & 0x0f;

System.out.println(" a = " + binary[a]); System.out.println(" b = " + binary[b]); System.out.println(" a|b = " + binary[c]); System.out.println(" a&b = " + binary[d]); System.out.println(" a^b = " + binary[e]); System.out.println("~a&b|a&~b = " + binary[f]); System.out.println(" ~a = " + binary[g]); } } Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(26)

Προγραµµατισµός µε Java

25

∆εδοµένα – Τελεστές - Μεταβλητές a = 0011 b = 0110 a|b = 0111 a&b = 0010 a^b = 0101 ~a&b|a&~b = 0101 ~a = 1100 • Στο παρακάτω παράδειγµα θα δούµε την χρήση του τελεστή:

<<

class ByteShift {

public static void main(String args[]) { byte a = 64, b;

int i; i = a << 2;

b = (byte) (a << 2);

System.out.println("Original value of a: " + a); System.out.println("i and b: " + i + " " + b); } } Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: Original value of a: 64 i and b: 256 0 • Με τον τελεστή

<<

µπορώ εύκολα να διπλασιάσω ένα αριθµό: class MultByTwo {

public static void main(String args[]) { int i;

int num = 0xFFFFFFE; for(i=0; i<4; i++) { num = num << 1; System.out.println(num); } } } Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(27)

Προγραµµατισµός µε Java

26

∆εδοµένα – Τελεστές - Μεταβλητές Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: 536870908 1073741816 2147483632 -32 • Οι bitwise – τελεστές έχουν συντµήσεις όπως και οι δεκαδικοί τελεστές. class OpBitEquals {

public static void main(String args[]) { int a = 1; int b = 2; int c = 3; a |= 4; b >>= 1; c <<= 1; a ^= c; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("c = " + c); } } Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: a = 3 b = 1 c = 6

Μετατροπές τύπων δεδοµένων

Type Conversion and Casting

• Πολλές φορές η τιµή ενός τύπου καταχωρείται σε µεταβλητή άλλου τύπου • Όταν οι τιµές των µεταβλητών είναι συµβατού τύπου, τότε η java κάνει την

µετατροπή αυτόµατα (για παράδειγµα από int σε long).

• Οι επιτρεπτές µετατροπές αρχικών τύπων της java.

(28)

Προγραµµατισµός µε Java

27

∆εδοµένα – Τελεστές - Μεταβλητές • Όταν οι τιµές των µεταβλητών δεν είναι συµβατού τύπου, τότε η java κάνει την µετατροπή µε ένα cast: <µεταβλητή> = <επιθυµητός τύπος> τιµή • Το παρακάτω παράδειγµα δείχνει τέτοιες µετατροπές : class Conversion {

public static void main(String args[]) { byte b;

int i = 257;

double d = 323.142;

System.out.println("\nConversion of int to byte."); b = (byte) i;

System.out.println("i and b " + i + " " + b);

System.out.println("\nConversion of double to int."); i = (int) d;

System.out.println("d and i " + d + " " + i);

System.out.println("\nConversion of double to byte."); b = (byte) d;

System.out.println("d and b " + d + " " + b); }

}

Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα:

Conversion of int to byte. i and b 257 1

Conversion of double to int. d and i 323.142 323

Conversion of double to byte. d and b 323.142 67

(29)

Προγραµµατισµός µε Java

28

∆εδοµένα – Τελεστές - Μεταβλητές

Λοιπές ασκήσεις πράξεων και τύπων δεδοµένων

Στην παρακάτω άσκηση θα δούµε τη χρήση της σταθεράς MAX_VALUE που επιστρέφει τη µέγιστη τιµή για ένα τύπο δεδοµένων. class MaxValues {

public static void main(String args[]) { // Ακέραιοι

byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE;

// Πραγµατικοί

float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; // Άλλοι πρωταρχικοί τύποι

char aChar = 'S'; boolean aBoolean = true; // Εµφάνιση όλων

System.out.println("The largest byte : " + largestByte); System.out.println("The largest short : " + largestShort);

System.out.println("The largest integer : " + largestInteger);

System.out.println("The largest long : " + largestLong); System.out.println("The largest float : " + largestFloat); System.out.println("The largest double : " + largestDouble); if (Character.isUpperCase(aChar)) {

System.out.println("The character " + aChar + " is upper case.");

} else {

System.out.println("The character " + aChar + " is lower case.");

}

System.out.println("The value of aBoolean is " + aBoolean);

} }

(30)

Προγραµµατισµός µε Java

29

∆εδοµένα – Τελεστές - Μεταβλητές

Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα:

The largest byte : 127 The largest short : 32767

The largest integer : 2147483647

The largest long : 9223372036854775807 The largest float : 3.4028235E38

The largest double : 1.7976931348623157E308 The character S is upper case.

The value of aBoolean is true

• Για ακέραιους µε πολλά ψηφία χρησιµοποιούµε τον τύπο long. Στην παρακάτω άσκηση θα υπολογίσουµε την απόσταση που διανύει το φως σε 1000 µέρες, όταν γνωρίζουµε ότι η ταχύτητα του φωτός είναι 186000 µίλια το δευτερόλεπτο και η σχέση υπολογισµού είναι η παρακάτω: Απόσταση = Ταχύτητα * ∆ευτερόλεπτα class Distance {

public static void main(String args[]) { int lightspeed; long days; long seconds; long distance; // Η ταχύτητα του φωτός σε µίλια ανά δευτερόλεπτο lightspeed = 186000; days = 1000; // Ο υπολογισµός για 1000 µέρες seconds = days * 24 * 60 * 60; // µετατροπή σε δευτερόλεπτα

distance = lightspeed * seconds; //υπολογισµός της απόστασης

System.out.print("In " + days);

System.out.print(" days light will travel about "); System.out.println(distance + " miles");

} }

(31)

Προγραµµατισµός µε Java

30

∆εδοµένα – Τελεστές - Μεταβλητές

Αν εκτελέσουµε το πρόγραµµα θα πάρουµε το αποτέλεσµα:

In 1000 days light will travel about 16070400000000 miles

• Στην παρακάτω άσκηση θα υπολογίσουµε την ενέργεια ενός Ηλεκτρονίου

σύµφωνα µε την σχέση του Αϊνστάιν E = mc2

class mc2 {

public static void main (String args[]) { double mass = 9.1096E-25;

double c = 2.998E8; double E = mass * c * c; System.out.println(E); } } Αν εκτελέσουµε το πρόγραµµα θα πάρουµε το αποτέλεσµα: 8.18771e-08

Η ανάθεση τιµής - assignment

Το σύµβολο της ανάθεσης τιµής σε µεταβλητές ή σταθερές το είδαµε ήδη από τις προηγούµενες ασκήσεις. Το σύµβολο της ανάθεσης τιµής είναι το απλό ίσον

(=)

, όπως και στις περισσότερες γλώσσες προγραµµατισµού. Η γενική µορφή του τελεστή είναι:

var = < έκφραση>.

Παράδειγµα int x, y, z; x = y = z = 35; //εκχωρεί την τιµή 35 στις µεταβλητές x, y και z.

Ο τελεστής ?

Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

Είναι ο τελεστής τριών – δρόµων και χρησιµοποιείται για να αντικαταστήσει κάποιες πολλαπλές συγκρίσεις µε τις if – then – else εντολές. Η γενική µορφή του τελεστή είναι:

<έκφραση1> ? <έκφραση2> : <έκφραση3>

(32)

Προγραµµατισµός µε Java

31

∆εδοµένα – Τελεστές - Μεταβλητές • Η <έκφραση1> είναι µια λογική έκφραση και µπορεί να πάρει τιµή true ή false. Αν η <έκφραση1> επιστρέψει τιµή αλήθειας (true), τότε εκτελείται η <έκφραση2>, διαφορετικά εκτελείται η <έκφραση3>. • Παράδειγµα: z = y == 0 ? 0 : x / y ; Στο ανωτέρω παράδειγµα αν η y είναι 0, τότε εκτελείται η έκφραση µεταξύ του (

?)

και του (:

)

δηλαδή, το z =0. Αν η y δεν είναι µηδέν, τότε εκτελείται η έκφραση µετά το (

:

) δηλαδή θα εκτελεσθεί η διαίρεση x / y. • Στην παρακάτω άσκηση θα δούµε επίσης τη χρήση του τελεστή ?. class Ternary {

public static void main(String args[]) { int i, k; i = 10; k = i < 0 ? -i : i; // απόλυτη τιµή του i System.out.print("Absolute value of "); System.out.println(i + " = " + k); i = -10; k = i < 0 ? -i : i; // απόλυτη τιµή του i System.out.print("Absolute value of "); System.out.println(i + " = " + k); } } • Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα αποτελέσµατα: Absolute value of 10 = 10 Absolute value of -10 = 10

Προτεραιότητα εκτέλεσης πράξεων

• Η σειρά εκτέλεσης πράξεων σε µία έκφραση γίνεται από αριστερά προς τα δεξιά. Έτσι στη σχέση c = 2 * 6 + 16 / 4 θα παίρναµε πρώτα το 2 * 6 = 12, ύστερα το 12 + 16 = 28, µετά το 28 / 4 = 7 και θα το είχαµε σαν Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(33)

Προγραµµατισµός µε Java

32

∆εδοµένα – Τελεστές - Μεταβλητές τελικό αποτέλεσµα στη µεταβλητή c. Στην πραγµατικότητα το αποτέλεσµα είναι διαφορετικό (2 * 6 = 12, 16 / 4 = 4, 12 + 4 = 16 και τέλος c =16), αν δούµε τις προτεραιότητες στον παρακάτω πίνακα :

() [] .

++ -- ~ !

* / %

+ -

>> >>>

<<

> >=

< <=

== !=

&

^

|

&&

||

?:

= op=

Ασκήσεις

• Ένας υπάλληλος πληρώθηκε για µηνιαίο µισθό: 20 δεκαχίλιαρα, 10 πεντοχίλιαρα, 20 χιλιάρικα, 25 πεντακοσάρικα, 32 εκατοστάρικα και 15 πενηντάρικα. Να υπολογίσετε πόσος είναι τελικά ο µηνιαίος µισθός του υπάλληλου. • Να γίνει το πρόγραµµα που εµφανίζει την καρτέλα µε τα στοιχεία ενός πελάτη µιας επιχείρησης. Τα δεδοµένα για τον πελάτη θα εισαχθούν µέσα στο πρόγραµµα. Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(34)

Προγραµµατισµός µε Java

33

∆εδοµένα – Τελεστές - Μεταβλητές • Να υπολογισθεί και εµφανισθεί η Τελική τιµή ενός προϊόντος όταν γνωρίζουµε ότι η Αρχική του τιµή είναι 1000 ∆ρχµ. και ο συντελεστής Φ.Π.Α είναι 18%. Να υπολογίσετε πρώτα το ποσό Φ.Π.Α (Αρχική τιµή * συντελεστή Φ.Π.Α / 100) και έπειτα την Τελική τιµή ( Αρχική τιµή + Ποσό Φ.Π.Α). • Να γίνει το πρόγραµµα που υπολογίζει τον ακαθάριστο µισθό ενός υπαλλήλου όταν γνωρίζουµε ότι οι µέρες εργασίας του υπαλλήλου είναι 25, το ηµεροµίσθιο 20000, οι υπερωρίες 10 ώρες και τέλος η σχέση υπολογισµού είναι: Ακαθ.Μισθός = Μέρες Εργ. * Ηµεροµίσθιο + 0.2 * Ηµεροµίσθιο * Υπερωρίες Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(35)

Προγραµµατισµός µε Java

34

Εντολές Ελέγχου

Λογικοί τελεστές – boolean

Τελεστής Έλεγχος που εκτελεί A

==

B Είναι το A ίσο µε το B ; A

<

B Είναι το A µικρότερο του B ; A

<=

B Είναι το A µικρότερο ή ίσο του B ; A

>

B Είναι το A µεγαλύτερο του B ; A

>=

B Είναι το A µεγαλύτερο ή ίσο του B ; A

!=

B Είναι το A όχι ίσο (άνισο) του B ; • Οι λογικοί τελεστές µε τα ορίσµατα Α και Β αποτελούν τις λογικές εκφράσεις. Θα δούµε τις λογικές εκφράσεις σε πρώτη φάση στις εντολές if και switch.

Εντολή - if

• Εντολή αλλαγής της ροής του προγράµµατος σύµφωνα µε τη λογική τιµή µιας έκφρασης. if <συνθήκη> <εντολή1 | δέσµη εντολών1> else < εντολή2 | δέσµη εντολών2>

Φωλιασµένες if (nested)

• Εντολές if που αποτελούν µέρος άλλης if ή else λέγονται φωλιασµένες ή εστιασµένες if. Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(36)

Προγραµµατισµός µε Java

35

Εντολές Ελέγχου

H κλιµακωτή εντολή if – else if

• Για πολλαπλούς ελέγχους χρησιµοποιούµε τη κλιµακωτή if – else if εντολή. if <συνθήκη> <εντολή> ; else if <συνθήκη> <εντολή> else if <συνθήκη> <εντολή>

:

else <εντολή> • Παράδειγµα χρήσης της if – else if class IfElse {

public static void main(String args[]) { int month = 4; // April

String season;

if(month == 12 || month == 1 || month == 2) season = "Winter";

else if(month == 3 || month == 4 || month == 5) season = "Spring";

else if(month == 6 || month == 7 || month == 8) season = "Summer";

else if(month == 9 || month == 10 || month == 11) season = "Autumn";

else

season = "Error in Month";

System.out.println("April is in the " + season + ".");

} }

(37)

Προγραµµατισµός µε Java

36

Εντολές Ελέγχου

Εντολή – switch

• Εντολή πολλαπλών αποφάσεων – διαδροµών. switch <έκφραση> { case <τιµή 1> ; // σειρά εντολών break ; case <τιµή 2> ; // σειρά εντολών break ; : : default ; // σειρά εντολών }

• Η έκφραση πρέπει να είναι του τύπου byte, short, int, ή char. Η default είναι προαιρετική.

• Παράδειγµα χρήσης της if – else if

class SampleSwitch {

public static void main(String args[]) { for(int i=0; i<6; i++)

switch(i) { case 0: System.out.println("i is zero."); break; case 1: System.out.println("i is one."); break; case 2: System.out.println("i is two."); break; Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(38)

Προγραµµατισµός µε Java

37

Εντολές Ελέγχου case 3: System.out.println("i is three."); break; default:

System.out.println("i is greater than 3."); } } }

Φωλιασµένες switch

• Εντολή switch µέσα σε άλλη δηµιουργεί φωλιασµένες switch – εντολές. switch (counter1) { case 1: switch (counter2) { case 0: System.out.println(“Value is zero”); break; case 1: System.out.println(“Value is one”); break; } break; case 2:

:

Εντολές επανάληψης

• Οι εντολές επανάληψης της java είναι οι :

for, while

και

do – while

. Αυτές οι εντολές δηµιουργούν θηλιές (loops). Οι εντολές που περικλείονται µέσα στις θηλιές εκτελούνται συνήθως µέχρις ότου εκτελεσθεί µία συνθήκη τερµατισµού.

(39)

Προγραµµατισµός µε Java

38

Εντολές Ελέγχου

Eντολή – for

• Είναι η εντολή που εκτελείται για προκαθορισµένο αριθµό επαναλήψεων. for (<αρχική τιµή> ; <συνθήκη τερµατισµού>; <βήµα επανάληψης>) • Επανάληψη της θηλιάς για 10 – φορές.

for (i=1; i<11; i++) System.out.println(i);

• Επανάληψη της θηλιάς για 10 – φορές. Προσέξτε τις τιµές του i.

class Forloop1 {

public static void main(String args[]) { int i;

for(i=10; i>0; i--)

System.out.println("Number : " + i); } } • Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα παρακάτω αποτελέσµατα: Number : 10 Number : 9 Number : 8 Number : 7 Number : 6 Number : 5 Number : 4 Number : 3 Number : 2 Number : 1 Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(40)

Προγραµµατισµός µε Java

39

Εντολές Ελέγχου

• Μπορούµε να ορίσουµε την µεταβλητή της θηλιάς µέσα στην ίδια την θηλιά, όταν δεν θέλουµε να την χρησιµοποιήσουµε έξω από τη θηλιά.

class ForLoop2 {

public static void main(String args[]) { // εδώ η i ορίζεται µέσα στη θηλιά for(int i=10; i>0; i--)

System.out.println("Number : " + i); } } • Στο παρακάτω παράδειγµα η συνθήκη τερµατισµού είναι boolean και όχι συνθήκη τιµής. Boolean ok = false;

for (int I = 1; ! ok; I++) {

//

if (metr >10) ok = true;

:

• Στο παρακάτω παράδειγµα θα χρησιµοποιήσουµε θηλιά όπου όµως η τιµή εκκίνησης και το βήµα της επανάληψης ορίζονται έξω από αυτήν. class ForVar {

public static void main(String args[]) { int i;

boolean done = false; i = 0;

for( ; !done; ) {

System.out.println("i is " + i); if(i == 10) done = true;

i++;

} } }

(41)

Προγραµµατισµός µε Java

40

Εντολές Ελέγχου • Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα παρακάτω αποτελέσµατα: i is 0 i is 1 i is 2 i is 3 i is 4 i is 5 i is 6 i is 7 i is 8 i is 9 i is 10 • Ατέρµονη θηλιά θα έχουµε όταν δεν ορίσουµε τα τρία µέρη της. Για παράδειγµα: for ( ; ; ) { //.. }

Φωλιασµένες for

• Μία θηλιά - for που εκτελείται µέσα σε άλλη. • Ένα παράδειγµα φωλιασµένων - for θα δούµε στο παρακάτω παράδειγµα. class ForNested {

public static void main(String args[]) { int i, j;

for(i=0; i<10; i++) { for(j=i; j<10; j++) System.out.print("*"); System.out.println(); } } } Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(42)

Προγραµµατισµός µε Java

41

Εντολές Ελέγχου • Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα παρακάτω αποτελέσµατα: ********** ********* ******** ******* ****** ***** **** *** ** *

Εντολή - while

• Επαναλαµβάνει µία ή περισσότερες εντολές όσο ισχύει µία συνθήκη που ελέγχεται σε κάθε επανάληψη. while <συνθήκη> { // σώµα της θηλιάς } • Η τιµή της συνθήκης τερµατίζει τη θηλιά. Όταν η συνθήκη πάρει ψευδή τιµή λόγω του ότι είναι boolean, τότε η θηλιά θα τερµατιστεί και θα εκτελεστεί η αµέσως µετά την while – εντολή. • Στο παρακάτω παράδειγµα θα δούµε µία θηλιά να εκτελείται 10 – φορές µε φθίνουσα µέτρηση δηλαδή, από το 10 προς το 1. class DemoWhile {

public static void main(String args[]) { int i = 10; while(i > 0) { System.out.println("Number : " + i); i--; } } } Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

(43)

Προγραµµατισµός µε Java

42

Εντολές Ελέγχου Αν εκτελέσουµε το πρόγραµµα θα πάρουµε τα παρακάτω αποτελέσµατα: Number : 10 Number : 9 Number : 8 Number : 7 Number : 6 Number : 5 Number : 4 Number : 3 Number : 2 Number : 1 • Η while µπορεί να µην έχει σώµα δηλαδή, να έχει µια τέτοια µορφή: while (++ i < --i);

Εντολή do - while

• Είναι η εντολή επανάληψης κατά την οποία το σώµα της θηλιάς εκτελείται τουλάχιστον µία φορά. Στη θηλιά αυτή ο έλεγχος της συνθήκης γίνεται στο τέλος της και όχι στην αρχή της όπως η while. do { // σώµα θηλιάς } while <συνθήκη> • Πρώτα εκτελείται το σώµα της θηλιάς και µετά ελέγχεται η συνθήκη. Αν η τιµή της συνθήκης είναι αληθής, τότε θα συνεχιστεί η εκτέλεση της θηλιάς, διαφορετικά θα τερµατιστεί και θα εκτελεστεί η αµέσως επόµενη εντολή. • Στο παρακάτω παράδειγµα θα δούµε όπως και στην while µία θηλιά να εκτελείται 10 – φορές µε φθίνουσα τάξη : 10, 9, 8,….,1. Παναγιώτης Σφέτσος

,

Ιωάννης Σταµέλος

,

Θεσσαλονίκη Φεβρουάριος 2003

Referências

Documentos relacionados

Enviar Comando SMS &#34;disarm + password&#34; para o dispositivo rastreador no veículo, ele irá responder “Tracker is deactivated”, tanto para os modos armado e desarmado,

NÃO utilize o equipamento se o cabo de alimentação estiver desgastado ou danificado; caso contrário, pode provocar um choque eléctrico ou um incêndio.. NÃO puxe o centro do cabo

A Brother avisa que este produto pode não funcionar correctamente num país que não aquele onde foi adquirido originalmente e não oferece nenhuma garantia no caso deste produto ser

Nas obras de construção civil é comum encarar a concretagem como sendo a etapa final de um ciclo constituído da execução das fôrmas, das armaduras, do lançamento, adensamento e

Você pode digitalizar o documento usando o botão Iniciar do scanner, da mesa digitalizadora modular ou do PC host. Limpando a mesa

É possível adquirir produto para impregnação (impermeabilizante) e detergente especialmente adequado para lavar roupa na máquina em lojas de desporto especializadas. Dosagem de

OBSERVAÇÃO: Se você estiver usando o Acessório seletor de foto Kodak e está digitalizando fotos usando a mesa, a tela Seleção de foto será exibida se a opção Ativar seletor

A terceira é identificar oportunidades de acrescentar negócios atraentes não relacionados com os atuais (oportunidades de crescimento diversificado). Assim sendo, este