Pascal σε ψευδοκώδικα - Πολλαπλή επιλογή

Ξεκίνησε από anasta, 29 Οκτ 2009, 10:01:08 ΠΜ

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

Βασίλης Ραξενίδης

Συγνώμη αλλά διάβασα όλες τις απαντήσεις και δεν κατάλαβα τίποτα. Το πρόβλημα ποιο ήταν; Να μετατραπεί κώδικας Pascal σε ψευδοκώδικα. Σωστά; Απάντηση δεν δόθηκε. Η απάντηση είναι απλή. Κατά τη γνώμη μου δεν γίνεται χωρίς φωλιασμένες Αν Τότε Αλλιώς.
Επίσης δεν γίνεται με την δομή πολλαπλής επιλογής όπως την έχει στο βιβλίο στη σελίδα 30 (μπλε πλαίσιο). Σύμφωνα με αυτή για κάθε περίπτωση εξετάζεται ισότητα.

Σε ότι αφορά την κουβέντα που γίνεται για την ορθότητα του κώδικα, λύσεις που δόθηκαν από iliasthes και Αδαμόπουλος είναι μια χαρά αν και δεν βλέπω διαφορά σε σχέση με τον αρχικό κώδικα του/της anasta πέρα από τους ελέγχους. Ωστόσο ο κώδικας του/της anasta είναι μια χαρά και ας είναι "deprecated" και ας έχει και begin end.
Γνώμη μου είναι ότι καταρχήν τα παιδιά θα πρέπει  να μάθουν να γράφουν κώδικα και ας έχει και περιττούς ελέγχους και περιττά begin end. Δεν νομίζω ότι να κοβόταν μονάδες από τον κώδικα του/της anasta. Εκτός αν μέρος του μαθήματος είναι και η βελτιστοποίηση. Σε κάθε περίπτωση πάντως η λύση με τους περιττούς ελέγχους είναι ποιο κοντά στον τρόπο που σκέφτονται οι μαθητές.

Όσο για το ΑΕΠΠ πιστεύω ότι θα ήταν καλύτερα να μην κοιτάμε συνέχεια πως γίνεται τι με τη ΓΛΩΣΣΑ. Εμάς μας δίνεται ο ψευδοκώδικας (όπως μας δίνεται) και με αυτόν πρέπει να δουλέψουμε. Προσωπικά χρησιμοποιώ τις εντολές του βιβλίου μας και λύνω  ασκήσεις από ΑΕΠΠ χωρίς κανένα πρόβλημα. Ας πάψουμε να ασχολούμαστε με τα ΑΛΛΙΩΣ_ΑΝ και τα ΓΙΑ Ι = 0 ΕΩΣ 10 ΜΕ ΒΗΜΑ 1 κτλ. Οτιδήποτε γίνεται με αυτές τις εντολές γίνεται και με τις εντολές που δίνονται στο βιβλίο μας.

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

Παράθεση από: Βασίλης Ραξενίδης στις 29 Οκτ 2009, 11:46:15 ΜΜ
Συγνώμη αλλά διάβασα όλες τις απαντήσεις και δεν κατάλαβα τίποτα. Το πρόβλημα ποιο ήταν; Να μετατραπεί κώδικας Pascal σε ψευδοκώδικα. Σωστά; Απάντηση δεν δόθηκε. Η απάντηση είναι απλή. Κατά τη γνώμη μου δεν γίνεται χωρίς φωλιασμένες Αν Τότε Αλλιώς.

Σωστά! Το μόνο που δεν απαντήθηκε ήταν το αρχικό ερώτημα  ;D  Και εγώ όσα έγραψα τα έγραψα επειδή παρασύρθηκα, αλλά και για να πω ότι στην Pascal οι πολλαπλές επιλογές ουσιαστικά είναι εμφωλευμένες, με ή χωρίς περιττούς ελέγχους, με ή χωρίς begin end...

Ιωάννης Γκίνης

#17
κ. Αδαμόπουλε επιτρέψτε μου μια μικρή διόρθωση

Παράθεση από: Νίκος Αδαμόπουλος στις 29 Οκτ 2009, 11:44:22 ΜΜ
.....
Ουσιαστικά όλα αυτά είναι εμφωλευμένα! Το κάθε else αντιστοιχεί στο πλησιέστερο if που δεν έχει κλείσει (που δεν έχει άλλο πλησιέστερο else ή δεν έχει ; στο τέλος του). Έτσι στο:

if συνθήκη1 then 
   if συνθήκη2 then 
      εντολή1;
else 
   if συνθήκη3 then 
      εντολή3 
   else 
      εντολή4


...το πρώτο else που υπάρχει αντιστοιχεί στο αρχικό if αφού το 2ο if έχει κλείσει με το ; Αν δεν υπήρχε το ; θα ήταν σαν να είχαμε:
......

πριν από το else δεν μπορούμε να έχουμε ; είναι συντακτικό λάθος. Αν θέλουμε να έχουμε το σχήμα που αναφέρετε θα πρέπει να χρησιμοποιηθεί η σύνθετη εντολή:

if συνθήκη1 then
begin 
   if συνθήκη2 then 
      εντολή1
end
else 
   if συνθήκη3 then 
      εντολή3 
   else 
      εντολή4


Εκτός θέματος όπως πάντα  :D

iliasthes

Βασίλη αν κατάλαβα καλα'το αρχικό πρόβλημα δεν ήταν αυτή καθεαυτή η μετατροπή του κώδικα σε ψευδοκώδικα, αλλά να γίνει μετατροπή της λύσης έτσι ώστε να μην υπάρχει else if, γιατί στον ψευδοκώδικα (του βιβλίου) δεν μπορεί να χρησιμοποιηθεί Αλλιώς Αν. Γι' αυτό ακριβώς το λόγο έδωσα και μια πρόταση χωρίς else if. Δεν νομίζω πως το πρόβλημα της συναδέλφου είναι να μετατρέψει αυτή τη λύση σε ψευδοκώδικα. Τουλάχιστον εγώ αυτό κατάλαβα.

Ιωάννης Γκίνης

#19
Παράθεση από: Βασίλης Ραξενίδης στις 29 Οκτ 2009, 11:46:15 ΜΜ
Γνώμη μου είναι ότι καταρχήν τα παιδιά θα πρέπει  να μάθουν να γράφουν κώδικα και ας έχει και περιττούς ελέγχους και περιττά begin end. Δεν νομίζω ότι να κοβόταν μονάδες από τον κώδικα του/της anasta. Εκτός αν μέρος του μαθήματος είναι και η βελτιστοποίηση. Σε κάθε περίπτωση πάντως η λύση με τους περιττούς ελέγχους είναι ποιο κοντά στον τρόπο που σκέφτονται οι μαθητές.

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

...κοιμήθηκα και ξύπνησα μ' αυτό. Να σου πω γιατί τα λέω αυτά: Μου φέρνεις στο μυαλό το προφίλ των ατόμων που έγραψαν το βιβλίο του ΔΠ για τα ΤΕΕ.  Γι' αυτό τραβάμε όλα αυτά που τραβάμε. Έτσι απλά γιατί κάποιοι ΔΕΝ ΗΤΑΝ ΒΕΛΤΙΣΤΟΙ ΣΤΗΝ ΔΟΥΛΕΙΑ ΤΟΥΣ αλλά αρκούνταν με αυτό που τόσο πετυχημένα έλεγε στη διαφήμιση η Τρέμη: ΤΗ ΔΟΥΛΕΙΑ ΤΗΣ ΞΕΠΕΤΑΣ.

Κάποτε πρέπει να σταματήσει αυτό. Είναι υποτιμητικό και άδικο για όλους μας.

Συναδελφικούς Χαιρετισμούς και από μένα.

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

Παράθεση από: jginis στις 30 Οκτ 2009, 12:18:08 ΠΜ
κ. Αδαμόπουλε επιτρέψτε μου μια μικρή διόρθωση
...
πριν από το else δεν μπορούμε να έχουμε ; είναι συντακτικό λάθος. Αν θέλουμε να έχουμε το σχήμα που αναφέρεται θα πρέπει να χρησιμοποιηθεί η σύνθετη εντολή:

if συνθήκη1 then
begin 
   if συνθήκη2 then 
      εντολή1
end
else 
   if συνθήκη3 then 
      εντολή3 
   else 
      εντολή4


Έχεις δίκιο. Έκανα κι εγώ το λάθος που ανέφερα. Το ; δεν οριοθετεί το τέλος μιας εντολής αλλά είναι διαχωριστικό, και εκεί δεν υπάρχει τίποτα να διαχωρίσει!

Ή θα μπορούσε να γίνει χωρίς begin end βάζοντας ένα else χωρίς εντολή! Δεν θυμάμαι, παίζει αυτό;


if συνθήκη1 then
   if συνθήκη2 then 
      εντολή1
   else 
else 
   if συνθήκη3 then 
      εντολή3 
   else 
      εντολή4

[/quote]

Γυρνάω και το διορθώνω για να μην το πάρει κανείς και το χρησιμοποιήσει λανθασμένο!

Ααα, και καλύτερα... Νίκος!

Ιωάννης Γκίνης

#21
Εδώ στη Σαλαμίνα θα λέγαμε: "Εμ μανάρι, αυτό είναι ακόμη πιο μαγκιόρικο!"
:laugh:

Σχετικά με το αρχικό μας θέμα μια αντίστοιχη άσκηση σε ψευδοκώδικα θα βρείτε εδώ:
http://users.att.sch.gr/jginis/?pg=sp#pseudo9

gedeon


Συνάδελφοι,
όπως πολύ καλά γνωρίζουν οι περισσότεροι που άρχισαν απο πέρυσι τη Pascal σαν Πανελλαδικώς εξεταζόμενο μάθημα,
τέτοιου είδους προβλήματα υπάρχουν λόγω των πολλών σημείων που έχουν ασάφειες στο βιβλίο(ή καλύτερα θα έλεγα μπερδεμένων σημείων).
Ταπεινή γνώμη μου είναι να προσπαθήσουμε να μάθουμε το σωστό τρόπο σκέψης στα παιδιά - σχετικά με το πώς θα φτιάχνουν ένα αλγόριθμο - και φυσικά πως αυτός θα υλοποιηθεί με Pascal.
Θα έλεγα ότι δε πρέπει να προβληματιζόμαστε πάρα πολύ σχετικά με θέματα τύπου
Αν.... Τέλος_Αν κλπ... Μερικά απο αυτά προέρχονται απο το μάθημα ΑΕΠΠ(και έχουμε χάσει το μπούσουλα). Καλό θα είναι να μη παρασυρόμαστε απο το τι γίνεται στο ΑΕΠΠ....
Είναι τόσο ασαφή τα θέματα του ψευδοκώδικα, ώστε πέρυσι το Υπουργείο έστειλε εγκύκλιο σχετικά με τους αποδεκτούς τρόπους υλοποίησης ψευδοκώδικα(και όσοι ήταν βαθμολογητές θυμούνται πολύ καλά ότι στο Υπουργείο η επιτροπή των εξετάσεων αποτελείτο απο διδάσκοντες του ΑΕΠΠ με αποτέλεσμα να μη γνωρίζουν την εγκύκλιο).
Τελικά τι έγινε; Απλά, όταν έγινε βαθμολόγηση των γραπτών δεχτήκαμε σωστές και τις απαντήσεις (π.χ. με Τέλος_Αν και αυτές χωρίς Τέλος_Αν).

Επίσης, κάτι που έχει αναφερθεί πριν λίγο καιρό...

Οι βαθμολογητές στις Πανελλαδικές, ήταν ΣΧΕΔΟΝ ΟΛΟΙ καθηγητές των ΕΠΑΛ. Δυστυχώς υπήρξαν και κάποιοι καθηγητές των Γενικών Λυκείων, αλλά ενημερώθηκαν απο εμάς τους υπόλοιπους. Βέβαια ψιλιμπερδεύονταν και τι κάναμε τελικά;... Απλά όταν υπήρχε καθηγητής Γενικού Λυκείου βάζαμε σαν 2ο καθηγητή-βαθμολογητή καθηγητή ΕΠΑΛ, ώστε να μη γίνει καμμιά στραβή ταυτόχρονα και απο τους δύο βαθμολογητές(αν τύχαινε να ήταν Γενικού Λυκείου).

Βασίλης Ραξενίδης

Παράθεση από: iliasthes στις 30 Οκτ 2009, 01:25:34 ΠΜ
Βασίλη αν κατάλαβα καλα'το αρχικό πρόβλημα δεν ήταν αυτή καθεαυτή η μετατροπή του κώδικα σε ψευδοκώδικα, αλλά να γίνει μετατροπή της λύσης έτσι ώστε να μην υπάρχει else if, γιατί στον ψευδοκώδικα (του βιβλίου) δεν μπορεί να χρησιμοποιηθεί Αλλιώς Αν. Γι' αυτό ακριβώς το λόγο έδωσα και μια πρόταση χωρίς else if. Δεν νομίζω πως το πρόβλημα της συναδέλφου είναι να μετατρέψει αυτή τη λύση σε ψευδοκώδικα. Τουλάχιστον εγώ αυτό κατάλαβα.
Μα νομίζω ότι το είπε και ο Αδαμόπουλος χθές. Η
else if
στην Pascal  είναι το όδιο σαν να γράφεις
if ... Then
........
else
   if .....

Δηλαδή φωλιασμένη
if
μέσα σε
else
.
Και σε ψευδοκώδικα
Αν .... Τότε
.....
Αλλιώς
    Αν .... Τότε
    Αλλιώς

Βασίλης Ραξενίδης

#24
Παράθεση από: jginis στις 30 Οκτ 2009, 01:30:13 ΠΜ
Παράθεση από: Βασίλης Ραξενίδης στις 29 Οκτ 2009, 11:46:15 ΜΜ
Γνώμη μου είναι ότι καταρχήν τα παιδιά θα πρέπει  να μάθουν να γράφουν κώδικα και ας έχει και περιττούς ελέγχους και περιττά begin end. Δεν νομίζω ότι να κοβόταν μονάδες από τον κώδικα του/της anasta. Εκτός αν μέρος του μαθήματος είναι και η βελτιστοποίηση. Σε κάθε περίπτωση πάντως η λύση με τους περιττούς ελέγχους είναι ποιο κοντά στον τρόπο που σκέφτονται οι μαθητές.

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

...κοιμήθηκα και ξύπνησα μ' αυτό. Να σου πω γιατί τα λέω αυτά: Μου φέρνεις στο μυαλό το προφίλ των ατόμων που έγραψαν το βιβλίο του ΔΠ για τα ΤΕΕ.  Γι' αυτό τραβάμε όλα αυτά που τραβάμε. Έτσι απλά γιατί κάποιοι ΔΕΝ ΗΤΑΝ ΒΕΛΤΙΣΤΟΙ ΣΤΗΝ ΔΟΥΛΕΙΑ ΤΟΥΣ αλλά αρκούνταν με αυτό που τόσο πετυχημένα έλεγε στη διαφήμιση η Τρέμη: ΤΗ ΔΟΥΛΕΙΑ ΤΗΣ ΞΕΠΕΤΑΣ.

Κάποτε πρέπει να σταματήσει αυτό. Είναι υποτιμητικό και άδικο για όλους μας.

Συναδελφικούς Χαιρετισμούς και από μένα.

Συνάδελφε Γιάννη, μάλλον δεν κατάλαβες τι ακριβώς ήθελα να πω. Προφανώς και συμφωνώ μαζί σου ότι είμαστε υποχρεωμένοι να μεταδώσουμε το σωστό και το πρέπων στα παιδιά. Ωστόσο δεν είμαι σίγουρος αν ένα μάθημα όπως αυτό που διδάσκουμε προσφέρεται για τέτοιου είδους διδασκαλία. Ξεκίνησα να διδάσκω το μάθημα (για πρώτη φορά φέτος) με στόχο την όσο το δυνατόν καλύτερη προετοιμασία των μαθητών για τις εξετάσεις. Πιστεύω ότι αυτό μπορεί να επιτευχθεί μαθαίνοντας στα παιδιά να έχουν μεθοδικό - αναλυτικό και εν τέλει αλγοριθμικό τρόπο σκέψης. Έτσι θα μπορέσουν  να αντιμετωπίσουν τα προβλήματα που θα τους δοθούν στις εξετάσεις. Κατά τη γνώμη μου  όμως, ο αναλυτικός και μεθοδικός τρόπος σκέψης είναι κάτι που δεν μπορεί να μεταδοθεί στα παιδιά μέσα από τη διδασκαλία μόνο. Πιστεύω (όπως πολύ εύστοχα διάβασα σε σχόλιο συναδέλφου σε άλλο θέμα) ότι ο προγραμματισμός δεν διδάσκεται αλλά μαθαίνεται. Προσωπικά όταν μάθαινα προγραμματισμό στο πανεπιστήμιο για κάθε ώρα θεωρητικής διδασκαλίας στο αμφιθέατρο ακολουθούσαν πολλές ώρες εφαρμογών και πειραματισμών στο εργαστήριο. Αυτό βεβαίως είναι αδύνατον να γίνει με τα μέσα που μας δίνονται για να διδάξουμε το μάθημα.
Επιπλέον δεν πρέπει να ξεχνάμε ότι οι μαθητές μας φτάνουν στην Γ τάξη χωρίς να έχουν κανένα υπόβαθρο σχετικό με προγραμματισμό. Άσε που από την άλλη αγνοούν  βασικά μαθηματικά. Πως να γράψουν έναν αλγόριθμο για μισθοδοσία όταν δεν ξέρουν πως να υπολογίσουν τις κρατήσεις για φόρο;
Με αυτή την έννοια λέω ότι καταρχήν θα πρέπει να μάθουμε στα παιδιά να γράφουν κώδικα. Προφανώς και έχεις δίκιο σχετικά με τους περιττούς ελέγχους στον κώδικα της συναδέλφου απ' όπου ξεκίνησε το θέμα. Προφανώς και σε καμιά περίπτωση δεν θα πρότεινα αυτόν τον κώδικα στα παιδιά ή μάλλον θα τον έδειχνα ως παράδειγμα προς αποφυγή. Από την άλλη όμως πιστεύω ότι αν ζητούσαμε τυχαία από έναν μαθητή να γράψει αυτόν τον αλγόριθμο πολύ πιθανόν να τον έγραφε με περιττούς ελέγχους και ξεκινώντας από εκεί θα μπορούσαμε να δείξουμε τι θα πρέπει να διορθώσει. Αυτό εννοώ όταν λέω ότι είναι πιο κοντά στον τρόπο που σκέφτονται οι μαθητές.
Τώρα αν θέλουμε
Παράθεσηνα γίνουμε το πρότυπο για το "πως πρέπει να σκέφτονται οι μαθητές"
μάλλον θα πρέπει πρώτα να έρθουμε κοντά και να καταλάβουμε πως σκέφτονται οι μαθητές και από εκεί να ξεκινήσουμε.

Αν μετά απ' αυτά συνεχίζω να σου θυμίζω (συνάδελφε Γιάννη) τους συγγραφείς του βιβλίου..... λυπάμαι πολύ.

Συγνώμη αν σας κούρασα

Χαιρετισμούς σε όλους.

Ιωάννης Γκίνης

κ. Ραξενίδη, είναι αλήθεια ότι τα όσα αναφέρατε είναι πράγματα που -πρέπει να- έχουν απασχολήσει όλους εμάς που ασχολούμαστε με τα πανελλαδικώς εξεταζόμενα μαθήματα του ΕΠΑΛ (και όχι μόνο). Τα πράγμα θέλει πολύ κουβέντα και αυτό δυστυχώς είναι το στοιχείο που λείπει, γενικότερα απ' την εκπαίδευση θα έλεγα.

Ζητώ συγνώμη για το "απότομο" του τρόπο μου. Ίσως φταίει η έπαρση που με (μας) πιάνει όταν ξέρω ότι αυτό που πρεσβεύω δεν είναι λάθος.

karinakis

είμαι και εγώ ένας συνάδελφος που πρώτη φορά κάνω το μάθημα του δομημένου προγραμματισμού. Διαβάζοντας το συγκεκριμένο θέμα συζήτησης για να πω την αλήθεια μπερδεύτηκα περισσότερο. Αν κατάλαβα καλα το αρχικό πρόβλημα της anasta ήταν πως θα μετατροπεί το πρόγραμμα της pascal που παρέθεσε σε ψευδοκώδικα. Μάλιστα το συγκεκριμένο πρόγραμμα περιείχε πολλαπλές επιλογές (else if). Γιατι θα πρέπει τα παιδιά ντε και καλά να το μετατρέψουν σε εμφωλευμένα If;;;;;;;;;;;;;;;; Μήπως γιατί το βιβλίο δεν αναφέρει αντίστοιχο ψευδοκώδικα για εντολή else if κάτι αντίστοιχο με το ΑΛΛΙΩΣ_ΑΝ του ΑΕΠΠ;;;;;; Αρα το μετατρέπουμε σε φωλιασμένα if και μετά παράγουμε τον αντίστοιχο ψευδοκώδικα;;;;;;;

Και κάτι άλλο που θα ήθελα να ρωτήσω : Σε ψευδοκώδικα λέμε στα παιδιά να τελειώνουν ένα AΝ με ΤΕΛΟΣ_ΑΝ ή όχι;;;;; (στο βιβλιο πάντως δεν φαίνεται κάτι τέτοιο όμως για τα παιδια είναι ευκολότερο να κατανοήσουν το ΑΝ χρησιμοποιώντας και ΤΕΛΟΣ_ΑΝ)

Θα εκτιμούσα αφάνταστα τις γνώμες σας καθώς όπως προείπα είμαι καινούριος στο μάθημα και κυριολεκτικά χαμένος μέσα στο ασαφές και γεμάτο προβλήματα βιβλιο

Ευχαριστώ εκ των προτέρων

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

Παράθεση από: karinakis στις 01 Νοε 2009, 09:36:42 ΠΜ
... Μάλιστα το συγκεκριμένο πρόγραμμα περιείχε πολλαπλές επιλογές (else if). Γιατι θα πρέπει τα παιδιά ντε και καλά να το μετατρέψουν σε εμφωλευμένα If;;;;;;;;;;;;;;;;

Μα αυτό ακριβώς λέμε! Ότι το else if δεν είναι πολλαπλή επιλογή, όπως είναι το αλλιώς_αν... Στην pascal δεν υπάρχει πολλαπλή if...

Όταν γράφουμε:

else if

ουσιαστικά είναι σαν να γράφουμε:

else
   if

Και στην ψευδογλώσσα της ΑΕΠΠ για τις πολλαπλές περιπτώσεις γράφουμε "αλλιώς_αν" και όχι "αλλιώς αν".

Αν γράφαμε:

αλλιώς αν

θα ήταν σαν να γράφαμε

αλλιώς
    αν

...δηλαδή εμφωλευμένο Αν!

Η ψευδογλώσσα του μαθήματος ουσιαστικά βασίζεται στην Pascal, η οποία δεν διαθέτει εντολή για επιλογή αντίστοιχη της ΑΕΕΠ: "Αν...τότε...αλλιώς_αν". Διαθέτει μόνο τις "Αν...τότε" και "Αν...τότε...αλλιώς"

Για τον ίδιο λόγο δεν υπάρχει το Τέλος_αν! Επειδή η pascal δεν έχει EndIf αλλά χρησιμοποιεί το begin - end για την περίπτωση που κάποιος θέλει να βάλει πολλές εντολές αντί για μόνο μία. Στην ψευδογλώσσα κατά τη γνώμη μου θα μπορούσε να μπει το Αρχή - Τέλος, με απολύτως αντίστοιχο τρόπο όπως στην pascal.

Πάντα κατά τη γνώμη μου, δεν πρέπει να ακολουθήσουμε την ψευδογλώσσα της ΑΕΠΠ (...επειδή πιθανώς την έχουμε συνηθίσει και την έχουμε κάνει ευαγγέλιο!) γιατί δεν αντιστοιχεί στην Pascal αλλά σε άλλη γλώσσα (!;), οπότε τα παιδιά θα μπερδεύονταν...

iliasthes

       Για το Τέλος Αν συμφωνώ απόλυτα με τον Νίκο (ελπίζω να μου επιτρέπεις τον ενικό). Εξάλλου μπορεί κακώς να μην δίνει παράδειγμα το βιβλίο, στον πίνακα εντολών ψευδοκώδικα όμως έχει τις εντολές Αρχή και Τέλος λέγοντας πως δηλώνουν την αρχή και το τέλος κάποιας ομάδας εντολών, οπότε μας αφήνει πιστεύω με αυτό τον τρόπο, το ελεύθερο να τις χρησιμοποιούμε όπου πιστεύουμε οτι είναι απαραίτητο για να μην υπάρχει σύγχυση που αρχίζει και που τελειώνει (που τελειώνει βασικά) μια εντολή ΑΝ ή μια εντολή Αλλιώς ή μια εντολή Για Ν φορές.

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

Παρόλο που μόλις τώρα έριξα μια ματιά στο βιβλίο - δεν το έχω ξαναδεί! -ας πάμε λοιπόν στο αρχικό ερώτημα:

Παράθεση από: anasta στις 29 Οκτ 2009, 10:01:08 ΠΜ
Πως θα μετατρέπατε σε ψευδοκώδικα το παρακάτω πρόγραμμα σε Pascal;;;;
όχι όμως με εμφωλευμένες....

program ASKHSH;
var
   MO:real;
begin
   writeln('ΔΩΣΕ ΤΕΛΙΚΟ ΜΕΣΟ ΟΡΟ');
   readln(MO);
   if ((MO>=0) and (mo<=9.5)) then
      begin
         writeln('Ο μαθητής απορρίπτεται');
      end
   else if ((MO>9.5) and (MO<=13)) then
      begin
         writeln('Σχεδόν καλά');
      end
   else if ((MO>13) and (MO<=16)) then
      begin
         writeln('Kαλά');
      end
   else if ((MO>16) and (MO<=18)) then
      begin
         writeln('Πολύ καλά');
      end
   else if ((MO>18) and (MO<=20)) then
      begin
         writeln('Άριστα');
      end
   else
      begin
         writeln('ΑΚΥΡΟΣ ΒΑΘΜΟΣ');
      end;
   
end.

Καταρχάς είναι ίδιο με το (κρατάω κατά τα άλλα όλους τους ελέγχους - αν και κάποιες παρενθέσεις μού φαίνονται περιττές):

Παράθεσηprogram ASKHSH;
var
   MO:real;
begin
   writeln('ΔΩΣΕ ΤΕΛΙΚΟ ΜΕΣΟ ΟΡΟ');
   readln(MO);
   if ((MO>=0) and (mo<=9.5)) then
      writeln('Ο μαθητής απορρίπτεται')
   else if ((MO>9.5) and (MO<=13)) then
      writeln('Σχεδόν καλά')
   else if ((MO>13) and (MO<=16)) then      
      writeln('Kαλά')
   else if ((MO>16) and (MO<=18)) then      
      writeln('Πολύ καλά')      
   else if ((MO>18) and (MO<=20)) then      
      writeln('ʼριστα')
   else
      writeln('ΑΚΥΡΟΣ ΒΑΘΜΟΣ')

end.

Αυτό που λέμε είναι ότι και τα 2 τα παραπάνω είναι με εμφωλευμένα Αν όσο κι αν δεν θέλουμε να το πιστέψουμε επειδή έχουμε στο μυαλό μας την ΑΕΠΠ. Αν κάποιος έχει στο μυαλό του μόνο την pascal και την ψευδογλώσσα όπως την έχει στη σελ. 25, πιστεύω πως τα πράγματα ξεκαθαρίζουν:

Σε ψευδογλώσσα θα μπορούσε να είναι (...ακολουθώντας τον τρόπο γραφής του βιβλίου, που απλά βλέπω να βάζει το Τότε σε ξεχωριστή γραμμή - τρίχες αλλά τέλος πάντων!):

ΠαράθεσηΕμφάνισε "ΔΩΣΕ ΤΕΛΙΚΟ ΜΕΣΟ ΟΡΟ"
Διάβασε ΜΟ
Αν ((MO>=0) και (mo<=9.5))
Τότε Εμφάνισε "Ο μαθητής απορρίπτεται"
Αλλιώς Αν ((MO>9.5) και (MO<=13))
Τότε Εμφάνισε "Σχεδόν καλά"
Αλλιώς Αν ((MO>13) και (MO<=16))
Τότε Εμφάνισε  "Kαλά"
Αλλιώς Αν ((MO>16) και (MO<=18))
Τότε Εμφάνισε"Πολύ καλά"
Αλλιώς Αν ((MO>18) και (MO<=20))
Τότε Εμφάνισε "ʼριστα"
Αλλιώς Εμφάνισε "ΑΚΥΡΟΣ ΒΑΘΜΟΣ"

ή ακόμα (αφού βλέπω σε παραδείγματα ότι υπάρχει ελευθερία γραφής ως προς τις εσοχές και τις αλλαγές γραμμών):

ΠαράθεσηΕμφάνισε "ΔΩΣΕ ΤΕΛΙΚΟ ΜΕΣΟ ΟΡΟ"
Διάβασε ΜΟ
Αν ((MO>=0) και (mo<=9.5))
Τότε
    Εμφάνισε "Ο μαθητής απορρίπτεται"
Αλλιώς Αν ((MO>9.5) και (MO<=13))
    Τότε Εμφάνισε "Σχεδόν καλά"
Αλλιώς Αν ((MO>13) και (MO<=16))
    Τότε Εμφάνισε  "Kαλά"
Αλλιώς Αν ((MO>16) και (MO<=18))
    Τότε Εμφάνισε"Πολύ καλά"
Αλλιώς Αν ((MO>18) και (MO<=20))
    Τότε Εμφάνισε "ʼριστα"
Αλλιώς
     Εμφάνισε "ΑΚΥΡΟΣ ΒΑΘΜΟΣ"

Ας μη βιαστούμε να πούμε ότι "Να λοιπόν, το παραπάνω είναι πολλαπλή αν"!!!, αντίστοιχη της Αν...τότε...αλλιώς_αν της ΑΕΕΠ, μόνο και μόνο επειδή μοιάζει οπτικά! Βάζοντας διαφορετικά χρώματα σε κάθε εντολή Αν ουσιαστικά βλέπουμε ότι σε κάθε Αλλιώς υπάρχει ως εντολή μία άλλη εντολή Αν (το δείχνω μόνο στην πρώτη Αλλιώς), κ.ο.κ.

Το ίδιο ακριβώς, αν αυξήσουμε λίγο τις εσοχές (!) και αλλάζοντας πιο πολλές γραμμές (!) γράφεται:

ΠαράθεσηΕμφάνισε "ΔΩΣΕ ΤΕΛΙΚΟ ΜΕΣΟ ΟΡΟ"
Διάβασε ΜΟ
Αν ((MO>=0) και (mo<=9.5))
Τότε
    Εμφάνισε "Ο μαθητής απορρίπτεται"
Αλλιώς
   Αν ((MO>9.5) και (MO<=13))
   Τότε
       Εμφάνισε "Σχεδόν καλά"
   Αλλιώς
       Αν ((MO>13) και (MO<=16))
       Τότε
           Εμφάνισε  "Kαλά"
       Αλλιώς
           Αν ((MO>16) και (MO<=18))
           Τότε
               Εμφάνισε"Πολύ καλά"
           Αλλιώς
               Αν ((MO>18) και (MO<=20))
               Τότε
                   Εμφάνισε "ʼριστα"
               Αλλιώς
                   Εμφάνισε "ΑΚΥΡΟΣ ΒΑΘΜΟΣ"

Δεν άλλαξε τίποτα όμως! Έτσι κι αλλιώς κανονικά είναι όλα εμφωλευμένα. Είναι εντολές Αν μέσα σε άλλες Αν, κ.ο.κ. Και μάλιστα αν κρατήσουμε και τα περιττά begin end του αρχικού pascal κώδικα έχουμε τον ψευδοκώδικα (που θεωρώ ότι δεν έρχεται σε αντίθεση με τίποτα από αυτά που λέει το βιβλίο):

ΠαράθεσηΕμφάνισε "ΔΩΣΕ ΤΕΛΙΚΟ ΜΕΣΟ ΟΡΟ"
Διάβασε ΜΟ
Αν ((MO>=0) και (mo<=9.5))
Τότε
  Αρχή
      Εμφάνισε "Ο μαθητής απορρίπτεται"
  Τέλος
Αλλιώς Αν ((MO>9.5) και (MO<=13))
Τότε
   Αρχή
       Εμφάνισε "Σχεδόν καλά"
   Τέλος
Αλλιώς Αν ((MO>13) και (MO<=16))
Τότε
   Αρχή
       Εμφάνισε  "Kαλά"
   Τέλος
Αλλιώς Αν ((MO>16) και (MO<=18))
Τότε
   Αρχή
       Εμφάνισε"Πολύ καλά"
   Τέλος
Αλλιώς Αν ((MO>18) και (MO<=20))
Τότε
    Αρχή
       Εμφάνισε "ʼριστα"
    Τέλος
Αλλιώς
    Αρχή
        Εμφάνισε "ΑΚΥΡΟΣ ΒΑΘΜΟΣ"
    Τέλος

Έδωσα 4 λύσεις, πλήρως συμβατές με το βιβλίο... Είναι όμως όλες με εμφωλευμένα Αν! Ας ξεχάσουμε λοιπόν το Τέλος_αν (και τα Τέλος_επανάληψης, Τέλος_επιλογών, ...)!!!  :D

Και τελικά πιστεύω ότι για να μετατρέψουμε pascal σε ψευδογλώσσα: απλά μεταφράζουμε τις λέξεις!!!!!! Αυτό έκαναν και οι συγγραφείς του βιβλίου - είναι φως φανάρι! Και για να μην τους αδικούμε, αυτό έκαναν και οι συγγραφείς της ΑΕΠΠ αλλά αυτοί βασίστηκαν σε άλλη γλώσσα (!;). :)