Οι μεταβλητές στη γλώσσα C λειτουργούν ως δοχεία για την αποθήκευση δεδομένων, όπως αριθμών και χαρακτήρων.
Στη C, υπάρχουν διάφοροι τύποι μεταβλητών που καθορίζονται με συγκεκριμένες λέξεις-κλειδιά, όπως:
int
: Αποθηκεύει ακέραιους αριθμούς χωρίς δεκαδικά, όπως το 123 ή το -123.float
: Αποθηκεύει αριθμούς με κινητή υποδιαστολή, δηλαδή αριθμούς με δεκαδικά, όπως το 19,99 ή το -19,99.char
: Αποθηκεύει μονά γράμματα, όπως το ‘a’ ή το ‘B’. Οι τιμές τύπουchar
περικλείονται σε μονά εισαγωγικά.
Για να δημιουργήσετε μια μεταβλητή στη C, πρέπει να καθορίσετε τον τύπο της μεταβλητής και να της αναθέσετε μια αρχική τιμή.
Σύνταξη
type variableName = value;
Οπου ο τύπος είναι ένας από τους τύπους της C (όπως int), και το variableName είναι το όνομα της μεταβλητής (όπως x ή myName). Το ίσον σημείο χρησιμοποιείται για την ανάθεση τιμής στη μεταβλητή.
Έτσι, για να δημιουργήσετε μια μεταβλητή που θα αποθηκεύει έναν αριθμό, δείτε το ακόλουθο παράδειγμα:
int myNum = 5; printf("%d", myNum);
Στο παραπάνω παράδειγμα, δημιουργούμε μια μεταβλητή με όνομα myNum και τύπο int, και της αναθέτουμε την τιμή 5. Στη συνέχεια, εκτυπώνουμε την τιμή της μεταβλητής στην οθόνη χρησιμοποιώντας τη συνάρτηση printf().
Όπου ο τύπος είναι ένας από τους τύπους της C (όπως int), και το variableName είναι το όνομα της μεταβλητής (όπως x ή myName). Το ίσον σημείο χρησιμοποιείται για την ανάθεση τιμής στη μεταβλητή.
[adinserter block=”2″]
Έτσι, για να δημιουργήσετε μια μεταβλητή που θα αποθηκεύει έναν αριθμό, δείτε το ακόλουθο παράδειγμα:
int myNum = 5; printf("%d", myNum);
Στο παραπάνω παράδειγμα, δημιουργούμε μια μεταβλητή με όνομα myNum και τύπο int, και της αναθέτουμε την τιμή 5. Στη συνέχεια, εκτυπώνουμε την τιμή της μεταβλητής στην οθόνη χρησιμοποιώντας τη συνάρτηση printf().
Μπορείτε επίσης να δηλώσετε μια μεταβλητή χωρίς να της αναθέσετε τιμή, και να της αναθέσετε την τιμή αργότερα:
int myNum; myNum = 15; printf("%d", myNum);
Στο παραπάνω παράδειγμα, δηλώνουμε μια μεταβλητή με όνομα myNum και τύπο int, αλλά δεν της αναθέτουμε τιμή. Στη συνέχεια, αναθέτουμε την τιμή 15 στη μεταβλητή και την εκτυπώνουμε στην οθόνη.
Μάθατε από το κεφάλαιο εξόδου ότι μπορείτε να εξάγετε τιμές/εκτυπώνετε κείμενο με τη συνάρτηση printf():
Παράδειγμα
#include <stdio.h> int main() { int x = 5; // Δήλωση μεταβλητής x με τιμή 5 int y = 6; // Δήλωση μεταβλητής y με τιμή 6 int sum = x + y; // Υπολογισμός της άθροισης των x και y και αποθήκευση στη μεταβλητή sum printf("The sum of %d and %d is %d", x, y, sum); // Εκτύπωση του αποτελέσματος στην οθόνη return 0; // Επιστροφή της τιμής 0 ως ένδειξη επιτυχούς εκτέλεσης του προγράμματος }
Ο παραπάνω κώδικας σε C υπολογίζει την άθροιση των μεταβλητών x
και y
και εκτυπώνει το αποτέλεσμα στην οθόνη. Αρχικά, δηλώνονται οι μεταβλητές x
και y
με τις τιμές 5 και 6 αντίστοιχα. Στη συνέχεια, η μεταβλητή sum
παίρνει την τιμή του αθροίσματος x + y
. Τέλος, με τη χρήση της συνάρτησης printf
, το αποτέλεσμα εκτυπώνεται στην οθόνη με τη χρήση των μεταβλητών x
, y
και sum
. Η εντολή return 0
δηλώνει ότι το πρόγραμμα ολοκληρώθηκε επιτυχώς.
Σε πολλές άλλες γλώσσες προγραμματισμού (όπως Python, Java και C++), συνήθως χρησιμοποιείτε μια συνάρτηση εκτύπωσης για να εμφανίσετε την τιμή μιας μεταβλητής. Ωστόσο, αυτό δεν είναι δυνατό στη C:
Για να εμφανίσετε την τιμή μιας μεταβλητής στη C, πρέπει να χρησιμοποιήσετε τη συνάρτηση printf() και να χρησιμοποιήσετε τον κατάλληλο μαρκαδόρο τύπου δεδομένων (όπως το %d για ακέραιους αριθμούς) για να εισαγάγετε την τιμή της μεταβλητής στο κείμενο εξόδου.
Παράδειγμα:
int x = 5; printf("The value of x is %d", x);
Στο παραπάνω παράδειγμα, χρησιμοποιούμε τη συνάρτηση printf() για να εμφανίσουμε την τιμή της μεταβλητής x στην οθόνη. Χρησιμοποιούμε το %d ως μέρος του κειμένου εξόδου για να δηλώσουμε ότι εισάγουμε μια ακέραια τιμή, και στη συνέχεια περνάμε την τιμή της μεταβλητής x ως δεύτερο όρισμα στη συνάρτηση printf().
Οι πιο συνηθισμένοι χαρακτήρες μορφοποίησης που χρησιμοποιούνται με τη συνάρτηση printf() είναι:
- %d για ακέραιους αριθμούς
- %f για αριθμούς κινητής υποδιαστολής
- %c για χαρακτήρες
- %s για συμβολοσειρές (strings)
[adinserter block=”3″]
Μπορείτε να χρησιμοποιήσετε αυτούς τους χαρακτήρες μορφοποίησης για να δηλώσετε τον τύπο της μεταβλητής που θέλετε να εξάγετε στην οθόνη, και να εισάγετε την αντίστοιχη τιμή της μεταβλητής χρησιμοποιώντας τη σύνταξη printf(). Εδώ είναι ένα παράδειγμα:
#include <stdio.h> int main() { int age = 25; float weight = 65.5; char grade = 'A'; printf("My age is %d\n", age); // Εκτύπωση της τιμής της μεταβλητής age printf("My weight is %.2f\n", weight); // Εκτύπωση της τιμής της μεταβλητής weight με 2 δεκαδικά ψηφία printf("My grade is %c\n", grade); // Εκτύπωση της τιμής της μεταβλητής grade return 0; }
Ο παραπάνω κώδικας σε γλώσσα C πραγματοποιεί την εκτύπωση των τιμών των μεταβλητών x
, y
και sum
στην οθόνη. Πιο συγκεκριμένα, ο κώδικας κάνει τα εξής:
- Δηλώνει και αρχικοποιεί τις μεταβλητές
x
καιy
με τις τιμές 5 και 6 αντίστοιχα. - Υπολογίζει το άθροισμα των μεταβλητών
x
καιy
και αποθηκεύει το αποτέλεσμα στη μεταβλητήsum
. - Χρησιμοποιώντας τη συνάρτηση
printf()
, εκτυπώνει το μήνυμα “The sum of 5 and 6 is 11” στην οθόνη, όπου οι τιμές 5, 6 και 11 παρέχονται ως ορίσματα στη συνάρτηση με τη χρήση των ειδικών χαρακτήρων μορφοποίησης%d
για τους ακέραιους αριθμούς. - Επιστρέφει την τιμή 0, υποδεικνύοντας ότι η εκτέλεση του προγράμματος ολοκληρώθηκε επιτυχώς.
Ο χαρακτήρας μορφοποίησης %f
χρησιμοποιείται για τους αριθμούς κινητής υποδιαστολής (floats), όχι για χαρακτήρες. Αν χρησιμοποιήσετε τον λανθασμένο χαρακτήρα μορφοποίησης για τον τύπο δεδομένων της μεταβλητής σας, μπορεί να προκαλέσει παράξενα αποτελέσματα ή ακόμα και να εμφανιστούν σφάλματα.
Εάν θέλετε να εκτυπώσετε ένα χαρακτήρα, χρησιμοποιήστε το %c
. Για παράδειγμα:
char letter = 'A'; printf("The letter is %c.", letter);
Αν θέλετε να εκτυπώσετε έναν αριθμό κινητής υποδιαστολής (float), χρησιμοποιήστε το %f. Για παράδειγμα:
float number = 3.14; printf("The number is %f.", number);
Σημειώστε ότι μπορείτε να προσδιορίσετε την ακρίβεια του αριθμού κινητής υποδιαστολής που εκτυπώνετε χρησιμοποιώντας την παράμετρο .N παρακάτω του %f, όπου N είναι ο αριθμός των δεκαδικών ψηφίων που θέλετε να εμφανίζονται. Παραδείγματος χάριν:
float number = 3.141592; printf("The number is %.2f.", number);
Σε αυτήν την περίπτωση, ο αριθμός θα εκτυπωθεί με δύο δεκαδικά ψηφία.
Για να εκτυπώσετε διαφορετικούς τύπους σε μια μόνο συνάρτηση printf(), μπορείτε να χρησιμοποιήσετε τα ακόλουθα:
- %d για int
- %f για float
- %c για char
- %s για strings
Παραδείγματος χάριν, μπορείτε να εκτυπώσετε έναν αριθμό int, έναν αριθμό κινητής υποδιαστολής (float), έναν χαρακτήρα char και ένα string με την εξής εντολή:
#include <stdio.h> int main() { int num = 10; // Δήλωση μιας μεταβλητής τύπου int με όνομα num και τιμή 10 float fnum = 3.14; // Δήλωση μιας μεταβλητής τύπου float με όνομα fnum και τιμή 3.14 char letter = 'A'; // Δήλωση μιας μεταβλητής τύπου char με όνομα letter και τιμή 'A' char name[] = "John"; // Δήλωση ενός πίνακα χαρακτήρων με όνομα name και τιμή "John" printf("The integer is %d, the float is %f, the character is %c, and the string is %s.", num, fnum, letter, name); // Εκτύπωση των τιμών των μεταβλητών return 0; }
Ο παραπάνω κώδικας σε C δηλώνει μεταβλητές num
, fnum
, letter
και name
, και τους αναθέτει τιμές. Έπειτα, χρησιμοποιεί τη συνάρτηση printf
για να εκτυπώσει τις τιμές αυτών των μεταβλητών στην οθόνη.
Το αποτέλεσμα που θα εμφανιστεί στην οθόνη θα είναι:
The integer is 10, the float is 3.140000, the character is A, and the string is John.
Στην εκτύπωση, οι τιμές των μεταβλητών θα αντικατασταθούν αντίστοιχα στις μεταβλητές %d
, %f
, %c
και %s
. Το %d
αντιπροσωπεύει μια ακέραια τιμή, το %f
αντιπροσωπεύει έναν δεκαδικό αριθμό (float), το %c
αντιπροσωπεύει έναν χαρακτήρα και το %s
αντιπροσωπεύει μια συμβολοσειρά (string).
Σημείωση: Αν αναθέσετε μια νέα τιμή σε μια υπάρχουσα μεταβλητή, θα αντικατασταθεί η προηγούμενη τιμή της:
Για παράδειγμα:
int num = 5; printf("The value of num is %d", num);
Το αποτέλεσμα θα είναι:
The value of num is 5
Αν αναθέσουμε μια νέα τιμή στη μεταβλητή num
και το εκτυπώσουμε ξανά:
num = 10; printf("The value of num is now %d", num);
Το αποτέλεσμα θα είναι:
The value of num is now 10
[adinserter block=”4″]
Μπορείτε επίσης να αντιστοιχίσετε την τιμή μιας μεταβλητής σε μια άλλη:
Για παράδειγμα, αν έχουμε τις ακόλουθες μεταβλητές:
int x = 5; int y = x;
Σε αυτή την περίπτωση, η μεταβλητή y
θα πάρει την τιμή της μεταβλητής x
, δηλαδή 5
. Αν εκτυπώσουμε την τιμή της y
:
printf("The value of y is %d", y);
Το αποτέλεσμα θα είναι:
The value of y is 5
Ή μπορείτε να αντιγράψετε τιμές σε κενές μεταβλητές:
Για παράδειγμα, αν έχουμε τις ακόλουθες μεταβλητές:
int a = 5; int b;
Σε αυτή την περίπτωση, η μεταβλητή b
είναι κενή. Μπορούμε να αντιγράψουμε την τιμή της μεταβλητής a
στην b
:
b = a;
Αν εκτυπώσουμε την τιμή της b
:
printf("The value of b is %d", b);
Το αποτέλεσμα θα είναι:
The value of b is 5
Για να προσθέσετε δύο μεταβλητές μαζί, μπορείτε να χρησιμοποιήσετε τον τελεστή +:
Για παράδειγμα, αν έχουμε τις ακόλουθες μεταβλητές:
int x = 5; int y = 3; int sum = x + y;
Η μεταβλητή sum
θα πάρει το άθροισμα των μεταβλητών x
και y
, δηλαδή την τιμή 8
. Αν εκτυπώσουμε την τιμή της sum
:
printf("The sum of x and y is %d", sum);
Το αποτέλεσμα θα είναι:
The sum of x and y is 8
Για να δηλώσετε περισσότερες από μία μεταβλητές του ίδιου τύπου, χρησιμοποιήστε μια λίστα διαχωρισμένη με κόμματα:
Για παράδειγμα, αν θέλουμε να δηλώσουμε δύο ακέραιες μεταβλητές:
int x, y;
Σε αυτή την περίπτωση, οι μεταβλητές x
και y
έχουν δηλωθεί ως ακέραιες, αλλά δεν έχουν αρχικοποιηθεί με κάποια τιμή.
Μπορούμε να τους δώσουμε αρχικές τιμές:
int x = 5, y = 3;
Ή να τους δώσουμε τιμές αργότερα:
x = 5; y = 3;
Μπορείτε επίσης να αντιστοιχίσετε την ίδια τιμή σε πολλές μεταβλητές του ίδιου τύπου:
Για παράδειγμα, αν έχουμε τις ακόλουθες μεταβλητές:
int x, y, z;
Μπορούμε να τους αντιστοιχίσουμε την ίδια τιμή:
x = y = z = 0;
Σε αυτή την περίπτωση, οι μεταβλητές x
, y
και z
έχουν δηλωθεί ως ακέραιες και έχουν αρχικοποιηθεί με την τιμή 0
. Η παραπάνω γραμμή ισοδυναμεί με τρεις ξεχωριστές εκχωρήσεις:
z = 0; y = z; x = y;
[adinserter block=”5″]
Στη γλώσσα C, κάθε μεταβλητή πρέπει να έχει ένα μοναδικό όνομα, το οποίο ονομάζεται αναγνωριστικό (identifier).
Τα αναγνωριστικά μπορούν να είναι σύντομα ονόματα όπως το “x” και “y”, τα οποία χρησιμοποιούνται συχνά για απλές μεταβλητές, ή πιο περιγραφικά ονόματα όπως το “age”, “sum” και “totalVolume”, τα οποία παρέχουν περισσότερες πληροφορίες σχετικά με τον σκοπό και τη χρήση της μεταβλητής.
Είναι σημαντικό να επιλέγουμε περιγραφικά ονόματα για τις μεταβλητές μας, καθώς αυτό διευκολύνει την κατανόηση του κώδικα από άλλους προγραμματιστές και τη συντήρηση του κώδικα στο μέλλον. Με περιγραφικά ονόματα, μπορούμε να περιγράψουμε καλύτερα τη λειτουργία και τον σκοπό της μεταβλητής, καθιστώντας τον κώδικα πιο κατανοητό.
Για παράδειγμα, ένα αναγνωριστικό όπως το “age” μας βοηθά να καταλάβουμε ότι η μεταβλητή αντιπροσωπεύει την ηλικία κάποιου ατόμου, ενώ ένα αναγνωριστικό όπως το “sum” μας υποδεικνύει ότι η μεταβλητή περιέχει το άθροισμα κάποιων αριθμών.
Γενικά, προτείνεται η χρήση περιγραφικών ονομάτων για τις μεταβλητές, προκειμένου να δημιουργηθεί κατανοητός και συντηρήσιμος κώδικας.
Ένα παράδειγμα θα ήταν η δήλωση μιας μεταβλητής για το πλήθος των προϊόντων σε ένα κατάστημα:
int numProducts;
Στην περίπτωση αυτή, η μεταβλητή ονομάζεται numProducts
, που είναι ένα περιγραφικό όνομα που μας δίνει μια ιδέα για το περιεχόμενό της. Αυτό το περιγραφικό όνομα κατανοητό και πιο σαφές από ένα σύντομο όνομα όπως n
, το οποίο θα ήταν λιγότερο περιγραφικό και θα δυσκόλευε τον αναγνώστη να κατανοήσει τη χρήση της μεταβλητής στον κώδικα.
Γενικά, οι κανόνες για την ονομασία μεταβλητών στην C γλώσσα είναι οι εξής:
- Ονομασίες μπορούν να περιέχουν γράμματα, αριθμούς και την κάτω παύλα (_).
- Ονομασίες πρέπει να αρχίζουν με γράμμα ή την κάτω παύλα (_).
- Ονομασίες είναι case-sensitive, δηλαδή τα κεφαλαία και πεζά γράμματα θεωρούνται διαφορετικά (π.χ.
myVar
καιmyvar
είναι διαφορετικές μεταβλητές). - Ονομασίες δεν μπορούν να περιέχουν κενά ή ειδικούς χαρακτήρες όπως !, #, %, κ.λπ.
- Λέξεις-κλειδιά (όπως
int
,float
, κλπ.) δεν μπορούν να χρησιμοποιηθούν ως ονόματα μεταβλητών, καθώς έχουν ειδική σημασία στη γλώσσα.
Έτσι, για να δώσουμε σωστή παράφραση, μπορούμε να πούμε:
“Στην παρούσα περίπτωση, η μεταβλητή ονομάζεται numProducts
, που είναι ένα περιγραφικό όνομα που μας δίνει μια ιδέα για το περιεχόμενό της. Αντίθετα, ένα σύντομο όνομα όπως n
θα ήταν λιγότερο περιγραφικό και θα δυσκόλευε τον αναγνώστη να κατανοήσει τη χρήση της μεταβλητής στον κώδικα.
Γενικά, οι κανόνες για την ονομασία μεταβλητών στη γλώσσα C περιλαμβάνουν τον περιορισμό στη χρήση γραμμάτων, αριθμών και της κάτω παύλας, με την απαίτηση να αρχίζουν με γράμμα ή κάτω παύλα, να είναι case-sensitive και να μην περιέχουν ειδικούς χαρακτήρες ή κενά. Επιπλέον, δεν επιτρέπεται η χρήση λέξεων-κλειδιών ως ονομάτων μεταβλητών.”
Σε αυτό το παράδειγμα, θα αναπτύξουμε ένα πρόγραμμα που θα αποθηκεύει πληροφορίες για έναν φοιτητή σε ένα πανεπιστήμιο. Θα χρησιμοποιήσουμε τις εξής μεταβλητές για να αποθηκεύσουμε τα δεδομένα:
- Όνοματεπώνυμο: μια μεταβλητή τύπου string που θα αποθηκεύει το όνομα και το επώνυμο του φοιτητή.
- Ηλικία: μια μεταβλητή τύπου int που θα αποθηκεύει την ηλικία του φοιτητή.
- Βαθμός: μια μεταβλητή τύπου float που θα αποθηκεύει τον βαθμό του φοιτητή.
Για να κάνουμε αυτό, μπορούμε να χρησιμοποιήσουμε τα εξής ονόματα μεταβλητών:
#include <stdio.h> #include <string.h> int main() { char name[50]; // Δήλωση μιας μεταβλητής τύπου χαρακτήρα με όνομα "name" και χωρητικότητα 50 χαρακτήρες int age; // Δήλωση μιας μεταβλητής τύπου ακέραιο με όνομα "age" float grade; // Δήλωση μιας μεταβλητής τύπου κινητής υποδιαστολής (float) με όνομα "grade" strcpy(name, "John Doe"); // Αντιγραφή της συμβολοσειράς "John Doe" στη μεταβλητή "name" age = 21; // Αποθήκευση της τιμής 21 στη μεταβλητή "age" grade = 8.5; // Αποθήκευση της τιμής 8.5 στη μεταβλητή "grade" printf("Name: %s\n", name); // Εκτύπωση του περιεχομένου της μεταβλητής "name" printf("Age: %d\n", age); // Εκτύπωση του περιεχομένου της μεταβλητής "age" printf("Grade: %.2f\n", grade); // Εκτύπωση του περιεχομένου της μεταβλητής "grade" με δύο δεκαδικά ψηφία return 0; // Επιστροφή της τιμής 0 για να υποδηλώσει επιτυχή ολοκλήρωση του προγράμματος }
Ο παραπάνω κώδικας σε C περιλαμβάνει μια απλή πρόγραμμα που εκτυπώνει στην οθόνη τρία στοιχεία: το όνομα, την ηλικία και τον βαθμό ενός ατόμου. Ο κώδικας εκχωρεί συγκεκριμένες τιμές σε μεταβλητές (name
, age
, grade
) και στη συνέχεια χρησιμοποιεί τη συνάρτηση printf()
για να εκτυπώσει τις τιμές αυτές στην οθόνη.
Αναλυτικά, ο κώδικας κάνει τα εξής:
- Δηλώνει τις μεταβλητές
name
(χαρακτηριστικός πίνακας μεγέθους 50),age
(ακέραιος) καιgrade
(κινητή υποδιαστολής). - Χρησιμοποιεί τη συνάρτηση
strcpy()
για να αντιγράψει τη συμβολοσειρά “John Doe” στη μεταβλητήname
. - Εκχωρεί την τιμή 21 στη μεταβλητή
age
. - Εκχωρεί την τιμή 8.5 στη μεταβλητή
grade
. - Χρησιμοποιεί τη συνάρτηση
printf()
για να εκτυπώσει τις τιμές των μεταβλητών στην οθόνη. Με τη χρήση ειδικών μορφοποιητών (%s, %d, %.2f), μπορούμε να εμφανίσουμε τις τιμές των μεταβλητών σε κατάλληλη μορφή. - Επιστρέφει την τιμή 0 για να υποδηλώσει επιτυχή ολοκλήρωση του προγράμματος.
Έτσι, ο κώδικας εκτυπώνει το όνομα “John Doe”, την ηλικία 21 και τον βαθμό 8.5 στην οθόνη.
Όταν εκτελεστεί ο παραπάνω κώδικας στην οθόνη θα εμφανιστεί το εξής αποτέλεσμα:
Name: John Doe Age: 21 Grade: 8.50
Αυτό σημαίνει ότι το πρόγραμμα θα εκτυπώσει το όνομα “John Doe”, την ηλικία 21 και τον βαθμό 8.50 στην οθόνη, όπως έχουν οριστεί στις μεταβλητές name
, age
και grade
αντίστοιχα.