57
Εισαγωγή στον Προγραμματισμό Ενότητα 1 -Εισαγωγή Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

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

Ενότητα 1 - Εισαγωγή

Χρήστος Γκουμόπουλος

Πανεπιστήμιο Αιγαίου

Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Page 2: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Στόχοι Μαθήματος

• H ανάπτυξη ικανοτήτων και η απόκτηση δεξιοτήτων για τη διαχείριση της διαδικασίας επίλυσης προβλημάτων με προγραμματισμό υπολογιστών.

– Κύκλος ζωής προγράμματος : ανάλυση προβλήματος, σχεδίαση λύσης, κωδικοποίηση της λύσης σε πρόγραμμα, έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος. απόσυρση του προγράμματος.

• Η θεμελίωση αλγοριθμικής σκέψης στην επίλυση προβλημάτων.

• Η εμπέδωση βασικών αρχών προγραμματισμού με έμφαση στον δομημένο προγραμματισμό.

• Η εκμάθηση της γλώσσας προγραμματισμού C.

2

Page 3: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Μέσα

• Διαλέξεις

• Εργαστήρια

• Η παρακολούθηση και η ενεργή συμμετοχή

θεωρούνται εξ ορισμού αναγκαία για την

επιτυχή ολοκλήρωση του μαθήματος.επιτυχή ολοκλήρωση του μαθήματος.

3

Page 4: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

LOGISTICS ΜΑΘΗΜΑΤΟΣ

4

Page 5: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Διδάσκοντες

• Θεωρία

– Χρήστος Γκουμόπουλος ([email protected])

• Εργαστήριο

– Αναστασία Δούμα ([email protected])

– Δημήτρης Δαμόπουλος ([email protected]) – Δημήτρης Δαμόπουλος ([email protected])

5

Page 6: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Βαθμολογία

• 50% Τελική Εξέταση

• 20% Πρόοδος

• 30% Βαθμός εργαστηρίου που προκύπτει

από μια σειρά ασκήσεων και εργασιών,

καθώς και τελική εξέταση εργαστηρίου.

• Για να μπορεί να δώσει κάποιος τελικές • Για να μπορεί να δώσει κάποιος τελικές

εξετάσεις, πρέπει να έχει περάσει με 5 το

εργαστήριο.

• Ο βαθμός της προόδου και του

εργαστηρίου ενεργοποιούνται μόνον όταν

ο φοιτητής επιτύχει στις τελικές εξετάσεις,

δηλ. εάν σε αυτές λάβει βαθμό

τουλάχιστον 5.

6

Page 7: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Πρόοδος/Εξετάσεις

• Η εξέταση προόδου θα πραγματοποιηθεί την πρώτη

εβδομάδα του Δεκέμβρη και θα εξεταστεί γραπτώς η ύλη

που θα έχει καλυφθεί μέχρι εκείνο το σημείο.

• Η συμμετοχή στην πρόοδο είναι επιβεβλημένη.

• Η εξεταστική περίοδος ξεκινά 24.01.2011 και τελειώνει

18.02.2011

• Η εξέταση τόσο στην πρόοδο όσο και στις τελικές εξετάσεις • Η εξέταση τόσο στην πρόοδο όσο και στις τελικές εξετάσεις

είναι με περιορισμένο χρόνο και με ανοικτές σημειώσεις.

• Οι σημειώσεις που μπορείτε να έχετε μαζί σας περιορίζονται

στα εξής: το σύγγραμμα που έχετε επιλέξει, δικές σας

χειρόγραφες σημειώσεις από το μάθημα, τυπωμένο υλικό

(ασκήσεις, διαφάνειες) που έχει αναρτηθεί στο site του

μαθήματος.

• Δεν επιτρέπεται οποιαδήποτε συσκευή υπολογισμού (laptop,

pda, smart phone, calculator, κ.α.)

7

Page 8: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Εργαστήριο

• 4 ώρες (Δευτέρα & Τετάρτη 9.00 – 13.00)

• Δύο ομάδες, αλφαβητικός διαχωρισμός

• Ο διαχωρισμός των ομάδων είναι αυστηρός για

όλους!

• Η παρακολούθηση εργαστήριου δεν είναι • Η παρακολούθηση εργαστήριου δεν είναι

υποχρεωτική, η πείρα όμως δείχνει ότι η συμμετοχή

στο εργαστήριο και η εξάσκηση αποδίδουν.

• Φοιτητές που έχουν κατοχυρώσει προβιβάσιμο

βαθμό το ακαδημαϊκό έτος 2009-2010 μπορούν να

μεταφέρουν το βαθμό τους στο τρέχον ακαδημαϊκό

έτος.

8

Page 9: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Εργαστήριο

• Η αξιολόγηση περιλαμβάνει: – 8 ασκήσεις εργαστηρίου

– 3 εργασίες πιο σύνθετες από τις ασκήσεις.

– τελική εξέταση του εργαστηρίου

– παρουσία στο εργαστήριο

• Οι εργασίες και οι ασκήσεις είναι ατομικές και θα πρέπει να παραδίνονται ηλεκτρονικά και θα πρέπει να παραδίνονται ηλεκτρονικά εντός αυστηρής προθεσμίας.

• Δεν θα δίνεται παράταση στην παράδοση των εργασιών και ασκήσεων.

• Η εξέταση του εργαστηρίου, θα γίνει την εβδομάδα 17-21 Ιανουαρίου 2011 με ένα θέμα, διαφορετικό αλλά ίδιας δυσκολίας, για την κάθε ομάδα.

9

Page 10: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Εργαστήριο

• Ο τελικός βαθμός εργαστηρίου (ΤΒΕ) υπολογίζεται

ως εξής:

ΤΒΕ = 0,5 * ΒΕΕ + 0,3 * ΣΒΕi + 0,2 * ΣΒΑi

όπου ΒΕΕ ο βαθμός εξέτασης του εργαστηρίου, ΣΒΕiΣ

ο μέσος όρος των βαθμών των εργασιών και ΣΒΑi ο

μέσος όρος των βαθμών των ασκήσεων.

• Θα πρέπει BEE > 5.

• Όλες οι εργασίες είναι ισοδύναμες.

• Όλες οι ασκήσεις είναι ισοδύναμες.

10

Page 11: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Δεοντολογία

• Οι εργασίες είναι ατομικές

• Γόνιμη ανταλλαγή απόψεων μεταξύ των φοιτητών σχετικά με τις εργασίες και επιτρέπεται και ενθαρρύνεται.

• Η συνεργασία ΔΕΝ πρέπει να οδηγεί σε από κοινού επίλυση και συγγραφή της εργασίας. κοινού επίλυση και συγγραφή της εργασίας.

• Η υποβολή κοινών απαντήσεων από διαφορετικούς φοιτητές που συνεργάστηκαν δεν επιτρέπεται και θεωρείται ως ΑΝΤΙΓΡΑΦΗ.

• Η αντιγραφή έχει ως αποτέλεσμα το μηδενισμό της εργασίας και τη δυσμενή αξιολόγηση συνολικά για το μάθημα.

11

Page 12: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Συμβουλή

• Να μην βλέπετε τις εργασίες των συμφοιτητών σας κατά την διάρκεια της εκπόνησής τους

• Να μην δίνετε το κείμενο ή/και τον κώδικα των εργασιών σας στους συμφοιτητές σας.στους συμφοιτητές σας.

• Στην τεκμηρίωση των εργασιών σας θα πρέπει να αναφέρετε όλες τις πηγές που χρησιμοποιήσατε (π.χ. βιβλία, διαδίκτυο, κτλ)

• Εάν είναι απαραίτητο ρωτήστε τους διδάσκοντες για διευκρινήσεις

12

Page 13: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Βιβλία

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

Brian Kernighan & Dennis Ritchie

2η έκδοση/2008

ISBN: 978-960-461-132-4

Εκδόσεις Κλειδάριθμος ΕΠΕΕκδόσεις Κλειδάριθμος ΕΠΕ

C Προγραμματισμός

Deitel Harvey M.,Deitel Paul J.5η έκδοση/2010

ISBN: 978-960-512-590-5Εκδόσεις Α. Γκιούρδα & ΣΙΑ ΟΕ

13

Page 14: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Ερωτήσεις;

14

Page 15: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

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

ΠΡΟΓΡΑΜΜΑΤΩΝ

15

Page 16: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Βασικές έννοιες

• Ο υπολογιστής είναι μια ηλεκτρονική

συσκευή που έχει την δυνατότητα να εκτελεί

εντολές με πολύ μεγαλύτερη ταχύτητα και

ακρίβεια από ότι ένας άνθρωπος

– Λειτουργίες εισόδου/εξόδου δεδομένων– Λειτουργίες εισόδου/εξόδου δεδομένων

– Αριθμητικές λειτουργίες

– Κίνηση πληροφοριών μέσα στη CPU

– Λογικές ή συγκριτικές λειτουργίες

16

Page 17: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Βασικές έννοιες

• Πρόβλημα (Problem)– Το υπολογιστικό πρόβλημα που καλούμαστε να επιλύσουμε,

π.χ., ένας αριθμητικός υπολογισμός, η διαχείριση μιας βάσης δεδομένων, ο έλεγχος ενός ρομπότ, μια ιατρική διάγνωση, η πρόγνωση του καιρού.

• Αλγόριθμος (Algorithm)– Μια σαφώς καθορισμένη διαδικασία αποτελούμενη από ένα

σύνολο εκτελέσιμων βημάτων που θα τερματίσει με ένα σύνολο εκτελέσιμων βημάτων που θα τερματίσει με ένα αποτέλεσμα μετά από πεπερασμένο πλήθος βημάτων που θα εκτελεσθούν.

• Πρόγραμμα (Program)– Μια κωδικοποίηση του αλγόριθμου σε μια γλώσσα

προγραμματισμού

• Διεργασία (Process)– Το πρόγραμμα που εκτελείται σε έναν υπολογιστή

17

Page 18: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

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

• Ανάλυση του προγράμματος που επιλύει ένα

πρόβλημα σε τμήματα (υποπρογράμματα,

modules) τα οποία συνεργάζονται για να

δώσουν το τελικό αποτέλεσμα, αλλά

ταυτόχρονα δημιουργούνται (και ελέγχονται) ταυτόχρονα δημιουργούνται (και ελέγχονται)

ανεξάρτητα το ένα από το άλλο.

18

Page 19: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

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

• Πλεονεκτήματα:

– Ευκολότερη κατανόηση της λειτουργίας του προγράμματος από τρίτους

– Ευκολότερος έλεγχος της ορθότητας του προγράμματος

– Ευκολότερη αποσφαλμάτωση προγράμματος – Ευκολότερη αποσφαλμάτωση προγράμματος (debugging)

– Δυνατότητα ανάπτυξης υποπρογραμμάτων ανεξάρτητα, από διαφορετικές ομάδες

– Δυνατότητα επαναχρησιμοποίησης υποπρογραμμάτων

– Ευκολότερη συντήρηση

19

Page 20: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Top-down σχεδιασμός λύσεων

• Divide-and-conquer: Διαίρεση μεγάλου (και

δύσκολου) προβλήματος σε περισσότερα

μικρά (και πιο εύκολα) προβλήματα

20

Page 21: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Bottom-up σχεδιασμός λύσεων

• Ανάπτυξη των τμημάτων του προγράμματος

ξεκινώντας από τα μικρότερα προς τα

μεγαλύτερα (που τα περικλείουν).

• Συνηθίζεται περισσότερο στην κωδικοποίηση

του αλγορίθμου σε πρόγραμμα.του αλγορίθμου σε πρόγραμμα.

21

Page 22: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Πρόβλημα - παράδειγμα

• Έχουμε ένα αρχείο με τα ονόματα των φοιτητών.

• Θέλουμε να βρούμε τους φοιτητές του 1ου έτους.

22

Page 23: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Σχεδιασμός μιας λύσης (αλγόριθμος)

1. Απέκτησε πρόσβαση στο αρχείο των

φοιτητών

2. Διάβασε την πρώτη γραμμή του αρχείου που

περιέχει τα στοιχεία του πρώτου φοιτητή

3. Αν είναι πρωτοετής φοιτητής τύπωσε το 3. Αν είναι πρωτοετής φοιτητής τύπωσε το

όνομά του.

4. Αν υπάρχει επόμενη γραμμή στο αρχείο

διάβασέ την και επανέλαβε τα βήματα 3-4.

23

Page 24: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Αναπαράσταση αλγόριθμων

• Ελεύθερο κείμενο (free text): ανεπεξέργαστος και αδόμητος τρόπος παρουσίασης αλγόριθμου

• Διαγραμματικές τεχνικές (diagrammingtechniques): γραφικός τρόπος παρουσίασης του αλγόριθμου(διάγραμμα ροής)techniques): γραφικός τρόπος παρουσίασης του αλγόριθμου(διάγραμμα ροής)

• Κωδικοποίηση (coding): πρόγραμμα γραμμένο είτε σε ψευδογλώσσα, είτε σε προγραμματιστικό περιβάλλον που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο

24

Page 25: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Διαγράμματα ροής

• Χρησιμοποιούνται διάφορα γεωμετρικά σχήματα με ορισμένη σημασία

• Τα σχήματα συνδέονται με συνεχείς γραμμές και χρησιμοποιούνται τόξα για να δείξουν την ροή των δεδομένωνροή των δεδομένων

• Ένα διάγραμμα ροής δεν είναι ένα συμπληρωμένο πρόγραμμα, αλλά αποτελεί μια γραφική αναπαράσταση των βημάτων ενός αλγόριθμου που μπορεί να χρησιμοποιηθεί ως βοήθεια για τον προγραμματιστή

Page 26: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Σύμβολα διαγράμματος ροής

26

Page 27: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Σύμβολα διαγράμματος ροής

27

Page 28: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Διάγραμμα ροής για το παράδειγμα

ΑΡΧΗ

Άνοιγµα αρχείου

φοιτητών για

ανάγνωση

∆ιάβασµα

γραµµής

αρχείου

28

αρχείου

Τέλος

αρχείου?

Φοιτητής 1ου

έτους?

Τύπωσε

στοιχεία φοιτητή

∆ιάβασµα

γραµµής

αρχείου

Κλείσιµο

αρχείου

φοιτητών

ΤΕΛΟΣΝΑΙ

ΟΧΙ

ΝΑΙ

ΟΧΙ

Page 29: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Κώδικας σε C#include <stdio.h>

int main()

{

FILE *fp;

char line[100], *c;

/* open the file */

fp = fopen(″STUDENT.DAT″, ″r″);

if (fp == NULL) {

printf(″Unable to open this file.\nAborting …\n″);

exit(-1);

}

/* read a line */

c = fgets(line, 100, fp);

while (c != NULL) /* Check EOF */

{

if (getyear(line) == 1) /* getyear function returns the year */

printf((″%s″, line);

c = fgets(line, 100, fp); /* read the next line */

}

fclose(fp);

return 0;

} 29

Page 30: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Διάγραμμα ροής για μετάφραση – εκτέλεση ενός C

προγράμματος

30

Page 31: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Έλεγχος αποτελεσμάτων

• Σε περίπτωση που το αποτέλεσμα δεν είναι το • Σε περίπτωση που το αποτέλεσμα δεν είναι το αναμενόμενο θα πρέπει να εντοπισθούν τα λογικά λάθη του προγράμματος που συνδέονται με το σχεδιασμό της λύσης

• Το πρόγραμμα θα πρέπει να ελεγχθεί με περισσότερα δεδομένα (εμπειρική απόδειξη ορθότητας έναντι αναλυτικής μεθόδου με μαθηματική απόδειξη).

31

Page 32: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Βήματα ανάπτυξης προγράμματος

1. Διατύπωση του προβλήματος με σαφήνεια. Ένα

πρόβλημα δεν μπορεί να επιλυθεί ορθά αν δεν γίνει

πρώτα κατανοητό.

2. Ανάλυση του προβλήματος και προσδιορισμός της

λύσης. Ένα πρόβλημα μπορεί να έχει πολλές λύσεις.

3. Διατύπωση της λύσης υπό τη μορφή αλγόριθμου.

4. Κωδικοποίηση του αλγόριθμου. Επιλογή γλώσσας

προγραμματισμού.

5. Μετάφραση και εκτέλεση του προγράμματος στον

υπολογιστή.

6. Έλεγχος και διόρθωση συντακτικών και λογικών

λαθών.32

Page 33: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

33

Page 34: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Κωδικοποίηση αλγόριθμου

34

Page 35: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Γλώσσες προγραμματισμού

• Γλώσσες μηχανής

– Άμεση επικοινωνία με το υλικό του υπολογιστή

• Συμβολικές γλώσσες

– Χρήση συμβολικών ονομάτων για τις βασικές εντολέςεντολές

• Υψηλού επιπέδου

– Προσανατολισμένες στο πρόβλημα και όχι στον υπολογιστή

Page 36: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

• Η μόνη γλώσσα που «καταλαβαίνει» άμεσα ο υπολογιστής

• Κάθε υπολογιστής έχει τη δική του διαφορετική γλώσσα μηχανής

• Κάθε κωδικός της γλώσσας μηχανής συμβολίζει μία συγκεκριμένη λειτουργία

Γλώσσες μηχανής

συγκεκριμένη λειτουργία– π.χ. Πολλαπλασιασμός = 1001

• Ο προγραμματισμός σε γλώσσα μηχανής είναι εξαιρετικά επίπονη διαδικασία

• Ξένη προς τον τρόπο που σκέφτεται ο άνθρωπος

• Μεγάλη ταχύτητα εκτέλεσης των προγραμμάτων

Page 37: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Συμβολικές γλώσσες

• Για την καλύτερη απομνημόνευση των

κωδικών μηχανής χρησιμοποιούνται

μνημονικοί κωδικοί

– π.χ. Πολλαπλασιασμός = MULT = 1001

• Η μετάφραση από τα συμβολικά ονόματα • Η μετάφραση από τα συμβολικά ονόματα

στους αριθμητικούς κωδικούς γίνεται μέσω

του συμβολομεταφραστή (assembler)

Page 38: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Γλώσσες υψηλού επιπέδου

• Δεν εξαρτώνται από την μηχανή αλλά από το πρόβλημα

• Επιτρέπουν στον προγραμματιστή να γράψει εντολές χρησιμοποιώντας κωδικές λέξεις και συμβατικούς μαθηματικούς συμβολισμούς

– π.χ. D = A * B + C– π.χ. D = A * B + C

• Επιτρέπουν στον προγραμματιστή να εκφράσει σε υψηλό επίπεδο δομές ελέγχου ροής: ακολουθιακή, επιλογής και επανάληψης

• Cobol, Fortran, Algol, Ada, Pascal, C, C++, Java, C#, Visual Basic, SQL, Prolog, PHP, Perl, Python

Page 39: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

• Ο υπολογιστής δεν «καταλαβαίνει» άμεσα μια γλώσσα υψηλού επιπέδου

• Η μετάφραση από μία γλώσσα υψηλού επιπέδου στη γλώσσα μηχανής γίνεται μέσω των μεταγλωττιστών (compilers)– Οδηγίες του προγραμματιστή: αποθηκευμένες στο πηγαίο

Μεταγλώττιση (compilation)

– Οδηγίες του προγραμματιστή: αποθηκευμένες στο πηγαίο πρόγραμμα (source program)

– Αντίστοιχες οδηγίες επιπέδου μηχανής: αποθηκευμένες στο αντικειμενικό ή τελικό πρόγραμμα (object program)

– Σε ορισμένα μικρά υπολογιστικά συστήματα (π.χ. PC) το αντικειμενικό πρόγραμμα πρέπει να προετοιμαστεί για εκτέλεση από άλλο ειδικό πρόγραμμα, τον συνδέτη(linkage editor)

Page 40: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

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

Page 41: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Ιστορική αναδρομή της C

41

Page 42: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Χαρακτηριστικά της C

• Είναι σχετικά μικρή και εύκολη στην εκμάθηση

• Υποστηρίζει top-down και bottom-up σχεδιασμό

αλλά και δομημένο προγραμματισμό

• Είναι αποτελεσματική (οδηγεί σε γρήγορα στην

εκτέλεση προγράμματα)εκτέλεση προγράμματα)

• Είναι φορητή (portable) σε πολλά συστήματα

• Ο προγραμματιστής έχει τον πλήρη έλεγχο, αλλά

και την ευθύνη των σφαλμάτων (π.χ. διαχείριση

δεικτών και δυναμικής μνήμης)

42

Page 43: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Χαρακτηριστικά της C

• Υπάρχει μεγάλη βάση εφαρμογών που

αναπτύχθηκαν με τη γλώσσα αυτή

• Μπορεί να χρησιμοποιηθεί και ως γλώσσα

χαμηλού επιπέδου (άμεση πρόσβαση στους

πόρους) και ως γλώσσα υψηλού επιπέδου πόρους) και ως γλώσσα υψηλού επιπέδου

(διαθέσιμες βιβλιοθήκες)

• Δημιουργήθηκε για την ανάπτυξη του UNIX

• Η γνώση της C είναι καλό εφόδιο για την

εκμάθηση άλλων γλωσσών όπως: C++, Java

και PHP.

43

Page 44: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Απλό πρόγραμμα σε C

44

Page 45: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Διαδικασία μεταγλώττισης

C

Preprocessor

int printf(char *format, …);

45

#include <stdio.h>

int main(void)

{

printf("hello, world\n");

return 0;

}

Επαυξηµένος

Κώδικας Πηγής

Page 46: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Επεξήγηση κώδικα

• Οτιδήποτε περικλείεται ανάμεσα σε /* και */ υποδηλώνει σχόλιο του προγραμματιστή σχετικά με το πρόγραμμα

• Τα σχόλια δεν μεταγλωττίζονται, αλλά αφαιρούνται κατά την διάρκεια της προεπεξεργασίας (C Preprocessor)

46

Page 47: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Επεξήγηση κώδικα

• Οδηγία προς τον C Preprocessor να

συμπεριλάβει τα περιεχόμενα του αρχείου συμπεριλάβει τα περιεχόμενα του αρχείου

επικεφαλίδας (header file) stdio.h το οποίο

περιέχει τις δηλώσεις συναρτήσεων της C

βιβλιοθήκης για είσοδο/έξοδο στην κονσόλα.

• Στο πρόγραμμα μας τέτοιες συναρτήσεις είναι

οι printf(), getchar()

47

Page 48: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Επεξήγηση κώδικα

• Κάθε έγκυρο C πρόγραμμα πρέπει να διαθέτει μια συνάρτηση main().

Από αυτή την συνάρτηση αρχίζει η εκτέλεση του • Από αυτή την συνάρτηση αρχίζει η εκτέλεση του προγράμματος μετά την μεταγλώττιση.

• Όταν ολοκληρωθεί η εκτέλεση των εντολών της main() από τον υπολογιστή, μια ακέραια τιμή (int) επιστρέφεται στο περιβάλλον από όπου έγινε η εκκίνηση της εκτέλεσης του προγράμματος και τελικά στον χρήστη.

48

Page 49: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Επεξήγηση κώδικα

• Η συνάρτηση printf() μας παρέχεται ως έτοιμη λειτουργία καθώς ορίζεται σε μια από τις βιβλιοθήκες της C (libc.a)

• Τυπώνει στην οθόνη τη συμβολοσειρά που λαμβάνει • Τυπώνει στην οθόνη τη συμβολοσειρά που λαμβάνει ως όρισμα.– Η συμβολοσειρά ορίζεται μεταξύ των διπλών εισαγωγικών ″ και ″.

• Η ακολουθία \n σημαίνει newline (νέα γραμμή) και υποδηλώνει πως η επόμενη εκτύπωση χαρακτήρων στην οθόνη θα γίνει σε νέα γραμμή.

• Το ερωτηματικό ; στο τέλος της πρότασης είναι μέρος της σύνταξης της C για να τερματίσει μια εντολή.

49

Page 50: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Επεξήγηση κώδικα

• Η συνάρτηση getchar() διαβάζει ένα • Η συνάρτηση getchar() διαβάζει ένα

χαρακτήρα από την κύρια είσοδο

(πληκτρολόγιο) και τον επιστρέφει στο

πρόγραμμα ως μια ακέραια τιμή.

• Η επιστρεφόμενη τιμή της getchar() που

πηγαίνει στο συγκεκριμένο πρόγραμμα;

50

Page 51: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Περιβάλλοντα C προγραμματισμού

• Περιβάλλον Microsoft Visual C++ Express

Edition για Windows (παρέχεται σε CD με το

βιβλίο)

• Μεταγλωττιστής GNU gcc για UNIX (ελεύθερο

λογισμικό)λογισμικό)

• Σε Windows τα παρακάτω περιβάλλοντα

υποστηρίζουν τον μεταγλωττιστή gcc

– Dev-C++

– Cygwin

– MinGW

51

Page 52: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Dev-C++

• Ανοικτό λογισμικό (GNU General Public License)

• Integrated Development Environment για C/C++ προγράμματα

• Χρησιμοποιεί την MinGW υλοποίηση του gcc

• H τελευταία έκδοση μπορεί να βρεθεί στην • H τελευταία έκδοση μπορεί να βρεθεί στην παρακάτω διεύθυνση: http://www.bloodshed.net/dev/devcpp.html

– Dev-C++ 5.0 beta 9.2 (4.9.9.2) (9.0 MB) with Mingw/GCC 3.4.2

– Κατεβάζετε ένα setup αρχείο της μορφής devcpp-4.9.9.2_setup.exe

52

Page 53: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Το περιβάλλον Dev-C++

53

Page 54: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Δημιουργία αρχείου κώδικα πηγής

54

Page 55: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Συγγραφή προγράμματος

Το πρόγραμμα σε C

55

Αρχείο κώδικα

πηγής

Page 56: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Μεταγλώττιση προγράμματος

56

Page 57: Ενότητα 1 -Εισαγωγή · 2010-10-20 · έλεγχος και διόρθωση λαθών, τεκμηρίωση και συντήρηση, απόσυρση του προγράμματος

Εκτέλεση προγράμματος

57

Προκαθορισμένη έξοδος (οθόνη ως παράθυρο)