Απορία στις λίστες

Ξεκίνησε από kkkerm, 03 Φεβ 2020, 06:10:53 ΜΜ

« προηγούμενο - επόμενο »

kkkerm

Θα ήθελα την βοήθειά σας...

Στο βιβλίο Πληροφορική στη σελίδα 38 πριν την εικόνα 1.3.2. γράφει: "Το πεδίο Δεδομένα μπορεί να περιέχει μία ή περισσότερες αλφαριθμητικές ή αριθμητικές πληροφορίες."

Υπάρχει δηλ. η έννοια της εγγραφής στο τμήμα δεδομένα του κόμβου μιας λίστας? Αν ναι,  γιατί δεν μπήκαν στον κόπο να αναφέρουν κάποιο παράδειγμα...

tsak

Εγώ να ρωτήσω κάτι πιο απλό? Οι λογικές τιμές γιατί να μην αναφέρονται?

akalest0s

Παράθεση από: kkkerm στις 03 Φεβ 2020, 06:10:53 ΜΜ
Υπάρχει δηλ. η έννοια της εγγραφής στο τμήμα δεδομένα του κόμβου μιας λίστας? Αν ναι,  γιατί δεν μπήκαν στον κόπο να αναφέρουν κάποιο παράδειγμα...
Δεν αναφέρεται πουθενά ρητά, αλλά νομίζω το βιβλίο το παίρνει ως αυτονόητο, εφόσον μιλάμε για "δεδομένα". Αλλιώς ποιο είναι το νόημα; Κάποια στιγμή δεν πρέπει μια λίστα να δημιουργεί τους κόμβους της και να περνάνε τιμές στο πεδίο "δεδομένα" κάθε κόμβου; Φαντάζομαι είναι τόσο αυτονόητο που για αυτό δεν το λέει πουθενά ρητά. Κακώς βέβαια, η παρατήρηση νομίζω είναι έγκυρη.

Παράθεση από: tsak στις 06 Φεβ 2020, 12:41:33 ΜΜ
Εγώ να ρωτήσω κάτι πιο απλό? Οι λογικές τιμές γιατί να μην αναφέρονται?
Αυτό είναι απορία και δικιά μου. Στο σημείο αυτό αντιγράφουν το βιβλίο μαθητή. Γιατί δεν πρόσθεσαν και τις λογικές τιμές;

Και μια ακόμη απορία..
Στην σελίδα 41, συμπληρωματικό βιβλίο μαθητή, αναφέρεται η ταξινόμηση ως λειτουργία των λιστών ("Σε μια διπλά συνδεδεμένη λίστα διευκολύνεται η ταξινόμηση και η αναζήτηση(...)"), ωστόσο στη σελίδα 43, στις "Βασικές πράξεις των συνδεδεμένων λιστών", η ταξινόμηση λείπει... Γιατί;
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

bagelis

Παράθεση από: akalest0s στις 24 Φεβ 2020, 10:22:07 ΜΜ
Και μια ακόμη απορία..
Στην σελίδα 41, συμπληρωματικό βιβλίο μαθητή, αναφέρεται η ταξινόμηση ως λειτουργία των λιστών ("Σε μια διπλά συνδεδεμένη λίστα διευκολύνεται η ταξινόμηση και η αναζήτηση(...)"), ωστόσο στη σελίδα 43, στις "Βασικές πράξεις των συνδεδεμένων λιστών", η ταξινόμηση λείπει... Γιατί;

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

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

martha-ts

Παράθεση από: tsak στις 06 Φεβ 2020, 12:41:33 ΜΜΕγώ να ρωτήσω κάτι πιο απλό? Οι λογικές τιμές γιατί να μην αναφέρονται?
Γειά σας! Τελικά, οι λογικές τιμές είναι αποδεκτές ως δεδομένα σε λίστες? Μπορεί κανείς να αναφέρει κάποιο παράδειγμα?
Ευχαριστώ!

gpapargi

Παράθεση από: martha-ts στις 21 Μαρ 2022, 05:55:58 ΜΜΓειά σας! Τελικά, οι λογικές τιμές είναι αποδεκτές ως δεδομένα σε λίστες? Μπορεί κανείς να αναφέρει κάποιο παράδειγμα?
Ευχαριστώ!

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

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

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

martha-ts

Ευχαριστώ πολύ ! Με καλύψατε με την απάντησή σας !

tasospap

Καλημέρα σε όλους, θέλω να ρωτήσω το εξής. Ο τελευταίος κόμβος μιας απλά συνδεδεμένης λίστας περιέχει την τιμή 0 ως δείκτη ή δεν περιέχει καμία τιμή;

Αποστολάτος Άκης

Παράθεση από: tasospap στις 15 Μαρ 2023, 12:19:37 ΜΜΚαλημέρα σε όλους, θέλω να ρωτήσω το εξής. Ο τελευταίος κόμβος μιας απλά συνδεδεμένης λίστας περιέχει την τιμή 0 ως δείκτη ή δεν περιέχει καμία τιμή;
Περιέχει NULL.

απο wikipedia:
In computing, a null pointer or null reference is a value saved for indicating that the pointer or reference does not refer to a valid object. Programs routinely use null pointers to represent conditions such as the end of a list

tasospap

Σε περίπτωση δηλαδή που ωθήσω όλα τα περιεχόμενα του τελευταίου κόμβου σε μια στοίβα , θα ωθήσω τα δεδομένα που περιέχει και τον αριθμό 0 που περιέχει ως δείκτη.

Αποστολάτος Άκης

Παράθεση από: tasospap στις 15 Μαρ 2023, 12:41:26 ΜΜΣε περίπτωση δηλαδή που ωθήσω όλα τα περιεχόμενα του τελευταίου κόμβου σε μια στοίβα , θα ωθήσω τα δεδομένα που περιέχει και τον αριθμό 0 που περιέχει ως δείκτη.
Δεν βλέπω τι σχέση έχει η στοίβα εδώ(ο κάθε κόμβος έχει 1 περιεχόμενο άρα τα δεδομένα του τελευταίου κόμβου είναι 1 μόνο τιμή). Απλά να σου πω ότι άλλο το 0 σαν τιμή και άλλο το NULL.

petrosp13

Το 0 ορίζεται σε ασκήσεις σαν δείκτης του τελευταίου κόμβου για ευκολία
Ορίζεται ρητά στην εκφώνηση
Η θεωρία λέει όμως ότι ο τελευταίος κόμβος ουσιαστικά δεν δείχνει πουθενά, δηλαδή ο δείκτης έχει την τιμή κενό (Null)
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

George Eco

Είναι όπως το λέει ο Πέτρος ακριβώς, δεν έχω κάτι να προσθέσω.

Foto

Το μηδέν ως Null μπορεί να είναι αν το θέσουμε εμείς ως την Null τιμή. Αν δεν υπάρχει τύπος null τότε κάτι θα παίζει τον ίδιο ρόλο. Αν έχουμε πίνακα που ξεκινάει από το ένα τότε δείκτης με τιμή 0 δεν δείχνει πουθενά στον πίνακα και ακριβώς αυτή είναι η λογική του null, να μην δείχνει πουθενά. Στο πρόγραμμα η μετάβαση από τον έναν κόμβο στον άλλο σταματάει όταν βρεθεί δείκτης null, μια τιμή που δείχνει στο πουθενά. 
Όχι μόνο σαν δείκτης σε κόμβο αλλά και σε ένα αλφαριθμητικό το κενό αλφαριθμητικό έχει μια τιμή null, απλά δεν στο δείχνει η Γλώσσα γιατί δεν ορίζει καν πως υλοποιούνται οι μεταβλητές χαρακτήρων. 
Σε ορισμένες γλώσσες θα δει κανείς ένα η δύο από τα nil,  null, nothing.  Όλα αυτά έχουν να κάνουν με το Τίποτα. Το οποίο είναι διαφορετικό από τη μη αρχικοποιημένη τιμή, που είναι μια τυχαία τιμή. Δηλαδή το null είναι τιμή! Αλλά έχει ειδικό νόημα.Το αν η τιμή είναι 0 καθορίζεται ή από τη Γλώσσα αν το υποστηρίζει (δεν το υποστηρίζει), ή το θέτει ο προγραμματιστής!


Foto

Κάτι που μου διέφυγε. Δεν μπερδεύουμε δεδομένα με δείκτες. Η Γλώσσα είναι μια Turing μηχανή, δηλαδή μπορεί να φτιάξει κανείς οτιδήποτε (με κόπο βέβαια). Μπορεί να μην έχει τους δείκτες της c αλλά μπορούμε να δούμε έναν πίνακα ως μνήμη, άρα μια μεταβλητή που δείχνει στο 5ο στοιχείο του πίνακα είναι δείκτης. Τώρα Όταν εισάγουμε στοιχεία έχουμε δύο πλευρές, η μια έχει να κάνει με την εισαγωγή και η άλλη με την αποθήκευση ή άμεση επεξεργασία. Στη εισαγωγή το 0 μπορεί να σημαίνει τέλος εισαγωγής. Στην αποθήκευση
 αυτό το ,0 δεν έχει θέση ως δεδομένο.
Τώρα έστω ότι έχω μια συνδεδεμένη λίστα, το πρόγραμμα που την υλοποιεί και ότι δουλεύει ως στοίβα. Κάθε κόμβος της λίστας έχει τα δεδομένα και το δείκτη στο επόμενο. Αρχικά έχω μια μεταβλητή με τιμή 0, επειδή δεν έχω ούτε έναν κόμβο. Μόλις έρθει το πρώτο νούμερο θα φτιάξω το κόμβο με την εξής μέθοδο, θα βάλω τα δεδομένα ως έχουν και στο δείκτη του κόμβου θα βάλω τη τιμή της μεταβλητής  Στη μεταβλητή θα βάλω τη θέση του κόμβου, που επειδή κάπου είναι θα είναι μη μηδενική (αφού το μηδέν υποτίθεται ότι το έχω ως null, και με αυτό ξεκίνησα). Τώρα κάθε φορά που θα βάζω νέο κόμβο θα γίνεται το ίδιο πράγμα! Αν αποφασίσω να τραβήξω τα δεδομένα ξέρω που θα βρω το τελευταίο που μπήκε, το δείχνει η μεταβλητή, διαβάζω τα δεδομένα και βάζω στη μεταβλητή το δείκτη που κράταγε ο κόμβος. Για να συνεχίσω θα κοιτάξω αν ο δείκτης δεν είναι μηδέν. Κάποια στιγμή όταν φτάσω στο τελευταίο, δηλαδή το πρώτο δεδομένο που μπήκε, ο πρώτος κόμβος, θα μηδενιστεί η μεταβλητή μου, θα πάρει δηλαδή τη τιμή που είχε όταν δεν υπήρχε κόμβος.
Ελπίζω να φάνηκε εδώ η λειτουργία και η χρήση του 0 ως τίποτα.

gpapargi

Παράθεση από: tasospap στις 15 Μαρ 2023, 12:19:37 ΜΜΚαλημέρα σε όλους, θέλω να ρωτήσω το εξής. Ο τελευταίος κόμβος μιας απλά συνδεδεμένης λίστας περιέχει την τιμή 0 ως δείκτη ή δεν περιέχει καμία τιμή;
Ο κάθε κόμβος έχει μέσα κάποια στοιχεία για τις οντότητες που αποθηκεύει (πχ για το μαθητή). ΕΠιπλέον έχει και ένα έξτρα πεδίο που δεν είναι μεταβλητή σαν τις άλλες (ακέραιοι, χαρακτήρες κλπ) αλλά είναι δείκτης. Εϊναι μια μεταβλητή που οι τιμές που παίρνει είναι διευθύνσεις της μνήμης. ΑΥτ΄'ο το έξτρα πεδίοι ( ο δείκτης) περιέχει τη διεύθυνση του επόμενου κόμβου της λίστας., δηλαδή "δείχνει" στον επόμενο κόμβο. Έτσι υλοποιείται η συνδεση των κόμβων.  Στον τελευταίο κόμβο, υπάρχουν κανονικά δεδομένα (πχ για τον τελευταίο μαθητήγ) αλλά ο δείκτης δεν μπορεί να δείξει πουθενά γατί δεν υπάρχει επόμενος κόμβος. ΑΥτό το "δε δείχνει πουθενά" υλοποειται με την τιμή null στο δείκτη (που δείχνει τον επόμενο) του τελυταιου κόμβου.
Γιώργος Παπαργύρης

akalest0s

Μαζί με όσα ειπώθηκαν από gpapargi, μια εικόνα που ίσως διαφωτίσει λίγο..
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK