Γενικό Λύκειο > Δομή ακολουθίας

ΤΜΗΜΑ ΔΗΛΩΣΕΩΝ

(1/3) > >>

George Eco:
Καλησπέρα συνάδελφοι.
Θέλω να συζητήσω μαζί σας ένα προβληματισμό μου.

Έστω το παρακάτω πρόγραμμα:

ΠΡΟΓΡΑΜΜΑ Hello_World
ΑΡΧΗ
  ΓΡΑΨΕ 'ΚΑΛΗΜΕΡΑ ΣΥΝΑΔΕΛΦΟΙ!!!'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Ερώτηση:

Το πρόγραμμα έχει τμήμα δηλώσεων ή δεν έχει;
Οπτική γωνία Α: Δεν έχει γιατί δε δηλώνεται τίποτα όποτε είναι άχρηστο, άρα... το Τμήμα Δηλώσεων είναι προαιρετικό.
Οπτική γωνία Β: Το Τμήμα Δηλώσεων ΥΠΑΡΧΕΙ, είναι κενό, αλλά βρίσκεται μεταξύ της ΠΡΟΓΡΑΜΜΑ και της ΑΡΧΗ.

Στο ΠΑΡΑΡΤΗΜΑ Α (που είναι εκτός εξεταστέας ούτως ή άλλως) δε το κάνει σαφές...

Στην ενότητα 7.10 λέει:

" Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες, έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς κανόνες για τον τρόπο που δομείται.
Η πρώτη εντολή κάθε προγράμματος είναι υποχρεωτικά η επικεφαλίδα του προγράμματος, η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος. Το τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ.
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος, αν βέβαια το πρόγραμμά μας χρησιμοποιεί σταθερές.
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών, όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των μεταβλητών καθώς και ο τύπος τους.
Ακολουθεί το κύριο μέρος του προγράμματος, που περιλαμβάνει όλες τις εκτελέσιμες εντολές.
Οι εντολές αυτές περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.
Τέλος, αν το πρόγραμμα χρησιμοποιεί διαδικασίες (βλ. κεφ. 10), αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή.
Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή, τότε ο πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας &.
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό (!), σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες εντολές."
Στην ανακεφαλαίωση:
"Κάθε πρόγραμμα έχει τον τίτλο του, ακολουθεί το τμήμα δηλώσεων (σταθερών και μεταβλητών) και μετά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ βρίσκονται όλες οι εκτελέσιμες εντολές."

Εσείς καταλάβατε αν είναι ρητά προαιρετικό; Εγώ νομίζω πως είναι προαιρετικό όπως το βλέπω, έλα όμως που η δεσμευμένη λέξη ΑΡΧΗ θέτει την αρχή του Κεντρικού μέρους του προγράμματος και ταυτόχρονα τη λήξη του Τμήματος Δηλώσεων! Δε το λέει αυτό για το τμήμα δηλώσεων ρητά κάπου, αλλά εξυπακούεται.

Γιατί ρωτάω;
Σ/Λ
Όλα τα προγράμματα σε ΓΛΩΣΣΑ έχουν υποχρεωτικά Τμήμα Δηλώσεων. Σωστό ή Λάθος;

Αν Σωστό, δείτε το παραπάνω πρόγραμμα που παράθεσα.
Αν Λάθος, θέλω να ξέρω πώς το τεκμηριώνουμε αυτό, βάει της θεωρίας στο βιβλίο.

Και που να σφίξουν οι ζέστες θα μου πείτε, αλλά τι να κάνω, μου αρέσει να προβληματίζομαι και να ψειρίζω το μάθημα. Όσο ακόμα είναι σε ΓΛΩΣΣΑ τουλάχιστο....

bugman:
Δίνεις ένα παράδειγμα που το θεωρείς πρόγραμμα. Αλλά δεν είναι ακριβώς πρόγραμμα. Διότι δεν έχει καμία επεξεργασία. Δηλαδή ένα πρόγραμμα έχει μια εισαγωγή, μια φάση επεξεργασίας και μια εξαγωγή. Αυτό είναι ένα απλό σχέδιο. Στο παράδειγμα δεν υπάρχει αλγόριθμος. Τι κάνεις λοιπόν; Ρωτάς αν συντακτικά είναι σωστό κάτι που δεν έχει τμήμα δηλώσεων σε ένα πρόγραμμα που δεν υπάρχει τίποτα για να δηλώσεις! Σου λέει η θεωρία ότι αν δεν έχεις να δηλώσεις σταθερή δεν βάζεις τμήμα δηλώσεων σταθερών. Δεν στο λέει στις μεταβλητές γιατί δεν υπάρχει περίπτωση να γράψεις πρόγραμμα χωρίς κάτι να επεξεργάζεται, άρα να καταγράφεται σε μεταβλητές. Αν τώρα παίζεις με την περίπτωση του Hello World, ή ανάλογου, τότε έχεις ήδη κάνει έκπτωση σε αυτό που λέμε πρόγραμμα και η απάντηση πρέπει να είναι ανάλογη της έκπτωσης!




George Eco:

--- Παράθεση από: bugman στις 08 Ιουλ 2020, 05:26:38 μμ ---Δίνεις ένα παράδειγμα που το θεωρείς πρόγραμμα. Αλλά δεν είναι ακριβώς πρόγραμμα. Διότι δεν έχει καμία επεξεργασία. Δηλαδή ένα πρόγραμμα έχει μια εισαγωγή, μια φάση επεξεργασίας και μια εξαγωγή. Αυτό είναι ένα απλό σχέδιο. Στο παράδειγμα δεν υπάρχει αλγόριθμος. Τι κάνεις λοιπόν; Ρωτάς αν συντακτικά είναι σωστό κάτι που δεν έχει τμήμα δηλώσεων σε ένα πρόγραμμα που δεν υπάρχει τίποτα για να δηλώσεις! Σου λέει η θεωρία ότι αν δεν έχεις να δηλώσεις σταθερή δεν βάζεις τμήμα δηλώσεων σταθερών. Δεν στο λέει στις μεταβλητές γιατί δεν υπάρχει περίπτωση να γράψεις πρόγραμμα χωρίς κάτι να επεξεργάζεται, άρα να καταγράφεται σε μεταβλητές. Αν τώρα παίζεις με την περίπτωση του Hello World, ή ανάλογου, τότε έχεις ήδη κάνει έκπτωση σε αυτό που λέμε πρόγραμμα και η απάντηση πρέπει να είναι ανάλογη της έκπτωσης!

--- Τέλος παράθεσης ---


Δίνω ένα παράδειγμα που εξ ορισμού θεωρείται πρόγραμμα. Είναι ακριβέστατα πρόγραμμα. Εμφανίζει ένα μήνυμα.
Δηλαδή αν βάλω σε μια γλώσσα προγραμματισμού να κάνει print έναν random αριθμό σε τι θα διαφέρει;
Από Wikipedia:
A computer program is a collection of instructions that can be executed by a computer to perform a specific task.
Θέλω να εμφανιστεί στην οθόνη το μήνυμα. Αυτό μόνο.
Τι εννοείς στο παράδειγμα δεν υπάρχει αλγόριθμος;

Αλγόριθμος Hello_World
   Εμφάνισε 'ΚΑΛΗΜΕΡΑ ΣΥΝΑΔΕΛΦΟΙ!!!'
Τέλος Hello_World

"Ρωτάς αν συντακτικά είναι σωστό κάτι που δεν έχει τμήμα δηλώσεων σε ένα πρόγραμμα που δεν υπάρχει τίποτα για να δηλώσεις!"
Όχι. Συντακτικά είναι ολόσωστο. Ρωτάω αν ΥΠΑΡΧΕΙ ή όχι τμήμα δηλώσεων, όταν δε δηλώνω κάτι.

"Σου λέει η θεωρία ότι αν δεν έχεις να δηλώσεις σταθερή δεν βάζεις τμήμα δηλώσεων σταθερών. Δεν στο λέει στις μεταβλητές γιατί δεν υπάρχει περίπτωση να γράψεις πρόγραμμα χωρίς κάτι να επεξεργάζεται, άρα να καταγράφεται σε μεταβλητές.

Συνειρμός που όμως κάνεις εσύ συνάδελφε. Εγώ δεν υποθέτω γιατί δε λέει κάτι. Είναι λίγο αυθαίρετο να υποθέσω κι αν υπέθετα δε θα ρωτούσα.
Ακόμα όμως και προαιρετικό να είναι το τμήμα μεταβλητών, έχω πάλι το ίδιο πρόβλημα.
Το ΤΜΗΜΑ ΔΗΛΩΣΕΩΝ υπάρχει κι είναι κενό ή δεν υπάρχει καθόλου;

Αν πω
ΓΡΑΨΕ 10 + 25 * 2
έχω κάνει επεξεργασία χωρίς μεταβλητές παρεμπιπτόντως. Η ερώτηση που κάνω είναι ξεκάθαρα θεωρητική και στόχο έχει άλλο πράγμα.

Όλα τα προγράμματα σε ΓΛΩΣΣΑ έχουν υποχρεωτικά Τμήμα Δηλώσεων. Σωστό ή Λάθος;

Καταλαβαίνεις πιστεύω πως μιλάμε για το μάθημα της Πληροφορικής στη Γ Λυκείου εδώ και προσπαθώ να καταλάβω αν το Τμήμα Δηλώσεων είναι προαιρετικό ή υποχρεωτικό έστω και κενό. ΑΥΤΗ είναι η απορία μου.
Δεν έχω κάνει καμμία έκπτωση σε αυτό που αποκαλείται πρόγραμμα. Ίσως να κάνω έκπτωση σε κάτι που εσύ αποκαλείς πρόγραμμα, ή στο τρόπο που το αντιλαμβάνεσαι, και λογικό να το βλέπεις έτσι. Αλλά ο ορισμός είναι ξεκάθαρος.

A computer program is a collection of instructions that can be executed by a computer to perform a specific task.
Ούτε κατά τον Wirth δε πάω κόντρα. Η δομή δεδομένων που έχει το πρόγραμμα μέσα του hardcoded, είναι μία συμβολοσειρά.
Ας αφήσουμε όμως ήσυχη τη wikipedia και τα κατά Wirth.

Βιβλίο Β Λυκείου, ενότητα 2.3.1:
"Πρόγραμμα είναι το σύνολο των εντολών που χρειάζεται να δοθούν στον υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος για την επίλυση του προβλήματος."

Κι ένας αλγόριθμος μπορεί ο ίδιος να παράγει είσοδο, δεν είναι απαραίτητο στοιχείο είσοδος από το χρήστη.
Δεν έχει καθιερωθεί τυχαία το "πρώτο πρόγραμμα" να είναι το Hello World.
ΤΟΣΟ λάθος να είμαστε όλοι μας;  :D
Στο δια ταύτα:
ΥΠΑΡΧΕΙ τμήμα δηλώσεων κι είναι κενό Ή μήπως δεν υπάρχει τμήμα δηλώσεων κι είναι προαιρετικό στοιχείο;
Στα πλαίσια του μαθήματος πάντα.

bugman:
Στο ερώτημα το γενικό για τη χρήση δήλωσεων μεταβλητών, ότι πρέπει να γίνεται απαντάμε ΣΩΣΤΟ. Δεν ρωτάς κάποιον για δηλώσεις εκεί που δεν υπάρχουν μεταβλητές. Είναι αυθαίρετο συμπέρασμα, όπως και η γενίκευση περί κάθε προγράμματος. Η ερώτηση είναι για προγράμματα με μεταβλητές. Αυτό έχει να κάνει με το αντίθετο, μια γλώσσα να δέχεται ορισμούς απευθείας στο μέρος του προγράμματος. Αν υπήρχε αυτή η δυνατότητα τότε θα ήταν ΛΆΘΟΣ. Εφόσον δεν επιτρέπεται η χρήση ορισμών μέσα στο κύριο πρόγραμμα, υποχρεωτικά γίνεται με δήλωση πριν από αυτό. Αυτή είναι η εξήγηση. Το παράδειγμα χωρίς μεταβλητές είναι έξω από το νόημα της ερώτησης.

Σε όλες τις γλώσσες αναφέρεται η σύνταξη του κενού εντολών προγράμματος.

bugman:
Να συμπληρώσω ότι μια γλώσσα ορίζεται η με πρότυπο ή με την εκδοση διερμηνευτή. ή μεταφραστή. Δυστυχώς ούτε το ένα ούτε το άλλο συμβαίνει για την ΓΛΩΣΣΑ. Το πρότυπο είναι διάσπαρτα σε βιβλία και δεν είναι πλήρης.
Αν στη σύνταξη ελάχιστου αποδεκτού προγράμματος έμπαινε η γραμμή Μεταβλητές: χωρίς να υπάρχουν μεταβλητές θα ξεκαθαρίζει ότι το τμήμα δηλώσεων είναι υποχρεωτικό να εμφανίζεται . Ή αν η εντολή υποχρεωτικά συντασεται με τουλάχιστον μια μεταβλητή θα σήμαινε ότι η απουσία μεταβλητών σημαίνει και απουσία τμήματος δηλώσεων.
Γενικά η τεκμηρίωση σύνταξης μιας γλώσσας είναι υποχρεωτική και πρέπει να είναι πλήρης. Με το δίκιο σου να θες να αποφύγεις ερμηνείες από τον οποιοδήποτε.

Πλοήγηση

[0] Λίστα μηνυμάτων

[#] Επόμενη σελίδα

Μετάβαση στην πλήρη έκδοση