Star_Light έγραψε:Ωραια. Τοτε ας μεινουμε μονο στα strings. Eχεις δικιο γιατι θα παιδευτουμε χωρις λογο και θα παιδεψουμε και σενα.
Επομενως προτεινε εσυ που ξερεις και αριστα το αντικειμενο
απλα δοκιμασα να σκεφτω να μπλεξουμε strings μαζι με κρυπτογραφηση
ουσιαστικα ασκησεις των strings οι οποιες θα προσφερουν κρυπτογραφηση.
Τα strings είναι απλά στη θεωρία αλλά η διαχείρισή τους μπορεί να γίνει εξαιρετικά πολύπλοκη στην πράξη. Το θέμα είναι πως αποτελούν θεμελιώδη έννοια στη C (βασικά σε όλες τις γλώσσες) και χρησιμοποιούνται σχεδόν παντού. Στη C έχουν και το επιπλέον χαρακτηριστικό πως εμβαθύνοντας στη διαχείρισή τους εξοικειωνόμαστε και με άλλες θεμελιώδεις έννοιες της γλώσσας, όπως για παράδειγμα τους δείκτες αλλά και την εξάσκηση προγραμματιστικής σκέψης κι εφαρμογής της.
Πάρε για παράδειγμα το θέμα που θίχτηκε με τους δυαδικούς αριθμούς. Από τη στιγμή που δεν υπάρχει built-in data type για δυαδικούς αριθμούς, για να κρατήσεις κάπου την δυαδική απεικόνιση ενός οποιουδήποτε αριθμού είσαι υποχρεωμένος να δημιουργήσεις μια δομή με το κάθε στοιχείο της δομής να αντιστοιχεί στο καθένα από τα δυαδικά ψηφία. Αν εξαιρέσουμε τα bit-arrays που χρησιμοποιούνται κι αυτά πολύ συχνά για τη διαχείριση των bits, τα strings είναι η προφανής δομή που χρησιμοποιείται (με τον κάθε χαρακτήρα του string να αντιστοιχεί σε ένα δυαδικό ψηφίο του αριθμού).
Στον κώδικα που σας έδωσα για απλή διαχείριση δυαδικών ψηφίων σε προηγούμενο ποστ, η συνάρτηση: char *s_byte2binary( char *s, const Byte byte ) είναι αυτή που δέχεται την τιμή του αριθμού στο όρισμα byte (σε όποια βάση κι αν είναι από τις υποστηριζόμενες της γλώσσας... δεκαδική, δεκαεξαδική, οκταδική), υπολογίζει ως χαρακτήρες τα δυαδικά ψηφία που αντιστοιχούν στον αριθμό, και τους χαρακτήρες αυτούς τους αποθηκεύει στο 1o της όρισμα που είναι το c-string s, το οποίο κι επιστρέφει.
Το να διαβάζει λοιπόν κανείς αυτή τη συνάρτηση και να καταλαβαίνει τι κάνει είναι ένα πράγμα, το να μπορεί να την φτιάξει μόνος του είναι άλλο πράγμα και το να μπορεί να τη φτιάξει απελευθερωμένη από περιττές εξαρτήσεις ώστε να μπορεί να χρησιμοποιηθεί αυτόνομη σε οποιοδήποτε πρόγραμμα (reusable coding) είναι επίσης άλλο πράγμα.
Παρομοίως, από τη στιγμή που η γλώσσα δεν έχει built-in data type για δυαδικούς αριθμούς, το να διαβάσεις από την κύρια είσοδο τα ψηφία ενός δυαδικού αριθμού η προφανής επιλογή είναι να τα διαβάσεις μέσα σε ένα string, το οποίο κατόπιν θα χρειαστεί να το διαχειριστείς προκειμένου να μετατρέψεις τα δυαδικά ψηφία στην τιμή που τους αντιστοιχεί σε κάποια άλλη από τις υποστηριζόμενες βάσεις (δεκαδική, δεκαεξαδική, οκταδική).
Οπότε λίγο-πολύ γίνεται δώρο-άδωρον να πας σε θεωρία κρυπτογράφησης ή δικτύων ή sockets ή δομών δεδομένων... ή ... ή ... όταν δεν έχεις εμπεδώσει στη πράξη κάτι το τόσο θεμελιώδες όσο είναι τα strings. Διότι πολύ απλά ακόμα και να καταλάβεις τις παραπάνω θεωρίες δεν μπορείς να τα κάνεις πράξη όταν στερείσαι της θεμελιώδους ικανότητας να διαχειρίζεσαι strings. Πας να εφαρμόσεις αυτά που διάβασες και κατάλαβες αλλά δεν μπορείς επειδή στερείσαι πιο απλών (στοιχειωδών) γνώσεων ή/και πρακτικής.
Για παράδειγμα σε αυτό εδώ το post: viewtopic.php?p=202700#p202700 είχα προτείνει 2-3 ασκήσεις ειδικά για strings, οι οποίες προσφέρουν σε όποιον τις λύσει μόνος του μια πολύ καλή αρχή για την κατανόηση όχι μόνο των strings, αλλά και για εξάσκηση προγραμματιστικής σκέψης γενικότερα. Με εξαίρεση την τελευταία (με τα σύμφωνα και τα φωνήεντα) που την πάλεψε ο φίλος Stamatiou αλλά κι αυτός κατάλαβα πως την παράτησε, δεν είδα να ασχολήθηκε κανείς.
Προς Θεού, μη νομίζετε πως σας κάνω κάποια παρατήρηση ή πως ξέρω-γω σας μαλώνω ή οτιδήποτε τέτοιο, απλά πρέπει να αποδεχτείτε πως η (πικρή; ) πραγματικότητα στον προγραμματισμό είναι πως όταν αφήνουμε στη μέση πράγματα για να πάμε σε άλλα (είτε πιο προχωρημένα είτε όχι) κατεβάζουμε μόνοι μας τον πήχη και ουσιαστικά υπονομεύουμε μόνοι μας την όποια προσπάθεια κάνουμε για να μάθουμε μια γλώσσα. Όπως επίσης πως ο προγραμματισμός δεν είναι εύκολο πράγμα... όσο πιο πολύ θέλει να προχωρήσει κάποιος τόσο πιο δύσκολος γίνεται και τόσο περισσότερο βγαίνουν στην επιφάνεια τα όποια κενά έχει από προηγούμενα στάδια της εκμάθησής του.
Το "λίγο από όλα" φλετράρει επικίνδυνα με το "τίποτα πουθενά" (κάπου το χω ξαναγράψει αυτό



