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

Σχετικά έγγραφα
ΕΡΓΑΣΙΑ 3. Παίζοντας Sudoku. Ημερομηνία Ανάρτησης: 16/03/2018 Ημερομηνία Παράδοσης: 03/04/2018, 09:00

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

Παίζοντας Τόμπολα. Ημερομηνία Ανάρτησης: 16/03/2017 Ημερομηνία Παράδοσης: 30/03/2017, 23:59

ΕΡΓΑΣΙΑ 1 Ημερομηνία Ανάρτησης: 02/02/2017 Ημερομηνία Παράδοσης: 16/02/2017, 09:00 π.μ. Στόχος Ορισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΡΓΑΣΙΑ 4 - Αντικειμενοστραφής Υλοποίηση του Συστήματος Κατανομής Θέσεων σε Προγράμματα Σπουδών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2

ΕΡΓΑΣΙΑ 4. Εκλογικό Σύστημα με Μεταφορά και Συσσώρευση Ψήφων. Ημερομηνία Ανάρτησης: 16/04/2018 Ημερομηνία Παράδοσης: 04/05/2018, 09:00

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ.

ΕΡΓΑΣΙΑ 2 - Παίζοντας Blackjack

Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματισμό για ΗΜΥ

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

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

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

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

Γενικό πλαίσιο. Απαιτήσεις Μοντέλο εδοµένων. MinusXLRequirements. Απόστολος Ζάρρας

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

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

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

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.

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

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

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


Ειδικά Θέματα Προγραμματισμού

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

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

Μεθόδων Επίλυσης Προβλημάτων

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 5 Ανάπτυξη Προγράμματος Συμπίεσης/Αποσυμπίεσης Αρχείων

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Hawai i Health Connector Extended Services Transition Plan

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

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

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

A_greek. dbase# AuthorGr Year Month Day Place Box/Folder Αθανασιάδης 1874 January 8 Athens Box 69, No. 8

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

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

ΕΡΓΑΣΙΑ 4. Παίζοντας Κρεμάλα. Ημερομηνία Ανάρτησης: 30/03/2017 Ημερομηνία Παράδοσης: 27/04/2017, 23:59

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

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

Διαδικασιακός Προγραμματισμός

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

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version

Β. Να γράψετε στο τετράδιό σας τους αριθμούς της Στήλης Α, που αντιστοιχούν σωστά με το γράμμα της Στήλης Β. ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

Κατάσταση τήρησης Μητρώων Μη εισηγμένων Εταιρειών από το Κεντρικό Αποθετήριο / Μητρώο (ΚΑΜ) Επισυνάπτεται σχετική ανακοίνωση

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

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

Ανάπτυξη και Σχεδίαση Λογισμικού

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

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

B. Ενσωμάτωση Ιθαγενών Μεθόδων

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

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

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΑΝΑΚΟΙΝΩΣΗ Λευκωσία, 27 Μαΐου 2016

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Τελικό τεστ - απαντήσεις

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

Ενδεικτικές λύσεις και στατιστικά

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης:

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

turnin Lab2.hs

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

Transcript:

ΕΡΓΑΣΙΑ 2 Κατασκευάζοντας Ημερολόγια Ημερομηνία Ανάρτησης: 23/02/2018 Ημερομηνία Παράδοσης: 13/03/2018, 09:00 Εισαγωγή Σκοπός της παρούσας άσκησης είναι η απόκτηση εμπειρίας στη χρήση πινάκων (πολλαπλών διαστάσεων), συναρτήσεων, και εν μέρει γραμματοσειρών. Χρειάζεται να δημιουργήσετε πρόγραμμα το οποίο κατασκευάζει και εκτυπώνει το ημερολόγιο δεδομένου έτους. Το πρόγραμμα λαμβάνει τρία ορίσματα από τη γραμμή εντολής, που είναι: το έτος, η πρώτη ημέρα του έτους (1 για Δευτέρα, 2 για Τρίτη, και ούτω καθεξής, μέχρι 7 για Κυριακή) και ο αριθμός των στηλών σε σχέση με την παρουσίαση του ημερολογίου. Να γίνουν οι εξής έλεγχοι: αν υπάρχουν και τα 3 ορίσματα αν το δεύτερο όρισμα έχει τιμή εντός ορίων 1-7 αν το τρίτο όρισμα έχει τιμή εντός ορίων >=1 και σε αντίθετη περίπτωση να βάλετε αντίστοιχα μηνύματα λάθους. Παραδείγματα Εκτέλεσης Το output του προγράμματος διαφαίνεται στα ακόλουθα παραδείγματα: ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 1

$ java Calendar 2018 1 1 CALENDAR 2018 JANUARY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 FEBRUARY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 MARCH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 APRIL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 2

MAY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 JUNE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 JULY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 AUGUST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 SEPTEMBER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 3

OCTOBER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 NOVEMBER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 DECEMBER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $ java Calendar 2018 1 2 CALENDAR 2018 JANUARY FEBRUARY 1 2 3 4 5 6 7 1 2 3 4 8 9 10 11 12 13 14 5 6 7 8 9 10 11 15 16 17 18 19 20 21 12 13 14 15 16 17 18 22 23 24 25 26 27 28 19 20 21 22 23 24 25 29 30 31 26 27 28 ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 4

MARCH APRIL 1 2 3 4 1 5 6 7 8 9 10 11 2 3 4 5 6 7 8 12 13 14 15 16 17 18 9 10 11 12 13 14 15 19 20 21 22 23 24 25 16 17 18 19 20 21 22 26 27 28 29 30 31 23 24 25 26 27 28 29 30 MAY JUNE 1 2 3 4 5 6 1 2 3 7 8 9 10 11 12 13 4 5 6 7 8 9 10 14 15 16 17 18 19 20 11 12 13 14 15 16 17 21 22 23 24 25 26 27 18 19 20 21 22 23 24 28 29 30 31 25 26 27 28 29 30 JULY AUGUST 1 1 2 3 4 5 2 3 4 5 6 7 8 6 7 8 9 10 11 12 9 10 11 12 13 14 15 13 14 15 16 17 18 19 16 17 18 19 20 21 22 20 21 22 23 24 25 26 23 24 25 26 27 28 29 27 28 29 30 31 30 31 SEPTEMBER OCTOBER 1 2 1 2 3 4 5 6 7 3 4 5 6 7 8 9 8 9 10 11 12 13 14 10 11 12 13 14 15 16 15 16 17 18 19 20 21 17 18 19 20 21 22 23 22 23 24 25 26 27 28 24 25 26 27 28 29 30 29 30 31 NOVEMBER DECEMBER 1 2 3 4 1 2 5 6 7 8 9 10 11 3 4 5 6 7 8 9 12 13 14 15 16 17 18 10 11 12 13 14 15 16 19 20 21 22 23 24 25 17 18 19 20 21 22 23 26 27 28 29 30 24 25 26 27 28 29 30 31 ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 5

$ java Calendar 2018 1 3 CALENDAR 2018 JANUARY FEBRUARY MARCH 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 29 30 31 26 27 28 26 27 28 29 30 31 APRIL MAY JUNE 1 1 2 3 4 5 6 1 2 3 2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10 9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17 16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24 23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30 30 JULY AUGUST SEPTEMBER 1 1 2 3 4 5 1 2 2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9 9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30 30 31 OCTOBER NOVEMBER DECEMBER 1 2 3 4 5 6 7 1 2 3 4 1 2 8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9 15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16 22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23 29 30 31 26 27 28 29 30 24 25 26 27 28 29 30 31 ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 6

$ java Calendar 2018 1 4 CALENDAR 2018 JANUARY FEBRUARY MARCH APRIL 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4 1 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 2 3 4 5 6 7 8 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 9 10 11 12 13 14 15 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 16 17 18 19 20 21 22 29 30 31 26 27 28 26 27 28 29 30 31 23 24 25 26 27 28 29 30 MAY JUNE JULY AUGUST 1 2 3 4 5 6 1 2 3 1 1 2 3 4 5 7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 12 14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 19 21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 26 28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 30 31 30 31 SEPTEMBER OCTOBER NOVEMBER DECEMBER 1 2 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23 24 25 26 27 28 29 30 29 30 31 26 27 28 29 30 24 25 26 27 28 29 30 31 ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 7

$ java Calendar 2018 1 6 CALENDAR 2018 JANUARY FEBRUARY MARCH APRIL MAY JUNE 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4 1 1 2 3 4 5 6 1 2 3 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24 29 30 31 26 27 28 26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30 30 JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER 1 1 2 3 4 5 1 2 1 2 3 4 5 6 7 1 2 3 4 1 2 2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9 9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16 16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23 23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30 29 30 31 26 27 28 29 30 24 25 26 27 28 29 30 30 31 31 ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 8

Δομή Δεδομένων Για την εσωτερική αναπαράσταση του ημερολογίου μπορεί να χρησιμοποιηθεί ένας τρισδιάστατος πίνακας ως ακολούθως: int[][][] calendar = new int[12][6][7]; Η πρώτη διάσταση αντιπροσωπεύει τους 12 μήνες του έτους. Η δεύτερη διάσταση αντιπροσωπεύει τις (μέχρι) 6 εβδομάδες που διατρέχει ένας μήνας. Η τρίτη διάσταση αντιπροσωπεύει τις 7 ημέρες, από τη Δευτέρα μέχρι την Κυριακή. Για παράδειγμα, ο πίνακας για το έτος 2018 μπορεί να αναπαρασταθεί όπως δεικνύεται στο πιο κάτω σχήμα (δίνονται τα στοιχεία μόνο για τους μήνες Ιανουάριο και Δεκέμβριο). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 0 0 0 Όπως διαφαίνεται στο πιο πάνω σχήμα, ο τρισδιάστατος πίνακας αναλύεται σε ένα μονοδιάστατο πίνακα 12 στοιχείων, τα οποία είναι δισδιάστατοι πίνακες 6 x 7. Επομένως, calendar[0] αντιπροσωπεύει το μήνα Ιανουάριο του συγκεκριμένου έτους, και ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 9

calendar[11] αντιπροσωπεύει το μήνα Δεκέμβριο. Παρομοίως, ο δισδιάστατος πίνακας που αντιπροσωπεύει ένα μήνα αναλύεται σε ένα μονοδιάστατο πίνακα 6 στοιχείων, τα οποία είναι μονοδιάστατοι πίνακες 7 στοιχείων, τα οποία είναι αριθμοί. Ως εκ τούτου μπορεί να έχουμε τις ακόλουθες αναφορές: calendar ολόκληρος ο πίνακας των τριών διαστάσεων, που αντιπροσωπεύει το έτος calendar[i] το i-οστό στοιχείο του πίνακα που είναι ένας πίνακας δύο διαστάσεων (ο i-στος μήνας του έτους) calendar[i][j] η j-οστή εβδομάδα που διατρέχει ο i-οστός μήνας, που είναι ένας μονοδιάστατος πίνακας (μια ημερολογιακή εβδομάδα) calendar[i][j][k] η ημέρα του μήνα που αντιστοιχεί στην k-οστή ημερολογιακή μέρα της j-οστης βδομάδας του i-στου έτους. Ημέρες δεδομένων εβδομάδων που δεν αφορούν ένα μήνα, υποδηλώνονται με το 0 όπως φαίνεται και στο πιο πάνω σχήμα. Αρθρωτός Σχεδιασμός Το πρόγραμμα που θα δημιουργήσετε χρειάζεται να είναι αρθρωτό, δηλαδή να αξιοποιεί αριθμό άλλων συναρτήσεων πέραν της main. Τέτοιες συναρτήσεις μπορούν να λαμβάνουν πίνακες ως ορίσματα, για παράδειγμα θα μπορούσε μια συνάρτηση να λαμβάνει ένα μήνα (calendar[i]) ή μια βδομάδα (calendar[i][j]) ως όρισμα. Μη ξεχνάτε ότι το τι δίνεται στη συνάρτηση είναι η διεύθυνση του πίνακα. Αναλύστε προσεκτικά το πρόβλημα που καλείστε να λύσετε και εντοπίστε σημαντικά υπό-προβλήματα, τα οποία χειριστείτε μέσω ξεχωριστών συναρτήσεων. Δοκιμάστε πρώτα και διορθώστε τις βασικές συναρτήσεις, και διαδοχικά προχωρήστε στις πιο πάνω συναρτήσεις (αυτές που καλούν άλλες συναρτήσεις) μέχρις ότου να φτάσετε στη συνάρτηση main στο πλαίσιο της οποίας συναρμολογείται ολόκληρο το πρόγραμμά σας. Κάποιες ενδεικτικές βασικές συναρτήσεις που μπορείτε να υλοποιήσετε είναι οι ακόλουθες: Είναι δεδομένο έτος δίσεκτο; Πόσες μέρες έχει δεδομένος μήνας, δεδομένου έτους; Από ποια ημερολογιακή μέρα (Δευτέρα, Τρίτη, κτλ) αρχίζει δεδομένος μήνας, δεδομένου έτους, δεδομένης της ημέρας της 1ης του έτους; Παρουσίαση Ημερολογίου ως Διακριτό Σχήμα ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 10

Η εξωτερική μορφή του ημερολογίου, δηλαδή αυτό που τυπώνει το πρόγραμμα, δεν είναι τίποτα άλλο από ένα δομημένο διακριτό σχήμα, όπως διαφαίνεται και στα παραδείγματα χρήσης του προγράμματος. Το σχήμα αποτελείται από επικεφαλίδα και κάθετα τοποθετημένα blocks. Ο αριθμός των blocks υπολογίζεται βάσει του αριθμού των στηλών που αποτελεί το τρίτο όρισμα του προγράμματος στη γραμμή εντολής. Για παράδειγμα, αν οι στήλες είναι τρεις, δηλαδή οι μήνες να τυπώνονται ανά τριάδα, τότε θα έχουμε τέσσερα blocks. Κάθε block πρέπει να είναι πλήρες, και επομένως το 12 πρέπει να διαιρείται ακριβώς με τον αριθμό των στηλών. Επομένως, ακραίες περιπτώσεις είναι είτε να έχουμε μία στήλη, στην οποία περίπτωση οι μήνες τυπώνονται ο ένας κάτω από τον άλλο, είτε να έχουμε 12 στήλες, στην οποία περίπτωση οι μήνες τυπώνονται ο ένας δίπλα στον άλλο. Το κάθε block έχει την εξής δομή: Πρώτα δίνονται τα ονόματα των μηνών, μετά δίνονται οι ονομασίες των επτά ημερών μιας εβδομάδας, και μετά ακολουθούν οι ημέρες των μηνών διατεταγμένες στις (μέχρι) έξι βδομάδες που μπορεί να διατρέχει ένας μήνας. Έχετε υπόψη ότι ένα διακριτό σχήμα δημιουργείται (εκτυπώνεται) γραμμή με γραμμή, και επομένως όλα τα οριζόντια τμήματα κάθε γραμμής πρέπει να συναρμολογηθούν (εκτυπωθούν), πριν προχωρήσει η συναρμολόγηση (εκτύπωση) της επόμενης γραμμής. Ως μια τελευταία πρόκληση, επιδιώξετε να δημιουργήσετε (κτίσετε) το διακριτό σχήμα που αναπαριστά το αιτούμενο ημερολόγιο ως ένα ενιαίο String, κάνοντας χρήση του τελεστή + για την ένωση συμβολοσειρών, το οποίο μετά απλά εκτυπώνεται με χρήση μιας εντολής εκτύπωσης. Με άλλα λόγια αντί να τυπώνετε τις επιμέρους συμβολοσειρές που απαρτίζουν το σχήμα (με τα σχετικά new lines), να τις ενώνετε. Η όλη συναρμολόγηση ή κατασκευή, του ημερολογίου σε μορφή String, για εξωτερική παρουσίαση, θα μπορούσε επομένως να ορισθεί ως μια ξεχωριστή, επαναχρησιμοποιήσιμη, συνάρτηση, η οποία απλά να καλείται από τη main ως ακολούθως: public static String constructcalendar (int year, int firsty, int cols) {.....} public static void main (String[] args){ int year = Integer.parseInt(args[0]); int firsty = Integer.parseInt(args[1]); int cols = Integer.parseInt(args[2]); System.out.println(constructCalendar(year, firsty, cols)); } ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 11

Παράδοση Όταν έχετε τελειώσει με τον πηγαίο κώδικα, μεταγλωττίστε το και βεβαιωθείτε ότι τρέχει σωστά. Παραδώστε τα αρχείο πηγαίου κώδικα (userid_ erg2.java) και μια λίστα δοκιμής (userid_erg2.txt) με όλα τα παραδείγματα εκτέλεσης που φαίνονται πιο πάνω ηλεκτρονικά μέσω του submit assignment κάτω από το Ασκήσεις Εργασία 2 στην ιστοσελίδα του μαθήματος μέχρι τις 13/03/2017 και ώρα 09:00. Όπου userid βάλτε το username που σας δόθηκε από το τμήμα. Προσοχή: Το σύστημα ελέγχει το χρόνο παράδοσης εργασιών γι αυτό μην περιμένετε την τελευταία στιγμή να κάνετε submit την εργασία σας. Βαθμολογία Ένα πρόγραμμα για να πάρει όλες τις μονάδες είναι απαραίτητο να: χρησιμοποιεί σχόλια έχει ευθυγραμμισμένο κώδικας χρησιμοποιεί αυτό-επεξηγηματικά ονόματα για τις μεταβλητές δουλεύει σωστά κάνει όλους τους απαραίτητους ελέγχους χρησιμοποιεί μεθόδους (αρθρωτή σχεδίαση) Για όλα τα παραπάνω ακολουθήστε τις οδηγίες που περιγράφονται εδώ: http://introcs.cs.princeton.edu/java/11style/. Το αρχείο με το πηγαίο κώδικα πρέπει οπωσδήποτε να περιέχει μια συμπληρωμένη κατάλληλα επικεφαλίδα από σχόλια στην αρχή του αρχείου όπως: /** * Author: Γράψτε εδώ το όνομα σας * Written:../../2018 * Last updated:../../2018 * * Compilation: javac userid_erg2.java * Execution: java userid_erg2 * * Γράψτε εδώ πληροφορίες σχετικά ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 12

* με το τι κάνει το πρόγραμμα * */ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Η εργασία είναι ατομική. Μπορείτε να συζητήσετε για αυτήν με τους συμφοιτητές σας, ωστόσο ποτέ δεν είναι αποδεκτό για σας να δείτε τον κώδικα κάποιου άλλου ή να κάνετε από κοινού τον κώδικα. Φυσικά, αν έχετε οποιεσδήποτε ερωτήσεις σχετικά με την εργασία, είμαστε πάντα στη διάθεσή σας για βοήθεια. Ανίχνευση αντιγραφής θα τιμωρείται με μηδενισμό. Κώδικας που δε μεταγλωττίζει ή δεν τρέχει (crashes) παίρνει αυτόματα βαθμολογία 0. ΕΠΛ131 Εργασία 2. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 13