Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου



Σχετικά έγγραφα
Αντικειμενοστρεφής Προγραμματισμός

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Δομημένος Προγραμματισμός (ΤΛ1006)

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Εισαγωγή στον Προγραμματισμό

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

3. Εκφράσεις και έλεγχος ροής

Αντικειµενοστρεφής Προγραµµατισµός

Βασικά Στοιχεία της Java

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Στοιχειώδης προγραμματισμός σε C++

Δεδομένα, τελεστές, είσοδος/έξοδος

Δομές ελέγχου ροής προγράμματος

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Βασικά Στοιχεία της Java

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Οντοκεντρικός Προγραμματισμός

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Οντοκεντρικός Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Διαδικασιακός Προγραμματισμός

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 5η: Εντολές Επανάληψης

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Βασικά στοιχεία προγραµµατισµού στη JAVA

Ανάπτυξη και Σχεδίαση Λογισμικού

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΗ JAVA ΤΕΛΕΣΤΕΣ - ΜΕΤΑΒΛΗΤΕΣ

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική

Προγραμματισμός Ι (ΗΥ120)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

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

Προγραμματισμός Ι (ΗΥ120)

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

5 &6. Τύποι δεδομένων, τελεστές και

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Βασικά στοιχεία της Java

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΚΑΙ ΕΞΕΤΑΣΤΕΑ ΥΛΗ. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Με τις Γλώσσες Προγραμματισμού Pascal, C, C++, Java

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Mεταβλητές (variables) και Σταθερές (constants)

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Γλώσσα Προγραμματισμού C

Βασικά της γλώσσας JAVA

Εισαγωγή στον Προγραμματισμό

Παίρνοντας Αποφάσεις 1

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Προγραμματισμός Ι. Θεματική ενότητα 3: Tελεστές. εκφράσεις

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008

4. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

8. Συνθήκες ελέγχου, λογικοί τελεστές

ΕΠΛ131 Αρχές Προγραμματισμού

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Γλώσσα Προγραμματισμού C

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Βασικάχαρακτηριστικάτηςγλώσσας. Πίνακες, Έλεγχος Ροής και Βρόχοι

ΕΠΛ 012. JavaScripts

3 Αλληλεπίδραση Αντικειμένων

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

Αντικειμενοστρεφής Προγραμματισμός

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 2: Βασικές εντολές

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 1: Εισαγωγικές έννοιες

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Transcript:

Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 1

Σχόλια Σχόλιο σε μία γραμμή με // int x; //Δήλωση μίας μεταβλητής (ακέραιος) //Δήλωση μίας μεταβλητής (double) double radius; Σχόλια σε πολλαπλές γραμμές /* * Το πιο κάτω πρόγραμμα * βρίσκει το εμβαδό του κύκλου. */ double radius;... ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 2

Προσδιοριστές (Identifiers) Ένας προσδιοριστής (identifier)είναι μία ακολουθία από χαρακτήρες οι οποίοι περιλαμβάνουν: γράμματα, αριθμούς,underscores (_), καισύμβολα δολαρίου ($). Ένας identifier πρέπει να ξεκινάει με ένα γράμμα, το underscore (_), ή το σύμβολο δολαρίου ($). Δεν μπορεί να ξεκινάει με ένα αριθμό. Ένας identifier δεν μπορεί να είναι μία δεσμευμένη λέξη (π.χ., if, for, while, class, κ.τ.λ.) Ένας identifier δεν μπορεί να είναι true, false, ή null. Το μέγεθος ενός identifier μπορεί να είναι όσο χρειαζόμαστε. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 3

Δήλωση και Ανάθεση Μεταβλητών Δήλωση Μεταβλητών int x; //Δήλωση μίας μεταβλητής (ακέραιος) double radius; //Δήλωση μίας μεταβλητής (double) char a; //Δήλωση μίας μεταβλητής (χαρακτήρ.) Ανάθεση Μεταβλητών x=1; // Ανάθεσε το 1 στο x radius= 1.0; // Ανάθεσε το 1.0 στο radius a= A ; // Ανάθεσε το A στο a Δήλωση και Ανάθεση σε ένα Βήμα int x=1; double radius= 1.0; ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 4

Σταθερές μεταβλητές Σταθερές (constant) Μεταβλητές: Μεταβλητές που δεν αλλάζουν κατά τη διάρκεια εκτέλεσης του προγράμματος Ορίζονται όπως τις υπόλοιπες μεταβλητές με τη λέξη final σαν πρόθεμα: final datatype CONSTANTNAME = VALUE; Παραδείγματα final double PI = 3.14159; final int SIZE = 3; ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 5

Αριθμητικοί Τύποι Δεδομένων Όνομα Εύρος Μέγεθος ΠΡΟΣΟΧΗ: Τύποι floating-point δεν είναι αποθηκευμένοι με πλήρη ακρίβεια. Παράδειγμα: System.out.println(1.0-0.9); 0.09999999999999998 και όχι 0.9 System.out.println(1.0-0.1-0.1-0.1-0.1-0.1); 0.5000000000000001 και όχι 0.5 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 6

Οι τελεστές τις JAVA Η Javaχρησιμοποιεί τους ίδιους τελεστές με την C καιτην C++, και κατά τον ίδιο γενικά τρόπο. Σχεδόν όλοι οι τελεστές εφαρμόζονται μόνο σε αρχέγονους τύπους. Εξαίρεση αποτελούν οι τελεστές: =, == και!=, οι οποίοι εφαρμόζονται και σε αντικείμενα. Επίσης, οι τελεστές + και += εφαρμόζονται και σεαντικείμενα της κλάσης String. Κανόνες προτεραιότητας (precedence): οπολλαπλασιασμός και η διαίρεση έχουν προτεραιότηταέναντι της πρόσθεσης και της αφαίρεσης. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 7

Τελεστές Ανάθεσης (Συντομεύσεις) Συντομεύσεως τελεστών ανάθεσης += : π.χ., i += 8 i = i + 8 -= : π.χ., f -= 8.0 f = f -8.0 *= : π.χ., i *= 8 i = i * 8 /= : π.χ., i /= 8 i = i / 8 %= : π.χ., i %= 8 i = i % 8 Αυξητικοί και Μειωτικοί Τελεστές ++var: αύξησε την varκατά 1 και μετά υπολόγισε --var: μείωσε την varκατά 1 και μετά υπολόγισε var++: var--: υπολόγισε και μετά αύξησε την varκατά 1 υπολόγισε και μετά μείωσε την varκατά 1 public class test{ public static void main( String[] args){ int x=5; System.out.println(x++); //5 System.out.println(x); //6 x=5; System.out.println(++x); //6 System.out.println(x); //6 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 8

Μετατροπές Τύπων/Μεταβλητών Πάρτε για παράδειγμα τις ακόλουθες δηλώσεις: byte i = 100; long k = i * 3 + 4; int byte byte*int*int long double d = i * 3.1 + k / 2; byte*float+long/int double Όταν πραγματοποιείται μία πράξη μεταξύ μεταβλητών διαφορετικού τύπου, η JAVA μετατρέπει αυτόματα σύμφωνα με του ακόλουθους κανόνες: 1. Αν μία από τις μεταβλητές είναι τύπου double, τότε και η άλλη μετατρέπεται σε double. 2. Αλλιώς, Αν μία από τις μεταβλητές είναι τύπουfloat, τότε και η άλλη μετατρέπεται σε float. 3. Αλλιώς, Αν μία από τις μεταβλητές είναι τύπουlong, τότε και η άλλη μετατρέπεται σε long. 4. Αλλιώς, Αν και οι δύο μεταβλητές μετατρέπονται σε int. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 9

Μετατροπές Τύπων/Μεταβλητών (συν.) Έμμεση Μετατροπή (implicit casting) Παράδειγμα 1 double d = 3; Διεύρυνση/Μεγέθυνση τύπου int double Κανένα πρόβλημα στη μεταγλώττιση Παράδειγμα 2 inti= 3.0; Πρόβλημα στην μεταγλώττιση double int Συμβαίνει όταν γίνεται ανάθεση ενός πιο μικρού τύπου σε μεγαλύτερο (συρρίκνωση) Άμεση Μετατροπή (explicit casting) inti= (int) 3.0; Κανένα πρόβλημα στη μεταγλώττιση Συρρίκνωση δεδομένων Μπορεί να γίνει αφαίρεση κλάσματος/δεκαδικών, π.χ., int i = (int) 3.9; i=3. Τι θα γίνει με το ακόλουθο; intx = 5 / 2.0; intx = (int) (5 / 2.0); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 10

Strings & Characters Χαρακτήρες(char) char c = A ; //Δήλωση μίας μεταβλητής (char) ΠΡΟΣΟΧΗ: Οι τελεστές αύξησης/μείωσης (++/--) μπορούν να χρησιμοποιηθούν και σε χαρακτήρες. Π.χ., ++c = B. Μετατροπές τύπων μεταξύ ακέραιου (int) και χαρακτήρα(char) inti= a ; Ισοδύναμο με inti= (int) a ; char c = 97; Ισοδύναμο με char c = (char) 97; Συμβολοσειρές (String) String msg = Hello World ; //Δήλωση μίας μεταβλητής (string) ΠΡΟΣΟΧΗ: δεν είναι αρχέγονος τύπος (String = java.lang.string) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 11

Προγραμματισμός με Συνθήκες Πολλές φορές χρειάζεται να ελέγξουμε τα δεδομένα μίας μεταβλητής και ανάλογα να προβούμε σε διαφορετικές ενέργειες Το αποτέλεσμα μίας σύγκρισης, π.χ., x<5, είναι μία μεταβλητή τύπου booleanμε τιμές true ή false. Τελεστές Σύγκρισης < <= > >= ==!= μικρότερο μικρότερο ή ίσο μεγαλύτερο μεγαλύτερο ή ίσο ίσο όχι ίσο Δύο είδη δηλώσεων με συνθήκες if else, if else if else switch case ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 12

Λογικοί Τελεστές! Όχι (not) && Και (and) Ή (or) ^ exclusive or ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 13

Τελεστές Δυαδικών Ψηφίων (Bitwise Operators) Επιτρέπουν την επεξεργασία των δυαδικών ψηφίωνμεταβλητών αρχέγονου ακέραιου τύπου (int, long, short, byte, char). Εκτελούν πράξεις άλγεβρας boolστα αντίστοιχα bitsτων κατηγορημάτων τους και δίνουν το αποτέλεσμα. Τελεστές: AND(&), OR ( ), XOR(^), NOT(~). Επίσης: &=, =, ^= (δεν επιτρέπεται όμως το ~=) Οι τύποι booleanσε συνδυασμό με τους δυαδικούςτελεστές, αντιμετωπίζονται σαν τιμές ενός bit. Η Javaπροσφέρει επίσης τελεστές διολίσθησης (shiftoperators), που δέχονται μεταβλητές αρχέγονουακέραιου τύπου (int, long, short, byte, char) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 14

Απλό if else Θυμηθείτε το πρόγραμμα για τη δημιουργία κύκλων με ακτίνα Πρόβλημα:Τι γίνεται αν δώσουμε αρνητική τιμή για την ακτίνα του κύκλου; λάθος αποτέλεσμα Λύση:Μόνο αν ο χρήστης δώσει θετική τιμή τότε αλλάζουμε την τιμή της radius Σύνταξη απλού if: if (<booleanexpression> ){ else { class Circle { double radius = 1.0; Circle (double newradius) { radius = newradius; ; class Circle { double radius = 1.0; Circle (double newradius) { if ( newradius >= 0 ){ radius = newradius; else { radius = 0; ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 15

if else if else Τι συμβαίνει αν υπάρχουν πολλές συνθήκες για την ίδια μεταβλητή; Παράδειγμα: Υπάρχουν οι ακόλουθοι φόροι σύμφωνα με τον μισθό κάποιου ατόμου: μισθός <=20,000 0% φόρος μισθός >20,000 και <=30,000 20% φόρος μισθός >30,000 και <=40,000 30% φόρος μισθός >40,000 40% φόρος Πρόβλημα: Χρειάζεται να γράψουμε 3x if statements; ΌΧΙ Λύση:Χρήση του if else if else computetax (double salary) { double tax = 0.0; if ( salary <= 20000 ) { tax = 0.0; else if ( salary > 20000 && salary <= 30000) { tax = 0.2; else if ( salary > 30000 && salary <= 40000) { tax = 0.3; else { tax = 0.4; return tax * salary; Λογικός Τελεστής ΚΑΙ (&&) (στις επόμενες διαφάνειες) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 16

Περισσότερα για if else boolean even; if (number % 2 == 0 ) { even = true; else even = false; Ισοδύναμο boolean even = (number % 2 == 0); if ( even == true ) Ισοδύναμο if ( even ) Το πρόγραμμα ελέγχου του δίσεκτου χρόνου σε μία γραμμή! if (year % 400) result = true; elseif (year % 100) result = false; elseif(year % 4) result = true; result = false; if ( (year % 4 == 0 && year % 100!= 0) (year % 400 == 0) ) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 17

switch case To switch ομαδοποιεί πολλά if Σύνταξη: Μεταβλητές τύπου char, byte, short, int Μεταβλητές ίδιου τύπου με <switch-expression> To break σταματάει την εκτέλεση. Αν δεν υπάρχει break τότε η εκτέλεσειθα συνεχιστεί στο επόμενο case Όταν κανένα case δεν ικανοποιηθεί τότε εκτελούντεοι δηλώσεις του default switch ( <switch-expression> ) { case value1: statement(s)1; break; case value2: statement(s)2; break; case valuen: statement(s)n; break; default: statement(s)-for-default; ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 18

O τριαδικός τελεστής συνθήκης (ternary operator) Η ακόλουθη δήλωση if (x > 0) y = 1; else y = -1; είναι ισοδύναμη με y = (x > 0)? 1 : -1; Σύνταξη Τριαδικού Τελεστή: (<boolean-exp> )? exp1 : exp2; Παραδείγματα System.out.println( ( num % 2 == 0 )? //(boolean-exp) num + is even : //exp1 num + is odd ); //exp2 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 19

Προτεραιότητα τελεστών 1. var++, var-- 2. +, -(Unary plus and minus), ++var,--var 3. (type) Casting 4.!(Not) 5. *,/,%(Multiplication, division, and remainder) 6. +, -(Binary addition and subtraction) 7. <, <=, >, >= (Comparison) 8. ==,!=;(Equality) 9. ^ (Exclusive OR) 10.&& (Conditional AND) Short-circuit AND 11. (Conditional OR) Short-circuit OR 12.=, +=, -=,*=,/=,%=(Assignment operator) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 20

Προγραμματισμός με βρόγχους (loops) 3 είδη δηλώσεων προγραμματισμού με βρόγχους while while ( <boolean expression> ) { //δηλώσεις do while do { //δηλώσεις while ( <boolean expression> ); for for( <initial actions>; <boolean expr.>; actions after step ) //δηλώσεις Όλα τα είδη βρόγχων είναι ισοδύναμα. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 21

Παραδείγματα προγραμματισμού με βρόγχους Παράδειγμα <while> int i = 0; while (i < 10) { System.out.println( "while"); i ++; while for Παράδειγμα <for> for ( int i=0; i<10; i++) { System.out.println( "for"); dowhile Παράδειγμα <do-while> int i = 0; do { System.out.println( "do-while"); i++; while (i < 10); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 22

Δηλώσεις Branching: break, continue και return Break: Σταματάει την εκτέλεση του πιο κοντινού βρόγχου Ερώτηση: Πως σταματάμε την εκτέλεση φωλιασμένων βρόγχων; Απάντηση:Με τη χρήση break και label Continue:Συνεχίζει με την επόμενη εκτέλεση του πιο κοντινού βρόγχου (οι δηλώσεις κάτω από το continue δεν εκτελούνται Ερώτηση:Πως συνεχίζουμε την επόμενη εκτέλεση κάποιου πιο μακρινού βρόγχου; Απάντηση:Με τη χρήση continue και label Return:Σταματάει την εκτέλεση της συγκεκριμένης μεθόδου. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 23

Παραδείγματα: break, continue και return for (i = 0; i < SIZE; i++) { break; search1: //search1 is a label for (i = 0; i < SIZE; i++) { for (j = 0; j < SIZE; j++) { break search1; somemethod() { return; for (i = 0; i < SIZE; i++) { continue; search1: //search1 is a label for (i = 0; i < SIZE; i++) { for (j = 0; j < SIZE; j++) { continue search1; Exit somemethod() ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 24