Changes between Version 10 and Version 11 of c-intro
- Timestamp:
- Feb 28, 2009, 3:46:57 PM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
c-intro
v10 v11 23 23 }}} 24 24 25 Velja omeniti stil pisanja izvorne kode. Za boljše razumevanje programov sem uporabil določeno zamikanje in presledke, vednar to ne vpliva na sam prevajalnik! 26 25 27 [[BR]] 26 28 … … 35 37 {{{ 36 38 #!c 37 a==b / /a je enak b38 a!=b / /a ni enak b39 a<=b / /a je manjši ali enak b40 a>b / /a je večji kot b39 a==b /*a je enak b */ 40 a!=b /*a ni enak b */ 41 a<=b /*a je manjši ali enak b */ 42 a>b /*a je večji kot b */ 41 43 }}} 42 44 * Logični 43 45 {{{ 44 46 #!c 45 (a<b) && (a<c) / /IN46 (a<b) || (a<c) / /ALI47 !(a<b) / /NI (negacija)47 (a<b) && (a<c) /*IN */ 48 (a<b) || (a<c) /*ALI */ 49 !(a<b) /*NI (negacija) */ 48 50 }}} 49 51 * Prireditveni in aritmetični 50 52 {{{ 51 53 #!c 52 a=b / /a-ju priredimo vrednost b53 a%b / /Ostanek pri deljenju a z b54 a=b /*a-ju priredimo vrednost b */ 55 a%b /*Ostanek pri deljenju a z b */ 54 56 }}} 55 57 * Posebni 56 58 {{{ 57 59 #!c 58 a++ / /a povečamo za 1. Pišemo lahko tudi a=a+159 a+=b / /a-ju prištejemo vrednost b. Pišemo lahko tudi a=a+b60 a++ /*a povečamo za 1. Pišemo lahko tudi a=a+1 */ 61 a+=b /*a-ju prištejemo vrednost b. Pišemo lahko tudi a=a+b */ 60 62 }}} 61 63 * KOMENTARJI 62 64 {{{ 63 65 #!c 64 //Enovrstični komentar 66 //Enovrstični komentar - V C-ju naj se ne bi uporabljal ta način zapisa komentarjev 65 67 66 68 /*Več vrstični … … 74 76 == Spremenljivke == 75 77 76 Spremenljivke so osnovni gradniki programa. Če želimo uporabljati spremenljivke, jih moramo najprej deklarirati. To storimo tako, da podamo njen tip, ki določa, kakšno vrednost hranimo v njen, in njeno ime. 77 78 {{{ 79 #!c 80 float a; 81 a=5.12; //Naknadno podamo vrednost spremenljivke a 82 83 int b=4; //Vrednost spremenljivke lahko podamo že pri deklariranju 84 85 float c[10]; //Spremenljivka c bo sestavljena iz 10-ih elementov (imeli bomo 10 realnih števil v skladišču c) 78 Spremenljivke so osnovni gradniki programa. Če želimo uporabljati spremenljivke, jih moramo najprej deklarirati. To storimo tako, da podamo njen tip, ki določa, kakšno vrednost hranimo v njen, in njeno ime. V C-ju se normalno spremenljivke napišejo takoj na začetku podprograma oziroma bloka, ki se začne z ''{''. 79 80 {{{ 81 #!c 82 float a; /*Naknadno podamo vrednost spremenljivke a */ 83 84 int b=4; /*Vrednost spremenljivke lahko podamo že pri deklariranju */ 85 86 float c[10]; /*Spremenljivka c bo sestavljena iz 10-ih elementov 87 (imeli bomo 10 realnih števil v skladišču c) */ 86 88 }}} 87 89 … … 92 94 #include <stdio.h> 93 95 94 float H; 95 int a; 96 float H; /* Globalna spremenljivka */ 97 float a; /* Globalna spremenljivka */ 96 98 97 99 int podprogram_1() 98 100 { 99 int i; 100 float y; 101 102 ... 101 float y; /* Lokalna spremenljivka */ 102 103 H=24.0; 104 y=H/12.0+7.0; 105 a=y*2.0; 106 printf("y zanaša %f\n", y); 107 return 0; 103 108 } 104 109 105 110 int podprogram_2() 106 111 { 107 float s; 112 float s; /* Lokalna spremenljivka */ 108 113 109 ... 110 } 111 }}} 112 113 V tem primeru sta spremenljivki ''H'' in ''a'' globalni spremenljivki, ''i'' in ''y'' sta lokalni spremenljivki za podprogram_1 ter spremenljivka ''s'' za podprogram_2. 114 s=H-a; 115 printf("s zanaša %f\n", s); 116 return 0; 117 } 118 119 int main() 120 { 121 podprogram_1(); 122 podprogram_2(); 123 124 return 0; 125 } 126 }}} 127 128 V tem primeru sta spremenljivki ''H'' in ''a'' globalni spremenljivki, ''y'' in ''s'' pa sta lokalni spremenljivki posameznega podprograma. 114 129 115 130 Vrednost spremenljivke lahko poda tudi uporabnik. Za program bomo uporabili funkcijo ''scanf'', ki prebere vnešeno vrednost in jo shrani pod nastavljeno spremenljivko. … … 272 287 {{{ 273 288 #!c 274 / /Generiranje elementov matrike H289 /*Generiranje elementov matrike H */ 275 290 276 291 for(i=0; i<4; i++) … … 314 329 int main() 315 330 { 316 float a=5.12; / /Realno število317 int b=-5; / /Celo število331 float a=5.12; /*Realno število */ 332 int b=-5; /*Celo število */ 318 333 319 334 printf("Vrednost a je enaka %f\n", a); 320 printf("Vrednost a je enaka %4.2f\n", a); / /Nastavimo željen format izpisa321 printf("Vrednost a je enaka %g\n", a); / /Format bo odvisen od velikosti335 printf("Vrednost a je enaka %4.2f\n", a); /*Nastavimo željen format izpisa */ 336 printf("Vrednost a je enaka %g\n", a); /*Format bo odvisen od velikosti */ 322 337 323 338 printf("Vrednost b je enaka %d\n", b); … … 337 352 [[BR]] 338 353 354 == Uporaba makrojev == 355 356 Podobno kot spremenljivke lahko uporabimo makroje. 357 358 Primer: 359 360 {{{ 361 #!c 362 #define MAX 100 /*Deklaracija makroja */ 363 364 printf(" Maksimum znaša %f", MAX); 365 366 #undef MAX /*Makro ne bo več veljal */ 367 }}} 368 369 Pri tem omenimo še to, da lahko pogojimo, katere dele našega programa naj prevajalnik prevede in katere ne. To storimo tako, da izključimo blok kode, ki nas ne zanima, kot kaže primer: 370 371 {{{ 372 #!c 373 #if 0 374 375 float a=5.0; 376 float b=3.4; 377 printf("a je večji od b za %f", a-b); 378 ... 379 380 #endif 381 }}} 382 383 [[BR]] 384 339 385 == Polja, vektorji, matrike == 340 386 … … 343 389 {{{ 344 390 #!c 345 float M[4]; //Enodimenzionalno polje - vektor oziroma matrika vsebuje 4 elemente z realnimi vrednostmi 391 float M[4]; /*Enodimenzionalno polje - vektor oziroma 392 matrika vsebuje 4 elemente z realnimi vrednostmi*/ 346 393 }}} 347 394 … … 395 442 {{{ 396 443 #!c 397 float N[2*3]={1.0, 2.0, 3.0, 4.0, 5.0, 6.0}; //Matriko zapišemo kot vektor v eni vrstici. Pišemo lahko tudi N[6]=... 398 399 //Primer izpisa elementa, ki se nahaja v drugi vrstici prvega stolpca. V tem primeru gre za četrti element matrike oziroma vektorja N 444 float N[2*3]={1.0, 2.0, 3.0, 4.0, 5.0, 6.0}; /*Matriko zapišemo kot vektor v eni vrstici. 445 Pišemo lahko tudi N[6]=... */ 446 447 /*Primer izpisa elementa, ki se nahaja v drugi vrstici prvega stolpca 448 V tem primeru gre za četrti element matrike oziroma vektorja N */ 400 449 401 450 printf("Element v drugi vrstici prvega stolpca je %f", N[1*3+0]); 402 451 403 452 404 / /Primer izpisa elementa, ki se nahaja v prvi vrstici tretjega stolpca.453 /*Primer izpisa elementa, ki se nahaja v prvi vrstici tretjega stolpca */ 405 454 406 455 printf("Element v prvi vrstici tretjega stolpca je %f", N[0*3+2]); … … 429 478 {4.0, 5.0, 6.0}}; 430 479 431 / /Primer izpisa elementa, ki se nahaja v prvi vrstici tretjega stolpca.480 /*Primer izpisa elementa, ki se nahaja v prvi vrstici tretjega stolpca */ 432 481 433 482 printf("Element v prvi vrstici tretjega stolpca je %f", N[0][2]); … … 458 507 float M[4], N[4]; 459 508 460 FILE *f; / /Povemo, da gre za podatkovo strukturo461 f=fopen("datoteka.dat","r"); / /"r" pomeni, da bo datoteka samo za branje462 fscanf(f, "%d %d", &n, &d); / /Prebere iz datoteke in shrani prva dva podatka pod spremenljivke n in d509 FILE *f; /*Povemo, da gre za podatkovo strukturo */ 510 f=fopen("datoteka.dat","r"); /*"r" pomeni, da bo datoteka samo za branje */ 511 fscanf(f, "%d %d", &n, &d); /*Prebere iz datoteke in shrani prva dva podatka pod spremenljivke n in d */ 463 512 464 513 for(i=0; i<4; i++) 465 514 { 466 fscanf(f, "%f", &M[i]); / /Prebere in shrani naslednje štiri podatke515 fscanf(f, "%f", &M[i]); /*Prebere in shrani naslednje štiri podatke */ 467 516 } 468 517 for(i=0; i<4; i++) … … 490 539 #include <stdlib.h> 491 540 492 float *m; //Velikost vektorja m še ne poznamo493 494 541 int main() 495 542 { 543 float *m; /*Velikost vektorja m še ne poznamo */ 496 544 int x=10; 497 m=malloc(x*sizeof(float)); //Naredi vektor velikosti x 545 546 m=(float*)malloc(x*sizeof(float)); /*Naredi vektor velikosti x */ 547 free(m); 498 548 return 0; 499 549 }