ΚΕΦΑΛΑΙΟ 2 - ΒΑΣΙΚΑ ΣΥΣΤΑΤΙΚΑ

...ασύγχρονα μαθήματα γλώσσας C

ΚΕΦΑΛΑΙΟ 2 - ΒΑΣΙΚΑ ΣΥΣΤΑΤΙΚΑ

Δημοσίευσηαπό linuxs » 20 Μαρ 2011, 00:14

Κεφάλαιο 2 - Βασικά Συστατικά

...τι περιλαμβάνει το κεφάλαιο:
Στην C όπως και σε πολλές άλλες γλώσσες υπάρχουν βασικές ορολογίες και κάποια standard θέματα που πρέπει να μάθετε για να πάτε παρακάτω. Στο κεφάλαιο αυτό λοιπόν θα προσπαθήσω να καλύψω όσο το δυνατόν πιό πολλά για να σας έρθουν όσο το δυνατόν πιό ομαλά τα επόμενα κεφάλαια.


Βιβλιοθήκες - Libraries
Ένα πρόγραμμα σε C όπως θα διαβάσατε και στο πρώτο κεφάλαιο απαιτεί κάποιες βιβλιοθήκες. Αυτές βοηθούν ώστε να χρεισιμοποιείτε έτοιμες συναρτήσεις και να μην γράφετε κώδικα για οτιδήποτε χρειάζεται, όπως για να εκτπώσετε και στην οθόνη. Οι βιβλιοθήκες αυτές πρέπει να ορίζονται στην αρχή του προγάμματος σας! Δηλαδή,
Κώδικας: Επιλογή όλων

/* Εδώ βάλετε όσες βιβλιοθηκες θέλετε */
/* έχοντας την μία κάτω απο την άλλη! */

/* Εδώ μπορείτε να ορίσετε κάποιες επιπλέον */
/* συναρτήσεις που θέλετε και δεν υπάρχουν */
/* βιβλιοθήκες. */

int main( ){ /* ανάμεσα στις παρενθέσεις μπορείτε να βάλετε τα ορίσματα της main(δεν είναι απαραίτητο) */
/* εδώ θα μπεί ο κύριος κώδικας σας που */
/* στην ουσία ενώνει όλο το πρόγραμμα. */
/* Απο εδώ θα γίνονται όλες οι κλήσεις */
/* στις συναρτήσεις(έτοιμες και μή) */
}


Θα σας αναφέρω τις βασικές βιβλιοθήκες που υπάρχουν απλά για να δείτε ότι δεν είναι λίγες και να έχετε μια εικόνα. Τις έχω κατατάξει σε δύο κατηγορίες απο τις οποίες η πρώτη είναι η πιό συνηθισμένη! Καλό είναι να τις έχετε στο background του μυαλού σας! ;)

  • ctype.h
  • math.h
  • stdio.h
  • stdlib.h
  • string.h

  • assert.h
  • errno.h
  • float.h
  • iso646.h
  • limits.h
  • locale.h
  • setjmp.h
  • signal.h
  • stdarg.h
  • stddef.h

Ας δούμε τώρα πως μπορούμε να ορίσουμε μια βιβλιοθήκη και να την προσπέσουμε στον κώδικά μας! Υπάρχει η εντολή "#include" η οποία συνδέει το πρόγραμμά μας με την βιβλιοθήκη που ακολουθεί. Βασικά, δεν είμαι σίγουρος αν είναι εντολή αλλα δεν έχει τόση σημασία αυτό. Για να ορίσετε λοιπόν μια βιβλιοθήκη χρησιμοποιείτε την εντολή:
Κώδικας: Επιλογή όλων
#include <όνομα_βιβλιοθήκης>

στην θέση του <όνομα_βιβλιοθήκης> μπορείτε να βάλετε οποιδήποτε βιβλιοθήκη απο την λίστα παραπάνω! Βέβαια, όχι όποια νά-ναι! Την σωστή έτσι? Θα αναρωτηθεί κανείς "και ποιά είναι η σωστή? Που να το ξέρω?" Για να μην αφήσω κάποιο αναπάντητο ερώτημα, πολύ γρήγορα θα σας πω υπάρχει ένα site το http://www.cplusplus.com/ όπου μπορείτε να πληκτρολογήσετε την συνάρτηση που θελετε να βάλετε στο πρόγραμμά σας και να ακολουθήσετε τον σύνδεσμο. TIP: Στο Url που θα σας βγάλει υπάρχει το όνομα της βιβλιοθήκης. Στην αριστερή στήλη είναι επίσης επιλεγμένο το όνομα της βιλιοθήκης που θέλετε. ;)


Στοίχιση - Alignment

Στον προγραμματισμό ένα πολύ σημαντικό σημείο είναι η στοίχηση. Φυσικά δεν αναφέρομαι για προγτράμματα 10-20 γραμμών γιατί έτσι κι αλλιώς διαβάζονται. Τι γίνεται όμως όταν το πρόγραμμά μας είναι πολλές γραμμές; Τότε θα πρέπει για αν είναι αυανάγνωστο να έχει μια σωστή στοίσηση! Δεν μιλώ για τρελά πράγματα με λεπτομέρια, απλά κάποια tabs θα χρησιμοποιήσετε. Επιπλέον, δυστυχώς δεν υπάρχει κάποιος οδηγός που να λέει ξέρεις αυτό κάντο έτσι το άλλο ετσι. Το πως θα φτιάξετε το πρόγραμμά σας, είναι καθαρά δικό σας θέμα. Προσωπικά συνήθως ακολουθώ τους παρακάτω κανόνες.

Η γενική δομή του προγράμματος με 0 tabs...
Κώδικας: Επιλογή όλων
#include ...
void function1() {
}
float get() {
}
int main() {
...
}


Ο ορισμός των μεταβλητών με 1 tab...
Κώδικας: Επιλογή όλων
#include ...
void function1() {
int x, y, z;
float g;
}
float get() {
double h;
}
int main() {
FILE *ptr;
int i;
...
}


Κάθε άλλο(επιπλέον "δομή") με ένα επιπλέον tab...
Κώδικας: Επιλογή όλων

#include ...
void function1() {
int x, y, z;
float g;
for(i=0; i<4; i++) {
if(x==y) {
...
}
}
}
float get() {
double h;
...
}
int main() {
FILE *ptr;
int i;
for(i=0; i<23; i++) {
count++;
if(....) {
while(1) {
...
}
}
}
...
}


έγραψε:Το παραπάνω είναι απλά ένας ενδεικτικός τρόπος πως μπορείτε να στοιχεισετε τα προγράμματα σας. Φυσικά μπορείτε να ακολουθήσετε τους δικούς σας τρόπους ή οτι άλλο σας βολεύει! Πάντως να θυμάστε μεγάλα πρόγράμματα χωρίς στοίσηση είναι πολύ δύσκολο να τα διαβάσει κάποιος, να κάνει αλλαγές και debbuging!



Τελεστές - Operators

Αριθμητικοί τελεστές
έγραψε:Οι αριθμιτικοί τελεστές είναι συνήθως διμελής. Παρακάτω θα χρησιμοποιήσω δυο radom μεταβλητές x, y ως τα δύο ορίσματα! Επίσης υπάρχουν και κάποιες συντομευσεις. Αντί για παράδειγμα να γράφουμε x=x+1, μπορούμε να πούμε x++


Πρόσθεση...
Συμβολισμός: +
Χρήση: x+y
Συντόμευση: To x=x+1 ισοδυναμεί με x++

Αφαίρεση...
Συμβολισμός: -
Χρήση: x-y
Συντόμευση: To x=x-1 ισοδυναμεί με x--

Ακέραια διαίρεση(div)...
Συμβολισμός: /
Χρήση: x/y

Υπόλοιπο διαίρεσης...
Συμβολισμός: %
Χρήση: x%y

Πολλαπλασιασμός...
Συμβολισμός: *
Χρήση: x*y

Τελεστές εκχώρησης
Συμβολισμός: =
Χρήση: x=y ...εκχωρεί την τιμή του y στο x.


Τελεστές σύγκρισης

  • == (ίσο με)
  • != (άνισο με)
  • <> (άνισο με)
  • > (μεγαλύτερο από)
  • > (μικρότερο από)
  • >= (μεγαλύτερο και ίσο)
  • <= (μικρότερο και ίσο)

Λογικοί τελεστές
Οι 3 λογικοί τελεστές κάνουν λογικές πράξεις και το αποτέλεσμα είναι ΨΕΥΔΗΣ / ΑΛΗΘΗΣ. Στην πραγματικότητα δεν σου επιστρέφουν αυτό αλλά θα δείτε παρακάτω πως συνδιάζονται. Στη θέση των x, y παρακάτω μπορεί να είναι μια ολόκληρη παράσταση της μορφής [(x+y)*z-3*%5]. Δεν έχει σημασία πόσο μεγάλη είναι γιατί όταν θα εκτελεστεί το πρόγραμμα πρώτα θα υπολογιστεί η παράσταση του ενός μέρους, έπειτα του δεύτερου μέρους και στο τέλος θα υπολογιστεί ο τελεστής.

Λογικός τελεστής KAI-AND...
Συμβολισμός: &&
Χρήση: x&&y
έγραψε:Ο τελεστής αυτό επιστρέφει αλήθεια μόνο όταν και τα δύο μέλη είναι αλήθεια. Με απλά λόγια για να συνεχιστεί το πρόγραμμα με αληθή έξοδο θα πρέπει να ισχύουν και τα δυο μέλη.


Λογικός τελεστής H-OR...
Συμβολισμός: ||
Χρήση: x||y
έγραψε:Ο τελεστής αυτό επιστρέφει αλήθεια εάν ένα τουλάχιστον μέλος είναι αλήθεια. Με απλά λόγια για να συνεχιστεί το πρόγραμμα με αληθή έξοδο θα πρέπει ένα απο τα δυο μέλη τουλάχιστον να είναι αληθής.


Λογικός τελεστής OXI-NOT...
Συμβολισμός: !
Χρήση: !x
έγραψε:Ο τελεστής αυτό επιστρέφει το αντίθετο απο οτι είναι. Με απλά λόγια είναι η άρνηση μιας παράστασης.


Ελπίζω να βοηθήσουν τα παραπάνω! Καλή συνέχεια...
Τελευταία επεξεργασία από linuxs και 16 Ιουν 2011, 22:27, έχει επεξεργασθεί 9 φορά/ες συνολικά
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Κεφάλαιο 2 - Βασικά Συστατικά

Δημοσίευσηαπό simosx » 20 Μαρ 2011, 00:25

Μπορείς να εγκαταστήσεις τις σελίδες τεκμηρίωσης με
Κώδικας: Επιλογή όλων

sudo apt-get install manpages-dev
sudo apt-get install manpages-posix-dev


Έπειτα, για να δεις τι υπάρχει στο π.χ. stdio.h
Κώδικας: Επιλογή όλων
man stdio.h

και για επιμέρους συναρτήσεις
Κώδικας: Επιλογή όλων
man fclose


Το ίδιο είναι διαθέσιμο και από το Σύστημα→Βοήθεια, όπου κάνουμε αναζήτηση για τα παραπάνω.
Αυτές οι σελίδες είναι στα αγγλικά ενώ υπάρχει η δυνατότητα μετάφρασης (δύσκολο έργο).
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Κεφάλαιο 2 - Βασικά Συστατικά

Δημοσίευσηαπό linuxs » 20 Μαρ 2011, 01:00

simosx έγραψε:Μπορείς να εγκαταστήσεις τις σελίδες τεκμηρίωσης με
Κώδικας: Επιλογή όλων

sudo apt-get install manpages-dev
sudo apt-get install manpages-posix-dev


Έπειτα, για να δεις τι υπάρχει στο π.χ. stdio.h
Κώδικας: Επιλογή όλων
man stdio.h

και για επιμέρους συναρτήσεις
Κώδικας: Επιλογή όλων
man fclose


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


Θα προσπαθήσω να το εισάγω αύριο...εκτός απο βιβλιοθήκες τι άλλο?? μμμ... ;)
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Κεφάλαιο 2 - Βασικά Συστατικά

Δημοσίευσηαπό simosx » 20 Μαρ 2011, 01:07

Μπορείς να αναφερθείς στις πιο χρήσιμες βιβλιοθήκες,
1. stdio.h, που είναι οι βασικές συναρτήσεις εισόδου/εξόδου (printf, fopen, fclose, fwrite, κτλ)
2. string.h, οι συναρτήσεις για επεξεργασία σε αλφαριθμητικά,
3. math.h, για συναρτήσεις μαθηματικών όπως sqrt() (τετραγωνική ρίζα).

Για τυπικό προγραμματισμό, μόνο λίγα από τη πλήρη λίστα θα χρησιμοποιηθούν.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Κεφάλαιο 2 - Βασικά Συστατικά

Δημοσίευσηαπό linuxs » 20 Μαρ 2011, 01:11

simosx έγραψε:Μπορείς να αναφερθείς στις πιο χρήσιμες βιβλιοθήκες,
1. stdio.h, που είναι οι βασικές συναρτήσεις εισόδου/εξόδου (printf, fopen, fclose, fwrite, κτλ)
2. string.h, οι συναρτήσεις για επεξεργασία σε αλφαριθμητικά,
3. math.h, για συναρτήσεις μαθηματικών όπως sqrt() (τετραγωνική ρίζα).

Για τυπικό προγραμματισμό, μόνο λίγα από τη πλήρη λίστα θα χρησιμοποιηθούν.


Καλά εννοείτε αυτό. Απλά όπως είπα έτσι για να υπάρχει τη έβαλα. Μην μου θυμίζει στα strings...θα μου βγεί το χέρι και είναι και πολλά ;)
όταν τα είχα πρωτομάθει την επόμενη ημέρα έλεγα str str str str... :P αλλα είναι ένα απο τα σημαντικότερα κομμάτια!
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: ΚΕΦΑΛΑΙΟ 2 - ΒΑΣΙΚΑ ΣΥΣΤΑΤΙΚΑ

Δημοσίευσηαπό pr0n » 08 Αύγ 2011, 22:31

linuxs έγραψε:Υπάρχει η εντολή "#include" η οποία συνδέει το πρόγραμμά μας με την βιβλιοθήκη που ακολουθεί. Βασικά, δεν είμαι σίγουρος αν είναι εντολή αλλα δεν έχει τόση σημασία αυτό.


πολύ καλή δουλειά φίλε..όπως είπες το #include δεν θεωρείται εντολή αλλά μια ντιρεκτίβα (directive) προς τον compiler..κοινώς μια οδηγία για το τι να προσθέσει..
φυσικά υπάρχουν πολλές ντιρεκτίβες όπως η κλασσική #define
Εικόνα
"I recommend Ubuntu" - Bill Gates

Spoiler: show
1 Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Λειτουργικά → Ubuntu 11.04 natty 32bit (en_US.UTF-8), Ubuntu 2.6.38-8-generic
3 Προδιαγραφές → Intel Pentium 4 CPU 3.06GHz ‖ RAM 496 MiB ‖ SiS-648FX -
4 Κάρτες γραφικών: nVidia NV34 [GeForce FX 5200] [10de:0322] (rev a1)
5 Δίκτυα: eth0: SiS SiS900 PCI Fast Ethernet [1039:0900] (rev 91)
Άβαταρ μέλους
pr0n
babeTUX
babeTUX
 
Δημοσιεύσεις: 10
Εγγραφή: 07 Αύγ 2011, 18:23
Εκτύπωση

Re: ΚΕΦΑΛΑΙΟ 2 - ΒΑΣΙΚΑ ΣΥΣΤΑΤΙΚΑ

Δημοσίευσηαπό linuxs » 09 Αύγ 2011, 01:02

"ντιρεκτίβα" δεν μου ερχόταν εκείνη την στιγμή! :P
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση


Επιστροφή στο Μαθήματα C

cron