Αρχές Προγραμματισμού Βασικές έννοιες προγραμματισμού

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

Οι υπολογιστές δεν είναι και από τα πιο έξυπνα "όντα" σε αυτόν το κόσμο. Συνήθως ούτε άποψη έχουν ούτε κάποια (φανερή τουλάχιστον) προσωπικότητα. Σε αυτό που είναι πάρα πολύ καλοί είναι ο γρήγορος υπολογισμός απλών πράξεων ή καλύτερα η εκτέλεση απλών εντολών. Η πρόσθεση δύο αριθμών είναι μια τέτοια εντολή. Φανταστείτε ότι οι σύγχρονοι προσωπικοί υπολογιστές (PC) μπορούν να εκτελούν δισεκατομμύρια εντολές σε ένα κύκλο διάρκειας ενός δευτερολέπτου.

Οι εντολές αυτές ονομάζονται machine instructions και δεν είναι απαραίτητα αριθμητικής φύσης. Πχ. υπάρχουν εντολές που λένε στον μικροεπεξεργαστή ποιά θα είναι η επόμενη εντολή ανάλογα με το αποτέλεσμα της προηγούμενης, αν το x είναι αρνητικό εκτέλεσε την εντολή Α αλλιώς την εντολή Β. Το σύνολο αυτών των εντολών ονομάζεται γλώσσα μηχανής και είναι σχετικά μικρό και διαφορετικό για κάθε αρχιτεκτονική επεξεργαστή.

Όπως θα περιμένατε οι εντολές αυτές είναι δυαδικής μορφής. Κάθε εντολή έχει και το δικό της δυαδικό όνομα. Και εδώ αρχίζουν τα δύσκολα για εμάς. Εάν θέλουμε να πούμε στον υπολογιστή να κάνει κάτι πρέπει να μιλήσουμε τη γλώσσα του. Όχι μόνο είναι δύσκολο να μιλάς με αριθμούς, αλλά και το δυαδικό σύστημα δεν είναι το αγαπημένο μας. Οπότε αυτό που κάνανε οι προγραμματιστές είναι να βάλουν ένα ενδιάμεσο στάδιο όπου κάθε εντολή έχει μια λέξη για όνομα, όπως add, store, push κτλ. Αυτό το ενδιάμεσο στάδιο ονομάζεται assembly και κάπως έτσι άρχισε ο προγραμματισμός των υπολογιστών. Ακόμα και σήμερα υπάρχουν πολλοί που προγραμματίζουν σε assembly για το λόγο ότι είναι μια γλώσσα πολύ κοντά στον υπολογιστή. Ένα κομμάτι από ένα τέτοιο πρόγραμμα είναι και το παρακάτω που το μόνο που κάνει είναι να προσθέτει το 1 με το 2 και να εμφανίζει το αποτέλεσμα στην οθόνη:

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

Όλο αυτό το κατεβατό για το 1+2=3!!! Για να το καταλάβει αυτό το πρόγραμμα ο υπολογιστής πρέπει να το περάσουμε από έναν assembler. Αυτό είναι ένα πρόγραμμα το οποίο μεταφράζει την κάθε εντολή της γλώσσας assembly σε αυτό που καταλαβαίνει ο υπολογιστής, δηλαδή τη γλώσσα μηχανής.

Γλώσσα CΓλώσσα AssemblyΓλώσσα Μηχανής
c = a + badd $c, $a, $b10001110 01101010 00000000 00001100

Το να γράφεις προγράμματα σε assembly είναι δύσκολο, γιατί πέρα από ότι είναι δυσανάγνωστα είναι και πολύ μεγάλα. Για το λόγο αυτό, δημιουργήθηκαν γλώσσες προγραμματισμού οι οποίες είναι πιο κοντά στον άνθρωπο παρά στη μηχανή. Αυτές λέγονται υψηλού επιπέδου γλώσσες προγραμματισμού. Μερικές από αυτές είναι οι Fortran, BASIC, C, C++ και Java.

Τα προγράμματα που έχουν γραφτεί σε γλώσσες υψηλού επιπέδου για να εκτελεστούν πρώτα περνάνε από ένα πρόγραμμα που λέγεται compiler. Ο compiler παίρνει το πρόγραμμα μας, το μεταγλωττίζει και παράγει ένα εκτελέσιμο αρχείο σε μορφή binary1. Το εκτελέσιμο αυτό αρχείο στη συνέχεια το “τρέχουμε”, ουσιαστικά δίνοντας στον υπολογιστή όλες τις απαραίτητες πληροφορίες για την εργασία που θέλουμε να εκτελέσει. Η διαφορά ανάμεσα στο αρχικό πρόγραμμα (κώδικας) και το στο εκτελέσιμο είναι ότι το πρώτο είναι κατανοητό μόνο από τον άνθρωπο ενώ το δεύτερο είναι κατανοητό μόνο από τον υπολογιστή. Ο compiler είναι ο “διερμηνέας” μας σε όλη αυτή τη διαδικασία.

Ας δούμε πως θα μπορούσαμε να γράψουμε ένα πρόγραμμα σαν το παραπάνω που προσθέτει δυο αριθμούς σε μια γλώσσα υψηλού επιπέδου.

Παράδειγμα σε C:

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

Σκοπός δεν είναι να μάθετε το συντακτικό μιας τέτοιας γλώσσας, απλά να δείτε πόσο πιο κατανοητές είναι τέτοιες γλώσσες. Όπως και στα μαθηματικά έτσι και στον προγραμματισμό λειτουργούμε συνήθως με συναρτήσεις. Κατασκευάζουμε δηλαδή συναρτήσεις που υπολογίζουν αυτό που θέλουμε. Στο παραπάνω πρόγραμμα έχουμε την συνάρτηση που ονομάζεται main(). Σε αυτήν ορίζουμε δύο ακέραιους αριθμούς (int σημαίνει integer) τον a και το b που είναι ίσοι με το 1 και το 2 αντίστοιχα. Έπειτα ζητάμε από τον υπολογιστή να τυπώσει στην οθόνη το αποτέλεσμα της πρόσθεσής τους. Το printf() είναι και αυτό μια συνάρτηση.

Παράδειγμα σε Fortran:

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

Όπως βλέπετε η διαδικασία που ακολουθούμε είναι πάνω κάτω η ίδια και για τις δύο γλώσσες. Πρώτα ορίζουμε τον τύπο των μεταβλητών μας, έπειτα αναθέτουμε τιμές σε αυτές και στο τέλος υπολογίζουμε και τυπώνουμε το αποτέλεσμα. Και στις δυο περιπτώσεις στην οθόνη θα εκτυπωθεί το:
a+b=3