Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr
Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην Αίθουσα Πολυμέσων Δύο πρόοδοι στο εργαστήριο: τέλος Νοεμβρίου και Αρχές Ιανουαρίου Βαθμός Προόδων Εργαστηρίου 30% του συνολικού βαθμού του μαθήματος Η βάση 5 είναι απαραίτητη και στις δύο προόδους 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2
Είσοδος στο e-class Μετάβαση στη σελίδα eclass.uoa.gr Στο πλαίσιο δεξιά «Σύνδεση Χρήστη» επιλέγουμε «Είσοδος» Μετάβαση στη Υπηρεσία Πιστοποίησης Χρηστών ΕΚΠΑ Είσοδος με Όνομα Χρήστη και Συνθηματικό που χρησιμοποιείτε σε όλους τους λογαριασμούς της σχολής 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 3
Εγγραφή στο μάθημα F30 «Η-Υ Προγραμματισμός» Με την προϋπόθεση ότι έχετε κάνει σύνδεση στο e- class Στο μενού επιλογών «Βασικές Επιλογές» επιλέγουμε «Μαθήματα» Στο κεντρικό πλαίσιο «Σχολή Τμήμα:» επιλέγουμε «ΕΚΠΑ» και στη συνέχεια «Πληροφορικής και Τηλεπικοινωνιών (DI)» Τσεκάρουμε το κουτάκι αριστερά από το μάθημα «Η-Υ Προγραμματισμός (F30)» Η εγγραφή ολοκληρώθηκε 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 4
Περιοχή συζητήσεων Με την προϋπόθεση ότι έχετε γραφτεί στη σελίδα του μαθήματος στο e-class Στο μενού επιλογών «Ενεργά εργαλεία» επιλέγουμε «Συζήτηση» Στο κεντρικό πλαίσιο επιλέγουμε την περιοχή συζήτησης που μας ενδιαφέρει π.χ. «Ερωτήσεις- Απορίες για το εργαστήριο» Βλέπουμε να υπάρχει κάποιο άλλο θέμα σχετικό με την απορία μας. Αν όχι, επιλέγουμε «Νέο θέμα» και δίνουμε τον τίτλο του θέματος, καθώς και το σώμα του (π.χ. την απορία μας) 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 5
Ορισμός της έννοιας στο αλγορίθμου Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος. Περιγραφή και αναπαράσταση αλγορίθμων: Με ελεύθερο κείμενο Με διαγραμματικές τεχνικές Με φυσική γλώσσα σε βήματα Με κωδικοποίηση (πρόγραμμα γραμμένο σε γλώσσα προγραμματισμού που όταν εκτελεστεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο) 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 6
Πρόγραμμα Γλώσσες προγραμματισμού Πρόγραμμα είναι το σύνολο των εντολών που πρέπει να δοθούν στον υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος για την επίλυση του προβλήματος. Γλώσσες Προγραμματισμού: Γλώσσες μηχανής: ακολουθίες οι οποίες αποτελούνται από 0 και 1 και είναι κατανοητές μόνο από τον υπολογιστή Γλώσσες χαμηλού επιπέδου: συμβολικές γλώσσες που έχουν νόημα για τον άνθρωπο και μετατρέπονται από τους υπολογιστές σε ακολουθίες 0 και 1. Γλώσσες υψηλού επιπέδου: C, C++, Java, 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 7
Η γλώσσα προγραμματισμού C 1972 Dennis Ritchie, AT & T Bell Labs Υψηλού επιπέδου με δυνατότητες χαμηλού επιπέδου Δομημένη διαδικαστική Λιτότητα στην έκφραση Γλώσσα γενικής χρήσης Πλούσια συλλογή τελεστών και τύπων δεδομένων 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 8
Μεταγλώττιση προγράμματος Κάθε πρόγραμμα γραμμένο σε οποιαδήποτε γλώσσα χαμηλού ή υψηλού επιπέδου πρέπει να μετατραπεί σε μορφή αναγνωρίσιμη και εκτελέσιμη από υπολογιστή, δηλαδή σε γλώσσα μηχανής. Η μετατροπή αυτή γίνεται με τη βοήθεια των μεταγλωττιστών. Ο μεταγλωττιστής δέχεται σαν είσοδο ένα πρόγραμμα γραμμένο σε γλώσσα υψηλού επιπέδου (πηγαίο πρόγραμμα) και δίνει ως έξοδο ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής (αντικείμενο πρόγραμμα). 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 9
Σύνδεση προγράμματος Παρ όλα αυτά, το αντικείμενο πρόγραμμα δεν είναι σε θέση να εκτελεστεί γιατί χρειάζεται και να συμπληρωθεί και να συνδεθεί με άλλα τμήματα προγράμματος (τμήματα που είτε έχει γράψει ο προγραμματιστής, είτε υπάρχουν σε βιβλιοθήκες). Ο συνδετής φορτωτής πραγματοποιεί τη σύνδεση αυτή και έτσι παράγεται το εκτελέσιμο πρόγραμμα, το οποίο είναι σε θέση να εκτελεστεί από τον υπολογιστή. Η συνολική διαδικασία ονομάζεται μεταγλώττιση και σύνδεση 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 10
Συνολική διαδικασία μεταγλώττισης και σύνδεσης 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 11
Bloodshed Dev C++ To Dev C++ είναι ένα περιβάλλον προγραμματισμού ή αλλιώς IDE (Integrated Development Environment) για τις γλώσσες C και C++ Για να κατεβάσετε το Dev C++: http://sourceforge.net/projects/dev-cpp/?sourc e=typ_redirect 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 12
Το πρώτο πρόγραμμα στη C στο Dev-C++ Επιλέγουμε στη γραμμή έναρξης Start Programs Bloodshed Dev-C++ Dev- C++, για να ανοίξει το περιβάλλον προγραμματισμού Dev-C++. Για να δημιουργήσουμε ένα νέο αρχείο κώδικα, κάνουμε κλικ στο κουμπί «New» και στο υποπαράθυρο που εμφανίζεται κάνουμε κλικ στο «Source File». Στο κάτω μέρος της οθόνης δημιουργείται ένα κενό αρχείο με όνομα Untitled1 στο οποίο μπορούμε να πληκτρολογήσουμε τον κώδικα του προγράμματός μας. Πληκτρολογούμε στην οθόνη τον εξής κώδικα: /* File: helloworld.c */ #include <stdio.h> main() { printf("hello world\n"); getchar(); } 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 13
Το πρώτο πρόγραμμα στη C στο Dev-C++ Αφού ολοκληρώσουμε την πληκτρολόγηση, πρέπει να αποθηκεύσουμε το αρχείο κώδικα στον δίσκο μας. Για τον λόγο αυτό είτε επιλέγουμε από το μενού «File» «Save». Στο παράθυρο που εμφανίζεται επιλέγουμε πρώτα τον φάκελο προορισμού και δίνουμε ένα κατάλληλο όνομα στο αρχείο (π.χ. helloworld.c). Προσοχή! τα προγράμματα της γλώσσας C, πρέπει να έχουν την κατάληξη.c. Για να μεταγλωττίσουμε το πρόγραμμά μας επιλέγουμε από το μενού «Execute» «Compile» Αμέσως μετά από μία επιτυχή μεταγλώττιση, για να εκτελέσουμε το πρόγραμμά μας, επιλέγουμε «Execute» «Run». Τότε, ανοίγει ένα παράθυρο στο οποίο εκτυπώνεται το αποτέλεσμα του προγράμματός μας. Όταν πατήσουμε ένα οποιοδήποτε πλήκτρο, το παράθυρο κλείνει. 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 14
Εξήγηση του πρώτου προγράμματος Ό,τι περικλείεται μέσα σε /* και */ θεωρείται σχόλιο και δεν λαμβάνεται υπόψη από τον μεταγλωττιστή. Το ίδιο ισχύει για το //. Η γραμμή #include είναι οδηγία προς τον προεπεξεργαστή της C να συμπεριλάβει σ εκείνο το σημείο τα περιεχόμενα του αρχείου επικεϕαλίδας stdio.h, το οποίο περιέχει χρήσιμες δηλώσεις για τις συναρτήσεις εισόδου/εξόδου. Κάθε πρόγραμμα C πρέπει να περιέχει ακριβώς μία συνάρτηση με όνομα main, που είναι αυτή από την οποία θα αρχίσει να εκτελείται το εκτελέσιμο πρόγραμμα που θα προκύψει από τη μεταγλώττιση. Η printf είναι μία συνάρτηση εξόδου, που όταν κληθεί, εκτυπώνει ό,τι της έχει δοθεί μέσα στις παρενθέσεις. Στην προκείμενη περίπτωση τη φράση "Hello world" (χωρίς τα "), ακολουθούμενο από μία αλλαγή γραμμής (\n). Οι εντολές σ ένα πρόγραμμα C, όπως και οι δηλώσεις, τελειώνουν με ένα ελληνικό ερωτηματικό (;). 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 15
Είδη λαθών σε ένα πρόγραμμα Συντακτικά Λάθη Ένα συντακτικό λάθος είναι ένα λάθος στη σύνταξη του προγράμματος. Για να καταλάβει ο μεταγλωττιστής το πρόγραμμά μας πρέπει να είναι γραμμένο με έναν πολύ αυστηρό τρόπο. Οποιαδήποτε παράλειψη θα έχει ως αποτέλεσμα την αποτυχία της μεταγλώττισης. Αν το πρόγραμμα μας έχει συντακτικά λάθη, τότε κατά τη μεταγλώττιση, στο κάτω μέρος της οθόνης θα εμφανίζονται χρήσιμες πληροφορίες για την φύση κάθε λάθους. Λογικά Λάθη Ένα λογικό λάθος είναι ένα λάθος που, ενώ επιτρέπει την επιτυχή μεταγλώττιση και εκτέλεση του προγράμματος, τελικά κάνει τα αποτελέσματά του να μην είναι σωστά. Αυτό μπορεί να οφείλεται είτε σε κάποιο λάθος στην αρχική μας σκέψη για το πώς θα λύσουμε το πρόβλημα, είτε ακόμα και στη λανθασμένη υλοποίηση μιας σωστής σκέψης. 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 16
Τύποι δεδομένων, μεταβλητές και σταθερές στη C Τύποι δεδομένων Για ακεραίους : int Για χαρακτήρες: char Για πραγματικούς αριθμούς: float, double Μεταβλητές Συμβολικά ονόματα για θέσεις μνήμης Αποθήκευση και ανάκτηση δεδομένων Ανήκουν σε τύπους Σταθερές Συγκεκριμένες τιμές Ανήκουν σε τύπους 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 17
Παραδείγματα int a; //Τύπος δεδομένων ακέραιος, μεταβλητή a. char c; //Τύπος δεδομένων χαρακτήρας, μεταβλητή c. #define PI 3.1415927 //δήλωση σταθεράς με όνομα PI η οποία ορίζεται να έχει μόνιμα την τιμή 3.1415927 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 18
Τέλος εργαστηρίου 1 Συμπληρώνουμε τη λίστα ονομάτων και τα λέμε την επόμενη Παρασκευή Για οποιαδήποτε απορία γράφουμε στις «Συζητήσεις» στο e-class 16/10/2015 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 19