HY-252 Αντικειµενοστραφής Προγραµµατισµός. Χειµερινό Εξάµηνο 2010 ιδάσκων: Χριστοφίδης Βασίλης. Ηµεροµηνία Παράδοσης: 15/10/2010

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

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

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

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

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

Μονοδιάστατοι πίνακες Πολυδιάστατοι πίνακες Μέθοδοι Μέθοδοι Recursive Overloading

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

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

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

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

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

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

Πληροφορική 2. Αλγόριθμοι

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

Ακρότατα πίνακα, χωρίς min, max, μόνο με pos

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

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

Γράψτε ένα πρόγραμμα που θα προσομοιώνει τη ρίψη ενός νομίσματος και θα εμφανίζει στην οθόνη Κορώνα» ή «Γράμματα».

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

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

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: Τρίτη 4/11/2014, 22:00

lab14grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

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

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

οριακό PASS 402 PASS Πολύ σωστά, µπράβο οριακό PASS

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσμία: Τετάρτη 9/11/2016, 21:00

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Εντολές επανάληψης Εντολές επανάληψης while for do-while ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Παράδειγμα #1 Εντολή while

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ.

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

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

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

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

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

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

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

Εργαστήριο 5. Εαρινό Εξάμηνο

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολές for, while, do-while Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Αναδρομή (Recursion) Η Δίδυμη Αδελφή της Επανάληψης. Διαφάνειες από τους Robert Sedgewick και Kevin Wayne Ι-1

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

Επαναληπτικό διαγώνισμα στην Α.Ε.Π.Π - 18 / Απριλίου / 2010 ΘΕΜΑ 1

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

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

Γλώσσες Προγραμματισμού

turnin Lab2.hs

Βασικές Αρχές Προγραμματισμού

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

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

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

Επαναληπτική δοκιμασία στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Απρίλης 2015

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Διάλεξη 04: Παραδείγματα Ανάλυσης

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

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

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

οµή Επιλογής Α. Κατηγορία προβληµάτων Β. Κριτήριο Αλγορίθµου Γ. Τρόπος αναπαράστασης αλγορίθµων . Είδος σταθεράς Ε. Λογική τιµή

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Transcript:

HY-252 Αντικειµενοστραφής Προγραµµατισµός Χειµερινό Εξάµηνο 2010 ιδάσκων: Χριστοφίδης Βασίλης 1 η Σειρά Ασκήσεων Ηµεροµηνία Παράδοσης: 15/10/2010 Άσκηση 1 Loops, IO (20%) Όνοµα αρχείου : Assign1_username.java Γράψτε µία µέθοδο printrectangle(int n, int m) που παίρνει ως παραµέτρους δυο ακεραίους n, m και εκτυπώνει ένα παραλληλόγραµµο από αστεράκια µε πλευρές n, m. Παράδειγµα n = 3 m = 10 Βοήθεια (Hints): Θα σας φανούν χρήσιµες οι παρακάτων µέθοδοι: System.out.print System.out.println Bonus Ερώτηµα (10%) ώστε µια αναδροµική υλοποίηση της µεθόδου printrectangle(int n, int m) χωρίς να χρησιµοποιήσετε κανένα επαναληπτικό loop for ή while. Η καινούργια µέθοδος θα ονοµάζεται recursiveprintrectangle(int mlimit, int nlimit, int m, int n), τα 2 πρώτα ορίσµατα mlimit και nlimit είναι οι πλευρές του παραλληλόγραµµου. Όταν καλείται αρχικά η συνάρτηση στα ορίσµατα n, m βάζετε 0. Σε κάθε αναδροµικό βήµα θα πρέπει να αλλάζετε κατάλληλα αυτά τα ορίσµατα. Παράδειγµα: Η κλήση recursiveprintrectangle(10, 3, 0, 0) έχει σαν έξοδο n = 3 m = 10

Άσκηση 2 String, File, I/O (30%) Όνοµα αρχείου : Assign2_username.java α) Γράψτε µία µέθοδο String explode(string string) που παίρνει ως παράµετρο ένα αντικείµενο τύπου String και το επιστρέφει τροποποιηµένο ως εξής: κάθε ψηφίο 0-9 που εµφανίζεται στην αρχική συµβολοσειρά θα αντικαθίσταται από τον πρώτο χαρακτήρα στα δεξιά του ψηφίου τόσες φορές όσες το ψηφίο προς αντικατάσταση. Σε περίπτωση που το ψηφίο είναι στο τέλος της συµβολοσειράς, θα αντικαθίσταται από τον πρώτο χαρακτήρα στα αριστερά του ψηφίου τόσες φορές όσες το ψηφίο προς αντικατάσταση. Η συµβολοσειρά θα πρέπει προσπελάζεται µια και µόνο φορά από αριστερά προς τα δεξιά και όλες οι αντικαταστάσεις θα πρέπει να γίνονται κατά την µοναδική αυτή προσπέλαση. Παραδείγµατα: explode("re3h1u") rehhhhuu explode("23vv") 33vvvvv explode("e2ve1") evvvee explode("e2v2e1") evvveeee β) Γράψτε ένα πρόγραµµα Java το οποίο παίρνει από την γραµµή εντολών το όνοµα ενός αρχείου εισόδου και το όνοµα ενός αρχείου εξόδου. Στη συνέχεια, αφού διαβάσει το αρχείο εισόδου το πρόγραµµα θα πρέπει να εκτυπώνει στο αρχείο εξόδου τις λέξεις του αρχείου εισόδου τροποποιηµένες σύµφωνα µε την µέθοδο explode() του ερωτήµατος α). Σε περίπτωση κάποιου προβλήµατος κατά την ανάγνωση ή την εγγραφή των αρχείων θα πρέπει να εµφανίζεται ένα κατάλληλο µήνυµα λάθους. Παράδειγµα: ώστε όνοµα αρχείου εισόδου: input.txt ώστε όνοµα αρχείου εξόδου: output.txt Παράδειγµα αρχείου εισόδου (input.txt) 23vv er1fvv k12v re3h1u re1h3 Έξοδος του παραδείγµατος (output.txt) 33vvvvv erffvv k2vvv rehhhhuu rehhhhh Βοήθεια (Hints): Θα σας φανούν χρήσιµες οι παρακάτω µέθοδοι: Από την κλάση String οι µέθοδοι: charat και length. Από την κλάση Character οι µέθοδοι: isdigit και getnumericvalue. Για περισσότερες λεπτοµέρειες πάνω στις κλάσεις String και Character ανατρέξτε στο Java API (http://download-llnw.oracle.com/javase/6/docs/api/).

Άσκηση 3 Arrays (30%) Όνοµα αρχείου : Assign3_username.java Ένα µαγικό τετράγωνο NxN είναι ένας δυσδιάστατος πίνακας που περιέχει 2 τους αριθµούς 1KN σαν στοιχεία του, τοποθετηµένους κατά τέτοιον τρόπο ώστε το άθροισµα οποιαδήποτε στήλης, γραµµής ή διαγωνίου να έχει την ίδια N( N 2 + 1) "µαγική" σταθερή τιµή που δίνεται απο τον τύπο:. Για παράδειγµα 2 το παρακάτω είναι ένα 3x 3 µαγικό τετράγωνο το οποίο περιέχει τους αριθµούς 1K 9 και η µαγική σταθερά του είναι η 15. 4 9 2 3 5 7 8 1 6 Γράψτε µία µέθοδο boolean ismagicsquare(int[][] array) που παίρνει ως παράµετρο έναν δυσδιάστατο πίνακα µε N γραµµές και N στήλες µε ακέραιους (int) και επιστρέφει µια λογική τιµή (boolean), η οποία είναι αληθής αν το δοθέν τετράγωνο (που αναπαρίσταται από τον πίνακα) είναι ένα κανονικό NxN µαγικό τετράγωνο ή ψευδής στην αντίθετη περίπτωση. Θεωρείστε ότι ο πίνακας που δίνεται ως παράµετρος έχει σωστές διαστάσεις, δηλαδή ίσο αριθµό γραµµών και στηλών. Παραδείγµατα: ismagicsquare({{4,9,2},{3,5,7},{8,1,6}}) true ismagicsquare({{7,9,6},{1,5,4},{8,3,2}}) false ismagicsquare({{7,3,1},{2,5,8},{9,4,6}}) false ismagicsquare({{7,12,1,14},{2,13,8,11},{16,3,10,5},{9,6,1 5,4}}) true Bonus Ερώτηµα (10%) Μια από τις πιο γνωστές µεθόδους για την δηµιουργία µαγικών τετραγώνων µε περιττό µήκος πλευράς είναι η λεγόµενη Siamese µέθοδος (en.wikipedia.org/wiki/siamese_method). Σας ζητείται να δηµιουργήσετε µια µέθοδο populatesquare() η οποία να υλοποιεί τον αλγόριθµο Siamese, ο οποίος δίνετε στη συνέχεια: Ξεκινώντας από τη µεσαία θέση της πρώτης σειράς του µαγικού τετραγώνου, εισάγω τους αριθµούς 1 έως Ν 2 (όπου Ν το µέγεθος του µαγικού τετραγώνου) κινούµενος διαγώνια (πάνω/δεξία) ένα µε τη σειρά. Αν µια κίνηση χρειάζεται να "βγει" από το τετράγωνο τότε ξεκινώ από την τελευταία γραµµή ή στήλη αντίστοιχα (wrap arround). Αν µια θέση του µαγικού τετραγώνου είναι ήδη κατειληµµένη, τότε κινούµαι κάθετα µια θέση. Ο έλεγχος ορθότητας του αλγορίθµου θα γίνεται µε την µέθοδο ismagicsquare() την οποία υλοποιήσατε στο προηγούµενο υποερώτηµα.

Άσκηση 4 Recursion (20%) Όνοµα αρχείου : Assign4_username.java Υλοποιήστε ένα πρόγραµµα αναδροµικής σχεδίασης που παίρνει ως παράµετρο έναν ακέραιο n και σχεδιάζει ένα Η-tree χρησιµοποιώντας την παρακάνω διαδικασία. Απλά επαναληπτικά γραφικά µπορούν να οδηγήσουν σε εικόνες που είναι εξαιρετικά περίπλοκές. Για παράδειγµα, ένα H-δέντρο της τάξης n ορίζεται ως εξής: Για την βασική περίπτωση n = 0 δεν υπάρχει σχήµα. Για n=1 σχεδιάζονται τρεις γραµµές σε σχήµα του γράµµατος H όπως φαίνεται στο σχήµα παρακάτω. Για n=2 σχεδιάζονται στις άκρες των γραµµών του γράµµατος Η τέσσερα γράµµατα Η µε µέγεθος γραµµών το µισό του αρχικού γράµµατος. Για το αναδροµικό βήµα ξεκινάµε σχεδιάζοντας ένα γράµµα Η και συνεχίζουµε σχεδιάζοντας στις ελεύθερες άκρες του σχήµατος γράµµατα Η στο µισό µέγεθος του γράµµατος που τα κολλάµε. Η αναδροµική συνάρτηση θα εχει όνοµα draw(int n, double x, double y, double size) όπου το n εκφράζει το βάθος της αναδροµής οπως στα παραπάνω παραδείγµατα, το x,y είναι η συντεταγµενες του κέντρου του γραφήµατος και το size εκφράζει το µέγεθος των γραµµών στο γράµµα Η. Σε κάθε αναδροµικό βήµα πρέπει να αλλάζεται κατάλληλα τα χ,y,size. (Hints): Για την σχεδίαση του γράµµατος H θα χρησιµοποιήσετε την παρακάτω µέθοδο: public static void drawh(double x,double y, double size){ // compute the coordinates of the 4 tips of the H double x0 = x - size/2;

double x1 = x + size/2; double y0 = y - size/2; double y1 = y + size/2; // draw the 3 line segments of the H StdDraw.line(x0, y0, x0, y1);//left vertical segment of the H StdDraw.line(x1, y0, x1, y1);//right vertical segment of the H StdDraw.line(x0, y, x1, y);// connect the two vertical segments of the H } Η µέθοδος αυτή ζωγραφίζει ένα γράµµα Η µε κέντρο το σηµείο x,y και µέγεθος γραµµών size. οκιµάστε να την καλέσετε στη µέθοδο main µε τα εξής ορίσµατα: drawh(0.5, 0.5, 0.5); H παραπάνω µέθοδος χρησιµοποιεί την StdDraw.line της κλάσης που βρίσκεται στην παρακάτω διεύθυνση: www.csd.uoc.gr/~hy252/ StdDraw.java και την οποία θα πρέπει να κατεβάσετε και να βάλετε στον ίδιο φάκελο µε την υλοποίηση της άσκηση 4. Οδηγίες Υποβολής Το username στην ονοµασία των ασκήσεων πρέπει να αντικατασταθεί από το δικό σας username. Για παράδειγµα εάν το username σας είναι christop η άσκηση 4 πρέπει να ονοµάζεται Assign4_christop.java