Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

HY150Ξενοφών Ζαμπούλης HY150 Ε π ι π λέον στοιχεία της C.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "HY150Ξενοφών Ζαμπούλης HY150 Ε π ι π λέον στοιχεία της C."— Μεταγράφημα παρουσίασης:

1 HY150Ξενοφών Ζαμπούλης HY150 Ε π ι π λέον στοιχεία της C

2 HY150 Ξενοφών Ζαμπούλης 2 Πρόγραμμα σε Διαφορετικά Αρχεία Οργανώνουμε καλύτερα τον κώδικα Χρήσιμα σε μεγάλα π ρογράμματα – Παράδειγμα (human tracking) Linker, - Ι header files – #include “myheader.h” extern – extern void myfunction();

3 HY150 Ξενοφών Ζαμπούλης 3 header files – Παράδειγμα - “myAlloc.h” #include #define Pi 3.1415927 //Orismos Domwn typedef struct Level { int level; struct List *head; struct List *tail; struct Level *next; } Level; typedef struct List { float **image; int l,c; struct List *next; } List; //Orismos global metablhtwn int globalVariable; //prototypes sunarthsewn void **Alloc2D(int dimx, int dimx_bytes, int dimy, int dimy_bytes); int **FreeInt(int **I, int dimx); Level *AllocTree(int depth, int l, int c); Level *FreeTree(Level *root);

4 HY150 Ξενοφών Ζαμπούλης 4 Ορίσματα στη γραμμή εντολής int main(int argc, char *argv[]) { int number; if (argc != 2) { printf(“Usage:%s number\n”,argv[0]); exit(0); } number = atoi(argv[1]); … } int main(int argc, char *argv[]) argc: # Ορισμάτων argv: Ορίσματα Παράδειγμα > a.out 10 20 test.txt //argc = 4 //argv[0] = “a.out” //argv[1] = “10” //argv[2] = “20” //argv[3] = “test.txt”

5 HY150 Ξενοφών Ζαμπούλης 5 Ορίσματα στη γραμμή εντολής int main(int argc, char *argv[], char *env[]) { int count = 0; for (count = 0; env[count] != 0; count++ ) printf("%s\n",env[count]); } NULL terminated array

6 HY150 Ξενοφών Ζαμπούλης 6 env[0] : ALLUSERSPROFILE=C:\Documents and Settings\All Users env[1] : APPDATA=C:\Documents and Settings\founder\Application Data env[2] : CLASS_HOME=D:\Program Files\Java\jdk1.6.0_02\lib\dt.jar;.;D:\Program Files\Java\jdk1.6.0_02\lib env[3] : CommonProgramFiles=C:\Program Files\Common Files env[4] : COMPUTERNAME=LUOSIYONG env[5] : ComSpec=C:\WINDOWS\system32\cmd.exe env[6] : FP_NO_HOST_CHECK=NO env[7] : HOMEDRIVE=C: env[8] : HOMEPATH=\Documents and Settings\founder env[9] : JAVA_HOME=D:\Program Files\Java\jdk1.6.0_02 env[10] : LOGONSERVER=\\LUOSIYONG env[11] : NUMBER_OF_PROCESSORS=1 env[12] : OS=Windows_NT env[13] : Path=C:\windows\system32;D:\Program Files\Java\jdk1.6.0_02\bin;D:\xampp\mysql\bin env[14] : PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH env[15] : PROCESSOR_ARCHITECTURE=x86 env[16] : PROCESSOR_IDENTIFIER=x86 Family 15 Model 47 Stepping 2, AuthenticAMD env[17] : PROCESSOR_LEVEL=15 env[18] : PROCESSOR_REVISION=2f02 env[19] : ProgramFiles=C:\Program Files env[20] : PROMPT=$P$G env[21] : SESSIONNAME=Console env[22] : SystemDrive=C: env[23] : SystemRoot=C:\WINDOWS env[24] : TEMP=C:\DOCUME~1\founder\LOCALS~1\Temp env[25] : TMP=C:\DOCUME~1\founder\LOCALS~1\Temp env[26] : USERDOMAIN=LUOSIYONG env[27] : USERNAME=founder env[28] : USERPROFILE=C:\Documents and Settings\founder env[29] : VS90COMNTOOLS=D:\Program Files\VS2008\Common7\Tools\ env[30] : windir=C:\WINDOWS

7 HY150 Ξενοφών Ζαμπούλης 7 Χειρισμός Bits Οι τελεστές των bits εφαρμόζονται σε κάθε bit των ακεραίων τιμών και είναι : ~ ( ΣΥΜΠΛΗΡΩΜΑ ) ~1 = 0 ~0 = 1 – ~(10011010) = (01100101) & (AND) 0 & 1 = 0 1 & 1 = 1 – (10010011) & (00111101) = (00010001) | (OR) 0 | 1 = 1 0 | 0 = 0 – (10010011) | (00111101) = (10111111) ^ (XOR) 1 ^ 1 = 0 1 ^ 0 = 1 – (10010011) ^ (00111101) = (10101110)

8 HY150 Ξενοφών Ζαμπούλης 8 Χειρισμός Bits Τελεστές ολίσθησης > – x << y ολισθαίνει το αριστερά κατά y θέσεις bit Τα νέα bits είναι 0 (10001010) << 2 = (00101000) int a = 1; int b; b = a << 2; /* assigns 4 to b */ a <<= 2; /* changes a to 4 */

9 HY150 Ξενοφών Ζαμπούλης 9 Χειρισμός Bits Τελεστές ολίσθησης > – x >> y ολισθαίνει το δεξιά κατά y θέσεις bit Αν το x είναι unsigned, τα νέα bits είναι 0 Αλλιώς, τα νέα bits διατηρούν το π ρόσημο ( ανάλογα με την αρχιτεκτονική της μηχανής ) (10001010) >> 2 = (00100010) (unsigned) (10001010) >> 2 = (11100010) (signed – sign extension)

10 HY150 Ξενοφών Ζαμπούλης 10 #define ANIM_LOOP 1 // (0000 0001) #define ANIM_ONCE 2 // (0000 0010) #define ANIM_MAXSPEED 4 // (0000 0100) #define ANIM_MINSPEED 8 // (0000 1000) #define ANIM_CUSTSPEED 16 // (0001 0000) #define ANIM_LINK 32 // (0010 0000) #define ANIM_LINKALL 64 // (0100 0000)

11 HY150 Ξενοφών Ζαμπούλης 11 Testing a bit Problem: given int i, is bit n set (equal to 1)? 0000 0000 0000 0000 0000 0000 0000 0010 How can we test if this bit is 1? We can use & operator with a "mask" variable: mask 0000 0000 0000 0000 0010 0000 0000 0000 if (i & mask) printf ("yes"); else printf ("no");

12 HY150 Ξενοφών Ζαμπούλης 12 Toggling a bit and leaving all other bits unchanged x = x ^ mask; (or shorthand x ^= mask;) Bits that are set to 1 in the mask will be toggled in x. Bits that are set to 0 in the mask will be unchanged in x. Toggling means that if the bit is 1, it is set to 0, and if the bit is 0, it is set to 1. XOR truth table 0 ^ 0 = 0 1 ^ 0 = 1 0 ^ 1 = 1 1 ^ 1 = 0

13 HY150 Ξενοφών Ζαμπούλης 13 Setting a bit to zero and leaving all other bits unchanged x = x & mask; (or x &= mask;) Bits that are set to 1 in the mask will be unchanged in x. Bits that are set to 0 in the mask will be set to zero in x. AND truth table 0 & 0 = 0 1 & 0 = 0 0 & 1 = 0 1 & 1 = 1

14 HY150 Ξενοφών Ζαμπούλης 14 Setting a bit to one and leaving all other bits unchanged x = x | mask; (or x |= mask;) Bits that are set to 1 in the mask will be set to one in x. Bits that are set to 0 in the mask will be unchanged in x. OR truth table 0 | 0 = 0 1 | 0 = 1 0 | 1 = 1 1 | 1 = 1


Κατέβασμα ppt "HY150Ξενοφών Ζαμπούλης HY150 Ε π ι π λέον στοιχεία της C."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google