Μετάβαση στο περιεχόμενο

Τμήμα:C/Μάθημα 1ο

Από Βικιεπιστήμιο
(Ανακατεύθυνση από C/Μάθημα 1ο)
Προηγούμενη
Ενότητα
Περιεχόμενα Επόμενη
Ενότητα


Ας περάσουμε στην πράξη. Το πιο απλό πρόγραμμα, και το εκ των πραγμάτων πρώτο παράδειγμα για κάθε γλώσσα προγραμματισμού είναι το περιβόητο hello world πρόγραμμα. Αυτό είναι μια εφαρμογή που ξεκινάει, δείχνει το μήνυμα 'Hello world', και τερματίζει.

Ο κώδικας εμφανίζεται παρακάτω με τις γραμμές του αριθμημένες. Την αρίθμηση θα την παραλείψετε όταν αντιγράψετε τον κώδικα.

   1. // Hello World C Program
   2. #include <stdio.h>
   3.
   4. int main()
   5. {
   6.    printf("Hello World\n");
   7.    return 0;
   8. }

Ας ρίξουμε μια ματιά στον κώδικα:

Γραμμή 1η. Είναι ένα σχόλιο που περιγράφει σύντομα τι κάνει το πρόγραμμα. Τα σχόλια αγνοούνται από τον μεταγλωττιστή και δεν επηρεάζουν καθόλου την εκτέλεση, αλλά τοποθετούνται για να είναι πιο εύκολη η κατανόηση του προγράμματος.
Γραμμή 2η. Γίνεται εισαγωγή του αρχείου επικεφαλίδας (header file) stdio.h (Standard Input/Output Header) το οποίο περιλαμβάνει τις βασικές συναρτήσεις εισόδου και εξόδου. Στην δική μας περίπτωση, το χρειαζόμαστε για να μπορέσουμε να καλέσουμε την συνάρτηση printf().
Γραμμή 4η. Είναι το σημείο έναρξης κάθε προγράμματος. Η συνάρτηση main() εκτελείται πάντα πρώτη και γι' αυτό συχνά ονομάζεται Κεντρική συνάρτηση. Η main() ως συνάρτηση πρέπει να επιστρέφει ένα αποτέλεσμα, και επειδή βάλαμε int πριν το όνομά της, το αποτέλεσμα πρέπει να είναι ένας ακέραιος αριθμός.
Γραμμή 5η. Αρχή μιας ομάδας εντολών μέχρι την γραμμή 8. Οι δύο αγκύλες περιέχουν όλες τις εντολές της main() ομαδοποιημένες.
Γραμμή 6η. Καλείται η συνάρτηση printf(), με παράμετρο(argument) μια σειρά χαρακτήρων. Οι χαρακτήρες στην C τοποθετούνται ανάμεσα σε διπλά εισαγωγικά για να αναγνωρίζονται από τον μεταγλωττιστή. Το \n είναι ένας ειδικός χαρακτήρας που προκαλεί την αλλαγή γραμμής.
Γραμμή 7η. Τερματίζεται η main(), και επιστρέφεται το 0 (μηδέν) που είναι ακέραιος αριθμός (int).


Σημειώσεις

[επεξεργασία]
  • Ο παραπάνω κώδικας ονομάζεται πηγαίος (source), ενώ το αρχείο που τον περιέχει ονομάζεται πηγαίο αρχείο.
  • Προσέξτε πως κάθε εντολή έχει ένα ελληνικό ερωτηματικό στο τέλος. Αυτό το ερωτηματικό τερματίζει την εντολή που γράφεται πριν από αυτό, και τοποθετείται για να αντιληφθεί ο μεταγλωττιστής το τέλος της. Δεν θα είναι λίγες οι φορές που θα ξεχάσετε να το τοποθετήσετε στο τέλος των εντολών με αποτέλεσμα να μην τρέχει το πρόγραμμά σας.
  • Η C κάνει διάκριση μικρών-κεφαλαίων, είναι δηλαδή μια Case Sensitive γλώσσα, και καλό θα ήταν να συνηθίσετε να γράφετε πάντα με μικρά. Γράφοντας κεφαλαία ενδέχεται να παρουσιαστεί λάθος.
  • Η stdio.h είναι στην ουσία μια βιβλιοθήκη που περιέχει ορισμούς(declarations) και υλοποιήσεις(implementations) συναρτήσεων. Περιέχονται σ' αυτήν συναρτήσεις όπως η printf(), η scanf() και πολλές άλλες. Η C προσφέρει πολλές διαφορετικές βιβλιοθήκες που περιέχουν έτοιμες συναρτήσεις πολλών λειτουργιών. Φροντίζουμε όμως σε κάθε πρόγραμμα να συμπεριλαμβάνουμε μόνο τις απαραίτητες βιβλιοθήκες.
  • Αν τροποποιήσετε τον πηγαίο κώδικα τότε πριν κάνετε μεταγλώττιση πρέπει να κάνετε ξανά Αποθήκευση.
  • Τέλος, τα { και } αποκαλούνται συχνά αγκιστράκια και τα " αποκαλούνται αυτάκια.

Μεταγλώττιση και Εκτέλεση

[επεξεργασία]

Στα πλαίσια αυτού του μαθήματος θεωρούμε δεδομένη την εξοικείωσή σας με το λειτουργικό σύστημα που χρησιμοποιήτε. Ως εκ τούτου δεν θα αναφερθούμε λεπτομερώς στην πλοήγηση μεταξύ καταλόγων και την δημιουργία ή επεξεργασία αρχείων. Θα καλύψουμε πλήρως μόνο τον τρόπο μεταγλώττισης ενός προγράμματος C και την εκτέλεσή του.

Αρχικά θα πρέπει να δημιουργήσετε ένα αρχείο με κατάληξη .c, για παράδειγμα hello.c. Στο αρχείο αυτό γράφετε ή κάνετε επικόλληση τον κώδικα που παραθέσαμε πιο πάνω και μετά Αποθήκευση. Έπειτα πρέπει να το μεταγλωττίσετε ώστε να μπορεί να εκτελεστεί. Για να μετατραπεί ο κώδικας σε ένα εκτελέσιμο πρόγραμμα χρησιμοποιούμε έναν μεταγλωττιστή (compiler) και μετά έναν συνδετή (linker). Επειδή σήμερα σχεδόν όλοι οι compilers ενσωματώνουν και έναν linker έχει επικρατήσει όλη η διαδικασία να χαρακτηρίζετε μεταγλώττιση (compilation).

Μεταγλώττιση σε Linux

[επεξεργασία]

Σε περιβάλλον Linux προτείνουμε την χρήση του compiler-linker gcc. Μπορούμε να τον κατεβάσουμε και να τον εγκαταστήσουμε με την ακόλουθη εντολή (για διανομές βασισμένες στο debian)

Τερματικό:

sudo apt-get install build-essential


Αφού ολοκληρωθεί η εγκατάσταση, ανοίγουμε ένα τερματικό και αφού μεταβούμε στον κατάλογο όπου υπάρχει το πηγαίο αρχείο, η μεταγλώττιση επιτυγχάνεται με την εντολή

Τερματικό:

gcc hello.c -o myfirstprogram

που θα καλέσει τον GNU C Compiler (gcc), να μεταγλωττίσει το αρχείο, και να το εξάγει (-ο) σε ένα εκτελέσιμο.

Εφόσον δεν υπάρχει κάποιο λάθος, και ολοκληρωθεί επιτυχώς η μεταγλώττιση τότε με την εντολή

Τερματικό:

./myfirstprogram

εκτελείται το πρόγραμμα και βλέπουμε τι εμφανίζει στο τερματικό.

Μεταγλώττιση σε Windows

[επεξεργασία]

Σε περιβάλλον Windows προτείνουμε Code::Blocks, ένα IDE( Integrated Development Environment ) αρκετά προχωρημένο, δωρεάν και ανοιχτού κώδικα. Αν είστε καινούργιοι σ'όλα αυτά, προτιμήστε codeblocks-*mingw-*setup, επειδή έρχεται κατευθείαν με ενσωματωμένο τον μεταγλωττιστή και τον αποσφαλματωτή. Ορίστε ο σύνδεσμος της ιστοσελίδας τους: http://www.codeblocks.org/downloads/binaries

Εκτελέστε το codeblocks, και ανοίξτε το "*.c" αρχείο σας. Πατήστε "Build and run" ή το πλήκτρο F9. Αν υπήρχαν λάθη, θα σταματήσει και θα σας τα δείξει στο παράθυρο γεγονότων στο κάτω μέρος της οθόνης. Αν μεταγλωττίστηκε χωρίς προβλήματα, θα προσπαθήσει να το τρέχει, ανοίγοντας μια γραμμή εντολών/τερματικό/κονσόλα.
Προσοχή: Πριν κλείσει το τερματικό θα σαν πει τι επέστρεψε η main(), πόσο πήρε για να τρέξει και θα ζητήσει να πατήσετε Enter. Όλα αυτά είναι πρόσθετες λειτουργίες του codeblocks, και δε γίνονται αν το πρόγραμμα τρέξει με οποιοδήποτε άλλο τρόπο( πχ διπλό κλικ στο "*.exe" ).

Μόλις εκτελέσατε το πρώτο σας πρόγραμμα! Καλώς ήρθατε.

Ασκήσεις

[επεξεργασία]
  1. Μεταγλωττίστε και εκτελέστε τον παραπάνω κώδικα.
  2. Τροποποιήστε τον κώδικα ούτως ώστε να εμφανίσει το όνομά σας.
  3. Αφαιρέστε το σχόλιο από τον κώδικά σας, δείτε αν το πρόγραμμα τρέχει με τον ίδιο τρόπο.
Προηγούμενη
Ενότητα
Περιεχόμενα Επόμενη
Ενότητα