ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 25/11/12, 22:00

Σχετικά έγγραφα
ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Προθεσµία: 10/12/2014, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 27/11/11, 22:00

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

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

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/10, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00

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

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

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: 3/12/2018, 23:59

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Τετάρτη 7/12/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Προθεσµία: 9/1/2015, 22:00

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Προγραµµατισµός Ι Εργαστήριο 6ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 6 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 6ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 6 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραμματισμός Ι Εργαστήριο 5ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 9ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 9 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

Προγραμματισμός Ι Εργαστήριο 9ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 9 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 3ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

lab7: Συμβολοσειρές Συμβολοσειρές Ασφάλεια εισόδου Αναγνωσιμότητα κώδικα (σχόλια, στοίχιση, περιγραφικά ονόματα μεταβλητών, κτλ.)

Προγραμματισμός Ι Εργαστήριο 8ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 8 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραμματισμός Ι Εργαστήριο 8ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 8 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: Τετάρτη 25/11/2015, 22:00

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Εξετάσεις Προσομοίωσης 10/04/2018

lab2 -Στην printf να βάζεις \n έτσι ώστε να αλλάζει γραµµή όποτε σου εµφανίζει κάποιο µήνυµα.

Προτεινόμενα Θέματα ΑΕΠΠ

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

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

lab2grades - Στη scanf υπολογίζετε τουλάχιστον 5 χαρακτήρες %5.2f προδιαγραφές που ζητούνται στην εκφώνηση. -

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

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

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

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

lab9grades Άσκηση 1 - Σωστοί τύποι (παραµέτρων και επιστρεφόµενης τιµής) της series_cosh.

Άσκηση 1 (κλιμακωτή χρέωση) Ένα γραφείο ενοικίασης αυτοκινήτων εφαρμόζει την παρακάτω τιμολογιακή πολιτική: Πάγιο 30 ευρώ

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

ΘΕΜΑ Α. Μονάδες 10 Α2.

abistarakis PASS - Σωστή κατασκευή tgz και ονοµασία αρχείων

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΕΠΑΛ (ΟΜΑΔΑ Β

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

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

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Α4. Όσο επανάλαβε Τέλος_επανάληψης Εμφάνισε Για από μέχρι με_βήμα. Όσο επανάλαβε (Μονάδες 5) Α5. Α[10, 5] Π, Για από μέχρι (1) Για από μέχρι (2) Αν

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

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

! ΘΕΜΑ A Α2. ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΛΥΚΕΙΟΥ. Ονοµατεπώνυµο:

γραπτή εξέταση στo μάθημα ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ' ΛΥΚΕΙΟΥ

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

Να το ξαναγράψετε χρησιμοποιώντας αντί για την εντολή Για Τέλος_επανάληψης: α. την εντολή Όσο Τέλος_επανάληψης

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

ΑΕΜ ή username. Sheet2

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

A. Να γράψετε τον αριθμό της κάθε μιας από τις παρακάτω προτάσεις και δίπλα. το γράμμα Σ, εάν είναι σωστή, ή το γράμμα Λ, εάν είναι λανθασμένη.

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

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

ΘΕΜΑ 1 ο. Στήλη Β Προτάσεις. β. Ο βρόχος επανάληψης τερµατίζεται, όταν η συνθήκη είναι αληθής. όταν η συνθήκη είναι ψευδής.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Εξετάσεις Προσομοίωσης 24/04/2019

Α2. Να αναφέρετε ονομαστικά τις βασικές λειτουργίες που εκτελεί ένας υπολογιστής (Μονάδες 3)

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

Διάγραμμα Ροής. Σελίδα 1 από 10

Α2. Να γράψετε τους αριθμούς της Στήλης Α και δίπλα το γράμμα της Στήλης Β που αντιστοιχεί σωστά.

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΗΜΕΡΗΣΙΩΝ

ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ - ΜΕΡΟΣ Γ'

Γ ΤΑΞΗ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ÑÏÌÂÏÓ

Τρίτη, 1 Ιουνίου 2004 ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ

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

καθώς και το παρακάτω τμήμα αλγορίθμου γραμμένο σε «ΓΛΩΣΣΑ»:

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

ÑÏÕËÁ ÌÁÊÑÇ. Β. Να αναφέρετε τις κυριότερες τυποποιηµένες τεχνικές σχεδίασης αλγορίθµων. ΜΟΝΑ ΕΣ 3

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΗΜΕΡΗΣΙΩΝ

Transcript:

ΣΕΤ ΑΣΚΗΣΕΩΝ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2012-2013 Προθεσµία: 25/11/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης 1 Εκφώνηση άσκησης 2 Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ ΑΥΤΗ ΤΗΝ ΕΝΟΤΗΤΑ!! ) Διαβάστε ΟΛΗ την εκφώνηση προσεκτικά και σχεδιάστε το πρόγραµµά σας στο χαρτί. Για κάθε στάδιο, αποφασίστε τι µεταβλητές θα χρειαστείτε, τι ονόµατα θα τους δώσετε, αν χρειάζονται σταθερές κι αν ναι για ποιες ποσότητες, και τι δοµές θα χρησιµοποιήσετε για κάθε λειτουργία. Μη διστάζετε να ζητήσετε βοήθεια! Μπορείτε να χρησιµοποιήσετε το forum προγραµµατισµού (http://infserver.inf.uth.gr/courses/coding/) και φυσικά email. Μην προσπαθήσετε να γράψετε το πρόγραµµα µονοµιάς. Για κάθε στάδιο που ολοκληρώνετε, πρέπει να βεβαιώνεστε ότι κάνει compile και λειτουργεί σωστά και µετά να προχωράτε στο επόµενο στάδιο. Κάθε φορά που τελειώνετε ένα στάδιο, να αποθηκεύετε ένα αντίγραφο του προγράµµατος όπως είναι µέχρι εκείνο το σηµείο. Έτσι, αν σε κάποιο επόµενο στάδιο καταστραφεί το αρχείο σας, θα έχετε µια παλιότερη έκδοση από την οποία µπορείτε να συνεχίσετε. Τις επιµέρους "εκδόσεις" να τις ονοµάζετε µε διαφορετικά ονόµατα (πχ. hw2stadio1.c, hw2stadio2.c) Σε κάθε στάδιο σας δίνουµε µια εκτίµηση της δυσκολίας του (διαβάθµιση απο 1 έως 4). Η εργασία αυτή µπορεί να γίνει σε οµάδες µέχρι 2 ατόµων. Δεν είναι απαραίτητο να συνεργαστείτε µε το ίδιο άτοµο που κάνατε τα εβδοµαδιαία εργαστήρια ή το πρώτο σετ ασκήσεων. Μπορείτε να συζητάτε τις ασκήσεις µε συµφοιτητές σας αλλά δεν επιτρέπεται η ανταλλαγή κώδικα µε οποιοδήποτε τρόπο. Ξεκινήστε νωρίς! Ο προγραµµατισµός είναι πάντα ΠΟΛΥ πιο χρονοβόρος από ό,τι περιµένετε. Εκπρόθεσµες ασκήσεις δε γίνονται δεκτές.

'Ασκηση 1: Συστάσεις βιβλίων Εισαγωγή Κάθε φορά που βλέπετε ένα βίντεο στο youtube, σας συστήνει εναλλακτικά κλιπ για τα οποία πιστεύει ότι θα ενδιαφέρεστε. Οµοίως, online βιβλιοπωλεία όπως το amazon κάνουν συστάσεις βιβλίων µε βάση τις προτιµήσεις που έχετε δείξει µέχρι στιγµής. Η ιδέα πίσω από το µηχανισµό συνιστώµενων βίντεο ή βιβλίων είναι απλή: αν έχετε βαθµολογήσει µια σειρά από αυτά µε βάση τις προτιµήσεις σας, και κάποιος άλλος χρήστης έχει παρόµοιες προτιµήσεις (όπως αυτές διαµορφώνονται από τις βαθµολογίες που έδωσε), τότε είναι πολύ πιθανό να σας αρέσουν κάποια βίντεο ή βιβλία που άρεσαν και στον άλλο χρήστη. Σε αυτό το σετ ασκήσεων θα γράψετε ένα πρόγραµµα το οποίο διαβάζει τις προτιµήσεις ενός µεγάλου αριθµού χρηστών για ένα σύνολο βιβλίων, και τις χρησιµοποιεί για να συστήνει νέα βιβλία σε κάποιον από αυτούς τους χρήστες. Ακολουθούν λεπτοµερείς οδηγίες για το πώς πρέπει να λειτουργεί το πρόγραµµά σας και στάδια κατασκευής του. ΜΗΝ προσπαθήσετε να γράψετε όλο το πρόγραµµα σε ένα βήµα γιατί θα κάνετε λάθη και θα σας πάρει πολύ περισσότερο χρόνο. Αποθηκεύστε το πρόγραµµα σε αρχείο µε όνοµα hw2.c. Θα σας δώσουµε αρκετά αρχεία τα οποία θα µπορείτε να χρησιµοποιήστε ως είσοδο (µε ανακατεύθυνση) για να ελέγξετε την ορθότητα του προγράµµατός σας. Το µεγαλύτερο από αυτά είναι το data.txt.

Άσκηση 1, Στάδιο 0: Μελέτη του αρχείου δεδοµένων (-) Ανοίξτε το αρχείο data.txt µε έναν επεξεργαστή κειµένου. Η δοµή του αρχείου είναι ως εξής: Η πρώτη γραµµή περιέχει έναν ακέραιο αριθµό ο οποίος αναπαριστά το πλήθος των βιβλίων που είναι διαθέσιµα από ένα online βιβλιοπωλείο. Ο αριθµός είναι τουλάχιστον 1 και το πολύ 60. Ακολουθούν οι περιγραφές τόσων βιβλίων όσος είναι ο παραπάνω αριθµός. Τα βιβλία δίνονται µε τη µορφή τίτλος, κόµµα, όνοµα συγγραφέα. Οι πληροφορίες για κάθε ένα βιβλίο βρίσκονται όλες σε µια γραµµή και καταλαµβάνουν το πολύ 120 χαρακτήρες. Διαδοχικά βιβλία χωρίζονται από ένα χαρακτήρα αλλαγής γραµµής. Δεν υπάρχουν χαρακτήρες whitespace ανάµεσα στις λέξεις που αποτελούν τον τίτλο ή το όνοµα του συγγραφέα. Ξεκινώντας στη γραµµή µετά τα βιβλία βρίσκονται πληροφορίες για τις βαθµολογίες που έδωσαν οι χρήστες του online βιβλιοπωλείου. Για κάθε χρήστη, το αρχείο περιλαµβάνει: το όνοµα του χρήστη, το οποίο δεν περιέχει χαρακτήρες whitespace. Τα ονόµατα είναι µοναδικά και καταλαµβάνουν το πολύ 20 χαρακτήρες. αλλαγή γραµµής τους βαθµούς που έδωσε αυτός ο χρήστης, έναν για κάθε ένα από τα παραπάνω βιβλία, µε την ίδια σειρά. Οι βαθµοί παίρνουν τις τιµές: -5 (δε µου άρεσε καθόλου), -3 (δε µου άρεσε πολύ), 0 (δεν το έχω διαβάσει), 1 (µέτριο), 3 (µου άρεσε), 5 (µου άρεσε πάρα πολύ). Διαδοχικοί βαθµοί χωρίζονται από whitespace. αλλαγή γραµµής. Υπάρχουν τουλάχιστον ένας και το πολύ 100 χρήστες. Στη γραµµή µετά τις βαθµολογίες του τελευταίου χρήστη βρίσκεται η λέξη EndOfNames η οποία µαρκάρει το τέλος των βαθµολογιών. Στη γραµµή µετά το EndOfNames βρίσκεται το username του χρήστη ο οποίος αναζητά προτάσεις για νέα βιβλία. Από εδώ και στο εξής θα τον αποκαλούµε "αγοραστή". Ο αγοραστής θα πρέπει να είναι ένας από τους χρήστες, διαφορετικά το πρόγραµµα δε θα µπορεί να δώσει προτάσεις (γιατί δε θα έχει πληροφορίες για τις προτιµήσεις του αγοραστή). Όταν θα ελέγχετε την ορθότητα του προγράµµατός σας, καλό είναι να το εκτελέσετε για διάφορους αγοραστές. Επίσης, επειδή το αρχείο είναι µεγάλο, θα σας δώσουµε και µια µικρότερη έκδοσή του για να διευκολυνθείτε στην αποσφαλµάτωση. Άσκηση 1, Στάδιο 1: Δηµιουργία δοµών και εισαγωγή δεδοµένων ( ) Διαβάστε από το πληκτρολόγιο µια σειρά από βιβλία και αποθηκεύστε τα ως συµβολοσειρές σε ένα δισδιάστατο πίνακα χαρακτήρων. Κάθε βιβλίο (τίτλος και συγγραφέας) αποθηκεύεται σε µια γραµµή του πίνακα. Διαβάστε από το πληκτρολόγιο τα ονόµατα χρηστών και τις βαθµολογίες που έδωσαν για τα βιβλία. Τα ονόµατα πρέπει να τα αποθηκεύσετε ως συµβολοσειρές σε ένα δισδιάστατο πίνακα χαρακτήρων (ένα όνοµα χρήστη σε κάθε γραµµή του πίνακα). Τις βαθµολογίες πρέπει να τις αποθηκεύσετε σε ένα δισδιάστατο πίνακα ακεραίων. Εννοείται πως το όνοµα ενός χρήστη στη γραµµή i του πίνακα ονοµάτων αντιστοιχεί στους βαθµούς που καταγράφονται στη γραµµή i του πίνακα βαθµολογιών ("παράλληλοι" πίνακες). Προσωρινός κώδικας: Εκτυπώστε τα περιεχόµενα και των τριών πινάκων και επιβεβαιώστε ότι αυτό το στάδιο λειτουργεί σωστά. Το πρόγραµµά σας πρέπει να είναι γραµµένο µε τέτοιο τρόπο ώστε αν αλλάξει το πλήθος βιβλίων ή ο µέγιστος αριθµός χρηστών, να µπορούν να γίνουν εύκολα και γρήγορα οι κατάλληλες αλλαγές στον κώδικα.

Άσκηση 1, Στάδιο 2: Εντοπισµός προτιµήσεων αγοραστή ( ) Αφαιρέστε τον προσωρινό κώδικα που γράψατε στο στάδιο 1. Εκτυπώστε το µήνυµα: Hi, what's your name? ακολουθούµενο από ένα κενό. Διαβάστε από το πληκτρολόγιο το όνοµα του αγοραστή. Εκτυπώστε το µήνυµα Hello X! ακολουθούµενο από χαρακτήρα αλλαγής γραµµής, όπου X το όνοµα που διαβάσατε. Χρησιµοποιώντας το όνοµα και το γεγονός ότι οι πίνακες ονοµάτων/βαθµολογιών είναι "παράλληλοι", βρείτε σε ποια θέση του πίνακα βαθµολογιών βρίσκονται οι βαθµολογίες που έχει δώσει ο αγοραστής. Αν δε βρεθεί χρήστης µε αυτό το όνοµα, εκτυπώστε το µήνυµα No such user ακολουθούµενο από χαρακτήρα αλλαγής γραµµής κι επαναλάβετε τη διαδικασία αυτού του σταδίου. Προσωρινός κώδικας: Εκτυπώστε τη θέση που βρήκατε και επιβεβαιώστε ότι είναι σωστή. Άσκηση 1, Στάδιο 3: Εύρεση χρήστη µε τις πιο όµοιες προτιµήσεις ( ) Αφαιρέστε τον προσωρινό κώδικα που γράψατε στο στάδιο 2. Για κάθε έναν από τους υπόλοιπους χρήστες, υπολογίστε το βαθµό οµοιότητας των βαθµολογιών τους µε τις βαθµολογίες του αγοραστή, και βρείτε το χρήστη µε το µεγαλύτερο βαθµό οµοιότητας. Για να υπολογίσουµε το βαθµό οµοιότητας των βαθµολογιών δύο χρηστών αντιµετωπίζουµε τις βαθµολογίες που έδωσαν ως δύο διανύσµατα και υπολογίζουµε το εσωτερικό τους γινόµενο. Εκτυπώστε το όνοµα του χρήστη που βρήκατε, ένα κενό, το βαθµό οµοιότητας κι ένα χαρακτήρα αλλαγής γραµµής. (Αυτό κανονικά δε θα έπρεπε να δηµοσιοποιείται, αλλά το εκτυπώνετε για να είναι πιο εύκολος ο έλεγχος των αποτελεσµάτων σας) Άσκηση 1, Στάδιο 4: Εύρεση συνιστώµενου βιβλίου ( ) Ψάξτε στα βιβλία του χρήστη που έχει τις πιο όµοιες προτιµήσεις µε τον αγοραστή και εντοπίστε το πρώτο βιβλίο που του άρεσε και που δεν το έχει διαβάσει ακόµη ο αγοραστής. Εκτυπώστε το µήνυµα We recommend: X ακολουθούµενο από χαρακτήρα αλλαγής γραµµής, όπου X τα στοιχεία του βιβλίου (τίτλος, συγγραφέας). Αν δε βρεθεί κατάλληλο βιβλίο, εκτυπώστε το µήνυµα Sorry, no recommendations! ακολουθούµενο από χαρακτήρα αλλαγής γραµµής. Άσκηση 1, Στάδιο 5: Τελικός έλεγχος ορθότητας Το πρόγραµµά σας πρέπει να λειτουργεί σωστά και να εκτυπώνει όλα τα µηνύµατα και αποτελέσµατα µε τον τρόπο που σας περιγράφουµε. Θα σας δώσουµε ενδεικτικά αρχεία εισόδου και εξόδου. Χρησιµοποιήστε ανακατεύθυνση εισόδου/εξόδου και την εντολή diff όπως κάνατε και στο πρώτο σετ ασκήσεων για να επιβεβαιώσετε ότι το πρόγραµµά σας βγάζει ακριβώς την αναµενόµενη έξοδο. Πρέπει το πρόγραµµα που θα µας παραδώσετε να παράγει έξοδο που δεν έχει διαφορές από τη δική µας. Αρχείο προς παράδοση: hw2.c

Άσκηση 2: Συστάσεις βιβλίων, το sequel Εισαγωγή Στη δεύτερη άσκηση θα εκµεταλλευτείτε το γεγονός ότι κάθε ένα από τα στάδια που ολοκληρώσατε στην άσκηση 1 είναι µια καλά ορισµένη λειτουργία η οποία µπορεί να υλοποιηθεί ως ξεχωριστή συνάρτηση, και θα ξαναγράψετε το πρόγραµµά σας ώστε να χρησιµοποιεί συναρτήσεις. Για να σας διευκολύνουµε, θα επιτρέψουµε περιορισµένη χρήση καθολικών µεταβλητών. Για την ακρίβεια, οι τρεις πίνακες στους οποίους αποθηκεύονται τα βιβλία, τα ονόµατα χρηστών και οι βαθµολογίες επιτρέπεται να δηλωθούν καθολικά στο πρόγραµµα, το οποίο σηµαίνει ότι δε χρειάζεται να περαστούν ως παράµετροι στις συναρτήσεις. Όλες οι άλλες µεταβλητές του προγράµµατος πρέπει να δηλωθούν τοπικά. Το τελικό σας πρόγραµµα πρέπει να έχει την ίδια συµπεριφορά µε το πρόγραµµα που γράψατε για την άσκηση 1, εκτός από το στάδιο 4. Αποθηκεύστε το πρόγραµµα σε αρχείο µε το όνοµα hw2functions.c. Άσκηση 2, Στάδιο 1: Δηµιουργία δοµών και εισαγωγή δεδοµένων ( ) Γράψτε µια συνάρτηση η οποία δεν παίρνει παραµέτρους, διαβάζει από το πληκτρολόγιο το πλήθος των βιβλίων καθώς και τα χαρακτηριστικά τους (τίτλος,συγγραφέας) και τα αποθηκεύει στον αντίστοιχο πίνακα. Η συνάρτηση επιστρέφει το πλήθος των βιβλίων που διαβάστηκαν Γράψτε µια συνάρτηση η οποία παίρνει ως παράµετρο το πλήθος των βιβλίων, διαβάζει από το πληκτρολόγιο τα ονόµατα και τις βαθµολογίες των χρηστών, τα αποθηκεύει στους αντίστοιχους πίνακες, κι επιστρέφει το πλήθος χρηστών που έχουν βαθµολογήσει βιβλία. Χρησιµοποιήστε τις συναρτήσεις που γράψατε για να διαβάσετε τα δεδοµένα του προγράµµατος και να τα αποθηκεύσετε στους κατάλληλους πίνακες. Άσκηση 2, Στάδιο 2: Εντοπισµός προτιµήσεων αγοραστή ( ) Γράψτε µια συνάρτηση η οποία παίρνει ως παράµετρο το πλήθος χρηστών, διαβάζει το όνοµα ενός αγοραστή όπως περιγράφεται στο στάδιο 2 της άσκησης 1, εντοπίζει τη θέση στον πίνακα βαθµολογιών όπου βρίσκονται οι βαθµολογίες του αγοραστή, και την επιστρέφει. Αν δε βρεθεί χρήστης µε αυτό το όνοµα, εκτυπώνει µήνυµα όπως περιγράφεται στο στάδιο 2 της άσκησης 1, κι επιστρέφει -1. Χρησιµοποιήστε αυτή τη συνάρτηση, µε την κλήση της µέσα σε επανάληψη µέχρις ότου δοθεί όνοµα αγοραστή που να υπάρχει στον πίνακα χρηστών.

Άσκηση 2, Στάδιο 3: Εύρεση χρήστη µε τις πιο όµοιες προτιµήσεις ( ) Γράψτε µια συνάρτηση η οποία παίρνει ως παράµετρο το πλήθος χρηστών, τη θέση όπου βρίσκεται ο αγοραστής και το πλήθος βιβλίων, κι επιστρέφει τη θέση στον πίνακα χρηστών όπου βρίσκεται ο χρήστης µε το µεγαλύτερο βαθµό οµοιότητας ανάµεσα στις προτιµήσεις του και τις προτιµήσεις του αγοραστή. Αφού χρησιµοποιήσετε τη συνάρτηση για να βρείτε το χρήστη µε το µεγαλύτερο βαθµό οµοιότητας, εκτυπώστε το όνοµά του, ένα κενό, το βαθµό οµοιότητας κι ένα χαρακτήρα αλλαγής γραµµής, ακριβώς όπως περιγράφεται στο στάδιο 3 της άσκησης 1. Άσκηση 2, Στάδιο 4: Εύρεση συνιστώµενων βιβλίων ( ) Γράψτε µια συνάρτηση η οποία παίρνει ως παραµέτρους τη θέση στον πίνακα ονοµάτων όπου βρίσκεται το όνοµα του αγοραστή, τη θέση όπου βρίσκεται το όνοµα του χρήστη µε τις πιο όµοιες προτιµήσεις, και το πλήθος βιβλίων, και κάνει τα παρακάτω: κατασκευάζει ένα δισδιάστατο πίνακα συµβολοσειρών στον οποίο θα αποθηκεύσει τα στοιχεία (τίτλος, συγγραφέας) όλων των βιβλίων που θα προταθούν στον αγοραστή. γεµίζει τον πίνακα µε όλα τα βιβλία που έχει βαθµολογήσει θετικά ο χρήστης µε τις όµοιες προτιµήσεις και τα οποία δεν έχει ήδη διαβάσει ο αγοραστής Ταξινοµεί τα βιβλία στον πίνακα, µε αύξουσα αλφαβητική σειρά. Αφού ταξινοµήσει τα βιβλία, εκτυπώνει το µήνυµα We recommend: ακολουθούµενο από χαρακτήρα αλλαγής γραµµής, και µετά τους τίτλους και συγγραφείς όλων των βιβλίων που βρίσκονται στον ταξινοµηµένο πίνακα. Τα στοιχεία κάθε βιβλίου εµφανίζονται σε νέα σειρά. Αν ο πίνακας δεν περιέχει κανένα βιβλίο, τότε εκτυπώνεται µόνο το µήνυµα Sorry, no recommendations! ακολουθούµενο από χαρακτήρα αλλαγής γραµµής. Μπορείτε να χρησιµοποιήσετε όποιον αλγόριθµο ταξινόµησης επιθυµείτε. Άσκηση 2, Στάδιο 5: Τελικός έλεγχος ορθότητας Το πρόγραµµά σας πρέπει να λειτουργεί σωστά και να εκτυπώνει όλα τα µηνύµατα και αποτελέσµατα µε τον τρόπο που σας περιγράφουµε. Θα σας δώσουµε ενδεικτικά αρχεία εισόδου και εξόδου. Χρησιµοποιήστε ανακατεύθυνση εισόδου/εξόδου και την εντολή diff όπως κάνατε και στο πρώτο σετ ασκήσεων για να επιβεβαιώσετε ότι το πρόγραµµά σας βγάζει ακριβώς την αναµενόµενη έξοδο. Πρέπει το πρόγραµµα που θα µας παραδώσετε να παράγει έξοδο που δεν έχει διαφορές από τη δική µας. Αρχείο προς παράδοση: hw2functions.c

Πώς να παραδώσετε τη δουλειά σας (Ακολουθείστε τις οδηγίες ακριβώς αλλιώς µπορεί να µη δούµε τα αρχεία σας) Προσθέστε σε σχόλια στην αρχή του κάθε αρχείου µε κώδικα τα πλήρη ονόµατα και ΑΜ των µελών της οµάδας. Παρακαλούµε να γράφετε τα σχόλια ΜΟΝΟ µε λατινικούς χαρακτήρες. Κατασκευάστε ένα φάκελο µε όνοµα epwnumo1_am1_epwnumo2_am2 και αντιγράψτε µέσα σε αυτόν το hw2.c και το hw2functions.c Πηγαίνετε στο φάκελο µέσα στον οποίο βρίσκεται το κατασκευάσατε και γράψτε την παρακάτω εντολή: tar czvf epwnumo1_am1_epwnumo2_am2.tgz epwnumo1_am1_epwnumo2_am2 που epwnumo1_am1_epwnumo2_am2 Στείλτε email: στη διεύθυνση ce120lab@gmail.com αντίγραφο (CC) στον άλλο µέλος της οµάδας σας θέµα (subject) CE120 hw2 και επικολληµένο αρχείο το epwnumo1_am1_epwnumo2_am2.tgz Το πρόγραµµά σας θα βαθµολογηθεί ως προς: ορθότητα υπολογισµών σωστή επιλογή τύπων σωστή επιλογή και χρήση δοµών ελέγχου κι επανάληψης σωστή χρήση πινάκων σωστός ορισµός και χρήση συναρτήσεων αναγνωσιµότητα (ονόµατα, στοίχιση, σχολιασµός, µορφή κώδικα) φορµαρισµένη είσοδος/έξοδος και συµµόρφωση µε τις προδιαγραφές. Ασκήσεις που έχουν λάθος format ή είναι εκπρόθεσµες ΔΕ θα γίνουν δεκτές.