Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr
Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java (Java Basic Datatypes). Αλφαριθμητικά (Strings) Κανόνες Ονοματοδοσίας Μεταβλητών (Java Variable Naming Rules). Βασικοί Τελεστές Java (Java Basic Operators). Μετατροπές Τύπων (Java Type Casting & Type Conversion). Είσοδος Τιμών Από το Πληκτρολόγιο. Δομές Ελέγχου (Decision-Making Statements). Δομές Επανάληψης (Looping Statements). Πίνακες (Arrays). Άσκηση Υπολογίζω Τον Τελικό Βαθμό στο Μάθημα.
Βασικοί Τύποι Μεταβλητών Java (Java Basic Datatypes) Οι βασικοί τύποι μεταβλητών στη Java, είναι οι ακόλουθοι: int: Ακέραιοι αριθμοί 32 bit [ 2147483648, 2147483647] char: Unicode χαρακτήρες 16 bit (Multi language) double: Πραγματικοί αριθμοί 64 bit (μεταβλητού εύρους) long: Ακέραιοι αριθμοί 64 bit [-9223372036854775808, 9223372036854775807] boolean: Λογικά δεδομένα 1 bit (true, false) float: Πραγματικοί αριθμοί 32 bit (μεταβλητού εύρους) short: Ακέραιοι αριθμοί 16 bit [ 32768, 32767] byte: Ακέραιοι αριθμοί 8 bit [ 128, 127]
Αλφαριθμητικά (Strings) Στη Java τα αλφαριθμητικά (strings) είναι στιγμιότυπα της κλάσης String. Κώδικας Java για τη δήλωση String μεταβλητής: Κώδικας Java για τη δυναμική δημιουργία String μεταβλητής:
Μεταβλητές Mεταβλητή είναι μια οντότητα η οποία μπορεί να παίρνει διαφορετικές τιμές. Δήλωση Μεταβλητών: ΤύποςΔεδομένων ΌνομαΜεταβλητής; Αρχικοποίηση μεταβλητών: ΤύποςΔεδομένων ΌνομαΜεταβλητής = ΤιμήΜεταβλητής;
Κανόνες Ονοματοδοσίας Μεταβλητών (Java Variable Naming Rules) Το όνομα μιας μεταβλητής (variable ή Identifier) μπορεί να αποτελείται από οποιοδήποτε αριθμό χαρακτήρων και συμβόλων, με τον πρώτο χαρακτήρα όμως να είναι είτε αλφαβητικό (πεζό ή κεφαλαίο), είτε το σύμβολο underscore ( _ ), ή το σύμβολο του δολαρίου ($). Αν θέλουμε να περιγράψουμε μια μεταβλητή χρησιμοποιώντας περισσότερες από μια λέξεις, τότε οι θα πρέπει οι λέξεις να μην έχουν κενό ανάμεσα τους γιατί το white space( ) δεν επιτρέπεται στην ονομασία μεταβλητών. Η κοινότητα των προγραμματιστών συνηθίζει να διατηρεί πεζά τα γράμματα της πρώτης λέξης και να κάνει κεφαλαία μόνο τα πρώτα στοιχεία από την δεύτερη λέξη και μετά. Απαγορεύεται η χρήση δεσμευμένων λέξεων - keywords (char, int, void, static, public κλπ) ή χρήση χαρακτήρων τελεστών(+,-,*,/,++, ). Η καλύτερη προσέγγιση στην διαδικασία ονομασίας των μεταβλητών είναι να χρησιμοποιούνται ολόκληρες λέξεις αντί για συντετμημένες η ακρώνυμα. Τα ονόματα μεταβλητών είναι case sensitive στην Java (eg test Test)
Παραδείγματα Μεταβλητών Java (Declaration of Basic Datatypes)
Παράδειγμα Ονόματα Μεταβλητών (Acceptable Variable Names) Αποδεκτά myname $myname _myname myn4m3 L337 _char Μη-Αποδεκτά my Name 3m My+Name myn*ame 1eet char
Ονόματα Μεταβλητών (Δεσμευμένες λέξεις της Java) abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while
Είσοδος Τιμών Από το Πληκτρολόγιο Κώδικας για χρήση της Scanner (int):
Είσοδος Τιμών Από το Πληκτρολόγιο Κώδικας για χρήση της Scanner (String):
Βασικοί Τελεστές Java (Java Basic Operators) Αριθμητικοί τελεστές: +, -, *, /, %, ++, -- Σχεσιακοί τελεστές: ==,!=, >, <, >=, <= Λογικοί τελεστές: &&,,! Τελεστές ανάθεσης: =, +=, -=, *=, /=, %=
Παραδείγματα Χρήσης Τελεστών Java (eg Operators)
Μετατροπές Αριθμητικών Τύπων (Java Numeric Type Casting) To type casting στην Java χωρίζεται σε δυο κατηγορίες. Widening Casting ή Implicit. Narrowing Casting ή Explicitly.
Μετατροπές Αριθμητικών Τύπων (Java Numeric Type Casting) Widening Casting ή Implicit.
Μετατροπές Αριθμητικών Τύπων (Java Numeric Type Casting) Narrowing Casting ή Explicitly.
Προγραμματιστικές Δομές Δομές ελέγχου If... else switch Δομές επανάληψης for while do while
Δομή Ελέγχου if else Σύνταξη: If (συνθήκη) { μία επιλογή ακολουθία εντολών; }
Δομή Ελέγχου if else Σύνταξη: If (συνθήκη) { δύο επιλογές ακολουθία εντολών; } else { ακολουθία εντολών; }
Δομή Ελέγχου if else Σύνταξη: If (συνθήκη) { ακολουθία εντολών; } else if (συνθήκη) { ακολουθία εντολών; } else if (συνθήκη) { } ακολουθία εντολών; πολλαπλές επιλογές else { } ακολουθία εντολών;
Εμφωλευμένα (nested) if Σύνταξη: If (συνθήκη) { ακολουθία εντολών; } else { if (συνθήκη) { ακολουθία εντολών; } else { ακολουθία εντολών; } } Εμφωλευμένο if
Δομές Ελέγχου (Decision-Making Statements) Κώδικας για χρήση της εντολής if else:
Δομές Ελέγχου (Decision-Making Statements) Κώδικας για χρήση της εντολής if else if else:
Δομές Ελέγχου (Decision-Making Statements) Κώδικας για χρήση πολλαπλών συνθηκών εντολών if else, if else if else:
Δομές Ελέγχου (Decision-Making Statements) Κώδικας για χρήση εμφωλευμένων (Nested) εντολών if:
Δομή Επιλογής switch Σύνταξη: switch (μεταβλητή) { case τιμή1: ακολουθία εντολών; break; case τιμή2: ακολουθία εντολών; break; default: ακολουθία εντολών; break; }
Δομές Ελέγχου (Decision-Making Statements) Κώδικας για χρήση για χρήση της switch case:
Δομές Ελέγχου και Συμβολοσειρές Τι αποτελέσματα εμφανίζει το παρακάτω παράδειγμα?
Δομές Ελέγχου και Συμβολοσειρές Τι αποτελέσματα εμφανίζει το παρακάτω παράδειγμα?
Δομές Ελέγχου και Συμβολοσειρές Ο λόγος που ο τελεστής (==) δεν είναι ικανός να συγκρίνει συμβολοσειρές για κάθε περίπτωση οφείλεται στο γεγονός ότι ο τελεστής ελέγχει αν οι υπό έλεγχο συμβολοσειρές αναφέρονται στην ίδια διεύθυνση μνήμης (reference equality). Σύμφωνα με το προηγούμενο παράδειγμα οι συμβολοσειρές first και second δείχνουν στην ίδια διεύθυνση μνήμης (δημιουργία του first με τιμή 1337 και επαναχρησιμοποίηση της τιμής 1337 και στο second) ενώ η third όχι λόγω του ότι δημιουργήθηκε δυναμικά (new) ως νέο αντικείμενο της κλάσης String. Αντίθετα η μέθοδος equals() της κλάσης String ελέγχει αν οι τιμές των υπό έλεγχο συμβολοσειρών (first, second, third) είναι λογικά ίδιες (value equality) ασχέτως των διευθύνσεων μνήμης που αναφέρονται.
Δομή Επανάληψης for Σύνταξη: for (μεταβλητή=αρχική τιμή; συνθήκη; εντολή) { ακολουθία εντολών; }
Δομή Επανάληψης while Σύνταξη: while (συνθήκη) { ακολουθία εντολών; }
Δομή Επανάληψης do while Σύνταξη: do{ ακολουθία εντολών; } while (συνθήκη); Σε αντίθεση με την δομή επανάληψης while, η δομή do while εκτελείται τουλάχιστον μία φορά.
Δομές Επανάληψης (Looping Statements) Κώδικας για χρήση της εντολής for:
Δομές Επανάληψης (Looping Statements) Κώδικας για χρήση της εντολής while:
Δομές Επανάληψης (Looping Statements) Κώδικας για χρήση της εντολής do while:
Εντολές break & continue break: διακόπτει την εκτέλεση των εντολών σε ένα βρόγχο επανάληψης πριν από τη προκαθορισμένη στιγμή. continue: διακόπτει την εκτέλεση μόνο της τρέχουσας επανάληψης και όχι ολόκληρου του βρόγχου. Συνεχίζει από την επόμενη επανάληψη.
Πίνακες (Arrays) Μονοδιάστατοι Τρόπος δήλωσης: τύποςδεδομένων[] όνομαμεταβλητήςπίνακα = new τύποςδεδομένων[μέγεθοςπίνακα] Παράδειγμα δήλωσης πίνακα: int[] numbers = new int[10]; int[] numbers = {1,2,3,4,5,6,7,8}
Πίνακες (Arrays) Δισδιάστατοι πίνακες: Τρόπος δήλωσης: τύποςδεδομένων[][] όνομαμεταβλητήςπίνακα = new τύποςδεδομένων[μέγεθοςπρώτηςδιάστασης] [μέγεθοςδεύτερηςδιάστασης] Παράδειγμα δήλωσης πίνακα: int[][] numbers = new int[10][10]; int[][] numbers = {{1,2,3},{4,5,6},{7,8,9}} 1 2 3 4 5 6 7 8 9
Πίνακες (Arrays) Δισδιάστατοι πίνακες: Τρόπος δήλωσης: τύποςδεδομένων[][] όνομαμεταβλητήςπίνακα = new τύποςδεδομένων[μέγεθοςπρώτηςδιάστασης] [μέγεθοςδεύτερηςδιάστασης] Παράδειγμα δήλωσης πίνακα: int[][] numbers = new int[10][10]; int[][] numbers = {{1,2,3},{4,5,6},{7,8,9}} 1 2 3 4 5 6 7 8 9
Πίνακες (Arrays) Κώδικας Java για τη δήλωση πίνακα:
Πίνακες (Arrays) Κώδικας Java για τη δυναμική δημιουργία πίνακα και εκχώρηση τιμών σε αυτόν:
Πίνακες (Arrays) Κώδικας Java για τη σάρωση πίνακα:
Άσκηση Ο βαθμός του μαθήματος Αντικειμενοστρεφης Προγραμματισμός υπολογίζεται αφού ο εξεταζόμενος επιτύχει με βαθμό εξέτασης >= 5 ως εξης: Τελικός Βαθμός = Εξετάσεις * 80% + Εργασία * 20% + ( Άσκηση 1 + Άσκηση 2 + Άσκηση 3 ) * 10% Να γραφεί πρόγραμμα που θα δέχεται από το πληκτρολόγιο τις τιμές Όνομα, Επώνυμο, Α.Μ, Βαθμός Εξέτασης, Βαθμός Εργασίας, 3 Βαθμούς Ασκήσεων και θα υπολογίζει τον τελικό βαθμό στο μάθημα και θα εκτυπώνει όλες τις πληροφορίες του φοιτητή καθώς και αν επέτυχε στο μάθημα. Ο τελικός βαθμός είναι πραγματικός αριθμός που ανήκει στο σύνολο [0,10.0]. Ο Βαθμός Εξέτασης, Βαθμός Εργασίας και οι Βαθμοί Ασκήσεων είναι ακέραιοι που ανήκουν στο σύνολο [0,10].