Αποστολέας Θέμα: Pascal  (Αναγνώστηκε 35452 φορές)

iliasthes

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 790
Απ: Pascal
« Απάντηση #45 στις: 08 Φεβ 2009, 02:07:19 μμ »
Στη σελίδα 100 μάλλον μία μεταβλητή ξεχάστηκε στην μετάφραση. Στο παράδειγμα για την while χρησιμοποιεί την μεταβλητή metritis για αρχικοποίηση και στη συνέχεια σαν απαριθμητή, αλλά στην συνθήκη ελέγχου χρησιμοποιεί την μεταβλητή count.  :laugh:

xryka

  • Βετεράνος
  • ****
  • Μηνύματα: 66
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Pascal
« Απάντηση #46 στις: 08 Φεβ 2009, 04:24:28 μμ »
Ηθελα να ρωτήσω τις συναρτησεις του παραρτήματος τισ έχετε κάνει;;;
εγω αρχισα να τουσ δειχνω κάποιες και να τις χρησιμοποιούμε αλλα όχι όλες...αν έχεις κανεις ασκησεις με αυτές ...καλοδεχούμενες   ;)

xryka

  • Βετεράνος
  • ****
  • Μηνύματα: 66
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Pascal
« Απάντηση #47 στις: 09 Φεβ 2009, 05:01:29 μμ »
Μήπως έχει ετοιμάσει κανείς θεωρητικές ασκησείς; π.χ σωστό-λάθος, πολλαπλής επιλογής,αποτελέσματα εκτέλεσης προγραμμάτων...κ.ά;

iliasthes

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 790
Απ: Pascal
« Απάντηση #48 στις: 11 Φεβ 2009, 09:44:54 μμ »
Καλησπέρα, συναδέλφισσα για ποιο κεφάλαιο ρωτάς;

Ανεβάζω ένα τεστάκι στο κεφ. 10 και τις λύσεις του, καθώς και ένα εισαγωγικό μάθημα για την εντολή while
« Τελευταία τροποποίηση: 12 Φεβ 2009, 04:34:50 μμ από iliasthes »

iliasthes

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 790
Απ: Pascal
« Απάντηση #49 στις: 15 Φεβ 2009, 04:59:17 μμ »
Στην ερώτηση 8 στην σελίδα 106 ο συγγραφέας χρησιμοποιεί την μεταβλητή arithmos ως μετρητή με βήμα το 2 και όταν ο arithmos γίνεται μεγαλύτερος από 100 η λογική έκφραση γίνεται ψευδής. Ο συγγραφέας όμως δεν μας δίνει αρχική τιμή για την μεταβλητή arithmos και μας ρωτάει πόσες επαναλήψεις θα υπάρξουν.

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

xryka

  • Βετεράνος
  • ****
  • Μηνύματα: 66
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Pascal
« Απάντηση #50 στις: 16 Φεβ 2009, 02:35:18 μμ »
Θεωρώ οτι και τα δύο είναι σωστά....στη προκειμένη περίπτωση μάλλον ο συγγραφέας εκανε λάθος ή το φαγε στο copy-paste...
το θέμα είναι οτι αν τους ρωτήσουν κάτι τέτοιο στισ εξετάσεις θα πρέπει να απαντήσουν ότι δε γνωρίζουμε γιατι σε αυτή τη περίπτωση δίνεται τυχαία αρχική τιμή στη μεταβλητή...
Δε μπορουμε να πούμε όμως το μάθημα έχει πολυ ενδιαφέρον....ασκούμε μαντικές ικανότητες
κανονικα έπρεπε να τα κλείσουμε τα σχολεία με τόση προχειρότητα πυο τα αντιμετωπίζουν....

nefeli

  • Θαμώνας
  • ***
  • Μηνύματα: 45
Απ: Pascal
« Απάντηση #51 στις: 16 Φεβ 2009, 08:04:17 μμ »
Aν και θεωρητικά είναι σωστό να λέμε ότι μια μεταβλητή αν δεν αρχικοποιηθεί μπορεί να πάρει τυχαία τιμή (λόγω των καταχωρητών που αποθηκεύουν τα δυαδικά ψηφία) στην πράξη οι σύγχρονοι compilers, αρχικοποιούν τις αριθμητικές μεταβλητές στην τιμή 0 ακόμη και αν δεν υπάρχει αντίστοιχη εντολή εκχώρησης. Εγώ την έλυσα στην τάξη, βάζοντας την arithmos:=0. Αλλάζοντας μέσα στην if τη συνθήκη με την ισότητα (arithmos>=100) τους έδειξα με πίνακα τιμών ότι γίνονται 50 επαναλήψεις. Το κάναμε και στο εργαστήριο με τα κατάλληλα writeln. Τους είπα επίσης ότι είναι ακριβώς το ίδιο με
while arithmos<100 do arithmos:=arithmos+2;
ώστε να περάσουν πιο εύκολα στη for - αλλά εκεί ζορίστηκαν. Οχι πως τα υπόλοιπα τα κατάλαβαν και τέλεια... 

iliasthes

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 790
Απ: Pascal
« Απάντηση #52 στις: 16 Φεβ 2009, 08:54:38 μμ »
Ευχαριστώ για τις απαντήσεις σας, αυτό που κατάλαβα είναι πως πρέπει να παρακαλάω να μην προσέξει κάποιος από την επιτροπή εξετάσεων το λάθος και νομίζει πως ο συγγραφέας το έβαλε επίτηδες σαν ερώτηση παγίδα. ;D ;D

Παρεπιπτόντως προσωπικά το αποκλείω και τα τρία θέματα των ασκήσεων που θα μπούνε να είναι ανάπτυξη αλγορίθμων ή προγραμμάτων από την αρχή, αλλά πιστεύω πως τουλάχιστον το ένα θέμα θα είναι του στυλ: α) ποια θα είναι τα αποτελέσματα του παρακάτω προγράμματος/τμήμα προγράμματος, β)ποια θα είναι η τιμή της/των παρακάτω μεταβλητής/τών μετά την εκτέλεση των παρακάτω εντολών γ) μετατροπές από if σε case και το αντίστροφο, αλλά και από repeat σε while ή for και το αντίστροφο. Επίσης έχω διαπιστώσει πως είναι πολύ δύσκολο για τα παιδιά να λύσουνε κατ' ευθείαν ασκήσεις μόνοι τους και έτσι το πάω βήμα βήμα. Αρχικά δίνω τις λύσεις με κενά ή με λαθάκια και τα παιδιά τα διορθώνουνε. Στην συνέχεια πρέπει να βρίσκουνε, αριθμό επαναλήψεων, τιμές μεταβλητών και τέλος μετατροπές (if σε case κλπ). Μόνο 1-2 μαθητές έχουν καταφέρει να λύσουνε τελείως μόνοι τους ασκήσεις.

Έχει χρησιμοποιήσει κάποιος κάποια άλλη μέθοδο και είδε θετικά αποτελέσματα;

marianad

  • Θαμώνας
  • ***
  • Μηνύματα: 40
Απ: Pascal
« Απάντηση #53 στις: 17 Φεβ 2009, 12:29:28 μμ »
Παιδιά θέλω τη βοήθειά σας σε δύο πραγματάκια :-\:
1. Αν ένα πρόγραμμα ζητάει να δέχεται ως είσοδο έναν πραγματικό αριθμό και να επιστρέφει το ακέραιο μέρος του, μπορούμε να πούμε akeraio_meros:=arithmos div 1, ή το div παίρνει μόνο ακέραιους;
2. Τι λύση προτείνετε για το εξής, γιατί αυτή που έχω σκεφτεί δεν μου κάθεται πολύ καλά: Να γραφεί πρόγραμμα που να δέχεται έναν πραγματικό αριθμό και το πλήθος των δεκαδικών στο οποίο θέλουμε να τον στρογγυλοποιήσουμε και να μας δίνει τον αριθμό στρογγυλοποιημένο. π.χ. 2,3456754 και 3 και να δίνει αποτέλεσμα 2,346.

Και για τα δύο δεν πρέπει να χρησιμοποιήσουμε έτοιμες συναρτήσεις της Pascal. Ευχαριστώ!

xryka

  • Βετεράνος
  • ****
  • Μηνύματα: 66
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Pascal
« Απάντηση #54 στις: 17 Φεβ 2009, 05:10:10 μμ »
Οι έτοιμες συναρτήσεις είναι εκτός ύλης;;;Δε μπορούν να τις χρησιμοποιήσουν δηλαδή; Την άσκηση 6 σελ 89 την κάνατε με πολλές div ;;


alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 4856
    • alkisg@im.sch.gr
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Pascal
« Απάντηση #55 στις: 17 Φεβ 2009, 05:11:31 μμ »
Το div δέχεται μόνο ακεραίους.

Δεν μπορώ να φανταστώ γιατί κάποιος να βάζει άσκηση να βρεθεί το ακέραιο μέρος ενός πραγματικού χωρίς να χρησιμοποιηθεί κάποια από τις έτοιμες συναρτήσεις της γλώσσας (Pascal κτλ). Δηλαδή κάτι που βγαίνει σε O[1] σε επίπεδο μηχανής, να ζητάνε αλγόριθμο με O[N], όπου Ν το πλήθος των δυαδικών ψηφίων του ακεραίου.
Ακόμα και με casting θα έβγαινε σε Ο[1], δεν χρειάζεται καν συνάρτηση: x := integer(r);

Τέλος πάντων, εφόσον δεν μπορεί να χρησιμοποιηθεί συνάρτηση, μπορεί να γίνει δυαδική αναζήτηση στο διάστημα [-MAXINT-1..MAXINT], ώστε να βρεθεί ο πλησιέστερος ακέραιος. Έτσι για τους συνηθισμένους ακεραίους 32bit χρειάζονται 32 βήματα.

Αντίστοιχα για 3 (ή γενικότερα M) δεκαδικά ψηφία θα μπορούσε να γίνει δυαδική αναζήτηση στο [-MAXREAL..MAXREAL], με συνθήκη τερματισμού (στο περίπου) την Abs(στρογγυλεμένος_αριθμός - αρχικός_αριθμός) <= 10^-M, όπου φυσικά η Abs και η δύναμη υλοποιούνται εύκολα με μία if και μία for αντίστοιχα (αφού απαγορεύονται οι έτοιμες συναρτήσεις).

Πολύ "βαριά" μου ακούγονται για σχολείο... :)

Υ.Γ. δεν κάνω το μάθημα, δεν έχω δει καν το βιβλίο.

marianad

  • Θαμώνας
  • ***
  • Μηνύματα: 40
Απ: Pascal
« Απάντηση #56 στις: 17 Φεβ 2009, 05:26:46 μμ »
Το φαντάστηκα ότι δεν μπορούσε να γίνει με div, αλλά μου φάνηκαν παρανοϊκά τα άλλα σενάρια!
Τις έβαλε καθηγητής σε ιδιωτικό ΕΠΑΛ, σε ένα τμήμα που θα δώσουν πανελλήνιες το πολύ 7 παιδιά...
Το μόνο που μπορεί να πετύχει είναι να αποθαρρύνει και τους λίγους από αυτούς που το παλεύουν >:(...δεν μπορώ να καταλάβω τι σκέφτονται τέτοιοι άνθρωποι.

Οι έτοιμες συναρτήσεις είναι εκτός ύλης;;;Δε μπορούν να τις χρησιμοποιήσουν δηλαδή; Την άσκηση 6 σελ 89 την κάνατε με πολλές div ;;

Δεν είναι εκτός ύλης οι έτοιμες συναρτήσεις, απλά ήταν στην εκφώνηση των ασκήσεων.
Ναι, την άσκηση την έκανα με πολλές div.

nefeli

  • Θαμώνας
  • ***
  • Μηνύματα: 45
Απ: Pascal
« Απάντηση #57 στις: 17 Φεβ 2009, 05:53:07 μμ »
Δεν κατάλαβα ακριβώς το θέμα της στρογγυλοποίησης που λες ότι ζητήθηκε σε ιδιωτικό ΕΠΑΛ (εγώ ούτε καν ήξερα ότι υπάρχουν και ιδιωτικά ΕΠΑΛ). Στην Pascal μπορεί να γίνει στρογγυλοποίηση ενός αριθμού κατά την εμφάνισή του στην οθόνη μέσω της μορφοποιημένης εκτύπωσης (σελ. 86).
Αν δηλαδή γράψω write(3,2587:8:3) στην οθόνη θα εμφανισθεί ο αριθμός 3,259, δηλ. στρογγυλοποίηση στο 3 δεκαδικό. Μήπως ζητήθηκε κάτι τέτοιο;

Την άσκηση 6,σελ.89 τη λύνω με div. Δηλαδή απομονώνω τα ψηφία και φτιάχνω τον ανάστροφο αριθμό με το ψηφίο των μονάδων στη θέση των εκατοντάδων κ.ο.κ.΄Έχει σκεφθεί κάποιος άλλη λύση με έτοιμη συνάρτηση;

nefeli

  • Θαμώνας
  • ***
  • Μηνύματα: 45
Απ: Pascal
« Απάντηση #58 στις: 17 Φεβ 2009, 07:39:28 μμ »
Τώρα διάβασα πιο προσεκτικά το μήνυμα της marianad.
Το θέμα της στρογγυλοποίησης το βρίσκω απλό και το έχω ζητήσει και εγώ στην τάξη. Έτσι για να αποκαταστήσουμε και το όνομα του συναδέλφου του ιδιωτικού.
Mε τη μορφοποιημένη εκτύπωση που έλεγα και πριν, λύνεται εύκολα ως εξής:

read(x); {o πραγματικός αριθμός}
read (m); {ο ακέραιος που δηλώνει τη θέση στρογγυλοποίησης}
write (x:10:m);

Το πρόγραμμα με την εύρεση του ακέραιου μέρους πραγματικού αριθμού το βρίσκω όντως δύσκολο χωρίς χρήση συνάρτησης. Υπάρχουν διάφοροι αλγόριθμοί (γενικά βασίζονται σε επαναλήψεις της μορφής while x-i>1 do i:=i+1; όπου το ακέραιο μέρος του πραγματικού x τελικά υπολογίζεται στη μεταβλητή i). Αποκλείεται΄-κατά τη γνώμη μου- τέτοιο θέμα γιατί θα τους πάρουν με τις ντομάτες. Mήπως ο συνάδελφος ήθελε απλώς εμφάνιση του αριθμού με 0 δεκαδικά ψηφία; Έτσι βέβαια ο 124,32 θα έδινε το σωστό -124- αλλά ο 124,72 θα έδινε το λάθος 125. Θα το ξανασκεφθώ και θα επανέλθω...






Παιδιά θέλω τη βοήθειά σας σε δύο πραγματάκια :-\:
1. Αν ένα πρόγραμμα ζητάει να δέχεται ως είσοδο έναν πραγματικό αριθμό και να επιστρέφει το ακέραιο μέρος του, μπορούμε να πούμε akeraio_meros:=arithmos div 1, ή το div παίρνει μόνο ακέραιους;
2. Τι λύση προτείνετε για το εξής, γιατί αυτή που έχω σκεφτεί δεν μου κάθεται πολύ καλά: Να γραφεί πρόγραμμα που να δέχεται έναν πραγματικό αριθμό και το πλήθος των δεκαδικών στο οποίο θέλουμε να τον στρογγυλοποιήσουμε και να μας δίνει τον αριθμό στρογγυλοποιημένο. π.χ. 2,3456754 και 3 και να δίνει αποτέλεσμα 2,346.

Και για τα δύο δεν πρέπει να χρησιμοποιήσουμε έτοιμες συναρτήσεις της Pascal. Ευχαριστώ!

marianad

  • Θαμώνας
  • ***
  • Μηνύματα: 40
Απ: Pascal
« Απάντηση #59 στις: 17 Φεβ 2009, 09:39:15 μμ »
sorry λάθος μου, αναφέρω προγράμματα, ενώ και στις δύο περιπτώσεις ζητάει συναρτήσεις: akeraio_meros(x) και str(x,n).
Άρα δεν είναι θέμα μορφοποιημένης εκτύπωσης...