Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 09 Φεβ 2012, 18:07

Ας πούμε ότι όντως τα ξεκαθάρισες με τους μονούς και τους διπλούς δείκτες. Σε 1 μήνα από τώρα θα τα έχεις ακόμα ξεκάθαρα, η τότε θα αρχίσεις πάλι να κάνεις παραδείγματα σαν το παραπάνω για να τα... ξανα-ξεκαθαρίσεις, επειδή στο μεταξύ θα έχεις ασχοληθεί εξίσου αποσπασματικά με καμιά 10αριά άλλα πράγματα, άσχετα και μεταξύ τους και με τους δείκτες... διότι η μέχρι τώρα εμπειρία στο νήμα, αυτό δείχνει :lol:

Ακόμα και τώρα που τα έχεις φρέσκα ξεκαθαρισμένα, είσαι σε θέση να διαχωρίσεις πότε και γιατί μπορεί να θέλεις να χρησιμοποιήσεις π.χ. διπλό δείκτη σε πρόγραμμα που κάνει κάτι το ολοκληρωμένο; Η ακόμα πιο απλά, είσαι σε θέση να διαχωρίσεις πότε και γιατί μπορεί να θέλεις να χρησιμοποιήσεις απλό δείκτη;
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 09 Φεβ 2012, 18:17

migf1 έγραψε:Ας πούμε ότι όντως τα ξεκαθάρισες με τους μονούς και τους διπλούς δείκτες. Σε 1 μήνα από τώρα θα τα έχεις ακόμα ξεκάθαρα, η τότε θα αρχίσεις πάλι να κάνεις παραδείγματα σαν το παραπάνω για να τα... ξανα-ξεκθαρίσεις, επειδή στο μεταξύ θα έχεις ασχοληθεί εξίσου αποσπασματικά με καμιά 10αριά άλλα πράγματα, άσχετα και μεταξύ τους και με τους δείκτες... διότι η μέχρι τώρα εμπειρία στο νήμ, αυτό δείχνει :lol:


:lol: :lol: :lol: :lol:

migf1 έγραψε:
Ακόμα και τώρα που τα έχεις φρέσκα ξεκαθαρισμένα, είσαι σε θέση να διαχωρίσεις πότε και γιατί μπορεί να θέλεις να χρησιμοποιήσεις π.χ. διπλό δείκτη σε πρόγραμμα που κάνει κάτι το ολοκληρωμένο; Η ακόμα πιο απλά, είσαι σε θέση να διαχωρίσεις πότε και γιατί μπορεί να θέλεις να χρησιμοποιήσεις απλό δείκτης;


Νομιζω ναι. Πχ αμα θες να δουλέψεις απευθείας πάνω στις μεταβλητές του προγραμματος σου
τις οποιες περνάς στην συνάρτηση θα πρεπει να τις περάσεις σαν δείκτες (μονούς) αν ειναι απλές μεταβλητές
μεσα στην main() αυτο γινεται γιατι οπως εχουμε πει μολις η συνάρτηση σταματήσει την λειτουργια της και επιστρεψει τον ελεγχο οι τοπικες της μεταβλητές διαγράφονται. Αν ηδη τωρα εχουμε δείκτες... θα πρεπει μεσα στην συνάρτηση να τους περάσεις ως διπλούς .
Αλλα στη κληση και παλι αυτοι οι διπλοί θα πρέπει να δινουν μια διεύθυνση μνήμης ή καλύτερα να ειναι δείκτες
προς μια διεύθυνση μνήμης. Ωραια... στο δικο μου παράδειγμα αυτο γινόταν με σκέτο p διοτι ηδη εκει μέσα έδινα εγω
την διεύθυνση ενος άλλου δείκτη που μετα αυτος έδειχνε στην μεταβλητή που ήθελα.... για αυτο και οπως ειπα χρησιμοποιούσα
2 ξεχωριστούς εναν μονο και εναν διπλο με ξεχωριστο προσδιοριστή (όνομα).

Στο μεν δικο σου επειδη ΔΕΝ γινοταν αυτο και χρησιμοποιούσες στις λίστες εναν head τη μια σαν *head την άλλη σαν **head
άμα έβαζες σκετο head σαν ορισμα μέσα στη συνάρτηση θα το έπαιρνε οτι αναφέρεσε στον μονό αρα για να δείξεις εσυ οτι
αναφέρεσαι στον διπλό ήθελες &head δείκτη σε δείκτη δηλαδη οποτε το συστημα το θεωρούσε ετσι παρολο που χρησιμοποιείς
τον ιδιο και την μια τον χειριζεσαι σαν μονο την αλλη σα διπλο

εχω καπου αδικο?
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 09 Φεβ 2012, 18:29

Δεν εννοούσα αυτό. Εννοούσα πως αν θέλεις να φτιάξεις έναν πρόγραμμα που κάνει κάτι συγκεκριμένο (π.χ. να κρατάς αρχείο των δίσκων σου) ξέρεις πως να το υλοποιήσεις; Θα χρησιμοποιήσεις πίνακες, δείκτες, δομές, συνδυασμούς τους... σε ποια σημεία και γιατί; Είσαι δηλαδή σε θέση να κάνεις έστω κι ένα αφηρημένο πλάνο στο μυαλό σου ή στο χαρτί; Αυτό είναι πολύ πιο σημαντικό από οποιαδήποτε μετέπειτα λεπτομέρεια.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 09 Φεβ 2012, 18:33

migf1 έγραψε:Δεν εννοούσα αυτό. Εννοούσα πως αν θέλεις να φτιάξεις έναν πρόγραμμα που κάνει κάτι συγκεκριμένο (π.χ. να κρατάς αρχείο των δίσκων σου) ξέρεις πως να το υλοποιήσεις; Θα χρησιμοποιήσεις πίνακες, δείκτες, δομές, συνδυασμούς τους... σε ποια σημεία και γιατί;

hahaha ok κερδισες!
Αν και πιστευω πως δεν θα ειναι δυσκολο μιας
και έχω εξασκηθει στα underlying concepts της γλώσσας.
Αν ομως δεν ειχα εξασκηθεί θα ηταν αδύνατο τελειως. ;)
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 09 Φεβ 2012, 18:37

Να σου δώσω άλλο πιο απλό παράδειγμα, φτιάξε ένα παιχνιδάκι που θα έχει ένα ταμπλό ας πούμε 5χ5 και θα κρύβει μέσα του τυχαίους αριθμούς ας πούμε από το 1 έως το 50 σε τυχαίες θέσεις (θα επιτρέπεις διπλούς αριθμούς ή κάποιοι να μην εμφανίζονται καθόλου, για να στο κάνω πιο εύκολο). Ο χρήστης θα ερωτάται στην αρχή για 2 νούμερα: α) πλήθος προσπαθειών και β) ολικό άθροισμα.

Κατόπιν θα του δίνεις όσες προσπάθειες διάλεξε να ανοίγει κουτάκια, και θα κρατάς το άθροισμα των αριθμών τους. Αν ξεπεράσει το ολικό άθροισμα που έδωσε στην αρχή σε λιγότερες ή ίσες προσπάθειες με αυτές που σου έδωσε στην αρχή, θα κερδίζει... αλλιώς θα χάνει.
Τελευταία επεξεργασία από migf1 και 09 Φεβ 2012, 18:44, έχει επεξεργασθεί 1 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 09 Φεβ 2012, 18:40

Αν θες να το κάνεις πιο ευέλικτο, βάλε το στην αρχή να ρωτάει και για το μέγεθος του ταμπλό :P

EDIT: Μόνο έτσι θα μάθεις προγραμματισμό. Κάτσε και φτιάχτο, είτε σε πάρει μια βδομάδα είτε 2 μήνες.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 09 Φεβ 2012, 18:44

Σωστος. Κοιτα οι έννοιες αυτες που ρωτησα αυτες τις μέρες... πχ επέστρεψε δείκτη , δείκτης που δειχνει σε συνάρτηση κτλπ ηταν απο τις τελευταιες
που κοιτάω μεμονομένα και αποσπασματικά.... πλεον μπαινουμε στα projects :P

Θα το κοιτάξω αυτο που λες... αν και ψηνομαι για κρυπτογραφηση. Δηλαδη να φτιάξω εναν κωδικα ο οποιος
ειτε απο το stdin ειτε απο καποιο αρχείο παίρνει data και στη συνέχεια τα κρυπτογραφεί.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 09 Φεβ 2012, 18:51

Star_Light έγραψε:Σωστος. Κοιτα οι έννοιες αυτες που ρωτησα αυτες τις μέρες... πχ επέστρεψε δείκτη , δείκτης που δειχνει σε συνάρτηση κτλπ ηταν απο τις τελευταιες
που κοιτάω μεμονομένα και αποσπασματικά.... πλεον μπαινουμε στα projects :P

Άντε, να το δούμε και να μην το πιστέψουμε :lol:

έγραψε:Θα το κοιτάξω αυτο που λες...

Τα δικά μου προγνωστικά, αν σε έχω σκιαγραφήσει έστω και κατά το ήμισυ σωστά, είναι πως θα σε πάρει περίπου 1 μήνα για να το φτιάξεις και να δουλεύει σωστά (εννοείται με ψάξιμο και διάβασμα).

έγραψε:αν και ψηνομουν για κρυπτογραφηση. Δηλαδη να φτιάξω εναν κωδικα ο οποιος
ειτε απο το stdin ειτε απο καποιο αρχείο παίρνει data και στη συνέχεια τα κρυπτογραφεί.

Κάνε αυτό... από μισή έως 2 μέρες δουλειά είναι αυτό, ανάλογα τον αλγόριθμο και την εμπειρία. Για κάποιον που δεν έχει ξανακάνει ολοκληρωμένο πρόγραμμα, άντε να πάει μια βδομάδα ;)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 09 Φεβ 2012, 18:57

migf1 έγραψε:
Άντε, να το δούμε και να μην το πιστέψουμε :lol:.

Γιατι ρε συ δεν έκανα αυτο με το swap πινάκων που είχες προτείνει σαν άσκηση? Αλλο αν δεν ήταν με μεταβλητά μήκη :D
λεπτομέρειες! Την dummy stack? Ενα απο τα μεγαλυτερα προτζεκτ ολων των εποχων? τις λιστες με συναρτήσεις το καλοκαιρι??? εγω δεν τις έκανα?
αφου εγω στις έμαθα!

migf1 έγραψε:Τα δικά μου προγνωστικά, αν σε έχω σκιαγραφήσει έστω και κατά το ήμισυ σωστά, είναι πως θα σε πάρει περίπου 1 μήνα για να το φτιάξεις και να δουλεύει σωστά (εννοείται με ψάξιμο και διάβασμα).

Δεν φαινεται ευκολο...

migf1 έγραψε:
Κάνε αυτό... από μισή έως 2 μέρες δουλειά είναι αυτό, ανάλογα τον αλγόριθμο και την εμπειρία. Για κάποιον που δεν έχει ξανακάνει ολοκληρωμένο πρόγραμμα, άντε να πάει μια βδομάδα ;)


Θα ξεκινήσω αυτο με τον αλγοριθμο του Vigenere

http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 09 Φεβ 2012, 18:58

Ξεκίνα με ότι νομίζεις. Η ουσία θα είναι όταν θα μας ποστάρεις link με το πρόγραμμα που έφτιαξες να δουλεύει ολοκληρωμένα και σωστά (υποθέτω θα αποκρυπτογραφεί κιόλας) ;)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι