User Tools

Site Tools


qna:lesson:projects:how-to-use-smproject

Η χρήση του smProject για τις εργασίες

Τι είναι το smProject

Το smProject είναι ένα CLion project, το οποίο περιλαμβάνει στοιχεία που μας βοηθούν στη συγγραφή και τον έλεγχο των εργασιών μας. Επίσης μας παρέχει συναρτήσεις που μας βοηθούν να αντιμετωπίσουμε έννοιες τις οποίες δεν έχουμε αποκτήσει στο συγκεκριμένο σημείο της ύλης, τις απαραίτητες γνώσεις.

Από την πλευρά του προγραμματιστή η διαφορά είναι ότι αντί της main συνάρτησης, χρησιμοποιείται η smMain για εσωτερικούς τεχνικούς λόγους του project. Ο προγραμματιστής πρέπει να θεωρεί απλά ότι αυτή είναι η main συνάρτησή του.

Ό,τι αφορά ή προέρχεται από αυτή τη βιβλιοθήκη έχει το πρόθεμα sm από τα αρχικά της Σχολής Μηχανολόγων.

Κάθε εργασία έχει το δικό της smPorject, το οποίο περιλαμβάνει τους ελέγχους που αφορούν τη συγκεκριμένη εργασία. Το smProject δίνεται ως συμπιεσμένο αρχείο με κατάληξη .zip.

Πως ανοίγει το smProject στο CLion

Ακολουθήστε τα παρακάτω βήματα.

  1. Αποσυμπιέστε το αρχείο σε κάποιον φάκελο (προσέξτε να μην υπάρχουν Ελληνικοί χαρακτήρες στο όνομά του)
  2. Επιλέξτε στο CLion στο μενού: File > Open…
  3. Στο παράθυρο που ανοίγει διαλέξτε τον φάκελο του smProject που μόλις αποσυμπιέσατε (οι φάκελοι που είναι CLion projects έχουν ένα μικρό μαύρο σημαδάκι στο εικονίδιο - δείτε και το sample1 στην παρακάτω εικόνα). Προσοχή! Για διασταύρωση, ο φάκελος που θα πρέπει να ανοίξετε είναι αυτός που περιέχει το αρχείο main.c
  4. Τέλος πατήστε OK

Πως χρησιμοποιείται το smProject

Το smProject λειτουργεί είτε ως απλό project, είτε σε λειτουργία δοκιμών. Αυτό καθορίζεται από τη γραμμή εργαλείων που γίνεται και η εκτέλεση του κώδικα. Όπως φαίνεται και στην παρακάτω εικόνα, κάθε φορά που θέλουμε να αλλάξουμε τον τύπο λειτουργίας ανάμεσα στην κανονική εκτέλεση του κώδικα και στην εκτέλεση των δοκιμών, επιλέγουμε:

  1. Τον τύπο λειτουργίας: smProject για κανονική εκτέλεση ή Run Tests για εκτέλεση των δοκιμών.
  2. Κατόπιν πατάμε το κουμπί της εκτέλεσης κατά τα γνωστά.

Η λειτουργία της κανονικής εκτέλεσης δεν διαφέρει σε τίποτα από ένα απλό CLion project (πέρα από το ότι έχετε και στη διάθεσή σας κάποιες πρόσθετες συναρτήσεις).

Εάν το κουμπί play (#2 στην παραπάνω εικόνα) δεν είναι είναι ενεργό (είναι γκριζαρισμένο) τότε θα πρέπει να κάνετε δεξί κλικ στο όνομα του Project (#1 στην παρακάτω εικόνα) και κατόπιν κλικ στο Reload CMake Project (#2).

Πως γράφω τον κώδικά μου

Καλό είναι - σας βοηθά σε σχέση με τον τρόπο που κάνει τους ελέγχους το σύστημα υποβολής εργασιών - να βάζετε τον κώδικα σας ανάμεσα στο αρχικό και τελικό σχόλιο του smProject και όχι έξω από αυτά, όπως φαίνεται και παρακάτω:

// smProject - S T A R T   O F   C O D E
 
... εδώ είναι καλά να βάλετε τον κώδικά σας ...
 
// smProject - E N D   O F   C O D E
 
... ενώ εδώ καλύτερα να το αποφύγετε - δεν απαγορεύεται πάντως,
    αν και το σύστημα υποβολής εργασιών διαμαρτύρεται

Σημειώστε ότι για το 1ο μάθημα ο κώδικας που θα γράψετε στο smProject θα πρέπει να τοποθετηθεί αποκλειστικά στα συσγκεκριμένα σημεία που υποδεικνύονται. Π.χ.

// EROTIMA 1-5 : PARASTASH x3
SM_TEST_RET_DBL(7,
    // ... ΕΔΩ γράφετε τον κώδικά σας για το 5ο ερώτημα
    //     της 1ης άσκησης όσον αφορά την παράσταση x3
)

Εκτέλεση δοκιμών

Όταν εκτελείτε τις δοκιμές στο κάτω μέρος, το αποτέλεσμα της εκτέλεσης, όταν υπάρχουν προβλήματα με τον κώδικα εμφανίζει μηνύματα του τύπου:

TESTING MODE!

Test RANGE_TESTS :
  v5in1_8 FAILED : isInRange(5,1,8) returns unexpected result!
https://qna.c-programming.allos.gr/doku.php?id=qna:hw:lsnAA#test_X-Y-Z-L
Grid visualization:
https://qna.c-programming.allos.gr/smGrid.html#20:///wQAAEAABAAAQAAEAABAAAQAAEAABCAARhAEAA:-1:-1:///wQAAEAABAAAQAAEAABAA
AQAAEAABAAAQBAEAA

RANGE_TESTS FAILED!
Test BOUNDARY_TESTS :
  v5in1_5 FAILED : isInRange(5,1,5) returns unexpected result!
https://qna.c-programming.allos.gr/doku.php?id=qna:hw:lsnAA#test_X-Y-Z-L
  v5in1_5 FAILED : isInRange(1,1,5) returns unexpected result!
https://qna.c-programming.allos.gr/doku.php?id=qna:hw:lsnAA#test_X-Y-Z-L
BOUNDARY_TESTS FAILED!
Process finished with exit code 3

όπου βλέπουμε ότι η isInRange(5,1,8) δεν επιστρέφει το επιθυμητό αποτέλεσμα και ομοίως οι δύο ακόλουθες κλήσεις.

Εάν στο μήνυμα εμφανίζεται και σύνδεσμος της μορφής: https://qna.c-programming.allos.gr/doku.php?id=qna:hw:lsnAA#test_X-Y-Z-L τότε σε αυτόν θα υπάρχουν (κάπως) πιο αναλυτικές πληροφορίες για το σφάλμα.

Εάν η άσκηση αφορά τη χρήση πλέγματος πιθανώς θα εμφανίζεται και ένας σύνδεσμος της μορφής https://qna.c-programming.allos.gr/smGrid.html#20:///wQAAEAABAAAQAAEAABAAAQAAEAABCAARhAEAA:-1:-1:///wQAAEAABAAAQAAEAABAAAQAAEAABAAAQBAEAA που μπορεί να είναι και σε περισσότερες από μία γραμμές, οπότε θα χρειαστεί να τον αντιγράψετε ολόκληρο και να τον κάνετε copy/paste στον browser και όχι απλά να κάνετε κλικ. Αυτό ο σύνδεσμος σας οδηγεί σε μία σελίδα η οποία σας παρουσιάζει το πλέγμα όπως είναι και κάποιες φορές εμφανίζει και το πως θα έπρεπε να είναι. Επίσης εμφανίζει με κόκκινο πλαίσιο και το σημείο ενδιαφέροντος αν υπάρχει (πχ εάν κάτι υπολογίζεται ως προς κάποιο κελί).

Εάν όλα είναι καλά εμφανίζεται μήνυμα όπως το ακόλουθο:

TESTING MODE!


Test RANGE_TESTS : Ok
Test BOUNDARY_TESTS : Ok

Όπου δηλαδή όλες οι ομάδες δοκιμών (εδώ RANGE_TESTS & BOUNDARY TESTS) δίνουν δίπλα το μήνυμα Ok.

qna/lesson/projects/how-to-use-smproject.txt · Last modified: 2022/04/04 16:22 by xallos