CSD Univ. of Crete Φθινόπωρο Άσκηση 1 Εκφώνηση

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

ιορθώσεις επί της 2 ης έκδοσης εκτύπωσης 2002

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

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

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

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

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

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

Συλλογές, Στοίβες και Ουρές

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις

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

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

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Introduction to Java. Module 2.a: Read and Write Introduction. Prepared by Costantinos Costa for EPL 233. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 1

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

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

2. Προσδιοριστές, δεσμευμένες λέξεις και τύποι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

Κλάσεις και Αντικείµενα

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

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

ΕΡΓΑΣΙΑ 2. Κατασκευάζοντας Ημερολόγια. Ημερομηνία Ανάρτησης: 23/02/2018 Ημερομηνία Παράδοσης: 13/03/2018, 09:00

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

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

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

Java sessions. Part 1 - Βασικά έννοιες - μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

Δομές ελέγχου & επανάληψης

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

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

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

Τύποι δεδομένων, τελεστές, μεταβλητές

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 5: Κατασκευαστές (Constructors)

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και αντικείμενα στην Java Strings Πίνακες

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

Transcript:

Άσκηση 1 Εκφώνηση Αναπτύξτε ένα πρόγραμμα σε Java σύμφωνα με το οποίο το σύστημα θα προσθέτει τους αριθμούς 12.0 και 24.0 και θα δίνει στην κύρια έξοδο το αποτέλεσμα της άθροισης Να χρησιμοποιήσετε αντί για τον πρωτογενή τύπο double, την κλάση Double της βασικής βιβλιοθήκης Διαμορφώστε τον πηγαίο κώδικα έτσι ώστε το σύστημα να εκτελεί τις παρακάτω ενέργειες: Να ορίζει μια μεταβλητή αναφοράς τύπου Double και να της αναθέτει αρχική τιμή 12.0 Να ορίζει μια 2η μεταβλητή αναφοράς τύπου Double και να της αναθέτει αρχική τιμή 24.0 Να υπολογίζει το άθροισμα των δύο παραπάνω και να εκχωρεί το αποτέλεσμα σε μια 3η μεταβλητή αναφοράς τύπου Double Να τυπώνει το αποτέλεσμα της άθροισης 1

Άσκηση 1 Εκφώνηση Προσπαθήστε να κάνετε τον κώδικα συμπαγή αποφεύγοντας τη χρήση της τρίτης μεταβλητής αναφοράς Κάντε τον κώδικα ακόμη πιο συμπαγή αποφεύγοντας τη χρήση και των δύο πρώτων μεταβλητών αναφοράς. Εκδόσεις του προγράμματος: Εκδόσεις με τρεις μεταβλητές αναφοράς Έκδοση με δύο μεταβλητές αναφοράς Έκδοση χωρίς τη χρήση μεταβλητών αναφοράς Εκδόσεις με μεταβλητές στιγμιότυπου ορισμένες σε άλλη κλάση 2

Άσκηση 1 Έκδοση με Τρεις Μεταβλητές Αναφοράς Πηγαίος κώδικας: class Exercise1 { public static void main(string[] argv){ double d1 = new Double(12.0); double d2 = new Double(24.0); double d = d1.doublevalue() + d2.doublevalue(); double d3 = new Double(d); System.out.println(d3.doubleValue()); 3

Άσκηση 1 Έκδοση με Τρεις Μεταβλητές Αναφοράς Σχολιασμός: Double d1 = new Double(12.0); Δήλωση της d1 ως τοπική μεταβλητή αναφοράς τύπου Double Δημιουργία ενός στιγμιοτύπου και απόδοση αρχικής τιμής, καλώντας το δημιουργό της κλάσης Double Ο τελεστής ανάθεσης αναθέτει το στιγμιότυπο που μόλις δημιουργήθηκε στην αναφορά d1 double d = d1.doublevalue() + d2.doublevalue(); Αποστολή του μηνύματος doublevalue() στα στιγμιότυπα d1 και d2 Στην πρόταση Double d3 = d1 + d2; η έκφραση d1 + d2 δεν είναι αποδεκτή Ο τελεστής + δεν έχει οριστεί να ενεργεί σε στιγμιότυπα τύπου Double 4

Άσκηση 1 Έκδοση με Τρεις Μεταβλητές Αναφοράς Εναλλακτική έκδοση πηγαίου κώδικα: class Exercise1 { public static void main(string[] argv){ Double d1 = new Double(12.0); Double d2 = new Double(24.0); Double d3 = new Double(d1.doubleValue() + d2.doublevalue()); System.out.println(d3.doubleValue()); 5

Άσκηση 1 Έκδοση με Τρεις Μεταβλητές Αναφοράς Σχολιασμός: Double d3 = new Double(d1.doubleValue() + d2.doublevalue()); Δήλωση της d3 ως μιας τοπικής μεταβλητής αναφοράς τύπου Double Δημιουργία στιγμιοτύπου και απόδοση αρχικής τιμής Ως αρχική τιμή ορίζεται η τιμή της έκφρασης: d1.doublevalue() + d2.doublevalue() Πρόκειται για τιμή τύπου double 6

Άσκηση 1 Έκδοση με Δύο Μεταβλητές Αναφοράς Πηγαίος κώδικας: class Exercise1 { public static void main(string[] argv){ Double d1 = new Double(12.0); Double d2 = new Double(24.0); System.out.println(d1.doubleValue() + d2.doublevalue()); 7

Άσκηση 1 Έκδοση Χωρίς τη Χρήση Μεταβλητών Αναφοράς Πηγαίος κώδικας: class Exercise1 { public static void main(string[] argv){ System.out.println((new Double(12.0)).doubleValue() + (new Double(24.0)).doubleValue()); Σχολιασμός: Αποστολή του μηνύματος new στην κλάση Double για τη δημιουργία ενός στιγμιοτύπου Ο δημιουργός επιστρέφει μια αναφορά στο στιγμιότυπο που δημιουργήθηκε Μέσω της αναφοράς αυτής το σύστημα στέλνει στο στιγμιότυπο που μόλις δημιουργήθηκε το μήνυμα doublevalue 8

Άσκηση 1 Έκδοση με Μεταβλητές Στιγμιοτύπου Ορισμένες σε Άλλη Κλάση Πηγαίος κώδικας: class Exercise1 { public static void main(string[] argv){ MyClass myobject = new MyClass(); myobject.d1 = new Double(12.0); myobject.d2 = new Double(24.0); myobject.d3 = new Double(myObject.d1.doubleValue()+ myobject.d2.doublevalue()); System.out.println(myObject.d1 + + + myobject.d2 + = + myobject.d3); class MyClass { Double d1, d2, d3; 9

Άσκηση 1 Έκδοση με Μεταβλητές Στιγμιοτύπου Ορισμένες σε Άλλη Κλάση Εναλλακτική μορφή πηγαίου κώδικα: class Exercise1 { public static void main(string[] argv){ MyClass myobject = new MyClass(12.0,24.0); myobject.d3 = new Double(myObject.d1.doubleValue()+ myobject.d2.doublevalue()); System.out.println(myObject.d1 + + + myobject.d2 + = + myobject.d3); class MyClass { Double d1, d2, d3; MyClass(double a, double b){ this.d1 = new Double(a); this.d2 = new Double(b); 10

Άσκηση 2 Τροποποιείστε κατάλληλα τον κώδικα της προηγούμενης άσκησης έτσι ώστε ο χρήστης να μπορεί να ορίζει τους δύο προς άθροιση αριθμούς στο χρόνο εκτέλεσης Εκμεταλλευτείτε το μηχανισμό της Java που επιτρέπει το πέρασμα ορισμάτων από τη γραμμή εντολών Πηγαίος κώδικας: public class Exercise2 { public static void main(string[] argv){ Double d1 = new Double(argv[0]); Double d2 = new Double(argv[1]); double result = d1.doublevalue() + d2.doublevalue(); System.out.println(argv[0] + + + argv[1] + = + result); 11

Άσκηση 2 Μια Java εφαρμογή έχει πρόσβαση στα ορίσματα γραμμής διαταγών διαμέσου της αναφοράς argv σε πίνακα στοιχείων τύπου String: argv[0] είναι το πρώτο όρισμα argv[1] είναι το δεύτερο όρισμα, κλπ. 1η Εναλλακτική μορφή πηγαίου κώδικα: public class Exercise2 { public static void main(string[] argv){ Double d1 = Double.valueOf(argv[0]); Double d2 = Double.valueOf(argv[1]); double result = d1.doublevalue() + d2.doublevalue(); System.out.println(argv[0] + + + argv[1] + = + result); 12

Άσκηση 2 2η Εναλλακτική μορφή πηγαίου κώδικα: public class Exercise2 { public static void main(string[] argv){ Double d1 = Double.valueOf(argv[0]); Double d2 = Double.valueOf(argv[1]); System.out.println(argv[0] + + + argv[1] + = + (d1.doublevalue() + d2.doublevalue())); Έστω ότι το όνομα του αρχείου του πηγαίου κώδικα είναι Ex2 Η εκτέλεση γίνεται με την εξής γραμμή διαταγής: Java Ex2 12.0 24.0 13

Άσκηση 2 3η Εναλλακτική μορφή πηγαίου κώδικα: public class Exercise2 { public static void main(string[] argv){ Double d1 =; Double d2 =; System.out.println(argv[0] + + + argv[1] + = + (Double.valueOf(argv[0]).doubleValue() + Double.valueOf(argv[1]).doubleValue())); Χωρίς τη χρήση ενδιάμεσων αναφορών 14

Άσκηση 3 Υλοποιήσετε μία μέθοδο Java που τυπώνει τη μέρα της εβδομάδας για μία συγκεκριμένη μέρα (1..31), μήνα (1..12) και χρονιά Η μέρα της εβδομάδας για τις ημερομηνίες είναι ανάμεσα στις: Μάρτης 1900 και Φεβρουάριος 2100 μπορεί να υπολογιστεί όπως παρακάτω: Πρέπει να υπολογιστούν οι συνολικές μέρες από την 1900/1/1 μέχρι τη δεδομένη ημερομηνία (βλ. παρακάτω για λεπτομέρειες). Έπειτα, διαιρείς αυτό τον αριθμό δια 7 με ακέραιο υπόλοιπο: Αυτή είναι η μέρα της εβδομάδας, με 0 την Κυριακή, 1 τη Δευτέρα, κ.ο.κ. 15

Άσκηση 3 (συνέχεια) Για να υπολογίσετε τον συνολικό αριθμό των ημερών, πρέπει να υλοποιήσετε τα παρακάτω βήματα: Αφαιρέστε 1900 από την δεδομένη χρονιά και πολλαπλασιάστε το αποτέλεσμα με 365 Προσθέστε τις επιπλέον μέρες από τα δίσεκτα έτη με (year - 1900) / 4 Αν η δεδομένη χρονιά είναι δίσεκτο έτος και ο μήνας είναι Ιανουάριος ή Φλεβάρης, πρέπει να αφαιρέσετε 1 από το προηγούμενο αποτέλεσμα Προσθέστε όλες τις μέρες του χρόνου αυτού μέχρι τη δεδομένη ημέρα στο προηγούμενο αποτέλεσμα (Στην περίπτωση που είναι Φλεβάρης χρησιμοποιήσετε πάντα 28 μέρες, επειδή η επιπλέον μέρα του δίσεκτου έτους έχει ήδη προστεθεί) 16

Άσκηση 3 public class DayOfTheWeek { /* * Prints out the day of the week for a given day, month, year */ public static void main(string [] args) { int day = 23; int month = 5; int year = 1949; int dayoftheweek = (year - 1900) * 365 + (year - 1900) / 4; if (year % 4 == 0 && month <= 2) { dayoftheweek--; switch (month) { // NO break!!! Fall through to all cases case 12: dayoftheweek += 30; case 11: dayoftheweek += 31; case 10: dayoftheweek += 30; case 9: dayoftheweek += 31; case 8: dayoftheweek += 31; 17

Άσκηση 3 case 6: dayoftheweek += 31; case 5: dayoftheweek += 30; case 4: dayoftheweek += 31; case 3: dayoftheweek += 28; case 2: dayoftheweek += 31; dayoftheweek = (day + dayoftheweek) % 7; switch (dayoftheweek) { case 0: System.out.println("Sunday"); break; case 1: System.out.println("Monday"); break; case 2: System.out.println("Tuesday"); break; case 3: System.out.println("Wednesday"); break; case 4: System.out.println("Thursday"); break; case 5: System.out.println("Friday"); break; case 6: System.out.println("Saterday"); break; 18

Άσκηση 4 Προσδιορίστε την έξοδο του παρακάτω πηγαίου κώδικα που κάνει χρήση μεθόδων σύγκρισης Class RegionMatch { public static void main(string[] args) { String str = Klea, klea! ; boolean b1, b2, b3; b1 = str.regionmatches(6, Klea, 0, 4); b2 = str.regionmatches(true, 6, Klea, 0, 4); b3 = str.regionmatches(true, 6, Klea, 0, 5); System.out.println( b1 = + b1); System.out.println( b2 = + b2); System.out.println( b3 = + b3); 19

Άσκηση 4 Απάντηση: b1 = false b2 = true b3 = false 20

Άσκηση 5 Εκθετική Συνάρτηση Υποθέσετε ότι ο x είναι θετικός αριθμός τύπου double. Υλοποιήστε τη σειρά του Taylor για να υπολογίσετε την τιμή του αθροίσματος e x = 1 + x + 2 x 2! + 3 x 3! +... 21

Άσκηση 5 x N Υπολογισμός N! : double num = 1.0, dem = 1.0; for (int i=1; i<=n; i++) num *= x; for (int i=1; i<=n; i++) dem *= i; double term = num/dem; Καλύτερη προσέγγιση μονή επανάληψη double term = 1.0; for (int i=1; i<=n; i++) term *= x/i; 22

e Υπολογισμός : x Άσκηση 5 double term = 1.0; double sum = 0.0; for (int n=1; sum!=sum + term; n++){ sum += term; term = 1.0; for (int i=1; i<=n; i++) term *= x/i; /* * Η προηγούμενη προσέγγιση των 2-loops δεν μπορεί να ανταποκριθεί * για τιμές π.χ. x=10 και N=100 επειδή το 100! είναι πολύ μεγάλο για * να αναπαρασταθεί με double */ double term = 1.0; double sum = 0.0; for (int n=1; sum!=sum + term; n++){ sum += term; term *= x/i; 23