Εισαγωγή στο περιβάλλον Code::Blocks Στο παρόν εγχειρίδιο παρουσιάζεται η διαδικασία ανάπτυξης, μεταγλώττισης και εκτέλεσης ενός προγράμματος C στο περιβάλλον του Code::Blocks. Η διαδικασία αυτή παρουσιάζεται μέσα από ένα παράδειγμα πρόσθεσης δύο αριθμών. Έστω λοιπόν ότι σας έχει ζητηθεί να αναπτύξετε ένα πρόγραμμα C που διαβάζει δύο ακέραιους αριθμούς από το χρήστη, τους προσθέτει και εμφανίζει το άθροισμά τους. Τα βήματα ανάπτυξης που πρέπει να ακολουθήσετε περιγράφονται παρακάτω. Βήμα 1 ο : Εκκίνηση του περιβάλλοντος Εικόνα 1: Το βασικό παράθυρο του περιβάλλοντος Code::Blocks Βήμα 2 ο : Δημιουργία ενός κενού αρχείου για τη συγγραφή του κώδικα Η απλούστερη μορφή εφαρμογής η οποία μπορεί να αναπτυχθεί στο περιβάλλον είναι εκείνη στην οποία ολόκληρος ο πηγαίος κώδικας αποθηκεύεται σε ένα αρχείο. Για να δημιουργήσετε ένα νέο αρχείο κώδικα C στο περιβάλλον επιλέξτε από το μενού File New Empty file, όπως φαίνεται στην Εικόνα 2. Εικόνα 2: Επιλογή δημιουργίας νέου αρχείου πηγαίου κώδικα Εισαγωγή στο Περιβάλλον Code::Blocks - σελίδα 1 από 6
Με την ενέργεια αυτή ενεργοποιείται ο συντάκτης (editor) προγράμματος (Εικόνα 3) που έχει ενσωματωθεί στο ολοκληρωμένο προγραμματιστικό περιβάλλον και μπορούμε να ξεκινήσουμε να γράφουμε τον κώδικα του προγράμματός μας. Παρατηρήστε ότι εφόσον δεν έχουμε σώσει το αρχείο σε κάποιο μέσο αποθήκευσης, το όνομα του αρχείου που εμφανίζεται αρχικά είναι Untitled1. Εικόνα 3: Ο συντάκτης προγράμματος Βήμα 3 ο : Ανάπτυξη του προγράμματος Στον χώρο συγγραφής του κώδικα του προγράμματος πληκτρολογούμε τον ακόλουθο κώδικα, που αντιστοιχεί σε ένα απλό πρόγραμμα που προσθέτει δύο αριθμούς τους οποίους εισάγει ο χρήστης και εμφανίζει το άθροισμά τους (Εικόνα 4). Εικόνα 4: Επιλογή δημιουργίας νέου αρχείου πηγαίου κώδικα Βήμα 4 ο : Αποθήκευση του προγράμματος Παρατηρείστε ότι το όνομα του αρχείου που φαίνεται στη γραμμή τίτλου του βασικού παραθύρου του περιβάλλοντος και στην καρτέλα με τον πηγαίο κώδικα είναι *Untitled1. Το σύμβολο * που εμφανίζεται πριν από το όνομα Untitled1 σηματοδοτεί ότι όποιες αλλαγές έχουν γίνει στον κώδικα δεν έχουν αποθηκευτεί ακόμη. Αυτό πολύ απλά σημαίνει ότι ο πηγαίος κώδικας που έχετε πληκτρολογήσει δεν έχει αποθηκευτεί σε κάποιο αρχείο στη μόνιμη περιφερειακή μνήμη (Σκληρός Δίσκος, USB stick, κ.λπ.) αλλά βρίσκεται απλά στην μνήμη RAM του Η/Υ. Εισαγωγή στο Περιβάλλον Code::Blocks - σελίδα 2 από 6
Για να μεταφερθεί/αποθηκευτεί το πρόγραμμα στην περιφερειακή μνήμη θα πρέπει να δηλώσετε σε ποιο φάκελο και με ποιο όνομα αρχείου θα αποθηκευτεί. Για να γίνει αυτό επιλέγουμε από το μενού File Save File (Εικόνα 5) ή από τη γραμμή εργαλείων πατάμε το κουμπί με το εικονίδιο της δισκέτας. Εικόνα 5: Αποθήκευση αρχείου πηγαίου κώδικα Στο πλαίσιο διαλόγου που εμφανίζεται επιλέγετε το φάκελο στον οποίο θα αποθηκευτεί ο κώδικας του αρχείου και πληκτρολογείτε το όνομά του (Εικόνα 6). Αν δεν δηλώσετε κάποια συγκεκριμένη επέκταση μετά το όνομα, το αρχείο θα αποκτήσει εξ ορισμού την επέκταση.c Αξίζει να δίνετε ιδιαίτερη προσοχή στις σωστές επεκτάσεις των ονομάτων αρχείων και να φροντίζετε ώστε τα αρχεία που αποθηκεύετε να έχουν πάντα επέκταση.c για να αποφευχθούν προβλήματα στη μεταγλώττιση. Αφού επιλέξετε το φάκελο και το όνομα του αρχείου πατάτε το κουμπί Αποθήκευση Save. Εικόνα 6: Επιλογή αποθηκευτικού μέσου, φακέλου και ονόματος για το αρχείο πηγαίου κώδικα Το όνομα του αρχείου εμφανίζεται πλέον στη γραμμή τίτλου του βασικού παραθύρου του περιβάλλοντος και στην καρτέλα με τον πηγαίο κώδικα του προγράμματος (Εικόνα 7). Μετά την πρώτη αποθήκευση ενός αρχείου με επέκταση.c παρατηρούμε ότι ο κώδικας αναπαριστάται με διαφορετικό χρώμα σχολίων, εντολών συμπερίληψης βιβλιοθηκών, εντολών της γλώσσας, καλούμενων συναρτήσεων κ.λπ. Συγκρίνετε τον πηγαίο κώδικα της Εικόνας 4 με εκείνο της Εικόνας 7 για να δείτε τη διαφορά. Για να απολαμβάνετε αυτήν την οπτική εξυπηρέτηση από την Εικόνα 7: Παρουσίαση των διαφόρων συστατικών του κώδικα με διαφορετικό χρώμα πρώτη στιγμή συγγραφής του κώδικά σας, φροντίστε να αποθηκεύετε το αρχείο αμέσως μόλις ξεκινάτε να το κατασκευάσετε. Εισαγωγή στο Περιβάλλον Code::Blocks - σελίδα 3 από 6
Όταν γίνεται οποιαδήποτε αλλαγή στον πηγαίο κώδικα, στα αριστερά του ονόματος του αρχείου εμφανίζεται ένας αστερίσκος (*) που υποδηλώνει ότι το εν λόγω αρχείο έχει τροποποιηθεί και διαφέρει από την μορφή την οποία είχε από την τελευταία αποθήκευση. Αν θέλετε να ανοίξετε ένα αρχείο κώδικα C που έχει αποθηκευτεί στο δίσκο, απλά επιλέγετε από το μενού File Open και μέσω ενός παραθύρου που έχει ακριβώς την ίδια μορφή με εκείνο της Εικόνας 6, επιλέγετε το αρχείο που επιθυμείτε. Βήμα 5 ο : Μεταγλώττιση του προγράμματος Σε αδρές γραμμές, μεταγλώττιση είναι η διαδικασία με την οποία μετατρέπουμε της εντολές της γλώσσας στην οποία αναπτύσσουμε τον κώδικά μας (στην περίπτωση μας η C) σε μια μορφή εκτελέσιμη από τον Η/Υ. Στο περιβάλλον των Windows τα αρχεία που είναι άμεσα εκτελέσιμα έχουν την επέκταση.exe. Η διαδικασία μεταγλώττισης είναι ιδιαίτερα απλή και ξεκινά επιλέγοντας από το μενού Build Compile current file. Εναλλακτικά, μπορούμε να επιλέξουμε από το μενού Build Build (ή από το αντίστοιχο εικονίδιο της γραμμής εργαλείων), αν και η επιλογή αυτή προορίζεται για τη μεταγλώττιση project, δηλαδή προγραμμάτων που αποτελούνται από περισσότερα από ένα αρχεία πηγαίου κώδικα. Εικόνα 8: Επιτυχής μεταγλώττιση πηγαίου κώδικα Στην καρτέλα Build log στο κάτω μέρος του παραθύρου του προγραμματιστικού περιβάλλοντος παρουσιάζονται τα αποτελέσματα της μεταγλώττισης. Στην περίπτωση επιτυχούς μεταγλώττισης, όπως φαίνεται στην Εικόνα 8, εμφανίζονται τα εξής: mingw32-gcc.exe -IC:\Progs\libraries\roberts -c C:\Programming\add.c -o C:\Programming\add.o mingw32-g++.exe -o C:\Programming\add.exe C:\Programming\add.o C:\Progs\libraries\roberts\roberts.lib Process terminated with status 0 (0 minute(s), 4 second(s)) 0 error(s), 0 warning(s) (0 minute(s), 4 second(s)) Εισαγωγή στο Περιβάλλον Code::Blocks - σελίδα 4 από 6
Από την πρώτη γραμμή πληροφορούμαστε ότι μεταγλωττίστηκε το αρχείο add.c (πηγαίος κώδικας) που είναι αποθηκευμένο στο φάκελο C:\Programming και δημιουργήθηκε το αντικείμενο αρχείο add.ο. Στη δεύτερη γραμμή πληροφορούμαστε ότι, μετά από τη σύνδεση με τις απαραίτητες βιβλιοθήκες, δημιουργήθηκε το εκτελέσιμο αρχείο του προγράμματος με όνομα add.exe στο φάκελο C:\Programming. Στην τρίτη γραμμή ενημερωνόμαστε ότι η διαδικασία ολοκληρώθηκε με κατάσταση μηδέν (δηλαδή χωρίς προβλήματα) και σε παρένθεση εμφανίζεται ο χρόνος ολοκλήρωσης της διαδικασίας. Στην τέταρτη γραμμή διαπιστώνουμε ότι εντοπίστηκαν 0 λάθη και 0 προειδοποιήσεις Αν το αρχείο πηγαίου κώδικα μεταγλωττιστεί επιτυχώς, τότε στο φάκελο που το έχουμε αποθηκεύσει δημιουργούνται δύο επιπλέον αρχεία με το ίδιο όνομα και διαφορετική επέκταση (Εικόνα 9): Το αρχείο με επέκταση.ο είναι το αντικείμενο αρχείο, που περιλαμβάνει τον κώδικα που γράψαμε στη γλώσσα προγραμματισμού C μεταφρασμένο σε γλώσσα μηχανής Το αρχείο με επέκταση.exe είναι το εκτελέσιμο αρχείο που προκύπτει μετά από τη σύνδεση του αρχείου αντικείμενου κώδικα με τις απαραίτητες βιβλιοθήκες. Εικόνα 9: Δημιουργία αντικειμενικού και εκτελέσιμου αρχείου Στην περίπτωση ανεπιτυχούς μεταγλώττισης, αν δηλαδή εντοπιστούν συντακτικά λάθη στο πρόγραμμα εμφανίζονται τα σχετικά μηνύματα λάθους στην καρτέλα Build messages (Εικόνα 10): Εικόνα 10: Ανεπιτυχής μεταγλώττιση πηγαίου κώδικα Εισαγωγή στο Περιβάλλον Code::Blocks - σελίδα 5 από 6
Για κάθε λάθος που εντοπίζεται εμφανίζεται η γραμμή του πηγαίου κώδικα και το μήνυμα λάθους Σε αρκετές περιπτώσεις, τα μηνύματα λάθους προσδιορίζουν την πραγματική αιτία του λάθους. Για παράδειγμα, το πρώτο λάθος που εντοπίζεται στη γραμμή 17 αναφέρει ότι αναμενόταν το ελληνικό ερωτηματικό πριν από το αναγνωριστικό total. Όντως, στην αμέσως προηγούμενη εντολή στη γραμμή 16 έχουμε ξεχάσει το ελληνικό ερωτηματικό. Σε άλλες, περιπτώσεις, τα μηνύματα λάθους μπορεί να μην εντοπίζουν με τόσο σαφή τρόπο την αιτία του λάθους. Για παράδειγμα, το λάθος που εντοπίζεται στη γραμμή 22 αναφέρει ότι αναμενόταν το ελληνικό ερωτηματικό πριν από το αναγνωριστικό n2. Στην πραγματικότητα, αυτό που λείπει στο συγκεκριμένο παράδειγμα πριν από το αναγνωριστικό n2 δεν είναι το ελληνικό ερωτηματικό, αλλά ο τελεστής της πρόσθεσης. Ωστόσο, επειδή ο μεταγλωττιστής δεν είναι αρκετά έξυπνος για να καταλαβαίνει τι θέλουμε να πετύχουμε στο πρόγραμμά μας, ελέγχει τον κώδικά μας με ένα σύνολο αυστηρών συντακτικών κανόνων. Στη συγκεκριμένη, περίπτωση μιας και δεν μπορούμε να έχουμε στη σειρά δύο αναγνωριστικά, θεωρεί απλά ότι ξεχάσαμε μετά την total = n1 να δηλώσουμε το τέλος της εντολής με το ελληνικό ερωτηματικό. Σε κάθε περίπτωση, διαβάζουμε προσεκτικά τα μηνύματα λάθους και προσπαθούμε να εντοπίσουμε την αιτία του λάθους. Σε καμία περίπτωση δεν κάνουμε αλλαγές σε τυχαία σημεία του πηγαίου κώδικα. Στην περίπτωση ανεπιτυχούς μεταγλώττισης, όπως φαίνεται στην καρτέλα Build log η διαδικασία της μεταγλώττισης τερματίζεται (Εικόνα 11), χωρίς να δημιουργηθούν το αντικείμενο και το εκτελέσιμο αρχείο. mingw32-gcc.exe -IC:\Progs\libraries\roberts -c C:\Programming\add.c -o C:\Programming\add.o Εικόνα 11: Ανεπιτυχής μεταγλώττιση πηγαίου κώδικα Βήμα 6 ο : Εκτέλεση του προγράμματος Ένα πρόγραμμα που έχει μεταγλωττιστεί επιτυχώς μπορεί να εκτελεστεί με τους ακόλουθους τρόπους: Να καλέσετε το πρόγραμμα για εκτέλεση μέσα από το περιβάλλον Code::Blocks πατώντας το κουμπί της εκτέλεσης από τη γραμμή εργαλείων ή επιλέγοντας Build Run (Εικόνα 9) Να κάνετε διπλό κλικ πάνω στο εκτελέσιμο αρχείο.exe Σε κάθε περίπτωση θα εμφανιστεί ένα παράθυρο κονσόλας (console window) της ακόλουθης μορφής: Εικόνα 12: Εκτέλεση προγράμματος Προσοχή! Αν έχετε κάνει αλλαγές στον πηγαίο κώδικα και δεν μεταγλωττίσετε εκ νέου το πρόγραμμά σας, τότε θα εκτελεστεί η τελευταία εκτελέσιμη έκδοση του προγράμματός σας. Γενικά, πάντως, αυτό που θα μπορείτε να κάνετε ως άμεση διαδικασία αποθήκευσης, μεταγλώττισης και εκτέλεσης είναι να πιέζετε το πλήκτρο F9 (Build and run) και να απλοποιείτε πλήρως την προαναφερθείσα διαδικασία. Εισαγωγή στο Περιβάλλον Code::Blocks - σελίδα 6 από 6