ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6o ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
6.1 Η ΕΝΝΟΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 6.1 Η ΕΝΝΟΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ Η επίλυση ενός προβλήματος με υπολογιστή περιλαμβάνει 3 στάδια: Τον ακριβή προσδιορισμό του προβλήματος Την ανάπτυξη του αντίστοιχου αλγορίθμου Τη διατύπωση του αλγορίθμου σε κατανοητή μορφή από τον υπολογιστή
6.2 ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ Οι βασικές αρχές λειτουργίας των Η/Υ διατυπώθηκαν το 1945 από τον Φον Νόυμαν. Πρακτικά οι αρχές αυτές δεν έχουν αλλάξει σε αντίθεση με το υλικό (Hardware- επεξεργαστές, μνήμες κτλ) τα οποία αλλάζουν συνεχώς με πολύ γρήγορους ρυθμούς...
6.2.1 ΓΛΩΣΣΕΣ ΜΗΧΑΝΗΣ Ένα πρόγραμμα σε γλώσσα μηχανής είναι μια ακολουθία δυαδικών ψηφίων (0 -1) , που αποτελούν εντολές προς τον επεξεργαστή για στοιχειώδης λειτουργίες. Οι εντολές οποιουδήποτε προγράμματος μετατρέπονται σε γλώσσα μηχανής προκειμένου να εκτελεστούν από τον υπολογιστή…
6.2.1 ΣΥΜΒΟΛΙΚΕΣ ΓΛΩΣΣΕΣ - ΧΑΜΗΛΟΥ ΕΠΙΠΕΔΟΥ - 6.2.1 ΣΥΜΒΟΛΙΚΕΣ ΓΛΩΣΣΕΣ - ΧΑΜΗΛΟΥ ΕΠΙΠΕΔΟΥ - Οι πρώτες προσπάθειες για τη δημιουργία γλωσσών προγραμματισμού φιλικές στον άνθρωπο ξεκίνησαν με τη παρουσίαση των γλωσσών χαμηλού επιπέδου ή συμβολικές… Οι μετάφραση των προγραμμάτων από τις γλώσσες αυτές σε γλώσσα μηχανής πραγματοποιείται από τον συμβολομεταφραστή (assembler). 1/2
6.2.1 ΣΥΜΒΟΛΙΚΕΣ ΓΛΩΣΣΕΣ - ΧΑΜΗΛΟΥ ΕΠΙΠΕΔΟΥ - 6.2.1 ΣΥΜΒΟΛΙΚΕΣ ΓΛΩΣΣΕΣ - ΧΑΜΗΛΟΥ ΕΠΙΠΕΔΟΥ - Πλεονέκτημα των συμβολικών γλωσσών: Είναι πιο κατανοητές για τον άνθρωπο απ’ότι η γλώσσα μηχανής (0-1). Μειονεκτήματα: Στενά συνδεδεμένες με την αρχιτεκτονική του κάθε υπολογιστή. Δεν διαθέτουν εντολές πιο σύνθετων λειτουργιών. Δεν μπορούν να μεταφερθούν σε άλλο υπολογιστή. 2/2
ΠΑΡΑΔΕΙΓΜΑ ΣΕ ΓΛΩΣΣΑ: ΜΗΧΑΝΗΣ ΣΥΜΒΟΛΙΚΗ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ ΠΑΡΑΔΕΙΓΜΑ ΣΕ ΓΛΩΣΣΑ: ΜΗΧΑΝΗΣ ΣΥΜΒΟΛΙΚΗ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ
ΠΡΟΣΟΧΗ!!! Ο διαχωρισμός των γλωσσών σε γλώσσες μηχανής, συμβολικές, υψηλού επιπέδου, 4ης γενιάς κτλ έγινε με μόνο κριτήριο το πόσο κατανοητές είναι από τον άνθρωπο και ΔΕΝ έχει να κάνει με τις δυνατότητες κάθε γλώσσας…
6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ Πλεονεκτήματα: Ο φυσικότερος και πιο ¨ανθρώπινος¨ τρόπος έκφρασης των προγραμμάτων Η ανεξαρτησία από τον τύπο του υπολογιστή. Η ευκολία εκμάθησης και εκπαίδευσης. Ευκολότερη συντήρηση και διόρθωση των προγραμμάτων
6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 1957…Η ΙΒΜ αναπτύσσει την 1η γλώσσα υψηλού επιπέδου, την FORTRAN (FORmula TRANslation). H FORTRAN αναπτύχθηκε ως γλώσσα κατάλληλη για την επίλυση μαθηματικών και επιστημονικών προβλημάτων… 1/9
6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 1960… Αναπτύσσεται μια γλώσσα σταθμός για τον προγραμματισμό, η COBOL (Common Business Oriented Language) , η οποία είναι κατάλληλη για ανάπτυξη εμπορικών και διαχειριστικών εφαρμογών… 2/9
6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 1960…Η ALGOL (ALGOrithmic – Language) . Αν και δεν γνώρισε μεγάλη πρακτική εφαρμογή, επηρέασε ιδιαίτερα τον προγραμματισμό και τις επόμενες γλώσσες… Αναπτύχθηκε ως γλώσσα με σκοπό τη δημιουργία γενικής φύσης προγραμμάτων. 3/9
6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ Η PL/1 αναπτύχθηκε στα μέσα της δεκαετίας του ’60 με σκοπό να καλύψει όλους τους τομείς του προγραμματισμού, δίχως ποτέ να καταφέρει κάτι τέτοιο… 4/9
6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ Η LISP ( LISt Processor ) και η PROLOG ( PROgramming LOGic), είναι δυο από τις γλώσσες που αναπτύχθηκαν στο χώρο της τεχνητής νοημοσύνης… (παιχνίδια, επεξεργασία φυσικών γλωσσών κτλ) 5/9
6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ Η BASIC (Beginner’s All Purpose Symbolic Instruction Code), αρχικά αναπτύχθηκε ως γλώσσα εκπαιδευτικού χαρακτήρα, όμως οι συνεχείς εκδόσεις της και η ανάπτυξη των μικροεπεξεργαστών την έκαναν μια από τις δημοφιλέστερες γλώσσες προγραμματισμού. Η Quick basic και η Visual basic είναι δυο από τις εκδόσεις της. 6/9
6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ Το 1970 παρουσιάζεται η γλώσσα PASCAL η οποία στηρίχθηκε στην ALGOL και έφερε μεγάλες αλλαγές στο προγραμματισμό. Είναι γλώσσα γενικής χρήσης, κατάλληλη τόσο για εκπαίδευση όσο και για τη δημιουργία ισχυρών προγραμμάτων. Βασικό της χαρακτηριστικό: Είναι κατάλληλη για τη δημιουργία δομημένων προγραμμάτων. 7/9
6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ H γλώσσα C αναπτύχθηκε στα εργαστήρια της DELL και χρησιμοποιήθηκε για την ανάπτυξη του λειτουργικού συστήματος Linux. Είναι γλώσσα με ισχυρά χαρακτηριστικά μερικά από αυτά κοινά με την Pascal. H C εξελίχθηκε στη C++, που είναι αντικειμενοστραφής. 8/9
6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ H JAVA είναι μια γλώσσα η οποία χρησιμοποιείται τα τελευταία χρόνια για προγράμματα στο διαδίκτυο. Είναι αντικειμενοστραφής γλώσσα και αναπτύχθηκε από την εταιρία sun. Σκοπός της είναι η ανάπτυξη εφαρμογών, που θα εκτελούνται σε κατανεμημένα περιβάλλοντα. Προγράμματα γραμμένα σε JAVA μπορούν να «τρέχουν» σε διαφορετικά λειτουργικά περιβάλλοντα δίχως αλλαγές. 9/9
6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 6.2.3 ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ Οπτικός προγραμματισμός: Είναι η δυνατότητα να δημιουργούμε γραφικά ολόκληρο το περιβάλλον της εφαρμογής Οδηγούμενος από το γεγονός προγραμματισμός: Είναι η δυνατότητα να ενεργοποιούνται λειτουργίες του προγράμματος με την εκτέλεση ενός γεγονότος, για παράδειγμα την επιλογή μιας εντολής από ένα μενού ή το κλικ του ποντικιού.
6.2.4 ΓΛΩΣΣΕΣ 4ης ΓΕΝΙΑΣ Στις γλώσσες 4ης γενιάς ο χρήστης έχει τη δυνατότητα, σχετικά εύκολα να υποβάλει στο σύστημα ερωτήσεις ή να αναπτύσσει εφαρμογές που ανακτούν πληροφορίες από βάσεις δεδομένων. Σε προγράμματα γραμμένα σε τέτοιες γλώσσες ο χρήστης μπορεί να κάνει κάποιες αλλαγές στο πρόγραμμα δίχως να έχει γνώσεις προγραμματισμού.
Ποια είναι η καλύτερη γλώσσα προγραμματισμού; Αντικειμενικά καλύτερη γλώσσα μπορούμε να ισχυριστούμε ότι δεν υπάρχει. Εξαρτάται κάθε φορά από την εφαρμογή που θέλουμε να δημιουργήσουμε, το προγραμματιστικό περιβάλλον που θα λειτουργήσει η εφαρμογή, τις γνώσεις του προγραμματιστή κτλ…
6.3 ΦΥΣΙΚΕΣ ΚΑΙ ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣ 6.3 ΦΥΣΙΚΕΣ ΚΑΙ ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣ Φυσικές ονομάζονται οι γλώσσες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ των ανθρώπων, πχ: Ελληνικά, Αγγλικά, Κινέζικα κτλ. Τεχνητές ονομάζονται οι γλώσσες οι οποίες δημιουργήθηκαν για να μπορεί να επικοινωνεί ο άνθρωπος με μια μηχανή (Υπολογιστής). Όλες οι γλώσσες προγραμματισμού είναι τεχνητές γλώσσες…
6.3 ΦΥΣΙΚΕΣ ΚΑΙ ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣ 6.3 ΦΥΣΙΚΕΣ ΚΑΙ ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣ Ομοιότητες Φυσικών και Τεχνητών γλωσσών Το αλφάβητο. Το λεξιλόγιο. Η γραμματική. Η σημασιολογία.
6.3 ΦΥΣΙΚΕΣ ΚΑΙ ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣ 6.3 ΦΥΣΙΚΕΣ ΚΑΙ ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣ Η διαφορά φυσικών και τεχνητών γλωσσών : Οι φυσικές γλώσσες εξελίσσονται συνεχώς , αντίθετα οι τεχνητές γλώσσες χαρακτηρίζονται από στασιμότητα, αφού κατασκευάζονται συνειδητά για ένα συγκεκριμένο σκοπό.
ΤΕΧΙΚΈΣ ΣΧΕΔΙΑΣΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ Ιεραρχική σχεδίαση προγράμματος. Τμηματικός προγραμματισμός. Δομημένος προγραμματισμός.
6.4.1 Ιεραρχική σχεδίαση προγράμματος. 6.4.1 Ιεραρχική σχεδίαση προγράμματος. Σκοπός της τεχνικής αυτής είναι η διάσπαση του προβλήματος σε μια σειρά από απλούστερα υποπροβλήματα τα οποία είναι πιο εύκολο να λυθούν , οδηγώντας έτσι στην επίλυση του αρχικού προβλήματος…
6.4.1 Ιεραρχική σχεδίαση προγράμματος. 6.4.1 Ιεραρχική σχεδίαση προγράμματος.
Τμηματικός προγραμματισμός Η ιεραρχική σχεδίαση προγράμματος υλοποιείται με τον τμηματικό προγραμματισμό. Μετά την ανάλυση του προβλήματος σε αντίστοιχα υποπροβλήματα, κάθε υποπρόβλημα αποτελεί ανεξάρτητη ενότητα (module), που γράφεται ξεχωριστά από τα υπόλοιπα τμήματα προγράμματος.
Δομημένος προγραμματισμός Ο δομημένος προγραμματισμός στηρίζεται στη χρήση τριών και μόνο στοιχειωδών λογικών δομών: τη δομή της ακολουθίας, τη δομή της επιλογής και τη δομή της επανάληψης. Όλα τα προγράμματα μπορούν να γραφούν χρησιμοποιώντας μόνο αυτές τις τρεις δομές καθώς και συνδυασμό τους. Κάθε πρόγραμμα όπως και κάθε ενότητα προγράμματος έχει μόνο μία είσοδο και μόνο μία έξοδο.
Δομημένος προγραμματισμός
Προγραμματιστικά περιβάλλοντα Κάθε πρόγραμμα που γράφτηκε σε οποιαδήποτε γλώσσα προγραμματισμού, πρέπει να μετατραπεί σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον υπολογιστή, δηλαδή σε εντολές γλώσσας μηχανής.
Προγραμματιστικά περιβάλλοντα Η μετατροπή αυτή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων. Υπάρχουν δύο μεγάλες κατηγορίες τέτοιων προγραμμάτων, A. οι μεταγλωττιστές (compilers) και B. οι διερμηνευτές (interpreters).
Προγραμματιστικά περιβάλλοντα Ο μεταγλωττιστής δέχεται στην είσοδο ένα πρόγραμμα γραμμένο σε μια γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής.
Προγραμματιστικά περιβάλλοντα Ο διερμηνευτής διαβάζει μία προς μία τις εντολές του αρχικού προγράμματος και … για κάθε μια εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής.
Μεταγλώττιση και σύνδεση προγράμματος
Τα λάθη σε ένα πρόγραμμα… Τα λάθη του προγράμματος είναι γενικά δύο ειδών, λογικά και συντακτικά. Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση, ενώ τα συντακτικά λάθη στο στάδιο της μεταγλώττισης.
Ο Συντάκτης – editor - Για την αρχική σύνταξη των προγραμμάτων και τη διόρθωσή τους χρησιμοποιείται ένα ειδικό πρόγραμμα που ονομάζεται συντάκτης (editor). Ο συντάκτης είναι ουσιαστικά ένας μικρός επεξεργαστής κειμένου, με δυνατότητες όμως που διευκολύνουν τη γρήγορη γραφή των εντολών των προγραμμάτων.
Για τη δημιουργία, τη μετάφραση και την εκτέλεση ενός προγράμματος απαιτούνται τουλάχιστον τρία προγράμματα: ο συντάκτης, ο μεταγλωττιστής και ο συνδέτης. Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν αυτά τα προγράμματα με ενιαίο τρόπο.
Τέλος 6ου κεφαλαίου…