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

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

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

Transcript

1

2

3 Περιεχόμενα Πρόλογος Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31 Πότε να μάθω προγραμματισμό;...32 Μπορούν όλοι να μάθουν προγραμματισμό;...32 Η C ως πρώτη γλώσσα προγραμματισμού...32 Ένα επιτυχημένο πείραμα...33 Μια ιστορική αναδρομή στη γλώσσα C...35 Τα χαρακτηριστικά της C...36 Μια δομημένη γλώσσα...36 Μια γλώσσα για προγραμματιστές...36 Μια μεταφράσιμη γλώσσα...37 Βασικές έννοιες προγραμματισμού...37 Μεταβλητές...38 Σταθερές...40 Παραστάσεις...40 Εντολές...40 Αναγνωριστικά...41 Σχεδιασμός και ανάπτυξη προγραμμάτων...41 Λογικό διάγραμμα...42 Κεφάλαιο 2: Μια πρώτη ματιά στη C Εισαγωγή...57 Η δομή ενός προγράμματος στη C...58 Το πρώτο σας πρόγραμμα στη C...60 Ας ξαναγράψουμε το πρώτο μας πρόγραμμα...62 Προγράμματα με περισσότερες συναρτήσεις...63 Σχόλια προγράμματος...64 Δηλώσεις μεταβλητών...64

4 10 Η γλώσσα C σε βάθος, 5η έκδοση Ανάθεση τιμής σε μεταβλητή...67 Αρχικές τιμές μεταβλητών...67 Μεταβλητές μόνο για ανάγνωση...67 Παραστάσεις...68 Παραστάσεις με μέλη διαφορετικού τύπου...72 Λογικές παραστάσεις...72 Παραδείγματα κώδικα με παραστάσεις...75 Μετατροπή τύπου κατά την ανάθεση τιμής σε μεταβλητή...76 Η C και τα άγκιστρά της...77 Σύνθετη πρόταση...77 Είδη προτάσεων...78 Η οδηγία #include...79 Η οδηγία #define...79 Κεφάλαιο 3: Προετοιμασία για αργότερα Η C και η μνήμη...91 Ο τελεστής &...92 Ο τελεστής sizeof...92 Τρεις συναρτήσεις παρακαλώ...93 Έξοδος στην οθόνη Η συνάρτηση printf()...93 Είσοδος από το πληκτρολόγιο Η συνάρτηση scanf()...96 Τερματισμός προγράμματος Η συνάρτηση exit()...99 Ολίγη if παρακαλώ...99 Κεφάλαιο 4: Ο τύπος δεδομένων int Εισαγωγή Σταθερές τύπου int Μεταβλητές τύπου int Μεταβλητές τύπου int χωρίς πρόσημο Αρχική τιμή μεταβλητής Αριθμητικοί τελεστές Ο τελεστής υπολοίπου % Τελεστές σύντμησης Δυαδικοί αριθμοί Μετατροπή δυαδικού σε δεκαδικό Μετατροπή δεκαδικού σε δυαδικό Οι δυαδικοί τελεστές Χρήση δυαδικών τελεστών για την απομόνωση συγκεκριμένων bit Προτεραιότητα τελεστών...125

5 Περιεχόμενα 11 Κεφάλαιο 5: Ο τύπος δεδομένων char Εισαγωγή Σταθερές τύπου char Κωδικοποίηση χαρακτήρων σε αριθμούς Χαρακτήρες διαφυγής Κωδικοποίηση Unicode Μεταβλητές τύπου char Μεταβλητές τύπου unsigned char Τρεις συναρτήσεις χειρισμού χαρακτήρων putchar(ch) getch() getchar() H scanf() και τα μικρά της προβλήματα! Συμβολοσειρές Οι συμβολοσειρές έχουν τιμή; Κεφάλαιο 6: Float, double, και άλλοι τύποι δεδομένων Οι τύποι δεδομένων float και double Σταθερές τύπου float και double Μεταβλητές τύπου float και double Χρήση τελεστών σε δεδομένα τύπου κινητής υποδιαστολής Η χρήση της printf() με δεδομένα κινητής υποδιαστολής Χρήση της συνάρτησης scanf() με δεδομένα τύπου float Οι συναρτήσεις pow() και sqrt() Βασικοί τύποι και παραλλαγές τους Απόλυτος προσδιορισμός τύπου αριθμητικών σταθερών Ο τύπος δεδομένων bool Κεφάλαιο 7: Εντολές συνθήκης Εισαγωγή Η εντολή if σε μια δεύτερη ματιά H απλή πρόταση if Η πρόταση if-else Η πρόταση if-else if Ένθετες εντολές if Η εντολή switch-case Ο τελεστής συνθήκης?:...185

6 12 Η γλώσσα C σε βάθος, 5η έκδοση Κεφάλαιο 8: Εντολές επανάληψης Εισαγωγή Η εντολή while Η εντολή do-while Η εντολή for Χορεύοντας με τη for! Απλά παραδείγματα Ένθετοι βρόχοι for Και άλλοι ένθετοι βρόχοι for Κλιμακωτή γραφή Η «απαγορευμένη» εντολή goto Ο τελεστής «κόμμα» (,) Η εντολή break Η εντολή continue Επεξεργασία δεδομένων με επαναληπτικές διαδικασίες Καταμέτρηση και άθροιση Υπολογισμός μέγιστου και ελάχιστου Ανάγνωση χαρακτήρων από το πληκτρολόγιο Η χρήσιμη συνάρτηση getch() Διαχωρισμός ψηφίων ακέραιου αριθμού Κεφάλαιο 9: Συναρτήσεις Εισαγωγή Ορισμός συνάρτησης Συναρτήσεις χωρίς παραμέτρους Συναρτήσεις με παραμέτρους Συναρτήσεις που επιστρέφουν τιμή Συναρτήσεις που δεν επιστρέφουν τιμή Τύπος void Κλήση συνάρτησης Παράμετροι συνάρτησης Ορίσματα και μεταβίβαση παραμέτρων Χρήση συναρτήσεων βιβλιοθήκης Πρωτότυπα συναρτήσεων Συναρτήσεις χωρίς παραμέτρους, με ρητή δήλωση Ένα ξεκαθάρισμα Μετατροπή τύπου Αυτόματη μετατροπή τύπου...265

7 Περιεχόμενα 13 Κεφάλαιο 10: Εμβέλεια μεταβλητών Εισαγωγή Τοπικές μεταβλητές Δήλωση τοπικών μεταβλητών σε σύνθετη πρόταση Δήλωση της μεταβλητής ενός βρόχου for ως τοπικής Καθολικές μεταβλητές Στατικές μεταβλητές Κεφάλαιο 11: Δείκτες Εισαγωγή Μεταβλητές δείκτη (Pointer variables) Δήλωση μιας μεταβλητής δείκτη Ένας διαφορετικός τρόπος δήλωσης μιας μεταβλητής δείκτη Οι τελεστές & και * Σύνοψη Αριθμητική δεικτών Λανθασμένη χρήση δεικτών και δείκτες προς άλλες οντότητες Δείκτες τύπου void Δείκτης NULL Εμφάνιση διευθύνσεων και περιεχόμενα δεικτών Δείκτες και συμβολοσειρές Δείκτες σε δείκτες Δείκτες ως παράμετροι συναρτήσεων Συναρτήσεις που επιστρέφουν δείκτη Παραστάσεις αριστερής τιμής (lvalues) Κεφάλαιο 12: Πίνακες Εισαγωγή Πίνακες μίας διάστασης (1Δ) Χειρισμός πινάκων μίας διάστασης Πίνακες μίας διάστασης και δείκτες Αρχικές τιμές πίνακα μίας διάστασης Πίνακες δύο διαστάσεων (2Δ) Χειρισμός πινάκων δύο διαστάσεων Αρχικές τιμές πινάκων 2Δ Πίνακες δύο διαστάσεων και δείκτες - πρώτη προσέγγιση Πίνακες με περισσότερες από δύο διαστάσεις...356

8 14 Η γλώσσα C σε βάθος, 5η έκδοση Πίνακες χαρακτήρων για την αποθήκευση συμβολοσειρών Χρήση της printf() και της scanf() με πίνακες χαρακτήρων Ο τύπος δεδομένων size_t Χειρισμός συμβολοσειρών Πίνακες χαρακτήρων 2Δ για την αποθήκευση συμβολοσειρών Μεταβίβαση πινάκων σε συναρτήσεις Μεταβίβαση πίνακα 1Δ σε συνάρτηση Μεταβίβαση πινάκων πολλών διαστάσεων σε συναρτήσεις Εξειδικευμένοι πίνακες Πίνακες μεταβλητού μήκους Τετραγωνικοί πίνακες Πίνακες δεικτών Δείκτες σε πίνακες Αριθμητική δεικτών σε πίνακες Πίνακες δεικτών σε πίνακες Πίνακες πολλών διαστάσεων και δείκτες Κεφάλαιο 13: Προσαρμοσμένοι τύποι δεδομένων Εισαγωγή Δομές Αναφορά στα πεδία μιας δομής Απόδοση αρχικών τιμών στα μέλη μιας δομής Πίνακες από δομές Ποια είναι η χρησιμότητα των δομών; Μεταβίβαση πεδίων δομής σε συνάρτηση Μεταβίβαση ολόκληρης δομής σε συνάρτηση Δείκτες σε δομές Σύνθετες δομές Πίνακες ως μέλη δομών Χρήση του τελεστή ανάθεσης = με δομές του ίδιου τύπου Πεδία εύρους ενός ή περισσότερων bit Ενώσεις Απαριθμήσεις Χρήση της δεσμευμένης λέξης typedef Χρήση της typedef για πιο σύντομες και ευανάγνωστες δηλώσεις Κεφάλαιο 14: Ρεύματα επικοινωνίας και χειρισμός αρχείων Εισαγωγή Προκαθορισμένα ρεύματα Επίπεδα ρευμάτων...468

9 Περιεχόμενα 15 Χειρισμός αρχείων Αρχεία κειμένου και δυαδικά αρχεία Σειριακή και τυχαία προσπέλαση Μνήμη προσωρινής αποθήκευσης Άνοιγμα και κλείσιμο αρχείου fopen() fclose() ferror() clearerr() fflush() fflushall() Αρχεία κειμένου fputc() fgetc() fprintf() fscanf() feof() fgets() fputs() Τυχαία προσπέλαση fseek() rewind() ftell() Δυαδικά αρχεία fwrite() fread() Χρήση δομών για αναπαράσταση εγγραφών Κεφάλαιο 15: Προχωρημένα θέματα Αναδρομή Ο μηχανισμός κλήσης συναρτήσεων χρήση της στοίβας Παράμετροι γραμμής εντολών Δείκτες σε συναρτήσεις Δήλωση δείκτη προς συνάρτηση Ανάθεση τιμής σε μεταβλητή δείκτη προς συνάρτηση Έλεγχος των περιεχομένων ενός δείκτη προς συνάρτηση Δείκτες προς συναρτήσεις ως παράμετροι Πίνακες δεικτών προς συναρτήσεις Εμβόλιμες συναρτήσεις Προγράμματα με πολλά πηγαία αρχεία...531

10 16 Η γλώσσα C σε βάθος, 5η έκδοση Ο μεταγλωττιστής GCC Μεταγλώττιση και σύνδεση ξεχωριστών αρχείων Δημιουργία δικών μας βιβλιοθηκών Ορισμός και δήλωση μεταβλητών και συναρτήσεων Συναρτήσεις με μεταβλητό πλήθος ορισμάτων Σύνοψη Κεφάλαιο 16: Αναζήτηση και ταξινόμηση Εισαγωγή Σειριακή αναζήτηση Δυαδική αναζήτηση Ταξινόμηση Ταξινόμηση φυσαλίδας Ταξινόμηση επιλογής Ταξινόμηση παρεμβολής Γρήγορη ταξινόμηση Ταξινόμηση πινάκων δύο διαστάσεων Συναρτήσεις βιβλιοθήκης για αναζήτηση και ταξινόμηση Συναρτήσεις σύγκρισης Η συνάρτηση lfind() Η συνάρτηση qsort() Η συνάρτηση bsearch() Χρήση των συναρτήσεων lfind() και qsort() σε πίνακες συμβολοσειρών και δομών Κεφάλαιο 17: Δυναμική διαχείριση μνήμης Εισαγωγή Δυναμική κατανομή μνήμης Η συνάρτηση malloc() Η συνάρτηση calloc() Η συνάρτηση free() Η συνάρτηση realloc() Δημιουργία δυναμικών πινάκων Δυναμικοί πίνακες μίας διάστασης Δυναμικοί πίνακες δύο διαστάσεων Κεφάλαιο 18: Δυναμικές δομές δεδομένων Εισαγωγή Πότε χρησιμοποιούνται οι διαφορετικές δυναμικές δομές Η έννοια του κόμβου...632

11 Περιεχόμενα 17 Συνδεδεμένες λίστες Απλά συνδεδεμένη λίστα Κυκλικά συνδεδεμένη λίστα Διπλά συνδεδεμένη λίστα Κυκλικά διπλά συνδεδεμένη λίστα Προσθήκη νέου κόμβου σε μια λίστα Υλοποίηση απλά συνδεδεμένης λίστας στη C Δυαδικά δένδρα Δυαδικά δένδρα αναζήτησης (ΔΔΑ) Χειρισμός ενός δυαδικού δένδρου αναζήτησης Προσθήκη νέου κόμβου Αναζήτηση κόμβου Διάσχιση δυαδικού δέντρου αναζήτησης Διαγραφή κόμβου από ΔΔΑ Υλοποίηση της δομής δυαδικού δένδρου αναζήτησης Γράφοι Βασικές έννοιες γράφων Αναπαράσταση γράφων με πίνακες γειτνίασης Αναπαράσταση γράφων με λίστες γειτνίασης Διάσχιση γράφων Πιο δυναμικοί γράφοι Προτάσεις για περαιτέρω μελέτη Ισορροπημένα δυαδικά δένδρα αναζήτησης Σταθμισμένοι γράφοι Κεφάλαιο 19: Ο προμεταγλωττιστής της C Εισαγωγή #include #define Μακροεντολές Μακροεντολές με περισσότερες προτάσεις #undef #if, #else, #elif και #endif #ifdef και #ifndef #error Αποσφαλμάτωση Η μακροεντολή assert()...741

12 18 Η γλώσσα C σε βάθος, 5η έκδοση Κεφάλαιο 20: Από τη C, στη C Εισαγωγή Η κληρονομιά από τη C Μια αντικειμενοστρεφής γλώσσα Αντικειμενοστρεφής προγραμματισμός Κλάσεις και αντικείμενα Ενθυλάκωση Κληρονομικότητα Πολυμορφισμός Το πρώτο μας πρόγραμμα σε C Παίζοντας με αντικείμενα Το αντικείμενο cout Το αντικείμενο cin Διαφορές μεταξύ της C και της C Μερικά από τα νέα διαδικαστικά χαρακτηριστικά της C Τα αντικειμενοστρεφή χαρακτηριστικά της C Σκεφτείτε αντικειμενοστρεφώς! Παράρτημα Α: Συναρτήσεις βιβλιοθήκης της C Η καθιερωμένη βιβλιοθήκη της C <ctype.h> <math.h> <stdio.h> <stdlib.h> <string.h> Το ολοκληρωμένο περιβάλλον του Code::Blocks Το ολοκληρωμένο περιβάλλον ανάπτυξης Code::Blocks Εγκατάσταση του Code::Blocks Οι βασικές λειτουργίες του Code::Blocks Παραμετροποίηση του μεταγλωτιστή για χρήση ελληνικών χαρακτήρων Δημιουργία νέου αρχείου πηγαίου κώδικα ή έργου Σύνταξη του κώδικα Αποθήκευση αρχείων Μεταγλώττιση και εκτέλεση του αρχείου πηγαίου κώδικα Μηνύματα μεταγλωττιστή Αντιστοίχιση ελληνικών και αγγλικών όρων Αντιστοίχιση ελληνικών και αγγλικών όρων...803

13 Περιεχόμενα 19 Βιβλιογραφία Βιβλιογραφικές πηγές Αναφορές στο Διαδίκτυο Ευρετήριο

14

15 Πρόλογος

16

17 Πρόλογος 23 Πώς να προλογίσει κανείς ένα βιβλίο που αναφέρεται στη γλώσσα προγραμματισμού C, όταν έχουν γραφεί και ήδη κυκλοφορούν πάμπολλα βιβλία και εγχειρίδια χρήσης της C; Και όμως, το έργο του υπογράφοντος δεν ήταν ιδιαίτερα δύσκολο, μιας και ο συγγραφέας του βιβλίου έχει φροντίσει να εφοδιάσει το δημιούργημά του με ελκυστικό και ιδιαίτερα εκπαιδευτικό περιεχόμενο, αποδίδοντάς το ταυτόχρονα από μια πολύ ξεχωριστή και κατάλληλη οπτική γωνία. Ξεκινώντας ήδη από το εξώφυλλο, ο αναγνώστης προδιατίθεται για μια εις βάθος εξερεύνηση της γλώσσας C, κάτι που επαληθεύεται στη συνέχεια αφού το υλικό του βιβλίου τον ταξιδεύει σε ολόκληρο τον συναρπαστικό κόσμο της C. Σε όλο αυτό το ταξίδι φαίνεται η εμμονή του συγγραφέα να ακολουθεί προσεκτικά τη βέλτιστη διαδρομή, με άλλα λόγια τη βέλτιστη διδακτική σειρά με απλό, κατανοητό, και εποπτικό τρόπο. Τo επιτυχημένο αποτέλεσμα αυτής της προσπάθειας δένει αποτελεσματικά με την πληρότητα του βιβλίου στην εκτενή θεώρηση της γλώσσας C, μέσα από πλήθος επεξηγηματικών σχημάτων και παραδειγμάτων. Η μεγάλη διδακτική εμπειρία του συγγραφέα είναι εμφανής και τον βοηθάει να προσεγγίζει τις πιο δύσκολες έννοιες με ιδιαίτερο τρόπο ώστε να γίνονται άμεσα κατανοητές από τον αναγνώστη. Επιπλέον, το ύφος του βιβλίου είναι φιλικό και ελκυστικό, καθιστώντας το έτσι έναν ευχάριστο σύντροφο στην εκμάθηση και εμπέδωση της C. Το βιβλίο δεν σταματάει στη συμβατική κάλυψη της γλώσσας, αλλά διεισδύει και σε πιο προχωρημένους τομείς προγραμματισμού. Η αναφορά στις αναδρομικές διαδικασίες, στις μεθόδους ταξινόμησης και αναζήτησης, και η ανάπτυξη στοιχείων από τις δομές δεδομένων, όλα εναρμονισμένα με κώδικα της C, του δίνει μια πρόσθετη αξία και έναν χαρακτήρα που συναντάται μόνο σε εξειδικευμένα βιβλία αλγορίθμων και δομών δεδομένων. Κάθε κεφάλαιο ακολουθείται από σχετικά παραδείγματα, μια σύντομη ανασκόπηση, και ένα πλήθος ασκήσεων κυμαινόμενης δυσκολίας. Το βιβλίο συνοδεύεται από ένα ολοκληρωμένο περιβάλλον ανάπτυξης της γλώσσας, τον κώδικα των παραδειγμάτων, τις απαντήσεις όλων των ασκήσεων, καθώς και τον κώδικα των λύσεών τους. Το βιβλίο ήδη βρίσκεται στη 5η έκδοση του, γεγονός που αποδεικνύει τόσο την αποδοχή του όσο και την εμμονή του συγγραφέα για τη συνεχή βελτίωση του. Το συστήνω ανεπιφύλακτα σε εκπαιδευτικά ιδρύματα κάθε βαθμίδας, σε όσους διδάσκονται τη γλώσσα C, αλλά και σε όσους θα ήθελαν μόνοι τους να μάθουν και να κατανοήσουν σε βάθος τη γλώσσα και τις τεχνικές προγραμματισμού που τη συνοδεύουν. Καθηγητής Πάνος Τραχανιάς Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

18

19 Κεφάλαιο Εισαγωγή στον προγραμματισμό

20 Το κεφάλαιο αυτό ξεκινά με μια πρώτη γνωριμία με το βιβλίο, αναλύει τη δομή των υπόλοιπων κεφαλαίων, και σας προτείνει τρόπους ανάγνωσής του, ανάλογα με το αν διαθέτετε προηγούμενη εμπειρία στον προγραμματισμό. Περιέχει κάποια ιστορικά στοιχεία για τη γλώσσα C, καθώς και τις απαντήσεις σε κάποιες φιλοσοφικές ερωτήσεις όπως «γιατί να μάθω προγραμματισμό;» ή «γιατί να μάθω C;». Αναλύει τις βασικές έννοιες του προγραμματισμού, όπως η έννοια της μεταβλητής, και παρουσιάζει τη διαδικασία σχεδιασμού ενός προγράμματος. Τέλος, σας βοηθά να μάθετε να οργανώνετε τη σκέψη σας και να περιγράφετε τη λειτουργία συστημάτων με έναν εποπτικό τρόπο, χρησιμοποιώντας τα εργαλεία που σας παρέχει ένα λογικό διάγραμμα. Στο συνοδευτικό υλικό του βιβλίου θα βρείτε το πρόγραμμα εγκατάστασης για το ολοκληρωμένο περιβάλλον του Code::Blocks, τον κώδικα των προγραμμάτων που βρίσκονται στο βιβλίο, τον κώδικα και τις απαντήσεις όλων των ασκήσεων και των εργασιών. Το συμπιεσμένο αρχείο του συνοδευτικού υλικού μπορείτε να το κατεβάσετε από την ιστοσελίδα

21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό 27 Εισαγωγή Οκτώβριος του Ως μεταπτυχιακός φοιτητής, γνώρισα μια δεκαοχτάχρονη αμερικανιδούλα που την έλεγαν BCPL. H σχέση μας κράτησε έναν χρόνο περίπου. Ευέλικτη αλλά δύστροπη. Δύσκολο να την κατανοήσεις και δυσκολότερο να τη χειριστείς. Την επόμενη χρονιά μού γνώρισε τη μικρότερη αδελφή της, τη C. Από την πρώτη στιγμή με εντυπωσίασε, είχε πιο δομημένη σκέψη, ήταν τρομερά ευέλικτη και πολύ πιο φιλική. Η γνωριμία αυτή δεν άργησε να εξελιχθεί σε έναν μεγάλο έρωτα, ο οποίος κρατάει ακόμη και σήμερα. Από τότε συνάντησα και άλλες πολλές, πολύ πιο νέες και εμφανίσιμες, με πολλές δυνατότητες και προσόντα, όμως πάντα έμεινα πιστός στη μεσήλικα πια αγάπη μου, τη C. Ευτυχώς που είναι μόνο μια γλώσσα προγραμματισμού! Και όμως, η πολύχρονη αυτή σχέση είχε και έναν καρπό, την παραγωγή πλούσιου εκπαιδευτικού υλικού που χρησιμοποιήθηκε όλα αυτά τα χρόνια για τη διδασκαλία της γλώσσας C και το οποίο αποτέλεσε τη βάση για τη συγγραφή αυτού του βιβλίου. Το βιβλίο αυτό απευθύνεται τόσο στον αρχάριο όσο και στον πεπειραμένο προγραμματιστή που θέλει να γνωρίσει τις αρχές και τη φιλοσοφία του δομημένου προγραμματισμού μέσα από μια ευέλικτη και χωρίς όρια γλώσσα όπως η C. Με ιδιαίτερο τρόπο προσεγγίζονται όλα τα χαρακτηριστικά της γλώσσας και δίνεται έμφαση στην αναλυτική και σε βάθος επεξήγηση των «στρυφνών» της σημείων. Μεγάλο βάρος έχει δοθεί στη διδακτική σειρά αυτού του βιβλίου, ώστε η ανάγνωση και η κατανόηση ενός κεφαλαίου να προϋποθέτει μόνο τις γνώσεις που αποκτήθηκαν στα προηγούμενα κεφάλαια. Πώς να διαβάσετε αυτό το βιβλίο Αν είστε γνώστης μιας οποιασδήποτε άλλης γλώσσας προγραμματισμού μπορείτε να παραλείψετε το Κεφάλαιο 1 και να προχωρήσετε κατευθείαν στο επόμενο κεφάλαιο. Το Κεφάλαιο 2 είναι μια μικρή «περιοδεία» στη γλώσσα. Γίνεται μια πρώτη γνωριμία ώστε να αποκτήσετε μια σφαιρική εικόνα από τη δομή και τα χαρακτηριστικά της και να μπορέσετε να σχεδιάσετε τα πρώτα σας απλά προγράμματα. Τα επόμενα κεφάλαια αναλύουν όλα τα χαρακτηριστικά της γλώσσας, δίνοντας έμφαση στην παρουσίαση βασικών αλλά και πιο πολύπλοκων εννοιών, με απλό, εποπτικό, και κατανοητό τρόπο. Τα Κεφάλαια 15, 16, 17, 18 και 19, περιγράφουν σε βάθος τόσο εξειδικευμένες τεχνικές προγραμματισμού όσο και ιδιαίτερα χαρακτηριστικά της γλώσσας. Τέλος, το Κεφάλαιο 20 σάς προετοιμάζει για το επόμενο φυσικό βήμα: Μια πρώτη επαφή με τον αντικειμενοστρεφή προγραμματισμό και τη γλώσσα C++! Το Παράρτημα Α περιέχει μια αναλυτική αναφορά στις πιο συχνά χρησιμοποιούμενες συναρτήσεις της C. Στο Παράρτημα Β θα βρείτε λεπτομέρειες για το περιβάλλον ανάπτυξης Code::Blocks 1. Το Code::Blocks είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης (Integrated Development Environment 1

22 28 Η γλώσσα C σε βάθος, 5η έκδοση IDE) για τις γλώσσες C και C++, το οποίο διατίθεται υπό τη γενική άδεια χρήσης GNU GPL v3.0, πράγμα που σημαίνει ότι διατίθεται δωρεάν στον οποιονδήποτε. Όλα τα προγράμματα που υπάρχουν σε αυτό το βιβλίο έχουν δοκιμαστεί στο περιβάλλον του Code::Blocks. Το Σχήμα 1.1 σάς πάει μια μικρή βόλτα στο βιβλίο και περιγράφει συνοπτικά τα περιεχόμενα των κεφαλαίων και των παραρτημάτων του. Στο συνοδευτικό υλικό του βιβλίου θα βρείτε το πρόγραμμα εγκατάστασης για το ολοκληρωμένο περιβάλλον του Code::Blocks, τον κώδικα των προγραμμάτων που βρίσκονται στο βιβλίο, τις απαντήσεις όλων των ασκήσεων και των εργασιών. Το συμπιεσμένο αρχείο του συνοδευτικού υλικού μπορείτε να το κατεβάσετε από την ιστοσελίδα καθώς και από τον δικτυακό τόπο του βιβλίου στη διεύθυνση Σας συνιστώ να κατεβάσετε άμεσα το συνοδευτικό υλικό του βιβλίου και να εγκαταστήσετε το περιβάλλον του Code::Blocks, ώστε να μπορείτε να δοκιμάζετε τα παραδείγματα του βιβλίου αλλά και τα δικά σας προγράμματα. Το σύμβολο δίπλα από τον τίτλο μιας παραγράφου σημαίνει ότι η παράγραφος παρέχει εξειδικευμένες πληροφορίες τις οποίες μπορείτε να παραλείψετε αν δεν θέλετε ιδιαίτερη εμβάθυνση. Στο μαύρο πλαίσιο που υπάρχει δίπλα από τα περισσότερα παραδείγματα αυτού του βιβλίου αναφέρεται το όνομα του αρχείου στο οποίο arxeio.c υπάρχει ο πηγαίος κώδικας του παραδείγματος. Αν έχετε ήδη εγκαταστήσει το Code::Blocks, αρκεί να διπλοπατήσετε με το ποντίκι στο αρχείο του παραδείγματος για να ανοίξετε το αρχείο μέσα στο ολοκληρωμένο περιβάλλον του Code::Blocks. Η μεταγλώττιση και η εκτέλεση του προγράμματος γίνονται πλέον με ένα απλό πάτημα του πλήκτρου του ποντικιού σε ένα εικονίδιο του περιβάλλοντος (δείτε το Παράρτημα Β). Η δομή των κεφαλαίων Όλα τα κεφάλαια του βιβλίου έχουν την ίδια δομή (Σχήμα 1.2). Στο τέλος κάθε κεφαλαίου υπάρχουν λυμένα παραδείγματα και ασκήσεις προς επίλυση. Ο βαθμός δυσκολίας κάθε άσκησης υποδεικνύεται από έναν αριθμό αστερίσκων (από έναν αστερίσκο για τις εύκολες ασκήσεις μέχρι τρεις για τις πιο απαιτητικές). Σε κάθε κεφάλαιο αναφέρονται τα συχνότερα λάθη που κάνουν οι σπουδαστές, ενώ υπάρχει επίσης μια μικρή ανασκόπηση με τα βασικότερα σημεία του κεφαλαίου. Μετά από ορισμένα κεφάλαια υπάρχουν εργασίες τις οποίες σας προτείνω να προσπαθήσετε να υλοποιήσετε. Για την υλοποίηση κάθε εργασίας ίσως χρειαστεί να αφιερώσετε αρκετές ώρες ή και μέρες. Στο συνοδευτικό υλικό υπάρχουν οι απαντήσεις των ασκήσεων, ο κώδικας των λύσεών τους, καθώς και ο κώδικας όλων των προγραμμάτων που υπάρχουν στο βιβλίο. Επίσης, στο φάκελο ΕΡΓΑΣΙΕΣ θα βρείτε την επεξήγηση και τον κώδικα της λύσης των εργασιών.

23 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό 29 Σχήμα 1.1 Μια ξενάγηση στο βιβλίο

24 30 Η γλώσσα C σε βάθος, 5η έκδοση Σχήμα 1.2 Η δομή των κεφαλαίων

25 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό 31 Γιατί να μάθω προγραμματισμό; Σε μια συνέντευξη του ο Steve Jobs (1955~2011), συνιδρυτής και πρώην πρόεδρος της Apple, ανέφερε: «Πιστεύω ότι ο καθένας θα πρέπει να μάθει να προγραμματίζει έναν υπολογιστή γιατί αυτό σε διδάσκει πώς να σκέφτεσαι». Πέρα όμως από αυτή την αδιαμφισβήτητη αλήθεια, ο προγραμματισμός αποτελεί την πεμπτουσία της επιστήμης των υπολογιστών. Δεν νοείται σπουδαστής, ο οποίος ασχολείται με την πληροφορική σε οποιοδήποτε επίπεδο, που να μην διαθέτει βασικές τουλάχιστον γνώσεις προγραμματισμού. Ακόμα και τα προγράμματα που χρησιμοποιούμε καθημερινά, όπως το Word ή το Excel, καθώς και το κινητό μας τηλέφωνο, μπορούμε να τα παραμετροποιούμε ώστε να αυτοματοποιούμε κάποιες από τις λειτουργίες τους, αρκεί να διαθέτουμε βασικές γνώσεις προγραμματισμού. Γιατί να μάθω C; Μια ερώτηση που ακούω συνέχεια από τους φοιτητές είναι η εξής: Ποιος ο λόγος να μάθω C δεδομένου ότι υπάρχουν πιο σύγχρονες γλώσσες οι οποίες είναι πιο φιλικές και έ- χουν περισσότερες δυνατότητες; Πάντα απαντώ με ένα παράδειγμα. Αν θέλουμε να γίνουμε πιλότοι, θα αρχίσουμε την εκπαίδευση μας από ένα Airbus ή από ένα Τσέσνα; Το Airbus είναι προφανώς πιο φιλικό, πιο ασφαλές, έχει περισσότερες δυνατότητες, σχεδόν όλες οι λειτουργίες του είναι αυτοματοποιημένες, και σε τελική ανάλυση είναι αυτό που θα πιλοτάρουμε, ως επαγγελματίες πιλότοι, σε μια επιβατική πτήση. Γιατί λοιπόν να αρχίσουμε από ένα Τσέσνα; Νομίζω ότι η απάντηση είναι προφανής. Με το Τσέσνα θα μάθουμε τη βασική φιλοσοφία της πτήσης χωρίς την πολυπλοκότητα των σύνθετων συστημάτων. Θα έχουμε στη διάθεσή μας τα βασικά και απολύτως απαραίτητα όργανα και θα γνωρίσουμε το αποτέλεσμα του κάθε χειρισμού μας. Σε ένα Airbus θα είμαστε περικυκλωμένοι από χιλιάδες διακόπτες και όργανα, από τα οποία όμως ελάχιστα σχετίζονται με την ουσία της πτήσης. Μπορεί να ρυθμίζουν τη θερμοκρασία της καμπίνας, την ένταση των ηχείων ανακοινώσεων, τον φωτισμό, κ.λπ. Επίσης, οι αυτοματοποιημένες λειτουργίες δεν μας βοηθούν να κατανοήσουμε σε βάθος τους κανόνες και τις διαδικασίες της πτήσης. Ας επανέλθουμε τώρα στον προγραμματισμό. Σίγουρα υπάρχουν γλώσσες πιο σύγχρονες και πιο παραγωγικές, οι οποίες μας βοηθούν να φτιάχνουμε ελκυστικά προγράμματα σε λιγότερο χρόνο. Γιατί λοιπόν να μάθουμε C; Η C μας βοηθάει να κατανοήσουμε σε βάθος τους μηχανισμούς τους οποίους, για λόγους απλότητας και ευχρηστίας, κρύβουν από τον προγραμματιστή οι περισσότερες «παραγωγικές» γλώσσες προγραμματισμού. Ο φοιτητής που σπουδάζει επιστήμες σχετικές με την πληροφορική πρέπει να έχει κατανοήσει σε βάθος όλους αυτούς τους μηχανισμούς. Αν και είναι βέβαιο ότι στην παραγωγική διαδικασία θα χρησιμοποιήσει άλλες γλώσσες, οι γνώσεις που θα αποκτήσει μαθαίνοντας C θα τον βοηθήσουν να επιλύει θέματα και να κατανοεί έννοιες που σε άλλες γλώσσες προγραμματισμού είναι πολύ πιο αφαιρετικές και γενικές.

26 32 Η γλώσσα C σε βάθος, 5η έκδοση Ας μην ξεχνάμε, επίσης, ότι οι πλέον σύγχρονες γλώσσες προγραμματισμού, όπως η C++ (C plus-plus), η Java, και η C# (C sharp), βασίζονται στη C! Οι βασικές εντολές των γλωσσών αυτών καθώς και το συντακτικό τους είναι ίδιο με αυτό της C. H C θεωρείται η καθιερωμένη γλώσσα στην επιστήμη της Πληροφορικής. Οι περισσότεροι αλγόριθμοι επεξηγούνται με χρήση της γλώσσας C. Επίσης, ο γνώστης της C έχει στη διάθεσή του εκατομμύρια γραμμές έτοιμου κώδικα, είτε για να τον μελετήσει είτε για να τον χρησιμοποιήσει. Πότε να μάθω προγραμματισμό; Προγραμματισμό μπορεί και πρέπει να αρχίζει κανείς να μαθαίνει από την παιδική ηλικία. Ο ισχυρισμός ότι είναι απαραίτητη η γνώση μαθηματικών για την εκμάθηση προγραμματισμού είναι ένας μύθος. Αυτό που χρειάζεται μόνο είναι να μπορεί κάποιος να σκέπτεται κάπως δομημένα. Βέβαια, είναι απαραίτητες κάποιες βασικές γνώσεις αριθμητικής ώστε να γίνονται αντιληπτές κάποιες προγραμματιστικές έννοιες και λειτουργίες. Η αλήθεια είναι ότι κάποια στοιχεία προγραμματισμού μπορούν να διδαχθούν στα παιδιά ακόμα και από την προσχολική ηλικία, μέσα από εκπαιδευτικές γλώσσες όπως η logo. Όμως, για να μπορέσουν τα παιδιά να χρησιμοποιήσουν μια πραγματική γλώσσα προγραμματισμού θα πρέπει να είναι αρκετά πιο ώριμα. Θεωρώ ότι στην πέμπτη ή στην έκτη Δημοτικού, ανάλογα με την ωριμότητα και τις δυνατότητές του, ένα παιδί μπορεί να αρχίσει να διδάσκεται προγραμματισμό. Αν τώρα κάποιος δεν έμαθε προγραμματισμό από το Δημοτικό ας μην απελπίζεται, αφού μπορεί να αρχίσει σε οποιαδήποτε ηλικία. Το μόνο που χρειάζεται είναι δομημένη σκέψη, καθαρό μυαλό, όρεξη, και χρόνος! Μπορούν όλοι να μάθουν προγραμματισμό; Η ερώτηση είναι ανάλογη με την ερώτηση «Μπορούν όλοι να μάθουν να οδηγούν αυτοκίνητο;». Η απάντηση είναι σε γενικές γραμμές ΝΑΙ! Μερικοί όμως δεν θα μάθουν ποτέ ακόμα και αν προσπαθήσουν, η πλειονότητα θα μάθει απλώς να οδηγεί χωρίς ιδιαίτερες δεξιότητες, λίγοι θα γίνουν πραγματικοί δεξιοτέχνες της οδήγησης, και ελάχιστοι με ι- διαίτερο ταλέντο θα γίνουν οδηγοί στη φόρμουλα 1. Η πείρα μου στη διδασκαλία του προγραμματισμού σε φοιτητές με θεωρητικό υπόβαθρο μου έχει δείξει ότι, με την κατάλληλη εκπαιδευτική προσέγγιση, οι περισσότεροι μπορούν να διδαχθούν προγραμματισμό και να αποκτήσουν τις βασικές δεξιότητες. Η C ως πρώτη γλώσσα προγραμματισμού H C είναι αναμφίβολα μια ιδιαίτερη γλώσσα. Δεν μπορώ να τη χαρακτηρίσω εύκολη, ούτε όμως και δύσκολη. Είναι όμως κατάλληλη για να τη διδαχθεί κάποιος ως πρώτη γλώσσα προγραμματισμού; Η άποψη μου είναι ότι ως πρώτη γλώσσα προγραμματισμού θα έπρεπε να διδάσκεται μια απλή γλώσσα μέσω της οποίας ο εκπαιδευόμενος θα έλθει για πρώτη φορά σε επαφή με τις βασικές έννοιες του προγραμματισμού και ιδιαίτερα του

27 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό 33 δομημένου προγραμματισμού. Δυστυχώς όμως δεν υπάρχει τέτοια γλώσσα. Οι παραγωγικές γλώσσες δεν είναι απλές και περιλαμβάνουν πολλές δυνατότητες και ιδιοτροπίες, οι οποίες αποσπούν τον αρχάριο σπουδαστή από την ουσία του προγραμματισμού. Η C, παρά τις ιδιοτροπίες της και τη μικρή δυσκολία στα πρώτα στάδια της διδασκαλίας, με την κατάλληλη εκπαιδευτική προσέγγιση μπορεί να διδαχθεί ως πρώτη γλώσσα προγραμματισμού, το οποίο πράγματι συμβαίνει σε αρκετά πανεπιστήμια του κόσμου. Ένα επιτυχημένο πείραμα Πριν από τρία περίπου χρόνια μια συνάδελφος και φίλη μου ζήτησε να μιλήσω με τον γιο της, ο οποίος ήθελε απεγνωσμένα να μάθει προγραμματισμό, αλλά ήταν μόλις 12 χρονών και πήγαινε στην έκτη δημοτικού. Από το πρώτο κιόλας λεπτό της συνομιλίας μας διαπίστωσα το έντονο ενδιαφέρον του μικρού για τον προγραμματισμό και εντυπωσιάστηκα από τις γνώσεις του στον τομέα των Η/Υ, τη δομημένη έκφρασή του, και το εμφανές υπόβαθρο που μόνος του είχε αποκτήσει. Βέβαια, όπως όλα τα παιδιά της ηλικίας του, έβλεπε τον προγραμματισμό ως ένα εργαλείο για να φτιάξει τα δικά του παιχνίδια. Αμέσως του εξήγησα ότι, στην περίπτωση που αρχίσουμε μαθήματα προγραμματισμού, για να φτάσει στο επίπεδο να φτιάχνει τα δικά του παιχνίδια θα περάσουν πολλά χρόνια εκπαίδευσης και εμπειρίας! Το παιδί είχε αναμφισβήτητα πολλή θέληση και από την πρώτη μας επαφή διαισθάνθηκα ότι είχε και ιδιαίτερες ικανότητες. Αμέσως μου δημιουργήθηκε ένα δίλημμα: Με ποια γλώσσα προγραμματισμού έπρεπε να ξεκινήσω. Αρχικά σκέφτηκα τη Visual Basic, που είχε προτείνει και ο ίδιος, με την οποία γρήγορα θα μπορούσε να κάνει αρκετά θεαματικά προγράμματα που κερδίζουν το ενδιαφέρον των παιδιών. Όμως κάποιος που ξεκινάει με τη Visual Basic δύσκολα μετά προσαρμόζεται σε λιγότερο εντυπωσιακές γλώσσες, όπως η C ή η C++, που σε βοηθούν όμως να κατανοήσεις σε βάθος τις τεχνικές προγραμματισμού και τα μυστικά που κρύβονται από πίσω τους. Για να χρησιμοποιήσω το αγαπημένο μου παράδειγμα, είναι σαν κάποιος να μάθει να πιλοτάρει για πρώτη φορά αεροπλάνο σε ένα Airbus, όπου όλα είναι αυτοματοποιημένα, και μετά να τον βάλεις να πετάξει ένα Τσέσνα. Σίγουρα θα απογοητευτεί αμέσως, αλλά το Τσέσνα είναι αυτό που θα πρέπει να πετάξει για να μάθει σε βάθος τις τεχνικές και τα μυστικά της πτήσης. Έτσι πήρα τη μεγάλη απόφαση: θα δίδασκα στον πιτσιρικά τη γλώσσα C παίρνοντας το ρίσκο να απογοητευτεί και να τα παρατήσει. Ούτε σχήματα, ούτε χρώματα, ούτε εντυπωσιακά παράθυρα, μόνο ένα μαύρο ανιαρό παράθυρο κονσόλας. Του εξήγησα ότι προτιμώ να του μάθω προγραμματισμό σε βάθος παρά κάτι εντυπωσιακό αλλά επιφανειακό! Ότι με αυτό τον τρόπο αυτά που φανταζόταν δεν θα μπορούσαν να πραγματοποιηθούν άμεσα και ότι θα έπρεπε να δείξει θέληση και υπομονή. Κατά τα διάφορα στάδια της διδασκαλίας πολλές φορές αναγκαζόμουν να του εξηγήσω μαθηματικές έννοιες. Στην ηλικία αυτή δεν γνώριζε ούτε τι είναι η ύψωση σε δύναμη, ούτε τι είναι η τετραγωνική ρίζα!

28 34 Η γλώσσα C σε βάθος, 5η έκδοση Ας δούμε και τη δική του οπτική: «Ξεκίνησα προγραμματισμό στην ηλικία των 12 ετών με κίνητρο κυρίως την αστείρευτη περιέργειά μου να μάθω πώς λειτουργούν οι υπολογιστές και το λογισμικό. Προηγουμένως είχα μια σύντομη και ανορθόδοξη επαφή με προγραμματισμό σε γραφικό περιβάλλον. Έτσι σχημάτισα την εντύπωση (όπως και τα περισσότερα παιδιά της ηλικίας μου) πως θα έχω την δυνατότητα να δημιουργήσω με τις νέες γνώσεις μου παιχνίδια ή γραφικές εφαρμογές. Βέβαια κατάλαβα πολύ σύντομα ο στόχος των μαθημάτων δεν θα ήταν αυτός. Αντίθετα, η διδασκαλία επικεντρώθηκε στο να μάθω προγραμματισμό σε βάθος, μέσα από παραδείγματα και διευκρινίσεις. Τα πιο δύσκολα μαθήματα για εμένα ήταν τα εισαγωγικά, αφού δεν είχα καμία σχεδόν προηγούμενη εμπειρία στο πεδίο. Αυτό που με αιχμαλώτισε όμως ήταν το γεγονός ότι από το σημείο που ολοκλήρωσα την εκμάθηση των βασικών αρχών του προγραμματισμού, σε κάθε μάθημα διαπίστωνα πως χρησιμοποιούσα ακούσια πολλούς από τους μηχανισμούς που μάθαινα και πλέον κατανοούσα πλήρως. Έβλεπα κάθε μάθημα σαν πρόκληση και σαν ευκαιρία να προσθέσω ένα καινούργιο εργαλείο στη συλλογή μου. Ιδιαίτερα μου άρεσε που ένα μεγάλο ποσοστό του μαθήματος ήταν αφιερωμένο σε παραδείγματα και ένα άλλο, εξίσου μεγάλο, ήταν αφιερωμένο σε επεξηγήσεις και ερωταπαντήσεις. Τώρα, μετά από 3 χρόνια, ένα από τα πράγματα που εκτιμώ περισσότερο είναι η επιμονή της εκπαιδευτικής διαδικασίας ώστε να διδαχθώ κάθε κεφάλαιο του προγραμματισμού, συμπεριλαμβανομένων και των λεπτομερειών, χωρίς να παραλείπεται τίποτα. Έτσι τώρα έχω μια πιο ολοκληρωμένη γνώση για τις γλώσσες προγραμματισμού που διδάχτηκα και όχι μόνο. Η επιλογή της C, ως πρώτης γλώσσας προγραμματισμού που θα διδασκόμουν όταν ακόμα ήμουν στην έκτη δημοτικού, τελικά αποδείχθηκε σοφή. Μερικά από τα πλεονεκτήματα της C είναι η ελευθερία και το χαμηλό επίπεδο των χειρισμών που επιτρέπει. Αυτό βέβαια την κάνει αρκετά δύσκολη για κάποιον χωρίς προηγούμενη πείρα. Ένα από τα σημαντικότερα κομμάτια αυτής της γλώσσας είναι αναμφισβήτητα οι δείκτες, γύρω από τους οποίους περιστρέφονται πολλές δυνατότητες της. Αρχικά οι δείκτες με δυσκόλεψαν αρκετά, μέχρι που κατάλαβα τη χρησιμότητά τους και πώς να τους αξιοποιώ. Αυτό ήταν και το πιο απαιτητικό κεφάλαιο της γλώσσας κατά τη γνώμη μου. Ολοκληρώνοντας τη C ανακάλυψα ότι, α- φού γνώριζα τις βασικές αρχές του διαδικασιακού προγραμματισμού, η εκμάθηση οποιασδήποτε άλλης διαδικασιακής γλώσσας προγραμματισμού θα ήταν πολύ πιο εύκολη. Το ε- πόμενο βήμα μου ήταν η C++, ένα μέρος της οποίας γνώριζα ήδη (η ίδια η C) και το ο- ποίο με έβαλε σταδιακά στη φιλοσοφία του αντικειμενοστρεφούς προγραμματισμού. Γνωρίζοντας αυτές τις δύο γλώσσες και τεχνικές προγραμματισμού, σε μια πολύ νεαρή ηλικία, είναι εύκολο να ακολουθήσω οποιαδήποτε κατεύθυνση ως προγραμματιστής.» Ιωσήφ Αρβανίτης Ο Ιωσήφ σήμερα πάει στη δεύτερη τάξη του Λυκείου, λαμβάνει μέρος σε διαγωνισμούς Πληροφορικής και είναι ενταγμένος σε σχολικές ομάδες που ασχολούνται με τον σχεδιασμό και τον προγραμματισμό ρομποτικών διατάξεων.

29 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό 35 Μια ιστορική αναδρομή στη γλώσσα C Η C άρχισε να αναπτύσσεται στις αρχές του 1972 στα εργαστήρια Bell από τον Denis Ritchie ως μια γλώσσα προγραμματισμού συστημάτων, με σκοπό να δημιουργηθεί ένα νέο λειτουργικό σύστημα σε έναν υπολογιστή μίνι PDP-11. Η C είναι η εξέλιξη μιας προγενέστερης γλώσσας, της BCPL, η οποία αναπτύχθηκε από τον Martin Richards στα μέσα της δεκαετίας του 60. Μια πρώτη περιγραφή της C δημοσιεύθηκε έξι χρόνια αργότερα (1978), από τους Kernighan και Ritchie. Η έκδοση αυτή θεωρείται μέχρι σήμερα το ευαγγέλιο της C. Το 1983, το Εθνικό Ίδρυμα Προτύπων της Αμερικής (ANSI 2 ) ίδρυσε μια επιτροπή για να ετοιμάσει ένα πρότυπο για τη γλώσσα προγραμματισμού C. Αυτό το πρότυπο ολοκληρώθηκε το 1989 και αναφέρεται ως «ANSI C» ή C89. To 1990 το πρότυπο ANSI C, με ελάχιστες αλλαγές, αναγνωρίστηκε από τον διεθνή οργανισμό προτύπων ως ISO/IEC 9899:1990. Αυτή η έκδοση της γλώσσας καλείται C90 και οι διαφορές της από τη C89 είναι ελάχιστες. Πρακτικά, οι όροι C89 και C90 αναφέρονται στην ίδια έκδοση της γλώσσας. Μετά από το 1990, το επίσημο πρότυπο της γλώσσας παρέμεινε αμετάβλητο για αρκετά χρόνια. Η παράλληλη όμως εξέλιξη της γλώσσας C++ επέφερε αρκετές αλλαγές στη βασική σύνταξη των δομών της C, στην οποία βασιζόταν ούτως ή άλλως. Το πρότυπο C90 θα έπρεπε να βελτιωθεί ώστε να ενσωματώσει τις αλλαγές που επέβαλε η C++ και να υπάρχει μεγαλύτερη συμβατότητα μεταξύ τους. Τον Μάρτιο του 2000, το Εθνικό Ίδρυμα Προτύπων της Αμερικής υιοθέτησε το πρότυπο της γλώσσας ISO/IEC 9899:1999, το οποίο είναι γνωστό ως C99. Τον Δεκέμβριο του 2011 δημοσιεύτηκε το πρότυπο ISO/IEC 9899:2011, γνωστό ως C11, το οποίο αποτελεί το πιο πρόσφατο, μέχρι σήμερα, πρότυπο της γλώσσας C. Η C έχει συνδέσει το όνομα της με τα λειτουργικά συστήματα UNIX και Linux, πολλά από τα τμήματα των οποίων έχουν αναπτυχθεί στη C. Η καθιερωμένη έκδοση της C ή- ταν, για πολλά χρόνια, εκείνη η οποία συνόδευε το λειτουργικό σύστημα UNIX (Ver. 5), του οποίου θεωρείται και αναπόσπαστο μέρος. Παρά το γεγονός ότι η C++ και η Java έχουν αντικαταστήσει τη C σε αρκετά πεδία ε- φαρμογών, η C ήρθε για να μείνει για πολλά χρόνια ακόμα. Η αδιαμφισβήτητη απλότητα και δύναμη της C σε εφαρμογές επιπέδου μηχανήματος την καθιστούν ως την πρώτη ε- πιλογή για τη συγγραφή προγραμμάτων οδήγησης για συσκευές (device drivers), πυρήνων λειτουργικών συστημάτων (kernels), καθώς και για τον προγραμματισμό μικροελεγκτών και ρομποτικών διατάξεων. 2 American National Standards Institute (ANSI)

30 36 Η γλώσσα C σε βάθος, 5η έκδοση Τα χαρακτηριστικά της C Παρά το γεγονός ότι η C θεωρείται μια γλώσσα υψηλού επιπέδου (high-level), έχει αρκετά χαρακτηριστικά που συναντώνται μόνο σε γλώσσες χαμηλού επιπέδου και στη γλώσσα μηχανής. Τα χαρακτηριστικά αυτά της προσδίδουν εκπληκτική ευελιξία και τη δυνατότητα χειρισμών «χαμηλού επιπέδου». Η C είναι ίσως η μόνη γλώσσα που μπορεί να χαρακτηριστεί ως γλώσσα «μεσαίου επιπέδου»! Η ευελιξία της C, αλλά και η έλλειψη αυστηρού ελέγχου, είναι ένα ισχυρό εργαλείο στα χέρια ενός πεπειραμένου προγραμματιστή, αλλά μεγάλη ταλαιπωρία και βάσανο για τον αρχάριο. H C είναι μία λιτή γλώσσα. Όλες κι όλες οι δεσμευμένες λέξεις της C δεν ξεπερνούν τις 30. Αξιοσημείωτο είναι ότι η C δεν έχει ενσωματωμένες εντολές εισόδου και εξόδου, όπως και αρκετές άλλες εντολές που συναντώνται σε άλλες γλώσσες προγραμματισμού. Για τον λόγο αυτόν, η τυπική (καθιερωμένη) εγκατάσταση της C περιλαμβάνει βιβλιοθήκες με κάθε είδους συναρτήσεις για είσοδο/έξοδο, χειρισμό χαρακτήρων, χειρισμό αρχείων, γραφικών κ.λπ. Μια δομημένη γλώσσα Το διακριτικό χαρακτηριστικό μιας δομημένης γλώσσας προγραμματισμού είναι η δυνατότητα τμηματικού (ή «αρθρωτού») χειρισμού (modularity) του προγράμματος, με τέτοιο τρόπο ώστε κάθε τμήμα να μπορεί να κρύβει από το υπόλοιπο πρόγραμμα τον κώδικα και τις πληροφορίες που περιέχει. Η C ενθαρρύνει τη χρήση ξεχωριστών συναρτήσεων (υποπρογραμμάτων) για κάθε συγκεκριμένη λειτουργία του προγράμματος. Μια γλώσσα για προγραμματιστές Η C παρέχει στον πραγματικό επαγγελματία προγραμματιστή αυτό που ακριβώς ζητάει: Λίγους περιορισμούς και μεγάλη ευελιξία Δυνατότητα για δομημένα προγράμματα Λίγες αλλά ισχυρά δομημένες εντολές Η C έχει όμως και απαιτήσεις. Η έλλειψη περιορισμών και το γεγονός ότι υπάρχει μικρός βαθμός ελέγχου λαθών αναγκάζουν τον προγραμματιστή να είναι πολύ προσεκτικός και να ελέγχει, μέσα από τον κώδικα του προγράμματος, πράγματα που ελέγχονται αυτόματα από άλλες γλώσσες προγραμματισμού. Ένα χαρακτηριστικό παράδειγμα είναι ότι, αν έχουμε έναν πίνακα 100 θέσεων, μπορούμε κάλλιστα να προσπελάσουμε τη θέση 105!!! Τώρα το τι θα βρούμε σε αυτή τη θέση και ποιες παρενέργειες θα υπάρξουν, θα το αφήσουμε για αργότερα.

31 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό 37 Μια μεταφράσιμη γλώσσα Όλες οι γλώσσες προγραμματισμού (εκτός από τη γλώσσα μηχανής), ανάλογα με τον τρόπο μετάφρασης του πηγαίου κώδικα σε γλώσσα μηχανής, χαρακτηρίζονται είτε ως διερμηνευόμενες (interpreted) είτε ως μεταγλωττιζόμενες (compiled). Τη C τη συναντούμε σχεδόν πάντα σε μεταγλωττιζόμενη μορφή. Στο διπλανό σχήμα βλέπετε μια απλοποιημένη διαδικασία μεταγλωττισμού ενός προγράμματος μέσω μεταγλωττιστή (compiler). Το αρχείο που περιέχει τον πηγαίο κώδικα του προγράμματος (source code) μπορεί να δημιουργηθεί με οποιονδήποτε διορθωτή κειμένου ή το ολοκληρωμένο περιβάλλον ανάπτυξης της γλώσσας (αν η έκδοση της γλώσσας διαθέτει τέτοιο περιβάλλον). Κατά τον χρόνο μεταγλώττισης (compile time), ο μεταγλωττιστής ε- ντοπίζει τυχόν συντακτικά λάθη που υπάρχουν στον πηγαίο κώδικα. Εφόσον ο μεταγλωττιστής δεν εντοπίσει κανένα λάθος, θα δημιουργήσει ένα αρχείο με τον εκτελέσιμο κώδικα (executable code), δηλαδή ένα πρόγραμμα σε γλώσσα μηχανής, το οποίο μπορεί να εκτελεστεί άμεσα από τον υπολογιστή. Στην πραγματικότητα, η διαδικασία της μεταγλώττισης είναι αρκετά πιο πολύπλοκη, ι- δίως όταν γίνεται χρήση βιβλιοθηκών στην οποία θα αναφερθούμε αναλυτικά στο αντίστοιχο κεφάλαιο. Βασικές έννοιες προγραμματισμού Η ενότητα αυτή απευθύνεται στους αρχάριους στον προγραμματισμό. Αναφέρει και εξηγεί βασικές έννοιες του προγραμματισμού, απαραίτητες για τον αναγνώστη που έρχεται για πρώτη φορά σε επαφή με μια γλώσσα προγραμματισμού. Κάθε πρόγραμμα, ανεξάρτητα από τη γλώσσα προγραμματισμού στην οποία έχει γραφεί, επεξεργάζεται δεδομένα και δίνει αποτελέσματα. Η επεξεργασία των δεδομένων γίνεται πάντα με έναν προκαθορισμένο τρόπο (αλγόριθμο). Τα συστατικά που συνθέτουν ένα απλό πρόγραμμα είναι οι μεταβλητές, οι σταθερές, οι παραστάσεις, και οι εντολές. Ας μην ξεχνάμε ότι ένας ηλεκτρονικός υπολογιστής (Η/Υ) είναι ένα μηχάνημα το οποίο εκτελεί μόνο τρεις λειτουργίες: Πρόσθεση. Στη πραγματικότητα ο Η/Υ εκτελεί μόνο την πράξη της πρόσθεσης. Όλες οι άλλες πράξεις ανάγονται σε προσθέσεις. Σύγκριση. Για παράδειγμα, συγκρίνει δύο αριθμούς και να αποφασίσει ποιος είναι μεγαλύτερος. Μεταφορά δεδομένων. Ο Η/Υ μπορεί να αποθηκεύσει στη μνήμη του δεδομένα, τα οποία μπορεί να είναι σταθερές ή να προέρχονται από αποτελέσματα πράξεων.

32

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

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

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

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

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

#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 πίνακας

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

ΕΝΔΕΙΚΤΙΚΕΣ ΣΕΛΙΔΕΣ. Περιεχόμενα. Πρόλογος... 21

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

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

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική

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

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

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

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

Από την πρώτη στην τέταρτη έκδοση...

Από την πρώτη στην τέταρτη έκδοση... Από την πρώτη στην τέταρτη έκδοση... Όταν το Φεβρουάριο του 2004 έστειλα την πρότασή μου στον ΚΛΕΙΔΑΡΙΘ- ΜΟ για την έκδοση ενός βιβλίου για τη γλώσσα C, δεν θα μπορούσα ποτέ να φανταστώ ότι οχτώ χρόνια

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

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

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

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

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

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

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

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

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

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

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

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

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

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

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

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

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

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

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

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

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

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

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

4 C Θεωρία και Πράξη. 6.8 Συναρτήσεις και στατικές μεταβλητές Αναδρομικές συναρτήσεις 119

4 C Θεωρία και Πράξη. 6.8 Συναρτήσεις και στατικές μεταβλητές Αναδρομικές συναρτήσεις 119 Προλεγόμενα 9 1 Εισαγωγή 15 1.1 Χαρακτηριστικά της γλώσσας 15 1.2 Διαδικασία προγραμματισμού υπό το Unix 17 1.3 Προγραμματίζοντας στην C 19 2 Υπολογιστική 23 2.1 Μεταβλητές και σταθερές 23 2.2 Τύποι δεδομένων

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

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

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

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

Επανάληψη για τις Τελικές εξετάσεις

Επανάληψη για τις Τελικές εξετάσεις Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού

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

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

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

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

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές στο χώρο

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

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

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

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Α. 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) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Διδακτική της Πληροφορικής ΙΙ

Διδακτική της Πληροφορικής ΙΙ Διδακτική της Πληροφορικής ΙΙ Ομάδα Γ Βότσης Ευστάθιος Γιαζιτσής Παντελής Σπαής Αλέξανδρος Τάτσης Γεώργιος Προβλήματα που αντιμετωπίζουν οι αρχάριοι προγραμματιστές Εισαγωγή Προβλήματα Δυσκολίες Διδακτικό

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

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

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

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

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

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

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

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΕΞΕΤΑΣΗΣ

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΕΞΕΤΑΣΗΣ Το αναλυτικό πρόγραμμα στο οποίο βασίζεται η εξέταση είναι το αναλυτικό πρόγραμμα του Μαθήματος Κατεύθυνσης Πληροφορική Επιστήμη Η.Υ της Γ Ενιαίου Λυκείου Γενικός Σκοπός Το μάθημα κατεύθυνσης της στη Γ'

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

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

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

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

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

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

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

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

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

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

Περιεχόµενα. Πρόλογος... 15

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

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

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ 1η διάλεξη (2012-13) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Γιατί να μάθει κανείς C++; Απαιτούμενο προσόν για πολλές θέσεις εργασίας. Υψηλού επιπέδου προγραμματισμός.

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

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. ΑΕσΠΠ-Κεφ6. Εισαγωγή στον προγραμματισμό 1 ΣΩΣΤΟ ΛΑΘΟΣ 1. Οι γλώσσες προγραμματισμού αναπτυχθήκαν με σκοπό την επικοινωνία ανθρώπου μηχανής. 2. Αλγόριθμος = Πρόγραμμα + Δομές Δεδομένων 3. Ένα πρόγραμμα

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

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

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

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

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

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

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

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Φτάσαμε σιγά σιγά στο τέλος του βιβλίου. Αντί για κάποιον επίλογο σκέφτηκα να συλλέξω κάποια πράγματα που θα ήθελα να πω σε κάποιον ο οποίος αρχίζει

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

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

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

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

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

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

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

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

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

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

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

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

Διάλεξη 18η: Διαχείρηση Αρχείων

Διάλεξη 18η: Διαχείρηση Αρχείων Διάλεξη 18η: Διαχείρηση Αρχείων Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Αρχεία CS100, 2015-2016 1 / 24 Η βιβλιοθήκη Εισόδου/Εξόδου Στο stdioh

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

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΟ ΕΝΙΑΙΟ ΛΥΚΕΙΟ

ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΟ ΕΝΙΑΙΟ ΛΥΚΕΙΟ ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΟ ΕΝΙΑΙΟ ΛΥΚΕΙΟ ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ Μάθηµα Κατεύθυνσης Πληροφορική Επιστήµη Η.Υ. Γ Ενιαίου Λυκείου ΟΚΤΩΒΡΙΟΣ 2005 1 Αναλυτικό Πρόγραµµα Μάθηµα Κατεύθυνσης:

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

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

Εισαγωγή στη γλώσσα προγραμματισμού C++ Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30 ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 1.1 Τι είναι Πληροφορική;...11 1.1.1 Τι είναι η Πληροφορική;...12 1.1.2 Τι είναι ο Υπολογιστής;...14 1.1.3 Τι είναι το Υλικό και το

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

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

Η γλώσσα προγραμματισμού Strange Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού Strange Η Strange είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική αυτή γλώσσα περιέχει

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 9η εβδομάδα. Κοζάνη, 2 Δεκεμβρίου 2008. Δίνονται παραδείγματα που αποσαφηνίζουν και συμπληρώνουν όσα αναφέρθηκαν στο μάθημα σχετικά με τις δομές

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες

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

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου 49 Διδακτικές ενότητες 6.1 Γλώσσες και εργαλεία προγραμματισμού 6.2 Σύγχρονα προγραμματιστικά περιβάλλοντα Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν την ανάγκη ύπαρξης τόσο

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

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

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΕΡΛΙΑΟΥΝΤΑΣ ΣΤΕΦΑΝΟΣ, ΠΕ19 ΚΕΦΑΛΑΙΟ 3 Αλγόριθμοι 3. Αλγόριθμοι 2 3. Αλγόριθμοι 3.1 Η έννοια του αλγορίθμου 3.2 Χαρακτηριστικά αλγορίθμου 3.3 Ανάλυση αλγορίθμων

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

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

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

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α : Α1. Να

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

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

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ Η ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΤΟ ΛΥΚΕΙΟ Εισαγωγή Η μεγάλη ανάπτυξη και ο ρόλος που

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

Σχέδια μαθημάτων για την δημιουργία συναρτήσεων υπολογισμού του ΜΚΔ και του ΕΚΠ στην MSWLogo

Σχέδια μαθημάτων για την δημιουργία συναρτήσεων υπολογισμού του ΜΚΔ και του ΕΚΠ στην MSWLogo Σχέδια μαθημάτων για την δημιουργία συναρτήσεων υπολογισμού του Μέγιστου Κοινού Διαιρέτη (ΜΚΔ) και του Ελάχιστου Κοινού Πολλαπλασίου (ΕΚΠ) δύο αριθμών, με την γλώσσα προγραμματισμού Logo Κογχυλάκης Σ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα. i Π Ρ Ο Λ Ο Γ Ο Σ Το βιβλίο αυτό αποτελεί μια εισαγωγή στα βασικά προβλήματα των αριθμητικών μεθόδων της υπολογιστικής γραμμικής άλγεβρας (computational linear algebra) και της αριθμητικής ανάλυσης (numerical

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

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

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

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

Προγραμματισμός Χειμερινό Εξάμηνο 2014

Προγραμματισμός Χειμερινό Εξάμηνο 2014 Χειμερινό Εξάμηνο 2014 Εισαγωγή Περιεχόμενο : μέθοδοι προγραμματισμού προγραμματιστικές αρχές δομημένος προγραμματισμός, αφαιρετικότητα, υλοποίηση, έλεγχος, και αποσφαλμάτωση καλές πρακτικές γλώσσα προγραμματισμού:

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

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

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1 ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 03/01/09 Χαράλαμπος Τζόκας 1 Πρόγραμμα - Προγραμματισμός Πρόγραμμα: Σύνολο εντολών που πρέπει να δοθούν στον Υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος της επίλυσης

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

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

Μια πρόταση διδασκαλίας για το μάθημα του προγραμματισμού Η/Υ στο Λύκειο με τη μεθοδολογία STEM

Μια πρόταση διδασκαλίας για το μάθημα του προγραμματισμού Η/Υ στο Λύκειο με τη μεθοδολογία STEM Μια πρόταση διδασκαλίας για το μάθημα του προγραμματισμού Η/Υ στο Λύκειο με τη μεθοδολογία STEM Οδηγίες για την υλοποίηση της διδακτικής παρέμβασης 1η διδακτική ώρα: Υλοποίηση του φύλλου εργασίας 1 με

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

ιαφάνειες παρουσίασης #6 (β)

ιαφάνειες παρουσίασης #6 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

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

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

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

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ Μ. Γρηγοριάδου Ρ. Γόγουλου Ενότητα: Η Διδασκαλία του Προγραμματισμού Περιεχόμενα Παρουσίασης

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

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

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

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

Σχεδίαση Εκπαιδευτικού Λογισμικού. Εργασία 2 - Α' φάση. Σενάριο/Σχέδιο μαθήματος. Σταματία Κορρέ Μ1430

Σχεδίαση Εκπαιδευτικού Λογισμικού. Εργασία 2 - Α' φάση. Σενάριο/Σχέδιο μαθήματος. Σταματία Κορρέ Μ1430 Σχεδίαση Εκπαιδευτικού Λογισμικού Εργασία 2 - Α' φάση Σενάριο/Σχέδιο μαθήματος Σταματία Κορρέ Μ1430 2 Περιεχόμενα Τίτλος... 2 Γνωστικό αντικείμενο... 2 Βαθμίδα εκπαίδευσης... 3 Διδακτικοί στόχοι... 3 Αναμενόμενα

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

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

Εισαγωγή στον προγραμματισμό Ενότητες: Εισαγωγή στον προγραμματισμό Η έννοια του προγράμματος Ιστορική αναδρομή Φυσικές και τεχνητές γλώσσες Τεχνικές σχεδίασης προγραμμάτων Ιεραρχική Σχεδίαση Τμηματικός Προγραμματισμός Δομημένος προγραμματισμός

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β Καβακλή Χειμερινό Εξάμηνο 2001 Στόχοι του Μαθήματος! Ανάπτυξη αναλυτικής

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

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ Α) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα "Σ", αν είναι σωστή, ή το γράμμα "Λ", αν είναι λανθασμένη. (Μονάδες 25) 1. Ένα αδόμητο πρόβλημα είναι ταυτόχρονα και ανοικτό

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 1: Εισαγωγή Ποιος είμαι εγώ! 2 Ναύπλιο, 4/1976-9/1993 Πάτρα, 9/1993-6/2004 Williamsburg, VA, USA, 7/2004-7/2006 Μυτιλήνη, 10/2006-2/2007 Βόλος, 2/2007 - H Υπεύθυνη των

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

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

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

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

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( ) ΕΙΣΑΓΩΓΗ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Εισαγωγή στη C++ Ιστορικά στοιχεία για τη C/C++ Ένα βασικό πρόγραμμα Μεταγλώττιση ενός προγράμματος Τελευταία ενημέρωση: Σεπτέμβριος 2016

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Αλφαριθμητικά και Αρχεία Αλφαριθμητικά (strings) Αρχεία (files) τα βασικά στοιχεία Αλφαριθμητικά της C Συμβολοσειρές (= ακολουθίες

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

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

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

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