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

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

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

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

Δημοσίευσηαπό migf1 » 08 Σεπ 2011, 23:23

Star_Light έγραψε:
...
Εγω πιστευω μπορεις να διαβασεις πολλα πραγματα ταυτοχρονα ΑΛΛΑ... οταν έχεις τελειωσει με τα ΔΙκτυα ριξε εναν υπνο μισης ωριτσας και σηκω με καθαρο κεφαλι και πιασε προγραμματισμο...

Το θέμα είναι πως για να διαβάσεις πρέπει πρώτα να ξέρεις την αλφάβητο. Ακραίο παράδειγμα αλλά καταλαβαίνεις τι εννοώ.

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

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

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

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

Δημοσίευσηαπό stamatiou » 08 Σεπ 2011, 23:31

Star_Light έγραψε:
stamatiou έγραψε:
Μια άσκηση του migf1, πρέπει να βάλουμε τη διεύθυνση του διευθυντή και μετά να το τυπώσουμε :D


Του ποιού? :D ΓΙΑ δωσε λινκ γιατι ημουν στα αγγλικα και δεν θα το ειδα...
με την εκφωνηση να το προσπαθησω και εγω.

Την εκφώνηση, ούτε εγώ την είδα, ο migf1 μου το εξήγησε έτσι......
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 08 Σεπ 2011, 23:32

migf1 έγραψε:
Star_Light έγραψε:
...
Εγω πιστευω μπορεις να διαβασεις πολλα πραγματα ταυτοχρονα ΑΛΛΑ... οταν έχεις τελειωσει με τα ΔΙκτυα ριξε εναν υπνο μισης ωριτσας και σηκω με καθαρο κεφαλι και πιασε προγραμματισμο...

Το θέμα είναι πως για να διαβάσεις πρέπει πρώτα να ξέρεις την αλφάβητο. Ακραίο παράδειγμα αλλά καταλαβαίνεις τι εννοώ.

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

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

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


Ε εννοουνται αυτα :D αλλα επειδη και ο χρονος τρεχει και εγω προσωπικα δεν ειμαι και 18αρης πλεον... δεν μπορω να κατσω με το πασο μου να τα μαθω ολα γιατι φεβρουαριο καταρχην μαλλον παω φανταρος και μετα δουλεια.... ο σταματιου που ειναι πιο μικρος εχει την πολυτελεια... να γραψει τωρα τα δικτυα στα παλια του τα παππουτσια... και να ασχοληθει ΜΟΝΟ Με κωδικα για 2 χρονια φουλ και μετα παει και στα δικτυα... εγω δυστυχως δεν μπορω... πρεπει να κανω κατι ωστε να τα βλεπω ταυτοχρονα... και δεν σου ειπα και το καλυτερο στην πτυχιακη ξεφευγω τελειως... παω στα ασυρματα χαχαχαχα για το 4G Κανω... ουτε καν δικτυα δηλαδη... ασυρματα και μαλιστα στο φυσικο μεσο... πως τα κανα ετσι δεν ξερω.... ολα οσα λες ειναι 100% σωστα. Αλλα πλεον δεν εχω χρονο για να ασχοληθω μονο με ενα πραγμα. :(
Γνώσεις ⇛ 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 » 08 Σεπ 2011, 23:32

stamatiou έγραψε:
Εννοεί ότι προσπαθώ να περάσω έναν pointer σε int, να δοκιμάσω με cast;
Edit: Oκ, τελικά δουλεύει έτσι:
Spoiler: show
Κώδικας: Επιλογή όλων
#include <stdio.h>

int main(void) {
int *p,i;
i = (int )&p;
printf("%d\n",i);
return 0;
}

Αλλά εγώ τι έκανα print πριν;

Ωραίος, και για να είσαι ακόμα πιο σωστός το i (το οποίο btw άλλαξέ το με ένα όνομα της προκοπής !!!! :P π.χ. addr) αντί για int όρισέ το ως unsigned long (και τύπωσε το με %lu).

Αυτός λοιπόν είναι ο εύκολος και μη συμβατός τρόπος να μετατρέπεις έναν δείκτη σε ακέραια τιμή. Βέβαια τώρα έχεις ένα άλλο πρόβλημα, δεν μπορείς να δεις τι περιέχει ο p χρησιμοποιώντας το i ... δεν το ζήτησα αυτό :)

Το ζητάω τώρα όμως, θα το καταφέρουμε... τι λέτε;

Δηλαδή, όλο μαζί: γράψτε ένα πρόγραμμα που θα ορίζει έναν δείκτη p οποιουδήποτε τύπου, θα τον βάζει να δείχνει σε έγκυρα περιεχόμενα μνήμης. Kατόπιν θα χρησιμοποιεί μια άλλη μεταβλητή paddr στην οποία θα περνάει τη διεύθυνση μνήμης του p και μέσω αυτής της paddr θα τυπώνει στην οθόνη την τιμή που υπάρχει στη μνήμη στην οποία δείχνει ο p.
Τελευταία επεξεργασία από migf1 και 08 Σεπ 2011, 23:38, έχει επεξεργασθεί 1 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 08 Σεπ 2011, 23:36

Star_Light έγραψε:
... ο σταματιου που ειναι πιο μικρος εχει την πολυτελεια... να γραψει τωρα τα δικτυα στα παλια του τα παππουτσια... και να ασχοληθει ΜΟΝΟ Με κωδικα για 2 χρονια φουλ και μετα παει και στα δικτυα... :(

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

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

Δημοσίευσηαπό Star_Light » 08 Σεπ 2011, 23:44

Aυτο ειναι?

Spoiler: show
Κώδικας: Επιλογή όλων


#include<stdio.h>

int main(void)
{
int *p , *paddr;
int a=2;

p=&a;
paddr=p;

printf("Oi dieuthinseis einai: \n");
printf("\n%u",p);
printf("\n%u",paddr);

printf("\n H timi einai:");
printf("\n%d",*paddr);



return 0;
}
Γνώσεις ⇛ 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++

Δημοσίευσηαπό Star_Light » 08 Σεπ 2011, 23:46

migf1 έγραψε:
Star_Light έγραψε:
... ο σταματιου που ειναι πιο μικρος εχει την πολυτελεια... να γραψει τωρα τα δικτυα στα παλια του τα παππουτσια... και να ασχοληθει ΜΟΝΟ Με κωδικα για 2 χρονια φουλ και μετα παει και στα δικτυα... :(

Ε όχι και 2 χρόνια ρε συ, είπαμε :lol: Τα στοιχειώδη μαζί με αρκετά προχωρημένες εφαρμογές τους δεν θέλουν πάνω από 2-3 μήνες, αλλά να διαβάζεις μόνο αυτά.


Ε ... ετσι οπως το λεω εγω οι 2-3 μηνες γινονται 2 χρονια :lol: :lol:
Τελοςπαντων ειδωμεν... μια καταρραμενη πτυχιακη μου(Τα 2 απο τα 3 κεφαλαια τα εχω τελειωσει ηδη πχ) εχει μεινει 1 ακομη
και δεν μου στελνει τι θελει να του μεταφρασω να τελειωνω και εγω απο αυτον και αυτος απο μενα... εγω νομιζεις
τρελαινομαι που την κανω? αναθεμα τις θεωριες τους εκει μεσα... βολεμενοι ειναι
αλια απο εμας... τους εχω σιχαθει μην νομιζεις θελω να τελειωνω να φευγω.
Γνώσεις ⇛ 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 » 08 Σεπ 2011, 23:49

Star_Light έγραψε:Aυτο ειναι?

Spoiler: show
Κώδικας: Επιλογή όλων


#include<stdio.h>

int main(void)
{
int *p , *paddr;
int a=2;

p=&a;
paddr=p;

printf("Oi dieuthinseis einai: \n");
printf("\n%u",p);
printf("\n%u",paddr);

printf("\n H timi einai:");
printf("\n%d",*paddr);



return 0;
}

Όχι ακριβώς, αλλά το έχεις πλησιάσει πάρα πολύ! Τώρα στον paddr δεν βάζεις την διεύθυνση του p, αλλά τη διεύθυνση στην οποία δείχνει ο p... εμείς θέλουμε να βάλεις στον paddr τη διεύθυνση του ίδιου του p....
δες κι αυτό το post: viewtopic.php?p=206708#p206708

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

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

Δημοσίευσηαπό Star_Light » 08 Σεπ 2011, 23:58

Spoiler: show
Κώδικας: Επιλογή όλων

#include<stdio.h>

int main(void)
{
int *p , *paddr;
int a=2;

p=&a;
paddr=&(*p);

printf("Oi dieuthinseis einai: \n");
printf("\n %p",p);
printf("\n %p",paddr);

printf("\n H timi einai:");
printf("\n %p", paddr);



return 0;
}


αυτο?
Γνώσεις ⇛ 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++

Δημοσίευσηαπό Star_Light » 09 Σεπ 2011, 00:08

Ενα printf που εχω ειναι πλεονασμος... νομιζω.

αν καταλαβα καλα την εκφωνηση

Spoiler: show
Κώδικας: Επιλογή όλων

#include<stdio.h>

int main(void)
{
int *p , *paddr;
int a=2;

p=&a;
paddr=&(*p);


printf("Oi dieuthinseis einai: \n");
printf("\n %p",p);
puts("\n");
printf("\n %p",paddr);

return 0;
}
Γνώσεις ⇛ 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
Εκτύπωση

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

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