Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Μήνυμα ξεκίνησε από: Scubakoumpa στις 07 Μαρ 2025, 03:55:49 ΠΜ

Τίτλος: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Scubakoumpa στις 07 Μαρ 2025, 03:55:49 ΠΜ
Ως ενας μαθητης 3ης λυκειου, παω φροντηστηριο (ασυνήθιστο το ξερω), και ετσι λοιπον σε ενα μαθημα ο
καθηγητης μου αποφασισε να τρολαρει λιγο το τμημα μου στο κεφαλαιο τον υποπρογραμματων
οταν μας ρωτησε πως θα φτιαχναμε την συναρτηση Α_Μ(χ) ΧΩΡΙΣ να χρησιμοποιουμε την ετοιμη στην συναρτηση.
Φυσικα του ειπαμε οτι ειναι απλο και αρχισαμε να του λεμε προφορικα μια απαντηση της μορφης

ΣΥΝΑΡΤΗΣΗ ΑΜ(Χ):ΑΚΕΡΑΙΑ
-------τμημα δηλωσεων-----
ΑΡΧΗ
ΑΝ Χ=Α_Μ(Χ) ΤΟΤΕ
....οπα
 
εκει καταλαβαμε(πολυ γρηγορα μαλιστα)
οτι δεν μπορουσαμε να σκεφτουμε κανενα τροπο να την φτιαξουμε και μας την εσπασε γιατι
φυσικα και αποφασισε ο καθηγητης να μας τρολαρει στο ΤΕΛΟΣ του μαθηματος.
Ετσι λοιπον σκεφτομουν πως θα γινοταν η συναρτηση μεχρι να φτασω 
σπιτι αλλα δεν ειχα την ευκαιρια να δοκιμασω να φτιαξω ενα προγραμμα με την λειτουργια της Α_Μ(Χ) 
(δεν ειχα χρονο) οποτε το ξεχασα για λιγες μερες.
Μια μερα ξαφνικα το βραδυ μου ξαναεπιστρεφει η απορια (εψαχνα δικαιολογια για να μην διαβασω αλλο)
και αρχισα να το ψαχνω πως γινεται η Α_Μ(Χ) στο παρασκινιο, και βρηκα διαφορες απαντησεις π.χ 
στην Pascal ενας τροπος ειναι Χ div 1 (δεν γινεται στην γλωσσα εφοσον χ πραγματικος αριθμος)
σε διαφορες αλλες γλωσσες εχει την floor(x) και αλλες διαφορες απαντησεις που δεν μπουρουσα
 να υλοιποιησω στην γλωσσα η δεν ηταν αυτο που εψαχνα.
Μετα απο αρκετο ψαξιμο ανακαλυπτω την λυση με bit manipulation που μπορω να δω καπως τραβηγμενα 
μια λυση, και ετσι αρχιζω να φτιαχνω ενα προγραμμα οπου  να μπορει να χωρισει το ακεραιο και δεκαδικο μερος.
Η λογικη του προγραμματος ειναι ως εξης:
 δεχεται εναν πραγματικο αριθμο και τον μετατρεπει σε float16 (σε χαρακτηρες)
(16 μπιτς οχι περισσοτερα γιατι δεν ηθελα να βγει μεγαλο)
 1 μπιτ για προσημο, νομιζω 5-6 για ακεραιο μερος και τα υπολοιπα για το δεκαδικο 
και απλα τα bit που ειναι υπευθυνα για το δεκαδικο μερος τα αποθηκευει σε μια αλλη μεταβλητη
και τα εκχωρει στην αρχικη ως μηδεν (δεν το εχω υλοποιησει)
το προγραμμα ειναι ως εξης:
Σημειωση: για να δουλεψει το προγραμμα πρεπει να ενεργοποιηθει η συνενωση αλφαριθμητικων(οπως γινεται στις εικονες)
Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ ΑκεραιοΜερος16μπιτ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: μπιτ, ι, ΑΜ, ξ, τεμπ
  ΠΡΑΓΜΑΤΙΚΕΣ: χ, υπ, αθρ
  ΧΑΡΑΚΤΗΡΕΣ: μπιτχαρ
ΑΡΧΗ
  ΔΙΑΒΑΣΕ χ
  αθρ <- 0
  μπιτχαρ <- ''      ! 015sign x14x13x12x11x10x9exponent 080706050403020100float
  ΑΝ χ < 64 ΚΑΙ χ > -64 ΤΟΤΕ                                               !οριο
    ΑΝ χ < 0 ΤΟΤΕ                                                       !προσημο
      χ <- χ*-1
      μπιτχαρ <- μπιτχαρ + '1'
    ΑΛΛΙΩΣ
      μπιτχαρ <- μπιτχαρ + '0'
    ΤΕΛΟΣ_ΑΝ
    ΓΙΑ ι ΑΠΟ 5 ΜΕΧΡΙ 0 ΜΕ_ΒΗΜΑ -1
      υπ <- 2^ι                                                   !ακεραιο μερος
      ΑΝ χ >= 2^ι ΚΑΙ ΟΧΙ(αθρ <= χ ΚΑΙ αθρ > χ - 1) ΤΟΤΕ !Λογικο λαθος πχ:οταν βαζεις 29 ως εισοδο σου δινει 0011111 και οχι 0011101
        αθρ <- 2^ι + αθρ
        μπιτχαρ <- μπιτχαρ + '1'
      ΑΛΛΙΩΣ
        μπιτχαρ <- μπιτχαρ + '0'
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
                                                                 !δεκαδικο μερος δεν το εχω φτιαξει ακομα
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'εκτος οριου προγραμματος'
  ΤΕΛΟΣ_ΑΝ
  ΓΡΑΨΕ μπιτχαρ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
 ΔΕΝ το εχω τελειωσει γιατι μου πηρε πολυ ωρα να το φτασω σε αυτο σημειο και μετα απλα το ξεχασα.
Το προγραμμα εχει μερικα λογικα λαθη  και δεν εχω κανει το κομματι που μετατρεπει τους χαρακτηρες πισω σε ακεραιο 
αριθμο αλλα δουλευει (δεν ξερω πως) μεχρι ενα σημειο.Απλα ηθελα να ρωτησω Αμα γινεται κατι παρομοιο στο παρασκηνιο για την συναρτηση Α_Μ(χ) η πως γινεται οντως.Επισης εχω μια απορια για ενα σφαλμα που μου εβγαλε
οσο προσπαθουσα να υλοποιησω το προγραμμα.

Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ  τεστ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:χ
ΑΡΧΗ
ΔΙΑΒΑΣΕ χ
χ<-2^χ
ΓΡΑΨΕ χ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
  
αυτο το κομματι κωδικα πεταει σφαλμα οτι δεν γινεται η αναθεση τιμης γιατι τα ορισματα ειναι διαφορετικου τυπου δεδομενου (εικονα)
«χ»: ακέραια μεταβλητή
«2^χ»: πραγματική έκφραση.
Μπορει καποιος να εξηγησει το σφαλμα; γιατι δεν καταλαβαινω το προβλημα εφοσον δεν καλω καμια διαδικασια για να αναφερθουν ορισματα.


Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: George Eco στις 07 Μαρ 2025, 07:03:06 ΠΜ
Για το σφάλμα: Υψωση σε δύναμη επιστρέφει πραγματικό. 2 ^ (1/2) είναι σα να λες ρίζα 2. Ο τελεστής δε νοιαζεται τι τελεστέους έχει αλλά τι τελεστέους ΜΠΟΡΕΙ να έχει, οπότε επιστρέφει πάντα πραγματικό τύπο.



Έχεις εναν Χ πραγματικό κι έναν χακ (χ ακέραιο)
ΔΙΑΒΑΣΕ χ
χακ <- 0
ΟΣΟ χ >= 1.0 ΕΠΑΝΑΛΑΒΕ
  χ <- χ - 1.0
  χακ <- χ+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


Μόλις έκανες χ DIV 1 προσπερνώνωτας το πρόβλημα του πραγματικού τύπου του χ. Παίρνεις τον χακ και παίζεις μπαλίτσα.

Ωραίος ο Καθηγητής σας, ωραίος κι εσύ! Μη βασανίζεσαι άλλο.


Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: alkisg στις 07 Μαρ 2025, 11:00:29 ΠΜ
Από https://alkisg.mysch.gr/ΓΛΩΣΣΑ/Τελεστές/:

^ (δύναμη): ισχύει για τους ακέραιους και τους πραγματικούς. Το αποτέλεσμα είναι συνήθως πραγματικός αριθμός, εκτός αν ο εκθέτης είναι θετικός ακέραιος σταθερής αποτίμησης. Για παράδειγμα το 2^2 είναι ακέραιος, ενώ το 2^-2 πραγματικός (= 0.25). Έτσι στην γενική περίπτωση το 2^ι εκλαμβάνεται σαν πραγματικός αριθμός.
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: gpapargi στις 07 Μαρ 2025, 01:37:32 ΜΜ
Αν δέχεσαι σαν είσοδο πραγματικό, μια ιδέα είναι να βρεις μεταξύ ποιων 2 διαδοχικών ακεραίων είναι ο δοσμένος πραγματικός. Αν ξέρεις τα όρια των αριθμών μπορείς να κάνεις μια δυαδική αναζήτηση και να βρεις άνω και κάτω ακέραιο φράγμα με διαφορά 1.

Αν βέβαια επιτρέπεται να πάρεις σαν είσοδο ένα ένα τα ψηφία σε πίνακα χαρακτήρων, αυτό είναι εύκολο αλλά μάλλον δεν επιτρέπεται.
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: it_new στις 09 Μαρ 2025, 10:26:42 ΠΜ

Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ Άσκηση

ΜΕΤΑΒΛΗΤΕΣ

  ΠΡΑΓΜΑΤΙΚΕΣ: χ

  ΑΚΕΡΑΙΕΣ: π

ΑΡΧΗ

  ΔΙΑΒΑΣΕ χ

  ΓΡΑΨΕ Ακέραιο_Μέρος(χ) 



ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ Ακέραιο_Μέρος(χ): ΑΚΕΡΑΙΑ

ΜΕΤΑΒΛΗΤΕΣ

  ΠΡΑΓΜΑΤΙΚΕΣ: χ

  ΑΚΕΡΑΙΕΣ: π

ΑΡΧΗ

  π <- 0

  ΑΝ χ > 0 ΤΟΤΕ

    ΟΣΟ χ >= 1 ΕΠΑΝΑΛΑΒΕ

      χ <- χ - 1

      π <- π + 1

    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

    Ακέραιο_Μέρος <- π

  ΑΛΛΙΩΣ_ΑΝ χ < 0 ΤΟΤΕ

    ΟΣΟ χ < -1 ΕΠΑΝΑΛΑΒΕ

      χ <- χ + 1

      π <- π + 1

    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

    Ακέραιο_Μέρος <- -(π + 1) 

  ΑΛΛΙΩΣ

    Ακέραιο_Μέρος <- 0

  ΤΕΛΟΣ_ΑΝ



ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: gpapargi στις 09 Μαρ 2025, 11:39:53 ΠΜ
Μπορείς και να ξεκινήσεις από το 0 και να ανεβαίνεις (ή να κατεβαίνεις) με αυξανόμενη δύναμη του 2 (2^ν με ν=0,1,2... όπου ν ο αριθμός επανάληψης) μέχρι να ξεπεράσεις τον δοσμένο αριθμό. Μόλις ξεπεράσεις κάνεις δυαδική αναζήτηση μεταξύ των 2 τελευταίων ορίων. Έχει λογαριθμική πολυπλοκότητα ως προς τον αριθμό εισόδου (ή γραμμική ως προς το μέγεθος εισόδου δηλ το πλήθος των ψηφίων εισόδου).
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 09 Μαρ 2025, 11:44:54 ΠΜ
Αν Χ ο πραγματικός τότε ο Χ DIv 1 δίνει τον ακέραιο.
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: gpapargi στις 09 Μαρ 2025, 12:04:44 ΜΜ
Απαγορεύεται το div σε πραγματικούς. Δεν είναι μόνο συντακτικό το θέμα. Το div σημαίνει ακέραια διαίρεση, δηλαδή διαίρεση στο σύνολο των ακεραίων. Δεν υπάρχουν δεκαδικοί, ούτε στο διαιρέτη, ούτε στο διαιρετέο, ούτε στο αποτέλεσμα. Παίρνεις πηλίκο και υπόλοιπο που είναι ακέραιοι. Το σύμπαν σου είναι οι ακέραιοι. 
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 09 Μαρ 2025, 12:51:21 ΜΜ
Μεγάλη βλακεια αυτό. Ακέραια διαίρεση θα έπρεπε να σημαίνει ποσες φορές χωράει ο διαιρέτης στον διαιρετέο. Αν το div είναι τελεστής μόνο για ακέραιους τότε δεν θα έπρεπε να είχε άλλο αναγμωριστικο, από το / αφού υποχρεωτικά τα δύο ορίσματα είναι ακέραιοι.
Γενικά η ΓΛΩΣΣΑ φτιαχτηκε με πολλά λάθη.

Ωραία ας φτιαχτεί μια συνάρτηση που θα δίνει το πόσες φορές χωράει ο Πραγματικός Υ στον Πραγματικό Χ. 
Επίσης άλλη μια που να δίνει το υπόλοιπο.
 
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: George Eco στις 09 Μαρ 2025, 07:39:07 ΜΜ
Ο κώδικας του it_new είναι ο πιο πλήρης.
Αν απ' αυτόν αφαιρέσεις το αποτέλεσμα επί το διαιρέτη από το διαιρετέο, τότε έχεις και το mod.
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 10 Μαρ 2025, 06:55:48 ΠΜ
Δεν βλέπω στο κώδικα να κάνει κάτι για τα πρόσημα.
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: gpapargi στις 10 Μαρ 2025, 03:12:45 ΜΜ
Παράθεση από: Foto στις 09 Μαρ 2025, 12:51:21 ΜΜΜεγάλη βλακεια αυτό. Ακέραια διαίρεση θα έπρεπε να σημαίνει ποσες φορές χωράει ο διαιρέτης στον διαιρετέο. Αν το div είναι τελεστής μόνο για ακέραιους τότε δεν θα έπρεπε να είχε άλλο αναγμωριστικο, από το / αφού υποχρεωτικά τα δύο ορίσματα είναι ακέραιοι.
Γενικά η ΓΛΩΣΣΑ φτιαχτηκε με πολλά λάθη.

Ωραία ας φτιαχτεί μια συνάρτηση που θα δίνει το πόσες φορές χωράει ο Πραγματικός Υ στον Πραγματικό Χ. 
Επίσης άλλη μια που να δίνει το υπόλοιπο.
Η ακέραια (ευκλείδεια) διαίρεση ορίστηκε έτσι από την αρχαιότητα για τις ανάγκες μοιρασιάς ακεραίων και παραμένει έτσι σήμερα στο πλαίσιο της θεωρίας αριθμών. Διαιρετέος , διαιρέτης, πηλίκο και υπόλοιπο  είναι ακέραιοι. Υπάρχει και η διαίρεση στο R που διαιρετέος, διαιρέτης και αποτέλεσμα (πηλίκο) είναι πραγματικοί, ενώ το υπόλοιπο δεν υπάρχει πια γιατί δεν έχει νόημα.

Αυτό που προτείνεις εσύ είναι μια παραλλαγή στην οποία  το πηλίκο είναι ακέραιο ενώ διαιρέτης, διαιρετέος και υπόλοιπο είναι πραγματικοί. Αυτό ουσιαστικά σημαίνει το να βρούμε πόσες φορές χωράει ο χ στον ψ και τι περισσεύει. Δεν υπάρχει κάτι τέτοιο ορισμένο αλλά το κάνουμε εύκολα με Α_Μ(ψ/χ). Όμως χρησιμοποιείς τη συνάρτηση Α_Μ(). 
Αν θέλεις να υλοποιήσεις τη διαίρεση που λες (με πηλίκο ακέραιο και τα άλλα πραγματικά) χωρίς το Α_Μ() θα πρέπει να τις μετρήσεις  τις φορές που χωράει το χ στο ψ, δηλαδή να κάνεις κάτι σαν αυτό που περιγράφουμε παραπάνω. Δε νομίζω ότι μπορείς να το γλιτώσεις γιατί δεν έχεις πρόσβαση στην εσωτερική αναπαράσταση του αριθμού ούτε να το έχεις σε πίνακα χαρακτήρων για να κόψεις τα δεκαδικά. 

Για μένα αυτό που έχει ενδιαφέρον στην υλοποίηση της Α_Μ() που ζήτησε ο μαθητής, είναι το να βρούμε πόσο γρήγορα μπορούμε να κάνουμε της μέτρηση.
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: it_new στις 12 Μαρ 2025, 09:20:04 ΜΜ
Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ τεστ

ΜΕΤΑΒΛΗΤΕΣ

  ΠΡΑΓΜΑΤΙΚΕΣ: χ, τχ

  ΑΚΕΡΑΙΕΣ: π, χα



ΑΡΧΗ

  ΔΙΑΒΑΣΕ χ

  ΓΡΑΨΕ Ακέραιο_Μέρος(χ)

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ



ΣΥΝΑΡΤΗΣΗ Ακέραιο_Μέρος(χ): ΑΚΕΡΑΙΑ

ΜΕΤΑΒΛΗΤΕΣ

  ΠΡΑΓΜΑΤΙΚΕΣ: χ, τχ

  ΑΚΕΡΑΙΕΣ: π, χα

ΑΡΧΗ

  ΑΝ χ < 0 ΤΟΤΕ

    τχ <- -χ

  ΑΛΛΙΩΣ

    τχ <- χ

  ΤΕΛΟΣ_ΑΝ



  χα <- 0

  π <- 1



  ΟΣΟ χα + π <= τχ ΕΠΑΝΑΛΑΒΕ



    χα <- χα + π

    π <- π*2



  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ



  π <- π div 2

  ΟΣΟ π > 0 ΕΠΑΝΑΛΑΒΕ

    ΑΝ χα + π <= τχ ΤΟΤΕ

      χα <- χα + π

    ΤΕΛΟΣ_ΑΝ

    π <- π div 2

  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ



  ΑΝ χ < 0 ΚΑΙ χα = τχ ΤΟΤΕ

    χα <- -χα

  ΑΛΛΙΩΣ_ΑΝ χ < 0 ΤΟΤΕ

    χα <- -χα - 1

  ΤΕΛΟΣ_ΑΝ



  Ακέραιο_Μέρος <- χα



ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 15 Μαρ 2025, 02:38:14 ΜΜ
Με τσ πρόσημα υπάρχουν δυο σχολές για το υπόλοιπο
Στην Ευκλείδεια διαίρεση το υπόλοιπο είναι πάντα θετικό.
Στην νορμάλ το υπόλοιπο μπορεί να βγει αρνητικό.
Σε κάθε περίπτωση ισχύει ο ίδιος κανονας:
Διαιρέτης Χ ακεραιοπηλικο + υπόλοιπο = Διαιρετέος.
Διαιρέτης, υπόλοιπο και Διαιρετέος ας είναι με ή χωρίς δεκαδικά. Αρκεί να λειτουργεί η επαλήθευση κσι το πηλίκο να είναι ακέραιο. Ακέραια διαίρεση σημαίνει ακέραιο πηλίκο όχι διαίρεση ακεραίων!
Δυστυχώς στη Γλώσσα έχονυν  γίνει σαλάτα ακόμα και οι μαθηματικές έννοιες.

Ένα κόλπο να γνωρίζει κανείς την τάξη μεγέθους ενός αριθμού είναι η χρήση του δεκαδικού λογαρίθμου.  Σκεφτείτε το γιατί.
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: gpapargi στις 20 Μαρ 2025, 10:41:31 ΠΜ
Παράθεση από: Foto στις 15 Μαρ 2025, 02:38:14 ΜΜΜε τσ πρόσημα υπάρχουν δυο σχολές για το υπόλοιπο
Στην Ευκλείδεια διαίρεση το υπόλοιπο είναι πάντα θετικό.
Στην νορμάλ το υπόλοιπο μπορεί να βγει αρνητικό.
Σε κάθε περίπτωση ισχύει ο ίδιος κανονας:
Διαιρέτης Χ ακεραιοπηλικο + υπόλοιπο = Διαιρετέος.
Διαιρέτης, υπόλοιπο και Διαιρετέος ας είναι με ή χωρίς δεκαδικά. Αρκεί να λειτουργεί η επαλήθευση κσι το πηλίκο να είναι ακέραιο. Ακέραια διαίρεση σημαίνει ακέραιο πηλίκο όχι διαίρεση ακεραίων!
Δυστυχώς στη Γλώσσα έχονυν  γίνει σαλάτα ακόμα και οι μαθηματικές έννοιες.

Ένα κόλπο να γνωρίζει κανείς την τάξη μεγέθους ενός αριθμού είναι η χρήση του δεκαδικού λογαρίθμου.  Σκεφτείτε το γιατί.
Υπάρχει κάποιο reference για αυτά; Με βάση τα βιβλία μαθηματικών και συγκεκριμένα της θεωρίας Αριθμών (πχ Τσαγκάρης) το υπόλοιπο στην ευκλείδεια διαίρεση είναι ακέραιος θετικός ή μηδέν (φυσικός). Αν υπάρχει κάποια αναφορά σε βιβλίο θεωρίας αριθμών που να λέει για πραγματικό υπόλοιπο και μόνο το πηλίκο υποχρεωτικά ακέραιο,  να τη δούμε και να τη συζητήσουμε
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 22 Μαρ 2025, 12:15:14 ΠΜ
Δεν κατανοώ το πνεύμα της ερώτησης.
Τι σημαίνει πραγματικός αριθμός;
Ας πούμε ότι κάποιος έχει μισθό 2,5 χιλιάδες ευρώ.  Σε ευρώ ο μισθός είναι 2500 ευρώ είναι ακέραια τιμή.  Σε χιλιάδες ευρώ είναι πραγματική 2,5. Αν διαιρέσουμε το εισόδημα των 2,5 χιλιάδων ευρώ με το χρέος των 9 χιλιάδων ευρώ  πόσα ακέραια μηνιάτικα θα πάρουμε,
Δηλαδή 9 δια 2,5,  Αν για την ακέραια διαίρεση πρέπει να κάνω τους αριθμούς ακέραιους τότε η απάντηση θα είναι 9 δια 2= 4 και υπόλοιπο 1. Προφανώς αυτό δεν είναι σωστό.  Αφού σε 4 μήνες θα έχουμε 10χιίαδες άρα θα μας περισσέψουν 1000 ευρώ...
Ας δεχτούμε ότι το 9/2,5 είναι διαίρεση πραγματικών.Για να πάρω το αποτέλεσμα που θέλω θα πρέπει να εξαγω το ακέραιο μέρος του πηλίκου. Άρα η διαίρεση πραγματικών δεν μπορεί από μόνη της να κάνει τη διαίρεση που ζητάω.

Για τα πρόσημα στις διαρέσεις και το υπόλοιπο: Επειδή Πηλίκο επί Διαιρέτη συν υπόλοιπο ίσον διαρετέος,όπου αυτό δεν θέλει πηγή:
Βγαίνουν λογικά δυο περιπτώσεις σε αρνητικό Διαιρετέο:
-10 div 3 = -3 και υπόλοιπο-1 ώστε -3Χ3+-1=-10
Δες το τώρα με θετικό υπόλοιπο Ευκλειδια Διαιρεση.
-4X3+2=-10.
https://www.123calculus.com/en/long-division-page-1-11-130.html

Έτσι στη μία περίπτωση έχουμε πηλικο -3 και υπόλοιπο -1 και στην άλλη πηλίκο -4;και υπόλοιπο 2 (πάντα θετικό στην ευκλειδια διαίρεση).


Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: George Eco στις 22 Μαρ 2025, 02:26:28 ΠΜ
Foto υπάρχει απάντηση που ορίζει πως στα πλαίσια του μαθήματος το div και το mod λαμβάνουν ως τελεστέους μόνο θετικούς ακεραίους.
Πάρε ένα copy - paste να μη το ψάχνεις.


ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ
Τμήμα Δευτεροβάθμιας Γενικής Εκπαίδευσης
Συνεδρία αριθ. 03/2008

Θέμα 18ο:Απάντηση επί του εγγράφου με αρ. πρωτ 9978/Γ2/23-01-2008 της
Διεύθυνσης Σπουδών Δευτεροβάθμιας Εκπαίδευσης/Τμήμα Α΄του
ΥΠΕΠΘ
(Παιδαγωγικό Ινστιτούτο αρ. πρωτ. 630/24-01-2008)


Εισηγητής: Αδάμ Κ. Αγγελής
Με το αρ. πρωτ. 9978/Γ2/23-01-2008 της Διεύθυνσης Σπουδών Δευτεροβάθμιας
Εκπαίδευσης/Τμήμα Α΄του ΥΠΕΠΘ μας έχει διαβιβαστεί έγγραφο της Σχολικής
Συμβούλου της Διεύθυνσης Δευτεροβάθμιας Εκπαίδευσης Ιωαννίνων κυρίας Ιωάννας
Μπέλλου με ερωτήματα που αφορούν το μάθημα της Γ΄ τάξης του Γενικού Λυκείου
«Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον».
Σχετικά με τα διαλαμβανόμενα ερωτήματα εισηγούμαστε τα παρακάτω:
1.- Η ανάγκη να προσδιορισθεί το πρόσημο του υπολοίπου της διαίρεσης δύο
ακεραίων προκύπτει μόνο στην περίπτωση που ένας από τους δύο τελεστέους (ή και
οι δύο) του τελεστή MOD είναι αρνητικός. Αυτές τις περιπτώσεις οι γλώσσες
προγραμματισμού τις αντιμετωπίζουν διαφορετικά μεταξύ τους με τρόπο ο οποίος
εξαρτάται από τον ορισμό (T-ορισμός, F-ορισμός, E-ορισμός) της DIV και της MOD
τον οποίο υλοποιούν. Η αντιμετώπιση αυτών των περιπτώσεων από την ΓΛΩΣΣΑ
ξεφεύγει από το σκοπό του σχολικού βιβλίου και γι' αυτό οι δύο τελεστέοι πρέπει να
θεωρούνται πάντοτε θετικοί ακέραιοι. Επομένως, ασκήσεις ή προβλήματα που
δίνονται στους μαθητές για επεξεργασία και απαιτείται η χρήση της MOD πρέπει
πάντοτε να αναφέρονται σε θετικούς ακέραιους αριθμούς. Η θεώρηση αυτή
εξυπηρετεί πλήρως τον στόχο του Προγράμματος Σπουδών όπου αναφέρεται, οι
μαθητές: «να μπορούν να δημιουργούν απλές εφαρμογές με τη χρήση δομημένης
γλώσσας προγραμματισμού».
2.- Όσον αφορά την ιεραρχία στις πράξεις οι τελεστές DIV και MOD ιεραρχούνται
στο ίδιο επίπεδο με τον πολλαπλασιασμό και τη διαίρεση και ακολουθούν όλα όσα
αναφέρονται στη σελίδα 154 του βιβλίου μαθητή.
Π.χ. 4*(7 MOD 2) = 4 ενώ 4*7 MOD 2 =0
3*(7 DIV 2) = 9 ενώ 3*7 DIV 2 = 10 και 3*7/2=10,5
Να ενημερωθούν, εκπαιδευτικοί και σχολικοί σύμβουλοι γιατί το μάθημα
εξετάζεται πανελλαδικά.
Ο εισηγητής
Αδάμ Κ. Αγγελής
Πάρεδρος Πληροφορικής του Π.Ι.

Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 22 Μαρ 2025, 09:34:43 ΠΜ
Το γνωρίζω αυτό. Για τη γλώσσα μόνο θετικοί ακέραιοι πάνε στις div και mod, από σχεδιασμό.

Εδωσα την ιδέα του X div 1 αλλά όπως μου θύμισε ο gpapargi το X δεν μπορεί να είναι πραγματικός απο σχεδιασμό

Μετά έγραψα το παράπονό μου,
Κάπου ρώτησε ο gpapargi για reference για αυτα! Ποια αυτά; Τα πρόσημα στο υπόλοιπο; Αυτό δεν κατάλαβα!
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: evry στις 24 Μαρ 2025, 06:58:08 ΠΜ
Παράθεση από: George Eco στις 22 Μαρ 2025, 02:26:28 ΠΜFoto υπάρχει απάντηση που ορίζει πως στα πλαίσια του μαθήματος το div και το mod λαμβάνουν ως τελεστέους μόνο θετικούς ακεραίους.
Πάρε ένα copy - paste να μη το ψάχνεις.


ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ
Τμήμα Δευτεροβάθμιας Γενικής Εκπαίδευσης
Συνεδρία αριθ. 03/2008

Θέμα 18ο:Απάντηση επί του εγγράφου με αρ. πρωτ 9978/Γ2/23-01-2008 της
Διεύθυνσης Σπουδών Δευτεροβάθμιας Εκπαίδευσης/Τμήμα Α΄του
ΥΠΕΠΘ
(Παιδαγωγικό Ινστιτούτο αρ. πρωτ. 630/24-01-2008)


Εισηγητής: Αδάμ Κ. Αγγελής
Με το αρ. πρωτ. 9978/Γ2/23-01-2008 της Διεύθυνσης Σπουδών Δευτεροβάθμιας
Εκπαίδευσης/Τμήμα Α΄του ΥΠΕΠΘ μας έχει διαβιβαστεί έγγραφο της Σχολικής
Συμβούλου της Διεύθυνσης Δευτεροβάθμιας Εκπαίδευσης Ιωαννίνων κυρίας Ιωάννας
Μπέλλου με ερωτήματα που αφορούν το μάθημα της Γ΄ τάξης του Γενικού Λυκείου
«Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον».
Σχετικά με τα διαλαμβανόμενα ερωτήματα εισηγούμαστε τα παρακάτω:
1.- Η ανάγκη να προσδιορισθεί το πρόσημο του υπολοίπου της διαίρεσης δύο
ακεραίων προκύπτει μόνο στην περίπτωση που ένας από τους δύο τελεστέους (ή και
οι δύο) του τελεστή MOD είναι αρνητικός. Αυτές τις περιπτώσεις οι γλώσσες
προγραμματισμού τις αντιμετωπίζουν διαφορετικά μεταξύ τους με τρόπο ο οποίος
εξαρτάται από τον ορισμό (T-ορισμός, F-ορισμός, E-ορισμός) της DIV και της MOD
τον οποίο υλοποιούν. Η αντιμετώπιση αυτών των περιπτώσεων από την ΓΛΩΣΣΑ
ξεφεύγει από το σκοπό του σχολικού βιβλίου και γι' αυτό οι δύο τελεστέοι πρέπει να
θεωρούνται πάντοτε θετικοί ακέραιοι. Επομένως, ασκήσεις ή προβλήματα που
δίνονται στους μαθητές για επεξεργασία και απαιτείται η χρήση της MOD πρέπει
πάντοτε να αναφέρονται σε θετικούς ακέραιους αριθμούς. Η θεώρηση αυτή
εξυπηρετεί πλήρως τον στόχο του Προγράμματος Σπουδών όπου αναφέρεται, οι
μαθητές: «να μπορούν να δημιουργούν απλές εφαρμογές με τη χρήση δομημένης
γλώσσας προγραμματισμού».
2.- Όσον αφορά την ιεραρχία στις πράξεις οι τελεστές DIV και MOD ιεραρχούνται
στο ίδιο επίπεδο με τον πολλαπλασιασμό και τη διαίρεση και ακολουθούν όλα όσα
αναφέρονται στη σελίδα 154 του βιβλίου μαθητή.
Π.χ. 4*(7 MOD 2) = 4 ενώ 4*7 MOD 2 =0
3*(7 DIV 2) = 9 ενώ 3*7 DIV 2 = 10 και 3*7/2=10,5
Να ενημερωθούν, εκπαιδευτικοί και σχολικοί σύμβουλοι γιατί το μάθημα
εξετάζεται πανελλαδικά.
Ο εισηγητής
Αδάμ Κ. Αγγελής
Πάρεδρος Πληροφορικής του Π.Ι.


Τι μου θύμισες τώρα. Εκείνες τις εποχές δεν άλλαζαν ούτε κόμμα στα βιβλία.
Ένα ρώτημα έλαβε το ΠΙ και κατάφερε να απαντήσει με λάθος παράδειγμα !!!
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: gpapargi στις 24 Μαρ 2025, 09:25:07 ΠΜ
Παράθεση από: Foto στις 22 Μαρ 2025, 09:34:43 ΠΜΚάπου ρώτησε ο gpapargi για reference για αυτα! Ποια αυτά; Τα πρόσημα στο υπόλοιπο; Αυτό δεν κατάλαβα!
Εννοώ αν υπάρχει κάποιο reference από βιβλίο θεωρίας αριθμών που να λέει ότι το υπόλοιπο μπορεί να είναι δεκαδικό και ότι ο μόνος περιορισμός είναι ότι το πηλίκο πρέπει να είναι ακέραιο. ΑΥτά που έχω δει εγώ λένε ότι διαιρετέος, διαιρέτης πηλίκο και υπόλοιπο είναι ακέραιοι και το υπόλοιπο θετικό ή μηδέν. Αν υπάρχει βιβλίο που λέει κάτι άλλο θα πρέπει να το δούμε.
Ας μη σταθούμε αποκλειστικά στο μάθημα που τα θέλει όλα θετικά. Μιλάμε στο πνεύμα της θεωρίας αριθμών. 
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 24 Μαρ 2025, 06:13:04 ΜΜ
Τα πράγματα είναι πολύ απλά. Ο τυπος:
Διαιρετέος ίσον πηλίκο ×διαιρετη + υπόλοιπο.
Δεν χρειάζεται αναφορά!
1) Αν μιλάμε μόνο για ακεραιο πηλίκο που έχει νόημα,  σημαίνει πόσες φορές χωράει ο διαιρέτης στο διαρετεο, όπου μία διαίρεση με πηλίκο πραγματικό πχ 2.3 φορές δεν έχει νόημα. Αυτό είναι απλή λογική.
2) Τώρα η ευκλειδια διαίρεση ορίστηκε ως διαίρεση ακεραίων επειδή έτσι ήθελε ο Ευκλείδης, όπου βέβαια το υπόλοιπο είναι παντα θετικό, επειδή δεν υπήρχαν αρνητικοί αριθμοί στην εποχή του!
3) Αν μιλάμε για διαίρεση Ακεραίων σε υπολογιστή  ασφαλώς η πράξη της διαίρεσης ορίζει τι θα είναι. Πχ στη python η ακέραια διαίρεση έχει άλλο τελεστη από αυτή για πηλίκο με δεκαδικά.
Στο παράδειγμα αν βάλουμε 9 και 2.5 θα πάρουμε 3 και 1.5 υπόλοιπο.
Εδώ το υπόλοιπο έχει δεκαδικά.
a = float(input('Enter 1st number: '))
b = float(input('Enter 2nd number: '))
print(a//b)
print(a % b)

Έτσι λοιπόν αφήνουμε τι ορίζει ο Ευκλείδης 2500 χρόνια πριν και κοιτάμε τι ορίζονται στις γλώσσες προγραμματισμού. Διότι αυτά αποτελούν εργαλεία,  με αυτά θα δουλέψουν οι μαθητές, ως φοιτητές και στην δουλειά τους ίσως.
Το (2) δεν είναι προαπαιτούμενο για το προγραμματισμό. Όπως ξέρουμε ότι δεν το φτιάχνουν σωστά, του βάζουν περιορισμούς κσι καλά ότι ο περιορισμός κάνει τη γλώσσα αλλά εδώ γίνεται το αντίθετο, από σχεδιασμό μπήκαν οι περιορισμοί όχι από references...
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: gpapargi στις 25 Μαρ 2025, 09:03:34 ΠΜ
Η σχέση "Διαιρετέος = διαιρέτης επί πηλίκο συν υπόλοιπο" ονομάζεται ταυτότητα της διαιρέσεως. Δε χρειάζεται reference. Κανείς δεν την αμφισβήτησε.

Σε σχέση με τα άλλα, μιλάμε με βάση τα μαθηματικά, όχι την python. Άλλωστε αν χρησιμοποιήσεις τον τελεστή υπολοίπου σε πραγματικούς στη γλώσσα C θα πάρεις λάθος. Διαφορετικές γλώσσες μπορεί να κάνουν διαφορετικά πράγματα. Μια γλώσσα μπορεί να υλοποιεί κάτι ανάλογα με το τι είναι βολικό/πρακτικό. Δεν είναι σημείο αναφοράς για το τι ισχύει στα μαθηματικά. 
Για το τι ισχύει στα μαθηματικά σημείο αναφοράς είναι τα βιβλία μαθηματικών. Επίσης δεν το γράφουν τα βιβλία επειδή το είπε ο Ευκλείδης (δεν είναι δηλαδή κάποιου είδους "επίκληση στην αυθεντία"), αλλά γιατί έτσι το θέλει η μαθηματική κοινότητα. 

Ξαναλέω ότι η συζήτηση γίνεται με βάση το τι ισχύει στα μαθηματικά όχι σε κάποια συγκεκριμένη γλώσσα προγραμματισμού (πράγμα που μπορεί να είναι διαφορετικό από αυτό που ισχύει σε άλλη γλώσσα προγραμματισμού). 
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 25 Μαρ 2025, 03:22:30 ΜΜ
Τα μαθηματικά έχουν ένα πεδίο ορισμού. Στον προγραμματισμό υπάρχει μια απόσταση από τη θεωρία στην πράξη,  λόγω του τρόπου που οι αριθμοί ψηφιοποιούνται. Για παράδειγμα δεν μπορούμε να αποθηκεύουμε έναν άρρητο αριθμό. Στη θεωρία υπάρχει η τιμή π, στο προγραμματισμό ο π είναι ρητος επειδη έχει συγκεκριμένα ψηφία για συγκεκριμένο σύστημα ψηφιοποίησης. Αυτό δεν μας εμποδίζει να κάνουμε υπολογισμούς.

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

Για παράδειγμα οι πραγματικοί αριθμοί δεν μπορούν να αποδώσουν όλους τους δεκαδικούς, κατά την μετατροπή από και προς τη δεκαδική μορφή. Υπάρχουν όμως αριθμοί με δεκαδικά που δεν χάνουν καθόλου από τη δεκαδική μορφή στη δυαδική, και αντίστροφα, και χρησιμοποιούνται για λογιστικές εφαρμογές. Κσι γιατί δεν είναι όλοι έτσι; Γιατι έχουν άλλα θέματα.

Ένας μαθητής δεν θα πάει μέσω Κίνας, για να τεκμηριώσει τις μαθηματικές αλήθειες, με σπουδή στο προγραμματισμό. Με το προγραμματισμό, με τις μικρές εφαρμογές που υποτίθεται θα κάνει, θα μπει σε έναν νέο κόσμο. Αυτός ο νέος κόσμος, των υπολογιστών,  φέρνει νέα πράγματα.
Προς το παρόν εδώ και εικοσιπέντε χρόνια έχει κολλήσει το μάθημα στα βασικά, επαναλήψεις, επιλογές, υποπρογραμματα (εδω και αν ειναι για κλάματα η κατάσταση) και μόλις πάμε να δούμε τους τελεστές αρχίζουμε τα περί μαθηματικών!

Ας τελειώσει αυτό το παραμύθι με τα μαθηματικά. Δεν οδηγεί κάπου.

Κάνεις αλγόριθμους, όχι μαθηματικά. Επίσης αυτό το "τι ισχυει" είναι ο χειρότερος φραγμός στην έμπνευση για τη λύση προβλημάτων. Είναι η ουσία της μη σκεψης, διότι αν κάνουμε ότι ισχύει τότε είμαστε ρομπότ! Πρέπει να κάνουμε αυτό που θέλουμε να πετύχουμε, το οποίο θα υσχύει αν το κάνουμε, αν δουλέψει στη πράξη, και αν καταλάβουμε τι δεν μπορεί να κάνει, τι δεν ισχύει δηλαδή!
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: o_Antonis στις 25 Μαρ 2025, 10:13:46 ΜΜ
α.Νομίζω πρέπει να μπεί κάποιο είδους disclaimer από την διαχείρηση καθώς το παραπάνω post
καταφέρνει να προσβάλλει ταυτόχρονα τα Μαθηματικά, την Πληροφορική και την Παιδαγωγική.



β. επί του προκείμενου:
Αν επιτραπεί η χρήση αρνητικών τελεσταίων έχουμε επιπλέον μπέρδεμα με το υπόλοιπο, καθώς παύει να ισχύει
"η διαίρεση τελειώνει όταν το υπόλοιπο γίνει μικρότερο από τον διαιρέτη"
(και το μπέρδεμα βέβαια με το πρόσημο του )
Η απάντηση του ΙΕΠ είναι σαφής...ε και με λίγη σκέψη και σωστή.

Αφού παίρνουμε αναφορά από την Python, βλέπουμε στα screenshots και τι πανηγύρι προκύπτει με πραγματικούς τελεσταίους. Μην πούμε α,
αν είχαμε Python όλα θα ήταν τέλεια και βαράτε βιολιτζήδες.

ptx0.jpg

pxt.jpg
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 26 Μαρ 2025, 06:56:41 ΠΜ
Αν δε σας αρέσει η άλλη άποψη σβήστε την..
Το ότι η υλη έχει μείνει σε νηπιακή κατάσταση δεν σε πειράζει. Σε πειράζει η python, όμως.
Οκ. Πάμε στην Assembly, που δεν έχει υπόλοιπο....
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: gpapargi στις 26 Μαρ 2025, 09:19:53 ΠΜ
Ηρεμία παιδιά. Δε σβήνουμε απόψεις. ΑΝτίθετα θέλουμε να τις ακούσουμε όλες. Σβήνουμε μόνο αν βρίζει κάποιος ή προσβάλει τον άλλο κλπ. Κουβέντα κάνουμε και θέλουμε να ακούσουμε όλες τις γνώμες. Τόσα χρόνια ανταλλάσουμε απόψεις και διαφωνούμε και αυτό μας συνδέει με ένα δημιουργικό τρόπο.

Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: gpapargi στις 26 Μαρ 2025, 02:02:28 ΜΜ
Foto, ακόμα κι αν δεν ακολουθήσουμε τα μαθηματικά αλλά υλοποιήσεις γλωσσών προγραμματισμού, στο θέμα των αριθμητικών τελεστών, ποια από τις γλώσσες θα πρέπει να ακολουθήσουμε; Η python έχει κάποια συμπεριφορά, αλλά η C έχει κάποια άλλη. Διαφορετικές γλώσσες έχουν διαφορετικές συμπεριφορές. Δεν είναι αυθαίρετο να επιλέξεις μια από αυτές και να απορρίψεις τις άλλες; 
Σχετικά με το αν πρέπει μετά από 25 χρόνια να μπει μια αληθινή  γλώσσα του εμπορίου στο μάθημα, αυτό είναι άλλο θέμα. Κι εγώ (όπως και πολλοί άλλοι) πιστεύω ότι οι συνθήκες έχουν ωριμάσει και ήρθε η ώρα να μπει μια κανονική γλώσσα προγραμματισμού, οπότε θα λέμε απλά τι επιτρέπεται και τι όχι στη συγκεκριμένη γλώσσα. Τώρα όμως αυτό δεν ισχύει. Καμία γλώσσα δεν είναι σημείο αναφοράς. Η ΓΛΩΣΣΑ σε διάφορα ασαφή σημεία (μετά από ψηφοφορία) επιλέχτηκε να λειτουργεί με τον τρόπο των μαθηματικών μια που είναι εκπαιδευτική και τα μαθηματικά είναι η βάση της επιστήμης της πληροφορικής. 

Η άσκηση που έθεσε ο καθηγητής στο φροντιστήριο (και μας τη μετέφερε ο μαθητής) ζητάει ουσιαστικά την υλοποίηση της συνάρτησης Α_Μ() επαναληπτικά. Θα μπορούσε να ζητάει και τα div/mod επαναληπτικά καθώς και οποιαδήποτε συνάρτηση της ΓΛΩΣΣΑΣ.    
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 26 Μαρ 2025, 03:34:43 ΜΜ
Το ότι υπάρχουν διαφορετικές γλώσσες δεν σημαίνει ότι τόσες είναι και οι φιλοσοφίες αν τις πούμε έτσι προγραμματισμού. Όπου φιλοσοφίες κάποιοι τις βλέπουν ως ιδιαιτερότητες.
Δεν μιλάμε για ιδιαίτερότητες αλλά για σχεδιασμό. Η ΓΛΩΣΣΑ έχει θέμα στο σχεδιασμό της. Δεν θα το αναλύσω εδώ. Θα ήθελα η συνάρτηση να μπορεί να επιστρέφει πίνακα.
Επιλέγουμε μια γλώσσα για το σχεδιασμό της. Εννοείται ότι το εργαλείο δεν είναι το μόνο που θέλει αλλαγή. Θα πρέπει το μάθημα να καταπιάνεται με τα πραγματικά ζητήματα που καλείται κάποιος να δώσει λύσεις σε υπολογιστή.

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


Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: gpapargi στις 31 Μαρ 2025, 03:25:06 ΜΜ
Από ότι κατάλαβα θέλεις μια γλώσσα που να υποστηρίζει και μη ακέραια υπόλοιπα. Αυτό το κάνει η python αλλά όχι η C. Άρα θέλεις όχι οποιαδήποτε γλώσσα αλλά μια με συγκεκριμένη υλοποίηση. 
Όμως αυτή η άσκηση που έβαλε ο καθηγητής ζητάει να μη γίνει χρήση της έτοιμης υλοποίησης. Άρα και την python να είχε, θα σου έλεγε βρείτε το ακέραιο μέρος χωρίς την έτοιμη συνάρτηση ούτε τα div/mod. Θέλει να δει τρόπο σκέψης, κατασκευή αλγορίθμου, εφευρετικότητα κλπ. Πχ σε αρκετές σχολές σε εισαγωγικά μαθήματα τους λένε να μη χρησιμοποιήσουν μια έτοιμη συνάρτηση αλλά να κάνουν υλοποίηση για λόγους εξάσκησης. Αυτό είναι κι εδώ το πνεύμα της άσκησης. Άλλωστε την Α_Μ() την έχει η ΓΛΩΣΣΑ. 

Θέτουμε δηλαδή το πρόβλημα: Να φτιαχτεί συνάρτηση που βρίσκει το ακέραιο μέρος επαναληπτικά. Πόσο γρήγορα μπορεί να γίνει.
Επίσης (δικό μου επιπρόσθετο): Να φτιαχτεί συνάρτηση που δέχεται σαν παραμέτρους δυο ακεραίους (ας είναι θετικοί) και βρίσκει επαναληπτικά το πηλίκο και το υπόλοιπο. 
Και τα δυο επιδέχονται λύσεις λογαριθμικής πολυπλοκότητας ως προς τον αριθμό ή γραμμικής ως προς το πλήθος των ψηφίων του. Είναι δηλαδή ίδια τάξης με τη διαίρεση που κάνουμε στο χαρτί με το χέρι (για τη δεύτερη άσκηση). Για το Α_Μ() είναι ίδιας τάξης με το να σαρώνεις τα ψηφία του αριθμού μέχρι να βρεις την υποδιαστολή. Υπάρχουν καλές λύσεις δηλαδή. 
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 01 Απρ 2025, 02:04:12 ΠΜ
Αν υπήρχαν συναρτήσεις για αλφαριθμητικα θα γίνονταν πολλά ωραία πράγματα. 

Μια λύση του θέματος θα ήταν να μπει ο κάθε αριθμός σε πίνακα ανά ψηφίο. Μετά κάνεις τα πάντα.. Θες ακέραιο μέρος; τραβάς τον αριθμό χωρίς τα δεκαδικά!
Με αλφαριθμητικα:
Πχ σε BASIC
Η INSTR(A$, ".") Δίνει τη θέση της τέλειας στο A$ αλφαριθμητικό. Η LEFT$(A$,5) δίνει τους 5 χαρακτήρες από αριστερά. Άρα αν ο αριθμός μας ήταν στο A$ με δύο κινήσεις θα πάρουμε το ακέραιο μέρος. Η VAL(A$) μετατρέπει σε αριθμό  ενώ η STR$(12.45) δίνει τον αριθμό σε αλφαριθμητικό. Αυτές οι εντολές υπήρχαν από τη δεκαετία του 60, που φυιαχτηκε η BASIC.
Δυστυχώς δεν μπήκαν στη ΓΛΩΣΣΑ. Όλες οι άλλες γλώσσες τις έχουν, είναι βασικές!
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: alkisg στις 01 Απρ 2025, 11:20:50 ΠΜ
Γενικά με τους πραγματικούς τα πράγματα είναι πιο πολύπλοκα.
Για παράδειγμα στην Python, η εντολή print(0.1+0.1+0.1 == 0.3) τυπώνει False, λόγω περιορισμένης ακρίβειας των πραγματικών αριθμών.

Σε ερώτηση αν θέλουμε η ΓΛΩΣΣΑ να αποκρύπτει αυτό το πρόβλημα, 86.52% των εκπαιδευτικών απάντησαν "Ναι".

Έτσι, ο Διερμηνευτής θεωρεί ότι το ακέραιο μέρος του 1.999999999999999 είναι 2, επειδή υποθέτουμε ότι το 0.000000000000001 χάθηκε στις πράξεις από λάθος ακρίβειας (προσαρμόσιμο από το διάλογο επιλογών).

Σε αυτό το σημείο μια καλώς ορισμένη εκπαιδευτική γλώσσα βολεύει καλύτερα από πραγματικές γλώσσες.
Η απλή μετατροπή σε αλφαριθμητικό δεν θα βοηθούσε, θα έπρεπε αναγκαστικά να εισαχθεί η έννοια της ακρίβειας αναπαράστασης.

Κώδικας (python) [Επιλογή]
>>> print(str(10*(0.1+0.1+0.1)))
3.0000000000000004
# Ενώ περιμέναμε ακριβώς 3
>>> print(int(10*(0.1+0.1+0.1)-0.0000000000000005))
3
# Ενώ περιμέναμε 2
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: Foto στις 02 Απρ 2025, 01:44:47 ΠΜ
Ως προς το ζήτημα των πραγματικών,  υπάρχουν τύποι που δεν έχουν θέμα γιατί δεν χρησιμοποιούν το τρόπο καταχώρησης των δεκαδικών όπως ο double ή float. Στην ουσία οι πραγματικοί έχουν το πλεονέκτημα του εκθέτη για πράξεις για επιστημονικους λόγους όπου η ακρίβεια των 17 ψηφίων είναι υπέρ αρκετή.
Το 0,1+0,1+0,1 είναι ένα άθροισμα για λογιστικές εφαρμογές. Υπάρχουν λοιπόν αριθμητικοί τύποι που δεν έχουν κανένα πρόβλημα γιατί στην ουσία έχουν ακέραιο από πίσω. Οπότε το αποτέλεσμα βγαίνει 0,3. Η python έχει επιστημονικές εφαρμογές με μεγάλη ακρίβεια, και δεν έχει τους ειδικούς τύπους για λογιστικές εφαρμογές.
Οπότε το παράδειγμα με τα 0 3 δεν είναι ζήτημα, κανονικών κσι μη γλωσσών. Δεν γνωρίζω περισσότερα για ειδικούς τύπους στη python, ίσως να υπάρχει εξωτερική βιβλιοθήκη, αλλά είναι σίγουρο ότι το Excel, χρησιμοποιεί την python. Δεν μπορεί να έχει θέμα και εδώ στο Excel.
https://support.microsoft.com/en-us/office/get-started-with-python-in-excel-a33fbcbe-065b-41d3-82cf-23d05397f53d
Τίτλος: Απ: Λειτουργια της συναρτησης Α_Μ()
Αποστολή από: dpa2006 στις 15 Απρ 2025, 01:28:37 ΜΜ
Παράθεση από: gpapargi στις 20 Μαρ 2025, 10:41:31 ΠΜΥπάρχει κάποιο reference για αυτά; Με βάση τα βιβλία μαθηματικών και συγκεκριμένα της θεωρίας Αριθμών (πχ Τσαγκάρης) το υπόλοιπο στην ευκλείδεια διαίρεση είναι ακέραιος θετικός ή μηδέν (φυσικός). Αν υπάρχει κάποια αναφορά σε βιβλίο θεωρίας αριθμών που να λέει για πραγματικό υπόλοιπο και μόνο το πηλίκο υποχρεωτικά ακέραιο,  να τη δούμε και να τη συζητήσουμε

Καλησπέρα, ρίξτε μια ματιά στα εξής:

Euclidean Division (https://en.wikipedia.org/wiki/Euclidean_division)
Modulo (https://en.wikipedia.org/wiki/Modulo)

Βιβλιογραφία στο τέλος των σελίδων.
Επίσης


Modulo (https://repository.kallipos.gr/simple-search?query=Modulo)

Ευκλειδεια Διαίρεση (https://repository.kallipos.gr/simple-search?query=%CE%B5%CF%85%CE%BA%CE%BB%CE%B5%CE%B9%CE%B4%CE%B5%CE%B9%CE%B1)