«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφϊλαιο2: Βαςικϊ ςτοιχεύα τησ γλώςςασ 1
2.1. Μεταβλητζσ, Τφποι, Τελεςτζσ και Εκφράςεισ H Java είναι μια αντικειμενοςτρεφήσ γλώςςα προγραμματιςμού. Τα πάντα ςτην Java είναι αντικείμενα κάποιων κλάςεων εκτόσ από κάποιεσ ελάχιςτεσ εξαιρέςεισ, όπωσ είναι οι βαςικοί τύποι δεδομένων. 2
3 Οι βαςικοί τφποι δεδομζνων είναι οι παρακάτω:
ΣΕΛΕΣΕ Τελεςτήσ ανάθεςησ (=), ο οποίοσ θέτει μια τιμή ςε μια μεταβλητή π.χ. a = 496; (θέτει την τιμή 496 ςτη μεταβλητή a) 4
5 ΑΡΙΘΜΗΣΙΚΟΙ ΣΕΛΕΣΕ
6 ΧΕΙΑΚΟΙ ΣΕΛΕΣΕ
7 ΛΟΓΙΚΟΙ ΣΕΛΕΣΕ
Δήλωςη και οριςμόσ μεταβλητϊν Τα αντικεύμενα μασ πρϋπει να «θυμούνται» πληροφορύεσ. Αυτό γύνεται όταν αποθηκεύεται πληροφορύα ςε μια μ ε τα β λ η τ ή. 8
Στην Java πρϋπει να δηλώνουμε τον τύπο των μεταβλητών που θα χρηςιμοποιόςουμε. Η δόλωςη μιασ μεταβλητόσ γύνεται ςυνόθωσ ςτην αρχό του προγρϊμματοσ. Μπορεύ όμωσ να γύνει και ςε ϊλλεσ θϋςεισ μϋςα ςτο πρόγραμμα, αρκεύ φυςικϊ να εύναι πριν από την πρώτη εντολό ςτην οπούα χρηςιμοποιεύται η μεταβλητό 9 Δηλαδό, πριν χρηςιμοποιόςουμε οποιαδόποτε μεταβλητό πρϋπει πρώτα να δηλωθεύ.
ΔΗΛΩΕΙ ΜΕΣΑΒΛΗΣΩΝ int number; int counter = 6; boolean areequal = (number == counter); 10
11 Τα δεδομϋνα ενόσ αντικειμϋνου, που ονομϊζουμε πεδύα (attributes), αποθηκεύονται ςε μεταβλητϋσ οι οπούεσ εύναι μϋρη του αντικειμϋνου και εύναι γνωςτϋσ ωσ μ ε τα β λ η τ έ σ ς τ ι γ μ ι οτ ύ π ο υ, (instances variables).
Η μεταβλητό αντικειμϋνου: ανόκει ςτο αντικεύμενο(ςτιγμιότυπο κλϊςησ) καταλαμβϊνει ϋνα μϋροσ ςτη μνόμη. δηλώνεται γρϊφοντασ ςυνόθωσ ςτην αρχό τη λϋξη private ακολουθούμενη από το τύπο τησ μεταβλητήσ και το όνομα τησ. 12
Ο τύποσ τησ μεταβλητόσ ορύζει το εύδοσ τησ πληροφορύασ που θα αποθηκευτεύ ςτη μνόμη. Το όνομα τησ μεταβλητόσ πρϋπει να εύναι τϋτοιο που να περιγρϊφει το ςκοπό για τον οπούο θα χρηςιμοποιηθεύ η μεταβλητό. 13
14 Γενικϊ, η ςύνταξη για τη δόλωςη μιασ μεταβλητόσ αντικειμϋνου (instance variable) ακολουθεύ τον κανόνα: «λέξη public ή private» «τύποσ μεταβλητήσ» «όνομα μεταβλητήσ».
το όνομα μιασ μεταβλητόσ ςυνηθύζεται να ξεκινϊει με μικρό γρϊμμα το όνομα μιασ κλϊςησ που ςυνηθύζεται να ξεκινϊει με κεφαλαύο. Εύναι καλό τα ονόματα που δύνουμε ςε μεταβλητϋσ και κλϊςεισ να εύναι περιγραφικϊ τησ ϋννοιασ που θϋλουν να αναπαραςτόςουν. Τα ονόματα μεταβλητών δεν αρχύζουν ποτϋ με αριθμό και δεν μπορούν να περιϋχουν κενϊ. 15
16 2.2. Η δομή επιλογήσ if else
Η εντολό if χρηςιμοποιεύται όταν θϋλουμε να εκτελϋςουμε οριςμϋνεσ εντολϋσ ανϊλογα με την ικανοπούηςη ό όχι κϊποιασ ςυνθόκησ. Σε περύπτωςη που ϋχουμε μόνο μια εντολό, δεν χρειϊζονται τα ϊγκιςτρα 17
18
19 2.3. Οι δομζσ επανάληψησ for και while
φνταξθ While <αρχικοπούηςη> while (ςυνθήκη){ <εντολϋσ> <εντολϋσ βόματοσ> } 20 sum=0; i=1; while(i<=1000){ sum=sum+i; i=i+1; }
φνταξθ for for( αρχικοπούηςη; ςυνθόκη; εντολϋσ_βόματοσ) { <εντολϋσ> } sum = 0; for (i = 1; i <= 1000; i=i+1 ) { sum = sum + i; } 21
Παρατθριςεισ i=i+1 i++ i=i-1 i-- 22
Xρήςη των διπλϊν ςυμβόλων αφξηςησ/μείωςησ αριθμϊν ( ++ / -- ) Όταν τοποθετούνται π ρ ι ν από τη μεταβλητό γίνεται πρώτα η αύξηςη (ή μείωςη αντίςτοιχα) τησ τιμόσ τησ και μετά εκτελείται η εντολή που την περιϋχει, λαμβϊνοντασ υπόψη τη νϋα τησ τιμό. int var=3; //Ορίηουμε μια μεταβλθτι var με αρχικι τιμι 3 System.out.println(++var); // αφξθςε τθν var κατά 1 και εμφάνιςε τθν τιμι τθσ var System.out.println(var); // εμφάνιςε τθν τιμι τθσ var Το αποτέλεςμα που θα εμφανιςτεί ςτην οθόνη μασ είναι ο αριθμόσ 4 δύο φορέσ. 23
Xρήςη των διπλϊν ςυμβόλων αφξηςησ/μείωςησ αριθμϊν ( ++ / -- ) Όταν τοποθετούνται μετά από τη μεταβλητό εκτελείται πρώτα η εντολή που την περιϋχει και μετά γίνεται η αύξηςη (ή μείωςη αντίςτοιχα) τησ τιμόσ τησ. int var=3; System.out.println(var++); // εμφάνιςε και μετά αφξθςε τθν var κατά 1 System.out.println(var); // εμφάνιςε τθν τιμι τθσ var Το αποτέλεςμα που θα εμφανιςτεί ςτην οθόνη μασ είναι ο αριθμόσ 3 και μετά ο αριθμόσ 4. 24
25 2.4. Βαςικζσ Συναρτήςεισ - Μζθοδοι
Οι ςυναρτήςεισ: εύναι επαναχρηςιμοποιόςιμα τμόματα κώδικα, ςτα οπούα ϋχει δοθεύ ϋνα όνομα με απλό αναφορϊ του ονόματοσ αυτού εκτελούνται. η λειτουργύα αυτό εύναι γνωςτό ωσ κλήςη ςυνάρτηςησ. 26
Οι ςυναρτιςεισ ςτθν Java ανόκουν πϊντα ςε μια κλϊςη και λϋγονται μέθοδοι τησ κλάςησ. η ςυμπεριφορϊ των αντικειμϋνων καθορύζεται μϋςα ςτην κλϊςη που ανόκουν. Οι μϋθοδοι εύναι τα τμόματα κώδικα που καθορύζουν αυτό τη ςυμπεριφορϊ. ο ι μ έ θ ο δ ο ι ε ί ν αι οι ενέργ ε ι ε σ που μ π ο ρ ε ί ν α ε κ τ ε λ ε ί έ ν α α ν τ ι κ ε ί μ ε ν ο. 27
Παράδειγμα Έχουμε την κλϊςη Αυτοκινούμενο όχημα. Οι μϋθοδοι που ςυνδϋονται με αυτό την κλϊςη εύναι η Εκκύνηςη() η Πϋδηςη() η Μεταβολό ταχύτητασ(). 28
Η τυπικό βιβλιοθόκη κλϊςεων τησ Java παρϋχει ϋνα ςύνολο APIs (Application Programming Interface) κλϊςεων οι οπούεσ εύναι διαθϋςιμεσ ςε κϊθε πρόγραμμα Java. Η βιβλιοθόκη κλϊςεων οργανώνεται ςε πακϋτα. Στη JDK version 1.8 υπϊρχουν περύπου 1.000 κλϊςεισ ςε 60 πακϋτα (packages). 29
Ένα πακϋτο εύναι μια ςυλλογό από κλϊςεισ, που ςχετύζονται μεταξύ τουσ και κϊθε κλϊςη περιϋχει αρκετϋσ μεθόδουσ. Τα ονόματα των πακϋτων απαρτύζονται από μια ό περιςςότερεσ λϋξεισ χωριςμϋνεσ με τελεύεσ. java.lang Τποςτιριξθ των βαςικών χαρακτθριςτικών τθσ γλώςςασ. java.util Χριςιμεσ εργαςίεσ ςε δεδομζνα. java.sql Java Data Βase Connectivity (JDBC) για διαχείριςθ βάςθσ δεδομζνων. 30
Το πακϋτο java.lang περιϋχει: τισ βαςικϋσ κλϊςεισ τησ γλώςςασ (Object, String, System) κϊποιεσ ειδικϋσ κλϊςεισ για αναπαρϊςταςη των βαςικών τύπων δεδομϋνων με τη μορφό αντικειμϋνων (Integer, Long, Double). το πακϋτο java.lang φορτώνεται αυτόματα. 31
Για να χρηςιμοποιόςουμε τισ κλϊςεισ από κϊποιο ϊλλο πακϋτο πρϋπει να τισ ενςωματώςουμε ςτον κώδικϊ μασ χρηςιμοποιώντασ: τη δεςμευμϋνη λϋξη import. Ακολουθεύ το όνομα του πακϋτου και ςτη ςυνϋχεια το όνομα τησ κλϊςησ. Όταν θϋλουμε να ειςϊγουμε όλεσ τισ κλϊςεισ ενόσ πακϋτου βϊζουμε *, για παρϊδειγμα η εντολό : import acm.program.*; Η δόλωςη import γύνεται ςτην αρχό του αρχεύου τησ κλϊςησ πριν ξεκινόςει ο οριςμόσ τησ. 32
Κλάςθ Math του πακζτου java.lang περιϋχει όλεσ τισ μαθηματικϋσ μεθόδουσ. x = Math.max(a, b) ; // Επιςτρέφει ςτην x το μέγιςτο των a, b root = Math.sqrt(x) ; // Επιςτρέφει την τετραγωνική ρίζα του x 33
Μζκοδοσ println εμφανύζει ςτην οθόνη ϋνα μόνυμα. εύναι μια μϋθοδοσ του αντικειμένου out που αναπαριςτϊ το ρεύμα εξόδου, το οπούο ςυνόθωσ κατευθύνεται ςτην οθόνη. το αντικεύμενο out ανόκει ςτην κλάςη System. Έτςι αν θϋλουμε να εμφανύςουμε το μόνυμα : Καλημέρα γαλαξία γράφουμε: System.out.println("Καλημϋρα γαλαξύα"); 34
35 2.5. Τεκμηρίωςη Λογιςμικοφ
Όποιοσ θϋλει να χρηςιμοποιόςει μεθόδουσ τησ κλϊςησ διαβϊζει την τεκμηρύωςη (Documentation) για να πληροφορηθεί ςχετικά με τη λειτουργία των μεθόδων και τον τρόπο κλήςησ τουσ. Η τεκμηρίωςη των βιβλιοθηκών που έρχονται μαζί με τη γλώςςα Java είναι διαθέςιμη μέςω του παγκόςμιου ιςτού. Είναι επίςησ ενςωματωμένη μέςα ςτα περιςςότερα ολοκληρωμένα προγραμματιςτικά περιβάλλοντα (IDEs). 36
Εργαλείο javadoc εύναι ϋνα πρόγραμμα για αυτόματη καταςκευό τεκμηρύωςησ ςε μορφό HTM. εύναι αρκετϊ χρόςιμο ςτην καταςκευό βοηθημϊτων και τεχνικών αναφορών για εφαρμογϋσ οποιουδόποτε μεγϋθουσ. παρϋχεται ωσ τμόμα του καθιερωμϋνου Πακϋτου Ανϊπτυξησ (Development Kit) διατρϋχει τον κώδικα ενόσ πακϋτου και δημιουργεύ τεκμηρύωςη για κϊθε μια από τισ κλϊςεισ που αυτό περιϋχει. 37
2.5.1. Σχόλια Τα ςχόλια χρηςιμοποιούνται για να: Τεκμηριώνουμε: τον ςκοπό και τουσ ςτόχουσ του προγρϊμματοσ μασ, τον ςυγγραφϋα του προγρϊμματοσ, τισ εκδόςεισ του κώδικϊ μασ (revision history) κτλ. Περιγρϊφουμε: πεδύα, μεθόδουσ, κλϊςεισ και καταςκευαςτϋσ. Τα ςχόλια που γρϊφουμε ςτον πηγαύο κώδικα δεν εμφανύζονται ςτην εκτϋλεςη του προγρϊμματοσ μασ. Ένα ςχόλιο πολλών γραμμών γρϊφεται ανϊμεςα ςτα ςύμβολα /* και */. Ένα ςχόλιο μιασ γραμμόσ γρϊφεται μετϊ από το ςύμβολο // μϋχρι το τϋλοσ τησ γραμμόσ. 38
39 2.6. Διαγνωςτικά Μηνφματα
Όλεσ οι γλώςςεσ προγραμματιςμού, που παρϋχουν τη δυνατότητα δημιουργύασ παραθυρικών εφαρμογών διαθϋτουν: μια ςειρϊ διαλόγων που ονομϊζονται κοινού διϊλογοι (common dialogs) και διευκολύνουν την ειςαγωγό δεδομϋνων από τον χρόςτη, την προβολό μηνυμϊτων κλπ. Η Java παρϋχει το πακϋτο javax.swing για τη δημιουργύα γραφικού περιβϊλλοντοσ διεπαφόσ (GUI). Η κλϊςη JOptionPane του πακϋτου διευκολύνει την χρόςη παραθύρων διαλόγου για διαγνωςτικϊ μηνύματα, εύςοδο και ϋξοδο δεδομϋνων. 40