Académique Documents
Professionnel Documents
Culture Documents
A. Μεταβλητές
Μια μεταβλητή (variable) είναι μία κατονομασμένη θέση αποθήκευσης δεδομένων στη μνήμη του
υπολογιστή σας. Χρησιμοποιώντας το όνομα μιας μεταβλητής στο πρόγραμμά σας, αναφέρεστε
στην ουσία στα αποθηκευμένα εκεί δεδομένα.
Οι προγραμματιστές της C χρησιμοποιούν συχνά μόνο πεζά γράμματα για τα ονόματα των
μεταβλητών, αν και αυτό δεν είναι υποχρεωτικό. Πρέπει να δημιουργείτε ονόματα μεταβλητών
περιγραφικά των δεδομένων που πρόκειται να αποθηκεύσουν. Για παράδειγμα, ένα πρόγραμμα
που υπολογίζει τις δόσεις δανείου, θα μπορούσε να αποθηκεύσει την τιμή του επιτοκίου σε μία
μεταβλητή με το όνομα interest_rate. Το όνομα μεταβλητής βοηθά να γίνει σαφής η
χρήση της. Θα μπορούσατε για την προαναφερόμενη μεταβλητή να χρησιμοποιήσετε το όνομα a
ή dennis_ritchie αλλά αυτά τα ονόματα δεν βοηθούν στην κατανόηση του ρόλου της
μεταβλητής. Το όνομα μιας μεταβλητής δεν απασχολεί τον compiler της C (εφόσον δεν
παραβιάζονται οι κανόνες ονοματολογίας που αναφέρθηκαν παραπάνω). Όμως, η χρήση της
μεταβλητής δεν θα είναι σαφής σε οποιονδήποτε άλλο εξετάσει τον πηγαίο σας κώδικα εάν το
όνομά της δεν βοηθά στην κατανόηση του ρόλου της.
Η χρήση μιας υπογράμμισης για το διαχωρισμό των λέξεων σε ένα όνομα μεταβλητής κάνει
εύκολη την ερμηνεία τους π.χ. interest_rate. Ένα άλλο στυλ λέγεται σημειογραφία καμήλας
(camel case). Αντί της χρήσης της υπογράμμισης για το διαχωρισμό των λέξεων, το πρώτο
γράμμα κάθε λέξης είναι κεφαλαίο με εξαίρεση το πρώτο γράμμα της πρώτης λέξης το οποίο
μπορεί να είναι πεζό. Αντί interest_rate η μεταβλητή θα γραφόταν InterestRate ή
interestRate (η δεύτερη επιλογή είναι πιο δημοφιλής στον προγραμματισμό).
1/7
A.2. Τύποι Δεδομένων
Η C περιέχει διάφορους τύπους αριθμητικών μεταβλητών. Χρειάζεστε διαφορετικούς τύπους
μεταβλητών επειδή οι διαφορετικές αριθμητικές τιμές έχουν ποικίλες απαιτήσεις μνήμης. Οι
μικροί ακέραιοι (για παράδειγμα 1, 199 και 8) απαιτήσουν λιγότερη μνήμη για την αποθήκευσή
τους και οι υπολογισμοί με αυτούς εκτελούνται γρηγορότερα. Αντιθέτως, οι μεγάλοι ακέραιοι και
οι τιμές κινητής υποδιαστολής (123000000 ή 0,00000001234 για παράδειγμα) απαιτούν
μεγαλύτερο χώρο αποθήκευσης και περισσότερο χρόνο για τις μαθηματικές πράξεις.
Χρησιμοποιώντας τους κατάλληλους τύπους μεταβλητής, εξασφαλίζετε ότι το
πρόγραμμά σας εκτελείται όσο το δυνατόν αποτελεσματικότερα.
Πίνακας 1. Οι αριθμητικοί τύποι δεδομένων της C. Οι τύποι δεδομένων με την ένδειξη (*)
έχουν μέγεθος 8 bytes σε περίπτωση 64-bit επεξεργαστών/λειτουργικών συστημάτων.
όνομα_τύπου όνομα_μεταβλητής;
Το όνομα_τύπου καθορίζει τον τύπο της μεταβλητής και πρέπει να είναι μία από τις λέξεις
κλειδιά που παρατίθενται στην Πίνακα 1. Το όνομα_μεταβλητής είναι το όνομα της μεταβλητής,
το οποίο πρέπει να ακολουθεί τους κανόνες που αναφέρθηκαν προηγουμένως. Μπορείτε να
δηλώσετε πολλές μεταβλητές του ίδιου τύπου σε μία γραμμή, διαχωρίζοντας τα ονόματα με
κόμματα:
int count, number, start; /* δήλωση τριών ακεραίων μεταβλητές */
float percent, total; /* δήλωση δύο μεταβλητών float */
2/7
int size; /* Η δήλωση δεσμεύει αποθηκευτικό χώρο για την size */
size = 0; /* Θέτει την τιμή 0 στο size */
double percent = 0.01, taxrate = 28.5; /* Δήλωση και αρχικοποίηση δύο μεταβλητών double */
Χρησιμοποιείτε το sizeof(<type>)για 1004
να βρίσκετε το μέγεθος του χώρου 1005
μνήμης που καταλαμβάνει μια μεταβλητή &i 1006 int i
τύπου <type>
1007
1008
1009
1010
1011
1012
#include <stdio.h>
printf(“format string”, expr1, expr2, ... );
Το πρώτο όρισμα (δήλωση φόρμας) προσδιορίζει τι και πώς θα εκτυπωθεί. Τα σημεία εκτύπωσης
των εκφράσεων υποδεικνύονται με τη χρήση χαρακτήρων μορφοποίησης (Πίνακας 2). Η
απλούστερη μορφή έκφρασης (expr1, ...) είναι το όνομα μιας μεταβλητής και επιτρέπει
την εκτύπωση της τιμής της.
3/7
Πίνακας 2. Χαρακτήρες μορφοποίησης και αντίστοιχοι τύποι δεδομένων (συνάρτηση printf)
Χαρακτήρες Τύποι
μορφοποίησης δεδομένων
%d int
%u unsigned
%c char
%f float
%p pointer
%s string
Εκτός από τους χαρακτήρες μορφοποίησης του ανωτέρω πίνακα αναφέρουμε επίσης τους %e (ή
%E) που εκτυπώνουν πραγματικούς αριθμούς σε εκθετική μορφή με χρήση του χαρακτήρα e πριν
τον εκθέτη (ή τον χαρακτήρα E). Υπάρχουν ακόμη οι χαρακτήρες μορφοποίησης %g (ή %G) που
εκτυπώνουν τη συντομότερη μορφή μεταξύ %f και %e (ή %f και %E). Τέλος οι χαρακτήρες
μορφοποίησης %o και %x εκτυπώνουν ακεραίους αριθμούς στην οκταδική ή δεκαεξαδική τους
αναπαράσταση αντίστοιχα.
Για τον έλεγχο του πλήθους των ψηφίων εκτύπωσης, υπάρχει η γενικευμένη μορφή: %m.pX
όπου m είναι ο ελάχιστος αριθμός χαρακτήρων προς εκτύπωση, p είναι ο αριθμός των δεκαδικών
ψηφίων και X μπορεί να είναι d (ακέραιος), f ή g (πραγματικός).
Η δήλωση φόρμας μπορεί να περιέχει και ειδικούς χαρακτήρες. Οι πιο συνηθισμένοι είναι οι εξής:
Ειδικός Σημασία
χαρακτήρας
\n Νέα γραμμή
\t Διάστημα μεταβλητού μήκους με στοίχιση
\\ (tab)
χαρακτήρας '\'
Κώδικας Εκτύπωση
printf("The color: %s\n", "blue"); The color: blue
printf("First number: %d\n", 12345); First number: 12345
printf("Second number: %04d\n", 25); Second number: 0025
printf("Third number: %i\n", 1234); Third number: 1234
printf("Float number: %3.2f\n", 3.14159); Float number: 3.14
printf("Hexadecimal: %x\n", 255); Hexadecimal: ff
printf("Octal: %o\n", 255); Octal: 377
printf("Unsigned value: %u\n", 150); Unsigned value: 150
printf("Just print the percentage sign %%\n"); Just print the percentage sign %
4/7
B.2. Η συνάρτηση εισόδου από το πληκτρολόγιο scanf
Η σύνταξη της εντολής scanf είναι αντίστοιχη με εκείνη της printf:
scanf(“format string”, expr1, expr2, …);
scanf(“%d”, &age);
Αναφορές
1. Εγχειρίδιο της C, Peter Aitken & Bradley L. Jones.
2. Σημειώσεις τρίτης διάλεξης (“Μεταβλητές - Σταθερές”) του μαθήματος “Εισαγωγή στους
Η/Υ και την Πληροφορική” στη Σχολή Ηλεκτρονικών Μηχανικών και Μηχανικών
Υπολογιστών του Πολυτεχνείου Κρήτης (Δρ. Κατερίνα Μανιά).
3. Τα παραδείγματα εκτυπώσεων του Πίνακα 4 προέρχονται από τη σελίδα
http://www.codingunit.com/printf-format-specifiers-format-conversions-and-formatted-
output
5/7
Ένα πρόγραμμα που προβάλλει το μέγεθος των τύπων μεταβλητών
Ο κώδικας του προγράμματος που θα μελετήσουμε στην εργαστηριακή άσκηση δίνεται
παρακάτω. Δοκιμάστε να τον τρέξετε πριν προσέλθετε στο εργαστήριο. Δοκιμάστε επίσης να
δείτε πώς τρέχει βήμα προς βήμα με τον debugger. Χρησιμοποιήστε watches για να δείτε πώς
αλλάζουν οι τιμές των μεταβλητών κατά την βήμα προς βήμα εκτέλεση. Κατά τη διάρκεια του
εργαστηρίου θα έχουμε την ευκαιρία να πούμε περισσότερα και να επισημάνουμε κάποια σημεία
που αξίζει να γνωρίζετε. Αν έρθετε προετοιμασμένοι, έχοντας ήδη δοκιμάσει τον κώδικα μόνοι
σας, θα μπορέσετε να εμβαθύνετε καλύτερα στα θέματα που θα πραγματευθούμε στο εργαστήριο.
/*
* File: main.c
* Author: ganest
*
* Created on October 12, 2015
*
* A program that prints the address of variables and sizes (in bytes) of variable types
*/
#include <stdio.h>
int main() {
unsigned int intVar1, intVar2;
printf("Print addresses of variables and values without initialization\n");
printf("Address of variable 'intVar1' is:%p and value is: %d\n", &intVar1, intVar1 );
printf("Address of variable 'intVar2' is:%p and value is: %d\n", &intVar2, intVar2 );
intVar1 = 1;
intVar2 = 2;
printf("\nPrint the addresses of the variables and their values after initialization\n");
printf("Address of variable 'intVar1' is:%p and value is: %d\n", &intVar1, intVar1 );
printf("Address of variable 'intVar2' is:%p and value is: %d\n", &intVar2, intVar2 );
printf("\nA char is %u bytes", sizeof(char));
printf("\nAn int is %u bytes", sizeof(int));
printf("\nA short is %u bytes", sizeof(short));
printf("\nA long is %u bytes", sizeof(long));
printf("\nA float is %u bytes", sizeof(float));
printf("\nA double is %u bytes", sizeof(double));
printf("\n");
return 0;
}
Στην επόμενη ενότητα, σας δίνουμε μερικές ιδέες για επεκτάσεις του ανωτέρω κώδικα και
περαιτέρω μελέτη. Ο σκοπός μας είναι να σας δώσουμε τη δυνατότητα για μεγαλύτερη
εμβάθυνση μετά το πέρας του εργαστηρίου. Την τακτική αυτή θα ακολουθήσουμε και στις
επόμενες εργαστηριακές ασκήσεις ώστε να έχετε τη δυνατότητα να οργανώσετε καλύτερα το
χρόνο μελέτης σας και να εμπεδώσετε τις έννοιες και τις τεχνικές που θα παρουσιάζουμε κατά τη
διάρκεια των εργαστηρίων. Αν, κατά τη διάρκεια αυτής της επιπλέον προσωπικής μελέτης, έχετε
κάποιο πρόβλημα, απορία, παρατήρηση, μπορείτε να τα συζητάτε με τους συμφοιτητές σας στο
χώρο συζητήσεων του μαθήματος στo http://courses.ece.tuc.gr/. Αν η απορία ή το πρόβλημα που
έχετε δεν αντιμετωπιστεί με τον τρόπο αυτό, μπορείτε να προσέρχεστε στις ώρες γραφείου των
βοηθών του μαθήματος για επιπλέον υποστήριξη.
6/7
Επεκτάσεις και ιδέες για περαιτέρω μελέτη
7/7