Διαδικαστικός Προγραμματισμός (Η γλώσσα C) Πάρις Μαστοροκώστας

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

Download "Διαδικαστικός Προγραμματισμός (Η γλώσσα C) Πάρις Μαστοροκώστας"

Transcript

1 Διαδικαστικός Προγραμματισμός (Η γλώσσα C) Πάρις Μαστοροκώστας

2 ΠΑΡΙΣ ΜΑΣΤΟΡΟΚΩΣΤΑΣ Καθηγητής Τ.Ε.Ι. Κεντρικής Μακεδονίας Διαδικαστικός Προγραμματισμός Η γλώσσα C -ii-

3 Διαδικαστικός Προγραμματισμός (η γλώσσα C) Συγγραφή Πάρις Μαστοροκώστας Κριτικός αναγνώστης Κλεάνθης Θραμπουλίδης Συντελεστές έκδοσης Γλωσσική επιμέλεια: Άννα Μπίσμπα ISBN: Copyright ΣΕΑΒ, 2015 Το παρόν έργο αδειοδοτείται υπό τους όρους της άδειας Creative Commons Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Όχι Παράγωγα Έργα 3.0. Για να δείτε ένα αντίγραφο της άδειας αυτής επισκεφτείτε τον ιστότοπο ΣΥΝΔΕΣΜΟΣ ΕΛΛΗΝΙΚΩΝ ΑΚΑΔΗΜΑΪΚΩΝ ΒΙΒΛΙΟΘΗΚΩΝ Εθνικό Μετσόβιο Πολυτεχνείο Ηρώων Πολυτεχνείου 9, Ζωγράφου -iii-

4 Αφιερώνεται στη Γεωργία, τον Αστέρη και την Ιωάννα-Ραφαέλα, για την αμέριστη συμπαράσταση και την υπομονή τους -iv-

5 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ... v Συντομεύσεις ακρωνύμια... xiii 1. Εισαγωγή βασικά στοιχεία προγράμματος... 1 Σύνοψη... 1 Λέξεις κλειδιά Εισαγωγή Ιστορική αναδρομή της γλώσσας C Εργαλεία ανάλυσης προβλημάτων Παράδειγμα Στάδια ανάπτυξης προγράμματος Βασικά στοιχεία προγράμματος Λεξιλόγιο της γλώσσας C Δεσμευμένες λέξεις Λέξεις κλειδιά Αναγνωριστές Κανόνες δημιουργίας ευανάγνωστων προγραμμάτων... 8 Ερωτήσεις αυτοαξιολόγησης... 9 Βιβλιογραφία κεφαλαίου Μεταβλητές Είσοδος/έξοδος προγράμματος Εκφράσεις και Τελεστές Σύνοψη Λέξεις κλειδιά Προαπαιτούμενη γνώση Η έννοια της μεταβλητής Δήλωση μεταβλητής Ονομασία μεταβλητής Τύποι μεταβλητών Ο τύπος του χαρακτήρα O κώδικας (πίνακας) ASCII Ο τύπος του ακεραίου Παράδειγμα Παράδειγμα Τύποι πραγματικών αριθμών Παράδειγμα Ο προσδιοριστής const Είσοδος/Έξοδος προγράμματος Η συνάρτηση printf() Μη εκτυπούμενοι χαρακτήρες και σημαίες Παράδειγμα Η συνάρτηση scanf() v-

6 Παράδειγμα Η συνάρτηση getch() Οι συναρτήσεις getchar() putchar() Παράδειγμα Η συνάρτηση kbhit() Η συνάρτηση exit() Η έννοια της έκφρασης και του τελεστή στη γλώσσα C Κατηγορίες τελεστών σημειογραφία Kατηγορίες εκφράσεων της γλώσσας C προτεραιότητα και προσεταιριστικότητα Παράδειγμα Τελεστές μοναδιαίας αύξησης και μείωσης Παράδειγμα Παράδειγμα Τελεστές ανάθεσης Συσχετιστικοί τελεστές Λογικοί τελεστές Παράδειγμα Παράδειγμα Τελεστές διαχείρισης δυαδικών ψηφίων Παράδειγμα Μετατροπές τύπων Έμμεσες μετατροπές Παράδειγμα Ρητές μετατροπές τελεστής typecast O τελεστής sizeof Ερωτήσεις αυτοαξιολόγησης- ασκήσεις Eρωτήσεις αυτοαξιολόγησης Ασκήσεις Βιβλιογραφία κεφαλαίου Έλεγχος ροής προγράμματος Σύνοψη Λέξεις κλειδιά Προαπαιτούμενη γνώση Έλεγχος ροής Επιλεκτική εκτέλεση προτάσεων Παράδειγμα Υπό συνθήκη διακλάδωση if else Παράδειγμα Παράδειγμα Παράδειγμα O υποθετικός τελεστής Παράδειγμα Υπό συνθήκη διακλάδωση switch vi-

7 Παράδειγμα Προτάσεις επανάληψης βρόχοι Βρόχος while do Βρόχος do while Βρόχοι με συνθήκη εισόδου στη γλώσσα C Βρόχος while Παράδειγμα Παράδειγμα Παράδειγμα Βρόχος for Παράδειγμα Παράδειγμα O τελεστής κόμμα (,) Μετασχηματισμός βρόχων while for Παράδειγμα Βρόχοι με συνθήκη εξόδου στη γλώσσα C Βρόχος do while Παράδειγμα Παράδειγμα Παράδειγμα Ένθετοι βρόχοι Παράδειγμα Παράδειγμα Διακοπτόμενοι βρόχοι στη γλώσσα C H κωδική λέξη break Παράδειγμα Παράδειγμα H πρόταση continue Παράδειγμα H πρόταση goto Παράδειγμα Κανόνες για τη χρήση των προτάσεων επανάληψης Ερωτήσεις αυτοαξιολόγησης - ασκήσεις Eρωτήσεις αυτοαξιολόγησης Ασκήσεις Βιβλιογραφία κεφαλαίου Συναρτήσεις Σύνοψη Λέξεις κλειδιά Προαπαιτούμενη γνώση Οι έννοιες του αρθρωτού σχεδιασμού και της συνάρτησης Βασικά στοιχεία συναρτήσεων Δήλωση συνάρτησης Ορισμός συνάρτησης Κλήση συνάρτησης Παράδειγμα Παράδειγμα Παράδειγμα vii-

8 4.3. Eίδη και εμβέλεια μεταβλητών Τοπικές μεταβλητές Παράδειγμα Καθολικές μεταβλητές Παράδειγμα Εμβέλεια μεταβλητών Παράδειγμα Διάρκεια μεταβλητών static μεταβλητές Παράδειγμα Αναδρομικές συναρτήσεις Παράδειγμα Αρθρωτός σχεδιασμός Παράδειγμα Παράδειγμα Ερωτήσεις αυτοαξιολόγησης - ασκήσεις Eρωτήσεις αυτοαξιολόγησης Ασκήσεις Βιβλιογραφία κεφαλαίου Πίνακες αλφαριθμητικά Σύνοψη Λέξεις κλειδιά Προαπαιτούμενη γνώση Μονοδιάστατοι πίνακες Παράδειγμα Παράδειγμα Παράδειγμα Πολυδιάστατοι πίνακες Aρχικοποίηση πολυδιάστατων πινάκων Παράδειγμα Παράδειγμα Πίνακες μεταβλητού μήκους Παράδειγμα Πίνακες ως παράμετροι συναρτήσεων Παράδειγμα Το αλφαριθμητικό Αρχικοποίηση αλφαριθμητικού Είσοδος έξοδος αλφαριθμητικών Ανάγνωση αλφαριθμητικού Εκτύπωση αλφαριθμητικού Παράδειγμα Mετατροπές αλφαριθμητικών σε αριθμητικές τιμές Παράδειγμα Συναρτήσεις αλφαριθμητικών Η συνάρτηση εύρεσης μήκους αλφαριθμητικού viii-

9 Παράδειγμα Η συνάρτηση αντιγραφής αλφαριθμητικού Παράδειγμα Η συνάρτηση συνένωσης αλφαριθμητικών Παράδειγμα Η συνάρτηση σύγκρισης αλφαριθμητικών Παράδειγμα Ερωτήσεις αυτοαξιολόγησης - ασκήσεις Eρωτήσεις αυτοαξιολόγησης Ασκήσεις Βιβλιογραφία κεφαλαίου Δείκτες Σύνοψη Λέξεις κλειδιά Προαπαιτούμενη γνώση H έννοια του δείκτη Δήλωση δείκτη Ανάθεση τιμής σε δείκτη Προσπέλαση μεταβλητής και πίνακα με χρήση δείκτη Παράδειγμα Δείκτες ως παράμετροι ή ως επιστρεφόμενοι τύποι συνάρτησης Μεταβίβαση παραμέτρων κλήση κατ αναφορά Παράδειγμα Παράδειγμα Παράδειγμα Παράδειγμα Συναρτήσεις με τύπο επιστροφής δείκτη Παράδειγμα Δείκτες και συναρτήσεις αλφαριθμητικών H συνάρτηση εύρεσης χαρακτήρα σε αλφαριθμητικό Παράδειγμα H συνάρτηση εύρεσης αλφαριθμητικού σε αλφαριθμητικό Παράδειγμα Παράδειγμα Υλοποίηση συναρτήσεων αλφαριθμητικών με χρήση δεικτών Ορίσματα της γραμμής εντολών Παράδειγμα Δείκτες σε συναρτήσεις Παράδειγμα Ερωτήσεις αυτοαξιολόγησης - ασκήσεις Eρωτήσεις αυτοαξιολόγησης Ασκήσεις Βιβλιογραφία κεφαλαίου Δυναμική διαχείριση μνήμης ix-

10 Σύνοψη Λέξεις κλειδιά Προαπαιτούμενη γνώση Η έννοια της δυναμικής διαχείρισης μνήμης Oι συναρτήσεις malloc, calloc και free Παράδειγμα Η συνάρτηση realloc Παράδειγμα Μονοδιάστατοι δυναμικοί πίνακες Πίνακας δεικτών για τη διαχείριση αλφαριθμητικών Παράδειγμα Δείκτης σε δείκτες για τη διαχείριση πολυδιάστατων πινάκων δεδομένων Παράδειγμα Συναρτήσεις οριζόμενες από τον χρήστη για τη δέσμευση/αποδέσμευση μνήμης Παράδειγμα Παράδειγμα Παράδειγμα ανάπτυξης προγράμματος Ερωτήσεις αυτοαξιολόγησης - ασκήσεις Eρωτήσεις αυτοαξιολόγησης Ασκήσεις Βιβλιογραφία κεφαλαίου Απαριθμητικοί τύποι δεδομένων Δομές Ενώσεις Σύνοψη Λέξεις κλειδιά Προαπαιτούμενη γνώση Απαριθμητικοί τύποι δεδομένων Παράδειγμα Η λέξη κλειδί typedef Ορισμός του τύπου δεδομένου δομής δήλωση μεταβλητών τύπου δομής Παράδειγμα Απόδοση αρχικών τιμών στις δομές Αναφορά στα μέλη δομής Ένθεση δομών Παράδειγμα Παράδειγμα Συναρτήσεις με ορίσματα και επιστρεφόμενη τιμή τύπου δομής Δείκτες και δομές Δείκτες εντός δομών Παράδειγμα Eνώσεις x-

11 8.10 Παράδειγμα ανάπτυξης προγράμματος Ερωτήσεις αυτοαξιολόγησης - ασκήσεις Eρωτήσεις αυτοαξιολόγησης Ασκήσεις Βιβλιογραφία κεφαλαίου Αρχεία Σύνοψη Λέξεις κλειδιά Προαπαιτούμενη γνώση Γενικά Τα κανάλια stdin, stdout, stderr Η ενδιάμεση μνήμη δείκτης αρχείου Kατηγορίες αρχείων Άνοιγμα κλείσιμο αρχείου Aνάγνωση εγγραφή χαρακτήρων σε αρχεία Η συνάρτηση εγγραφής χαρακτήρων putc Παράδειγμα Η συνάρτηση ανάγνωσης χαρακτήρων getc Παράδειγμα Παράδειγμα Μορφοποιούμενες συναρτήσεις εισόδου εξόδου σε αρχεία Η συνάρτηση fprintf Παράδειγμα Η συνάρτηση fscanf Παράδειγμα Ανάγνωση εγγραφή σε δυαδικά αρχεία H συνάρτηση fread Παράδειγμα H συνάρτηση fwrite Παράδειγμα Παράδειγμα Παράδειγμα H συνάρτηση feof Ανάγνωση εγγραφή χαρακτήρων με χρήση των fread/fwrite Ανάγνωση εγγραφή γραμμή ανά γραμμή Παράδειγμα Tυχαία προσπέλαση δυαδικού αρχείου Συναρτήσεις διαχείρισης της θέσης σε αρχείο Παράδειγμα Παράδειγμα Παράδειγμα ανάπτυξης προγράμματος Ερωτήσεις αυτοαξιολόγησης - ασκήσεις Eρωτήσεις αυτοαξιολόγησης Ασκήσεις Βιβλιογραφία κεφαλαίου xi-

12 10. Γραμμικές δομές δεδομένων Σύνοψη Λέξεις κλειδιά Προαπαιτούμενη γνώση Γενικά Στοίβα Παράδειγμα Παράδειγμα Ουρά Παράδειγμα Συνδεδεμένες λίστες Απλά συνδεδεμένη λίστα Παράδειγμα Διπλά συνδεδεμένη λίστα Kυκλική λίστα Εφαρμογές των συνδεδεμένων λιστών Η στοίβα ως συνδεδεμένη λίστα Η ουρά ως συνδεδεμένη λίστα Παράδειγμα ανάπτυξης προγράμματος Ερωτήσεις αυτοαξιολόγησης - ασκήσεις Eρωτήσεις αυτοαξιολόγησης Ασκήσεις Βιβλιογραφία κεφαλαίου Διεπαφές Σύνοψη Λέξεις κλειδιά Προαπαιτούμενη γνώση Η έννοια της διεπαφής Δημιουργία διεπαφής Ιδιότητες διεπαφής Διάσπαση κώδικα σε πολλά αρχεία Παράδειγμα διαχείρισης αρχείων Παράδειγμα δυναμικής διαχείριση μνήμης Παράδειγμα διαχείρισης απλά συνδεδεμένης λίστας Παράδειγμα επεξεργασίας πινάκων Ασκήσεις Βιβλιογραφία κεφαλαίου Bιβλιογραφία Ελληνόγλωσση Ξενόγλωσση Ευρετήριο xii-

13 Συντομεύσεις ακρωνύμια ASCII ANSI CPL EOF FIFO LIFO MS DOS NAN RPN stderr stdin stdout VLA American Standard Code for Information Interchange American National Standards Institute Cambridge Programming Language End of File First In First Out Last In First Out Microsoft Disk Operating System Not a Number Reverse Polish Notation Standard Error Standard Input Standard Output Variable Length Array -xiii-

14 1. Εισαγωγή βασικά στοιχεία προγράμματος Σύνοψη Στο κεφάλαιο αυτό αρχικά γίνεται μία εισαγωγή στην έννοια του προγραμματισμού με γλώσσα υψηλού επιπέδου. Παρουσιάζεται η ιστορική εξέλιξη της γλώσσας C και δίνονται τα γενικά χαρακτηριστικά της γλώσσας. Ακολουθεί η περιγραφή των εργαλείων ανάλυσης προβλημάτων προγραμματισμού και των σταδίων υλοποίησης προγράμματος. Στη συνέχεια μελετώνται τα βασικά στοιχεία των προγραμμάτων και το λεξιλόγιο της C και το κεφάλαιο ολοκληρώνεται με την αποτύπωση κανόνων για τη δημιουργία ευανάγνωστων προγραμμάτων. Λέξεις κλειδιά γλώσσα προγραμματισμού υψηλού επιπέδου, διαδικαστικός προγραμματισμός, γλώσσα C, πρότυπο γλώσσας, φυσική γλώσσα, διάγραμμα ροής, ψευδοκώδικας, συντάκτης, μεταγλωττιστής, συνδέτης, εκτελέσιμο αρχείο, πηγαίος κώδικας, αντικείμενο αρχείο, συντακτικά και σημασιολογικά σφάλματα, σχόλια, λεξεις κλειδιά, δεσμευμένες λέξεις, αναγνωριστές, main, αρχείο κεφαλίδας 1.1. Εισαγωγή Αντικείμενο του παρόντος συγγράμματος είναι η εισαγωγή του αναγνώστη στη λογική του προγραμματισμού Η/Υ. Το ενδιαφέρον εστιάζεται στον επονομαζόμενο διαδικαστικό προγραμματισμό (procedural programming), βασικά στοιχεία του οποίου είναι η δόμηση του προγράμματος και η επαναλαμβανόμενη χρήση υποπρογραμμάτων, τα οποία είτε επιτελούν εργασίες γενικής φύσης είτε απευθύνονται σε ένα τμήμα του συνολικού προβλήματος. Στόχος είναι η κατανόηση των αρχών του προγραμματισμού και η εμπέδωση της φιλοσοφίας του, έτσι ώστε ο αναγνώστης να προχωρήσει σε άλλες μορφές προγραμματισμού, όπως ο αντικειμενοστραφής προγραμματισμός (object oriented programming), έχοντας αποκτήσει τις γνώσεις που αποτελούν κοινό τόπο ανάμεσα στα είδη προγραμματισμού. Στην προσπάθεια αυτή θα χρησιμοποιηθεί ως πλατφόρμα μία γλώσσα προγραμματισμού υψηλού επιπέδου, η γλώσσα C. Ο όρος γλώσσα υψηλού επιπέδου υποδηλώνει ότι δεν είναι κατασκευασμένη για να λειτουργεί σε συγκεκριμένη αρχιτεκτονική υπολογιστή, αλλά δύναται να λειτουργήσει σε πληθώρα αρχιτεκτονικών, γεγονός που σημαίνει ότι: Οι διάφορες αρχιτεκτονικές υπολογιστών, για να λειτουργήσουν, χρησιμοποιούν ένα σύνολο εντολών, το οποίο χρησιμοποιεί τη γλώσσα μηχανής της εκάστοτε αρχιτεκτονικής. Επομένως, έαν κάποιος προγραμματίσει κάνοντας χρήση της γλώσσας μηχανής μίας αρχιτεκτονικής, τα προγράμματά του δε θα είναι συμβατά με άλλες αρχιτεκτονικές. Το αντιστάθμισμα αυτού του μειονεκτήματος είναι ότι στο παρελθόν, που οι υπολογιστές είχαν λίγη μνήμη και χαμηλή ταχύτητα, ο προγραμματισμός σε γλώσσα μηχανής χειριζόταν αποδοτικότερα τους πόρους του μηχανήματος. Για να είναι μία γλώσσα συμβατή με τις γλώσσες μηχανής διάφορων αρχιτεκτονικών, θα πρέπει να λαμβάνει χώρα μεταγλώττιση από τη γλώσσα προγραμματισμού στην εκάστοτε γλώσσα μηχανής. Όντως αυτό συμβαίνει και το λογισμικό που επιτελεί τη συγκεκριμένη εργασία ονομάζεται μεταγλωττιστής (compiler). Με βάση τα παραπάνω, οι γλώσσες προγραμματισμού υψηλού επιπέδου είναι ως επί το πλείστον μεταγλωττισμένες γλώσσες, αποσκοπώντας στο να είναι ευανάγνωστες και κατανοητές. Σε ό,τι αφορά τη C, παρουσιάζει μία σειρά από ενδιαφέροντα και χρήσιμα χαρακτηριστικά: Μπορεί να χρησιμοποιηθεί και ως γλώσσα προγραμματισμού χαμηλού επιπέδου, επιτρέποντας άμεση πρόσβαση στους πόρους του υπολογιστή. -1-

15 Είναι σχετικά μικρή και εύκολη στην εκμάθηση. Υποστηρίζει δομημένο προγραμματισμό. Είναι αποτελεσματική, παράγοντας συμπαγή και γρήγορα στην εκτέλεση προγράμματα. Έχει φορητότητα, δηλαδή ο κώδικάς της μεταγλωττίζεται από διάφορους μεταγλωττιστές χωρίς να απαιτούνται τροποποιήσεις. Μετά από τέσσερις και πλέον δεκαετίες συνεχίζει να αποτελεί μία από τις ευρύτερα χρησιμοποιούμενες γλώσσες προγραμματισμού, γεγονός που έχει δημιουργήσει πολύ μεγάλη εγκατεστημένη βάση εφαρμογών που αναπτύχθηκαν με αυτήν τη γλώσσα και πρέπει να συντηρούνται και να εξελίσσονται. Αποτελεί μία εξαιρετική εκκίνηση για την εκμάθηση γλωσσών που στηρίζονται στον αντικειμενοστραφή προγραμματισμό (C++, Java, C#), καθώς ο τελευταίος έχει δανειστεί πολλά χαρακτηριστικά από τη C. Ωστόσο, η γλώσσα C παρουσιάζει και μία σειρά μειονεκτημάτων, που την καθιστούν απαιτητική στον χειρισμό. Παρέχοντας μεγάλο βαθμό ελευθερίας στον προγραμματιστή και χαρακτηριζόμενη από έλλειψη περιορισμών και μικρό βαθμό ελέγχου λαθών, υποχρεώνει τον προγραμματιστή να είναι ιδιαίτερα προσεκτικός και να χρησιμοποιεί διαδικασίες ελέγχου λαθών, οι οποίες παρέχονται αυτόματα σε άλλες γλώσσες προγραμματισμού. Επιπλέον, σε πολλές περιπτώσεις εισάγονται λάθη που είναι μη ανιχνεύσιμα από τον μεταγλωττιστή και οδηγούν σε καταστάσεις απροσδιοριστίας, δηλαδή μη αναμενόμενες καταστάσεις με μη προσδιορισμένη συμπεριφορά Ιστορική αναδρομή της γλώσσας C Η C επινοήθηκε το 1972 από τον Dennis Ritchie στα εργαστήρια Bell. Δημιουργήθηκε για να εξυπηρετήσει το λειτουργικό σύστημα Unix, το οποίο έως τότε ήταν γραμμένο σε assembly. Ο δημιουργός του Unix, Ken Thompson, φίλος και συνεργάτης του Ritchie, είχε δημιουργήσει την πρόγονο της C, τη γλώσσα B. Και οι δύο γλώσσες έχουν κοινή καταγωγή από τη γλώσσα BCPL, η οποία είχε αναπτυχθεί από τον Martin Richards κατά το πέρασμά του απο το Τεχνολογικό Ινστιτούτο της Μασσαχουσέττης (MIT) το 1967, στηριζόμενη στη γλώσσα CPL (Cambridge Programming Language) του Πανεπιστημίου του Cambridge. Και οι τρεις γλώσσες κατασκευάστηκαν στο πλαίσιο του προγράμματος MAC και του απογόνου του Multics, τα οποία στόχευαν στην κατανομή των πόρων των υπολογιστών σε πολλούς χρήστες. Τα δύο αυτά προγράμματα, στα οποία συνέπραξαν το ΜΙΤ, η General Electric και τα εργαστήρια Bell, αποτέλεσαν τη θερμοκοιτίδα πολλών προγραμμάτων λογισμικού, που κυριαρχούν από τη δεκαετία του 1960 έως σήμερα. Η C, ούσα ευέλικτη και αποδοτική, χρησιμοποιήθηκε αρχικά για τον προγραμματισμό συστημάτων στο Unix. To 1974 εμφανίστηκε από τον Brian Kernighan το πρώτο γραπτό κείμενο για τη γλώσσα, υπό τον τίτλο Programming in C: A Tutorial. Το 1977 έγινε η πρώτη επίσημη τεκμηρίωση της γλώσσας με το βιβλίο The C Programming Language από τους Kernighan και Ritchie. Το βιβλίο αυτό αποτέλεσε το «ευαγγέλιο» των προγραμματιστών της C, αποκαλούμενο «Λευκή Βίβλος» ή «πρότυπο K&R». Με την πάροδο του χρόνου η γλώσσα C άρχισε να χρησιμοποιείται και σε άλλα πεδία εφαρμογών, πέραν του προγραμματισμού συστημάτων. Η εμφάνιση των μεταγλωττιστών της γλώσσας στο MS DOS και ο μεγάλος αριθμός προγραμμάτων βιβλιοθήκης που κατασκευάστηκαν, οδήγησαν τη γλώσσα στο απόγειό της στα τέλη της δεκαετίας του Βέβαια, η γλώσσα γνώρισε πολλές αλλαγές, οδηγούμενη τελικά το 1989 στην επονομαζόμενη ANSI έκδοση, που την προτυποποίησε (το όνομά της το έλαβε από την επιτροπή του American National Standards Institute). Μία σημαντική ανανέωση έγινε το 1999 με το πρότυπο C99, ενώ το τελευταίο πρότυπο παρουσιάστηκε το Ωστόσο, τα καινοτόμα στοιχεία του προτύπου C11, όπως η προτυποποίηση του πολυνηματικού προγραμματισμού, δεν έχουν ακόμη ενσωματωθεί στους περισσότερους μεταγλωττιστές της γλώσσας. Τις τελευταίες δύο δεκαετίες τα ηνία έχει λάβει ο αντικειμενοστρεφής προγραμματισμός και στην κατεύθυνση αυτή αρχικά συνέβαλε η γλώσσα C++, που επινοήθηκε το 1983 από τον Δανό Bjarne Stroustrup στα εργαστήρια της ΑΤ&Τ (το τμήμα των εργαστηρίων Bell που μεταφέρθηκε στην AT&T, όταν η πρώτη διασπάστηκε). H C++ ή C με τάξεις μπορεί να θεωρηθεί απόγονος της C, αν και έχει αρκετές διαφορές. Πάντως, θα πρέπει να σημειωθεί ότι, σύμφωνα με μετρήσεις σχετικών οργανισμών για την επαγγελματική και ακαδημαϊκή χρήση των γλωσσών προγραμματισμού, το 2015 η γλώσσα C συνεχίζει να αποτελεί τη γλώσσα στην οποία έχουν γραφτεί οι περισσότερες γραμμές κώδικα. -2-

16 1.3. Εργαλεία ανάλυσης προβλημάτων Για την ανάλυση ενός προβλήματος και την κατάρτιση του μοντέλου που θα υλοποιηθεί σε κώδικα έχουν επικρατήσει τα ακόλουθα τρία εργαλεία: 1. Η φυσική γλώσσα (natural language), σύμφωνα με την οποία το πρόβλημα αναλύεται σε απλές προτάσεις της καθομιλούμενης γλώσσας, χρησιμοποιώντας το συντακτικό αυτής. 2. Ο ψευδοκώδικας (pseudocode), ο οποίος μετασχηματίζει τη φυσική γλώσσα σε μία σειρά προτάσεων που χρησιμοποιούν το συντακτικό γλώσσας προγραμματισμού, χωρίς να ακολουθούν επακριβώς τον φορμαλισμό συγκεκριμένης γλώσσας. 3. Το λογικό διάγραμμα ή διάγραμμα ροής (flow chart), σύμφωνα με το οποίο απεικονίζεται γραφικά η λύση του προβλήματος, με χρήση ειδικών συμβόλων. Δεν υπάρχουν γενικοί κανόνες για την υιοθέτηση κάποιου από τα τρία εργαλεία. Η χρήση καθενός εκ των τριών εξαρτάται από τον εκάστοτε προγραμματιστή και το συγκεκριμένο πρόβλημα. Το λογικό διάγραμμα χρησιμοποιείται ευρύτατα, όταν συνεργάζονται ομάδες προγραμματιστών, γιατί παρέχει μία σειρά από πλεονεκτήματα, καθώς προσδίδει μεγαλύτερη ευχέρεια (α) στην παραστατική ανάλυση του προβλήματος, (β) στην τεκμηρίωση του προγράμματος, (γ) στην αποδοτική συντήρηση του προγράμματος. Ωστόσο, έχει περιορισμούς, καθόσον (α) σύνθετα προγράμματα οδηγούν σε σύνθετα και δύσχρηστα διαγράμματα ροής και (β) τροποποιήσεις στα προγράμματα μπορεί να απαιτήσουν επανασχεδιασμό ολόκληρου του διαγράμματος. Τα σύμβολα που χρησιμοποιούνται στο διάγραμμα ροής παρουσιάζονται στο Σχήμα 1.1: Σχήμα 1.1 Ta σύμβολα του διαγράμματος ροής Παράδειγμα Μία ενδεικτική περιγραφή του τρόπου εφαρμογής των ανωτέρω εργαλείων θα γίνει με τη βοήθεια του ακόλουθου προβλήματος: Να μετατραπούν οι βαθμοί Farenheit σε βαθμούς Κελσίου, χρησιμοποιώντας την εξίσωση μετασχηματισμού C 5( F 32)/9. 1. Με χρήση φυσικής γλώσσας -3-

17 Ζήτησε από τον χρήστη τη θερμοκρασία σε βαθμούς F Διάβασε την τιμή που δίνει ο χρήστης Αποθήκευσε την τιμή σε θέση αποθήκευσης που ονομάζεται degfar Υπολόγισε τους βαθμούς C με χρήση μαθηματικής σχέσης Αποθήκευσε το αποτέλεσμα σε θέση αποθήκευσης που ονομάζεται degcel Τύπωσε το περιεχόμενο της degcel 2. Με χρήση διαγράμματος ροής 3. Με χρήση ψευδοκώδικα print enter degrees in Farenheit read degfar degcel = (degfar - 32) * 5 / 9 print degcel Σχήμα 1.2 To διάγραμμα ροής του παραδείγματος Στάδια ανάπτυξης προγράμματος Το υπολογιστικό πρόγραμμα είναι μία ακολουθία εντολών, με τις οποίες ο υπολογιστής εκτελεί μία συγκεκριμένη εργασία και επιλύει ένα δοθέν πρόβλημα. Η υλοποίηση ενός προγράμματος ο επονομαζόμενος και κύκλος δημιουργίας προγράμματος περιλαμβάνει τέσσερα στάδια: 1. Η συγγραφή του πηγαίου κώδικα (source code). Στο βήμα αυτό χρησιμοποιείται ένας συντάκτης κειμένου (text editor) για τη συγγραφή του κώδικα. Συνήθως, χρησιμοποιείται ο ενσωματωμένος συντάκτης της γλώσσας C. Το αποτέλεσμα είναι ένα αρχείο κειμένου, αναγνώσιμο από οποιονδήποτε συντάκτη (notepad, wordpad, πρόγραμμα επεξεργασίας κειμένου κ.λπ.), το οποίο έχει κατάληξη.c. 2. H μεταγλώττιση του πηγαίου κώδικα (compilation). Η διαδικασία της μεταγλώττισης εκτελείται από τον μεταγλωττιστή (compiler) και παράγεται ένα αρχείο που ονομάζεται αρχείο αντικειμένου (object file) και περιέχει τον κώδικα σε γλώσσα μηχανής. Στο στάδιο αυτό ανιχνεύονται τα συντακτικά σφάλματα (syntax errors), τα οποία είναι σφάλματα που οφείλονται σε παραβίαση των συντακτικών κανόνων και αναφέρονται υπό μορφή λίστας (οπότε μπορούν να διορθωθούν, προτού εκτελεστεί το πρόγραμμα). Εάν δεν υπάρχουν συντακτικά σφάλματα, το αρχείο που προκύπτει έχει το όνομα του αρχείου του πηγαίου κώδικα και κατάληξη.obj. -4-

18 3. Η σύνδεση του αντικειμένου με βιβλιοθήκες. Στο τρίτο στάδιο επιτελείται η διεργασία της σύνδεσης (linking), η οποία είναι πλήρως αυτοματοποιημένη και γίνεται με χρήση του συνδέτη (linker). Το αποτέλεσμα της σύνδεσης είναι η δημιουργία του εκτελέσιμου κώδικα ή η αναφορά τυχόν προβλημάτων, όπως για παράδειγμα η αδυναμία εντοπισμού μίας συνάρτησης ή μίας εξωτερικής μεταβλητής. Ο εκτελέσιμος κώδικας αποθηκεύεται σε αρχείο που έχει το όνομα του πηγαίου κώδικα και επέκταση.exe. Πλέον το πρόγραμμα μπορεί να εκτελεστεί όπως ένα οποιοδήποτε εκτελέσιμο αρχείο του υπολογιστή. Ο συνδέτης έχει τη δυνατότητα να συνδέσει περισσότερα του ενός αρχεία αντικειμένου. Επιπλέον, αναζητά σε βιβλιοθήκες τα σώματα των συναρτήσεων που ο προγραμματιστής χρησιμοποίησε στο πρόγραμμά του (λεπτομέρειες στην 1.5 και σε επόμενα κεφάλαια). 4. Η εκτέλεση του προγράμματος. Στο τελευταίο στάδιο εκτελείται ή «τρέχει» το αρχείο.exe και ελέγχεται η ορθή λειτουργία του προγράμματος. Τα σφάλματα που ανακύπτουν στο στάδιο αυτό ονομάζονται σημασιολογικά σφάλματα (semantic errors). Οφείλονται σε κακή σχεδίαση της λύσης του προβλήματος και, δυστυχώς, αναγνωρίζονται στον χρόνο εκτέλεσης. Χαρακτηριστικό σφάλμα εκτέλεσης είναι η διαίρεση αριθμού με το μηδέν, ενέργεια που δεν ανιχνεύεται ως λανθασμένη κατά τη μεταγλώττιση. Σε περίπτωση σφάλματος, ο προγραμματιστής επιστρέφει στο πρώτο στάδιο, όπου κάνει τις διορθώσεις, και επαναλαμβάνει τα υπόλοιπα στάδια, έως ότου το πρόγραμμα λειτουργήσει επιτυχώς. Στο Σχήμα 1.3 αποτυπώνονται εποπτικά τα στάδια υλοποίησης προγράμματος: Σχήμα 1.3 Ta στάδια υλοποίησης προγράμματος -5-

19 1.5. Βασικά στοιχεία προγράμματος Έστω το ακόλουθο απλό πρόγραμμα: /****************************************************** This program prints out the sentence "This is a test." ******************************************************/ #include <stdio.h> int main() printf( "This is a test.\n" ); return 0; // End of main Η καρδιά ενός προγράμματος της γλώσσας C είναι η λέξη main. Αντιστοιχεί στο κύριο τμήμα του κώδικα (κύρια συνάρτηση του προγράμματος, γι αυτό και εφεξής θα αναφέρεται ως main()) και χρησιμοποιείται για να γνωστοποιήσει το σημείο έναρξης της εκτέλεσης του προγράμματος. Μετά τη main() ακολουθεί το εισαγωγικό αριστερό άγκιστρο () και κατόπιν οι προτάσεις του προγράμματος. Η main() και μαζί το πρόγραμμα τερματίζουν με το καταληκτικό δεξί άγκιστρο (). Στο παρόν πρόγραμμα η main() αποτελείται από μία πρόταση κλήσης της συνάρτησης printf(), η οποία ανήκει στη βασική βιβλιοθήκη συναρτήσεων της C, καθώς και από την πρότυπη τελευταία πρόταση των προγραμμάτων της γλώσσας C return 0;. Η βιβλιοθήκη συναρτήσεων περιλαμβάνει τον κώδικα πρότυπων συναρτήσεων και αποτελείται από μία σειρά αρχείων, τα οποία έχουν την κατάληξη h. Τα αρχεία αυτά ονομάζονται αρχεία κεφαλίδας (header files) και περιλαμβάνουν συναρτήσεις συναφούς λειτουργίας. Δηλώνονται πριν από τη main(), με χρήση της οδηγίας προς τον προεπεξεργαστή (preprocessor directive) include ως εξής: #include <όνομα_αρχείου_κεφαλίδας.h> Στην παρούσα περίπτωση το αρχείο κεφαλίδας είναι το stdio.h (standard input output), το οποίο περιλαμβάνει συναρτήσεις σχετιζόμενες με τις συσκευές εισόδου (π.χ. πληκτρολόγιο) και εξόδου (π.χ. οθόνη). Η συνάρτηση main() εκτός από προτάσεις και κλήσεις σε συναρτήσεις βιβλιοθήκης μπορεί να καλεί και άλλες συναρτήσεις, οι οποίες δημιουργούνται από τον προγραμματιστή. Μία συνάρτηση είναι ένα σύνολο προτάσεων με ένα δεδομένο όνομα, όπως είναι η main() ή η printf(). Οι προτάσεις αποτελούν το σώμα (body) της συνάρτησης και περικλείονται σε άγκιστρα. Λεπτομερής ανάλυση του συντακτικού και της λειτουργίας των συναρτήσεων θα δοθεί στο Κεφάλαιο 4. Όλες οι προτάσεις τελειώνουν με ερωτηματικό (;) (semicolon), το οποίο ονομάζεται σύμβολο του τερματιστή προτάσεων (statement terminator symbol). Eξαίρεση αποτελούν οι οδηγίες προς τον προεπεξεργαστή, όπως είναι η include, οι οποίες αρχίζουν πάντοτε με δίεση (#) και δεν τελειώνουν με ερωτηματικό. Η έξοδος του προγράμματος είναι η εμφάνιση στην οθόνη της πρότασης: This is a test. Οι τρεις πρώτες γραμμές του ανωτέρω προγράμματος είναι σχόλια (comments) και δεν αποτελούν τμήμα του κώδικα, καθώς δεν λαμβάνονται υπόψη από τον μεταγλωττιστή. To σχόλιο είναι κείμενο ανάμεσα σε /* και */ και μπορεί να τοποθετηθεί οπουδήποτε μέσα στο πρόγραμμα. Μπορεί να επεκταθεί σε περισσότερες από μία γραμμές. Σε περίπτωση που πρέπει να τοποθετηθεί ένα σχόλιο σε κάποιο σημείο μίας γραμμής και να μην επεκταθεί σε άλλη γραμμή, χρησιμοποιείται το σύμβολο // και ακολούθως τοποθετείται το σχόλιο, όπως συμβαίνει στο τέλος του ανωτέρω προγράμματος (το κείμενο end of main είναι σχόλιο). Τα σχόλια πρέπει να χρησιμοποιούνται αφειδώς, γιατί καθιστούν τον κώδικα ευανάγνωστο και συνεισφέρουν στην επεξήγηση δυσνόητων σημείων. Είναι θεμιτό να ευθυγραμμίζονται τα σύμβολα των σχολίων και να μην τοποθετούνται ποτέ σχόλια μέσα σε σχόλια (ένθετα σχόλια), γιατί μπορεί να δημιουργηθεί πρόβλημα σε μερικούς μεταγλωττιστές. Παρακάτω παρουσιάζονται μερικές περιπτώσεις σωστών και λανθασμένων σχολίων: -6-

20 (α) /* Αυτό /* το σχόλιο */ είναι λανθασμένο */ (β) /* Αυτό το σχόλιο είναι σωστό */ Παρατηρήσεις: 1. Στο παρόν σύγγραμμα ο όρος εντολή (command) αφορά σε κάθε συντακτική οντότητα που είτε μεταβάλλει κάποια τιμή είτε επιτρέπει τη ροή πληροφορίας από και προς το εξωτερικό περιβάλλον. Υπ αυτήν την έννοια, οι συναρτήσεις θεωρούνται εντολές. Έτσι, π.χ. η συνάρτηση printf είναι μία εντολή, καθώς μεταφέρει πληροφορία στο εξωτερικό περιβάλλον. 2. Η γλώσσα C διαχωρίζει τα κεφαλαία γράμματα από τα μικρά (case sensitive). Η εντολή Printf δεν είναι ίδια με την printf. Όλες οι εντολές στη C γράφονται με μικρά γράμματα! 3. Η σωστή στηλοθεσία είναι πολύ σημαντική, καθώς καθιστά τον κώδικα ευανάγνωστο. 4. Η συνάρτηση printf() ανήκει στις μορφοποιούμενες συναρτήσεις εισόδου εξόδου. Ονομάζεται μορφοποιούμενη, γιατί δίνει τη δυνατότητα στον χρήστη να μορφοποιήσει την έξοδό της, δυνάμενη να εκτυπώσει μεταβλητές διαφόρων τύπων και με διάφορους τρόπους, χρησιμοποιώντας κατάλληλα σύμβολα. Δυαδική της printf() είναι η scanf(), η οποία λαμβάνει πληροφορία από την είσοδο (πληκτρολόγιο). Η πρόταση printf( "This is a test.\n" ); καλεί την printf() για να τυπωθεί το καθορισμένο κείμενο. Τα ορίσματα εισόδου (input arguments) περικλείονται από παρενθέσεις και προσδιορίζουν το προς εκτύπωση κείμενο και τη μορφή με την οποία θα εκτυπωθεί. Τέλος, το σύμβολο \n, που ανήκει στις ακολουθίες διαφυγής, σημαίνει «μετακινήσου στην επόμενη γραμμή». Λεπτομερής περιγραφή της λειτουργίας των συναρτήσεων εισόδου εξόδου δίνεται στο επόμενο κεφάλαιο. 5. Πέραν της include, μία σημαντική οδηγία προς τον προεπεξεργαστή είναι η define, η οποία αντιστοιχίζει ένα όνομα σε μία σταθερά ή σε μία σειρά χαρακτήρων (εκτελεί μακροαντικατάσταση). Οποτεδήποτε εμφανίζεται το όνομα μέσα στον κώδικα, αντικαθίσταται αυτόματα με την τιμή της σταθεράς ή τη συμβολοσειρά. Για παράδειγμα, εάν χρησιμοποιηθεί η λέξη TRUE στη θέση της τιμής 1 και η λέξη FALSE στη θέση της τιμής 0, θα δοθούν δύο define ως εξής: #define TRUE 1 #define FALSE 0 Εάν αντικατασταθεί ολόκληρη φράση, μπορεί να εμφανιστεί στην οθόνη με χρήση της printf: #define TITLOS "C Programming \ne-book\n" printf( TITLOS ); To αποτέλεσμα είναι: C Programming e book Μία συνηθισμένη χρήση της define είναι για τον καθορισμό του μεγέθους στοιχείων, όπως είναι η διάσταση ενός πίνακα, τα οποία μπορεί να χρησιμοποιηθούν επανειλημμένα μέσα στον κώδικα. Eπιπρόσθετα, μέσω της define μπορούν να οριστούν εντολές, που ονομάζονται μακροεντολές. Τέλος, όπως θα αναλυθεί στο Κεφάλαιο 10, η define εμπλέκεται στην επονομαζόμενη υπό συνθήκη μεταγλώττιση Λεξιλόγιο της γλώσσας C Από τα αναφερθέντα στην προηγούμενη παράγραφο γίνεται φανερό ότι η λειτουργία της γλώσσας C στηρίζεται σε ένα λεξιλόγιο. Το λεξιλόγιο της C περιλαμβάνει τέσσερις μείζονες κατηγορίες λέξεων: 1. Δεσμευμένες λέξεις 2. Λέξεις κλειδιά -7-

21 3. Τελεστές 4. Αναγνωριστές Δεσμευμένες λέξεις Οι δεσμευμένες λέξεις (reserved words) χρησιμοποιούνται από τη γλώσσα C κατά τρόπο αποκλειστικό και πρέπει να αποφεύγεται η χρήση τους ως ονόματα. Αποτελούνται από: Ονόματα συναρτήσεων πρότυπης βιβλιοθήκης (runtime function names), όπως printf, abs κ.λπ. Μακροονόματα (macro names). Είναι ονόματα που περιέχονται σε αρχεία κεφαλίδας για ορισμό μακροεντολών, π.χ. EOF, INT_MAX. Ονόματα τύπων (type names). Είναι ονόματα τύπων σε ορισμένα αρχεία κεφαλίδας, π.χ. time_t, va_list. Ονόματα εντολών προεπεξεργαστή (preprocessor). Είναι ονόματα που χρησιμοποιεί προεπεξεργαστής της C και έχουν προκαθορισμένη σημασία, π.χ. include, define. Ονόματα που αρχίζουν με τον χαρακτήρα υπογράμμισης _ και έχουν δεύτερο χαρακτήρα τον ίδιο ή κεφαλαίο γράμμα, π.χ. _DATE_, _FILE_ Λέξεις κλειδιά Οι λέξεις κλειδιά (keywords) είναι λεκτικές μονάδες, οι οποίες είτε μόνες τους είτε με άλλες λεκτικές μονάδες χαρακτηρίζουν κάποια γλωσσική κατασκευή. Π.χ. η λέξη int αναπαριστά τον ακέραιο τύπο δεδομένων και το ζεύγος if else χρησιμοποιείται στον έλεγχο ροής προγράμματος. Οι λέξεις κλειδιά, αν και είναι ένας περιορισμός των γλωσσών, αυξάνουν την αναγνωσιμότητα και αξιοπιστία των προγραμμάτων, ενώ ταυτόχρονα επιταχύνουν τη διαδικασία της μεταγλώττισης. Λέξεις κλειδιά, όπως if, else, for, case, while, do, έχουν γίνει κοινά αποδεκτές, διευκολύνοντας την εκμάθηση των γλωσσών προγραμματισμού. Στον Πίνακα 1.1 παρατίθενται οι λέξεις κλειδιά της γλώσσας C: auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Πίνακας 1.1 Λέξεις κλειδιά της γλώσσας C Αναγνωριστές Οι αναγνωριστές (identifiers) είναι λεκτικές μονάδες που κατασκευάζει ο προγραμματιστής. Αυτές οι λεκτικές μονάδες χρησιμοποιούνται συνήθως ως ονόματα που ο προγραμματιστής δίνει σε δικές του κατασκευές, όπως μεταβλητές, σταθερές, συναρτήσεις και δικούς του τύπους δεδομένων. Ένα όνομα προσδιορίζει μοναδιαία, από το σύνολο των κατασκευών του προγράμματος, την κατασκευή στην οποία αποδόθηκε, εξ ου και το όνομα αναγνωριστής. Περισσότερα στοιχεία για τους αναγνωριστές σημειώνονται στο Κεφάλαιο Κανόνες δημιουργίας ευανάγνωστων προγραμμάτων Θα πρέπει να αποφεύγονται ονόματα ενός χαρακτήρα, όπως i, j, x, y (εκτός από ειδικές περιπτώσεις που θα αναφερθούν στα επόμενα κεφάλαια). -8-

22 Το όνομα που χρησιμοποιείται θα πρέπει να είναι ενδεικτικό του τι αναπαριστά ή διαχειρίζεται η μεταβλητή. Συγκεκριμένα: 1. Η μεταβλητή που αναπαριστά τον όγκο θα μπορούσε να ονομαστεί volume και η μέγιστη τιμή της max_volume ή maxvolume. 2. Η συνάρτηση που εμφανίζει στην οθόνη πληροφορίες για τη λειτουργία του προγράμματος μπορεί να λάβει τo ενδεικτικό όνομα printprograminfo. Σε ολόκληρο τον κώδικα ενός προγράμματος θα πρέπει να διατηρείται ο ίδιος φορμαλισμός στην ονοματοδοσία. Κατά συνέπεια, εάν χρησιμοποιηθεί η σύμβαση σύζευξης δύο ή περισσότερων λέξεων σε ένα όνομα μεταβλητής μέσω του χαρακτήρα υπογράμμισης _ (π.χ. string_name), δεν θα πρέπει να χρησιμοποιηθεί άλλος τρόπος σύζευξης (π.χ. stringname) αλλά να διατηρηθεί ο αρχικός (δηλαδή string_name). Θα πρέπει να χρησιμοποιούνται μικρά γράμματα για ονόματα μεταβλητών και κεφαλαία γράμματα για χρήση συνωνύμων μέσω της εντολής προεπεξεργαστή define. (1) Η γλώσσα C αποτελεί: (α) Γλώσσα προγραμματισμού υψηλού επιπέδου (β) Γλώσσα μηχανής (γ) Γλώσσα assembly (δ) Τίποτε από τα προηγούμενα Ερωτήσεις αυτοαξιολόγησης (2) Ποια είναι η σωστή σειρά εκτέλεσης των ακόλουθων βημάτων; (α) i. Μεταγλώττιση και δημιουργία του αρχείου αντικειμένου ii. Δημιουργία του εκτελέσιμου κώδικα iii. Συγγραφή του πηγαίου κώδικα iv. Προεπεξεργασία και ενσωμάτωση των αρχείων κεφαλίδας (β) i. Συγγραφή του πηγαίου κώδικα ii. Προεπεξεργασία και ενσωμάτωση των αρχείων κεφαλίδας iii. Μεταγλώττιση και δημιουργία του αντικείμενου κώδικα iv. Δημιουργία του εκτελέσιμου κώδικα (γ) i. Προεπεξεργασία και ενσωμάτωση των αρχείων κεφαλίδας ii. Συγγραφή του πηγαίου κώδικα iii. Μεταγλώττιση και δημιουργία του αρχείου αντικειμένου iv. Δημιουργία του εκτελέσιμου κώδικα (δ) i. Μεταγλώττιση και δημιουργία του αρχείου αντικειμένου ii. Συγγραφή του πηγαίου κώδικα iii. Προεπεξεργασία και ενσωμάτωση των αρχείων κεφαλίδας iv. Δημιουργία του εκτελέσιμου κώδικα (3) Ποιο από τα ακόλουθα σχόλια είναι σωστό; (α) /* Σχόλιο σχόλιο σχόλιο σχόλιο (β) /* Σχόλιο σχόλιο /* σχόλιο σχόλιο */ (γ) /* Σχόλιο σχόλιο σχόλιο σχόλιο */ (δ) /* Σχόλιο σχόλιο σχόλιο σχόλιο // (4) Το όνομα typedef αποτελεί: (α) Λέξη κλειδί -9-

23 (β) Τελεστή (γ) Αναγνωριστή (δ) Δεσμευμένη λέξη Βιβλιογραφία κεφαλαίου Θραμπουλίδης, K. (2002), Διαδικαστικός Προγραμματισμός - C (Τόμος Α), 2 η έκδοση, Εκδόσεις Τζιόλα. Χατζηγιαννάκης, N. (2012), Η Γλώσσα C σε Βάθος, 4 η Έκδοση, Εκδόσεις Κλειδάριθμος. Deitel, H. & Deitel, P. (2014), C Προγραμματισμός, 7 η έκδοση, Εκδόσεις Γκιούρδα. Gabrielli, M. & Martini, S. (2010), Programming Languages: Principles and Paradigms, Springer. Horton, I. (2006), Beginning C from Novice to Professional, 4 th ed., Apress. Kernighan, B. & Ritchie, D. (1990), Η γλώσσα προγραμματισμού C, Εκδόσεις Κλειδάριθμος. Lohr, S. (2001), Go To, Basic Books. -10-

24 2. Μεταβλητές Είσοδος/έξοδος προγράμματος Εκφράσεις και Τελεστές Σύνοψη Στο κεφάλαιο αυτό ο αναγνώστης εισάγεται στην έννοια και τη χρήση της μεταβλητής στον προγραμματισμό. Αναλύονται τα είδη μεταβλητών στη γλώσσα C, η εσωτερική απεικόνισή τους και τα λειτουργικά χαρακτηριστικά τους. Ακολούθως, περιγράφονται οι βασικές συναρτήσεις ανάγνωσης και εκτύπωσης δεδομένων της γλώσσας C, οι οποίες επιτελούν την επικοινωνία του προγράμματος με το εξωτερικό περιβάλλον (συσκευές εισόδου και εξόδου). Στη συνέχεια, παρουσιάζονται οι κατηγορίες εκφράσεων και μελετώνται τα είδη των τελεστών: αύξησης μείωσης, ανάθεσης, συσχετιστικοί και λογικοί τελεστές, καθώς και ο τελεστής sizeof. Ακολουθεί η ανάλυση των εννοιών και των ιδιοτήτων της προτεραιότητας και της προσεταιριστικότητας και το κεφάλαιο ολοκληρώνεται με τις διαδικασίες της ρητής και της έμμεσης μετατροπής τύπων. Λέξεις κλειδιά μεταβλητή, σταθερά, τύπος χαρακτήρα, τύπος ακεραίου, τύπος αριθμού κινητής υποδιαστολής, εκφράσεις, σημειολογίες τελεστών, αριθμητικοί τελεστές, λογικοί τελεστές, συσχετιστικοί τελεστές, τελεστές αύξησης μείωσης, προτεραιότητα και προσεταιριστικότητα τελεστών, ρητή έμμεση μετατροπή τύπου, scanf, printf, puchar, getchar, sizeof Προαπαιτούμενη γνώση Λεξιλόγιο της γλώσσας C στάδια υλοποίησης προγράμματος 2.1. Η έννοια της μεταβλητής Ένα από τα πλέον βασικά πλεονεκτήματα του ηλεκτρονικού υπολογιστή είναι η δυνατότητά του να διαχειρίζεται πληροφορία σε μορφή αριθμητικών δεδομένων, γραμμάτων ή ακολουθίας γραμμάτων. Τα δεδομένα αποθηκεύονται στη μνήμη και θα πρέπει να μπορούν να είναι προσβάσιμα από τα προγράμματα, να εισαχθούν σε υπολογισμούς και να δημιουργήσουν νέα δεδομένα. Αρχικά, οι προγραμματιστές χειρίζονταν τα δεδομένα δουλεύοντας με τις διευθύνσεις μνήμης, στις οποίες ήταν αποθηκευμένα. Με την αύξηση του μεγέθους και της πολυπλοκότητας των προγραμμάτων, αυτός ο τρόπος διαχείρισης έθετε πολλούς περιορισμούς και αποτελούσε πηγή προβλημάτων. Η λύση στο πρόβλημα της αναφοράς σε δεδομένα και στη διαχείρισή τους δόθηκε με την εισαγωγή της έννοιας των μεταβλητών, οι οποίες διαχειρίζονται δεδομένα. Το όνομα μίας μεταβλητής είναι άμεσα συνδεδεμένο με τη διεύθυνση στην οποία είναι αποθηκευμένο το δεδομένο. Με τον τρόπο αυτό ο προγραμματιστής μπορεί να χειριστεί δεδομένα χωρίς να γνωρίζει την ακριβή διεύθυνση της μνήμης όπου αυτά τοποθετούνται. Επιγραμματικά, η χρήση των μεταβλητών είναι ίδια με εκείνη της άλγεβρας, π.χ. η παράσταση y= 3*x+5 ισχύει τόσο στα μαθηματικά όσο και στις γλώσσες προγραμματισμού, με τα x και y να είναι μεταβλητές. Ωστόσο, στον προγραμματισμό η χρήση της είναι γενικευμένη: η μεταβλητή είναι μία θέση μνήμης για ένα δεδομένο. Δημιουργείται, όταν δηλώνεται, και η τιμή της δεν είναι καθορισμένη, έως ότου χρησιμοποιηθεί για πρώτη φορά από το πρόγραμμα. Η γλώσσα C απαιτεί δήλωση μίας μεταβλητής πριν τη χρήση της, καθότι η δήλωση συνεπάγεται τον προσδιορισμό του τύπου δεδομένου που θα χειρίζεται και, συνακόλουθα, τη μνήμη που θα πρέπει να της ανατεθεί. Συνήθως οι μεταβλητές δηλώνονται στην αρχή της -11-

25 συνάρτησης, ως επί το πλείστον αμέσως μετά το εισαγωγικό άγκιστρο (). Ωστόσο, το πρότυπο της γλώσσας C99 επιτρέπει τη δήλωση σε οποιοδήποτε σημείο του κώδικα, πάντοτε όμως πριν την πρώτη χρήση τους Δήλωση μεταβλητής Οι μεταβλητές δηλώνονται με πρόταση ορισμού, η οποία τελειώνει πάντοτε με (;). Η μορφή της δήλωσης είναι: data_type var, var, ; π.χ. int counter1, counter2; Οι μεταβλητές δηλώνονται στην αρχή μίας συνάρτησης. Η δήλωση γνωστοποιεί στον μεταγλωττιστή το όνομα της μεταβλητής και τον τύπο δεδομένου που θα χειρίζεται. Μία δήλωση έχει ως αποτέλεσμα τη σύνδεση του ονόματος της μεταβλητής με: τον ανάλογο τύπο δεδομένων, γεγονός που λαμβάνει χώρα στον χρόνο μεταγλώττισης (compile time), μία θέση μνήμης κατάλληλου μεγέθους, γεγονός που λαμβάνει χώρα στον χρόνο εκτέλεσης (run time) Ονομασία μεταβλητής Σε ό,τι αφορά την ονοματολογία, ακολουθούνται οι εξής κανόνες: Στη γλώσσα C τα ονόματα των μεταβλητών σχηματίζονται από: (α) τα γράμματα του αλφαβήτου, (β) τα ψηφία 0 έως 9, (γ) τον χαρακτήρα υπογράμμισης _ (underscore). Το όνομα πρέπει να ξεκινά με γράμμα ή με χαρακτήρα υπογράμμισης (στη δεύτερη περίπτωση ο επόμενος χαρακτήρας πρέπει να είναι μικρό γράμμα). Το όνομα δεν πρέπει να είναι ίδιο με δεσμευμένη λέξη. Τα όνομα μίας μεταβλητής πρέπει να είναι ενδεικτικό της ιδιότητάς της ή του τύπου δεδομένου που αντιπροσωπεύει, έτσι ώστε να δίνει πληροφορία στον προγραμματιστή. Στην περίπτωση που το όνομα μίας μεταβλητής περιέχει περισσότερες από μία λέξεις, συνιστάται το πρώτο γράμμα κάθε λέξης να είναι κεφαλαίο. Με βάση τα παραπάνω, ακολουθούν ενδεικτικές περιπτώσεις ονοματολογίας: Έγκυρα ονόματα μεταβλητών: totalarea max_amount counter1 Counter1 _temp_in_f Μη έγκυρα ονόματα μεταβλητών: $product total% 3rd Απαράδεκτα ονόματα μεταβλητών: j x2 max_number_of_students_in_my_class Σημείωση: Στην πορεία ανάγνωσης του κειμένου ο αναγνώστης θα παρατηρήσει ότι οι ονομασίες των μεταβλητών δε συνάδουν πάντοτε με τους κανόνες που αναφέρονται, καθώς χρησιμοποιούνται μεταβλητές με ένα ή δύο γράμματα. Η χρήση τους γίνεται συγγραφική αδεία, επιβληθείσα για λόγους πρακτικούς, έτσι ώστε να μη διευρύνεται ο κώδικας Τύποι μεταβλητών Οι μεταβλητές της γλώσσας C ανήκουν σε δύο κατηγορίες. Η κατηγορία των βαθμωτών τύπων περιλαμβάνει: o Τους ακέραιους (integers), οι οποίοι δηλώνονται με την κωδική λέξη int. o Τους πραγματικούς, οι οποίοι χωρίζονται στους αριθμούς κινητής υποδιαστολής με κωδική λέξη float και τους αριθμούς διπλής ακρίβειας με κωδική λέξη double. -12-

26 o Τη μεταβλητή χαρακτήρα (character, char). o Τους δείκτες (pointers). o Τον απαριθμητικό τύπο (enumerated, enum). Στο πρότυπο της γλώσσας C99 προστέθηκε και ο τύπος bool, ο οποίος εμφανίζει δύο τιμές (true που αντιστοιχεί στον ακέραιο 1 και false που αντιστοιχεί στον ακέραιο 0). Επειδή όμως στην πραγματικότητα αυτός ο τύπος είναι τεχνητός, υπό την έννοια ότι τα αποτελέσματα προκύπτουν μέσα από επεξεργασία ακεραίων από μακροεντολές, δεν θα μελετηθεί. Στην κατηγορία των συναθροιστικών τύπων ανήκουν οι πίνακες, οι δομές (struct) και οι ενώσεις (union). Στη συνέχεια του κεφαλαίου γίνεται αναφορά στους βασικούς τύπους της C: char, int, float, double και στο Κεφάλαιο 5 αναπτύσσονται οι πίνακες. Οι άλλοι τύποι μεταβλητών θα μελετηθούν στο Κεφάλαιο Ο τύπος του χαρακτήρα Ο τύπος του χαρακτήρα (char) παριστάνει χαρακτήρες του αλφάβητου της γλώσσας. Βρίσκεται ανάμεσα σε εισαγωγικά (π.χ. 'C', '2', '*', ')'). Η δήλωση της μεταβλητής χαρακτήρα ακολουθεί τον εξής φορμαλισμό: char <όνομα_μεταβλητής>; π.χ. char choice; Υπάρχει η δυνατότητα ταυτόχρονα με τη δήλωση να αποδοθεί αρχική τιμή στη μεταβλητή: char choice='α'; Η εισαγωγή τιμών στις μεταβλητές χαρακτήρα γίνεται με χρήση της συνάρτησης scanf() και του προσδιοριστή %c (character). Η πρόταση scanf( "%c", &choice ); διαβάζει από την κύρια είσοδο (πληκτρολόγιο) έναν χαρακτήρα και τον αποδίδει στη μεταβλητή choice. Θα πρέπει να προσεχθεί η χρήση του & πριν από τη μεταβλητή. Ονομάζεται τελεστής διεύθυνσης και προηγείται των μεταβλητών στη συνάρτηση scanf() (με εξαίρεση τα ονόματα μεταβλητών που αφορούν σε πίνακες, για τους οποίους θα γίνει σχετικός σχολιασμός στο Κεφάλαιο 5). Η εκτύπωση μεταβλητών χαρακτήρα γίνεται με χρήση της συνάρτησης printf() και του προσδιοριστή %c. Η πρόταση printf( "The character is %c\n", choice ); θα τυπώσει (θεωρώντας ότι στη choice εισήχθη ο 'Α') The character is Α Παρατήρηση: Επειδή κάθε χαρακτήρας του κώδικα ASCII (American Standard Code for Information Interchange) αντιστοιχεί σε έναν οκταψήφιο δυαδικό αριθμό, εάν αντί του %c χρησιμοποιηθεί ο προσδιοριστής %d (decimal), η printf() θα εμφανίσει τον ASCII κωδικό τού χαρακτήρα. Η πρόταση θα τυπώσει printf( "The ASCII Code of %c is %d\n", choice,choice); The ASCII Code of A is 65 όπου 65 είναι το δεκαδικό ισοδύναμο του δυαδικού κωδικού ASCII για τον χαρακτήρα 'Α'. Ο μεταγλωττιστής απαιτεί 1 byte μνήμης για την αποθήκευση της τιμής μίας μεταβλητής χαρακτήρα. Στο Σχήμα 2.1 παρουσιάζονται οι διαδικασίες της αποθήκευσης και ανάκλησης για τον χαρακτήρα Α. Η τιμή της μεταβλητής μετατρέπεται σε ακέραιο (ενέργεια 1 του Σχήματος 2.1), ο οποίος αποθηκεύεται (ενέργεια 2). Στην περίπτωση ανάκλησης της τιμής, εκτελείται η αντίστροφη διεργασία. Ο αριθμός μετατρέπεται σε χαρακτήρα μέσω του προσδιοριστή %c και ακολούθως είτε τυπώνεται ο χαρακτήρας (ενέργεια 3) είτε -13-

27 τυπώνεται το δεκαδικό ισοδύναμο μέσω του προσδιοριστή %d (ενέργεια 4). Σε κάθε περίπτωση, ο μεταγλωττιστής είναι υπεύθυνος για το ότι ο υπολογιστής διαχειρίζεται τα bits και bytes σύμφωνα με τους τύπους που δηλώνονται. Σχήμα 2.1 Αποθήκευση και ανάκληση ASCII χαρακτήρα O κώδικας (πίνακας) ASCII Ο κώδικας ASCII αντιστοιχεί χαρακτήρες στις 256 καταστάσεις που μπορεί να περιέχει ένα byte. Η τυπική κωδικοποίηση ASCII χρησιμοποιεί τις πρώτες 128 καταστάσεις, με κωδικούς από το δεκαδικό 0 (δυαδική απεικόνιση σε byte: ) έως το δεκαδικό 127 (δυαδική απεικόνιση σε byte: ). Οι υπόλοιπες 128 καταστάσεις (128 έως 255 ή ισοδύναμα στο δυαδικό σύστημα έως ) αποτελούν επέκταση του πρότυπου κώδικα (extended ASCII code) και διαφέρουν ανάλογα με το σύστημα. Oι πρώτες 31 θέσεις του πίνακα ASCII είναι μη εκτυπούμενοι χαρακτήρες και χρησιμοποιούνται ως χαρακτήρες ελέγχου. Στον Πίνακα 2.1 απεικονίζεται ο πρότυπος πίνακας ASCII, όπου δίπλα στον κωδικό ASCII εμφανίζεται ο αντίστοιχος χαρακτήρας. ASCII ASCII ASCII ASCII ASCII ASCII ASCII ASCII P p ! A 81 Q 97 a 113 q « B 82 R 98 b 114 r C 83 S 99 c 115 s $ D 84 T 100 d 116 t % E 85 U 101 e 117 u & F 86 V 102 f 118 v G 87 W 103 g 119 w ( H 88 X 104 h 120 x ) I 89 Y 105 i 121 y * 58 : 74 J 90 Z 106 j 122 z ; 75 K 91 [ 107 k , 60 < 76 L 92 \ 108 l = 77 M 93 ] 109 m > 78 N 94 ^ 110 n 126 ~ / 63? 79 O 95 _ 111 o 127 Πίνακας 2.1 Ο κώδικας ASCII Ο τύπος του ακεραίου Ο τύπος του ακεραίου (int από τη λέξη integer) χρησιμοποιείται, για να παραστήσει ακέραιους αριθμούς. Η περιοχή τιμών εξαρτάται από την αρχιτεκτονική του μηχανήματος. Για έναν υπολογιστή που διαθέτει 4 bytes (32 bits) για κάθε ακέραιο, το σύνολο των δυνατών τιμών είναι Εάν θεωρηθεί ότι τις -14-

28 μισές τιμές θα καταλάβουν αρνητικοί ακέραιοι και τις υπόλοιπες μισές θετικοί, η περιοχή τιμών του τύπου int είναι από , με την ακόλουθη αντιστοιχία δυαδικής και δεκαδικής τιμής: ( ) 2 ( ) 10 ( ) 2 ( 1) 10 ( ) 2 (0) 10 ( ) 2 ( ) 10 Η δήλωση της μεταβλητής ακεραίου ακολουθεί τον εξής φορμαλισμό: int όνομα_μεταβλητής; π.χ. int num; Υπάρχει η δυνατότητα ταυτόχρονα με τη δήλωση να αποδοθεί αρχική τιμή στη μεταβλητή: int num=46; Εάν πριν από τη λέξη int τοποθετηθεί ο προσδιοριστής long, τότε οι ακέραιοι long int εξασφαλίζουν τον ίδιο αποθηκευτικό χώρο με τον απλό ακέραιο. Ωστόσο, στο πρότυπο C99 έχει προστεθεί ο τύπος long long int, για τις μεταβλητές του οποίου διατίθεται χώρος 64 bits. Επιπλέον, ο προσδιοριστής unsigned χρησιμοποιείται πριν από τη λέξη int, για να χαρακτηρίσει τη μεταβλητή χωρίς πρόσημο. Το πεδίο τιμών ενός μη προσημασμένου ακέραιου μήκους n bits εκτείνεται από 0 έως 2 n 1. Η εισαγωγή τιμών στις ακέραιες μεταβλητές γίνεται με χρήση της συνάρτησης scanf() και του προσδιοριστή %d (από τη λέξη decimal). Η πρόταση scanf( "%d", &num ); διαβάζει από το πληκτρολόγιο έναν ακέραιο και τον αποδίδει στη μεταβλητή num. Η εκτύπωση ακέραιων μεταβλητών γίνεται με χρήση της συνάρτησης printf() και των προσδιοριστών %d, %o, %x για την εμφάνιση σε δεκαδική, οκταδική και δεκαεξαδική μορφή, αντίστοιχα. Οι προσδιοριστές l (long), h (short), και u (unsigned) τοποθετούνται πριν από τους d, o, x. H πρόταση printf( "dec=%d, octal=%o, hex=%x", num,num,num ); θα τυπώσει (θεωρώντας ότι η num λαμβάνει την τιμή 46) dec=46, octal=56, hex=2e Παρατηρήσεις: 1. Υπάρχει η δυνατότητα να καθοριστεί ο αριθμός των ψηφίων που θα τυπωθούν, τοποθετώντας τον επιθυμητό αριθμό ανάμεσα στο % και το d. Εάν ο αριθμός είναι μικρότερος από τον απαιτούμενο αριθμό ψηφίων του ακέραιου, η επιλογή δεν θα ληφθεί υπόψη. Στην αντίθετη περίπτωση, στις πλεονάζουσες θέσεις θα τοποθετηθούν κενά. Για τον λόγο αυτό, ο αριθμός που τοποθετείται στον προσδιοριστή %d, ονομάζεται καθοριστικό ελάχιστου πλάτους πεδίου. Με αυτόν τον τρόπο, σε διαδοχικές printf() θα υπάρξει ευθυγράμμιση των αποτελεσμάτων κατά στήλες. Οι προτάσεις printf( "dec=%1d, octal=%4o, hex=%4x", num,num,num ); printf( "dec=%4d, octal=%4o, hex=%4", num,num,num ); θα τυπώσουν αντίστοιχα dec=46, octal= 56, hex= 2e dec= 46, octal= 56, hex= 2e 2. Όταν γράφεται ένας αριθμός στον πηγαίο κώδικα χωρίς δεκαδικό ή εκθετικό μέρος, ο μεταγλωττιστής τον χειρίζεται ως ακέραια σταθερά. Η σταθερά 245 αποθηκεύεται ως int, ενώ η σταθερά αποθηκεύεται ως long int. Εάν οριστεί η σταθερά 8965 ως 8965LL, ο μεταγλωττιστής αναγκάζεται να δεσμεύσει χώρο για long long int. -15-

29 Παράδειγμα Να καταστρωθεί πρόγραμμα που να εξετάζει τα μήκη και τα πεδία τιμών των διάφορων παραλλαγών του τύπου ακεραίου. #include <stdio.h> #include <limits.h> int main() /* INT_MAX είναι ο μέγιστος int: ορίζεται στο αρχείο κεφαλίδας limits.h. Ο τελεστής sizeof δίνει το μέγεθος ενός τύπου δεδομένου ή μίας μεταβλητής */ printf( "The size of type int is %d bytes\n",sizeof(int) ); printf( "The size of type short is %d bytes\n",sizeof(short) ); printf( "The size of type long is %d bytes\n",sizeof(long) ); printf( "The size of type long long is %d bytes\n",sizeof(long long) ); printf( "\nmin int: %d, max int: %d\n",int_min,int_max ); printf( "\nmin short: %d, max short: %d\n",shrt_min,shrt_max ); printf( "\nmin long: %d, max long: %d\n",long_min, LONG_MAX ); return 0; Eικόνα 2.1 Η έξοδος του προγράμματος του παραδείγματος Από τα αποτελέσματα προκύπτει ότι ταυτίζονται τα bytes για int και long, ενώ ο πλέον εκτεταμένος τύπος ακεραίου long long int καταλαμβάνει 8 bytes Παράδειγμα Να καταστρωθεί πρόγραμμα που να επιτελεί τα παρακάτω: Ζήτησε από τον χρήστη έναν χαρακτήρα Πάρε από τον χρήστη τον χαρακτήρα Τύπωσε τον χαρακτήρα και τον ASCII κωδικό του Βρες τον επόμενο χαρακτήρα Τύπωσέ τον μαζί με τον κωδικό του #include <stdio.h> int main() -16-

1. Εισαγωγή βασικά στοιχεία προγράμματος

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

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

Διδάσκων: Δημήτριος Βαρσάμης

Διδάσκων: Δημήτριος Βαρσάμης Διδάσκων: Δημήτριος Βαρσάμης dvarsam@teicm.gr http://teachers.teicm.gr/dvarsam/ Διανεμόμενα συγγράμματα: Εισαγωγή Βασικά στοιχεία προγράμματος Τι είναι ο υπολογιστής; Οι κανόνες αποτελούν την καρδιά της

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

TEI Σερρών - Τμήμα Πληροφορικής & Επικοινωνιών

TEI Σερρών - Τμήμα Πληροφορικής & Επικοινωνιών Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Διαδικαστικός Προγραμματισμός Δρ. Πάρις Μαστοροκώστας Αναπληρωτής Καθηγητής Σέρρες 2006 ΠΕΡΙΕΧΟΜΕΝΑ Περιεχόμενα i Κεφάλαιο 1:

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

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

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

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

Προγραμματισμός I (Θ)

Προγραμματισμός I (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός I (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Οκτώβριος 2017 Δρ. Δημήτρης Βαρσάμης Οκτώβριος

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

Ενδεικτική περιγραφή μαθήματος

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Θεματική ενότητα 2: Μεταβλητές σταθερές Ι/Ο κονσόλας

Προγραμματισμός Ι. Θεματική ενότητα 2: Μεταβλητές σταθερές Ι/Ο κονσόλας Θεματική ενότητα 2: Μεταβλητές σταθερές Ι/Ο κονσόλας Μεταβλητές Ίδια χρήση με εκείνη της άλγεβρας: 3x + 5 = y x και y είναι οι μεταβλητές Αλλά γενικευμένη: η μεταβλητή είναι μία θέση μνήμης για ένα δεδομένο.

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

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

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

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

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 1ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Ορισμός Wikipedia.org 2 Δομημένος προγραμματισμός (structured programming) ή διαδικαστικός προγραμματισμός (procedural

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμό για ΗΜΥ

Προγραμματισμό για ΗΜΥ ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 3 Εισαγωγή στην C Θέματα ιάλεξης Σύνταξη και Σημασιολογία

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Συντακτικό Γλώσσας. Αλφάβητο. #2.. Εισαγωγή στη C (Μέρος Πρώτο)

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

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

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

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

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 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 στην

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

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

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

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

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 Ευρετήριο Η γλώσσα C σε βάθος # #define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 A abs(), 625 AND, 64 ASCII πίνακας

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

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

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

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

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

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κεφάλαιο 2 Επιμέλεια: Βασίλης Παλιουράς, Αναπληρωτής Καθηγητής Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Σταύρος Νούσιας, Βοηθός Ερευνητή Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ I Τίτλος Μαθήματος ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ I ΠΑΡΙΣ ΜΑΣΤΟΡΟΚΩΣΤΑΣ Καθηγητής ΣΕΡΡΕΣ, ΣΕΠΤΕΜΒΡΙΟΣ 2015

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

Κεφάλαιο 2.1-2.4: Εισαγωγή στην C: (Διαλέξεις 3-4)

Κεφάλαιο 2.1-2.4: Εισαγωγή στην C: (Διαλέξεις 3-4) Κεφάλαιο 2.1-2.4: Εισαγωγή στην C (Διαλέξεις 3-4) Περιεχόμενα Εισαγωγή στην C: Σύνταξη και Σημασιολογία σχόλια μεταβλητές και σταθερές τύποι δεδομένων Μετά αυτές τις δυο διαλέξεις θα μπορείτε να γράψετε

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

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

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

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

Δεδομένα, Τύποι και Τιμές

Δεδομένα, Τύποι και Τιμές Προγραμματισμός Η/Υ Ι Δεδομένα, Τύποι και Τιμές ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Οι περισσότερες προγραμματιστικές εργασίες περιλαμβάνουν χειρισμό

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

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

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

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός I (Θ)

Προγραμματισμός I (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός I (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Οκτώβριος 2017 Δρ. Δημήτρης Βαρσάμης Οκτώβριος

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

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

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 2: Τύποι μεταβλητών Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Αναδροµή Σύντοµη Αναδροµή Η γλώσσα προγραµµατισµού C είναι µία γλώσσα

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

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

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

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

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 6: Αλγόριθμοι / Προγραμματισμός Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 1ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΓΙΑΤΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ; Στα μαθηματικά και στη φυσική συχνά έχουμε

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

Εισαγωγή στον δομημένο προγραμματισμό

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

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

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

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

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

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

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

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

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

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

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας

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

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

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

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

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα 1 : Εισαγωγή Κώστας Κουκουλέτσος, Καθηγητής Τμήμα Η.Υ.Σ Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

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

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

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

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

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 ΙΣΤΟΡΙΚΑ Παρουσιάστηκε το 1970 από το Niklaus Wirth Προγενέστερη γλώσσα ήταν η Algol 60 Είναι δομημένη γλώσσα προγραμματισμού υψηλού

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

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

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

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

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

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

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

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

Εισαγωγή στη γλώσσα προγραμματισμού C++14 Εισαγωγή στη γλώσσα προγραμματισμού C++14 Σταμάτης Σταματιάδης Τμήμα Επιστήμης και Τεχνολογίας Υλικών, Πανεπιστήμιο Κρήτης Σχετικά με το μάθημα Διαλέξεις Ασκήσεις Παρασκευή 17:00-20:00 στην αίθουσα υπολογιστών

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

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

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

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

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

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

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

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

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

Δομημένος Προγραμματισμός

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

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

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

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

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

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

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

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

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

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

Κεφάλαιο 1 Εισαγωγή στη C

Κεφάλαιο 1 Εισαγωγή στη C Κεφάλαιο 1 Εισαγωγή στη C 1.1 Ιστορία της C Η γλώσσα προγραμματισμού C δημιουργήθηκε στα εργαστήρια Bell στις αρχές της δεκαετίας του 70 για να μεταφερθεί το λειτουργικό σύστημα Unix από ένα σύστημα DEC

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2 Εισαγωγή στην C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Σύνταξη και Σηµασιολογία της C Σχολιασµός Μεταβλητές / Σταθερές Τύποι εδοµένων και Τελεστές Βιβλίο µαθήµατος: Chapter 2,, Sec.

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

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

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C Τµήµα Πληροφορικής και Τηλεπικοινωνιών Περιεχόµενα Εισαγωγή Πρόγραµµα Φάσεις Υλοποίησης µε χρήση του εργαλείου DEV C + + οµή Προγράµµατος Η συνάρτηση main Μεταβλητές Τι είναι

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

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

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

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