Προστακτικός προγραμματισμός

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Μετάβαση σε: πλοήγηση, αναζήτηση

Στην πληροφορική καλούμε προστακτικό προγραμματισμό (Αγγλικά: Imperative programming), σε αντίθεση με το δηλωτικό προγραμματισμό, ένα προγραμματιστικό υπόδειγμα όπου το ζητούμενο κατασκευάζεται / υπολογίζεται αλλάζοντας την κατάσταση του υπολογιστή μέσω εντολών. Η ιδέα είναι ότι έχουμε εντολές/statements που συνήθως μοιράζονται κοινές μεταβλητές. [1]

Το υπόδειγμα αυτό ακολουθούν οι διαδικαστικές γλώσσες προγραμματισμού, όπως η Pascal, η C , η Fortran, κ.α., αλλά και πολλές αντικειμενοστρεφείς γλώσσες όπως η Java, η C++, η C#, κ.α. Η ιδέα του προστακτικού προγραμματισμού απορρέει από την αρχιτεκτονική φον Νόιμαν η οποία σχεδιάστηκε την δεκαετία 1940. Κατά την αρχιτεκτονική αυτή η κάθε εντολή (γλώσσας μηχανής) εκτελείται διαδοχικά (σε κάθε κύκλο λειτουργίας του επεξεργαστή). Η μετέπειτα ανάπτυξη των γλωσσών προγραμματισμού υψηλού επιπέδου (όπως για παράδειγμα η Pascal ή η C) βασίστηκαν στην αρχιτεκτονική φον Νόιμαν και υλοποίησαν το υπόδειγμα του προστατικού προγραμματισμό όπου ο προγραμματισμός γίνεται σε γλώσσα υψηλού επιπέδου. [2]

Παράδειγμα[Επεξεργασία | επεξεργασία κώδικα]

Αν θέλουμε να υπολογίσουμε το άθροισμα ακέραιων αριθμών από το 1 μέχρι ένα αριθμό n σε κάποια προστακτική γλώσσα προγραμματισμού θα χρησιμοποιούσαμε 2 μεταβλητές οι οποίες θα αλλάζανε τιμές κατά την εκτέλεση του προγράμματος [3] όπως φαίνεται στο παρακάτω ψευδοκώδικα:

count := 0
total := 0 
repeat
   count := count + 1
   total := total + count
until
   count = n

ή υλοποιημένο στην γλώσσα C++:

int count=0;
int total=0;
do {
   count++;
   total+=count;
} while (count!=n);

Στο παράδειγμα αυτό οι τιμές των μεταβλητών count και total κατά την διάρκεια εκτέλεσης του κώδικα αλλάζουν τιμές μέχρι να υπολογιστεί το άθροισμα και αυτό ο τύπος προγραμματισμού λέγεται προστακτικός. Το πρόβλημα αυτό θα μπορούσε να λυθεί με μια αναδρομική συνάρτηση πάνω σε μια λίστα με τιμές 1..n μεθοδολογία η οποία δεν συνηθίζεται στον προστακτικό προγραμματισμό αλλά στον δηλωτικό προγραμματισμό όπως φαίνεται στην αναδρομική κλίση λίστας με 3 αριθμούς:

   sum [1,2,3]
= 1 + sum[2,3]
= 1 + (2 + sum[3])
= 1 + (2 + (3 + sum[]))
= 1 + (2 + (3 + 0))
= 6

Δείτε επίσης[Επεξεργασία | επεξεργασία κώδικα]

Παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  1. Haridi, Peter Van Roy; Seif (2004). Concepts, techniques, and models of computer programming. Cambridge, Mass. [u.a.]: MIT Press. σελ. 406. ISBN 0-262-22069-5. http://books.google.gr/books?id=_bmyEnUnfTsC&pg=PA406#v=onepage&q&f=false. 
  2. Tucker, editor-in-chief, Allen B. (2004). Computer science handbook (2nd ed. έκδοση). Boca Raton, Flor.: Chapman & Hall/CRC. σελ. 90-1, 90-2. ISBN 158488360X. http://books.google.gr/books?id=9IFMCsQJyscC&pg=SA90-PA#v=onepage&q&f=false. 
  3. Hutton, Graham (2007). Programming in Haskell (5. print. έκδοση). Cambridge [u.a.]: Cambridge Univ. Press. σελ. 3. ISBN 978-0-521-69269-4. http://books.google.gr/books?id=olp7lAtpRX0C&lpg=PP3&hl=el&pg=PA3#v=onepage&q&f=false.