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

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

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

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

Δημοσίευσηαπό migf1 » 30 Ιούλ 2011, 15:44

Star_Light έγραψε:
Δηλαδη εδω εννοεις πως οπως με την sscanf που μπερδευτηκα εγω για το τι ακριβως ειναι αυτο το int που επεστρεφε και που ακριβως αναφεροταν ετσι μπορει να την "πατησεις" και με άλλες συναρτήσεις? Γιατι συνηθως κοιταμε τα ονοματα των μεταβλητων και των συναρτησεων για να υποθεσουμε τι παιζει πανω κατω... και οι αλλοι προγραμματιστες το κωδικοποιουν ετσι ωστε να τηρει την αρχη του να ειναι ευανάγνωστο ????

Ναι! Πριν χρησιμοποιήσουμε οποιαδήποτε συνάρτηση δεν είναι δική μας, είναι πάντα χρήσιμο να συμβουλευτούμε πρώτα την τεκμηρίωσή της, ιδανικά στο εγχειρίδιο του compiler που χρησιμοποιούμε.

Και στις δικές μας συναρτήσεις είναι πάντα χρήσιμο να γράφουμε μέσα σε σχόλια πάνω από τον ορισμό της τουλάχιστον το τι επιστρέφει, τι ορίσματα περιμένει και το τι κάνει (περιληπτικά) η συνάρτηση.

Αν χρησιμοποιείς κάποιο IDE, όπως π.χ. το Code:Blocks ή το Netbeans, κλπ μπορείς να ορίσεις εγχειρίδια σε ηλεκτρονική μορφή, τα οποία θα τα ψάχνει για τη λέξη πάνω στην οποία βρίσκεται το mouse όταν κάνεις δεξί κλικ.

Εγώ για παράδειγμα στα Windows, δεν χρησιμοποιώ IDE αλλά έχω φτιάξει ένα ας το πούμε custom IDE γύρω από το Notepad++, στο οποίο μεταξύ άλλων έχω συνδέσει και το reference manual των συναρτήσεων του GCC (παλιάς όμως έκδοσης, 2.7).

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

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

Δημοσίευσηαπό Star_Light » 30 Ιούλ 2011, 16:35

Α Μαλιστα οκ... κοιτα... εγω δινω απο το τερματικο ας πουμε την εντολη

Κώδικας: Επιλογή όλων
man scanf / man sscanf
οποτε μου βγαζει απευθειας το manual του GNU. ;)

Για editor εχω τον Geany.
Γνώσεις ⇛ 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++

Δημοσίευσηαπό stamatiou » 30 Ιούλ 2011, 16:44

Star_Light έγραψε:Α Μαλιστα οκ... κοιτα... εγω δινω απο το τερματικο ας πουμε την εντολη

Κώδικας: Επιλογή όλων
man scanf / man sscanf
οποτε μου βγαζει απευθειας το manual του GNU. ;)

Για editor εχω τον Geany.

Και εγώ Geany χρησιμοποιώ :D
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 30 Ιούλ 2011, 17:08

Ετσι συναδελφε προγραμματιστολινουξαρα stamatiou :D

Λοιπον εχω να προτεινω κατι για να ξεκουρασουμε και τον migf1 γιατι ενταξει ο ανθρωπος εχει ολη την καλη διαθεση

αλλα εχει και τις δουλειες του... φυσικα ποτε δεν μας εχει αφησει χωρις απαντηση και αυτο ειναι φοβερο εκ μερους του.

Λοιπον πχ τωρα που εριξε στο παιχνιδι το call by reference αν καποιος έχει απορια μπορουμε να του το εξηγησουμε και εμεις που το εχουμε καταλαβει... και αν καπου κανουμε λαθος να παρεμβει ο migf1 και ετσι η αποδοτικοτητα της ομαδας θα ανεβει!!!! ΓΙατι με ενα σμπαρο σκοτωνουμε πολλα τριγωνια... και θα εχει την ευκαιρια να εξετασει ο migf1 αν εχουμε καταλαβει τα οσα εχει και θα λυσουμε αποριες σε νεους και αρχαριους (οπως εμεις) και θα ξεκουρασουμε και τον migf1 Τι λετε ?
Γνώσεις ⇛ 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 » 30 Ιούλ 2011, 17:44

και μια ερωτηση ακομη.... Πχ η fgets θεωρειται οτι ανηκει στο API Της C ?
Γνώσεις ⇛ 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++

Δημοσίευσηαπό stamatiou » 30 Ιούλ 2011, 18:00

API δεν είναι το εργαλείο που βοηθά στο να φτιάχνουμε GUI προγράμματα για συγκεκρυμένο περιβάλλον;
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 30 Ιούλ 2011, 19:12

API, Toolkit, library, κλπ σε γενικές γραμμές είναι διάφορες ονομασίες για το ίδιο πράγμα (συλλογή συναρτήσεων κατά βάση, και των όποιων πρόσθετων τύπων & macros χρησιμοποιούν).

Η fgets είναι μέρος της standard input/output βιβλιοθήκης της γλώσσας (stdio).

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

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

Για να είμαστε ακριβείς όμως, πρέπει να κάνω σαφές πως στη C ΟΛΑ τα ορίσματα περνιούνται ΠΑΝΤΑ στις συναρτήσεις BY VALUE. Ακόμα και ο παραπάνω τρόπος που περιέγραψα ως by reference, στην ουσία περνάει by value τις διευθύνσεις των μεταβλητών. Μην χαλιέστε αν δεν το καταλαβαίνετε, απλά κρατήστε πως όταν θέλετε να περάσετε ορίσματα by reference το κάνετε όπως σας είπα παραπάνω.

Με την προϋπόθεση πως δεν έχουμε απορίες (όπως μου είπατε ήδη πως δεν έχουμε) ήρθε η ώρα για την 1η μας άσκηση, που δεν είναι άλλη από την κλασσική συνάρτηση swap, η οποία δέχεται ως ορίσματα 2 int και εναλλάσσει τις τιμές τους.

Το Ίντερνετ είναι πήχτρα από την υλοποίηση της συγκεκριμένης συνάρτησης, αλλά ελπίζω πως θα την παλέψετε μόνοι σας (μιας και είναι για δικό σας όφελος).

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

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

Δημοσίευσηαπό Star_Light » 30 Ιούλ 2011, 22:49

εφτιαξα τον αλγοριθμο αλλα υλοποιειται μεσα στην main : ) τωρα μενει να βαλω και την συναρτηση που το φτιαχνει.

Π.Σ Χωρις να κοιταξω καθολου στο ιντερνετ (ε βασικα δεν θα ειχε νοημα οπως ειπε και ο migf1)
Γνώσεις ⇛ 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 » 30 Ιούλ 2011, 23:04

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

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

Δημοσίευσηαπό Star_Light » 30 Ιούλ 2011, 23:18

λογικα αυτο μονο με δεικτες πρεπει να πηγαινει στις συναρτησεις ε?? ή μπορεις να το κανεις και με 2 ξεχωριστες συναρτησεις???
Γνώσεις ⇛ 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
Εκτύπωση

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

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