Programski jezik C

download Programski jezik C

of 35

description

Metode programiranja i proizvodnja softvera

Transcript of Programski jezik C

  • Programski jezik C

    Tipovi, operatori, selekcije,

    repeticije

  • Zadatak1

    Sa tastature uitati Ime_Studenta, Prezime_Studenta, Adresu_Studenta, u

    fajlu izlaz.txt formirati jedan slog:

    Petar

    Petrovic

    Cetinjska 1b

    .

  • Predstavljanje brojeva u razliitim brojnim sistemima

    Cifre brojnog sistema su: 0 do (baza 1)

    Primer:

    binarni (b=2): {0, 1}

    oktalni (b=8): {0, 1, 2, 3, 4, 5, 6, 7}

    decimalni (b=10): {0, 1, 2, 3,4 ,5 ,6 ,7 , 8, 9}

    heksadecimalni (b=16): {0, 1, 2, 3, 4, 5, 6, 7,

    8, 9, A, B, C, D, E, F}

  • 0000 0000 0000 0000

    ADRESE SADRAJI

    0000 0000 0000 0004

    0000 0000 0000 0008 1

    0000 0000 0000 000C

    0000 0000 0000 0010

    0000 0000 0000 0014

    0000 0000 0000 0018

    0000 0000 0000 001C

    0000 0000 0000 0020

    0000 0000 0000 0024

    0000 0000 0000 0028 0.5

    promeljiva x2

    promeljiva x1

    promeljiva y1

    promeljiva y2

    Sadraj memorije

    int x1;

    int x2=1;

    double y1;

    double y2=0.5;

    ADRESE

  • Primer 1

    /* Aritmeticke operacije */

    #include

    int main()

    {

    int a = 5;

    int b = 3;

    printf("Zbir a+b je : %d\n",a+b);

    printf("Razlika a-b je : %d\n",a-b);

    printf("Proizvod a*b je : %d\n",a*b);

    printf("Celobrojni kolicnik a/b je : %d\n", a/b);

    printf("Pogresan pokusaj racunanja realnog kolicnika a/b je : %f\n", a/b);

    printf("Realni kolicnik a/b je : %f\n", (float)a/(float)b);

    printf("Ostatak pri deljenju a/b je : %d\n", a%b);

    return 0;

    }

  • char tip

    Karakteri: A, B, c, d, 1, 4, #, ?, \n

    char varijabla se koristi za uvanje tekstualnih znakova:

    slova,

    cifara,

    specijalnih znakova,

    netampajuih (belih) znakova,

    ali moe se koristiti i za uvanje malih celobrojnih vrednosti (0 do 255 ili -128 do 127).

  • char je samo broj!

    Svakom karakteru se pridruuje numeriki kod.

    Postoje razliiti skupovi kodova:

    ASCII (American Standard Code for Information

    Interchange) najei.

    EBCDIC zastareo, danas se retko koristi.

    Noviji skupovi karaktera (Unicode).

    Koristiemo ASCII.

  • Primer 2

    /* koristenje char kao znakovnog tipa i za malu numericku vrednost */

    #include

    int main()

    {

    char znak;

    printf(Unesite znak: );

    scanf(%c, &znak);

    printf(Znak kao karakter je: %c\n", znak);

    printf(Numericka vrednost znak-a je: %d\n", znak);

    printf(Karakter posle %c je %c\n", znak, znak+1);

    return 0;

    }

  • Proiriti prethodni primer

    tako da program ita neku malu celobrojnu vrednost iz ulazne datoteke

    (fscanf) i to zapiite u neku izlaznu datoteku.

  • Omoguavaju obavljanje odreene akcije (u naem sluaju matematike operacije) nad odreenim vrednostima (konstantama, varijablama).

    Vrednosti nad kojima se obavlja akcija - operandi.

    Uobiajeni operatori: zagrade ()

    dodela vrednosti =

    sabiranje +

    oduzimanje -

    mnoenje * deljenje /

    moduo %

    inkrementacija (uveanje za 1) ++ dekrementacija (umanjenje za 1) - -

    Aritmetiki operatori

  • Aritmetiki operatori

    a = a + 3 a += 3 a = a b a = b a = a * c a *= c /=, %=

    a = a + 1 a += 1 a++ ++a b = b 1 b = 1 b b

    i = j++; i = j; j = j + 1; i = ++j; j = j+1; i = j;

  • Relacioni i logiki operatori

    Logiki tano je sve razliito od 0 (pre svega 1)

    Logiki netano je sve jednako sa 0

    Relacioni: < > = == !=

    Logiki: && (I), || (ILI), ! (NE)

  • Overflow primer

    #include

    int main( )

    {

    int iA = 1000;

    int iB = 1000000;

    int iC = 3000000;

    int iD = 5000000;

    printf ("%d * %d = %d\n", iA, iB, iA*iB);

    printf ("%d * %d = %d\n", iA, iC, iA*iC);

    printf ("%d * %d = %d\n", iA, iD, iA*iD);

    return 0;

    }

  • Iskazi selekcije

    Omoguava da se odreene naredbe izvre uslovno u zavisnosti od vrednosti odreenog iskaza

    Iskazi selekcije (grananje):

    if

    switch

  • If-else iskaz

    if (izraz)

    naredba1

    else

    naredba2

    Ako je izraz taan, naredba1 se izvrava.

    Ako je je izraz netaan, naredba2 se izvrava

    U oba sluaja umesto naredbi moe se navesti blok naredbi

  • Primer 3

    Koji je vei od dva broja?

    ...

    if ( a > b ) printf(Veci je

    );

    else printf(Veci je );

    START

    a, b

    a>b

    a b

    END

    NEDA

  • switch iskaz

    Viestruki uslovni iskaz Slian if-else if-else konstrukciji

    Omoguava izbor proizvoljnog broja opcija. Izbor je zasnovan na celobrojnoj vrednosti.

    switch (uslov)

    { case const-izraz: naredbe case const-izraz: naredbe default: naredbe }

  • break

    Kada se naie na break, blok naredbi se naputa bez obzira na trenutnu vrednost uslova.

    Program nastavlja sa izvravanjem prve naredbe iza bloka.

    Ukoliko se pozove u ugnedenim blokovima, break izlazi samo iz

    unutranjeg bloka.

  • Primer 4

    switch (ocena)

    {

    case 5: printf("Odlican!\n\n");

    break;

    case 4: printf("Vrlo dobar!\n\n");

    break;

    case 3: printf("Dobar!\n\n");

    break;

    case 2: printf("Dovoljan!\n\n");

    break;

    case 1: printf("Nedovoljan!\n\n");

    break;

    default: printf(Ocena mora biti izmedju 1 i 5.);

    }

  • Ternarni operator

    condition ? expression1 : expression2

    Funkcionie kao if-else

    min = ( x < y ) ? x : y;

  • Ciklusi

    Omoguavaju ponavljanje odreenih naredbi ili bloka naredbi vie puta.

    C omoguava vrlo fleksibilne naine za odreivanje broja ponavljanja ciklusa, ili donoenje odluke izlasku iz ciklusa.

    Postoje while, for i do-while ciklus.

  • while ciklus

    while (izraz)

    {

    naredbe;

    }

    Naredbe se izvravaju sve dok je uslov ispunjen, kada to vie nije sluaj izlazi se iz petlje

  • Primer 5

    #include

    /* print Fahrenheit-Celsius table for fahr = 0, 20, ..., 300; floating-point version */

    int main()

    {

    float fahr, celsius;

    float lower, upper, step;

    lower = 0; /* lower limit of temperature scale */

    upper = 300; /* upper limit */

    step = 20; /* step size */

    fahr = lower;

    while (fahr

  • Zadatak 2

    Napisati C program koji rauna sumu prvih n prirodnih brojeva, pri emu se n zadaje na poetku programa.

    Upotrebom while ciklusa.

  • for ciklus - primer

    For petlje se kontroliu brojakom promenljivom.

    Primer

    for ( i =0; i

  • Zadatak 3

    Realizovati mnoenje i deljenje pomou sabiranja i oduzimanja

  • do - while ciklus

    do

    {

    naredbe

    } while (izraz);

    Slian while ciklusa

    Uslov se izraunava nakon tela ciklusa

    Telo ciklusa se izvrava NAJMANJE jednom, ak i kada je uslov odmah netaan (jednak nuli)

  • do while ciklus

    int broj;

    do

    {

    printf(Unesite pozitivan ceo

    broj: );

    scanf(%d, &broj);

    } while ( broj

  • Primer 6

    // Emulacija Linux 'cat' programa, ispisuje sadrzaj datoteke na standardni izlaz

    #include // Upravljanje greskama ('errno')

    #include

    #include // Potreban za 'exit()'

    #define MAXL 80

    // Dodatni zadatak: Ukloniti suvisne nove redove u ispisu. Uneti nekoliko redova teksta

    u 'test.txt' da bi se uocio problem

    int main()

    {

    FILE *pf = fopen("test.txt", "r");

    if(pf == NULL) { // Fatalna greska

    perror("Can't open file test.txt"); // Ispisi opis i uzrok greske

    exit(errno); // Izadji iz programa, vrati OS-u kod uzroka greske

    }

    char buffer[MAXL]; // Sadrzaj ucitanog dela datoteke

    while(fgets(buffer, MAXL, pf) != NULL) // Ucitavaj datoteku deo-po-deo

    puts(buffer);

    fclose(pf);

    return 0;

    }

  • Zadatak 4

    Emulacija Linux cp programa koristei while

  • Zadatak 5

    Sa standardnog ulaza uitati prirodne brojeve N1 i N2. Koristei for ciklus, ispisati sve neparne brojeve od N1 do N2 u datoteku neparni.txt

  • Zadatak 6

    Realizovati prikaz ASCII tabele u formatu

    karakter, dekadni, oktalni, hexa

  • Zadatak 7

    Sa standardnog ulaza uitati prirodne brojeve N i q. Koristei while ispisati sve brojeve od 2 do N koji su deljivi sa q u datoteku deljivi.txt, a sve nedeljive brojeve u datoteku nedeljivi.txt

  • Zadatak 8

    Sa standardnog ulaza uitati prirodan broj N. Ispisati u datoteku running sumu prvih N prirodnih brojeva, u sledeem formatu (primer za N=4):

    1 + 2 = 3

    1 + 2 + 3 = 6

    1 + 2 + 3 + 4 = 10

  • Zadatak 9

    Sa standardnog ulaza uitati prirodan broj N. Ispisati sve njegove inioce u datoteku cinioci.txt