ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ - Αποστολή email: διαδικαστικά οκ, αλλά στείλατε την άσκηση µε δέκα λεπτά καθυστέρηση. Στο µέλλον τόσο µεγάλη καθυστέρηση θα είναι λόγος για fail γιατί η άσκηση θα θεωρείται εκπρόθεσµη. 449 οριακό PASS - Το πρόγραµµα δεν κάνει compile λόγω άσχετων? σε κάποιες γραµµές. Πριν κάνετε το τελικό πακετάρισµα των αρχείων σας, να κάνετε ΠΑΝΤΑ ένα τελικό compile για να βεβαιωθείτε ότι δεν έχει γίνει κάποιο λάθος. Υποθέτω προσθέσατε κατά λάθος αυτά τα ερωτηµατικά όταν γράψατε τα σχόλια. - Καλή προσπάθεια µε τα σχόλια, αλλά: Μην τα γράφετε µε κεφαλαία και µη γράφετε περιττά σχόλια. Για παράδειγµα δεν υπάρχει λόγος να γράψετε ότι στη γραµµή 7 δηλώνονται ακέραιες µεταβλητές - είναι προφανές. Διαβάστε το φυλλάδιο εδώ: http://infserver.inf.uth.gr/courses/ce120/lab/handouts/good_coding.pdf - Σωστές πράξεις - Σωστή µορφοποίηση εξόδου - Σωστά χωρίζετε µε κενές γραµµές τις διαφορετικές ενότητες του προγράµµατος. - Καλά ονόµατα µεταβλητών 451 οριακό PASS - Δεν υπάρχουν σχόλια. - Καλά ονόµατα µεταβλητών, αλλά δεν τα χρησιµοποιείτε σωστά. Στη µεταβλητή ls_bytes έχετε βάλει τα περισσότερο σηµαντικά bytes ενώ το όνοµα υπονοεί ότι η µεταβλητή περιέχει τα λιγότερο σηµαντικά bytes. - Σοβαρότατο λάθος: χρησιµοποιείτε τον τελεστή ^ ο οποίος είναι το δυαδικό xor σα να είναι τελεστής ύψωσης σε δύναµη! Πρέπει να κάνετε καλύτερη προετοιµασία την επόµενη φορά. - Σωστό φορµάρισµα εξόδου. - Αποστολή email: διαδικαστικά οκ, αλλά στείλατε την άσκηση µε δέκα λεπτά καθυστέρηση. Στο µέλλον τόσο µεγάλη καθυστέρηση θα είναι λόγος για fail γιατί η άσκηση θα θεωρείται εκπρόθεσµη. - Το πρόγραµµα δεν κάνει compile λόγω άσχετων? σε κάποιες γραµµές. Πριν κάνετε το τελικό πακετάρισµα των αρχείων σας, να κάνετε ΠΑΝΤΑ ένα τελικό compile για να βεβαιωθείτε ότι δεν έχει γίνει κάποιο λάθος. Υποθέτω προσθέσατε κατά λάθος αυτά τα ερωτηµατικά όταν γράψατε τα σχόλια. - Καλή προσπάθεια µε τα σχόλια, αλλά: Μην τα γράφετε µε κεφαλαία και µη γράφετε περιττά σχόλια. Για παράδειγµα δεν υπάρχει λόγος να γράψετε ότι στη γραµµή 7 δηλώνονται ακέραιες µεταβλητές - είναι προφανές. Διαβάστε το φυλλάδιο εδώ: http://infserver.inf.uth.gr/courses/ce120/lab/handouts/good_coding.pdf - Σωστές πράξεις - Σωστή µορφοποίηση εξόδου - Σωστά χωρίζετε µε κενές γραµµές τις διαφορετικές ενότητες του προγράµµατος. - Καλά ονόµατα µεταβλητών - Δεν υπάρχουν σχόλια. - Καλά ονόµατα µεταβλητών, αλλά δεν τα χρησιµοποιείτε σωστά. Στη µεταβλητή ls_bytes έχετε βάλει τα περισσότερο σηµαντικά bytes ενώ το όνοµα υπονοεί ότι η µεταβλητή περιέχει τα λιγότερο σηµαντικά bytes. - Σοβαρότατο λάθος: χρησιµοποιείτε τον τελεστή ^ ο οποίος είναι το δυαδικό xor σα να είναι τελεστής ύψωσης σε δύναµη! Πρέπει να κάνετε καλύτερη προετοιµασία την επόµενη φορά. - Σωστό φορµάρισµα εξόδου. Page 1
- Αποστολή email: διαδικαστικά οκ, αλλά στείλατε την άσκηση µε αρκετά λεπτά καθυστέρηση. Στο µέλλον να στέλνετε εντός της προθεσµίας. 476 PASS - Πολύ καλή δουλειά µπράβο. - Καλογραµµένο πρόγραµµα, µε σωστά σχόλια, στοίχιση, και καλά ονόµατα µεταβλητών. - Σωστοί υπολογισµοί και σωστή µορφοποίηση εξόδου. - Και πάλι καλή δουλειά. Θα µπορούσατε να είχατε %X αντί για %x για να εµφανίζονται κεφαλαία τα δεκαεξαδικά ψηφία (δεν ήταν απαραίτητο όµως). - Αποστολή email: διαδικαστικά οκ, αλλά στείλατε την άσκηση µε αρκετά λεπτά καθυστέρηση. Στο µέλλον να στέλνετε εντός της προθεσµίας. 486 PASS - Πολύ καλή δουλειά µπράβο. - Καλογραµµένο πρόγραµµα, µε σωστά σχόλια, στοίχιση, και καλά ονόµατα µεταβλητών. - Σωστοί υπολογισµοί και σωστή µορφοποίηση εξόδου. - Και πάλι καλή δουλειά. Θα µπορούσατε να είχατε %X αντί για %x για να εµφανίζονται κεφαλαία τα δεκαεξαδικά ψηφία (δεν ήταν απαραίτητο όµως). - Αποστολή email: όλα οκ, αλλά η άσκηση είναι εκπρόθεσµη κατά 11λεπτά. Στο µέλλον κάτι τέτοιο θα έχει επίπτωση στο βαθµό. - Πολύ καλή δουλειά! - Να προσέξετε την επόµενη φορά τα ονόµατα των µεταβλητών σας. Τη µια µεταβλητή την έχετε ονοµάσει integer που είναι και τύπος της C και αρά θα µπορούσατε να διαλέξετε κάτι διαφορετικό όπως number ή input. - Σωστή στοίχιση και σχόλια. - Σωστά αποτελέσµατα. Οut of the box προσέγγιση για την εύρεση της λύσης του συµπληρώµατος (αντί να κάνετε +1 κάνατε 0x1)!!! - Σωστά χρησιµοποιήσατε το %6d για την µορφοποίηση εξόδου. 1733 PASS - Προσοχή στη στοίχιση. Να αφήνετε κάποια κενά µεταξύ διαφορετικών λειτουργιών του κώδικά σας. - Σωστή ονοµασία µεταβλητών - Δεν βάλατε σχόλια. - Λάθος πράξεις. Το αποτέλεσµα του byte2 είναι στη πραγµατικότητα το byte1 και για να βρείτε το byte2 έπρεπε να κάνετε µια επιπλέον ολίσθηση για να πάει το 2 λιγότερο σηµαντικό byte στο τέλος. Φτάσατε κοντά. - Σωστά χρησιµοποιήσατε το %x για την µορφοποίηση εξόδου και πολύ σωστά χρησιµοποιήσατε µάσκα για τον υπολογισµό των Bytes. Παρατήρηση: θα µπορούσατε να είχατε χρησιµοποιήσει το %Χ (κεφαλαίο το Χ) για να εµφανίζονται κεφαλαία όπως και στη λύση. Επίσης έχετε αφήσει ένα επιπλέον κενό από αυτό που σας ζητάµε µε αποτέλεσµα η εµφάνιση της εξόδου σας να µην είναι ακριβώς ίδια Page 2
1756 Οριακό PASS lab3grades Να κάνετε cc και τα 2 µέλη της οµάδας. - Προτιµήστε αγγλικά στα ονόµατα των µεταβλητών σας. - Σωστή στοίχιση, αφήστε κενό µεταξύ των τελεστών για ευκολότερη ανάγνωση. - Σωστές οι πράξεις. - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Δε χρησιµοποιήσατε χαρακτήρα tab. Επιπλέον παραλείψατε τον τελεστή %6d και εισάγατε τα κενά "µε το χέρι". - Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που συµπτύξατε τα βήµατα 3 και 4, αλλά στο µέλλον προσπαθήστε να ακολουθείτε µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. ' - Σωστή ονοµασία µεταβλητών, αλλά καλό είναι να τις δηλώνετε στην αρχή του προγράµµατος - Έλλειψη σχολίων! Θα µπορούσατε να έχετε συµπεριλάβει µερικά επεξηγηµατικά σχόλια, ειδικά στο σηµείο όπου κάνετε το byte shifting. - Λάθος υπολογισµός των MSB και LSB. Δείτε τη λύση. Αρχικά δεν αποθηκεύσατε τον αριθµό εισόδου σε δεκαεξαδική µορφή µε αποτέλεσµα να διαβάζεται 0 πάντα. Σωστά υπολογίζετε το πρώτο LSB αλλά για τα υπόλοιπα δεν αρκεί µόνο ένα shift, αλλά και πάλι λογικό και (&) µε το 0xFF. - Σωστή χρήση του τελεστή %X στην µορφοποίηση του αποτελέσµατος. Δεν υπήρχε περιορισµός για εκτύπωση τουλάχιστον τεσσάρων χαρακτήρων, οπότε το %4 και %5 δεν χρειαζόταν. Διαδικαστικά: ΟΚ ' - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ 1779 PASS - Σχόλια: Πολύ καλά γενικά σχόλια, µπράβο. Αν χρειάζεστε σχόλια για να εξηγήσετε τα ονόµατα των µεταβλητών σας, τότε να υποπτεύεστε ότι τα ονόµατα θα µπορούσαν να είναι πιο περιγραφικά. Για παράδειγµα, θα µπορούσατε να είχατε δύο µεταβλητές για τα επιµέρους αποτελέσµατα, µε ονόµατα quotient και complement και µετά να θέτετε το result στο ένα ή το άλλο. Επίσης, το σχόλιο "Διαβάζει τον ακέραιο..." είναι περιττό γιατί είναι προφανές ότι αυτό κάνει η scanf. Ίσως θα ήταν πιο χρήσιµο ένα σχόλιο στο σηµείο που κάνετε τους υπολογισµούς. - Μορφή εξόδου: ΟΚ - Ορθότητα υπολογισµών: ΟΚ, Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ - Σχόλια: ΟΚ - Μορφή εξόδου: Με το %Χ θα µπορούσατε να εµφανίσετε τα δεκαεξαδικά κεφαλαία. έπρεπε να αλλάζει γραµµή πριν το Given number: - Ορθότητα υπολογισµών: ΟΚ. Page 3
1899 1900 Οριακό PASS Οριακό PASS lab3grades - Σωστή αποστολή email. - Σωστή στοίχιση, στα ονόµατα µεταβλητών καλό θα ήταν να χρησιµοποιείτε πιο περιγραφικά ονόµατα - Σωστά έχετε βάλει ένα σχόλιο µε το τι κάνει το πρόγραµµα, αλλά να µην χρησιµοποιείτε ελληνικούς χαρακτήρες στα προγράµµατα σας. Επίσης θα ήταν καλό να βάλετε και κάποια σχόλια µέσα στο πρόγραµµα. Για παράδειγµα εκεί που χρησιµοποιείτε τον τελεστή? :. - Λάθος output του προγράµµατος. Δεν τυπώνετε µε την ίδια µορφοποίηση που σας έδειχνε η εικόνα (Χρειάζεται tab και %6d) - Λάθος υπολογισµοί στο πρόγραµµα.(υπολογίζετε σωστά το συµπλήρωµα αλλά κάνετε shift 4 bits για την διαίρεση που αυτό διαιρεί τον αριθµό µε το 16 όχι το 4) - Σωστή στοίχιση, στα ονόµατα µεταβλητών να µην χρησιµοποιείτε γενικά ονόµατα όπως είναι το nub1,nub2,nub3,nub4 (Επίσης απ' ότι καταλαβαίνω θέλατε να βάλετε συντοµογραφία του number σαν όνοµα, αν είναι όντως έτσι έπρεπε να βάζετε num1, num2, num3, num4 και όχι nub1,nub2,nub3,nub4.) - Δεν έχετε έχετε βάλει καθόλου σχόλια. - Το output του προγράµµατος δεν είναι ακριβώς αυτό το οποίο σας ζητήθηκε. - Λάθος αποτελέσµατα υπολογισµών. Αφού κάνετε την µάσκα για τα MSB πρέπει να κάνετε shift >>16 τον αριθµό για να βγαίνουν σωστά. - Σωστή αποστολή email. - Σωστή στοίχιση, στα ονόµατα µεταβλητών καλό θα ήταν να χρησιµοποιείτε πιο περιγραφικά ονόµατα - Σωστά έχετε βάλει ένα σχόλιο µε το τι κάνει το πρόγραµµα, αλλά να µην χρησιµοποιείτε ελληνικούς χαρακτήρες στα προγράµµατα σας. Επίσης θα ήταν καλό να βάλετε και κάποια σχόλια µέσα στο πρόγραµµα. Για παράδειγµα εκεί που χρησιµοποιείτε τον τελεστή? :. - Λάθος output του προγράµµατος. Δεν τυπώνετε µε την ίδια µορφοποίηση που σας έδειχνε η εικόνα (Χρειάζεται tab και %6d) - Λάθος υπολογισµοί στο πρόγραµµα.(υπολογίζετε σωστά το συµπλήρωµα αλλά κάνετε shift 4 bits για την διαίρεση που αυτό διαιρεί τον αριθµό µε το 16 όχι το 4) - Σωστή στοίχιση, στα ονόµατα µεταβλητών να µην χρησιµοποιείτε γενικά ονόµατα όπως είναι το nub1,nub2,nub3,nub4 (Επίσης απ' ότι καταλαβαίνω θέλατε να βάλετε συντοµογραφία του number σαν όνοµα, αν είναι όντως έτσι έπρεπε να βάζετε num1, num2, num3, num4 και όχι nub1,nub2,nub3,nub4.) - Δεν έχετε έχετε βάλει καθόλου σχόλια. - Το output του προγράµµατος δεν είναι ακριβώς αυτό το οποίο σας ζητήθηκε. - Λάθος αποτελέσµατα υπολογισµών. Αφού κάνετε την µάσκα για τα MSB πρέπει να κάνετε shift >>16 τον αριθµό για να βγαίνουν σωστά. Page 4
Αποστολή email: όλα οκ 1901 PASS - Ωραία σχόλια προγράµµατος. - Σωστά χρησιµοποιείτε κενή γραµµή για να χωρίσετε τις ενότητες του προγράµµατος. - Σωστοί υπολογισµοί - Σωστό φορµάρισµα. -Το βήµα 3 ορίζει ότι θέλουµε να υπολογιστούν και τα δύο νούµερα και µετά να επιλεγεί το ένα από τα δύο. Εσείς τα κάνατε όλα σε µια γραµµή κάνοντας τον υπολογισµό µέσα στο? : Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που συµπτύξατε τα βήµατα 3 και 4, αλλά στο µέλλον προσπαθήστε να ακολουθείτε µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. -Ωραία σχόλια προγράµµατος. -Καλά ονόµατα µεταβλητών. -Δεν κάνατε σωστούς υπολογισµούς πήρατε 2 φορές το λιγότερο σηµαντικό ψηφίο και το πολλαπλασιάσατε, έπρεπε να πάρετε και µια δεύτερη µάσκα 0xFF00 για να αποσπάσετε το δεύτερο λιγότερο σηµαντικό ψηφίο byte2 = (number & mask) >> 8; και µετά να πολλαπλασιάζατε τα byte1 και byte2. -Καλή µορφοποίηση εξόδου Γενικά: Καλή δουλειά - Σωστή αποστολή mail. 1903 PASS Άσκηση 1η - Σωστή στοίχιση. - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος, δείτε τη λύση. - Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. - Σωστές οι πράξεις. - Διαχωρίσατε σωστά τις διαφορετικές ενότητες του προγράµµατος µε κενές γραµµές. - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Χρησιµοποιήσατε έναν παραπάνω κενό χαρακτήρα. Άσκηση 2η - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος, δείτε τη λύση. - Θα έπρεπε να χρησιµοποιήσετε unsigned int τύπους ακεραίων. - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Δεν χρησιµοποιήσατε χαρακτήρα tab. - Σωστά αποµονώσατε τα bytes. Page 5
Γενικά: Καλή δουλειά - Σωστή αποστολή mail. 1904 PASS Άσκηση 1η - Σωστή στοίχιση. - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Τα µόνα σχόλια που έχει εξηγούν τα ονόµατα των µεταβλητών, ένδειξη του ότι τα ονόµατα δεν είναι αρκετά περιγραφικά. Δείτε τη λύση. - Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. - Σωστές οι πράξεις. - Δεν διαχωρίσατε σωστά τις διαφορετικές ενότητες του προγράµµατος µε κενές γραµµές. - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Δεν χρησιµοποιήσατε τον χαρακτήρα tab στη σωστή θέση. Άσκηση 2η - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Τα µόνα σχόλια που έχει εξηγούν τα ονόµατα των µεταβλητών, ένδειξη του ότι τα ονόµατα δεν είναι αρκετά περιγραφικά. Δείτε τη λύση. - Προσέξτε την ονοµασία των µεταβλητών σας, µεταβλητές µε όνοµα 1 χαρακτήρα βάζουµε σε πολύ ειδικές περιπτώσεις (π.χ. iterators σε for-loops). - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Δεν χρησιµοποιήσατε σωστή µορφοποίηση για την εκτύπωση "Given number". Επίσης θα µπορούσατε να είχατε %Χ αντί για %x ώστε οι αριθµοί να εκτυπώνονται µε κεφαλαία γράµµατα στο δεκαεξαδικό σύστηµα. - Σωστά αποµονώσατε τα bytes, όµως χρησιµοποιήσατε µόνο shifts. Υπάρχει και καλύτερος/συντοµότερος τρόπος σκεφτείτε το παραπάνω και µετά κοιτάξτε τη λύση. Διαδικαστικά: ΟΚ ' 1905 PASS - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ - Σχόλια: ΚΑΝΕΝΑ ΣΧΟΛΙΟ, παρακαλώ διαβάστε αυτό: http://infserver.inf.uth.gr/courses/ce120/lab/handouts/commenting_standard.pdf - Μορφή εξόδου: ΟΚ - Ορθότητα υπολογισµών: ΟΚ - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ, δοκιµάστε να αφήνετε µια γραµµή µεταξύ δήλωσης µεταβλητών και κυρίως κώδικα. - Σχόλια: ΚΑΝΕΝΑ ΣΧΟΛΙΟ, παρακαλώ διαβάστε αυτό: http://infserver.inf.uth.gr/courses/ce120/lab/handouts/commenting_standard.pdf - Μορφή εξόδου: ΟΚ. Με το %Χ θα µπορούσατε να εµφανίσετε τα δεκαεξαδικά κεφαλαία - Ορθότητα υπολογισµών: ΟΚ 1907 - Απουσία από το εργαστήριο Page 6
Γενικά: Καλή δουλειά - Σωστή αποστολή mail. 1908 PASS Άσκηση 1η - Σωστή στοίχιση. - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος, δείτε τη λύση. - Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. - Σωστές οι πράξεις. - Διαχωρίσατε σωστά τις διαφορετικές ενότητες του προγράµµατος µε κενές γραµµές. - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Χρησιµοποιήσατε έναν παραπάνω κενό χαρακτήρα. 1909 οριακό PASS Άσκηση 2η - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος, δείτε τη λύση. - Θα έπρεπε να χρησιµοποιήσετε unsigned int τύπους ακεραίων. - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Δεν χρησιµοποιήσατε χαρακτήρα tab. - Σωστά αποµονώσατε τα bytes. -Αποστολή email: διαδικαστικά οκ -Καλή στοίχιση και γενική παρουσίαση κώδικα -Θα µπορούσατε να χρησιµοποιήσετε καλύτερα ονόµατα µεταβλητών και όχι number,number2,number3 -Ύπαρξη σχολίων αλλά καλό θα ήτανε να γράφατε κάποια γενικά σχόλια στην αρχή του προγράµµατος. - Δεν κάνατε σωστές πράξεις. Η εκφώνηση ζητούσε να πολλαπλασιάζεται ένας αριθµός µε το 16 αν είναι αρνητικός και όχι αν είναι θετικός που κάνατε εσείς. Αν είναι θετικός να υπολογίζει το συµπλήρωµα ως προς 2 του αριθµού αυτού. Το συµπλήρωµα ενός αριθµού υπολογίζετε complement = ~number + 1; Δε χρειαζόταν το number3 -Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Δε χρησιµοποιήσατε χαρακτήρα tab ούτε αλλαγή γραµµής µέσα στο τελευταίο printf. -Την επόµενη φορά διαβάστε ποιο προσεκτικά της σας ζητάει η άσκηση να κάνετε. -Ύπαρξη σχολίων αλλά καλό θα ήτανε να γράφατε κάποια γενικά σχόλια στην αρχή του προγράµµατος. -Το %x στην printf είναι οκ, αλλά µε το %X θα µπορούσατε να εµφανίσετε τα αποτελέσµατα µε κεφαλαία, όπως στα παραδείγµατα. -Δεν τυπώνετε τα αποτελέσµατά σας και σε δεκαδική µορφή, έπρεπε να συντάξετε τα printf κάπως έτσι printf("ls byte 1 is:\t0x%x or %d\n", ls1, ls1); Page 7
1910 1911 Οριακό PASS Οριακό PASS lab3grades Αποστολή email: όλα οκ αλλά στείλατε την άσκηση µε 7 λεπτά καθυστέρηση. Στο µέλλον τόσο µεγάλη καθυστέρηση θα είναι λόγος για fail γιατί η άσκηση θα θεωρείται εκπρόθεσµη. - Ωραία σχόλια προγράµµατος. -Καλά ονόµατα µεταβλητών. - Σωστά χρησιµοποιείτε κενή γραµµή για να χωρίσετε τις ενότητες του προγράµµατος. - Σωστοί υπολογισµοί - Σωστό φορµάρισµα. -Καλά ονόµατα µεταβλητών - Δεν έχετε καθόλου σχόλια στο πρόγραµµα σας. - Το πρόγραµµα σας βγάζει warnings. -Η scanf έπρεπε να οριστεί έτσι scanf("%x", &number); και όχι scanf (" %hex\n", &number); -Η απόσπαση του δεύτερου σηµαντικού ψηφίου έπρεπε να γίνει LSbyte2 = (number & mask) >> 8; και όχι µε >>= που έχετε εσείς. Αποστολή email: όλα οκ αλλά στείλατε την άσκηση µε 7 λεπτά καθυστέρηση. Στο µέλλον τόσο µεγάλη καθυστέρηση θα είναι λόγος για fail γιατί η άσκηση θα θεωρείται εκπρόθεσµη. - Ωραία σχόλια προγράµµατος. -Καλά ονόµατα µεταβλητών. - Σωστά χρησιµοποιείτε κενή γραµµή για να χωρίσετε τις ενότητες του προγράµµατος. - Σωστοί υπολογισµοί - Σωστό φορµάρισµα. -Καλά ονόµατα µεταβλητών - Δεν έχετε καθόλου σχόλια στο πρόγραµµα σας. - Το πρόγραµµα σας βγάζει warnings. -Η scanf έπρεπε να οριστεί έτσι scanf("%x", &number); και όχι scanf (" %hex\n", &number); -Η απόσπαση του δεύτερου σηµαντικού ψηφίου έπρεπε να γίνει LSbyte2 = (number & mask) >> 8; και όχι µε >>= που έχετε εσείς. - Αποστολή email: όλα ΟΚ. 1913 PASS - Πολύ καλή δουλειά! - Σωστά και περιγραφικά ονόµατα µεταβλητών. - Σωστή στοίχιση, δεν χρειάζονται τόσα enter µεταξύ εντολών. - Σωστές οι πράξεις. - Σωστά χρησιµοποιήσατε το %6d για την µορφοποίηση εξόδου. Προτιµήστε tabs αντί για spaces. - Μπράβο πολύ καλή δουλειά! - Σωστή στοίχιση, ονοµασία µεταβλητών και σχόλια. - Σωστές πράξεις µε πετυχηµένη χρήση µάσκας. - Σωστά χρησιµοποιήσατε το %X για την µορφοποίηση εξόδου. Page 8
Γενικά: Καλή δουλειά - Σωστή αποστολή mail. 1914 PASS Άσκηση 1η - Πολύ καλή δουλειά. - Καλά ονόµατα µεταβλητών. - Σωστές πράξεις. - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Δείτε τη λύση. Άσκηση 2η - Πολύ καλή δουλειά. - Πολύ καλή δουλειά. - Καλά ονόµατα µεταβλητών. - Σωστές πράξεις. - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Δείτε τη λύση. - Αποστολή email: πρέπει να στέλνετε τις ασκήσεις εντός της προθεσµίας. 1915 FAIL ΑΚΣΗΣΗ 1 - Σωστά σχόλια, περιγραφικά ονόµατα µεταβλητών. - Το πρόγραµµα δεν υπολογίζει σωστά το αποτέλεσµα για είσοδο αρνητικό αριθµό. Η πράξη που κάνατε είναι το δυαδικό and αντί πολλαπλασιασµός. Να ελέγχετε το πρόγραµµά σας µε πολλές διαφορετικές εισόδους πριν βεβαιωθείτε για την ορθότητά του. Πχ. ο κώδικας σας για είσοδο -17 υπολογίζει 0 αντί -272. ΑΚΣΗΣΗ 2 - Δεν κάνει compile. - Οι µάσκες που πήγατε να χρησιµοποιήσετε δεν είναι οι σωστές. Να είστε περισσότερο προσεκτικοί σε επόµενες ασκήσεις. 1916 οριακό PASS - Αποστολή email: διαδικαστικά οκ, αλλά έστειλες την άσκηση µε ένα τέταρτο καθυστέρηση. Στο µέλλον τόσο µεγάλη καθυστέρηση θα είναι λόγος για fail γιατί η άσκηση θα θεωρείται εκπρόθεσµη. - Αυτή είναι η δεύτερη φορά που παίρνεις οριακό pass. Πριν το επόµενο εργαστήριο πρέπει να αφιερώσεις όσο το δυνατό περισσότερο χρόνο κάνοντας παραδείγµατα (πχ περσινά εργαστήρια, παραδείγµατα από τις διαλέξεις) για να βελτιωθείς. Στείλε τυχόν απορίες στο φόρουµ ή πήγαινε σε ώρες γραφείου. Επίσης, δίνε προσοχή στα σχόλια βαθµολόγησης, ώστε να µην επαναλαµβάνεις λάθη από τη µία εβδοµάδα στην άλλη. - Δεν υπάρχουν σχόλια. - Πολύ άσχηµα ονόµατα µεταβλητών Μη χρησιµοποιείς ονόµατα του ενός γράµµατος και αν χρησιµοποιείς αγγλικές λέξεις πρόσεχε να έχουν το σωστό νόηµα (το συµπλήρωµα ως προς 2 λέγεται complement). Δες και τα σχόλια από το lab2. - Η εντολή?: θα ήταν πιο καλογραµµένη αν είχες res = (a>0)? p : suplement - Το φορµάρισµα της εξόδου δεν ακολουθεί τις προδιαγραφές: δεν εκτυπώνεις tab και ο αριθµός δεν καταλαµβάνει 6 θέσεις. - Δεν υπάρχουν σχόλια - Το τελευταίο άγκιστρο δεν έχει σωστή στοίχιση - Λάθος υπολογισµοί. Δες τη λύση - Το φορµάρισµα της εξόδου δεν ακολουθεί τις προδιαγραφές. Page 9
1917 PASS - Σωστή αποστολή email. - Σωστή στοίχιση, πολύ καλα ονόµατα µεταβλητών. - Σωστός σχολιασµός του προγράµµατος. - Σωστό format του output. - Σωστά αποτελέσµατα υπολογισµών -Σωστή στοίχιση, σωστά ονόµατα µεταβλητών. -Σωστός σχολιασµός του προγράµµατος. -Σωστό format του output του προγράµµατος. Για να τυπώσετε τους δεκαεξαδικούς χαρακτήρες µε κεφαλαία γράµµατα µπορούσατε να χρησιµοποιήσετε %X αντί για %x. -Σωστά αποτελέσµατα υπολογισµών. Γενικά: Πριν στείλετε τις λύσεις σας διπλο-τσεκάρετε ότι τα προγράµµατα σας περνούν την διαδικασία της µεταγλώττισης. - Σωστή αποστολή mail. Άσκηση 1η - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Δείτε τη λύση. - Δεν διαχωρίσατε σωστά τις διαφορετικές ενότητες του προγράµµατος µε κενές γραµµές. - Καλή στοίχιση. - Σωστές πράξεις. - Γενικά αφήνουµε µία κενή γραµµή µετά τα #include. 1920 Οριακό PASS Άσκηση 2η - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Δείτε τη λύση. - Δεν διαχωρίσατε σωστά τις διαφορετικές ενότητες του προγράµµατος µε κενές γραµµές. - Καλή στοίχιση. - Λάθος µορφοποίηση εισόδου, θα έπρεπε να είχατε χρησιµοποιήσει "%x" για να διαβάσετε δεκαεξαδικό ακέραιο. - Γενικά αφήνουµε µία κενή γραµµή µετά τα #include. - Θα µπορούσατε να είχατε %Χ αντί για %x ώστε οι αριθµοί να εκτυπώνονται µε κεφαλαία γράµµατα στο δεκαεξαδικό σύστηµα. - Σωστά αποµονώσατε τα bytes. - Σας ξέφυγε ένα " στη µορφοποίησή σας και το πρόγραµµά δεν κάνει compile. Επίσης έχετε σε λάθος σηµείο τις µεταβλητές. Δείτε την λύση και τις διαφάνειες του µαθήµατος σχετικά µε τη χρήση της printf(). 1921 - Απουσία από το εργαστήριο Page 10
Σωστό θέµα και επισυναπτόµενο στο e-mail. Άσκηση 1 1922 PASS - Σωστά σχόλια. - Η στοίχιση του προγράµµατος σας δεν είναι απόλυτα σωστή. Χρησιµοποιείτε 3 κενά αντί για 1 tab. Προσπαθήστε να ρυθµίσετε το kate σωστά µε βάση τις οδηγίες του 1ου εργαστηρίου - H στοίχιση της εξόδου σας είναι κοντά στην επιθυµητή, αλλά δεν είναι η επιθυµητή. Προσέξτε τους κενούς χαρακτήρες που εισάγετε. - Σωστή επιλογή µεταβλητών. - Σωστή µεταγλώττιση και σωστό αποτέλεσµα. Άσκηση 2 - Θα µπορούσατε να επιλέξετε πιο κατάλληλα ονόµατα µεταβλητών, όπως lsb1, lsb2. - Η επιλογή της µάσκας είναι σωστή, όπως σωστοί είναι και οι υπολογισµοί σας. - Μορφοποίηση εξόδου: Θα µπορούσατε να χρησιµοποιήσετε %X αντί για %x, ώστε να λάβετε της δεκαεξαδικούς αριθµούς µε κεφαλαία. Επίσης, πριν τους δεκαεξαδικούς αριθµούς τυπώνουµε "0x" ώστε να δηλώσουµε ότι πρόκειται για δεκαεξαδικό. - Σε γενικές γραµµές πολύ καλή προσπάθεια. Να κάνετε cc και τα 2 µέλη της οµάδας. 1925 PASS - Το πρόγραµµα δεν έχει καθόλου σχόλια. Δώστε προσοχή στο pdf για σωστή χρήση σχολίων. - Τα ονόµατα των µεταβλητών δεν είναι αρκετά περιγραφικά. Δείτε τη λύση. - Σωστές οι πράξεις. - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Παραλείψατε τον τελεστή %6d και εισάγατε τα κενά "µε το χέρι". - Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που συµπτύξατε τα βήµατα 3 και 4, αλλά στο µέλλον προσπαθήστε να ακολουθείτε µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. ' - Το πρόγραµµα δεν έχει καθόλου σχόλια. Θα µπορούσατε να έχετε συµπεριλάβει µερικά επεξηγηµατικά σχόλια, ειδικά στο σηµείο όπου κάνετε το byte shifting. Δώστε προσοχή στο pdf για σωστή χρήση σχολίων. - Τα ονόµατα των µεταβλητών δεν είναι περιγραφικά (number1,number2 κλπ δεν συµβολίζουν κάτι). - προσπαθήστε όλες οι γραµµές να έχουν την ίδια στοίχιση. - Σωστός υπολογισµός του MSB αλλά λάθος υπολογισµός του LSB. Δείτε τη λύση. Χρειάζεται να κάνετε άλλο ένα shift >> 16 το LSB γιατί κρατάτε τα υπολειπόµενα µηδενικά και ο αριθµός σας βγαίνει πολύ µεγάλος. - Σωστή χρήση του τελεστή %x στην µορφοποίηση του αποτελέσµατος (υπάρχει και ο %Χ για κεφαλαία). Δεν υπήρχε περιορισµός για εκτύπωση τουλάχιστον τεσσάρων χαρακτήρων, οπότε το %4 και %5 δεν χρειαζόταν. Page 11
1926 PASS 1927 Οριακό PASS 1928 PASS - Σωστή αποστολή email. - Σωστή στοίχιση, πολύ καλα ονόµατα µεταβλητών. - Σωστός σχολιασµός του προγράµµατος. - Σωστό format του output. - Σωστά αποτελέσµατα υπολογισµών -Σωστή στοίχιση, σωστά ονόµατα µεταβλητών. -Σωστός σχολιασµός του προγράµµατος. -Σωστό format του output του προγράµµατος. Για να τυπώσετε τους δεκαεξαδικούς χαρακτήρες µε κεφαλαία γράµµατα µπορούσατε να χρησιµοποιήσετε %X αντί για %x. -Σωστά αποτελέσµατα υπολογισµών. - Σωστή αποστολή email. - Σωστή στοίχιση, πολύ καλα ονόµατα µεταβλητών. - Πολύ καλός σχολιασµός του προγράµµατος. - Να προσέχετε το format του output να είναι ακριβώς όπως σας ζητείται στη οδηγίες. Δεν βγαίνουν όλα µε σωστή στοίχιση. - Σωστά αποτελέσµατα υπολογισµών - Σωστή στοίχιση, σωστά ονόµατα µεταβλητών εκτός από το LS MS. Όπως έχουµε πει να µην χρησιµοποιείτε κεφαλαία σε µεταβλητές οι οποίες δεν είναι constant. - Σωστός σχολιασµός του προγράµµατος. - ΔΕΝ κάνει compile το πρόγραµµα σας. Έχετε ξεχάσει ένα αδέσποτο * στην σειρά 6 το οποίο σας καταστρέφει όλο το πρόγραµµα. Γι αυτό να σιγουρεύεστε ότι το πρόγραµµα κάνει compile µετά από οποιαδήποτε αλλαγή στο πρόγραµµα σας. Γενικά: Καλή δουλειά - Σωστή αποστολή mail. Άσκηση 1η - Πολύ καλή δουλειά. - Καλά ονόµατα µεταβλητών. - Σωστές πράξεις. - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Δείτε τη λύση. Άσκηση 2η - Πολύ καλή δουλειά. - Πολύ καλή δουλειά. - Καλά ονόµατα µεταβλητών. - Σωστές πράξεις. - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Δείτε τη λύση. Page 12
1929 Οριακό PASS Άσκηση 1 - Υπερβολική χρήση 2 tab για στοίχιση το προγράµµατος. - Καλή προσπάθεια στην επιλογή µεταβλητών. Η επιλογή complement ή two_complement αντί για supplement θα ήταν πιο εύστοχη. - Σωστή εκτύπωση. - Σωστή µεταγλώττιση και σωστό αποτέλεσµα. Άσκηση 2 - Τα σχόλια δεν περιγράφουν αυτό που πρέπει να κάνει το πρόγραµµα σας. - Λάθος επιλογή µάσκας και λάθος λογική στην υλοποίηση του κώδικα σας. - Λάθος αποτέλεσµα. - Ο κώδικας φαίνεται να έχει δανειστεί στοιχεία από τον κώδικα άλλης οµάδας µε τους οποίους καθόσασταν δίπλα-δίπλα. Την επόµενη φορά ανάλογη οµοιότητα θα σηµάνει αυτόµατα FAIL στο εργαστήριο. Αυτή την φορά δεν το µετρήσαµε. 1930 - Απουσία από το εργαστήριο Σωστό θέµα και επισυναπτόµενο στο e-mail. Άσκηση 1 1931 PASS - Τα σχόλια σας θα µπορούσαν να περιοριστούν σε µία αναφορά του τι κάνει το πρόγραµµα στην αρχή του αρχείου. Αναλυτικά σχόλια σε κάθε γραµµή του προγράµµατος συχνά κάνουν δυσνόητο τον κώδικά. Εξαιρούνται οι γραµµές του κώδικά που δεν είναι προφανείς. - Καλή προσπάθεια στην επιλογή µεταβλητών, αν και θα µπορούσατε να επιλέξετε περισσότερο αντιπροσωπευτικά ονόµατα (π.χ. sympliroma, ginomeno, complement, _2complement, two_complement). - Η στοίχιση του προγράµµατος σας δεν είναι απόλυτα σωστή. Χρησιµοποιείτε 3 κενά αντί για 1 tab. Προσπαθήστε να ρυθµίσετε το kate σωστά µε βάση τις οδηγίες του 1ου εργαστηρίου - Σωστά αποτελέσµατα Άσκηση 2 - Ισχύει για τα σχόλια ότι και στην άσκηση 1. - Εδώ η στοίχιση σας είναι σωστή. - Σωστή επιλογή µάσκας για το 1ο και 2ο byte. - Σωστά αποτελέσµατα. Συγχαρητήρια! Page 13
1932 PASS ΑΚΣΗΣΗ 1 - Σωστή στοίχιση - Η σωστή σύνταξη του τελεστή?: για πιο ευανάγνωστο κώδικα είναι η εξής: result = integer < 0? integer << 4 : ~integer + 1; Δηλαδή γράφουµε την ανάθεση "result = " µία φορά στην αρχή. Ο τελεστής?: στην συνέχεια επιστρέφει την κατάλληλη έκφραση ανάλογα µε την συνθήκη. Αυτό που γράψατε δεν είναι λάθος αλλά καλό είναι να το αποφεύγετε καθώς το συγκεκριµένο στυλ είναι επιρρεπές σε λάθη και λιγότερο κατανοητό µε µια γρήγορη µατιά. ΑΣΚΗΣΗ 2 - Σωστοί υπολογισµοί. Για να αποµονώσετε τα 2 LSB θα µπορούσατε να χρησιµοποιήσετε µία δεύτερη µάσκα για να αντικαταστήσετε 2 ολισθήσεις µε µία λογική πράξη. Η σκέψη σας πάντως και η υλοποίηση είναι σωστές. Γενικά: Καλή δουλειά - Σωστή αποστολή mail. Άσκηση 1η - Σωστή στοίχιση. - Καλά σχόλια. - Δεν διαχωρίσατε σωστά τις διαφορετικές ενότητες του προγράµµατος µε κενές γραµµές. - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Χρησιµοποιήσατε παραπάνω κενούς χαρακτήρες και ξεχάσατε την µορφοποίηση για την εκτύπωση "Number is". 1934 PASS Άσκηση 2η - Σωστή στοίχιση. - Καλά σχόλια. - Προσέξτε την ονοµασία των µεταβλητών σας, µεταβλητές µε όνοµα 1 χαρακτήρα βάζουµε σε πολύ ειδικές περιπτώσεις (π.χ. iterators σε for-loops). - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Δεν χρησιµοποιήσατε σωστή µορφοποίηση για την εκτύπωση "Given number" και χαρακτήρες tab. Επίσης θα µπορούσατε να είχατε %Χ αντί για %x ώστε οι αριθµοί να εκτυπώνονται µε κεφαλαία γράµµατα στο δεκαεξαδικό σύστηµα. - Σωστά αποµονώσατε τα bytes, όµως υπάρχει και καλύτερος/συντοµότερος τρόπος σκεφτείτε το παραπάνω και µετά κοιτάξτε τη λύση. Αποστολή email: όλα οκ 1935 FAIL - Καλά σχόλια προγράµµατος. - Σωστοί υπολογισµοί. -Το φορµάρισµα της εξόδου δεν ακολουθεί τις προδιαγραφές: δεν εκτυπώνεις tab ούτε καν αλλαγή γραµµής. - Το πρόγραµµα δεν κάνει compile. Γράφετε unsinged αντί για unsigned, έχετε %4.0d στη scanf και παρόµοιο στην printf (πώς είναι δυνατό να ορίζετε πλήθος δεκαδικών για ακεραίους?) και λανθασµένα ονόµατα µεταβλητών που προκαλούν compilation error. - Λάθος πράξεις. Δείτε τη λύση. - Δεν έχετε καθόλου σχόλια στο πρόγραµµα σας. Page 14
Γενικά: Καλή δουλειά - Σωστή αποστολή mail. 1936 PASS Άσκηση 1η - Πολύ καλή δουλειά. - Καλά ονόµατα µεταβλητών. - Σωστές πράξεις. - Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Δείτε τη λύση. Άσκηση 2η - Πολύ καλή δουλειά. - Καλά ονόµατα µεταβλητών. - Σωστά αποµονώσατε τα bytes, όµως χρησιµοποιήσατε µόνο shifts. Υπάρχει και καλύτερος/συντοµότερος τρόπος σκεφτείτε το παραπάνω και µετά κοιτάξτε τη λύση. - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Δείτε τη λύση. - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Χρησιµοποιήσατε έναν παραπάνω κενό χαρακτήρα. Διαδικαστικά: ΟΚ ' 1938 PASS - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ - Σχόλια: ΟΚ - Μορφή εξόδου: OK - Ορθότητα υπολογισµών: ΟΚ, Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ - Σχόλια: ΟΚ - Μορφή εξόδου: Με το %Χ θα µπορούσατε να εµφανίσετε τα δεκαεξαδικά κεφαλαία.. Δεν χρειάζεται να ορίσετε τον αριθµό των ψηφίων που θα εκτυπωθούν στο LS και MS και Result. - Ορθότητα υπολογισµών: ΟΚ. 1939 - Απουσία από το εργαστήριο Page 15
Διαδικαστικά: ΟΚ ' 1940 PASS - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ - Σχόλια: ΟΚ - Μορφή εξόδου: έπρεπε να αλλάζει γραµµή πριν το Number is: - Ορθότητα υπολογισµών: ΟΚ, Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. 1942 οριακό PASS - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ - Σχόλια: ΟΚ - Μορφή εξόδου: Με το %Χ θα µπορούσατε να εµφανίσετε τα δεκαεξαδικά κεφαλαία. - Ορθότητα υπολογισµών: ΟΚ. Δείτε τις λύσεις για εναλλακτικό τρόπο απόσπασης των bytes. -Αποστολή email: διαδικαστικά οκ -Καλή στοίχιση και γενική παρουσίαση κώδικα -Θα µπορούσατε να χρησιµοποιήσετε καλύτερα ονόµατα µεταβλητών και όχι number,number2,number3 -Ύπαρξη σχολίων αλλά καλό θα ήτανε να γράφατε κάποια γενικά σχόλια στην αρχή του προγράµµατος. - Δεν κάνατε σωστές πράξεις. Η εκφώνηση ζητούσε να πολλαπλασιάζεται ένας αριθµός µε το 16 αν είναι αρνητικός και όχι αν είναι θετικός που κάνατε εσείς. Αν είναι θετικός να υπολογίζει το συµπλήρωµα ως προς 2 του αριθµού αυτού. Το συµπλήρωµα ενός αριθµού υπολογίζετε complement = ~number + 1; Δε χρειαζόταν το number3 -Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Δε χρησιµοποιήσατε χαρακτήρα tab ούτε αλλαγή γραµµής µέσα στο τελευταίο printf. -Την επόµενη φορά διαβάστε ποιο προσεκτικά της σας ζητάει η άσκηση να κάνετε. -Ύπαρξη σχολίων αλλά καλό θα ήτανε να γράφατε κάποια γενικά σχόλια στην αρχή του προγράµµατος. -Το %x στην printf είναι οκ, αλλά µε το %X θα µπορούσατε να εµφανίσετε τα αποτελέσµατα µε κεφαλαία, όπως στα παραδείγµατα. -Δεν τυπώνετε τα αποτελέσµατά σας και σε δεκαδική µορφή, έπρεπε να συντάξετε τα printf κάπως έτσι printf("ls byte 1 is:\t0x%x or %d\n", ls1, ls1); Page 16
Διαδικαστικά: ΟΚ ' 1943 PASS - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ, δεν χρειάζεται να αφήνετε πάρα πολλές κενές γραµµές (ειδικά όσο µεγαλώνουν τα προγράµµατα που γράφετε). - Σχόλια: ΟΚ - Μορφή εξόδου: Θα έπρεπε να είναι %6d αντί για %7d - Ορθότητα υπολογισµών: ΟΚ - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ - Σχόλια: ΟΚ - Μορφή εξόδου: ΟΚ - Ορθότητα υπολογισµών: ΟΚ 1945 - Απουσία από το εργαστήριο 1946 PASS - Καλή δουλειά! - Σωστά και περιγραφικά ονόµατα µεταβλητών. - Δεν έχετε σχεδόν καθόλου σχόλια. Διαβάστε το φυλλάδιο για σχολιασµό στο http://infserver.inf.uth.gr/courses/ce120/lab.php#support και την επόµενη φορά γράψτε περιγραφικά σχόλια. Σας έχει γίνει ξανά παρατήρηση για τα σχόλια. Είναι πολύ σηµαντικό να καταλάβετε ότι όσο µεγαλώνουν οι ασκήσεις και τα προβλήµατα τα σχόλια είναι απαραίτητα για να µπορείτε να θυµάστε και εσείς τι έχετε κάνει αλλά και εµείς τι θέλατε να κάνετε για να είναι καλύτερη η διόρθωσή µας. - Σωστή στοίχιση. - Σωστά αποτελέσµατα - Σωστά χρησιµοποιήσατε το %6d για την µορφοποίηση εξόδου. - Μπράβο πολύ καλή δουλειά! - Σωστή στοίχιση, ονοµασία µεταβλητών και σχόλια. - Σωστές πράξεις. - Σωστά χρησιµοποιήσατε το %x για την µορφοποίηση εξόδου και πολύ σωστά χρησιµοποιήσατε µάσκα για τον υπολογισµό των Bytes. Παρατήρηση: θα µπορούσατε να είχατε χρησιµοποιήσει το %Χ (κεφαλαίο το Χ) για να εµφανίζονται κεφαλαία όπως και στη λύση. Επίσης έχετε αφήσει ένα επιπλέον κενό από αυτό που σας ζητάµε µε αποτέλεσµα η εµφάνιση της εξόδου σας να µην είναι ακριβώς ίδια Page 17
Διαδικαστικά: ΟΚ ' 1947 PASS - Ονόµατα µεταβλητών: ΟΚ, Αφήνετε µια γραµµή µεταξύ των δηλώσεων µεταβλητών και του κυρίως κώδικα. Η δήλωση των µεταβλητών δεν έχει στοιχηθεί σωστά, κατά τα άλλα οκ - Σχόλια: ΚΑΝΕΝΑ ΣΧΟΛΙΟ, παρακαλώ διαβάστε αυτό: http://infserver.inf.uth.gr/courses/ce120/lab/handouts/commenting_standard.pdf - Μορφή εξόδου: Δε χρησιµοποιήσατε %6d - Ορθότητα υπολογισµών: ΟΚ, Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ, Αφήνετε µια γραµµή µεταξύ των δηλώσεων µεταβλητών και του κυρίως κώδικα. - Σχόλια: ΚΑΝΕΝΑ ΣΧΟΛΙΟ, παρακαλώ διαβάστε αυτό: http://infserver.inf.uth.gr/courses/ce120/lab/handouts/commenting_standard.pdf - Μορφή εξόδου: Με το %Χ θα µπορούσατε να εµφανίσετε τα δεκαεξαδικά κεφαλαία. - Ορθότητα υπολογισµών: ΟΚ. - Στη συµπίεση του αρχείου να βάζετε τα αρχικά του ονόµατός σας µε κεφαλαίο 1949 PASS - Πολύ Καλή δουλειά! - Σωστά και περιγραφικά ονόµατα µεταβλητών και σχόλια. - Σωστή στοίχιση. - Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου - Σωστά αποτελέσµατα - Σωστά χρησιµοποιήσατε το %6d για την µορφοποίηση εξόδου. - Μπράβο πολύ καλή δουλειά! - Σωστή στοίχιση, ονόµατα µεταβλητών και σχόλια. - Σωστά χρησιµοποιήσατε το %x για την µορφοποίηση εξόδου και πολύ σωστά χρησιµοποιήσατε µάσκα για τον υπολογισµό των Bytes. Παρατήρηση: θα µπορούσατε να είχατε χρησιµοποιήσει το %Χ (κεφαλαίο το Χ) για να εµφανίζονται κεφαλαία όπως και στη λύση. Επίσης έχετε αφήσει ένα επιπλέον κενό από αυτό που σας ζητάµε µε αποτέλεσµα η εµφάνιση της εξόδου σας να µην είναι ακριβώς ίδια Page 18
1950 PASS - Ωραία σχόλια προγράµµατος. - Όταν αισθάνεστε την ανάγκη να εξηγήσετε σε σχόλια τι σηµαίνουν τα ονόµατα των µεταβλητών, τότε να υποπτεύεστε ότι τα ονόµατα δεν είναι αρκετά περιγραφικά. Θα µπορούσατε αντί για result1, result2 να είχατε product, complement (ή αν προτιµάτε ginomeno, sumplirwma) - Σωστά χρησιµοποιείτε κενή γραµµή για να χωρίσετε τις ενότητες του προγράµµατος. - Σωστοί υπολογισµοί - Το tab έπρεπε να είναι µετά την άνω-κάτω τελεία. Σωστό φορµάρισµα κατά τα άλλα. - Πολύ καλή δουλειά, µπράβο. - Για τις µάσκες χρησιµοποιούµε πάντα τη δεκαεξαδική αναπαράσταση (0xFFFF στη συγκεκριµένη περίπτωση) γιατί είναι εύκολο να σκεφτεί κανείς την αντίστοιχη δυαδική, ενώ από δεκαδικό σε δυαδικό συνήθως χρειάζεται κοµπιουτεράκι. Σωστό θέµα και περιεχόµενο στο e-mail Άσκηση 1 1955 FAIL - Στοίχιση σωστή, αν και λείπουν τα κενά µεταξύ του ορισµού των µεταβλητών και των εντολών του προγράµµατος σας. - Στα σχόλια προσπαθήστε να πιάνετε χώρο ανάλογο µε τον εύρος του προγράµµατός σας. Αν χρειαστεί αλλάξτε γραµµή αρκετές φορές. - Στο πολλαπλασιασµό αναφέρονταν ρητά να µη χρησιµοποιηθεί ο τελεστής του πολλαπλασιασµού, πράγµα που αγνοήσατε. - Η µορφοποίηση εξόδου έγινε πρόχειρα και δεν είναι σωστή. Άσκηση 2 - Σωστή στοίχιση - Τα σχόλια δεν περιγράφουν σωστά την είσοδο και την έξοδο του προγράµµατος. - Λάθος επιλογή µάσκας. Από το πρόγραµµα σας φαίνεται ότι δεν έχετε κατανοήσει πως αποµονώνουµε συγκεκριµένα bits από έναν αριθµό. - Λάθος αποτέλεσµα. - Ο κώδικας φαίνεται να έχει δανειστεί στοιχεία από τον κώδικα άλλης οµάδας µε τους οποίους καθόσασταν δίπλα-δίπλα. Την επόµενη φορά ανάλογη οµοιότητα θα σηµάνει αυτόµατα FAIL στο εργαστήριο. Αυτή την φορά δεν το µετρήσαµε. Page 19
1956 Οριακό PASS - Σωστή ονοµασία µεταβλητών, χρήση σχολίων και στοίχιση προγράµµατος. - Υπολογισµός λανθασµένου αποτελέσµατος όταν ο χρήστης εισάγει αρνητικό αριθµό. O compiler πετάει 2 warnings τα οποία και εξηγούν γιατί γίνεται αυτό. Συγκεκριµένα χρησιµοποιήσατε integer_positive=integer_positive>>2; ενώ σίγουρα θέλατε να βάλετε integer_positive=integer>>2; Το integer_positive στην πρώτη περίπτωση δεν είναι αρχικοποιηµένο για αυτό και βγάζει λάθος αποτέλεσµα. Επιπλέον, Έχετε δηλώσει το result ως unsigned int, ωστόσο µέσα από την δοµή?: µπορεί να πάρει είτε unsigned τιµή (από την µεταβλητή integer_positive) είτε signed τιµή (από την µεταβλητή integer_negative)!! Προσέξτε το για το µέλλον αυτό. - Χρησιµοποιήσατε πολύ σωστά το %6d για την µορφοποίηση της εξόδου, ωστόσο σας λείπουν µερικά \n, κάτι που κάνει το οπτικό αποτέλεσµα µη φιλικό προς το µάτι ' - Σωστή ονοµασία µεταβλητών, συνηθίζεται να ξεκινάµε τα ονόµατα µε πεζό χαρακτήρα. - Λάθος υπολογισµός αποτελέσµατος. Ρίξτε µια µατιά στην λύση και ξανακοιτάξτε τις διαφορές µεταξύ unsigned int και signed int. - Λάθος στην printf (για το οποίο σας προειδοποιεί και ο compiler). Πρέπει να υπάρχει µια έκφραση για κάθε ένα format specifier. Εφόσον έχετε δύο format specifiers (%x και %d) στην ίδια printf, πρέπει να έχετε και δύο εκφράσεις ή µεταβλητές. Το σωστό θα ήταν: printf("result is:\t %x %d", Result, Result); - Σωστή χρήση του %x στην µορφοποίηση της εξόδου, υπάρχει και το %X για τα βγάζει όλα κεφαλαία. - Μην αφήνεις τόσο µεγάλα κενά (πολλαπλές κενές γραµµές) ανάµεσα σε εντολές. Page 20
Γενικά: Καλή δουλειά - Σωστή αποστολή mail. 1957 PASS Άσκηση 1η - Σωστή στοίχιση. - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Τα µόνα σχόλια που έχει εξηγούν τα ονόµατα των µεταβλητών, ένδειξη του ότι τα ονόµατα δεν είναι αρκετά περιγραφικά. Δείτε τη λύση. - Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. - Σωστές οι πράξεις. - Δεν διαχωρίσατε σωστά τις διαφορετικές ενότητες του προγράµµατος µε κενές γραµµές. - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Δεν χρησιµοποιήσατε τον χαρακτήρα tab στη σωστή θέση. Άσκηση 2η - Το πρόγραµµα δεν έχει γενικά σχόλια προγράµµατος. Τα µόνα σχόλια που έχει εξηγούν τα ονόµατα των µεταβλητών, ένδειξη του ότι τα ονόµατα δεν είναι αρκετά περιγραφικά. Δείτε τη λύση. - Προσέξτε την ονοµασία των µεταβλητών σας, µεταβλητές µε όνοµα 1 χαρακτήρα βάζουµε σε πολύ ειδικές περιπτώσεις (π.χ. iterators σε for-loops). - Προσέξτε τις προδιαγραφές της εξόδου του προγράµµατος. Δεν χρησιµοποιήσατε σωστή µορφοποίηση για την εκτύπωση "Given number". Επίσης θα µπορούσατε να είχατε %Χ αντί για %x ώστε οι αριθµοί να εκτυπώνονται µε κεφαλαία γράµµατα στο δεκαεξαδικό σύστηµα. - Σωστά αποµονώσατε τα bytes, όµως χρησιµοποιήσατε µόνο shifts. Υπάρχει και καλύτερος/συντοµότερος τρόπος σκεφτείτε το παραπάνω και µετά κοιτάξτε τη λύση. Διαδικαστικά: ΟΚ ' - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ 1959 PASS - Σχόλια: Πολύ καλά γενικά σχόλια, µπράβο. Αν χρειάζεστε σχόλια για να εξηγήσετε τα ονόµατα των µεταβλητών σας, τότε να υποπτεύεστε ότι τα ονόµατα θα µπορούσαν να είναι πιο περιγραφικά. Για παράδειγµα, θα µπορούσατε να είχατε δύο µεταβλητές για τα επιµέρους αποτελέσµατα, µε ονόµατα quotient και complement και µετά να θέτετε το result στο ένα ή το άλλο. Επίσης, το σχόλιο "Διαβάζει τον ακέραιο..." είναι περιττό γιατί είναι προφανές ότι αυτό κάνει η scanf. Ίσως θα ήταν πιο χρήσιµο ένα σχόλιο στο σηµείο που κάνετε τους υπολογισµούς. - Μορφή εξόδου: ΟΚ - Ορθότητα υπολογισµών: ΟΚ, Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου. - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ - Σχόλια: ΟΚ - Μορφή εξόδου: Με το %Χ θα µπορούσατε να εµφανίσετε τα δεκαεξαδικά κεφαλαία. έπρεπε να αλλάζει γραµµή πριν το Given number: - Ορθότητα υπολογισµών: ΟΚ. Page 21
- Αποστολή email: όλα ΟΚ. 1960 PASS - Πολύ καλή δουλειά! - Σωστά και περιγραφικά ονόµατα µεταβλητών. - Σωστή στοίχιση, δεν χρειάζονται τόσα enter µεταξύ εντολών. - Σωστές οι πράξεις. - Σωστά χρησιµοποιήσατε το %6d για την µορφοποίηση εξόδου. Προτιµήστε tabs αντί για spaces. - Μπράβο πολύ καλή δουλειά! - Σωστή στοίχιση, ονοµασία µεταβλητών και σχόλια. - Σωστές πράξεις µε πετυχηµένη χρήση µάσκας. - Σωστά χρησιµοποιήσατε το %X για την µορφοποίηση εξόδου. 1961 PASS ΑΚΣΗΣΗ 1 - Σωστή στοίχιση - Καθόλου σχόλια. Να εξηγείτε τι κάνει το πρόγραµµά σας. - Στη γραµµή που υπολογίζετε το new µε τον τελεστή?:, στην µία περίπτωση χρησιµοποιείτε την ενδιάµεση µεταβλητή number που υπολογίσατε πριν ενώ στην άλλη περίπτωση χρησιµοποιείτε κατευθείαν την είσοδο του χρήστη. Εδώ οι τιµές είναι οι ίδιες για την συγκεκριµένη εκτέλεση του προγράµµατος αλλά είναι σηµεία που εύκολα παραβλέπονται εάν για παράδειγµα χρειαστεί να τροποποιήσετε αργότερα τον κώδικα σας για να κάνει κάτι άλλο. Εάν θέλατε να χρησιµοποιήσετε το number µόνο για την περίπτωση των θετικών θα έπρεπε να του δώσετε ένα καταλληλότερο όνοµα πχ positive. ΑΣΚΗΣΗ 2 - Η ίδια παρατήρηση για τα σχόλια µε πριν. Διαβάστε το σχετικό φυλλάδιο για τον σωστό σχολιασµό προγραµµάτων. - Σωστοί υπολογισµοί. Αποστολή email: όλα οκ αλλά στείλατε την άσκηση µε 8 λεπτά καθυστέρηση. Στο µέλλον τόσο µεγάλη καθυστέρηση θα είναι λόγος για fail γιατί η άσκηση θα θεωρείται εκπρόθεσµη. -Γενικά: καλή προσπάθεια 1962 PASS - Ωραία σχόλια προγράµµατος. - Σωστά χρησιµοποιείτε κενή γραµµή για να χωρίσετε τις ενότητες του προγράµµατος. - Σωστοί υπολογισµοί - Σωστό φορµάρισµα. -Δεν χρειάζονταν να αφήσετε τόσο µεγάλο κενό µέσα στην printf. -Kαλή δουλειά. -Ωραία σχόλια προγράµµατος. -Σωστοί υπολογισµοί. -Δεν χρειάζονταν να τυπώνεται το byte1 -Προσέξτε λίγο τη µορφοποίηση εξόδου. Page 22
Σωστό θέµα και επισυναπτόµενο στο e-mail. Άσκηση 1 1964 PASS - Τα σχόλια σας θα µπορούσαν να περιοριστούν σε µία αναφορά του τι κάνει το πρόγραµµα στην αρχή του αρχείου. Αναλυτικά σχόλια σε κάθε γραµµή του προγράµµατος συχνά κάνουν δυσνόητο τον κώδικά. Εξαιρούνται οι γραµµές του κώδικά που δεν είναι προφανείς. - Καλή προσπάθεια στην επιλογή µεταβλητών, αν και θα µπορούσατε να επιλέξετε περισσότερο αντιπροσωπευτικά ονόµατα (π.χ. sympliroma, ginomeno, complement, _2complement, two_complement). - Η στοίχιση του προγράµµατος σας δεν είναι απόλυτα σωστή. Χρησιµοποιείτε 3 κενά αντί για 1 tab. Προσπαθήστε να ρυθµίσετε το kate σωστά µε βάση τις οδηγίες του 1ου εργαστηρίου - Σωστά αποτελέσµατα Άσκηση 2 - Ισχύει για τα σχόλια ότι και στην άσκηση 1. - Εδώ η στοίχιση σας είναι σωστή. - Σωστή επιλογή µάσκας για το 1ο και 2ο byte. - Σωστά αποτελέσµατα. Συγχαρητήρια! - Στη συµπίεση του αρχείου να βάζετε τα αρχικά του ονόµατός σας µε κεφαλαίο 1965 PASS - Πολύ Καλή δουλειά! - Σωστά και περιγραφικά ονόµατα µεταβλητών και σχόλια. - Σωστή στοίχιση. - Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου - Σωστά αποτελέσµατα - Σωστά χρησιµοποιήσατε το %6d για την µορφοποίηση εξόδου. - Μπράβο πολύ καλή δουλειά! - Σωστή στοίχιση, ονόµατα µεταβλητών και σχόλια. - Σωστά χρησιµοποιήσατε το %x για την µορφοποίηση εξόδου και πολύ σωστά χρησιµοποιήσατε µάσκα για τον υπολογισµό των Bytes. Παρατήρηση: θα µπορούσατε να είχατε χρησιµοποιήσει το %Χ (κεφαλαίο το Χ) για να εµφανίζονται κεφαλαία όπως και στη λύση. Επίσης έχετε αφήσει ένα επιπλέον κενό από αυτό που σας ζητάµε µε αποτέλεσµα η εµφάνιση της εξόδου σας να µην είναι ακριβώς ίδια Page 23
1966 οριακό PASS lab3grades Διαδικαστικά: ΟΚ, αλλά το στείλατε 7' µετά την προθεσµία. Στο µέλλον προσέχετε να είστε εµπρόθεσµοι για να µην υπάρχει επίπτωση στο βαθµό ' - Ονόµατα µεταβλητών OK. Σχεδόν ανύπαρκτη στοίχιση και µεγάλα κενά ανάµεσα σε διαδοχικές γραµµές κώδικα. - Σχόλια: ΚΑΝΕΝΑ ΣΧΟΛΙΟ, παρακαλώ διαβάστε αυτό: http://infserver.inf.uth.gr/courses/ce120/lab/handouts/commenting_standard.pdf Είναι η δεύτερη (και τελευταία) φορά που σας το επισηµαίνουµε. - Μορφή εξόδου: έπρεπε να αλλάζει γραµµή πριν το Number is: Δε χρησιµοποιήσατε tab και δε γράψατε %6d για τους ακεραίους. - Ορθότητα υπολογισµών: ΟΚ - Ονόµατα µεταβλητών, στοίχιση και γενική παρουσίαση κώδικα: ΟΚ - Σχόλια: ΚΑΝΕΝΑ ΣΧΟΛΙΟ, παρακαλώ διαβάστε αυτό: http://infserver.inf.uth.gr/courses/ce120/lab/handouts/commenting_standard.pdf - Μορφή εξόδου: Δεν εκτυπώνονται στο δεκαδικό! - Ορθότητα υπολογισµών: ΟΚ. Δείτε τις λύσεις για εναλλακτικό τρόπο απόσπασης των bytes. Σωστό θέµα και επισυναπτόµενο στο e-mail. Άσκηση 1 1968 PASS - Τα σχόλια σας θα µπορούσαν να περιοριστούν σε µία αναφορά του τι κάνει το πρόγραµµα στην αρχή του αρχείου. Αναλυτικά σχόλια σε κάθε γραµµή του προγράµµατος συχνά κάνουν δυσνόητο τον κώδικά. Εξαιρούνται οι γραµµές του κώδικά που δεν είναι προφανείς. - Σωστή επιλογή ονοµάτων µεταβλητών. - Σωστή στοίχιση - Η µορφοποίηση εξόδου δεν περιέχει τον χαρακτήρα ":", όπως ζητήθηκε. - Σωστά αποτελέσµατα. Άσκηση 2 - Ισχύει για τα σχόλια ότι και στην άσκηση 1. - Σωστή επιλογή ονοµάτων µεταβλητών. - Σωστή στοίχιση - Σωστά αποτελέσµατα. - Συγχαρητήρια! Page 24
1972 PASS - Σωστή αποστολή email. - Σωστή στοίχιση, στα ονόµατα µεταβλητών ίσως ήταν καλό να µην χρησιµοποιείτε τόσο γενικά ονόµατα όπως είναι το number και number1. - Σωστά σχόλια, καλό θα ήταν να βάζετε και ένα σχόλιο πάνω από το πρόγραµµα το οποίο περιγράφει τι κάνει το πρόγραµµα και έχει και τα ονόµατα των authors του προγράµµατος. - Σωστό format του output. - Σωστά αποτελέσµατα υπολογισµών - Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου - Σωστή στοίχιση, στα ονόµατα µεταβλητών χρησιµοποιείτε το όνοµα µεταβλητής "asimanto". To LSB (Least Significant Bit) δεν σηµαίνει ότι αυτά τα bits είναι ασήµαντα, απλώς ονοµάζονται έτσι διότι µια αλλαγή ενός bit σε αυτή την οµάδα bits θα επιφέρει µικρότερη αλλαγή στο µέγεθος του αριθµού, απ' ότι µια αλλαγή bit στα περισσότερο σηµαντικά bits. - Δεν έχετε σχόλια παρά µόνο την επεξήγηση για τις µεταβλητές ασήµαντο και σηµαντικό. - Να προσέχετε λίγο παραπάνω το format του output. Είναι σωστό αλλά σας έχουν ξεφύγει µια άνωκάτω τελεία και ένα κενό. - Σωστά αποτελέσµατα υπολογισµών. - Στη συµπίεση του αρχείου να βάζετε τα αρχικά του ονόµατός σας µε κεφαλαίο 1973 PASS - Πολύ Καλή δουλειά! - Σωστά και περιγραφικά ονόµατα µεταβλητών και σχόλια. - Σωστή στοίχιση. - Για ένα τόσο µικρό πρόγραµµα δεν πειράζει που σύµπτυξες τα βήµατα 3 και 4, αλλά στο µέλλον προσπάθησε να ακολουθείς µε µεγαλύτερη ακρίβεια τις οδηγίες. Για παράδειγµα, µπορεί αργότερα να θέλαµε να προσθέσουµε επιπλέον λειτουργικότητα στο πρόγραµµα και να χρησιµοποιούσαµε και τις δύο τιµές, ανεξαρτήτως προσήµου - Σωστά αποτελέσµατα - Σωστά χρησιµοποιήσατε το %6d για την µορφοποίηση εξόδου. - Μπράβο πολύ καλή δουλειά! 1975 - Απουσία από το εργαστήριο Page 25
- Στη συµπίεση του αρχείου να βάζετε τα αρχικά του ονόµατός σας µε κεφαλαίο 1977 PASS 1979 PASS - Πολύ Καλή δουλειά! - Σωστά και περιγραφικά ονόµατα µεταβλητών. - Δεν έχετε σχεδόν καθόλου σχόλια. Διαβάστε το φυλλάδιο για σχολιασµό στο http://infserver.inf.uth.gr/courses/ce120/lab.php#support και την επόµενη φορά γράψτε περιγραφικά σχόλια. Θα µπορούσατε να βάλετε κάποια εκεί που κάνετε τις πράξεις για παράδειγµα - Σωστή στοίχιση. - Σωστά αποτελέσµατα - Σωστά χρησιµοποιήσατε το %6d για την µορφοποίηση εξόδου. - Μπράβο πολύ καλή δουλειά! - Σωστή στοίχιση, ονοµασία µεταβλητών και σχόλια. - Σωστές πράξεις. - Σωστά χρησιµοποιήσατε το %x για την µορφοποίηση εξόδου και πολύ σωστά χρησιµοποιήσατε µάσκα για τον υπολογισµό των Bytes. -Να προσέχετε το subject του email να είναι ακριβώς όπως το ζητάµε. (Έχετε αφήσει κενό ανάµεσα στο lab και το 3). Επίσης να στέλνετε το email πριν το τέλος του εργαστηρίου. Το δικό σας ήρθε 8 λεπτά µετά το τέλος του εργαστηρίου. - Σχεδόν ανύπαρκτη στοίχιση, στα ονόµατα µεταβλητών ίσως ήταν καλό να µην χρησιµοποιείτε τόσο γενικά ονόµατα όπως είναι το number,number1,number2. - Το πρόγραµµα δεν έχει καθόλου σχολιασµό!!!. - Σωστό format του output. - Σωστά αποτελέσµατα υπολογισµών - Λάθος στοίχιση, οκ ονόµατα µεταβλητών. - Δεν έχετε βάλει καθόλου σχόλια!!! - Το output είναι σωστό,αλλά δεν είναι ακριβώς αυτό το οποίο σας ζητήθηκε. - Σωστά αποτελέσµατα υπολογισµών. Σωστό θέµα και περιεχόµενο στο e-mail Άσκηση 1 1980 FAIL - Στοίχιση σωστή, αν και λείπουν τα κενά µεταξύ του ορισµού των µεταβλητών και των εντολών του προγράµµατος σας. - Στα σχόλια προσπαθήστε να πιάνετε χώρο ανάλογο µε τον εύρος του προγράµµατός σας. Αν χρειαστεί αλλάξτε γραµµή αρκετές φορές. - Στο πολλαπλασιασµό αναφέρονταν ρητά να µη χρησιµοποιηθεί ο τελεστής του πολλαπλασιασµού, πράγµα που αγνοήσατε. - Η µορφοποίηση εξόδου έγινε πρόχειρα και δεν είναι σωστή. Άσκηση 2 - Σωστή στοίχιση - Τα σχόλια δεν περιγράφουν σωστά την είσοδο και την έξοδο του προγράµµατος. - Λάθος επιλογή µάσκας. Από το πρόγραµµα σας φαίνεται ότι δεν έχετε κατανοήσει πως αποµονώνουµε συγκεκριµένα bits από έναν αριθµό. - Λάθος αποτέλεσµα. - Ο κώδικας φαίνεται να έχει δανειστεί στοιχεία από τον κώδικα άλλης οµάδας µε τους οποίους καθόσασταν δίπλα-δίπλα. Την επόµενη φορά ανάλογη οµοιότητα θα σηµάνει αυτόµατα FAIL στο εργαστήριο. Αυτή την φορά δεν το µετρήσαµε. Page 26