Τώρα είναι Πέμ 28 Μαρ 2024 12:36 pm

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]




Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 5 Δημοσιεύσεις ] 
Συγγραφέας Μήνυμα
ΔημοσίευσηΔημοσιεύτηκε: Παρ 02 Μάιος 2003 04:45 pm 
Χωρίς σύνδεση

Εγγραφή: Πέμ 01 Μάιος 2003 10:25 pm
Δημοσιεύσεις: 38
Τοποθεσία: Καλλιθέα Αττικής
Παρακάτω στέλνω ένα απλό πρόγραμμα που δείχνει μια γεννήτρια ψευδοτυχαίων αριθμών. Δεν είναι ό,τι πιο τέλειο. Μπορεί όμως να αλλάξει κανείς τις σταθερές για να πετύχει καλύτερες συχνότητες εμφάνισης τυχαίων αριθμών (εδώ στο παράδειγμα εστιάζουμε στους τυχαίους από 1 έως 100)


Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ τυχαιος_αριθμος
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΑΡΧΙΚΟ, ΝΕΟ, Ι, ΑΠ, ΣΥΧΝΟΤΗΤΑ[100], ΜΕΓΙΣΤΟ
ΑΡΧΗ
  ΑΡΧΙΚΟ <-- 12123
  ΜΕΓΙΣΤΟ <-- 100000
  ΓΡΑΨΕ 'ΘΑ ΚΑΝΩ ΕΛΕΓΧΟ ΣΕ ',ΜΕΓΙΣΤΟ,' ΝΟΥΜΕΡΑ'
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ΜΕΓΙΣΤΟ
    ΚΑΛΕΣΕ ΤΥΧΑΙΟΣ(ΑΡΧΙΚΟ, ΝΕΟ)
    ΑΠ <-- (ΝΕΟ DIV 100) +1
    ΣΥΧΝΟΤΗΤΑ[ΑΠ] <-- ΣΥΧΝΟΤΗΤΑ[ΑΠ]+1
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
    ΓΡΑΨΕ_ Ι,'[',ΣΥΧΝΟΤΗΤΑ[Ι],'] '
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

ΔΙΑΔΙΚΑΣΙΑ ΤΥΧΑΙΟΣ(Α,Ν)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α, Ν
ΑΡΧΗ
  Ν <-- Ν + Α DIV 123
  Α <-- Ν + Α MOD 13031
  Ν <-- (Ν MOD 100)*100+(Ν DIV 100) MOD 100
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

 

_________________
Γλώσσα προγραμματισμού M2000


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Πέμ 21 Ιούλ 2011 10:59 am 
Χωρίς σύνδεση

Εγγραφή: Πέμ 21 Ιούλ 2011 10:39 am
Δημοσιεύσεις: 3
Έτρεξα το πρόγραμμα σου αλλά δεν έχεις ορίσει τη μεταβλητή Ν. Καλό φαίνεται μόνο τη μεταβλητή να ορίσεις και θα είσαι κομπλέ ;)


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Κυρ 24 Ιούλ 2011 05:36 pm 
Χωρίς σύνδεση

Εγγραφή: Πέμ 01 Μάιος 2003 10:25 pm
Δημοσιεύσεις: 38
Τοποθεσία: Καλλιθέα Αττικής
Νομίζω δεν χρειάζεται.
την Ν την χρησιμοποιώ ως μεταβλητή εξόδου, και ορίζεται στην Συνάρτηση By reference, ορίζεται δηλαδή μόνο ο τύπος, όχι το περιεχόμενο.
Επιπλέον στην κλήση της συνάρτησης χρησιμοποιώ την ΝΕΟ που και αυτή ορίζεται αλλά δεν δίνω αρχική τιμή. Γιατί; Γιατί δεν με ενδιαφέρει. Επειδή μπορούν να συμβαίνει ένα από τα δύο: Ή ο μεταγλωττιστής να κάνει αρχικοποίηση από μόνος του με τιμή μηδέν, ή να το αφήνει ως έχει η μνήμη που διατέθηκε για την μεταβλητή (είναι αυτό που λέμε undefined). Επειδή σκοπός μας στη ΝΕΟ είναι να έχουμε μια τυχαία τιμή....πραγματικά δεν μας ενδιαφέρει ποιος από τους δυο τρόπους παίζει.

*By value πέρασμα μιας μεταβλητής σε μια συνάρτηση (ή υπορουτίνα) γίνεται και στο τύπο και στο περιεχόμενο, έτσι κάθε αλλαγή στο αντιγραμμένο περιεχόμενο δεν επιστρέφεται στην αρχική μεταβλητή. Για να το καταλάβει κανείς αυτό καλύτερα αρκεί να καταλάβει ότι το by reference πέρασμα σημαίνει ότι όπου μέσα στην συνάρτηση υπάρχει το ίδιο όνομα μεταβλητής μπαίνει ένας δείκτης στην μνήμη της μεταβλητής έτσι ώστε όταν κληθεί η συνάρτηση να αλλάζει πραγματικά η μεταβλητή, ενώ στο By value φτιάχνεται μια νέα μεταβλητή τοπικά (με το πέρας της συνάρτησης η μεταβλητή χάνεται), και αντιγράφεται στη μνήμη της η μνήμη της μεταβλητής στην κλήση

Στη ΓΛΩΣΣΑ όλα τα περάσματα στις συναρτήσεις-υπορουτίνες είναι By Reference

_________________
Γλώσσα προγραμματισμού M2000


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Τρί 26 Ιούλ 2011 02:26 am 
Χωρίς σύνδεση

Εγγραφή: Παρ 30 Μάιος 2008 09:46 pm
Δημοσιεύσεις: 49
Σωστά αυτά που λες αλλά αν έγραφες σε κάποια άλλη γλώσσα, όπως c :wink: . Η ΓΛΩΣΣΑ δεν δέχεται μη αρχικοποιημένες μεταβλητές. Κατά την εκτέλεση εμφανίζεται σφάλμα. Τα στοιχεία του πίνακα ΣΥΧΝΟΤΗΤΑ θέλουν και αυτά αρχικοποίηση. Το ΑΠ <-- (ΝΕΟ DIV 100) +1 φαίνεται "επικύνδινο", μήπως εννοείς ΑΠ <-- (ΝΕΟ MOD 100) +1 ? ("Παράδοξο", για ΝΕΟ <-- 0 δεν υπάρχει πρόβλημα υπερχείλισης (overflow) ! :P :shock: )

Επίσης στην ΓΛΩΣΣΑ by reference περνιούνται οι μεταβλητές μόνο στις διαδικασίες. Στις συναρτήσεις περνάνε by value.
Για να γίνει λίγο πιο κατανοητό, by reference σημαίνει ότι χρησιμοποιείται η ίδια θέση μνήμης/μεταβλητή, ενώ by value σημαίνει ότι δημιουργείται μια καινούργια μεταβλητή η οποία παίρνει την τιμή της μεταβλητής που χρησιμοποιείται κατά το κάλεσμα της συνάρτησης.

_________________
"Δύο πράγματα είναι ατελείωτα (άπειρα), το σύμπαν και η ανθρώπινη βλακεία, για το 1ο δεν είμαι σίγουρος." Einstein
"Τα πάντα ρει" (Τα πάντα ρέουν/αλλάζουν) Ηράκλειτος
"Μη μου τους κύκλους τάραττε" Αρχιμήδης


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Σάβ 05 Ιαν 2013 10:51 pm 
Χωρίς σύνδεση

Εγγραφή: Πέμ 01 Μάιος 2003 10:25 pm
Δημοσιεύσεις: 38
Τοποθεσία: Καλλιθέα Αττικής
Προφανώς έχεις δίκιο!
Δεν ασχολήθηκα με τη ΓΛΩΣΣΑ από το 2003...μέχρι σήμερα!

_________________
Γλώσσα προγραμματισμού M2000


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
Τελευταίες δημοσιεύσεις:  Ταξινόμηση ανά  
Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 5 Δημοσιεύσεις ] 

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]


Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 3 επισκέπτες


Δεν μπορείτε να δημοσιεύετε νέα θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επεξεργάζεστε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να διαγράφετε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επισυνάπτετε αρχεία σε αυτή τη Δ. Συζήτηση

Αναζήτηση για:
Μετάβαση σε:  
cron
Προβολές: