Ενότητα 13 Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 Προγραµµατισµός Κεφάλαιο 13Α: ηµιουργία Προγραµµάτων Υπολογιστή Κεφάλαιο 13Β: Γλώσσες Προγραµµατισµού και η ιαδικασία Προγραµµατισµού ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή στηνπληροφορική 1 Εισαγωγή στηνπληροφορική 2 Κεφάλαιο 13Α Τι είναι ένα πρόγραµµα υπολογιστή? Πως τα προγράµµατα επιλύουν προβλήµατα ύο προσεγγίσεις: οµηµένος & Αντικειµενοστραφής προγραµµατισµός Τι είναι ένα πρόγραµµα υπολογιστή? Αρχεία Αλληλεπίδραση Υλικού Λογισµικού Εισαγωγή στηνπληροφορική 3 Εισαγωγή στηνπληροφορική 4 Αρχεία Τυπικά, ένα πρόγραµµα αποθηκεύεται σαν µια συλλογή αρχείων. Μερικοί κοινοί τύποι αρχείων που χρησιµοποιούνται σε προγράµµατα είναι οι εξής: Εκτελέσιµα αρχεία (.EXE), που ουσιαστικά στέλνουν εντολές στον επεξεργαστή. Αρχειά δυναµικά φορτώµενων βιβλιοθηκών (.DLL), που είναι υποσύνολα εκτελέσιµων αρχείων. Αρχεία αρχικοποίησης (.INI), τα οποία περιέχουν πληροφορίες ρυθµίσεων για ένα πρόγραµµα. Αρχεία βοήθειας (.HLP), που περιέχουν πληροφορίες για το χρήστη του προγράµµατος. Αλληλεπίδραση Υλικού Λογισµικού Το πρόγραµµα λέει στην CPU να επεξεργαστεί διακοπές ή ορίζει βήµατα που η CPU πρέπει να ακολουθήσει για να πραγµατοποιήσει µια εργασία. Για τον έλεγχο του υλικού, ένα πρόγραµµα πρέπει να είναι γραµµένο σε δυαδικούς αριθµούς (1s και 0s). Αυτός ο κώδικας καλείται κώδικας µηχανής ή γλώσσα µηχανής. Οι προγραµµατιστές χρησιµοποιούν γλώσσες προγρµµατισµού για να γράφουν κώδικα σε γλώσσα που είναι κοντά στην ανθρώπινη. Η περιγραφή που προκύπτει καλείται πηγαίος κώδικος. Οι µεταγλωττιστές και οι διερµηνευτές µεταφράζουν ένα πρόγραµµα σε καταληκτικό κώδικα (object code), τη δυαδική έκδοσητουπηγαίουκώδικα. Εισαγωγή στηνπληροφορική 5 Εισαγωγή στηνπληροφορική 6 1
Πως τα προγράµµατα επιλύουν προβλήµατα Ροή ελέγχου προγράµµατος Αλγόριθµοι Ευρετικές µέθοδοι Κοινά πρότυπα ροής Μεταβλητές και συναρτήσεις Ροή ελέγχου προγράµµατος Η σειρά µε την οποία εκτελούνται οι εντολές προγράµµατος καλείται ροή ελέγχου προγράµµατος. Για τον καθορισµό της ροής ελέγχου προγράµµατος, οι προγραµµατιστές µπορούν να χρησιµοποιήσουν ένα διάγραµµα ροής για να απεικονίσουν την ακολουθία εντολών του προγράµµατος. Οι προγραµµατιστές µπορούν επίσης να δηµιουργήσουν µια απλή έκδοση κειµένου του κώδικα ενός προγράµµατος που καλείται ψευδοκώδικας για να καθορίσουν πώς θα είναι η ροή του προγράµµατος. Εισαγωγή στηνπληροφορική 7 Εισαγωγή στηνπληροφορική 8 Αλγόριθµοι Το διάγραµµα ροής δείχνει ότι η ακολουθία µπορεί να διαφέρει ανάλογα µε τις συνθήκες. Ένας αλγόριθµος είναι ένα σύνολο βηµάτων που πάντα οδηγείσεµιαλύση. Ταβήµαταείναιπάντοτεταίδια, είτετο πρόβληµα λύνεται µε το χέρι είτε µε έναν υπολογιστή. Ένα πρόγραµµα υπολογιστή µπορεί να περιέχει χιλιάδες αλγόριθµους, µε καθένα να προορίζεται για µια απλή εργασία. Ένας αλγόριθµος, για παράδειγµα, θα βρει το υψηλότερο σηµείο σε µια οροσειρά συγκρίνοντας όλα τα σηµεία έως ότου βρεθεί το υψηλότερο Εισαγωγή στηνπληροφορική 9 Εισαγωγή στηνπληροφορική 10 Ευρετικές µέθοδοι no Ανέναπρόβληµαείναιπολύπερίπλοκογιαναλυθείµεέναν αλγόριθµο, ένας προγραµµατιστής µπορεί να προσπαθήσει να το σώσει χρησιµοποιώντας ευρετικές µεθόδους. Οι ευρετικές µέθοδοι είναι όπως οι αλγόριθµοι και βρίσκουν πάντα µια λύση σε ένα πρόβληµα. Αντίθετα όµως µε τους αλγόριθµους, οι ευρετικές µέθοδοι δεν εγγυώνται την εύρεση της καλύτερης δυνατής λύσης. Μια ευρετική µέθοδος, για παράδειγµα, µπορεί να βρει το υψηλότερο σηµείο σε µια οροσειρά συγκρίνοντας τυχαία σηµεία, αλλάαυτήηδιαδικασίαµπορείναµηβρειποτέτο υψηλότεροσηµείο. Εισαγωγή στηνπληροφορική 11 Εισαγωγή στηνπληροφορική 12 2
Κοινά πρότυπα ροής Γιανακαθορίσειπότεκαιπουθαπεράσειοέλεγχοςενός προγράµµατος, ένας προγραµµατιστής µπορεί να χρησιµοποιήσει εντολές συνθήκης ή βρόχους (επαναλήψεις). Μια εντολή συνθήκης καθορίζει εάν µια συνθήκη είναι αληθής. Εάν ναι, ο έλεγχος συνεχίζει στο επόµενο τµήµα του προγράµµατος. Ένας βρόχος επαναλαµβάνεται διαρκώς έως ότου µια συνθήκη γίνει αληθής. Ο έλεγχος τότε µεταφέρεται σε ένα άλλο τµήµα του προγράµµατος. Εισαγωγή στηνπληροφορική 13 Εισαγωγή στηνπληροφορική 14 Μεταβλητές και Συναρτήσεις Μια µεταβλητή είναι µια επώνυµη θέση µνήµης για δεδοµένα που υπόκεινται σε επεξεργασία. Τα προγράµµατα διαθέτουν µεταβλητές που µπορούν π.χ. να διατηρούν τιµές εισόδου από τους χρήστες. Μια συνάρτηση είναι ένα σύνολο βηµάτων που εκτελούνται ώστεναπραγµατοποιηθείµιασυγκεκριµένηεργασία. Συναρµολογώντας µαζί µια συλλογή συναρτήσεων, ένας προγραµµατιστήςµπορείναχτίσειέναπλήρεςπρόγραµµατα. Εισαγωγή στηνπληροφορική 15 Εισαγωγή στηνπληροφορική 16 ύο προγραµµατιστικές προσεγγίσεις οµηµένος και αντικειµενοστραφής προγραµµατισµός Οι πρώτοι προγραµµατιστές επέτρεπαν να µεταφέρεται ο έλεγχος εκτέλεσης από ένα τµήµα προγραµµάτος σε κάποιο άλλο µε χρήση εντολών goto. Ο έλεγχος µπορούσε να πάει σε κάποιο άλλο τµήµα του προγράµµατος όταν οι συνθήκες επέτρεπαν. Οιεντολές gotoέκανανταπρογράµµαταπολύπερίπλοκα. Για την εξάλειψη της χρήσης τους, οι προγραµµατιστές ανέπτυξανδύοπροσεγγίσειςανάπτυξηςπρογραµµάτων: οµηµένος προγραµµατισµός Αντικειµενοστραφής προγραµµατισµός Ο παραπάνω τύπος προγραµµατισµού δεν χρησιµοποιείται πλέον. Εισαγωγή στηνπληροφορική 17 Εισαγωγή στηνπληροφορική 18 3
οµηµένος προγραµµατισµός Ο δοµηµένος προγραµµατισµός χρησιµοποιεί τρεις κατηγορίες δοµών ελέγχου για να κάνουν την ροή ελέγχου προγραµµάτοςπερισσότεροπροβλέψιµη: Η δοµή ακολουθίας ορίζει την προκαθορισµένη ροή ελέγχου. Οι δοµές επιλογής σχετίζονται µε εντολές συνθήκες. Οι δοµές επανάληψης χρησιµοποιούν βρόχους εντολών, οι οποίοι εκτελούνται σύµφωνα µε τα αποτελέσµατα εντολών συνθήκης. Εισαγωγή στηνπληροφορική 19 Εισαγωγή στηνπληροφορική 20 Αντικειµενοστραφής προγραµµατισµός Στον αντικειµενοστραφή προγραµµατισµό (OOP, objectoriented programming), τα προγράµµατα δηµιουργούνται από τµήµατα κώδικα που καλούνται αντικείµενα. Κάθε αντικείµενοέχεισυναρτήσειςκαιχαρακτηριστικά (ιδιότητες) και µπορούν να εµπεριέχουν άλλα αντικείµενα. Τα αντικείµενα που µοιράζονται κοινά χαρακτηριστικά µπορούν να οµαδοποιούνται σε κλάσεις. Οι κλάσεις µπορούν να διαιρούνται σε υποκλάσεις. Στον αντικειµενοστραφή προγραµµατισµό, τα αντικείµενα επικοινωνούν µεταξύ τους µε ανταλλαγή µηνυµάτων. Επανάληψη Κεφαλαίου 13Α Ορίστε τον όρο πρόγραµµα υπολογιστή. Περιγράψτε τη χρήση διαγραµµάτων ροής και ψευδοκώδικα στον προγραµµατισµό. Προσδιορίστε δύο τρόπους µε τους οποίους ένα πρόγραµµα µπορεί να λειτουργεί για τη εύρεση µιας λύσης. ιαφοροποιήστε δύο βασικές προσεγγίσεις στον προγραµµατισµό υπολογιστών. Αναφέρετε και περιγράψτε τρία βασικά στοιχεία του αντικειµενοστραφούς προγραµµατισµού. Εισαγωγή στηνπληροφορική 21 Εισαγωγή στηνπληροφορική 22 Κεφάλαιο 13Β Η εξέλιξη των γλωσσών προγραµµατισµού Ο κύκλος ζωής ανάπτυξης συστηµάτων στον προγραµµατισµό Η εξέλιξη των γλωσσών προγραµµατισµού Για τη δηµιουργία προγραµµάτων, οι άνθρωποι χρησιµοποιούν γλώσσες που είναι παρόµοιες µε την ανθρώπινη γλώσσα. Τα αποτελέσµατα µεταφράζονται σε κώδικα µηχανής, τον οποίο οι υπολογιστές µπορούν να κατανοήσουν. Οι γλώσσες προγραµµατισµού ανήκουν σε τρεις γενικέςκατηγορίες: Γλώσσες µηχανής Γλώσσες assembly Γλώσσες υψηλού επιπέδου Εισαγωγή στηνπληροφορική 23 Εισαγωγή στηνπληροφορική 24 4
Γλώσσες µηχανής Οι γλώσσες µηχανής (γλώσσες πρώτης γενιάς) είναι η βασικότερη κατηγορία γλωσσών υπολογιστή, αποτελούµενες από ακολουθίες αριθµών που το υλικό του υπολογιστή µπορεί να χρησιµοποιήσει. ιαφορετικές κατηγορίες υλικού χρησιµοποιούν διαφορετικό κώδικαµηχανής. Γιαπαράδειγµα, οιυπολογιστέςτης IBM χρησιµοποιούν διαφορετική γλώσσα µηχανής από τους υπολογιστέςτης Apple. Γλώσσες assembly Οι γλώσσες assembly (γλώσσες δεύτερης γενιάς) είναι κάπως ευκολότερες στη χρήση από τις γλώσσες µηχανής Για την ανάπτυξη προγραµµάτων σε γλώσσα assembly, οι προγραµµατιστές χρησιµοποιούν ειδικές φράσεις που αναπαριστούν συµβολοσειρές αριθµών. Στην συνέχεια, ο κώδικας µεταφράζεται σε κώδικα προς εκτέλεσης, χρησιµοποιώντας έναν µεταφραστή που καλείται assembler. Εισαγωγή στηνπληροφορική 25 Εισαγωγή στηνπληροφορική 26 Assembler Assembly code Γλώσσες υψηλότερου επιπέδου Οι γλώσσες προγραµµατισµού υψηλότερου επιπέδου είναι ισχυρότερες από τις γλώσσες assembly και επιτρέπουν στους προγραµµατιστές να εργάζονται σε ένα περιβάλλον που µοιάζει µε την Αγγλική γλώσσα. Οι γλώσσες προγραµµατισµού υψηλότερου επιπέδου χωρίζονται σε τρεις γενιές, µε τη κάθε µια ισχυρότερη από την προηγούµενή της: Γλώσσες τρίτης γενιάς Γλώσσες τέταρτης γενιάς Γλώσσες πέµπτης γενιάς Object code Εισαγωγή στηνπληροφορική 27 Εισαγωγή στηνπληροφορική 28 Γλώσσες τρίτης γενιάς Οι γλώσσες τρίτης γενιάς (3GLs) είναι οι πρώτες που χρησιµοποίησανπραγµατικάφράσειςτηςαγγλικήςγλώσσας, καθιστώντας ευκολότερη τη χρήση τους από τις προηγούµενες γλώσσες. Οι γλώσσες 3GLs είναι µεταφέρσιµες, εννοώντας ότι ο κώδικας που παράγεται για ένα τύπο συστήµατος µπορεί να µεταφραστεί για χρήση του σε ένα διαφορετικό τύπο συστήµατος. Οι ακόλουθες γλώσσες είναι τρίτης γενιάς: FORTAN, COBOL, BASIC, Pascal C, C++, Java, ActiveX Γλώσσες τέταρτης γενιάς Οι γλώσσες τέταρτης γενιάς (4GLs) είναι ακόµα πιο εύχρηστες από τις αντίστοιχες τρίτης γενιάς. Οι γλώσσες τέταρτης γενιάς µπορούν να χρησιµοποιούν ένα περιβάλλον κειµένου (όπως οι τρίτης γενιάς) ή επιτρέπουν στον προγραµµατιστή να δουλεύει σε ένα γραφικό περιβάλλον χρησιµοποιώντας εργαλεία γραφικών. Οι ακόλουθες γλώσσες είναι τέταρτης γενιάς: Visual Basic (VB) VisualAge Εισαγωγή στηνπληροφορική 29 Εισαγωγή στηνπληροφορική 30 5
Γλώσσες πέµπτης γενιάς Οι γλώσσες πέµπτης γενιάς (5GLs) είναι ένα ανοικτό ζήτηµα της κοινότητας προγραµµατιστών µερικοί προγραµµατιστές δεν συµφωνούν για την υπάρξη των γλωσσών. Αυτές οι γλώσσες υψηλού επιπέδου θα χρησιµοποιούσαν τεχνητή νοηµοσύνη (AI, artificial intelligence) για τη δηµιουργία λογισµικού, καθιστώντας εξαιρετικά δύσκολη τη δηµιουργίαγλωσσώνπέµπτηςγενιάς. Κύκλος ζωής ανάπτυξης συστηµάτων Ο κύκλος ζωής ανάπτυξης συστηµάτων για τον προγραµµατισµό περιλαµβάνει τις ακόλουθες φάσεις: 1 η Φάση: Ανάλυσηαναγκών 2 η Φάση: Σχεδίασηπρογράµµατος 3 η Φάση: Ανάπτυξη 4 η Φάση: Υλοποίηση 5 η Φάση: Συντήρηση Εισαγωγή στηνπληροφορική 31 Εισαγωγή στηνπληροφορική 32 Επανάληψη Κεφαλαίου 13Β Προσδιορίστε τρεις κύριες κατηγορίες γλωσσών προγραµµατισµού. Περιγράψτε τις πέντε γενιές γλωσσών προγραµµατισµού. Ονοµάστε τουλάχιστον πέντε βασικές γλώσσες προγραµµατισµού. Περιγράψτε ένα περιβάλλον οπτικού προγραµµατισµού και πώς αυτό χρησιµοποιείται. Αναφέρετε τις πέντε φάσεις του κύκλου ανάπτυξης λογισµικού. Εισαγωγή στηνπληροφορική 33 6