Προς το περιεχόμενο

Μικρες αποριουλες για γλωσσα σχολειου 3ης λυκειου :)


Brazzers 1080p

Προτεινόμενες αναρτήσεις

Το πρώτο μάθημα για όλες τις γλώσσες είναι αυτό:

Εκχώρηση τιμής σε όνομα...το Α λέγεται μεταβλητή

Α=10

Ισχύει αυτό:

Α=Α+1

Διότι πρώτα εκτελείται η παράσταση στο δεξί μέρος, και μετά εκχωρείται η τιμή, Σε βελτιστοποίηση αυτό μπορεί να γίνει Α++ αλλά μόνο επειδή είναι αυτό, ενώ σε αυτό: Α=Κ*Λ+Α*Β+10 δεν γίνεται κάτι πιο βέλτιστο.

Εισαγωγή/Εξαγωγή τιμής

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

Όλες οι γλώσσες κάνουν δυο ειδών επεξεργασίες: παράγουν αριθμητικά αποτελέσματα και σημαίες συνθηκών. Το πρώτο είναι κατανοητό άμεσα. Το δεύτερο μας λέει αν μια συνθήκη, με την γενική έννοια,  είναι αληθής ή ψευδής, και αυτό το αποτέλεσμα λέγεται σημαία (flag). Οι ισότητες/ανισότητες και οι λογικές πράξεις Μπουλ δίνουν τιμές για σημαίες. Σημαίες φτιάχνει το πρόγραμμα σαν μεταβλητές ή άμεσα όταν ελέγχει μια συνθήκη.

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

Στάδια ενός προγράμματος: Αρχικοποίηση μεταβλητών/Πινάκων, εισαγωγή, επεξεργασία, εξαγωγή. Σε κάποιες γλώσσες ο τερματισμός υποχρεωτικά έχει και ένα καθάρισμα! 

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

Ευκολίες στο προγραμματισμό: Αν  μέρη κώδικα θέλουμε να τα χρησιμοποιήσουμε ξανά τότε τα βάζουμε σε ρουτίνες, και καλούμε με όνομα ή αριθμό, με κάτι ξεχωριστό. Με το πέρας της εκτέλεσης του κώδικα της ρουτίνας ξαναγυρνάει η ροή στην επόμενη εντολή μετά τη κλήση. Στη Γλώσσα του σχολείου αυτό ΔΕΝ ΓΙΝΕΤΑΙ. Αντί για ρουτίνες η ΓΛΩΣΣΑ έχει υποπρογράμματα.Τα οποία φαινομενικά όταν τα καλούμε κάνουν το ίδιο, εκτελούν ένα πρόγραμμα και επιστρέφουν στην εντολή μετά την εντολή της κλήσης τους. Η διαφορά είναι ότι στη ρουτίνα οι μεταβλητές του προγράμματος είναι προσβάσιμες, ενώ στο υποπρόγραμμα οι μεταβλητές δεν είναι προσβάσιμες. Για να καταστήσουμε κάποια μεταβλητή προσβάσιμη πρέπει να την περάσουμε στο υποπρόγραμμα με αναφορά. Και πάλι η αλλαγή δεν θα γίνει άμεσα, αλλά με το πέρας τις διαδικασίας. Τα υποπρογράμματα λέγονται Διαδικασίες, και παρόμοιες είναι και οι Συναρτήσεις, μόνο που εδώ γυρνούν τιμή, και βρίσκονται σε παραστάσεις (αριθμητικές ή συνθηκών). Επειδή λοιπόν ότι περνάμε σε διαδικασίες και συναρτήσεις πρέπει να ορίζεται, στον ορισμό τους έχουμε μαζί με το όνομα και τις παραμέτρους που ζητάμε, ή απλά χορηγούμε (μεταφορά πληροφορίας). Στη Γλώσσα του σχολείου καθορίζεται το πέρασμα με αναφορά στη χρήση, δηλαδή αν βάλουμε μεταβλητή πχ Κάλεσε Δ(Α) στο κάλεσμα της διαδικασίας θα έχουμε πέρασμα με αναφορά, αν βάλουμε παράσταση π.χ. Κάλεσε Δ(3+Α) θα έχουμε πέρασμα με τιμή, αν βάλουμε το Α σε παρενθέσεις τότε έχουμε παράσταση άρα πέρασμα με τιμή.

 

Περί γενικών μεταβλητών. Αν είχαμε Γενικές (ή σφαιρικές) μεταβλητές στη Γλώσσα τότε θα μπορούσαμε να τις βλέπαμε σε διαδικασίες, χωρίς να τις δηλώναμε ως παραμέτρους. Όταν μια διαδικασία καλέσει τον εαυτό της τότε λέμε ότι έχουμε κλήση με αναδρομή. Είναι ένας τρόπος επανάληψης που μπορεί να εξαντλήσει το σύστημα που κρατάει τις επιστροφές, και να βγει λάθος (out of stack).

 

Τέλος να αναφέρω ότι όλα τα ονόματα, ή αλλιώς αναγνωριστικά που δίνουμε έχουν γραμματικούς κανόνες, να έχουν το πρώτο γράμμα και μετά μπορεί να ακολουθεί γράμμα ή αριθμός και η κάτω παύλα _ . Οι σημαίες μπορούν να κρατηθούν σε Λογικές μεταβλητές (λέγονται λογικές λόγω μετάφρασης, όχι λόγω ουσίας). Τα αλφαριθμητικά είναι και αυτά σταθερές ή μεταβλητές ανάλογα, και υπάρχουν συνθήκες που μπορούν να παίξουν σε αυτά. Έτσι μπορούμε να βρούμε αν δυο αλφαριθμητικά ταυτίζονται, ή αν κάποιο είναι μικρότερο σε αύξουσα σειρά ταξινόμησης από το άλλο, π.χ. το "Α" είναι μικρότερο από το "ΒΓΔ" ενώ το δεύτερο έχει μεγαλύτερο μήκος, το μικρότερο σημαίνει ότι έρχεται πρώτο το "Α" σε ταξινόμηση από το "ΒΓΔ".

 

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

 

Δεν αναφέρω πουθενά για αντικείμενα, γιατί είναι έτσι και αλλιώς εκτός θέματος στη Γλώσσα.

 

Ελπίζω Brazzers 1080p κάτι να τσίμπησες από τα παραπάνω (διάβασέ τα και δεύτερη και τρίτη φορά)

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 66
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Σας ευχαριστω ολους για τις απαντησεις σας.

 

Σε ευχαριστω και εσενα προσωπικα M2000 για τον μινι οδηγο σου.1 απορια εχω ομως.

 

Τι σημαινει επακριβως περασμα με τιμη και αναφορα?ΤΟ συζητησαμε να δεις τις προαλλες με τον δασκαλο αλλα δεν μου εμεινε,Ευχαριστω!

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Moderators

Έστω ότι έχεις μια ακέραια μεταβλητή, έστω Χ, στο πρόγραμμά σου και μια συνάρτηση που δέχεται ως όρισμα μια ακέραια μεταβλητή. Αν περάσεις το Χ by value (με τιμή), τότε στη συνάρτηση θα έχεις μια καινούρια ακέραια μεταβλητή που απλώς θα έχει την ίδια τιμή με το Χ. Αν περάσεις το Χ by reference (με αναφορά), τότε στη συνάρτησή σου δε θα έχεις μια καινούρια μεταβλητή, θα έχεις μια αναφορά στο Χ. Αυτό σημαίνει ότι αν αλλάξεις την τιμή αυτής της αναφοράς, θα αλλάξει και η τιμή του Χ.

Ελπίζω να γίνει πιο κατανοητό με κώδικα.

 

 

int a = 3;
 
function Func(int IntVariable)
{
    IntVariable = 5;
}
 
print a;

 

Αυτό το print θα σου εκτυπώσει 3, μιας και πέρασες το a by value. Η παρακάτω συνάρτηση δέχεται ένα reference σε int:

 

 

int a = 3;
 
function Func(int & IntVariable)
{
    IntVariable = 5;
}
 
print a;

 

Αυτό θα εκτυπώσει 5, γιατί το IntVariable είναι reference της μεταβλητής a, άρα ό,τι αλλαγή γίνει στο IntVariable θα γίνει και στο a.

 

Έχω την εντύπωση ότι δεν το εξηγώ πολύ καλά οπότε αν δεν καταλαβαίνεις ρώτα.

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το by reference και by value είναι χαρακτηρισμός χρήσης ιδιότητας και όχι ιδιότητα.

 

 

Θα έλεγα και παραπάνω, αλλά τα pm που πήρα από τον OP με κάνουν να μη θέλω.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Για παράδειγμα θες να αλλάξεις δυο τιμές.

Έστω ότι έχουμε σε δυο μεταβλητές τις Α και Β τιμές το 5 και 6. Θέλουμε να φτιάξουμε μια διαδικασία που θα λέγεται Swap, θα δίνουμε αυτό Swap A, B και θα παίρνουμε στα Α και Β τις τιμές 6 και 5. Προφανώς ο τρόπος να γίνει χωρίς αυτή τη διαδικασία θα ήταν να χρησιμοποιήσουμε μια τρίτη μεταβλητή τη Γ και θα κάνουμε τρεις αλλαγές...η Γ θα πάρει το 5 από την Α, η Α το 6 από την Β και η Β το 5 από την Γ, άρα θα έχουμε τα Α και Β με τιμές 6 και 5.

 

Καλό αυτό βέβαια αλλά τη Γ δεν την θέλουμε άλλο! Ένας λόγος που θα χρησιμοποιήσουμε τη Swap είναι για να κρύψουμε την διαδικασία, αλλά και για να πετάξουμε τη Γ. Μεταφέρουμε πληροφορία τα Α και Β και τα λαμβάνουμε ως Α και Β, και ότι ενδιάμεσο χρησιμοποιήθηκε, όπως το Γ πάει στα σκουπίδια!  Η Γ θεωρείται τοπική στη Swap και αυτή θα χρησιμοποιείται από όποιο σημείο του προγράμματος καλέσουμε την Swap. Άρα καλύψαμε το θέμα της τοπικής και τώρα μας μένει να δούμε το μηχανισμό της By Reference ή Με αναφορά πέρασμα τιμής.

 

Ξεκαθαρίζουμε εδώ ότι ακόμα και μια έκφραση όπως 12+4 δίνει το αποτέλεσμα κάπου, έστω Κρυφός_Συσσωρευτής_Α. Η κλήση στη διαδικασία έχει δυο στάδια...Είσοδος και έξοδος. Στην είσοδο μπορούν να συμβούν ένα από τα δύο:

1) να υπάρχει η κρυφή μεταβλητή και να γίνει αντιγραφή στην τοπική Χ και μετά η επόμενη κρυφή στην τοπική Υ (λέγεται διαδικασία copy in copy out) και στο κλείσιμο, όταν τερματίσει η διαδικασία, βάσει μια σημαίας (είναι ένα πεδίο του ενός bit) σε κάθε κρυφή μεταβλητή θα δοθεί ή όχι η τελική τιμή πίσω. Αν έχουμε δώσει μεταβλητή με αναφορά, τότε αντί της κρυφής μεταβλητής είναι αυτή η μεταβλητή που θα πάρει την τιμή, ενώ αν έχουμε περάσει έκφραση, θα το πάρει η κρυφή, η οποία πετιέται (και προφανώς το bit που ελέγχει αν θα γραφτεί πίσω η τιμή θα αποκλείσει άσκοπη γραφή).

2) Ο άλλος τρόπος είναι να απαιτεί η διαδικασία πέρασμα με αναφορά επειδή έτσι το λέει η υπογραφή της διαδικασίας (δηλαδή το πώς ορίζονται οι παράμετροι, ή η λίστα των παραμέτρων). Σε αυτή την περίπτωση το πρόγραμμα δεν ασχολείται με bit που καθορίζει ή όχι την επιστροφή...και κατά την μετάφραση απορρίπτει ως λάθος το πέρασμα έκφρασης.

 

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

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τι σημαινει επακριβως περασμα με τιμη και αναφορα?ΤΟ συζητησαμε να δεις τις προαλλες με τον δασκαλο αλλα δεν μου εμεινε,Ευχαριστω!

 

Πέρασμα με τιμή σημαίνει ότι έχοντας μια μεταβλητή A και περνώντας την κάπου με τιμή ως όρισμα με το όνομα Β έχεις πλέον δύο όμοιες τιμές με τα ονόματα Α και Β οι οποίες λογικά είναι τελείως ανεξάρτητες.

 

Πέρασμα με αναφορά σημαίνει ότι έχοντας μια μεταβλητή A και περνώντας την κάπου με αναφορά ως όρισμα με το όνομα Β έχεις πλέον δύο διαφορετικά ονόματα Α και Β για να αναφέρεσαι σε ένα και το αυτό πράγμα.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σας ευχαριστω θερμα για τις απαντησεις σας,θα τις δω καποια στιγμη αυριο καθως αυτη τη στιγμη νυσταζω!Καληνυχτα στη παρεα λοιπον!

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Defacer

στη Γλώσσα του σχολείου δεν ισχύει αυτό με την αναφορά (είναι ο δεύτερος τρόπος που έγραψα πιο πριν), αλλά το copy in copy out. και αυτό σημαίνει ότι αν δώσω δυο φορές την Α και Α σε μια διαδικασία που ζητάει την Χ και Υ με αναφορά, τότε αν πριν την επιστροφή το Χ γίνει 5 και το Υ γίνει 6 η Α θα έχει το 6. Στην περίπτωση που αναφέρεις οι Χ και Υ θα είναι ακριβώς η ίδια Α άρα δεν θα μπορούσε να λειτουργήσει η διαδικασία.

π.χ. στη Swap τα Γ=Χ, Χ=Υ, Υ=Γ θα ήταν Γ=Χ, Χ=Χ, Χ=Γ, και δεν θα είχαμε πρόβλημα στην έξοδο, αλλά σε άλλη περίπτωση μπορεί να προκύψει! Βεβαίως ποιος θα έβαζε δυο μεταβλητές με αναφορά;

Η ουσία του copy in copy out είναι στην απομόνωση της διαδικασίας από το χώρο μνήμης αυτού που καλεί. Σίγουρα τα ξέρεις αυτά και καλύτερα από μένα. Απλά τα αναφέρω εδώ γιατί η Γλώσσα έχει αυτό το Link.png Site: χαρακτηριστικό :

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Defacer

στη Γλώσσα του σχολείου δεν ισχύει αυτό με την αναφορά (είναι ο δεύτερος τρόπος που έγραψα πιο πριν), αλλά το copy in copy out. και αυτό σημαίνει ότι αν δώσω δυο φορές την Α και Α σε μια διαδικασία που ζητάει την Χ και Υ με αναφορά, τότε αν πριν την επιστροφή το Χ γίνει 5 και το Υ γίνει 6 η Α θα έχει το 6.

 

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

 

Παράδειγμα.

 

Edit: "το ίδιο πράγμα" όσον αφορά το αποτέλεσμα. Γιατί copy in/copy out και αναφορές είναι τελείως διαφορετικά πράγματα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μάλλον το παράδειγμά μου δεν ήταν το σωστό. Αν περάσουμε Α, Α με αναφορά, και το πρώτο πάει στο Χ και το δεύτερο στο Υ, τότε αν το Χ γίνει Χ+1, η Υ δεν θα γίνει Υ+1, έτσι αν βάλουμε τιμή 5 στην Α, η Α που θα γυρίσει θα έχει το 5 και όχι το 6. Αν η αναφορά περνάει με διεύθυνσεις,τότε θα πάρουμε το 6

Στη πρώτη περίπτωση αντιγράφεται το 5 στα Χ και Υ και μετά η τιμή του Χ που έχει γίνει 6 πάει στο Α, και μετά η τιμή του Υ που είναι 5 πάει στο Α.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Έστω ότι έχεις μια ακέραια μεταβλητή, έστω Χ, στο πρόγραμμά σου και μια συνάρτηση που δέχεται ως όρισμα μια ακέραια μεταβλητή. Αν περάσεις το Χ by value (με τιμή), τότε στη συνάρτηση θα έχεις μια καινούρια ακέραια μεταβλητή που απλώς θα έχει την ίδια τιμή με το Χ. Αν περάσεις το Χ by reference (με αναφορά), τότε στη συνάρτησή σου δε θα έχεις μια καινούρια μεταβλητή, θα έχεις μια αναφορά στο Χ. Αυτό σημαίνει ότι αν αλλάξεις την τιμή αυτής της αναφοράς, θα αλλάξει και η τιμή του Χ.

Ελπίζω να γίνει πιο κατανοητό με κώδικα.

int a = 3;
 
function Func(int IntVariable)
{
    IntVariable = 5;
}
 
print a;

Αυτό το print θα σου εκτυπώσει 3, μιας και πέρασες το a by value. Η παρακάτω συνάρτηση δέχεται ένα reference σε int:

int a = 3;
 
function Func(int & IntVariable)
{
    IntVariable = 5;
}
 
print a;

Αυτό θα εκτυπώσει 5, γιατί το IntVariable είναι reference της μεταβλητής a, άρα ό,τι αλλαγή γίνει στο IntVariable θα γίνει και στο a.

 

Έχω την εντύπωση ότι δεν το εξηγώ πολύ καλά οπότε αν δεν καταλαβαίνεις ρώτα.

 

Δεν καταλαβαινω πως το κάνεις το by reference

 
    #include <stdio.h>
    void change_value( int *x );
     
    int main(void) {
        int x=2;
     
        printf(" x is : %d" , x);  // 2
        change_value( &x );
        printf(" x now is: " , x); // 7
        
        return 0;
    }
    void change_value( int *x)
    {
        *x = 7;
    }
 

Εγω έτσι το ξέρω. Περνάς την τιμή της διεύθυνσης της x στην παράμετρο int *x της συνάρτησης και μετα χειριζεσαι την μεταβλητή x μέσα στην συνάρτηση τοπικά σαν να ειναι δείκτης. Αυτος ο δεικτης έχει ηδη την τιμή της διευθυνσης x λογω της κλήσης που προηγειται στην main.

Επεξ/σία από DDevil
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

DDevil,
το παράδειγμά σου κάνει ότι το πέρασμα με αναφορά, αλλά δεν είναι πέρασμα με αναφορά την ώρα της κλήσης, αλλά γίνεται όταν το πέρασμα με τιμή της διεύθυνσης την δίνεις σε δείκτη και έτσι έμμεσα (indirect) βλέπεις την μεταβλητή με αναφορά. Λέγεται και πέρασμα με διεύθυνση.
Στο πέρασμα με αναφορά αυτός ο μηχανισμός γίνεται μια και έξω, αποδίδεται η διεύθυνση στην τοπική μεταβλητή και τέλος μετά, δηλαδή δεν μπορείς να αλλάξεις αναφορά στο ενδιάμεσο. Σε αντίθεση με αυτό, ο δείκτης παίρνει ότι θέλεις.
 
Π.χ. σε VB6 σε ένα Module έχουμε αυτό:
 
Sub Alfa(X As Object)
Set X = New Something
X.value = 10
End Sub
 
Sub Main()
Dim Y As New Something
Y.value = 5
Y.Second = 1000
Alfa Y
Debug.Print Y.value, Y.Second
End Sub
 
Και σε μια κλάση Something αυτό:
Public value As Variant
Public Second As Variant
 
Private Sub Class_Initialize()
value = 0
Second = 0
End Sub
 
Εκτελούμε άμεσα την Main και βλέπουμε ότι άλλαξε η τιμή Value που θέλαμε αλλά άλλαξε και η Second που δεν θέλαμε...Γιατί στην ουσία το πρώτο Something κρατιόταν από μια αναφορά του στη Υ. Στη VB6 υπάρχει μετρητής σε κάθε αντικείμενο όπου αν μηδενιστεί το αντικείμενο παίρνει μήνυμα terminate...και καταστρέφεται!
 
Sub Alfa(X)
X = 10
End Sub
 
Sub Main()
Dim Y As New Something
Y.value = 5
Y.Second = 1000
Alfa Y.value
Debug.Print Y.value, Y.Second
End Sub
 

Τώρα δουλεύει σωστά γιατί πέρασα by reference την ιδιότητα του αντικειμένου. Στη C# αν δεν κάνω λάθος δεν μπορείς να περάσεις By reference ιδιότητα αντικειμένου.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Βασικά ναι. Τυπικά στην C δεν υπάρχει πέρασμα με αναφορά. Ολα περνάνε με τιμή και η διευθυνση της μεταβλητής που ειπες πριν ειναι μια τιμή.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...