ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY Mία γλώσσα προγραμματισμού συνίσταται από ένα περιορισμένο υποσύνολο της αγγλικής γλώσσας και το οποίο αποτελείται από εκφράσεις σαφώς ορισμένες, χωρίς παρερμηνεία. Oι υπολογιστές μπορούν να εκτελούν ένα περιορισμένο σύνολο εντολών που εκφράζονται σε δυαδικό κώδικα, δηλ. ακολουθία μονάδων και μηδενικών. H συγγραφή και ανάγνωση, από τον χρήστη, προγραμμάτων σε δυαδικό κώδικα είναι πολύ δύσκολη και χρονοβόρα διαδικασία για τους περισσότερους χρήστες. Για να ξεπεραστούν αυτές οι δυσκολίες, έχουν δημιουργηθεί κατά καιρούς πολλές γλώσσες προγραμματισμού, οι οποίες σκοπό έχουν να διευκολύνουν την συγγραφή προγραμμάτων σε μορφή η οποία να είναι κατανοητή από τους χρήστες. H μορφή αυτή των προγραμμάτων είναι βέβαια κατανοητή από τον προγραμματιστή, αλλά όχι από τον υπολογιστή. Χρειάζεται λοιπόν να παρεμβληθεί ένας μεταφραστής (Compiler), ο οποίος μεταφράζει το πρόγραμμα που είναι κατανοητό στον χρήστη, σε μορφή η οποία είναι κατανοητή από τον υπολογιστή. Αυτή την μορφή προγράμματος μπορεί να εκτελέσει ο υπολογιστής, μετά από προτροπή του χρήστη και όχι την αρχική μορφή την οποία καταλαβαίνει ο χρήστης και μόνον.
Γενικά υπάρχουν δύο ειδών γλώσσες προγραμματισμού: οι συμβολικές γλώσσες και οι γλώσσες ανώτερου επιπέδου. H συμβολική γλώσσα είναι μία συμβολική αναπαράσταση δυαδικών εντολών, την οποία αντιλαμβάνεται άμεσα ο υπολογιστής και μπορεί να εκτελέσει τις εντολές χωρίς την παρεμβολή μεταφραστή (Compiler). Oι γλώσσες του τύπου αυτού είναι πολύ δύσκολες στην κατανόηση και την συγγραφή των εντολών και χρησιμοποιούνται από πολύ λίγους ειδικούς του θέματος. Oι γλώσσες προγραμματισμού ανώτερου επιπέδου ανεπτύχθησαν για να διευκολύνουν τους χρήστες στην συγγραφή προγραμμάτων. Μία από τις πρώτες γλώσσες που ανεπτύχθησαν ήταν η FORTRAN (FORmula TRANslator) και εξακολουθεί να είναι μια από τις περισσότερο χρησιμοποιούμενες γλώσσες για επιστημονικούς υπολογισμούς. Λόγω του μεγάλου πλήθους προγραμμάτων που υπάρχουν, η FORTRAN εξελίχθηκε με την πάροδο των ετών και η σημερινή της μορφή είναι διαφορετική από αυτήν που ορίστηκε αρχικά, διατηρώντας όμως πολλά στοιχεία από τον αρχικό σχεδιασμό της.
Ως εξέλιξη της FORTRAN μπορεί να θεωρηθεί η γλώσσα BASIC (Begginer's All-purpose Symbolic Instruction Code) με όλες τις μορφές που εξελίχθηκε ( GW BASIC, Quick BASIC, Array BASIC κλπ.). H γλώσσα BASIC προσαρμόζεται εύκολα σε έναν υπολογιστή και χρειάζεται μικρή μνήμη. Λόγω αυτών των πλεονεκτημάτων και του γεγονότος ότι οι κανόνες της είναι απλοί και λίγοι, έγινε η ευρύτερα χρησιμοποιούμενη γλώσσα σε μικροϋπολογιστές. Οι ίδιοι λόγοι όμως την καθιστούν δύσχρηστη έως ακατάλληλη για σύνθετα προγράμματα. H γλώσσα ALGOL (ALGOrithmic Language) προήλθε από εξέλιξη της FORTRAN για την αντιμετώπιση προβλημάτων προγραμματισμού σύνθετων αλγορίθμων (θα οριστούν στην συνέχεια). H ALGOL όπως και η COBOL είναι ένα πολύ καλό εργαλείο για εφαρμογές μισθοδοσίας, αποθήκης, κλπ. H PASCAL είναι μία γλώσσα που προέρχεται από τις γλώσσες ALGOL και PL/1 και είναι σχετικά εύκολη στην εκμάθηση όπως επίσης και κατάλληλη για προγραμματισμό πολύπλοκων αλγορίθμων. H γλώσσα C (όπως και η C++) είναι μια ευρύτατα χρησιμοποιούμενη, από πολλούς προγραμματιστές, γλώσσα προγραμματισμού. H γλώσσα αυτή αναπτύχθηκε με σκοπό να διευκολύνει κύρια την ανάπτυξη λειτουργικών συστημάτων. Το μεγαλύτερο μέρος από το λειτουργικό σύστημα UNIX (LINUX) είναι γραμμένο σε γλώσσα C. Επειδή έχει πολλές δυνατότητες και ευελιξία, είναι μια πολύ χρήσιμη γλώσσα προγραμματισμού γενικών εφαρμογών.
Υπάρχουν πάρα πολλές ακόμη γλώσσες, άλλες περισσότερο και άλλες λιγότερο επιτυχημένες και δημοφιλείς, αλλά η έστω και συνοπτική περιγραφή τους ξεφεύγει από τους σκοπούς του παρόντος. Διάφορες γλώσσες ανεπτύχθησαν για να αντιμετωπίσουν συγκεκριμένα προβλήματα και εφαρμογές, με συνέπεια η περιοχή των εφαρμογών της κάθε μιας να είναι περιορισμένη. Αυτό που πρέπει να γίνει κατανοητό είναι ότι δεν υπάρχουν καλές και κακές γλώσσες προγραμματισμού. Όλες οι γλώσσες είναι καλές για τους σκοπούς που έχουν αναπτυχθεί. Είναι ευθύνη του προγραμματιστή να επιλέξει την κατάλληλη γλώσσα για να αναπτύξει την εφαρμογή που τον ενδιαφέρει. Επειδή είναι δύσκολο για κάποιον να μάθει όλες τις γλώσσες, ενδείκνυται η σωστή εκμάθηση μίας γλώσσας η οποία να καλύπτει το μεγαλύτερο μέρος των αναγκών του. Για τον κλάδο των Θετικών Επιστημών οι περισσότερο χρησιμοποιούμενες γλώσσες είναι οι : FORTRAN, C, C++ και PASCAL. Οι βασικοί κανόνες των γλωσσών αυτών δεν διαφέρουν σημαντικά, με συνέπεια η σωστή εκμάθηση μίας εξ αυτών να διευκολύνει την εκμάθηση των άλλων.
Αλγόριθμοι Σε οποιαδήποτε γλώσσα προγραμματισμού και αν δουλεύει κανείς, είναι αναγκαίο πριν από την έναρξη συγγραφής ενός προγράμματος το οποίο θα λύνει ένα δεδομένο πρόβλημα, να σχεδιαστεί η στρατηγική κεντρική ιδέα, ένα γενικό πλάνο δηλαδή αποτελούμενο από τις διαδικασίες που πρέπει να ακολουθηθούν, το οποίο θα βοηθήσει στην κατανόηση αλλά και στην επίλυση του προβλήματος που του τίθεται. Η διαδικασία αυτή αφορά την σύλληψη και σταδιακή δημιουργία ενός αλγορίθμου επίλυσης του προβλήματος. Για την επίλυση ενός προβλήματος φυσικά μπορούν να δημιουργηθούν πολλοί διαφορετικοί αλγόριθμοι οι οποίοι θα πρέπει να συγκλίνουν στο ίδιο αποτέλεσμα αν αυτό υπάρχει και είναι αληθές. Ένας αλγόριθμος μπορεί να υλοποιηθεί χρησιμοποιώντας διαφορετικές γλώσσες προγραμματισμού, άρα ο αλγόριθμος είναι μία έννοια γενικότερη των γλωσσών προγραμματισμού.
ΑΝΑΠΤΥΞΗ-ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΩΝ Βήματα Σωστή διατύπωση του προβλήματος Κατανόηση του προβλήματος Λύση του προβλήματος Σωστή διατύπωση του αλγόριθμου Έλεγχος της λύσης
ΣΥΝΤΑΞΗ ΑΛΓΟΡΙΘΜΩΝ Η ορολογία των στοιχείων των αλγορίθμων (παρακάτω τρόπος σύνταξης λέξεων-διαδικασιών-εντολών) είναι δόκιμη και μπορεί να αποδοθεί με διαφορετικές εκφράσεις όπως συμβαίνει και στις γλώσσες προγραμματισμού. Καλό θα είναι όμως ο παρακάτω τρόπος σύνταξης ν ακολουθείται από όλους για να αποφεύγονται λάθη και συγχύσεις.
Κάθε σωστά διατυπωμένος αλγόριθμος πρέπει να χωρίζεται στα παρακάτω βασικά τμήματα 1. Κεφαλή αλγόριθμου περιέχει το όνομα του αλγόριθμου που θα πρέπει να είναι σχετικό με το πρόβλημα και την λύση του και μερικές από τις παραμέτρους οι οποίες αναφέρονται σε στοιχεία του προβλήματος που λύνεται. Η κεφαλή αρχίζει πάντα με την λέξη ALGORITHM algo_name (parameters list) Π.χ. ALGORITHM triοnymo (a, b, c) ή ALGORITHM megistos koinos diairetis (x1, x2) 2. Το δεύτερο τμήμα περιγράφει τα αντικείμενα με τα οποία εκτελούνται οι διαδικασίες-πράξεις. Τα αντικείμενα είναι δεδομένα όπως αριθμοί, γράμματα, λέξεις κ.α. Το τμήμα αυτό αρχίζει με την λέξη DATA και συνεχίζουν τα δεδομένα που χωρίζονται με κόμμα π.χ. DATA Ν, Κ, day, month, year ΔΟΜΗ ΑΛΓΟΡΙΘΜΩΝ
3. Το τρίτο τμήμα περιέχει τις πράξεις ή διαδικασίες που πρέπει να εκτελεστούν με τα δεδομένα ή μεταξύ των δεδομένων. Το τμήμα αυτό περικλείεται συνήθως μεταξύ των λέξεων κλειδιών BEGIN και END. Συνοπτική δομή αλγόριθμου ALGORITHM name... DATA...... BEGIN...... END Αν χρειάζονται σχόλια σε οποιαδήποτε θέση του αλγόριθμου περικλείονται με αγκύλες { και } ή άλλο σχετικό σύμβολο π.χ. #, %.
ΣΥΝΟΠΤΙΚΕΣ ΕΚΦΡΑΣΕΙΣ-ΕΝΤΟΛΕΣ ΓΙΑ ΤΗΝ ΔΙΑΤΥΠΩΣΗ ΑΛΓΟΡΙΘΜΩΝ 1. Εντολή εισόδου δεδομένων: GET (λίστα συμβόλων-χαρακτήρων σταθερών ή μεταβλητών τιμών). Με αυτή την λέξη-εντολή δίνουμε την δυνατότητα να εισάγουμε κάποια δεδομένα που αντιπροσωπεύονται από τα σύμβολαχαρακτήρες που επιλέγουμε και αφορούν τιμές ποσοτήτων που χρειαζόμαστε για την λύση του προβλήματος. 2. Εντολή εξόδου δεδομένων: PUT (λίστα συμβόλων-χαρακτήρων σταθερών ή μεταβλητών τιμών). Με αυτή την λέξη-εντολή δίνουμε την δυνατότητα να γνωστοποιήσουμε (εξάγουμε) κάποια δεδομένα που αντιπροσωπεύονται από τα σύμβολα-χαρακτήρες που επιλέγουμε τα οποία έχουν βρεθεί ή υπολογιστεί από την λύση του προβλήματος. 3. Εντολή αντικατάστασης: := Αν και μοιάζει με ισότητα υπάρχει κατευθυντικότητα σ αυτή την διαδικασία, όπου θέλουμε η τιμή μίας σταθεράς ή μεταβλητής ποσότητας στο αριστερό μέρος να γίνει ίση με την τιμή που έχει η αντίστοιχη σταθερά ή μεταβλητή ποσότητα στο δεξιό μέρος. Η ποσότητα στο δεξί μέρος πρέπει να έχει πάρει ήδη κάποια τιμή από προηγούμενη διαδικασία.
ΣΥΝΟΠΤΙΚΕΣ ΕΚΦΡΑΣΕΙΣ-ΕΝΤΟΛΕΣ ΓΙΑ ΤΗΝ ΔΙΑΤΥΠΩΣΗ ΑΛΓΟΡΙΘΜΩΝ 4. Εντολές (εκφράσεις-διατυπώσεις) επιλογής εκτέλεσης μίας εντολής ή ομάδας εντολών με βάση την ισχύ μίας συγκεκριμένης συνθήκης: α) IF S THEN G ENDIF Εάν (IF) ισχύει η συνθήκη S, τότε (THEN) εκτελείται η εντολή (ή ομάδα εντολών) G, αλλιώς συνεχίζουμε με την εκτέλεση της επόμενης εντολής-διαδικασίας. Κλείνουμε την διερεύνηση ισχύος της συνθήκης με την εντολή ENDIF. b) IF S THEN G1 ELSE G2 ENDIF Εάν (IF) ισχύει η συνθήκη S, τότε (THEN) εκτελείται η εντολή (ή ομάδα εντολών) G1, αλλιώς (ELSE) εκτελείται η εντολή (ή ομάδα εντολών) G2. Κλείνουμε την διερεύνηση ισχύος της συνθήκης με την εντολή ENDIF. 5. Εντολή επανάληψης (DO) καθόσον (WHILE) ισχύει μία συγκεκριμένη συνθήκη: WHILE S DO G Καθόσον ή όταν (WHILE) ισχύει η συνθήκη S, εκτελείται κατ επανάληψη (DO) η εντολή (ή ομάδα εντολών) G. 6. Ομάδα εντολών: BEGIN END Περισσότερες εντολές μπορούν να ομαδοποιηθούν γράφοντάς τες μεταξύ των εντολών-εκφράσεων BEGIN και END. Ειδική περίπτωση αρχή (BEGIN) και τέλος (END) εκτέλεσης του αλγορίθμου.
ΣΥΝΟΠΤΙΚΕΣ ΕΚΦΡΑΣΕΙΣ-ΕΝΤΟΛΕΣ ΓΙΑ ΤΗΝ ΔΙΑΤΥΠΩΣΗ ΑΛΓΟΡΙΘΜΩΝ 7. Όροι: μεταβλητές (π.χ. Ι, Χ, Υ, Ζ), σταθερές (π.χ. C, K, P, R) και τελεστές (π.χ. ή, και, ίσο, διαφορετικό κτλ). ΠΡΑΞΕΙΣ Πρόσθεση + Αφαίρεση - Πολλαπλασιασμός * Διαίρεση / Λογικής V (ή, διαζευκτικό), Λ (και) Ακέραια διαίρεση div (5 div 2 = 2) Ακέραιο υπόλοιπο mod (5 mod 2 =1) ίσο: =, διαφορετικό:, μικρότερο: <, μεγαλύτερο: >, μικρότερο ή ίσο:, μεγαλύτερο ή ίσο: Μεταβλητές ή σταθερές Σωστά ονόματα : Χ, Υ, Ζ, A, B, C, ΑΑ, ΑΒ, ΑC, A21, ABC33, Z4B, J5N, SUM_I, PROD_X Λάθος ονόματα : 2A, $6, B+C, &AB, (3 A, *X,?I
Παράδειγμα: όγκος κυλίνδρου. Να γραφεί ένας αλγόριθμος με τον οποίο να υπολογίζεται ο όγκος ενός κυλίνδρου με ακτίνα βάσης r και ύψος h. ALGORYTHM kylindros (r,h,v) { Ypologismos ogou kylindrou me aktina vasis r kai ypsos h} DATA V, r, h, pi GET r,h pi:=3.14 BEGIN PUT V END V:=pi*r*r*h