Συντάκτης άρθρου:Darth Cotsos

Μάθημα 2ο

 

 

 

 

Πριν αρχίσουμε το δεύτερο μάθημα να πω για ένα bug του Z88dk. Όταν γράψετε το listing σας μετά το τέλος πατήστε 2 - 3 φορές enter και μετά σώστε το. Αυτό γίνετε γιατί αν πχ στο πρώτο listing που γράψαμε το αρχείο τελείωνε στο } τότε ο compiler βγάζει το μήνυμα λάθους 'unexpected end of file' και δεν προχωρά στη μεταγλώττιση.

Αντίθετα αν το αρχείο τελειώνει
1 - 2 γραμμές παρακάτω τότε το compile γίνετε κανονικά!!!

Στο δεύτερο μάθημα θα αναφερθώ στους control χαρακτήρες, τους τελεστές, στις εντολές του προ επεξεργαστή, στις δεσμευμένες λέξεις της C και τις βασικές βιβλιοθήκες της C καθώς και στις συναρτήσεις που περιέχουν!!!


Control χαρακτήρες

Είδαμε στο πρόγραμμα που γράψαμε στο 1ο μάθημα τον control χαρακτήρα \n μετά το "silogomania.com". Όπως ανέφερα αυτό αναγκάζει τον κέρσορα να πάει σε νέα γραμμή. Υπάρχουν όμως και άλλοι control χαρακτήρες για άλλες λειτουργίες. Αυτοί είναι:

\a χαρακτήρας προειδοποίησης (beep)
\b backspase
\f αλλαγή σελίδας
\n νέα γραμμή
\r επαναφορά κεφαλής
\t TAB
\v κατακόρυφο TAB
\0 NULL χαρακτήρας
\\ ανάποδη κάθετος
\? λατινικό ερωτηματικό
\' μονό εισαγωγικό
\" διπλό εισαγωγικό
\οοο οκταδικός αριθμός
\xhhh δεκαεξαδικός αριθμός.


Εντολές προ επεξεργαστή

Επίσης είδαμε και μία εντολή του προεπεξεργαστή που αφορά την ενσωμάτωση των βασικών βιβλιοθηκών της C αλλά και βιβλιοθηκών που μπορεί να έχει δημιουργήσει ο χρήστης.
Η εντολή #include για βιβλιοθήκες του χρήστη ενδέχεται σε κάποιους compilers να δίνετε ως:

#include "c:\mylibs\mylib.h"

δηλαδή με " " διπλά εισαγωγικά και όχι με <>!!!
Έτσι για να συνοψίσουμε τις εντολές του προεπεξεργαστή έχουμε:

#include -> ενσωμάτωση αρχείων βιβλιοθηκών.
#define -> ορισμός σταθερών και macros

π.χ. #define PI 3.14 (ορισμός σταθερής)
#define MAX (A,B) ((A)>(B) ? (A) : (B)) (macro που δίνει τον max)

#undef -> αναιρείτε ένας ορισμός!!!
#if, #else, #elif, #endif -> υποθετική εκτέλεση
#ifdef, #ifndef -> Αν είναι ορισμένη ή όχι κάποια σταθερά ή makro.
defined(name) -> Επιστρέφει true εάν έχει οριστεί το (name).

Βέβαια τα παραπάνω είναι μια απλή αναφορά και τους ορισμούς (κυρίως κάποιων σταθερών) θα τους καταλάβετε σε επόμενα μαθήματα όπου θα μπουν κάποια παραδείγματα. Θα προσπαθήσω Ωστόσο να ψάξω και στο διαδίκτυο να βρω απλά παραδείγματα που να αφορούν τις εντολές του προεπεξεργαστή για να σας παραθέσω καλύτερα τη χρήση τους.

Τελεστές αριθμητικών και μη πράξεων καθώς και σύγκρισης

Στη C όταν θέλουμε σε ένα μετρητή να τον αυξήσουμε ή να τον μειώσουμε κατά μία μονάδα δεν γράφουμε
x=x+1; ή x=x-1; (οπού και αυτό είναι σωστό) αλλά x++ ή x--
Έτσι συνοπτικά για τους τελεστές βάση προτεραιότητας έχουμε:

++, -- -> Τελεστής αύξησης και μείωσης.
+, -, !, ~ -> Μοναδιαίο συν, μοναδιαίο πλην, λογική άρνηση (not), άρνηση δυαδικών ψηφίων.
*pointer, &name -> Ανακατεύθυνση μέσω δείκτη, διεύθυνση ενός αντικειμένου.
(type) expr -> Ανάθεση έκφρασής σε τύπο.
size of -> Μέγεθος ενός αντικειμένου.
*, /, % -> Πολλαπλασιασμός, διαίρεση, υπόλοιπο ακέραιας διαίρεσης.
+, - -> Πρόσθεση, αφαίρεση.
<<, >> -> Αριστερή μετατόπιση, δεξιά μετατόπιση.
<, <=, >, >= -> Μικρότερο από, μικρότερο ίσο από, μεγαλύτερο από, μεγαλύτερο ίσο από.
==, != -> Ίσο με, διάφορο.
& -> Και δυαδικών ψηφίων.
^ ->Αποκλειστικό ή δυαδικών ψηφίων.
| -> ή δυαδικών ψηφίων.
&& -> Λογικό και
|| -> Λογικό ή
? : -> τελεστές συνθήκης. expr1 ? expr2 : expr3
=, +=, -=, *=, /=, %=, <=, >=, &=, |=, ^= -> Τελεστές καταχώρησης: καταχώρηση, καταχώρηση αθροίσματος, καταχώριση διαφοράς, καταχώρηση γινομένου, διαίρεσης, υπολοίπου, αριστερής μετατόπισης, δεξιάς μετατόπισης, καταχώριση και, καταχώριση ή, καταχώριση αποκλειστικού ή.

Δεσμευμένες λέξεις της C

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

asm, auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, size of, static, struct, switch, typedef, union, unsigned, void, volatile, while.

Οι βασικές βιβλιοθήκες της ANSI C

Εδώ θα παραθέσω τις βασικότερες βιβλιοθήκες της C. Υπάρχουν και άλλες αλλά θα αναφερθώ σε αυτές που χρησιμοποιούνται περισσότερο. Υπάρχουν επίσης και βιβλιοθήκες που αφορούν τα ξεχωριστά χαρακτηριστικά του κάθε 8bit μηχανήματος που μας ενδιαφέρει.
Άλλα ας δούμε τις βασικότερες συναρτήσεις της C καθώς και τις συναρτήσεις του περιεχέι η κάθε μία.

ctype.h
Η βιβλιοθήκη περιέχει συναρτήσεις που αφορούν χαρακτήρες έτσι έχουμε (όπου c ένας χαρακτήρας):

isalnum© -> αν είναι αλφαριθμητικός
isalpha© -> αν είναι αλφαβητικός
iscntrl© -> αν είναι control χαρακτήρας
isdigit© -> αν είναι ψηφίο (0 - 9)
isgraph© -> αν είναι εκτυπώσιμος χαρακτήρας μη συμπεριλαμβανομένου του κενού (space)
islower© -> αν είναι πεζός
isprint© -> αν είναι εκτυπώσιμος συμπεριλαμβανομένου του κενού (space)
ispunct© -> αν είναι εκτυπώσιμος εκτός space, αλφαβητικών και αριθμητικών
isspace© -> αν είναι space, form feed, newline, cr, tab, vtab
isupper© -> αν είναι κεφαλαίος
isxdigit© -> αν είναι δεκαεξαδικός
tolower© -> μετατρέπει τον κεφαλαίο χαρακτήρα σε πεζό
toupper© -> μετατρέπει τον πεζό χαρακτήρα σε κεφαλαίο

string.h
Αυτή η βιβλιοθήκη αυτή περιέχει συναρτήσεις που αφορούν string.

strlen(s) -> επιστρέφει το μήκος του string s
strcpy(s,ct) -> αντιγράφει το string ct στο sting s. Το s θα πρέπει να είναι μεγαλήτερο το ct για να χωρέσει το ct.
strncpy(s,ct,n) -> το ίδιο με το strncpy μόνο που εδώ αντιγράφει μέχρι n χαρακτήρες.
strcat(s,ct) -> ενσωματώνει το string ct μετά το string s
strncat(s,ct,n) -> ενσωματώνει n χαρακτήρες από το sting ct στο string s
strcmp(s,ct) -> συγκρίνει τα δυο string s και ct
strncmp(s,ct,n) -> συγκρίνει τους πρώτους n χαρακτήρες από τα δύο string
strchr(s,c) -> επιστρέφει τη θέση που θα βρεθεί ο πρώτος χαρακτήρας c στο string s
strrchr(s,c) -> επιστρέφει την τελευταία θέση του χαρακτήρα μέσα στο string s

stdio.h
Πρόκειτε για την βασική βιβλιοθήκη με συναρτήσεις εισόδου - εξόδου της C
stdin, stdout, strerr -> επιστρέφουν τις standard εισόδους και εξόδους καθώς και τις εξόδους error.
Αν δεν έχουν οριστεί διαφορετικά τότε ως standard είσοδος είναι ορισμένο το πληκτρολόγιο και έξοδος η οθόνη.
EOF -> επιστρέφει το τέλος αρχείου (End Of File)
getchar() -> δέχεται έναν χαρακτήρα από το πληκτρολόγιο
putchar© -> τυπώνει τον χαρακτήρα c
printf("format",arg1,...) -> τυπώνει δεδομένα στη standard έξοδο
scanf("format",&name1,...) -> διαβάζει δεδομένα από την standard είσοδο
gets(s,max) -> διαβάζει
puts(s) -> τυπώνει το string s
FILE *fp -> δήλωση ενός file pointer
fopen("name","mode") -> άνοιγμα ενός αρχείου. Όπου mode r για read, w για write και a για append
getc(fp) -> διάβασμα ενός χαρακτήρα από ένα αρχείο
putc(chr,fp) -> εγγραφή ενός χαρακτήρα σε ένα αρχείο
fprintf(fp,"format",arg1,...) -> εγγραφή δεδομένων σε ένα αρχείο
fscanf(fp,"format",arg1,...) -> διάβασμα δεδομένων από ένα αρχείο
fclose(fp) -> κλείσιμο ενός αρχείου
ferror(fp) -> επιστρέφει τον κωδικό λάθους από κάποια ενέργεια σε ένα αρχείο Ο κωδικός είναι 0 αν όλα είναι ΟΚ
feof(fp) -> επιστρέφει 0 αν δεν βρέθηκε τέλος αρχείου.
fgets(s,max,fp) -> διαβάζει
fputs(s,fp) -> εγγραφή του string s σε ένα αρχείο

stdlib.h
Είναι η standard βιβλιοθήκη της C και περιέχει συναρτήσεις "γενικών καθηκόντων"

abs(n) -> επιστρέφει την απόλυτη τιμή του ακέραιου n
div(n,d) -> επιστρέφει το υπόλοιπο της διαίρεσης των ακέραιων n και d
rand() -> επιστρέφει έναν ψευδοτυχαίο ακέραιο
exit(status) -> σταματά την εκτέλεση του προγράμματος
system(s) -> περνάει το sting s στο σύστημα για εκτέλεση
atof(s) -> μετατρέπει το string s σε double
atoi(s) -> μετατρέπει το string s σε integer
atol(s) -> μετατρέπει το string s σε long

malloc(size) -> δεσμεύει χώρο στη μνήμη.
realloc(pts,size) -> μεταβάλλει το δεσμευμένο χώρο ενός αντικειμένου
free(ptr) -> αποδεσμεύει χώρο
bsearch(key,array,n,size,cmp()) -> ψάχνει έναν πίνακα για συγκεκριμένο κλειδί
qsort(array,n,size,cmp()) -> ταξινόμηση ενός πίνακα κατά αύξουσα σειρά

math.h
H math όπως το λέει και το όνομα της είναι η βιβλιοθήκη των μαθηματικών συναρτήσεων της C

sin(x), cos(x), tan(x) -> Τριγωνομετρικές συναρτήσεις
asin(x), acos(x), atan(x) -> αντίστροφες τριγωνομετρικές συναρτήσεις
atan2(y,x) -> τόξο εφαπτομένης(y/x)
sinh(x), cosh(x), tanh(x) -> υπερβολικές τριγωνομετρικές συναρτήσεις
exp(x), log(x), log10(x) -> εκθετικές και λογαριθμικές συναρτήσεις
pow(x,y), sqrt(x) -> συναρτήσεις δυνάμεων και ρίζας
ceil(x), floor(x), fabs(x) -> συναρτήσεις στρογγυλοποίησης

Έκανα εδώ στο 2ο μάθημα μία μικρή αναφορά στις κυριότερες βιβλιοθήκες της C ώστε να υπάρχει μία αναφορά για την συνέχεια των άρθρων. Όσοι έχουν προηγούμενη εμπειρία με προγραμματισμό θα αναγνωρίσουν πολλές από τις συναρτήσεις αφού υπάρχουν σχεδόν αυτούσιες οι με παρόμοια ονόματα και σύνταξη και σε άλλες γλώσσες όπως πχ η Pascal.
Επαναλαμβάνω ότι αναφέρω τις βασικές βιβλιοθήκες και συναρτήσεις τους. Υπάρχουν περισσότερες βιβλιοθήκες και συναρτήσεις τις οποίες δεν έχω αναφέρει. Η προσπάθεια επικεντρώνετε στα βασικά της γλώσσας.
Από το επόμενο μάθημα θα αρχίσουμε να τα βάζουμε όλα αυτά μαζί και να φτιάχνουμε τα πρώτα προγράμματα.

Συνολική βαθμολογία (0)

0 έως 5 αστέρια
  • Δεν βρέθηκαν σχόλια
Κάθε χρόνο στις 20 του Ιούνη η Θεσσαλονίκη θυμάται μια από τις χειρότερες καταστροφές που την χτύπησαν.Θυμάται εκείνο το ζεστό καλοκαίρι της Τρίτης του 1978 το οποίο έμεινε στην ιστορία ως ημέρα του μεγάλου σεισμού.

Ευθυμογραφήματα

Συντάκτης:Βασίλης Κωνσταντίνου

Καταχώρηση εικόνας

 
Ήταν μία συνηθισμένη βροχερή Λονδρέζικη μέρα στα τέλη Δεκέμβρη.Ο γνωστός ανταποκριτής είχε πάρει εντολή να πάει σε ειδική αποστολή....
              Διαβάστε το άρθρο

Συνεντεύξεις

Αγαπητοί φίλοι..Έχουμε την μεγάλη τιμή να σας παρουσιάσουμε μια μεγάλη συνέντευξη από έναν άνθρωπο που δεν χρειάζεται ιδιαίτερες συστάσεις για το τι πρόσφερε στον χώρο της πληροφορικής.Ο Νίκος Μανούσος ο CEO της Compupress είναι κοντά μας.

     Διαβάστε την συνέντευξη

Άλλα άρθρα

Σχεδόν όλοι οι Θεσσαλονικείς έχουν περάσει από το παλιό Λούνα παρκ.Στις μνήμες μας έρχονται μουσικές γέλια και φωνές,και όμορφα χρωματιστά λαμπάκια τα οποία ζωντανεύουν σαν όραμα μπροστά στα μάτια μας.Εμείς εδώ θυμόμαστε το παλιό αγαπημένο μας λούνα παρκ στην Νέα παραλία Θεσσαλονίκης.

Συνεντεύξεις

Στο καλοκαιρινό PC Master του Ιουνίου του 2011,μαζί με το τετρασέλιδο αφιέρωμα με θέμα την ολοκλήρωση των 133 τευχών του Pixel σε ψηφιοποιημένη μορφή που ολοκληρώθηκε από εμάς στο retrovisions,είχαμε και την ευκαιρία να δώσουμε μια συνέντευξη στον αρχισυντάκτη του PC Master Χρήστο Κουβόπουλο με θέμα το περιοδικό Pixel και η εποχή των home micros.

Game review

Αποκλεισμένη από κάθε δυνατή βοήθεια,η Ellen Ripley βρίσκεται μόνη σε ένα διαστημικό σταθμό με ένα θανατηφόρο επισκέπτη.Η μάχη είναι άνιση γιαυτό και θα πρέπει να ξεπεράσει κάθε αδυναμία της για να βγει ζωντανή.Σας παρουσιάζουμε ένα μοναδικό survival horror stealth adventure game,όπου ο ήχος θυμίζει παραγωγές του George Lukas και η ατμόσφαιρα σε ταινίες που κέρδισαν όσκαρ..

Ψηφιοποιήσεις

Another World

Game review

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

        Διαβάστε το review

Σύνδεση στο blog

Συνδεμένοι χρήστες

Αυτήν τη στιγμή επισκέπτονται τον ιστότοπό μας 14 guests και κανένα μέλος

retrosystem

Game review

Μια γυναίκα δυο ψυχές.Ένα μεγάλο μυστικό,και ένας επιστήμονας που θα προσπαθήσει να ανακαλύψει το φαινόμενο Jodie.Κάνουμε μια παρουσίαση σε ένα παιχνίδι σταθμός στην πορεία του PS3.Πρόκειται να ζήσουμε έντονα συναισθήματα όπως τα ζει εκείνο το μικρό κορίτσι που διαθέτει μέσα της μια τεράστια δύναμη.

Τελευταία σχόλια στο blog


Καλησπερα...Δεν έψαξες καλά το site
https://www.retrovisions.gr/index.php/2014-08-15-21-03-07/2014...
Καλησπερα, υπαρχουν σαρρωσεις του θρυλικου περιοδικου USER προς ληψη;

Εκδηλώσεις

retrovisions.gr - Compupress 15  χρόνια  χωρίς  το  Pixel. Εκδήλωση.
Στα πλαίσια των 15 ετών χωρίς το Pixel, η Compupress μέσο του Pc Master ετοίμασε ένα μοναδικό αφιέρωμα για τους εραστές του τότε περιοδικού.Μέσα σε όλη αυτή την χαρά παρευρεθήκαμε και εμείς καλεσμένοι ως αντιπρόσωποι και συντελεστές της ολοκλήρωσης των τευχών του Pixel σε ψηφιακή μορφή στα γραφεία της εταιρίας σε μια εκδήλωση που σίγουρα θα μείνει στην ιστορία.

Game review

 
Ένας εξαφανισμένος ιερέας και ο γιος του που ψάχνει να τον βρει.Ένα περίεργο χωριό με πολλά εγκαταλελειμμένα σπίτια.Μυστήριοι αφιλόξενοι χωρικοί.Η ασφάλεια της ημέρας αλλά και οι εφιάλτες της νύχτας.Ένας εφιάλτης ξεκινάει,και δεν πρόκειται να βγείτε ζωντανοί αν δεν τον αντιμετωπίσετε πρόσωπο με πρόσωπο.Κάνουμε ένα σκοτεινό review στο Personal Nightmare ένα παιχνίδι σταθμό στα horror adventure games από το μακρινό 1989.