Το πρόγραμμα "Hello, world!"

Το πρώτο, παραδοσιακά πλέον, πρόγραμμα στην C είναι το λεγόμενο πρόγραμμα "Hello, world!", ο κώδικας του οποίου φαίνεται παρακάτω:

/* The "Hello, world!" program */

#include <stdio.h>

int main()
{
	printf("Hello, world!\n");
	return 0;
}

Αν το πρόγραμμα αυτό εκτελεστεί σε ένα υπολογιστή θα τυπώσει στην οθόνη το μήνυμα Hello, world! Παρά την απλή μορφή και λειτουργία του, περιέχει τα βασικά συστατικά οποιουδήποτε προγράμματος C. Η πρώτη γραμμή του προγράμματος είναι ένα σχόλιο (comment). Ο μεταγλωττιστής αγνοεί εντελώς τα σχόλια, των οποίων ο προορισμός είναι να εξηγήσουν μέρος του κώδικα ή να δώσουν κάποια άλλη πληροφορία σε αυτόν που το χρησιμοποιεί. Στην C, οτιδήποτε βρίσκεται μεταξύ των χαρακτήρων /* και */ νοείται ως σχόλιο. Τα σχόλια μπορούν να καταλαμβάνουν μια ή και περισσότερες γραμμές.

Η δεύτερη γραμμή λέει στον μεταγλωττιστή να ενσωματώσει στο πρόγραμμα πληροφορίες από την πρότυπη βιβλιοθήκη (standarad library) για τις λειτουργίες εισόδου-εξόδου. Στην C, όπως και σε άλλες γλώσσες, οι συγκεκριμένες λειτουργίες δεν είναι μέρος της γλώσσας αλλά ανήκουν στη λεγόμενη πρότυπη βιβλιοθήκη. Αυτή η διαφοροποίηση είναι ουσιώδης υπό την έννοια ότι ο χρήστης πρέπει να ζητήσει ρητά ποιές από τις δυνατότητες που παρέχει η πρότυπη βιβλιοθήκη θέλει να χρησιμοποιήσει. Στην C αυτό γίνεται χρησιμοποιώντας τις οδηγίες (directives) #include. Το γεγονός ότι το όνομα stdio.h εμφανίζεται ανάμεσα σε απλά εισαγωγικά δηλώνει ότι το αρχείο stdio.h είναι μέρος της πρότυπης βιβλιοθήκης. Τέτοια αρχεία ονομάζονται αρχεία-επικεφαλίδες (header files) και η προέκτασή τους είναι πάντα .h. Στη συνέχεια θα δούμε και άλλες λειτουργίες που παρέχει η πρότυπη βιβλιοθήκη και πως τις χρησιμοποιούμε στα προγράμματά μας.

Οι πέντε τελευταίες γραμμές του προγράμματός μας περιέχουν τη μια και μοναδική συνάρτηση, main, την οποία χρησιμοποιούμε εδώ. Κάθε πρόγραμμα C πρέπει να περιέχει μια συνάρτηση με αυτό το όνομα. Η εκτέλεση του προγράμματος ξεκινάει από την main. Στην C το αποτέλεσμα της κλήσης της main είναι ένας ακέραιος ο οποίος δηλώνει αν το πρόγραμμα εκτελέστηκε κανονικά ή όχι. Η τιμή μηδέν δηλώνει επιτυχή εκτέλεση του προγράμματος ενώ κάθε άλλη τιμή δηλώνει πρόβλημα. Έτσι, ξεκινάμε γράφοντας int main() για να δηλώσουμε ότι ορίζουμε μια συνάρτηση με το όνομα main η οποία επιστρέφει μια τιμή τύπου int. Το όνομα int είναι η λέξη που χρησιμοποεί η C για να δηλώσει τον τύπο των ακεραίων αριθμών. Οι παρενθέσεις μετά το όνομα της συνάρτησης εσωκλείουν τυχόν ορίσματά της. Στη δικιά μας περίπτωση η συνάρτηση main δεν έχει ορίσματα και γι΄αυτό δεν υπάρχει τίποτα μεταξύ των παρενθέσεων. Τα βήματα που εκτελεί κάθε συνάρτηση περικλείονται ανάμεσα σε άγκιστρα και ονομάζονται εντολές (statements). Στο σύνολό τους οι εντολές απαρτίζουν το λεγόμενο σώμα (body) της συνάρτησης.

Η συνάρτηση main του προγράμματός μας περιέχει δύο εντολές. Παρατηρήστε ότι το ελληνικό ερωτηματικό δηλώνει το τέλος της εντολής. Η πρώτη εντολή είναι η κλήση της συνάρτησης printf της πρότυπης βιβλιοθήκης, η οποία τυπώνει το όρισμά της που βρίσκεται ανάμεσα στις παρενθέσεις, δηλαδή το "Hello, world!\n". Μια ακολουθία χαρακτήρων ανάμεσα σε εισαγωγικά ονομάζεται αλφαριθμητικό (string). Ενδιαφέρων έχει εδώ η ακολουθία χαρακτήρων \n. Αυτός είναι ο συμβολισμός που χρησιμοποιεί η C για να δηλώσει τον χαρακτήρα αλλαγής γραμμής. Η εκτύπωσή του προκαλεί τον τερματισμό της τρέχουσας γραμμής εξόδου. Σημειώνουμε τέλος ότι ακολουθία χαρακτήρων \n ονομάζεται στην C χαρακτήρας διαφυγής (escape sequence). Άλλοι χρήσιμοι χαρακτήρες διαφυγής είναι ο \" για την εκτύπωση των εισαγωγικών και \\ για την εκτύπωση του χαρακτήρα \. Θα μπορούσαμε επομένως να τυπώσουμε το μήνυμα Hello, world! χρησιμοποιώντας τις εντολές

printf("Hello, ");
printf("world!"); 
printf("\n");

Θα έχουμε πολλά περισσότερα να πούμε τόσο για τη συνάρτηση printf όσο και για τα αλφαριθμητικά σε επόμενες παραγράφους.

Η εντολή return 0; τερματίζει την εκτέλεση της συνάρτησης στην οποία εμφανίζεται και επιστρέφει την τιμή που εμφανίζεται πρίν το ερωτηματικό, στη δική μας περίπτωση τον ακέραιο αριθμό μηδέν, στο πρόγραμμα το οποίο κάλεσε την εν λόγω συνάρτηση. Είναι απαραίτητη προϋπόθεση ότι η τιμή η οποία επιστρέφεται να έχει τον ίδιο τύπο με αυτό τον οποίο η συνάρτηση υποσχέθηκε ότι θα επιστρέψει κατά τη δήλωσή της (δείτε τον ορισμό int main()).

Ασκήσεις

  1. Μεταγλωττίστε και εκτελέστε το πρόγραμμα "Hello, world!". Κάντε εσκεμμένα μερικά συντακτικά σφάλματα για να δείτε τα μηνύματα του μεταγλωττιστή.
  2. Αλλάξτε το πρόγραμμα "Hello, world!" έτσι ώστε να τυπώνει το μήνυμα
    Hello, world!
    My name is Michael
  3. Γράψτε ένα πρόγραμμα το οποίο τυπώνει τη φράση
    This (") is a quote, and this (\) is a backslash.