1η+2η εβδομάδα. 1 Ιστορία της C. 5 Μαρτίου 2012

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "1η+2η εβδομάδα. 1 Ιστορία της C. 5 Μαρτίου 2012"

Transcript

1 1η+2η εβδομάδα 5 Μαρτίου Ιστορία της C Η γλώσσα C επινοήθηκε στα εργαστήρια Bell της AT&T την περίοδο από το 1969 έως το 1973 κατά κύριο λόγο από τον Dennis Ritchie. Εκείνη τη χρονική περίοδο υπήρχαν ήδη γλώσσες προγραμματισμού με τις οποίες θα μπορούσε κανείς να προγραμματίσει εφαρμογές αλλά δεν υπήρχαν γλώσσες με δυνατότητες χαμηλού επιπέδου με τις οποίες θα μπορούσε κάποιος να προγραμματίσει ένα λειτουργικό σύστημα ή ένα μεταγλωττιστή. Έτσι οι προγραμματιστές λειτουργικών συστημάτων έπρεπε να χρησιμοποιούν κώδικα μηχανής για να προγραμματίσουν λειτουργικά συστήματα. Την ίδια περίοδο, ένας συνάδελφος του Dennis Ritchie, ο Ken Thompson χρησιμοποιούσε τη γλώσσα B για αυτό το σκοπό. Όταν στα Bell Labs παρέλαβαν έναν νέο υπολογιστή τον PDP-11 είδαν ότι η γλώσσα B δεν είχε τις δυνατότητες που έπρεπε να έχει για να φτιαχτεί με αυτήν ένα λειτουργικό σύστημα για το νέο υπολογιστή. Έτσι ο Ritchie ασχολήθηκε με την ανάπτυξη της διαδόχου της B, η οποία ονομάστηκε C. To 1978 o Ritchie με τον Brian Kernighan έγραψαν ένα βιβλίο στο οποίο περιγράφουν τη νέα γλώσσα. Το βιβλίο θεωρείται κλασσικό και αποτέλεσε το ανεπίσημο πρότυπο της γλώσσας. Το συντακτικό της C όπως περιγράφεται εκεί αναφέρεται ως K&R. Κάποια χρόνια μετά, όταν η γλώσσα έγινε πολύ δημοφιλής και έπρεπε να προτυποποιηθεί το Αμερικανικό Εθνικό Ινστιτούτο Προτύπων (ANSI) εξέδωσε το 1989 ένα πρώτο πρότυπο της C το οποίο αναφέρεται και ως C89 ή ANSI C. Ένα χρόνο μετά ο Διεθνής Οργανισμός Προτυποποίησης (ISO) εξέδωσε το ίδιο στην ουσία πρότυπο το οποίο αναφέρεται ως C90 αλλά στην ουσία είναι ίδιο με το C89. Το 1999 εκδόθηκε ένα ακόμα πρότυπο της γλώσσας το οποίο αναφέρεται ως C99 και με αυτήν την έκδοση της γλώσσας θα ασχοληθούμε στο μάθημα¹. Περισσότερες πληροφορίες (ιστορικές και μη) για τη C μπορεί κανείς να βρει στη wikipedia. Το βιβλίο των Kernighan-Ritchie θεωρείται κλασσικό και αξίζει κανείς να το διαβάσει παρόλο που είναι μάλλον ακατάλληλο για διδασκαλία σε αρχάριους. Μπορείτε να βρείτε στο δίκτυο διάφορες πηγές όπως το βιβλίο The C Book ή tutorials και βοηθήματα όπως αυτά εδώ, εδώ και εδώ. Σημειώσεις, εργασίες και όποιο άλλο υλικό του μαθήματος σας δίνεται από τον διδάσκοντα θα αναρτάται εδώ. ¹Στα τέλη του 2011 εκδόθηκε το C11 το οποίο είναι πολύ φρέσκο. Η συμβατότητα των μεταγλωττιστών με αυτό θα είναι μικρή για αρκετό καιρό ακόμα οπότε δε θα ασχοληθούμε ιδιαίτερα με αυτό. 1

2 2 Ένα απλό πρόγραμμα σε C Το πρόγραμμα 1 τυπώνει στην οθόνη το μήνυμα Hello, world!. 1 # include <stdio.h> Listing 1: Πρόγραμμα Hello 2 3 int main() 4 { 5 printf("hello, world!"); 6 7 return 0; 8 } Η γραμμή 1 δεν είναι κάποια εντολή της C αλλά μία εντολή του προεπεξεργαστή της C, δηλαδή ενός προγράμματος που τρέχει πριν από το μεταγλωττιστή και πραγματοποιεί κάποιες μετατροπές στο πρόγραμμα πριν γίνει η μεταγλώττιση. Η συγκεκριμένη εντολή λέει στον προεπεξεργαστή να βρει το αρχείο stdio.h και να βάλει τα περιεχόμενά του στη γραμμή 1 του παραπάνω προγράμματος. Τα αρχεία με κατάληξη.h συνήθως δεν περιέχουν εντολές της C αλλά δηλώσεις συναρτήσεων που βρίσκονται μεταγλωττισμένες ήδη και πακεταρισμένες σε βιβλιοθήκες του συστήματος προκειμένου να διευκολύνουν τον προγραμματιστή. Τα αρχεία αυτά ονομάζονται αρχεία συμπερίληψης (include files) και παρέχονται από τον προμηθευτή του μεταγλωττιστή. Το συγκεκριμένο αρχείο stdio.h περιέχει δηλώσεις συναρτήσεων της βιβλιοθήκης εισόδου/εξόδου και το όνομά του προκύπτει ως συντόμευση των λέξεων standard input/output. Η συνάρτηση printf της γραμμής 5 είναι μία από αυτές τις συναρτήσεις της στάνταρ βιβλιοθήκης και υλοποιεί την εμφάνιση μηνυμάτων και τιμών στην οθόνη. Το όνομα της προκύπτει από τις λέξεις print function (συνάρτηση εκτύπωσης). Για να καλέσουμε μια συνάρτηση στη C γράφουμε το όνομά της ακολουθούμενο από τα πραγματικά της ορίσματα. Στη συγκεκριμένη περίπτωση το μοναδικό όρισμα της printf είναι μία συμβολοσειρά (string) που περιέχει το μήνυμα που θέλουμε να τυπωθεί στην οθόνη. Στην C οι συμβολοσειρές περικλείονται μέσα σε διπλά εισαγωγικά. Οτιδήποτε βρίσκεται μέσα στα διπλά εισαγωγικά τυπώνεται στην οθόνη ως έχει χωρίς η γλώσσα να το υποβάλει σε κάποια ιδιαίτερη επεξεργασία². Παρατηρήστε επίσης ότι η εντολή της γραμμής 5 τερματίζεται με το ελληνικό ερωτηματικό. Κάθε εντολής της C τερματίζεται με το ελληνικό ερωτηματικό, όπως και η εντολή return 0 της γραμμής 7. Η γραμμή 3 είναι η επικεφαλίδα (header) μίας συνάρτησης (function) με όνομα main. Θα δούμε αναλυτικά τον τρόπο ορισμού συναρτήσεων στην C αργότερα. Προς το παρόν αρκεί να πούμε ότι κάθε εκτελέσιμη εντολή σε ένα πρόγραμμα C πρέπει να βρίσκεται μέσα σε μία συνάρτηση. Μπορούμε να δώσουμε οποιοδήποτε όνομα στις συναρτήσεις που ορίζουμε (αρκεί να ακολουθούν τους κανόνες της γραμματικής της C) αλλά κάθε πρόγραμμα πρέπει να περιέχει μία συνάρτηση η οποία ονομάζεται main. Η εκτέλεση ενός προγράμματος C συνίσταται στην εκτέλεση αυτής της συνάρτησης, ή με άλλα λόγια η εκτέλεση ενός προγράμματος C ξεκινάει με την πρώτη εντολή της συνάρτησης main και συνεχίζεται με τις επόμενες μέχρι την τελευταία της εντολή. Στο συγκεκριμένο μας πρόγραμμα ο ορισμός της main δηλαδή η επικεφαλίδα της μαζί με τις εντολές που εκτελούνται όταν καλείται ²Με εξαίρεση τους χαρακτήρες % και \ για τους οποίους θα μιλήσουμε στη συνέχεια 2

3 βρίσκονται στις γραμμές 3 έως 8. Οι γραμμές 4 έως 8 είναι το σώμα (body) της συνάρτησης και πρέπει να περικλείονται μέσα σε ένα ζευγάρι άγκιστρων {}. Στη γραμμή 3 επίσης βλέπουμε ένα ζευγάρι παρενθέσεων αμέσως μετά το όνομα της συνάρτησης. Εκεί μπορούμε να δηλώσουμε τις τυπικές παραμέτρους της συνάρτησης. Στο παράδειγμά μας ορίζουμε τη main χωρίς παραμέτρους αλλά θα δούμε στη συνέχεια ότι έχουμε άλλη μία επιλογή. Επίσης βλέπουμε τη λέξη int πριν από το όνομα της συνάρτησης. Αυτό σημαίνει ότι η συνάρτηση επιστρέφει έναν ακέραιο. Στη C όλες οι συναρτήσεις πρέπει να δηλώνουν τι επιστρέφουν, ακόμα και όταν δεν επιστρέφουν κάποια τιμή. Οι συναρτήσεις μπορούν να επιστρέφουν τιμές στις καλούσες με την εντολή return. Στη γραμμή 7 βλέπουμε ότι στο πρόγραμμά μας η main επιστρέφει την τιμή 0. 3 Βασικοί τύποι και δηλώσεις μεταβλητών Στη C έχουμε τέσσερις βασικούς τύπους: int Για ακεραίους, float για αριθμούς κινητής υποδιαστολής, double για αριθμούς κινητής υποδιαστολής διπλής ακρίβειας και char για χαρακτήρες³. Το εύρος κάθε τύπου, δηλαδή το σύνολο τιμών των μεταβλητών αυτού του τύπου καθορίζεται μόνο εν μέρει από το πρότυπο της C. Το πρότυπο δίνει την ελευθερία σε αυτόν που αναπτύσσει το μεταγλωττιστή να ορίσει το εύρος τιμών για κάθε έναν από τους παραπάνω τύπους και για κάθε συγκεκριμένη αρχιτεκτονική υπολογιστή αρκεί να κινείται μέσα σε κάποια όρια. Για παράδειγμα το πρότυπο ορίζει ότι ένας ακέραιος θα πρέπει να παριστάνει αριθμούς τουλάχιστον στο εύρος από μέχρι και Αυτό δεν σημαίνει ότι σε κάθε μεταγλωττιστή θα ισχύει κάτι τέτοιο καθώς κάποιοι μεταγλωττιστές μπορεί να ορίζουν τον ακέραιο τύπο να παριστάνει μεγαλύτερο εύρος τιμών. Στην περίπτωση που ο προγραμματιστής δεν καλύπτεται από το εύρος τιμών των ακεραίων σε κάποιο συγκεκριμένο μεταγλωττιστή δίνονται κάποιες δυνατότητες περαιτέρω προσδιορισμού ενός τύπου με τους προσδιοριστές (specifiers) long και short. Συγκεκριμένα ο τύπος long int δηλώνει έναν ακέραιο μεγαλύτερου ή ίσου εύρους από εκείνο του int και ο short int δηλώνει έναν ακέραιο με εύρος μικρότερο ή ίσο από εκείνο του int. Επιπρόσθετα, δίνεται η δυνατότητα χρησιμοποίησης του προσδιοριστή long δύο φορές δηλαδή ορίζεται και ο τύπος long long int προκειμένου να δηλωθεί ένας ακέραιος με εύρος μεγαλύτερο ή ίσο από εκείνο του long int. Ο προσδιοριστής short δεν μπορεί να χρησιμοποιηθεί δύο φορές. Επίσης, όταν χρησιμοποιείται κάποιος από τους δύο παραπάνω προσδιοριστές short ή long η λέξη int μπορεί να παραληφθεί. Δηλαδή ο τύπος long long int μπορεί να γραφεί και ως long long όπως και ο τύπος short int μπορεί να γραφτεί και ως short. ³Το πρότυπο C99 ορίζει και δύο ακόμα τύπους τους _Bool και _Complex με τους οποίους δε θα ασχοληθούμε καθώς δεν αναφέρονται πουθενά στην πιστοποίηση 3

4 Οι προσδιοριστές short και long μπορούν να χρησιμοποιηθούν μόνο σε τύπους int με μία και μόνη εξαίρεση: ο long μπορεί να χρησιμοποιηθεί και με τον τύπο double. Επίσης, ένα άλλο είδος προσδιοριστών μπορεί να καθορίσει στην περίπτωση βαθμωτών τύπων (int και char) αν θέλουμε ο τύπος να θεωρείται προσημασμένος ή όχι. Οι προσδιοριστές αυτοί είναι οι signed και unsigned οι οποίοι μπαίνουν πριν από το όνομα του βασικού τύπου (και πριν από τους προσδιοριστές long ή short αν αυτοί υπάρχουν). Έτσι, επιπρόσθετα στους παραπάνω συνδυασμούς τύπων και προσδιοριστών μπορούμε να δηλώσουμε μία μεταβλητή ως τύπου signed int ή unsigned short int ή signed char. Ξανατονίζουμε ότι οι προσδιοριστές αυτοί δεν μπορούν να χρησιμοποιηθούν με τύπους κινητής υποδιαστολής δηλαδή float και double. Ο λόγος ύπαρξης αυτών των προσδιοριστών είναι το γεγονός ότι η αναπαράσταση του προσήμου σε ένα βαθμωτό τύπο απαιτεί τη δέσμευση ενός bit. Καταργώντας τη χρησιμοποίηση του bit αυτού για την αναπαράσταση του προσήμου μπορούμε να αναπαραστήσουμε αριθμούς διπλάσιου εύρους. Ένα τελευταίο σημείο είναι ότι σε περίπτωση που ο προσδιοριστής προσήμου δεν αναφέρεται, τότε ο τύπος θεωρείται προσημασμένος. Δηλαδή ο τύπος long int θεωρείται ισοδύναμος με τον προσημασμένο signed long int. Για να δηλώσουμε μια μεταβλητή πρέπει να αναφέρουμε το όνομα του τύπου της ακολουθούμενο από το όνομά της και φυσικά το ελληνικό ερωτηματικό, π.χ. κάπως έτσι: int a; ή long double b;. Για παράδειγμα στο listing 2 δηλώνεται μία μεταβλητή a στην οποία ανατίθεται η τιμή 2 και στη συνέχεια η τιμή της a τυπώνεται στην οθόνη. 1 # include <stdio.h> Listing 2: Δήλωση μεταβλητής 2 3 int main() 4 { 5 int a; 6 7 a = 2; 8 printf("%d\n", a); 9 10 return 0; 11 } Η δήλωση της μεταβλητής γίνεται στη γραμμή 5. Στη γραμμή 7 γίνεται η ανάθεση της τιμής 2 στη μεταβλητή και στην επόμενη γραμμή τυπώνεται στην οθόνη. Στη συνέχεια θα πούμε περισσότερες λεπτομέρειες για τα ιερογλυφικά που εμφανίζονται στη γραμμή 8 μέσα στα διπλά εισαγωγικά. Προς το παρόν θα πρέπει απλώς να μάθετε τη γραμμή 8 απ έξω και να βάζετε αντί για το όνομα της μεταβλητής a το όνομα της μεταβλητής που θέλετε να εμφανιστεί στην οθόνη. Επίσης, αντί για %d που χρησιμοποιείται για την εκτύπωση ακεραίων θα πρέπει να χρησιμοποιείτε %f για την εκτύπωση αριθμών κινητής υποδιαστολής. Ενα τελευταιο σημείο σχετικά με το σημείο στο οποίο επιτρέπεται να δηλώνονται μεταβλητές. Το παλιότερο πρότυπο της γλώσσας (C89, C90) ορίζει ότι όλες οι δηλώσεις τοπικών⁴ μεταβλητών πρέπει να βρίσκονται αμέσως μετά το άγκιστρο που ξεκινάει το σώμα μίας συνάρτησης και πριν από ⁴Υπάρχουν και οι καθολικές (global) μεταβλητές οι οποίες δηλώνονται έξω από το σώμα οποιασδήποτε συνάρτησης. 4

5 οποιαδήποτε εκτελέσιμη εντολή. Στο παραπάνω παράδειγμα δε θα μπορούσαμε να δηλώσουμε μία μεταβλητή π.χ. στη γραμμή 9 γιατί αυτή βρίσκεται μετά την εκτελέσιμη εντολή της γραμμής 8. Με άλλα λόγια πρέπει όλες οι δηλώσεις μεταβλητών να βρίσκονται μαζεμένες αμέσως μετά το άγκιστρο της γραμμής 4 για την περίπτωση της main. Παρόλα αυτά, είναι σύνηθες ο μεταγλωττιστής να μην γκρινιάζει αν βάλετε μία δήλωση σε κάποιο ξεκάρφωτο σημείο. Αυτό μπορεί να οφείλεται αφενός στο ότι το νεότερο πρότυπο C99 επιτρέπει τις δηλώσεις να ανακατεύονται με τον κώδικα ή αφετέρου στο ότι η C++ ανέκαθεν επέτρεπε κάτι τέτοιο οπότε πολλοί μεταγλωττιστές το επέτρεπαν σαν ευκολία. Εσείς καλύτερα να κάνετε αυτό που λένε οι κανόνες και που κατά πάσα πιθανότητα θα ισχύει σε κάθε μεταγλωττιστή της C και το οποίο θα αντιλαμβάνεται οποιοσδήποτε διορθωτής στην πιστοποίηση: Βάλτε όλες τις δηλώσεις μεταβλητών μαζεμένες αμέσως μετά το άγκιστρο της συνάρτησης μέσα στην οποία δηλώνονται και πριν από οποιαδήποτε εκτελέσιμη εντολή. Ένα τελευταίο ερώτημα που μπορεί να απασχολεί τους περίεργους είναι το εξής: Ποια είναι τα πραγματικά εύρη τιμών για τους παραπάνω τύπους; Το πρότυπο ορίζει ότι τα εύρη τιμών για κάθε τύπο πρέπει να ορίζονται ρητά στο αρχείο limits.h. Για παράδειγμα το listing 3 δείχνει πώς μπορούμε να δούμε το μεγαλύτερο μη προσημασμένο long long int στο σύστημά μας, καθώς και την ελάχιστη και μέγιστη τιμή ενός προσημασμένου long long int. 1 # include <stdio.h> 2 # include <limits.h> Listing 3: Όρια long long int 3 4 int main() 5 { 6 printf(" Maximum unsigned long long int: % llu\n", ULLONG_MAX); 7 printf(" Minimum long long int: % lld\n", LLONG_MIN); 8 printf(" Maximum long long int: % lld\n", LLONG_MAX); 9 10 return 0; 11 } Οι σταθερές ULLONG_MAX ορίζονται στο αρχείο limits.h στο οποίο μπορείτε να ανατρέξετε αν θέλετε. Επίσης, οι παραπάνω σταθερές ορίζονται και περιγράφονται στην ενότητα του προτύπου. Αντίστοιχα όρια ορίζονται στο αρχείο float.h. 4 Εισαγωγικά για τη φορμαρισμένη είσοδο και έξοδο Θα ασχοληθούμε με τη φορμαρισμένη είσοδο και έξοδο αναλυτικά σε επόμενη ενότητα αλλά είναι χρήσιμο σε πρώτη φάση να δούμε πώς μπορούμε στη C να τυπώνουμε μεταβλητές και σταθερές στην οθόνη όπως και να τις διαβάζουμε από το πληκτρολόγιο. Το απλό παράδειγμα 4 δηλώνει μία ακέραια μεταβλητή a και την τυπώνει με τη συνάρτηση printf. 1 # include <stdio.h> Listing 4: printf 2 3 int main() 5

6 4 { 5 int a; 6 7 a = 2; 8 printf("h timn tns a eivai: %d\n", a); 9 10 a = -1; 11 printf("h timn tns a eivai: %d\n", a); return 0; 14 } Αν μεταγλωττίσετε το παραπάνω πρόγραμμα και το τρέξετε θα δείτε στην οθόνη τα παρακάτω: H timn tns a eivai: 2 H timn tns a eivai: -1 Ας δούμε αναλυτικά πώς δουλεύει η printf. Δυστυχώς δεν υπάρχει δυνατότητα να γράψουμε μία εντολή της μορφής printf(a); όπως θα κάναμε σε άλλες γλώσσες για να τυπώσουμε την τιμή της a στην οθόνη⁵. Το πρώτο όρισμα της printf πρέπει πάντα να είναι μία συμβολοσειρά δηλάδη ένα σύνολο χαρακτήρων κλεισμένων μέσα σε διπλά εισαγωγικά. Όπως είδαμε και στο πρόγραμμα Hello, world! η C θα τυπώσει στην οθόνη έναν προς έναν τους χαρακτήρες της συμβολοσειράς. Η εντολή printf("hello, world!"); θα τυπώσει στην οθόνη ακριβώς το μήνυμα Hello, world! Στο πρόγραμμα 4 όμως βλέπουμε ότι η συμβολοσειρά H timn tns a eivai: %d\n δεν τυπώνεται ακριβώς έτσι. Για την ακρίβεια δεν βλέπουμε ούτε το %d ούτε το \n. Το πρώτο είναι ένας προσδιοριστής (specifier) και το δεύτερο ένας χαρακτήρας διαφυγής (escape character). Ο κανόνας είναι ότι η printf εκτός από το πρώτο όρισμα που είναι μία συμβολοσειρά και είναι υποχρεωτικό, μπορεί να δεχτεί και οσαδήποτε ακόμα ορίσματα χωρισμένα με κόμματα το ένα από το άλλο των οποίων θα τυπώσει τις τιμές. Αυτό όμως από μόνο του δεν αρκεί. Η printf θέλει να δηλώσουμε ρητά τον τρόπο με τον οποίο θέλουμε να τυπωθεί η κάθε παράσταση. Για παράδειγμα μπορεί να μη θέλουμε απλώς να τυπώσουμε μία τιμή αλλά να τη στοιχίσουμε μαζί με άλλες οπότε θα πρέπει να δηλώσουμε πόσες θέσεις θα καταλαμβάνει. Ή μπορεί να θέλουμε να τυπωθεί στοιχισμένη δεξιά ή αριστερά, να θέλουμε ο κενός χώρος όταν γίνεται στοίχιση να γεμίζει με κενά ή με μηδενικά. Στην περίπτωση των αριθμών κινητής υποδιαστολής μπορεί να έχουμε όλα τα προηγούμενα αλλά επίσης να θέλουμε να γίνεται εκτύπωση με συγκεκριμένο αριθμό δεκαδικών ψηφίων όπως επίσης μπορεί να θέλουμε εκτύπωση σε απλή ή επιστημονική γραφή. Οπότε για κάθε παράσταση που ακολουθεί την αρχική συμβολοσειρά και θέλουμε να τυπωθεί, πρέπει να συμπεριλάβουμε τον αντίστοιχο προσδιοριστή μέσα στη συμβολοσειρά. Οι προσδιοριστές ξεκινούν πάντα με το χαρακτήρα %. Πρέπει να υπάρχουν τόσοι προσδιοριστές όσες και παραστάσεις μετά τη συμβολοσειρά δηλαδή τα % μέσα στη συμβολοσειρά πρέπει να είναι τόσα όσες και οι παραστάσεις που την ακολουθούν. Ο κάθε προσδιοριστής αντιστοιχίζεται σε μία παράσταση όπως τους διαβάζουμε από τα αριστερά προς τα ⁵αν και μπορούμε να γράψουμε μία δική μας συνάρτηση για αυτό το σκοπό 6

7 δεξιά. Δηλαδή στην εντολή printf("mpla %d mplou %u mpli %x", a, b, c); ο προσδιοριστής %d αντιστοιχεί στη μεταβλητή a, ο προσδιοριστής %u στη μεταβλητή b και ο %x στη c. Τελικά, όταν η printf εκτελείται ξεκινά να τυπώνει έναν προς έναν τους χαρακτήρες της συμβολοσειράς που αποτελεί το πρώτο της όρισμα από τα αριστερά προς τα δεξιά. Αν συναντήσει έναν προσδιοριστή, τον επεξεργάζεται και ανάλογα τυπώνει την αντίστοιχη παράσταση (χωρίς να τυπώσει τον προσδιοριστή). Συνεχίζει με τον ίδιο τρόπο μέχρι το τέλος της συμβολοσειράς. Στο τελευταίο παράδειγμα δηλαδή η printf θα τύπωνε τους χαρακτήρες mpla και ένα κενό. Μετά θα συναντούσε τον προσδιοριστή %d οπότε θα τύπωνε την τιμή της μεταβλητής a⁶. Μετά θα τύπωνε ένα κενό και τους χαρακτήρες mplou και ένα κενό. Έπειτα θα έβρισκε τον προσδιοριστή %u οπότε θα τύπωνε την τιμή της αντίστοιχης παράστασης δηλαδή της μεταβλητής b κ.ο.κ. Με ανάλογο τρόπο μπορεί κανείς να χρησιμοποιήσει τη συνάρτηση scanf για να διαβάσει τιμές μεταβλητών από το πληκτρολόγιο. Με την παρακάτω εντολή διαβάζεται μία προσημασμένη ακέραια τιμή από το πληκτρολόγιο και αποθηκεύεται στη μεταβλητή a: scanf("%d", &a);. Προσοχή στο & που βρίσκεται πριν από το όνομα της μεταβλητής. Στην ενότητα 4.1 που ακολουθεί περιγράφονται σχετικά πιο αναλυτικά οι προσδιοριστές χωρίς να περιγράφονται πλήρως. Ακόμα και σε αυτήν την απλουστευμένη παρουσίαση είναι αρκετά πολύπλοκοι. Δεν χρειάζεται να τους διαβάσετε και να τους κατανοήσετε πλήρως σε πρώτη ανάγνωση. Απλώς κρατήστε τους σαν αναφορά. Αυτό που χρειάζεται να ξέρετε σε πρώτη φάση είναι ότι μπορείτε να χρησιμοποιείτε τον προσδιοριστή %d για ακέραιους, τον %u για μη-προσημασμένους ακέραιους και τον %c για χαρακτήρες. 4.1 Προσδιοριστές Η σύνταξη των προσδιοριστών είναι αρκετά πολύπλοκη και περιγράφεται αναλυτικά στην ενότητα του προτύπου C99. Για λόγους πληρότητας και μόνο τους αναφέρουμε εδώ αλλά πρέπει να τονίσουμε ότι δεν είναι απαραίτητο να γνωρίζει κανείς όλα τα παρακάτω για να ξεκινήσει να μαθαίνει την C. Η μορφή ενός προσδιοριστή είναι: Μία ή περισσότερες σημαίες (flags) (προαιρετικά), ένα ελάχιστο μήκος πεδίου (προαιρετικά), η ακρίβεια (προαιρετικά), ένας τροποποιητής μεγέθους (προαιρετικά αλλά χρησιμοποιείται συχνά) και ένας μετατροπέας. Από τα παραπάνω το πιο σημαντικό είναι το τελευταίο δηλαδή ο μετατροπέας. Αυτός καθορίζει ως τι θα χειριστεί η printf την παράσταση που της ζητείται να τυπώσει. Το παρακάτω παράδειγμα (listing 5) βοηθάει να γίνει αυτό πιο κατανοητό: 1 # include <stdio.h> Listing 5: Μυστηριώδης printf ⁶σύμφωνα με τον τρόπο που ορίζει ο προσδιοριστής %d, θα τους δούμε αναλυτικά στη συνέχεια 7

8 2 3 int main() 4 { 5 int a = -1; 6 7 printf("h timn tns a eivai: %d\n", a); 8 printf("h timn tns a eivai: %u\n", a); 9 10 return 0; 11 } Αν τρέξετε το παραπάνω σε έναν υπολογιστή που αποθηκεύει ακεραίους με τη μορφή συμπληρώματος ως προς 2 θα δείτε στην οθόνη τα εξής: H timn tns a eivai: -1 H timn tns a eivai: Τελικά, ποια είναι η τιμή της μεταβλητής a; Γιατί η πρώτη printf τυπώνει -1 ενώ η δεύτερη ; Κατά μία έννοια η μεταβλητή a είναι και τα δύο. Από φυσική άποψη, από την άποψη του υπολογιστή στον οποίο έτρεξε το παραπάνω παράδειγμα δηλαδή, η μεταβλητή a είναι 4 συνεχόμενα bytes δηλαδή 32 bits τα οποία έχουν όλα την τιμή 1. Αν αυτά τα 32 bits τα θεωρήσει κανείς ένα προσημασμένο ακέραιο αριθμό τότε στη μορφή συμπληρώματος ως προς 2 αυτός ο αριθμός θα ήταν ο -1. Αν τα θεωρήσει κανείς ένα μη προσημασμένο αριθμό τότε είναι ο αριθμός = Οπότε τελικά ο μετατροπέας που ακολουθεί το % στην printf καθορίζει ως τι πρέπει η συνάρτηση να τυπώσει την παράσταση που ακολουθεί. Ο μετατροπέας d στη γραμμή 7 λέει στην printf να τυπώσει την a ως προσημασμένο ακέραιο (-1) ενώ ο u στη γραμμή 8 ως μη προσημασμένο ακέραιο ( ). Οι πιο συνηθισμένοι μετατροπείς είναι: d,i Μετατροπή σε προσημασμένο ακέραιο. u,o,x,x Μετατροπή σε μη-προσημασμένο ακέραιο ο οποίος θα τυπώθεί ως δεκαδικός (u), οκταδικός (o), δεκαεξαδικός με πεζά (x) ή δεκαεξαδικός με κεφαλαία (X). f,f,e,e,g,g,a,a Μετατροπή σε τύπο double ο οποίος θα τυπωθεί ως αριθμός με δεκαδικά ψηφία (f,f), σε επιστημονική αναπαράσταση με βάση και εκθέτη (e,e), σε κάποια από τις δύο προηγούμενες μορφές ανάλογα με κάποια κριτήρια (g,g) ή σε επιστημονική αναπαράσταση με βάση το 2 (a,a). Η διαφορά του πεζού μετατροπέα (f,e,g,a) από τον αντίστοιχο κεφαλαίο (F,E,G,A) είναι στην περίπτωση που πρέπει να εκτυπωθεί και κάποιος χαρακτήρας. Οι μετατροπείς της πρώτης ομάδας τον τυπώνουν πεζό ενώ της δεύτερης κεφαλαίο. c Μετατροπή σε χαρακτήρα. s Μετατροπή σε συμβολοσειρά. p Μετατροπή σε δείκτη. 8

9 n Δε θέλετε να μάθετε⁷. % Απλώς τυπώνει το %. Το παράδειγμα 6 ίσως είναι διαφωτιστικό: 1 # include <stdio.h> Listing 6: Διάφοροι μετατροπείς 2 3 int main() 4 { 5 int a = 74; 6 7 printf(" Metatropeas d: %d\n", a); 8 printf(" Metatropeas i: %i\n", a); 9 printf(" Metatropeas u: %u\n", a); 10 printf(" Metatropeas o: %o\n", a); 11 printf(" Metatropeas x: %x\n", a); 12 printf(" Metatropeas X: %X\n", a); 13 printf(" Metatropeas c: %c\n", a); 14 printf(" Metatropeas p: %p\n", a); return 0; 17 } Αν το τρέξετε θα δείτε στην οθόνη το παρακάτω: Metatropeas d: 74 Metatropeas i: 74 Metatropeas u: 74 Metatropeas o: 112 Metatropeas x: 4a Metatropeas X: 4A Metatropeas c: J Metatropeas p: 0x4a Οι προσδιοριστές d και i είναι το ίδιο πράγμα. Επειδή ο αριθμός 74 είναι θετικός ακέραιος δεν αλλάζει κάτι αν τον θεωρήσει κανείς μη-προσημασμένο (τρίτη γραμμή, μετατροπέας u). Η τέταρτη γραμμή είναι ο αριθμός 74 σε οκταδικό σύστημα ( = 74). Στην πέμπτη και έκτη γραμμή είναι η δεκαεξαδική αναπαράσταση του αριθμού ( = 74) με πεζό και κεφαλαίο το a αντίστοιχα. Στην επόμενη βλέπουμε ότι ο χαρακτήρας με κωδικό ASCII 74 είναι ο J. Και στο τέλος βλέπουμε τη δεκαεξαδική αναπαράσταση του 74 με το πρόθεμα 0x. Προαιρετικά στους προσδιοριστές μπορούμε να χρησιμοποιήσουμε πριν από το μετατροπέα έναν τροποποιητή μεγέθους. Αυτοί είναι⁸: ⁷Αφού επιμένετε: Η παράσταση θεωρείται δείκτης σε έναν μη-προσημασμένο ακέραιο. Σε αυτόν η printf γράφει πόσους χαρακτήρες έχει τυπώσει μέχρι εκείνη τη στιγμή. ⁸Υπάρχουν και οι j, z, t στους οποίους δε θα αναφερθούμε. 9

10 hh Σημαίνει ότι ο επόμενος μετατροπέας αναφέρεται σε έναν χαρακτήρα. h Ο επόμενος μετατροπέας αναφέρεται σε έναν short. l Ο επόμενος μετατροπέας αναφέρεται σε έναν long int. ll Ο επόμενος μετατροπέας αναφέρεται σε έναν long long int. L Ο επόμενος μετατροπέας αναφέρεται σε έναν long double. 5 Τελεστές Η C παρέχει μία πληθώρα τελεστών. Σε γενικές γραμμές μπορούμε να τους διακρίνουμε σε αριθμητικούς, συσχετιστικούς, λογικούς, bit-τελεστές και κάποιους ειδικούς τελεστές που δεν μπορούν να ενταχτούν σε κάποια από τις παραπάνω καθώς εκτελούν ιδιαίτερες λειτουργίες. 5.1 Αριθμητικοί τελεστές Οι αριθμητικοί τελεστές πραγματοποιούν αριθμητικές πράξεις στα ορίσματά τους. Μπορούμε και αυτούς περαιτέρω να τους διακρίνουμε σε κατηγορίες. Υπάρχουν για παράδειγμα δυαδικοί τελεστές δηλαδή τελεστές που επιδρούν σε δύο ορίσματα και δίνουν ένα αποτέλεσμα σε αντιδιαστολή με τους μοναδικούς τελεστές οι οποίοι δέχονται ένα και μόνο όρισμα. Οι τελεστές αυτοαύξησης και αυτομείωσης (οι οποίοι είναι μοναδικοί) μπορούν να χρησιμοποιηθούν είτε ως προθεματικοί (πριν το όρισμά τους) είτε ως μεταθεματικοί (μετά το όρισμά τους). Πίνακας 1: Αριθμητικοί τελεστές Τελεστής Πράξη Τύπος + Πρόσθεση Δυαδικός⁹ - Αφαίρεση Δυαδικός * Πολλαπλασιασμός Δυαδικός / Διαίρεση Δυαδικός % Ακέραιο υπόλοιπο Δυαδικός ++ Μοναδιαία αύξηση Μοναδικός -- Μοναδιαία μείωση Μοναδικός Στον πίνακα 5.1 αναγράφονται οι δυαδικοί αριθμητικοί τελεστές της γλώσσας και η λειτουργία τους. Οι τελεστές πρόσθεσης, αφαίρεσης, διαίρεσης και πολλαπλασιασμού έχουν τις προφανείς σημασίες. Ένα σημείο που είναι καλό να το έχει κανείς υπόψη του είναι ότι όταν τα ορίσματα είναι διαφορετικών τύπων τότε σιωπηρά η γλώσσα πραγματοποιεί κάποιες μετατροπές ώστε να μην υπάρχει απώλεια στην ακρίβεια του αποτελέσματος. Δηλαδή η τιμή του μικρότερου τύπου μετατρέπεται στον μεγαλύτερο. Για παράδειγμα αν πρόκειται να πραγματοποιηθεί η πράξη a + b και ο a είναι float ενώ ο b είναι long double, τότε η τιμή του a μετατρέπεται σε κάποιο προσωρινό χώρο αποθήκευσης 10

11 σε long double και μετά προστίθεται με την τιμή του b. Τονίζουμε ότι η μεταβλητή a δεν αλλάζει αλλά η τιμή της αποθήκευεται σε έναν άλλο χώρο με διαφορετική μορφή. Μία ακόμα παρατήρηση για τους παραπάνω προφανείς τελεστές είναι ότι ο τελεστής διαίρεσης αποκόπτει τα δεκαδικά ψηφία του αποτελέσματος όταν τα ορίσματά του είναι ακέραιοι, δηλαδή πραγματοποιεί ακέραια διαίρεση. Επίσης ο τελεστής ακέραιου υπολοίπου πραγματοποιείται μόνο σε ακεραίους. Σε περίπτωση που δοθούν ορίσματα κινητής υποδιαστολής τότε αποκόπτεται το δεκαδικό τους μέρος. Τέλος, οι τελεστές μοναδιαίας αύξησης και μείωσης δέχονται ένα μόνο όρισμα το οποίο αυξάνουν ή μειώνουν κατά μία μονάδα αντίστοιχα. Μπορούν να χρησιμοποιηθούν ως προθεματικοί τελεστές, δηλαδή πριν το όρισμά τους έτσι: ++a ή --a αλλά και ως μεταθεματικοί τελεστές, δηλαδή μετά το όρισμά τους, έτσι: a++ ή a--. Και στις δύο περιπτώσεις το αποτέλεσμα θα είναι το όρισμα να αυξηθεί ή να μειωθεί κατά μία μονάδα. Η διαφορά είναι ότι στην περίπτωση του προθεματικού τελεστή η αύξηση θα γίνει πριν η γλώσσα υπολογίσει την τιμή της έκφρασης ++a ενώ στην περίπτωση του μεταθεματικού τελεστή θα υπολογιστεί μετά. Δείτε το πρόγραμμα 7. 1 # include <stdio.h> 2 3 int main() 4 { 5 int a; 6 7 a = 2; Listing 7: Μοναδιαία αύξηση προ- και μεταθεματικά 8 printf("h a me metathematiko telesti ayxisis: %d\n", a++); 9 printf(" Telika i a eivai: %d\n", a); a = 2; 12 printf("h a me prothematiko telesti ayxisis: %d\n", ++a); 13 printf(" Telika i a eivai: %d\n", a); return 0; 16 } Οι γραμμές 7 έως 9 και 11 έως 13 κάνουν περίπου το ίδιο πράγμα: Θέτουν την τιμή 2 στη μεταβλητή a, μετά τυπώνουν την τιμή της έκφρασης a++ ή της ++a στις γραμμές 8 και 12 αντίστοιχα και τέλος τυπώνουν την τιμή της μεταβλητής a στις γραμμές 9 και 13. Αν τρέξετε το πρόγραμμα θα δείτε ότι τόσο στη γραμμή 9 όσο και στη γραμμή 13 η τελική τιμή της μεταβλητής a είναι 3. Δηλαδή, τελικά η τιμή της a αυξάνεται κατά μία μονάδα είτε χρησιμοποιηθεί ο προθεματικός είτε ο μεταθεματικός τελεστής. Η διαφορά είναι ότι η γραμμή 8 τυπώνει στην οθόνη 2 ενώ η γραμμή 12 τυπώνει 3. Ο λόγος είναι ότι στη γραμμή 8 πρώτα υπολογίζεται η τιμή της μεταβλητής a και δίνεται για επεξεργασία στην printf και μετά (αφότου τυπωθεί) αυξάνεται η τιμή της κατά 1. Ενώ στη γραμμή 12, πρώτα αυξάνεται η τιμή της μεταβλητής a κατά 1 και μετά αυτό που προκύπτει δίνεται στην printf για επεξεργασία. 11

12 5.2 Bit τελεστές Μια σειρά τελεστών στη C εκτελεί πράξεις στα επιμέρους bit των ορισμάτων τους. Οι τελεστές αυτοί εφαρμόζονται μόνο σε ορίσματα ακέραιου τύπου. Στον πίνακα 5.2 φαίνονται οι τελεστές αυτοί και Πίνακας 2: Bit τελεστές Τελεστής Πράξη & Λογικό ΚΑΙ Λογικό Ή ^ Λογικό ΑΠΟΚΛΕΙΣΤΙΚΟ Η ~ Συμπλήρωμα ως προς ένα << Αριστερή ολίσθηση >> Δεξιά ολίσθηση η πράξη που ο καθένας πραγματοποιεί. Όλοι είναι δυαδικοί τελεστές εκτός από τον ~ ο οποίος είναι προθεματικός μοναδικός τελεστής. Οι τελεστές &, και ^ εφαρμόζουν αντίστοιχα τις λογικές πράξεις ΚΑΙ, Η και ΑΠΟΚΛΕΙΣΤΙΚΟ Ή αντίστοιχα στα αντίστοιχα bit των ορισμάτων τους. Για παράδειγμα ¹⁰ ισχύουν οι παρακάτω πράξεις μεταξύ των αριθμών 45 = (101101) 2 και 24 = (011000) 2 : 45 & 24 = & = = 8, = = 61, 45 ^ 24 = = 53. Οι τελεστές << και >> ολισθαίνουν τα bits του πρώτου τους ορίσματος προς τα αριστερά ή τα δεξιά αντίστοιχα τόσες φορές όσες το δεύτερό τους όρισμα. Π.χ. 45 << 1 = << 1 = ή 45 << 2 = << 2 = Τα bits που χάνονται όταν βγαίνουν από τα αριστερά κατά την αριστερή ολίσθηση χάνονται στα αλήθεια. Τα bits που μένουν κενά από τα δεξιά κατά την αριστερή ολίσθηση γίνονται μηδέν. Για μη προσημασμένους ακέραιους η πράξη της ολίσθησης αριστερά κατά 1 είναι ισοδύναμη με τον πολλαπλασιασμό με το 2, η ολίσθηση αριστέρα κατά 2 είναι ισοδύναμη με τον πολλαπλασιασμό με το 4 κ.ο.κ. Αντίστοιχα, όταν πραγματοποιείται ολίσθηση προς τα δεξιά, τα bits που βγαίνουν από το δεξί άκρο χάνονται. Τα bits που μένουν κενά από τα αριστερά γεμίζουν με μηδενικά. Η ολίσθηση προς τα δεξιά κατά μία θέση σε μη προσημασμένους ακεραίους είναι ισοδύναμη με την ακέραια διαίρεση με το δύο, η ολίσθηση κατά δύο θέσεις είναι ισοδύναμη με τη διαίρεση με το τέσσερα κ.ο.κ. Όλα αυτά είναι σχεδόν προφανή για τους μη προσημασμένους ακέραιους τύπους και σχετίζονται διαισθητικά με την πράξη του πολλαπλασιασμού και της διαίρεσης με το δύο αλλά τι γίνεται με τους προσημασμένους; Θυμηθείτε ότι σε μορφή συμπληρώματος ως προς δύο το πιο αριστερό bit παριστάνει το πρόσημο οπότε ο αριθμός (1111) 2 είναι το 1 σε έναν φανταστικό 4-bit υπολογιστή. Αν αυτό ολισθήσει δεξιά κατά 1 και το κενό που μένει αριστερά γεμίσει με το μηδέν, τότε ο αριθμός αυτός γίνεται (0111) 2 = 7 οπότε χάνεται το θέμα του πολλαπλασιασμού. Προκειμένου να μην εμπλακεί σε τέτοιου είδους διλήμματα τα οποία ίσως δεν έχουν και πρακτικό νόημα, το πρότυπο της C δεν ορίζει τι γίνεται σε περιπτώσεις ολίσθησης αρνητικών προσημασμένων ακέραιων. Οπότε τελικά, οι τελεστές αυτοί είναι φρόνιμο να χρησιμοποιούνται σε μη-προσημασμένους ακέραιους ¹⁰Στα παρακάτω παραδείγματα το ίσον χρησιμοποιείται με την έννοια των μαθηματικών και όχι ως ο τελεστής ανάθεσης τιμής της C. 12

13 τύπους. Τέλος, ο τελεστής συμπληρώματος ως προς ένα ~ αντιστρέφει τα bits του ορίσματός του, δηλαδή ~(1101) = Συσχετιστικοί τελεστές Είναι οι τελεστές που χρησιμοποιούνται οπουδήποτε απαιτείται μία λογική συνθήκη η οποία είτε ισχύει είτε όχι. Μπορεί κανείς να τους θεωρήσει ως δυαδικούς τελεστές οι οποίοι επιστρέφουν τη λογική τιμή αληθής ή τη λογική τιμή ψευδής όποτε ισχύει μία συγκεκριμένη σχέση ανάμεσα στα δύο τους ορίσματα. Οι τελεστές φαίνονται στον πίνακα 5.3 Ένα σημείο που πρέπει να τονιστεί Πίνακας 3: Συσχετιστικοί τελεστές Τελεστής Σχέση Τελεστής Σχέση < Μικρότερο <= Μικρότερο ή ίσο > Μεγαλύτερο >= Μεγαλύτερο ή ίσο == Ίσο!= Διάφορο είναι ότι στην πραγματικότητα δεν υπάρχουν ιδιαίτερες τιμές για τις παραστάσεις αληθής και ψευδής. Η ακέραια τιμή 0 θεωρείται ότι σημαίνει ψευδής ενώ οποιαδήποτε μη-μηδενική ακέραια τιμή θεωρείται αληθής. Οπότε τελικά οι συσχετιστικοί τελεστές μπορούν να θεωρηθούν ως ειδικού τύπου αριθμητικοί τελεστές. Δηλαδή ο τελεστής < μπορούμε να θεωρήσουμε ότι είναι ένας αριθμητικός τελεστής που δίνει αποτέλεσμα 1 όταν το πρώτο του όρισμα είναι μικρότερο από το δεύτερο και 0 όταν αυτό δεν ισχύει. Επίσης μεγάλη προσοχή χρειάζεται και στον τελεστή ισότητας == τον οποίο μπορεί κανείς να μπερδέψει εύκολα με τον τελεστή απόδοσης τιμής =. Ο πρώτος ελέγχει αν τα δύο του ορίσματα είναι ίσα και επιστρέφει 1 αν είναι ή 0 αν δεν είναι. Ο τελεστής απόδοσης τιμής από την άλλη μεριά υπολογίζει την τιμή του δεύτερου ορίσματός του και το αποθηκεύει στη θέση μνήμης που αντιστοιχεί στο πρώτο όρισμα. Η πράξη αυτή θεωρείται ως έκφραση η οποία έχει τιμή ίση με την τιμή που τελικά παίρνει το αριστερό όρισμα. Οπότε αν κανείς θέλει να ελέγξει ότι η μεταβλητή a έχει την τιμή 5 και αντί να γράψει a == 5 γράψει a = 5 τότε η γλώσσα θα θεωρεί ότι αυτή η συνθήκη πάντα αληθεύει καθώς το 5 είναι μία μη-μηδενική τιμή οπότε αληθής. 5.4 Λογικοί τελεστές Λογικές εκφράσεις που προκύπτουν με τελεστές όπως αυτοί της προηγούμενης ενότητας μπορούν να συνδυαστούν με λογικούς τελεστές οι οποίοι είναι το λογικό ΚΑΙ &&, το λογικό Ή και το λογικό ΟΧΙ (λογική άρνηση)!. Για παράδειγμα η έκφραση a == 2 && b == 5 αληθεύει αν η a είναι ίση με 2 και η b είναι ίση με 5. Η έκφραση a == 2 b == 5 αληθεύει αν η a είναι ίση με 2 ή αν η b είναι ίση με 5. Τέλος ο λογικός τελεστής! αντιστρέφει τη λογική τιμή του ορίσματός του, δηλαδή αν μία έκφραση a είναι αληθής, τότε η!a είναι ψευδής και το αντίστροφο. Ο τελεστής! θέλει ιδιαίτερη προσοχή καθώς έχει υψηλότερη προτεραιότητα από τους συσχετιστικούς τελεστές 13

14 οπότε η έκφραση!a > -1 δεν σημαίνει!(a > -1) αλλά (!a) > -1 η οποία θα είναι πάντα αληθής ανεξάρτητα από την τιμή του a. 5.5 Τελεστές ανάθεσης Εκτός από τον απλό τελεστή ανάθεσης = υπάρχουν και οι τελεστές +=, -=, /=, *=, %=, &=, =, ^=, <<= και >>=. Ο τελεστής += για παράδειγμα προσθέτει στο πρώτο του όρισμα το δεύτερο, δηλαδή η εντολή a += 5; προσθέτει στη μεταβλητή a την τιμή 5. Είναι κατά κάποιο τρόπο μία συντόμευση της εντολής a = a + 5; που θα έγραφε κανείς σε μία πιο φιλική γλώσσα. Κατά αντίστοιχο τρόπο λειτουργούν και οι υπόλοιποι τελεστές. Μία ιδιαιτερότητα του τελετή απόδοσης τιμής στη C είναι ότι μπορεί να χρησιμοποιηθεί σε μία αλυσίδα αναθέσεων π.χ. σαν αυτήν: a = b = c = 5; η οποία εκτελείται από τα δεξιά προς τα αριστερά και έχει σαν αποτέλεσμα η τιμή 5 να αποθηκευτεί στη μεταβλητή c, στη συνέχεια η τιμής αυτής (5) να αποθηκευτεί στη b και στη συνέχεια η τιμή αυτής να αποθηκευτεί στην a. 5.6 Άλλοι τελεστές Υπάρχουν διάφοροι άλλοι τελεστές στη C (όχι πολλοί) όπως ο τελεστής κόμμα,, ο τελεστής απόδοσης τιμής υπό συνθήκη?, ο τελεστής sizeof, ο τελεστής [] για δεικτοδότηση πίνακα, ο τελεστής διεύθυνσης &, ο τελεστής αποαναφοροποίησης *, ο τελεστής μέλους struct. και ο τελεστής -> για τους οποίους θα μιλήσουμε αργότερα. 14

1η+2η εβδομάδα. 1 Ιστορία της C. 24 Μαρτίου 2014

1η+2η εβδομάδα. 1 Ιστορία της C. 24 Μαρτίου 2014 1η+2η εβδομάδα 24 Μαρτίου 2014 1 Ιστορία της C Η γλώσσα C επινοήθηκε στα εργαστήρια Bell της AT&T την περίοδο από το 1969 έως το 1973 κατά κύριο λόγο από τον Dennis Ritchie. Εκείνη τη χρονική περίοδο υπήρχαν

Διαβάστε περισσότερα

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

Διαβάστε περισσότερα

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 3ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΕΚΤΥΠΩΣΗ ΚΕΙΜΕΝΟΥ Ένα κείμενο μπορεί να εκχωρηθεί ως τιμή μιας μεταβλητής

Διαβάστε περισσότερα

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

Διαβάστε περισσότερα

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης Γλώσσες Προγραμματισμού Εργαστήριο 2ο Τύποι Δεδομένων - Είσοδος / Έξοδος Εργαστήριο 2ο Περίγραμμα Εργαστηριακής Άσκησης Εργαστήριο 2ο...1 Θεωρία εργαστηρίου...2 Τύποι δεδομένων...2 Η συνάρτηση printf()...3

Διαβάστε περισσότερα

5ο σετ σημειώσεων - Δείκτες

5ο σετ σημειώσεων - Δείκτες 5ο σετ σημειώσεων - Δείκτες 11 Ιουνίου 01 1 Γενικά Σύμφωνα με το γενικό μοντέλο υπολογιστή, ένας υπολογιστής είναι μία μηχανή που διαθέτει μία κεντρική μονάδα επεξεργασίας η οποία μπορεί μεταξύ άλλων να

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 4: Τύποι Δεδομένων και τελεστές Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

Διαβάστε περισσότερα

Εντολές ελέγχου ροής if, for, while, do-while

Εντολές ελέγχου ροής if, for, while, do-while Εντολές ελέγχου ροής if, for, while, do-while 1 Μαρτίου 014 1 Εντολές εκτέλεσης υπό συνθήκη Μπορούμε να εκτελέσουμε εντολές της γλώσσας σε περίπτωση που κάποια συνθήκη ισχύει χρησιμοποιώντας την εντολή

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές Δρ. Γιώργος Λαμπρινίδης amprinidis@pharm.uoa.gr 1 Αριθμητικοί Τελεστές + πρόσθεση - αφαίρεση * πολλαπλασιασμός / διαίρεση Προσοχή! Διαίρεση

Διαβάστε περισσότερα

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

Διαβάστε περισσότερα

Μεταβλητές τύπου χαρακτήρα

Μεταβλητές τύπου χαρακτήρα Μεταβλητές τύπου χαρακτήρα 31 Μαρτίου 014 1 Μεταβλητές τύπου char Για χειρισμό χαρακτήρων η C διαθέτει τον τύπο char. Ο τύπος είναι βαθμωτός δηλαδή ακέραιης αναπαράστασης. Τυπικά έχει μέγεθος ενός byte

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 2: Μεταβλητές και Σταθερές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης

Διαβάστε περισσότερα

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Νέο Πρόγραμμα

Διαβάστε περισσότερα

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014 Πίνακες 0 Μαρτίου 014 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα του συγκεκριμένου τύπου. Στην περίπτωση που θέλουμε

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012 ο σετ σημειώσεων 19 Μαρτίου 01 1 Εντολές εκτέλεσης υπό συνθήκη Μπορούμε να εκτελέσουμε εντολές της γλώσσας σε περίπτωση που κάποια συνθήκη ισχύει χρησιμοποιώντας την εντολή if. Συντάσσεται ως εξής: 1 if

Διαβάστε περισσότερα

Τύποι Δεδομένων Είσοδος/Έξοδος

Τύποι Δεδομένων Είσοδος/Έξοδος Εργαστήριο 2 ο Τύποι Δεδομένων Είσοδος/Έξοδος Εισαγωγή Σκοπός του εργαστηρίου αυτού είναι η εισαγωγή μας στους τύπους δεδομένων της C και η εξοικείωση μας με συναρτήσεις του ρεπερτορίου της ANSI C σχετικές

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Συναρτήσεις εισόδου/εξόδου, τελεστές Η συνάρτηση scanf() είσοδος δεδομένων Διαβάζει από το πληκτρολόγιο (stdin) μορφοποιημένες τιμές μεταβλητών. scanf (ΣΕΙΡΑ_ΕΛΕΓΧΟΥ, δείκτης_μεταβλητής-1,

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 3: Εισαγωγή και Εμφάνιση Δεδομένων Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Δεύτερη Διάλεξη Βασικά στοιχεία της γλώσσας προγραμματισμού C Μία γλώσσα προγραμματισμού όπως και μια ανθρώπινη γλώσσα μπορεί να μελετηθεί ως προς το αλφάβητό της,

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 4: Τελεστές Τελεστές: Τελεστής Ανάθεσης 2 Το σύμβολο της ανάθεσης είναι το = Προσοχή: το σύμβολο ελέγχου ισότητας είναι το ==. Η μορφή των προτάσεων ανάθεσης είναι:

Διαβάστε περισσότερα

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1 Γλώσσα Προγραμματισμού C++ ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1 Τα δεδομένα Οι σταθερές Τα δεδομένα (πληροφορίες-data) είναι απαραίτητα στοιχεία ενός προγράμματος, καθώς οι βασικές λειτουργίες ενός προγράμματος είναι

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Παρατηρήσεις

Διαβάστε περισσότερα

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

Διαβάστε περισσότερα

Βασικές Αρχές Προγραμματισμού

Βασικές Αρχές Προγραμματισμού Βασικές Αρχές Προγραμματισμού Κεφάλαιο 2 ΗγλώσσαC Ιστορική Αναδρομή ΗανάπτυξητηςC ξεκίνησε το 1972 στα εργαστήρια Bell από τον Dennis Ritchie με σκοπό την ανάπτυξη ενός λειτουργικού συστήματος για τον

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

Διαβάστε περισσότερα

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Η C, όπως έχουμε αναφέρει, είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε για πρώτη φορά το 1972 από τον Dennis Ritchie στα AT&T Bell

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

Διαβάστε περισσότερα

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 Οικονόμου Βαγγέλησ Διάλεξη Νο 2 Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 1 Η έννοια τησ μεταβλητήσ έδωςε λύςη ςτο πρόβλημα τησ αναφοράσ ςτην κύρια μνήμη του υπολογιςτή. Οι γλώςςεσ προγραμματιςμού υποςτηρίζουν

Διαβάστε περισσότερα

Διαδικασία Ανάπτυξης Λογισμικού

Διαδικασία Ανάπτυξης Λογισμικού Διαδικασία Ανάπτυξης Λογισμικού Ανάλυση Απαιτήσεων (προϋποθέτει κατανόηση του προβλήματος και τη συλλογή πληροφοριών και των απαιτήσεων από το σύστημα) Σχεδιασμός (ορισμός διεργασιών για να ικανοποιηθούν

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C

ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C Σκοπός της Άσκησης ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραµµατισµού C: τη δοµή των προγραµµάτων της,

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C Εργαστήριο 2 Τµήµα Πληροφορικής και Τηλεπικοινωνιών οµή προγράµµατος Οδηγίες προεπεξεργαστή #include... # define... τµήµα δηλώσεων ηλωσεις και ορισµοί µεταβλητών. ηλωσεις συναρτήσεων

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι δείκτες στη C Η έννοια του δείκτη Την έννοια του δείκτη τη συναντήσαμε σε προηγούμενα μαθήματα. Η συνάρτηση scanf(), καταχωρίζει τιμές σε μεταβλητές χρησιμοποιώντας τον τελεστή

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Βιβλιογραφία "C Προγραμματισμός", Deitel & Deitel, Πέμπτη Έκδοση, Εκδόσεις

Διαβάστε περισσότερα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα Η ΓΛΩΣΣΑ C Η C είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε στις αρχές της δεκαετίας του 70 από τον Dennis Ritchie στα Bell Labs. Η σημερινή μορφή της γλώσσας ακολουθεί το πρότυπο

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

Διαβάστε περισσότερα

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Τελεστές - Κατηγορίες Εκφράσεις - Κατηγορίες Υπολογισμός εκφράσεων Προτάσεις - Κατηγορίες

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός

Διαβάστε περισσότερα

Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής.

Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής. Από το βιβλίο C: Βήµα-Πρός-Βήµα, Κεφάλαιο 3ο Συγγραφείς: Οµάδα Waite, Mitchell Waite και Stephen Prata Εκδότης: Μ. Γκιούρδας Ανατύπωση σε ηλεκτρονική µορφή: Αλέξανδρος Στεφανίδης 3.4 Τύποι εδοµένων τής

Διαβάστε περισσότερα

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο) Προγραμματισμός Η/Υ Ενότητα 2β: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση της έννοιας του Τελεστή

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');

Διαβάστε περισσότερα

TMHMA TEXNΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛ/ΝΙΩΝ Προγραμματισμός Ι ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ , Α ΕΞΑΜΗΝΟ Βασίλης Μποζαντζής. Βασίλης Μποζαντζής

TMHMA TEXNΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛ/ΝΙΩΝ Προγραμματισμός Ι ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ , Α ΕΞΑΜΗΝΟ Βασίλης Μποζαντζής. Βασίλης Μποζαντζής TMHMA TEXNΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛ/ΝΙΩΝ Προγραμματισμός Ι ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010 2011, Α ΕΞΑΜΗΝΟ Βασίλης Μποζαντζής Βασίλης Μποζαντζής Εισαγωγικά Οι 32 δεσμευμένες λέξεις σύμφωνα με το πρότυπο ANSI

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Συναρτήσεις εισόδου/εξόδου, τελεστές Η συνάρτηση scanf() είσοδος δεδομένων Διαβάζει από το πληκτρολόγιο (stdin) μορφοποιημένες τιμές μεταβλητών. scanf (ΣΕΙΡΑ_ΕΛΕΓΧΟΥ, δείκτης_μεταβλητής-1,

Διαβάστε περισσότερα

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Εισαγωγικά

Διαβάστε περισσότερα

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Απλά Προγράμματα Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Οι Βασικοί κανόνες Κατανόηση

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στην Πληροφορική & τον Προγραμματισμό Ενότητα 3 η : Κωδικοποίηση & Παράσταση Δεδομένων Ι. Ψαρομήλιγκος Χ. Κυτάγιας Τμήμα

Διαβάστε περισσότερα

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 9 η Χαρακτήρες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS. Εισαγωγή στη JAVA Σύντομο Ιστορικό Η Java και το διαδίκτυο Το πρώτο απλό πρόγραμμα σε JAVA Μεταβλητές και σταθερές Παραστάσεις και εντολές Οι βασικοί τύποι δεδομένων στη Java Οι βασικοί Τελεστές στη Java

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch) Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της

Διαβάστε περισσότερα

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Φεβρουάριος/Μάρτιος 2013 v. 0.1 Master-mind: κανόνες παιχνιδιού Στο master mind χρειάζεται να παράγονται κάθε φορά 4 τυχαία σύμβολα από ένα πλήθος 6 διαφορετικών

Διαβάστε περισσότερα

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2 Εισαγωγή στον προγραμματισμό Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2 Δομή Προγράμματος Όλα τα προγράμματα που γράψαμε έχουν λίγο πολύ την ακόλουθη μορφή: Κάποιος κώδικας εδώ main( ) {

Διαβάστε περισσότερα

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Αναπαράσταση Δεδομένων ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Αναπαράσταση δεδομένων Κατάλληλη συμβολική αναπαράσταση δεδομένων, για απλοποίηση βασικών πράξεων, όπως πρόσθεση Πόσο εύκολο είναι

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

Διαβάστε περισσότερα

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ Λογικός τύπος ( ) Ο τύπος είναι κατάλληλoς για την αναπαράσταση ποσοτήτων που μπορούν να πάρουν δύο μόνο τιμές (π.χ. ναι/όχι, αληθές/ψευδές, ). Τιμές ή Δήλωση Εκχώρηση Ισοδυναμία με ακέραιους

Διαβάστε περισσότερα

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Πληροφορική Ι Αναπαράσταση αριθμών στο δυαδικό σύστημα Δρ. Γκόγκος Χρήστος Δεκαδικό σύστημα αρίθμησης Ελληνικό - Ρωμαϊκό Σύστημα αρίθμησης

Διαβάστε περισσότερα

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

Διαβάστε περισσότερα

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι

Διαβάστε περισσότερα

Υπερφόρτωση τελεστών

Υπερφόρτωση τελεστών Υπερφόρτωση τελεστών 19 Νοεμβρίου 2012 1 Γενικά Στα προηγούμενα είδαμε ότι ορίζοντας μία κλάση, ορίζουμε ένα νέο τύπο τον οποίο μπορούμε να χρησιμοποιήσουμε για να δηλώσουμε αντικείμενα αυτής της νέας

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 3: Πίνακες, βρόχοι, συναρτήσεις 1 Ιουνίου 2017 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Pascal. 15 Νοεμβρίου 2011

Pascal. 15 Νοεμβρίου 2011 Pascal 15 Νοεμβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε

Διαβάστε περισσότερα

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Οι εντολές ελέγχου της ροής ενός προγράμματος. Κεφάλαιο ΙΙI: Οι εντολές ελέγχου της ροής ενός προγράμματος 31 Εντολές ελέγχου της ροής Στο παρόν κεφάλαιο ασχολούμαστε με την σύνταξη των εντολών της C οι οποίες εισάγουν λογική και ελέγχουν την ροή εκτέλεσης

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Συντακτικό της γλώσσας C Μεταβλητές Σταθερές Τύποι Δεδομένων Τελεστές Εκφράσεις Προτάσεις

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

Διαβάστε περισσότερα

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

Διαβάστε περισσότερα