Changes between Version 10 and Version 11 of c-intro


Ignore:
Timestamp:
Feb 28, 2009, 3:46:57 PM (15 years ago)
Author:
msitar
Comment:

Dopolnjena nekatera poglavja

Legend:

Unmodified
Added
Removed
Modified
  • c-intro

    v10 v11  
    2323}}}
    2424
     25Velja 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
    2527[[BR]]
    2628
     
    3537{{{
    3638#!c
    37 a==b //a je enak b
    38 a!=b //a ni enak b
    39 a<=b //a je manjši ali enak b
    40 a>b  //a je večji kot b
     39a==b /*a je enak b */
     40a!=b /*a ni enak b */
     41a<=b /*a je manjši ali enak b */
     42a>b  /*a je večji kot b */
    4143}}}
    4244   * Logični
    4345{{{
    4446#!c
    45 (a<b) && (a<c) //IN
    46 (a<b) || (a<c) //ALI
    47 !(a<b)         //NI (negacija)
     47(a<b) && (a<c) /*IN */
     48(a<b) || (a<c) /*ALI */
     49!(a<b)         /*NI (negacija) */
    4850}}}
    4951   * Prireditveni in aritmetični
    5052{{{
    5153#!c
    52 a=b //a-ju priredimo vrednost b
    53 a%b //Ostanek pri deljenju a z b
     54a=b /*a-ju priredimo vrednost b */
     55a%b /*Ostanek pri deljenju a z b */
    5456}}}
    5557   * Posebni
    5658{{{
    5759#!c
    58 a++  //a povečamo za 1. Pišemo lahko tudi a=a+1
    59 a+=b //a-ju prištejemo vrednost b. Pišemo lahko tudi a=a+b
     60a++  /*a povečamo za 1. Pišemo lahko tudi a=a+1 */
     61a+=b /*a-ju prištejemo vrednost b. Pišemo lahko tudi a=a+b */
    6062}}}
    6163 * KOMENTARJI
    6264{{{
    6365#!c
    64 //Enovrstični komentar
     66//Enovrstični komentar - V C-ju naj se ne bi uporabljal ta način zapisa komentarjev
    6567
    6668/*Več vrstični
     
    7476== Spremenljivke ==
    7577
    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)
     78Spremenljivke 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
     82float a;     /*Naknadno podamo vrednost spremenljivke a */
     83
     84int b=4;     /*Vrednost spremenljivke lahko podamo že pri deklariranju */
     85
     86float c[10]; /*Spremenljivka c bo sestavljena iz 10-ih elementov
     87               (imeli bomo 10 realnih števil v skladišču c) */
    8688}}}
    8789
     
    9294#include <stdio.h>
    9395
    94 float H;
    95 int a;
     96float H;  /* Globalna spremenljivka */
     97float a;  /* Globalna spremenljivka */
    9698
    9799int podprogram_1() 
    98100{
    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;
    103108}
    104109
    105110int podprogram_2()
    106111{
    107   float s;
     112  float s;  /* Lokalna spremenljivka */
    108113 
    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
     119int main()
     120{
     121  podprogram_1();
     122  podprogram_2();
     123 
     124  return 0;
     125}
     126}}}
     127
     128V tem primeru sta spremenljivki ''H'' in ''a'' globalni spremenljivki, ''y'' in ''s'' pa sta lokalni spremenljivki posameznega podprograma.
    114129
    115130Vrednost spremenljivke lahko poda tudi uporabnik. Za program bomo uporabili funkcijo ''scanf'', ki prebere vnešeno vrednost in jo shrani pod nastavljeno spremenljivko.
     
    272287{{{
    273288#!c
    274 //Generiranje elementov matrike H
     289/*Generiranje elementov matrike H */
    275290
    276291for(i=0; i<4; i++) 
     
    314329int main()
    315330{
    316   float a=5.12; //Realno število
    317   int b=-5;     //Celo število
     331  float a=5.12; /*Realno število */
     332  int b=-5;     /*Celo število */
    318333
    319334  printf("Vrednost a je enaka %f\n", a);   
    320   printf("Vrednost a je enaka %4.2f\n", a); //Nastavimo željen format izpisa
    321   printf("Vrednost a je enaka %g\n", a);    //Format bo odvisen od velikosti
     335  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 */
    322337 
    323338  printf("Vrednost b je enaka %d\n", b);
     
    337352[[BR]]
    338353
     354== Uporaba makrojev ==
     355
     356Podobno kot spremenljivke lahko uporabimo makroje.
     357
     358Primer:
     359
     360{{{
     361#!c
     362#define MAX 100  /*Deklaracija makroja */
     363
     364printf(" Maksimum znaša %f", MAX);
     365
     366#undef MAX  /*Makro ne bo več veljal */
     367}}}
     368
     369Pri 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
     375float a=5.0;
     376float b=3.4;
     377printf("a je večji od b za %f", a-b);
     378...
     379
     380#endif
     381}}}
     382
     383[[BR]]
     384
    339385== Polja, vektorji, matrike ==
    340386
     
    343389{{{
    344390#!c
    345 float M[4];     //Enodimenzionalno polje - vektor oziroma matrika vsebuje 4 elemente z realnimi vrednostmi
     391float M[4];     /*Enodimenzionalno polje - vektor oziroma
     392                  matrika vsebuje 4 elemente z realnimi vrednostmi*/
    346393}}}
    347394
     
    395442{{{
    396443#!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
     444float 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 */
    400449
    401450printf("Element v drugi vrstici prvega stolpca je %f", N[1*3+0]);
    402451
    403452
    404 //Primer izpisa elementa, ki se nahaja v prvi vrstici tretjega stolpca.
     453/*Primer izpisa elementa, ki se nahaja v prvi vrstici tretjega stolpca */
    405454
    406455printf("Element v prvi vrstici tretjega stolpca je %f", N[0*3+2]);
     
    429478               {4.0, 5.0, 6.0}};
    430479
    431 //Primer izpisa elementa, ki se nahaja v prvi vrstici tretjega stolpca.
     480/*Primer izpisa elementa, ki se nahaja v prvi vrstici tretjega stolpca */
    432481
    433482printf("Element v prvi vrstici tretjega stolpca je %f", N[0][2]);
     
    458507float M[4], N[4];
    459508
    460 FILE *f;                     //Povemo, da gre za podatkovo strukturo
    461 f=fopen("datoteka.dat","r"); //"r" pomeni, da bo datoteka samo za branje
    462 fscanf(f, "%d %d", &n, &d);  //Prebere iz datoteke in shrani prva dva podatka pod spremenljivke n in d
     509FILE *f;                     /*Povemo, da gre za podatkovo strukturo */
     510f=fopen("datoteka.dat","r"); /*"r" pomeni, da bo datoteka samo za branje */
     511fscanf(f, "%d %d", &n, &d);  /*Prebere iz datoteke in shrani prva dva podatka pod spremenljivke n in d */
    463512
    464513for(i=0; i<4; i++)
    465514{
    466   fscanf(f, "%f", &M[i]);    //Prebere in shrani naslednje štiri podatke
     515  fscanf(f, "%f", &M[i]);    /*Prebere in shrani naslednje štiri podatke */
    467516}
    468517for(i=0; i<4; i++)
     
    490539#include <stdlib.h>
    491540
    492 float *m;  //Velikost vektorja m še ne poznamo
    493 
    494541int main()
    495542{
     543  float *m;  /*Velikost vektorja m še ne poznamo */
    496544  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);
    498548  return 0;
    499549}