teacher
Νεοφερμένος
Μας ενδιαφέρει πώς το τρέχει η ΓλωσσοΜάθεια όμως που είναι κάτι σαν γλώσσα προγραμματισμού.
(Παίρνει και αρχεία όμως!!! )
Η γλωσσομάθεια το τρέχει όπως ... το έχει ορίσει αυτός που την έγραψε. Δεν πρόκειται για επίσημο πρόγραμμα του υπουργείου και δεν αποτελεί πανάκεια στα προβλήματά σας . Ούτε λέει το βιβλίο πουθενά τί συμβαίνει σ' αυτή την περίπτωση.
Επειδή όμως ο συνάδελφος που την έγραψε είναι στο σχολείο μου, θα τον ρωτήσω πως το σκέφτηκε και θα σας πώ Μπορεί να προκύψει και καμιά διόρθωση
BTW, η δική μου άποψη είναι ότι το αποτέλεσμα της πράξης πρέπει να είναι όπως ακριβώς στα μαθηματικά.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teacher
Νεοφερμένος
Όμως υπάρχει λέει δέσμευση από το παιδαγωγικό ινστ. ότι δεν πρόκειται να πέσει άσκηση με αρνητικό πρόσημο στους τελεστές, οπότε απλά ξεχάστε το.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
eliza04
Εκκολαπτόμενο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
polivios
Νεοφερμένος
Δηλαδή
11 remainder 5 = 1
11 modulo 5 = 1
11 remainder -5 = 1
11 modulo -5 = -4
-11 remainder 5 = -1
-11 modulo 5 = 4
-11 remainder -5 = -1
-11 modulo -5 = -1
Συμπερασματικά το remainder έχει πάντα το πρόσημο του Α (διαιρετέου) και είναι το υπόλοιπο που απομένει από την ακέραια διαίρεση των απόλυτων τιμών του Α και Β.
Το modulus έχει πάντα το πρόσημο του Β (διαιρέτη).
Όταν ο Β (διαιρέτης) είναι θετικός το μέγεθος προκύπτει από την αφαίρεση του
Α-Β*Ν, όπου το γινόμενο Β*Ν πρέπει να είναι ο πλησιέστερος ακέραιος μικρότερος του Α
Δηλαδή
11 modulo 5 = 11-5*2=11-10 = 1
-11 modulo 5= -11-5*(-3)=-11-(-15) = -11+15 = 4
το -15 είναι ο πλησιέστερος ακέραιος μικρότερος του -11
και όταν ο Β (διαιρέτης) είναι αρνητικός το μέγεθος προκύπτει από την αφαίρεση του
Α-Β*Ν, όπου το γινόμενο Β*Ν πρέπει να είναι ο πλησιέστερος ακέραιος μεγαλύτερος του Α
Δηλαδή
11 modulo -5 = 11-(-5)*(-3)=11-15= 4
-11 modulo -5= -11-(-5)*(2)=-11-(-10)= -11+10= -1
To modulo έχει πάντοτε το πρόσημο του Β και είναι ένας αριθμός από το 0 μέχρι το Β-1
Ενώ το remainder έχει πάντοτε το πρόσημο του Α και είναι το υπόλοιπο της Ακέραιας διαίρεσης των απολύτων τιμών Α και Β.
Η Γλωσσομάθεια όπως και όλες οι γλώσσες προγραμματισμού με τον τελεστή mod υπολογίζουν το remainder. Κάποιες γλώσσες προγραμματισμού έχουν τροποποιηθεί πρόσφατα και συμπεριλαμβάνουν και τις δύο συναρτήσεις.
Π.χ η FORTRAN 90
έχει την συνάρτηση MOD(a,b) για το remainder
και την συνάρτηση MODULO(a,b) για το modulus
Παραθέτω μία συνάρτηση για τον υπολογισμό του MODULO(a,b) στη γλωσσομάθεια.
ΠΡΟΓΡΑΜΜΑ υπόλοιπο
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α, Β
ΑΡΧΗ
ΔΙΑΒΑΣΕ Α, Β
ΓΡΑΨΕ MODULO(Α,Β)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΣΥΝΑΡΤΗΣΗ MODULO(X, Y) : ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: X, Y
ΑΡΧΗ
MODULO <-- X MOD Y
ΑΝ X*Y<0 ΤΟΤΕ
MODULO <-- MODULO+Y
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Ελπίζω να βοήθησα
Για περισσότερα ask Dr. Math https://mathforum.org/dr.math/
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
nick29
Εκκολαπτόμενο μέλος
Γιατί στη σελ. 32 το βιβλίο αναφέρει "Γενικά η διαδικασία της επιλογής περιλαμβάνει τον έλεγχο κάποιας συνθήκης που μπορεί να έχει δύο τιμές (Αληθής ή Ψευδής).", αλλά στη σελ.29 εκεί που ορίζει τον ρόμβο ως γεωμετρικό σχήμα διαγράμματος ροής λέει: "Ρόμβος, που δηλώνει μία ερώτηση με δύο ή περισσότερες εξόδους για απάντηση."
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Kristal
Εκκολαπτόμενο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Anarki
Διάσημο μέλος
Η κάθε συνθήκη απο μόνης της όμως είναι είτε αληθής είτε ψευδής, δεν μπορεί να πάρει άλλη τιμή.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
nick29
Εκκολαπτόμενο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Forget it, μια λαλακιούλα είναι αυτό που έγραψαν. Σωστή είναι η πρόταση που λες."Ρόμβος, που δηλώνει μία ερώτηση με δύο ή περισσότερες εξόδους για απάντηση."
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Afey
Πολύ δραστήριο μέλος
Το βιβλίο έχει όντως παραδείγματα που συνδιάζουν ακέραιους και πραγματικούς και υπάρχει πρόβλημα γιατί ορίζει κάτι και το αναιρεί έπειτα.
Κατά τη γνώμη μου πρέπει να τηρηθεί η σημείωση στη σελίδα 155. Σε κάθε εντολή εκχώρησης τόσο η μεταβλητή όσο και η έκφραση πρέπει να είναι ίδιου τύπου.
Το Β και Γ είναι ΑΚΕΡΑΙΟΥ τύπου. Το Α θα έχει ακέραια τιμή προφανώς, αλλά λόγω της σημείωσης στη σελίδα 155 πρέπει κι ο τύπος του να είναι ΑΚΕΡΑΙΟΣ.Code:Α ← Β [B]DIV[/B] Γ
Δεν μπορείς να το δηλώσεις ΠΡΑΓΜΑΤΙΚΟ γιατί σε περιορίζει η σελίδα 155 (όχι γιατί έχει ακέραια τιμή, μπορεί μία μεταβλητή πραγματικού τύπου να έχει ακέραια τιμή).
(Εάν κάποιος δεν καταλαβαίνει τη διαφορά ακέραιας τιμής - ακέραιου τύπου ας ποστάρει ).
Σημείωση: τα DIV και ΜOD είναι με κεφαλαία στο πρόγραμμα.
Τι γίνεται λοιπόν αν θέλουμε ακέραια διαίρεση σε δεδομένα πραγματικού τύπου; Αν για παράδειγμα έχουμε:
Και θέλουμε ακέραια διαίρεση των Β και Γ;Code:[B]ΜΕΤΑΒΛΗΤΕΣ[/B] [B]ΠΡΑΓΜΑΤΙΚΕΣ:[/B] Β, Γ, ΠΗΛΙΚΟ, ΥΠΟΛΟΙΠΟ [B]ΑΡΧΗ[/B] Β←7 Γ←3
Μία σκέψη
Γιατί τα Β και Γ είναι ΠΡΑΓΜΑΤΙΚΟΥ τύπου, άσχετα με το αν έχουν ακέραιες τιμές.Code:Β [B]DIV[/B] Γ [COLOR=DarkGreen][B]!ΛΑΘΟΣ[/B][/COLOR]
Το σωστό είναι:
Τα σχόλια δεν χρειάζονται στο πρόγραμμα, τα έβαλα για να καταλάβουμε τι παίζει.Code:[B]ΑΝ[/B] (Α_Μ(Β)=Β) [B]KAI[/B] (Α_Μ(Γ)=Γ) [B]ΚΑΙ[/B] (Β<>0) [B]ΤΟΤΕ[/B] [COLOR=DarkGreen][B]!Έτσι ελέγχουμε αν μεταβλητές οι Β και Γ έχουν ακέραιες τιμές. Αν ένας τουλάχιστον είναι δεκαδικός, δεν έχει νόημα να προχωρήσουμε. Και φυσικά ελέγχουμε ότι δεν διαιρούμε με το μηδέν.[/B][/COLOR] ΠΗΛΙΚΟ ← Α_Τ(Α_Μ(Β/Γ)) [COLOR=DarkGreen][B]!Κρατάμε το ακέραιο μέρος της διαίρεσης και ύστερα παίρνουμε την απόλυτη τιμή καθώς μπορεί να είναι αρνητικοί.[/B][/COLOR] ΥΠΟΛΟΙΠΟ ← Β - Γ * ΠΗΛΙΚΟ [COLOR=DarkGreen][B]!Ταυτότητα του Ευκλείδη. [/B][/COLOR] [B]ΑΝ[/B] Β*Γ<0 [B]ΤΟΤΕ[/B] [COLOR=DarkGreen][B]!Αν είναι ετερόσημοι, απλώς βάζουμε ένα '-' μπροστά από τα αποτελέσματα, όπως είπαμε προηγουμένως.[/B][/COLOR] ΠΗΛΙΚΟ ← (-1)*ΠΗΛΙΚΟ ΥΠΟΛΟΙΠΟ ← (-1)*ΥΠΟΛΟΙΠΟ [B]ΤΕΛΟΣ_ΑΝ[/B] [B]ΓΡΑΨΕ[/B] 'Πηλίκο = ', ΠΗΛΙΚΟ [B]ΓΡΑΨΕ[/B] Υπόλοιπο = ', ΥΠΟΛΟΙΠΟ [B]ΤΕΛΟΣ_ΑΝ[/B]
Από Γιώργος
Έλα ρε φίλε... Ωραίος για τη δουλειά που έκανες και το λεπτό σημείο που πρόσεξες αλλά πραγματικά πιστεύεις ότι αν γράψεις B DIV Γ υπάρχει περίπτωση να στο πάρει κανένας λάθος; Εγώ σου λέω ότι πιο πιθανό είναι να πέσεις σε κανένα γίδι που να μην έχει καταλάβει ή να μη δέχεται αυτά που έχεις κάνει εσύ και να σου κόψει από εκεί.
Θα μου πεις πως αυτός δεν είναι τρόπος να σκέφτεσαι. Θα σου πω OK.
ΔΙΟΡΘΩΣΗ: εκατσα και το έψαξα, οι πράξη a mod b με τον μαθηματικό ορισμό της δεν ορίζεται για a αρνητικό
Όχι βέβαια, ποιός τα λέει αυτά;
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Λεπόν... ναι, αν γράψεις Β DIV Γ και τα έχεις δηλώσει πραγματικού τύπου όλοι θα κόψουν. Ακόμη και το πιο γίδι "προγραμμαστής" ξέρει ότι το DIV είναι για ακέραιου τύπου μεταβλητές.Έλα ρε φίλε... Ωραίος για τη δουλειά που έκανες και το λεπτό σημείο που πρόσεξες αλλά πραγματικά πιστεύεις ότι αν γράψεις B DIV Γ υπάρχει περίπτωση να στο πάρει κανένας λάθος; Εγώ σου λέω ότι πιο πιθανό είναι να πέσεις σε κανένα γίδι που να μην έχει καταλάβει ή να μη δέχεται αυτά που έχεις κάνει εσύ και να σου κόψει από εκεί.
Θα μου πεις πως αυτός δεν είναι τρόπος να σκέφτεσαι. Θα σου πω OK.
Είναι γενικά ένα μάθημα που επειδή πολύ απλά δεν μαθαίνεις κάποια υπαρκτή γλώσσα προγραμματισμού, είναι περίεργα όλα: η σύνταξη, οι εντολές, κοκ, εφόσον στηρίζεσαι σ' ένα κακογραμμένο βιβλίο και πουθενά αλλού.
Το 2000, την πρώτη χρονιά, επιτρεπόταν να γράψεις προγράμματα και σε Turbo Pascal. Αν έδινες τότε θα σου 'λεγα με 1000 να γράψεις σε Pascal, που οι κανόνες είναι γνωστοί και κανείς δεν μπορεί να αμφισβητήσει αυτό που θα πας να κάνεις.
Ενώ εδώ είναι ένα πράγμα που αν πας και προσθέσεις ακέραιου τύπου με πραγματικού τύπου μεταβλητή (και την εκχωρήσεις σε πραγματικού τύπου μεταβλητή), βάση της σημείωσης πάνω δεξιά στη σελ. 155 του βιβλίου σου είναι λάθος. (Βέβαια, αν με κάποια άλλη λύση βγαίνει κάτι πιο πολύπλοκο, κλείσε τα μάτια και κάντο)
Γενικά εγώ σιχάθηκα τον "προγραμματισμό" εδώ. Αν και το γούσταρα σαν μάθημα, είναι ελεεινό.
Στο θέμα μας... αν πιστεύεις ότι αυτό που κάνεις δεν θα το καταλάβει, μπορείς να γράψεις μετά το πρόγραμμά σου τι κάνει και με ποια λογική το έγραψες έτσι. Δεν λέω για σχόλια μέσα στο πρόγραμμα, αυτά κατά τη γνώμη μου κουράζουν. Εννοώ μετά το πρόγραμμά σου να γράψεις σε 2-3 γραμμές τη λογική του προγράμματός σου για να το καταλάβει. Όχι με "!" που δηλώνει σχόλιο, κανονικό κείμενο, μετά το πρόγραμμα.
Αυτά, τις καλημέρες μου.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Afey
Πολύ δραστήριο μέλος
Καλά κάνεις εσύ και λες ποιό είναι το σωστό, μην παρεξηγηθούμε, απλά να είμαστε και λίγο πρακτικοί ρε αδερφέ.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Kristal
Εκκολαπτόμενο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Afey
Πολύ δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
zenctheo
Νεοφερμένος
Καλησπέρα,Αλγόριθμος vs ΓΛΩΣΣΑ
Βασικές Διαφορές (υπάρχουν κι άλλες):
- Η πρώτη βασική διαφορά είναι ότι όλες οι εντολές της ΓΛΩΣΣΑΣ γράφονται με ΚΕΦΑΛΑΙΑ, ενώ στην Αλγόριθμο με πεζά, με το πρώτο γράμμα κεφαλαίο (στις σελ. 36, 38 έχει τυπογραφικό, είναι με το πρώτο κεφαλαίο)
Από Γιώργος
Διάβασα με ενδιαφέρον τις οδηγίες που δίνεις όπως αυτή που παραθέτω και θα ήθελα κάνω μια ερώτηση.
Το γεγονός ότι η παραβίαση αυτών των κανόνων θα οδηγήσει σε λάθος το ξέρουμε σίγουρα; Έχει δοθεί σχετική οδηγία απο το υπουργείο για να θεωρούνται λάθη πχ τα κεφαλαία στους αλγόριθμους η χρήση της λέξης εμφάνισε κλπ;
Απ' όσο ξέρω μέχρι τώρα οι οδηγίες που έχουν δοθεί δεν αφορούν και δεν καθορίζουν κάτι τέτοιο άρα τα πράγματα είναι ρευστά. Πράγμα που σημαίνει ότι τίποτα από τα παραπάνω δεν αποτελεί λάθος αν δεν το ακολουθήσεις. Γνωρίζει κανείς κάτι παραπάνω;
Καλά κάνεις και αναφέρεις τις οδηγίες, οπότε να υπαρχει ένα πλαίσιο στο οποίο θα ξέρουμε τι να γράψουμε αλλα είναι ανάγκη να υπάρχει τόσο μεγάλη αυστηρότητα και να γεμίζουμε το κεφάλι μας με κανόνες;
Σε ευχαριστώ πολύ.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
::Forg0tt3n::
Εκκολαπτόμενο μέλος
Αν συνθήκη τότε
εντολές
αλλιώς_αν συνθήκη τότε
έντολες
Τέλος_αν
Ευχαριστώ!
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Scandal
Διαχειριστής
Από τη στιγμή που ακολουθεί συνθήκη πρέπει να χρησιμοποιήσεις το αλλιώς_αν .Γνωρίζει κάποιος εάν μπορούμε να χρησιμοποιήσουμε το εξής;
Δηλαδή να μην χρησιμοποιήσουμε το αλλιώς;Code:Αν συνθήκη τότε εντολές αλλιώς_αν συνθήκη τότε έντολες Τέλος_αν
Ευχαριστώ!
Για παράδειγμα, θέλουμε να εκτελεστούν οι εντολές1 μόνο αν το Α είναι θετικό ή μηδέν και οι εντολές2 μόνο αν το Α είναι αρνητικό. Μπορούμε να πούμε:
Αν Α >= 0 τότε
εντολές1
αλλιώς
εντολές2
τέλος_αν
Επομένως δεν είναι απαραίτητο να βάλουμε και συνθήκη με αλλιώς_αν Α<0. Βάζουμε ένα σκέτο αλλιώς
"Αν η συνθήκη είναι αληθής κάνε αυτό. Αν δεν είναι αληθής τότε κάνε το άλλο χωρίς να εξετάσεις τίποτα".
Το _αν ουσιαστικά σημαίνει πως ακολουθεί μια συνθήκη.
Ελπίζω να κατάλαβα καλά το ερώτημά σου.
-petros
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
::Forg0tt3n::
Εκκολαπτόμενο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Scandal
Διαχειριστής
Δηλαδή να πούμε:Όχι δεν κατάλαβες. Εγώ λέω εάν γίνετε να μην μπει το αλλίως.
Αν συνθήκη τότε
εντολές
τέλος_αν
Ναι, γίνεται. Αν η συνθήκη είναι αληθής θα εκτελεστούν οι εντολές. Αν όχι τότε το πρόγραμμα/ αλγόριθμος θα συνεχίσει να εκτελείται κανονικά προσπερνώντας τις εντολές. :iagree:
-petros
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
::Forg0tt3n::
Εκκολαπτόμενο μέλος
Δηλαδή να πούμε:
;Code:Αν συνθήκη τότε εντολές τέλος_αν
Ναι, γίνεται. Αν η συνθήκη είναι αληθής θα εκτελεστούν οι εντολές. Αν όχι τότε το πρόγραμμα/ αλγόριθμος θα συνεχίσει να εκτελείται κανονικά προσπερνώντας τις εντολές. :iagree:
-petros
Έννοω να πούμε αυτό που έγραψα και στο πρώτο ποστ:
Αν συνθήκη τότε
εντολές
αλλιώς_αν συνθήκη τότε
έντολες
Τέλος_αν
Ευχαριστώ για τις απαντήσεις btw.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Χρήστες Βρείτε παρόμοια
-
Τα παρακάτω 0 μέλη και 1 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:Tα παρακάτω 6 μέλη διάβασαν αυτό το θέμα:
-
Φορτώνει...
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.