Αποστολέας Θέμα: Η ύψωση σε δύναμη δίνει πραγματικό αριθμό;  (Αναγνώστηκε 3711 φορές)

Wizard

  • Επισκέπτης
Γιατί ο διερμηνευτής θεωρεί ότι η ύψωση σε δύναμη δίνει πραγματικό αριθμό; π.χ. γιατί το α <- β^γ δεν θεωρείται έγκυρο αν η α είναι ακέραια, ενώ και οι β,γ είναι ακέραιες;

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 4592
    • alkisg@im.sch.gr
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Η ύψωση σε δύναμη δίνει πραγματικό αριθμό;
« Απάντηση #1 στις: 27 Σεπ 2008, 07:14:44 μμ »
Από τη βοήθεια, http://alkisg.mysch.gr/ΓΛΩΣΣΑ/Τελεστές/:

^ (δύναμη): ισχύει για τους ακέραιους και τους πραγματικούς. Το αποτέλεσμα είναι συνήθως πραγματικός αριθμός, εκτός αν ο εκθέτης είναι θετικός ακέραιος σταθερής αποτίμησης. Για παράδειγμα το 2^2 είναι ακέραιος, ενώ το 2^-2 πραγματικός (= 0.25). Έτσι στην γενική περίπτωση το 2^ι εκλαμβάνεται σαν πραγματικός αριθμός.

Wizard

  • Επισκέπτης
Απ: Η ύψωση σε δύναμη δίνει πραγματικό αριθμό;
« Απάντηση #2 στις: 27 Σεπ 2008, 07:31:43 μμ »
α, μάλιστα  :) Δεν σκέφτηκα να κοιτάξω τη βοήθεια  :-[

Wizard

  • Επισκέπτης
Απ: Η ύψωση σε δύναμη δίνει πραγματικό αριθμό;
« Απάντηση #3 στις: 28 Σεπ 2008, 03:17:05 μμ »
Επανέρχομαι στο θέμα γιατί στις επαναληπτικές ημερησίου 2004, θέμα 2 (αριθμοί Μέρσεν), υπάρχουν οι εντολές:

Κώδικας: [Επιλογή]
D <- (2^A) – 1
E <- B MOD D

Μπορούμε να θεωρήσουμε ότι γενικά υπάρχει "λάθος" στον αλγόριθμο (αν π.χ. ο χρήστης δώσει για Α την τιμή  -2);

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 4592
    • alkisg@im.sch.gr
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Η ύψωση σε δύναμη δίνει πραγματικό αριθμό;
« Απάντηση #4 στις: 28 Σεπ 2008, 03:55:33 μμ »
Το Α=-2 απαγορεύεται από τον ορισμό των αριθμών Μέρσεν, απλά δεν ασχολήθηκαν με έλεγχο δεδομένων εισόδου.
Πέρα από αυτήν την παράλειψη, δεν μπορούμε να θεωρήσουμε ότι ο αλγόριθμος είναι λάθος, γιατί είναι ψευδογλώσσα και όχι πρόγραμμα, και στην ψευδογλώσσα δεν υπάρχουν τύποι δεδομένων.
Εντωμεταξύ, όλοι οι αριθμοί που μπαίνουν σαν εκθέτες είναι θετικοί (το 2^Α και το 2 ^ (C – 1)). Επομένως αν ο αλγόριθμος υλοποιούνταν σε κάποια άλλη ΓΛΩΣΣΑ προγραμματισμού, που θα είχε τύπο δεδομένων ΘΕΤΙΚΟΙ: Α, C, θα μπορούσαμε να θεωρήσουμε ότι όλες οι μεταβλητές του αλγορίθμου είναι ΘΕΤΙΚΕΣ, και επομένως όλες οι δυνάμεις επίσης θετικοί ακέραιοι.

Το ίδιο θα μπορούσε να γίνει και στη ΓΛΩΣΣΑ με τη συνάρτηση "ακέραιο μέρος" που ουσιαστικά θα έκανε απλά type casting:
D ← Α_Μ((2 ^ A) – 1)

Πάντως στην ψευδογλώσσα δεν ασχολούμαστε ούτε με τύπους δεδομένων ούτε με τις μετατροπές μεταξύ τους, οπότε τα πράγματα είναι πιο χαλαρά. Αν δεν κάνω λάθος έχουν και παράδειγμα με
Α[N/2] <- κάτι
όπου βάζουν πραγματικό αριθμό σαν δείκτη πίνακα, απλά επειδή "τυχαίνει" το Ν να είναι πάντα άρτιο στη συγκεκριμένη γραμμή και επομένως το Ν/2 πάντα ακέραιος.

happiness

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 124
Απ: Η ύψωση σε δύναμη δίνει πραγματικό αριθμό;
« Απάντηση #5 στις: 24 Οκτ 2018, 01:44:43 μμ »
Τι γίνεται όταν γράφουμε το ίδιο πρόγραμμα σε ΓΛΩΣΣΑ; Μια άσκηση που έχει
Κώδικας: [Επιλογή]
α<-β^γμε όλες τις μεταβλητές ακέραιες, είναι λάθος;

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 4592
    • alkisg@im.sch.gr
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Η ύψωση σε δύναμη δίνει πραγματικό αριθμό;
« Απάντηση #6 στις: 24 Οκτ 2018, 01:47:53 μμ »
Είναι συντακτικό λάθος.
http://alkisg.mysch.gr/ΓΛΩΣΣΑ/Τελεστές/: "Το αποτέλεσμα είναι συνήθως πραγματικός αριθμός, εκτός αν ο εκθέτης είναι θετικός ακέραιος σταθερής αποτίμησης. Για παράδειγμα το 2^2 είναι ακέραιος, ενώ το 2^-2 πραγματικός (= 0.25). Έτσι στην γενική περίπτωση το 2^ι εκλαμβάνεται σαν πραγματικός αριθμός."

happiness

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 124
Απ: Η ύψωση σε δύναμη δίνει πραγματικό αριθμό;
« Απάντηση #7 στις: 27 Οκτ 2018, 04:47:49 μμ »
Άρα είναι λάθος να το χρησιμοποιούμε στις ασκήσεις;