Αλγοριθμικό vs Προγραμματιστικό επίπεδο λειτουργίας

Ξεκίνησε από Νίκος Αδαμόπουλος, 01 Νοε 2010, 05:59:24 ΜΜ

« προηγούμενο - επόμενο »

Νίκος Αδαμόπουλος

Ουσιαστικά το βιβλίο με την ψευδογλώσσα μιλάει σε «αλγοριθμικό επίπεδο» και με τη ΓΛΩΣΣΑ σε «προγραμματιστικό επίπεδο».

Έτσι λοιπόν η ψευδογλώσσα είναι πολύ πιο χαλαρή... και μάλλον εσκεμμένα έχει μικροδιαφορές στη σύνταξή της και, κυρίως, στη λειτουργία της από τη ΓΛΩΣΣΑ. Επιπλέον, κάποια πράγματα που λέμε θεωρητικά ότι γίνονται σε αλγοριθμικό επίπεδο, δεν προκύπτουν στην πράξη στο προγραμματιστικό επίπεδο! Τα παραδείγματα είναι πολλά. Ενδεικτικά, αναφέρω μερικά:

Α) Η ψευδογλώσσα δεν κάνει διάκριση ακέραιων και πραγματικών και για αυτό και δεν είχε (μέχρι πρόσφατα) div και mod. Υπήρχαν βέβαια τρόποι να βρούμε το πηλίκο και το υπόλοιπο ακέραιας διαίρεσης (π.χ =[Μ/2], =Μ-[Μ/2]*2). 

Β)  Στη ΓΛΩΣΣΑ αναπόφευκτα έχουμε περιορισμούς στα μεγέθη των αριθμών. Έτσι, ενώ στην ψευδογλώσσα το παρακάτω λέμε ότι κάνει άπειρες επαναλήψεις
  i <- 10000
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    i <- i* 2
    ΓΡΑΨΕ i
  ΜΕΧΡΙΣ_ΟΤΟΥ i <= 100

...στην ΓΛΩΣΣΑ όμως όχι! (στον Διερμηνευτή της ΓΛΩΣΣΑΣ το δοκίμασα και κάνει μόλις 50!!! Δεν σταματάει επειδή χτυπάει run time error αλλά επειδή το i παίρνει αρνητική τιμή!).

Γ)  Ομοίως, στη ΓΛΩΣΣΑ αναπόφευκτα έχουμε περιορισμούς στην αναπαράσταση των δεκαδικών ψηφίων των πραγματικών αριθμών. Έτσι, ενώ στην ψευδογλώσσα το παρακάτω λέμε ότι δεν εμφανίζει τίποτα
  b <- 1/ 1000000000
  ΑΝ b = 0.000000002 ΤΟΤΕ
    ΓΡΑΨΕ '*'                                           
  ΤΕΛΟΣ_ΑΝ

... στην ΓΛΩΣΣΑ όμως εμφανίζει το «*» ! (με τις default ρυθμίσεις του Διερμηνευτή).

Εννοείται ότι μπορούμε να εντοπίσουμε κι άλλα τέτοια παραδείγματα!