ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)
Μεταβλητές Οι γλώσσες προγραμματισμού υποστηρίζουν την πρόσβαση στα δεδομένα μέσω συμβολικών ονομάτων που καλούνται μεταβλητές Χαρακτηριστικά μεταβλητής – Το όνομά της – Η διεύθυνσή της στη μνήμη (αναφορά) – Η τιμή της Το περιεχόμενο (τιμή) μιας μεταβλητής μπορεί να αλλάζει στη διάρκεια εκτέλεσης ενός προγράμματος
Ερμηνεία μεταβλητών
Τύποι δεδομένων Ένας τύπος δεδομένων προσδιορίζει το πεδίο τιμών μιας μεταβλητής και τις πράξεις που μπορούν να γίνουν σε αυτή. • Η java απαιτεί την δήλωση του τύπου των μεταβλητών από τον προγραμματιστή. • Η δήλωση του τύπου μιας μεταβλητής προσδιορίζει τον αριθμό των bytes που θα δεσμευθούν στην μνήμη . • Πρωτογενείς τύποι δεδομένων (byte,char, short,int,long float, double,boolean) • Σύνθετοι τύποι (πίνακες, Αλφαριθμητικά) – int A[100]; – String str;
Τύποι δεδομένων – Επιτυγχάνουμε καλύτερη εκμετάλλευση της μνήμης • Δηλώνοντας το σωστό τύπο για τις μεταβλητές – Επιτυγχάνουμε καλύτερη εκμετάλλευση της μνήμης – Επιτυγχάνουμε καλύτερο έλεγχο κατά τη μεταγλώττιση του προγράμματος • μετρητής int • βάρος, μάζα, ταχύτητα float, double • όνομα, διεύθυνση, AT String • λογική κατάσταση boolean • βαθμοί φοιτητών float[] grades • κόμβος λίστας κλάση Node { .. }
Πίνακας απλών τύπων δεδομένων char int , short, long float double byte boolean
Ακέραιος τύπος (short, int, long) • Αναπαριστά ακεραίους • Υποστηρίζονται τρεις διαφορετικοί τύποι: – byte (8 bit) -128 έως +127 – short (16 bit) -32.768 έως +32.767 – int (32 bit) -231 έως +231-1 (περίπου -2 έως +2 δις) – long (64 bit) -263 έως +263-1 • Σε δυαδική μορφή συμπληρώματος ως προς 2
Ορισμός μεταβλητών int x; int x, y, z; double r; byte b; Αρχικοποίηση int x = 1; int x, y = 0, z = 2; double r = 1.87; long abc = 42000000;
Τύπος char • Η τιμή εσωκλείεται με αποστρόφους (single quotes) • Αναπαριστά ατομικούς χαρακτήρες • Η τιμή εσωκλείεται με αποστρόφους (single quotes) – 'C', '2', '*', ',' • Λέξη-κλειδί: char – char choice= 'A'; – char x, y; • Μέγεθος 2 byte (65.535 διαφορετικές τιμές) • Η κωδικοποίηση των χαρακτήρων είναι unicode.
Τύποι πραγματικών αριθμών • Τύπος float • Τύπος double
Τύπος float • Αναπαριστά πραγματικούς αριθμούς θετικούς ή αρνητικούς (κινητής υποδιαστολής απλής ακρίβειας) – Αναπαράσταση σταθερής υποδιαστολής (ακρίβεια συγκεκριμένων δεκαδικών ψηφίων) π.χ., 0.012 – Αναπαράσταση κινητής υποδιαστολής (αυξημένη ακρίβεια δεκαδικών ψηφιών με επιστημονικό συμβολισμό) π.χ. 6.3Ε-05 • Μέγεθος 4 bytes (32 bit) • Λέξη-κλειδί: float – float x;
Τύπος double αρνητικούς (κινητής υποδιαστολής διπλής ακρίβειας) • Αναπαριστά πραγματικούς αριθμούς θετικούς ή αρνητικούς (κινητής υποδιαστολής διπλής ακρίβειας) – Διπλάσια ακρίβεια δεκαδικών ψηφίων σε σχέση με float. • Μέγεθος 8 bytes (64 bit) • Λέξη-κλειδί: double – double x;
Τύπος boolean • Μια μεταβλητή τύπου boolean μπορεί να πάρει δυο διακριτές τιμές true ή false Μέγεθος (Δεν ορίζεται) • Λέξη-κλειδί: bοοlean – boolean b;
Δήλωση μεταβλητών στη java • <τύπος δεδομένων> <λίστα μεταβλητών>; int count; int count, num; • <τύπος δεδομένων> <μεταβλητή>=<τιμή>; int count = 20; float num = 0.2;
Τελεστές (operators) • Σύμβολα ή λέξεις που αναπαριστούν μία συγκεκριμένη λειτουργία που εκτελείται σε ένα ή περισσότερα δεδομένα • Τα δεδομένα καλούνται τελεστέοι ή έντελα (operands) και μπορεί να είναι: – Μεταβλητές – Σταθερές – Κλήση συνάρτησης που επιστρέφει τιμή – Έκφραση (με χρήση παρενθέσεων) • Οι τελεστές χρησιμοποιούνται για το σχηματισμό εκφράσεων: num + 12 num1 > num2 (a+b)/c
Κατηγορίες τελεστών Την λειτουργία που εκτελούν : • Αριθμητικοί : ++, −−, +(unary), −(unary), *, /, %, +, − • Ανάθεσης : =, +=, −=, *=, /=, %= • Συσχετιστικοί : <, <=, >, >=, ==, != • Λογικοί : !, &&, || . • Διαχείρισης bits : <<, >>,>>>, &, ^ • Κλήση συνάρτησης : () • Τριαδική έκφραση συνθήκης: ?: • Ακολουθία : ,
Λειτουργία τελεστών + Πρόσθεση αριθμών (ή συνένωση String ανάλογα με τα ορίσματα) − Αφαίρεση αριθμών * Πολλαπλασιασμός αριθμών / Διαίρεση (ακέραια ή δεκαδική ανάλογα με τα ορίσματα) ++ Αύξηση αριθμού κατά 1 −− Μείωση αριθμού κατά 1 % Modulo (υπόλοιπο ακέραιης διαίρεσης) = Εκχώρηση τιμής από το δεξί στο αριστερό μέρος του τελεστή += Αύξηση τιμής κατά όσο λέει το δεξί όρισμα −= Μείωση τιμής κατά όσο λέει το δεξί όρισμα *= Πολλαπλασιασμός τιμής με όσο λέει το δεξί όρισμα /= Διαίρεση τιμής κατά όσο λέει το δεξί όρισμα %= Υπόλοιπο της διαίρεσης με το δεξί όρισμα
Λειτουργία τελεστών < Είναι η αριστερή τιμή μικρότερη της δεξιάς; < Είναι η αριστερή τιμή μικρότερη της δεξιάς; <= Είναι η αριστερή τιμή μικρότερη ή ίση της δεξιάς; > Είναι η αριστερή τιμή μεγαλύτερη της δεξιάς; >= Είναι η αριστερή τιμή μεγαλύτερη ή ίση της δεξιάς; == Είναι οι δύο τιμές ίσες; != Είναι οι δύο τιμές άνισες; ! Λογικό ΝΟΤ & Λογικό AND && Λογικό AND (δεν εξετάζει 2ο σκέλος αν το 1ο είναι false) | Λογικό OR || Λογικό OR (δεν εξετάζει 2ο σκέλος αν το 1ο είναι true)
Παράδειγμα • int x = 10; • int y = 20; x y • ++x; 11 20
Εκφράσεις • Συνδυασμός ενός ή περισσοτέρων τελεστέων και ενός ή περισσοτέρων τελεστών • Αριθμητικές (αποτέλεσμα αριθμητικού τύπου) (5*x+y/4)*8 • Σύγκρισης (αποτέλεσμα λογικού τύπου) x==3 a!=b (x+y) >= 4 • Λογικές (αποτέλεσμα λογικού τύπου) (x<5) && (x>=1) (x==0) || (y==0)
Εκτύπωση μεταβλητών • Γίνεται με τη συνάρτηση print και println της βασικής βιβλιοθήκης του πακέτου System.out • Παραδείγμα int num=1; System.out.println(“H τιμή της μεταβλητής num είναι ”+ num);
ΑΣΚΗΣΗ 1 Να γραφεί πρόγραμμα σε java με όνομα FahrenheitToCelsius στο οποίο να δηλώνεται μια μεταβλητή τύπου float και να δίνεται μια τυχαία αρχική τιμή. Στην συνέχεια, θεωρώντας ότι ο αριθμός αυτός αναπαριστά θερμοκρασία σε βαθμούς Φαρενάιτ, να γίνει μετατροπή σε κλίμακα Κελσίου και το αποτέλεσμα να τυπωθεί. Υπόδ: ο τύπος μετατροπής από Φαρενάιτ σε Κελσίου είναι C = (5/9) * (F - 32)
ΑΣΚΗΣΗ 2 Να γραφεί πρόγραμμα σε java με όνομα CalculateCircleData στο οποίο να δηλώνεται μια μεταβλητή r τύπου float για την ακτίνα του κύκλου. Δώστε μια τυχαία αρχική τιμή στην μεταβλητή r.Να οριστεί μεταβλητή p με τιμή 3.14. Να υπολογιστεί και να εκτυπωθεί το εμβαδόν και η περίμετρος του κύκλου.