You are on page 1of 44

Πανεπιστήμιο Πειραιώς

Τμήμα Ψηφιακών Συστημάτων

Αντικειμενοστρεφής Προγραμματισμός
Εργαστηριακό Μάθημα 2

Διδάσκουσα:
Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα 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).
• Άσκηση Υπολογίζω Τον Τελικό Βαθμό στο Μάθημα.
Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»
Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Βασικοί Τύποι Μεταβλητών 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]

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Αλφαριθμητικά (Strings)
Στη Java τα αλφαριθμητικά (strings) είναι στιγμιότυπα της
κλάσης String.

• Κώδικας Java για τη δήλωση String μεταβλητής:

• Κώδικας Java για τη δυναμική δημιουργία String μεταβλητής:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Μεταβλητές

• Mεταβλητή είναι μια οντότητα η οποία μπορεί να παίρνει


διαφορετικές τιμές.

• Δήλωση Μεταβλητών:

ΤύποςΔεδομένων ΌνομαΜεταβλητής;

• Αρχικοποίηση μεταβλητών:

ΤύποςΔεδομένων ΌνομαΜεταβλητής = ΤιμήΜεταβλητής;

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Κανόνες Ονοματοδοσίας Μεταβλητών
(Java Variable Naming Rules)
• Το όνομα μιας μεταβλητής (variable ή Identifier) μπορεί να αποτελείται από
οποιοδήποτε αριθμό χαρακτήρων και συμβόλων, με τον πρώτο χαρακτήρα
όμως να είναι είτε αλφαβητικό (πεζό ή κεφαλαίο), είτε το σύμβολο underscore (
_ ), ή το σύμβολο του δολαρίου ($).

• Αν θέλουμε να περιγράψουμε μια μεταβλητή χρησιμοποιώντας περισσότερες


από μια λέξεις, τότε οι θα πρέπει οι λέξεις να μην έχουν κενό ανάμεσα τους γιατί
το white space( ) δεν επιτρέπεται στην ονομασία μεταβλητών. Η κοινότητα των
προγραμματιστών συνηθίζει να διατηρεί πεζά τα γράμματα της πρώτης λέξης
και να κάνει κεφαλαία μόνο τα πρώτα στοιχεία από την δεύτερη λέξη και μετά.

• Απαγορεύεται η χρήση δεσμευμένων λέξεων - keywords (char, int, void, static,


public κλπ) ή χρήση χαρακτήρων τελεστών(+,-,*,/,++,—).

• Η καλύτερη προσέγγιση στην διαδικασία ονομασίας των μεταβλητών είναι να


χρησιμοποιούνται ολόκληρες λέξεις αντί για συντετμημένες η ακρώνυμα.

• Τα ονόματα μεταβλητών είναι case sensitive στην Java (eg test ≠ Test)

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Παραδείγματα Μεταβλητών Java
(Declaration of Basic Datatypes)

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Παράδειγμα Ονόματα Μεταβλητών
(Acceptable Variable Names)

Αποδεκτά Μη-Αποδεκτά

myName my Name

$myName 3m

_myName My+Name

myN4m3 myN*ame

L337 1eet

_char char

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Ονόματα Μεταβλητών
(Δεσμευμένες λέξεις της 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

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Είσοδος Τιμών Από το
Πληκτρολόγιο
• Κώδικας για χρήση της Scanner (int):

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Είσοδος Τιμών Από το
Πληκτρολόγιο
• Κώδικας για χρήση της Scanner (String):

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Βασικοί Τελεστές Java
(Java Basic Operators)
• Αριθμητικοί τελεστές: +, -, *, /, %, ++, --

• Σχεσιακοί τελεστές: ==, !=, >, <, >=, <=

• Λογικοί τελεστές: &&, ||, !

• Τελεστές ανάθεσης: =, +=, -=, *=, /=, %=

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Παραδείγματα Χρήσης Τελεστών
Java (eg Operators)

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Μετατροπές Αριθμητικών Τύπων
(Java Numeric Type Casting)
To type casting στην Java χωρίζεται σε δυο
κατηγορίες.
Widening Casting ή Implicit.

Narrowing Casting ή Explicitly.

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Μετατροπές Αριθμητικών Τύπων
(Java Numeric Type Casting)

•Widening Casting ή Implicit.

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Μετατροπές Αριθμητικών Τύπων
(Java Numeric Type Casting)

• Narrowing Casting ή Explicitly.

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Προγραμματιστικές Δομές

•Δομές ελέγχου

 If ... else

 switch
•Δομές επανάληψης

 for

 while

 do…while
Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»
Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομή Ελέγχου if … else

Σύνταξη:
μία επιλογή
If (συνθήκη) {

ακολουθία εντολών;

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομή Ελέγχου if … else
Σύνταξη:

If (συνθήκη) { δύο επιλογές

ακολουθία εντολών;

}
else {
ακολουθία εντολών;
}

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομή Ελέγχου if … else
Σύνταξη:

If (συνθήκη) {
ακολουθία εντολών;
}
else if (συνθήκη) {
ακολουθία εντολών;
}
else if (συνθήκη) {
πολλαπλές
ακολουθία εντολών;
επιλογές
}
else {
ακολουθία εντολών;
}
Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»
Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Εμφωλευμένα (nested) if
Σύνταξη:

If (συνθήκη) {
ακολουθία εντολών;
}
else {
if (συνθήκη) {
ακολουθία εντολών;
Εμφωλευμένο if
}
else {
ακολουθία εντολών;
}
}
Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»
Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομές Ελέγχου
(Decision-Making Statements)
•Κώδικας για χρήση της εντολής if…else:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομές Ελέγχου
(Decision-Making Statements)
•Κώδικας για χρήση της εντολής if…else if … else:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομές Ελέγχου
(Decision-Making Statements)
•Κώδικας για χρήση πολλαπλών συνθηκών
εντολών if…else, if… else if …else:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομές Ελέγχου
(Decision-Making Statements)
•Κώδικας για χρήση εμφωλευμένων (Nested)
εντολών if:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομή Επιλογής switch
Σύνταξη:

switch (μεταβλητή) {
case τιμή1:
ακολουθία εντολών;
break;
case τιμή2:
ακολουθία εντολών;
break;
default:
ακολουθία εντολών;
break;
}

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομές Ελέγχου
(Decision-Making Statements)
•Κώδικας για χρήση για χρήση της switch … case:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομές Ελέγχου και
Συμβολοσειρές
•Τι αποτελέσματα εμφανίζει το παρακάτω παράδειγμα?

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομές Ελέγχου και
Συμβολοσειρές
•Τι αποτελέσματα εμφανίζει το παρακάτω παράδειγμα?

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομές Ελέγχου και
Συμβολοσειρές

• Ο λόγος που ο τελεστής (==) δεν είναι ικανός να συγκρίνει


συμβολοσειρές για κάθε περίπτωση οφείλεται στο γεγονός ότι ο
τελεστής ελέγχει αν οι υπό έλεγχο συμβολοσειρές αναφέρονται
στην ίδια διεύθυνση μνήμης (reference equality). Σύμφωνα με το
προηγούμενο παράδειγμα οι συμβολοσειρές first και second
δείχνουν στην ίδια διεύθυνση μνήμης (δημιουργία του first με τιμή
“1337” και επαναχρησιμοποίηση της τιμής “1337” και στο second)
ενώ η third όχι λόγω του ότι δημιουργήθηκε δυναμικά (new) ως
νέο αντικείμενο της κλάσης String.

• Αντίθετα η μέθοδος equals() της κλάσης String ελέγχει αν οι τιμές


των υπό έλεγχο συμβολοσειρών (first, second, third) είναι λογικά
ίδιες (value equality) ασχέτως των διευθύνσεων μνήμης που
αναφέρονται.

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομή Επανάληψης for

Σύνταξη:

for (μεταβλητή=αρχική τιμή; συνθήκη; εντολή) {

ακολουθία εντολών;

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομή Επανάληψης while

Σύνταξη:

while (συνθήκη) {

ακολουθία εντολών;

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομή Επανάληψης do…while

• Σύνταξη:
do{
ακολουθία εντολών;
} while (συνθήκη);

• Σε αντίθεση με την δομή επανάληψης while, η


δομή do…while εκτελείται τουλάχιστον μία
φορά.

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομές Επανάληψης
(Looping Statements)

•Κώδικας για χρήση της εντολής for:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομές Επανάληψης
(Looping Statements)

•Κώδικας για χρήση της εντολής while:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Δομές Επανάληψης
(Looping Statements)

•Κώδικας για χρήση της εντολής do … while:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Εντολές break & continue

• break: διακόπτει την εκτέλεση των εντολών σε


ένα βρόγχο επανάληψης πριν από τη
προκαθορισμένη στιγμή.

• continue: διακόπτει την εκτέλεση μόνο της


τρέχουσας επανάληψης και όχι ολόκληρου του
βρόγχου. Συνεχίζει από την επόμενη
επανάληψη.

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Πίνακες (Arrays)

Μονοδιάστατοι
 Τρόπος δήλωσης:
τύποςΔεδομένων[] όνομαΜεταβλητήςΠίνακα = new
τύποςΔεδομένων[μέγεθοςΠίνακα]

 Παράδειγμα δήλωσης πίνακα:


int[] numbers = new int[10];
int[] numbers = {1,2,3,4,5,6,7,8}

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Πίνακες (Arrays)

Δισδιάστατοι πίνακες:
• Τρόπος δήλωσης:
τύποςΔεδομένων[][] όνομαΜεταβλητήςΠίνακα = new
τύποςΔεδομένων[μέγεθοςΠρώτηςΔιάστασης]
[μέγεθοςΔεύτερηςΔιάστασης]

• Παράδειγμα δήλωσης πίνακα:


int[][] numbers = new int[10][10];
int[][] numbers = {{1,2,3},{4,5,6},{7,8,9}}
1 23
4 5 6
7 8 9

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Πίνακες (Arrays)
• Δισδιάστατοι πίνακες:
 Τρόπος δήλωσης:
τύποςΔεδομένων[][] όνομαΜεταβλητήςΠίνακα =
new τύποςΔεδομένων[μέγεθοςΠρώτηςΔιάστασης]
[μέγεθοςΔεύτερηςΔιάστασης]

 Παράδειγμα δήλωσης πίνακα:


int[][] numbers = new int[10][10];
int[][] numbers = {{1,2,3},{4,5,6},{7,8,9}}
1 23
4 5 6
7 8 9

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Πίνακες (Arrays)

• Κώδικας Java για τη δήλωση πίνακα:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Πίνακες (Arrays)

• Κώδικας Java για τη δυναμική δημιουργία πίνακα


και εκχώρηση τιμών σε αυτόν:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Πίνακες (Arrays)

• Κώδικας Java για τη σάρωση πίνακα:

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2
Άσκηση
Ο βαθμός του μαθήματος “Αντικειμενοστρεφης
Προγραμματισμός” υπολογίζεται αφού ο εξεταζόμενος επιτύχει
με βαθμό εξέτασης >= 5 ως εξης:
Τελικός Βαθμός = Εξετάσεις * 80% + Εργασία * 20% + ( Άσκηση
1 + Άσκηση 2 + Άσκηση 3 ) * 10%
Να γραφεί πρόγραμμα που θα δέχεται από το πληκτρολόγιο τις
τιμές Όνομα, Επώνυμο, Α.Μ, Βαθμός Εξέτασης, Βαθμός
Εργασίας, 3 Βαθμούς Ασκήσεων και θα υπολογίζει τον τελικό
βαθμό στο μάθημα και θα εκτυπώνει όλες τις πληροφορίες του
φοιτητή καθώς και αν επέτυχε στο μάθημα. Ο τελικός βαθμός
είναι πραγματικός αριθμός που ανήκει στο σύνολο [0,10.0]. Ο
Βαθμός Εξέτασης, Βαθμός Εργασίας και οι Βαθμοί Ασκήσεων
είναι ακέραιοι που ανήκουν στο σύνολο [0,10].

Πανεπιστήμιο Πειραιώς Μάθημα «Αντικειμενοστρεφής Προγραμματισμός»


Τμήμα Ψηφιακών Συστημάτων Εργαστηριακό Μάθημα 2

You might also like