Programiranje 1 programski jezik c

25
Staša Vujičić Čas 10

description

Programiranje 1 programski jezik c. Staša Vujičić Čas 10. Funkcije. Globalne promenljive. Broja č karaktera Program č ita tekst sa ulaza i broji velika i mala slova, c ifre, beline i redove. Program demonstrira kori šć enje globalnih podataka. #include - PowerPoint PPT Presentation

Transcript of Programiranje 1 programski jezik c

Page 1: Programiranje 1  programski jezik c

Staša VujičićČas 10

Page 2: Programiranje 1  programski jezik c

Brojač karakteraProgram čita tekst sa ulaza i broji velika i mala slova, cifre, beline i redove. Program demonstrira korišćenje globalnih podataka.

Page 3: Programiranje 1  programski jezik c

#include <stdio.h>

/* Deklaracija funkcije prebroj */void prebroj();

/* Globalni brojaci. Podrazumevano su inicijalizovani nulom. */

int br_malih, br_velikih, br_cifara,

br_belina, br_redova;

Page 4: Programiranje 1  programski jezik c

/* main funkcija */int main(){

/* Pozivamo funkciju za prebrojavanje */prebroj();

/* Prikazujemo vrednosti globalnih brojaca, koje je funkcija prebroj() izmenila */printf("Broj malih slova: %d\n", br_malih);printf("Broj velikih slova: %d\n", br_velikih);printf("Broj cifara: %d\n", br_cifara);printf("Broj belina: %d\n", br_belina);printf("Broj redova: %d\n", br_redova);}

Page 5: Programiranje 1  programski jezik c

/* Definicija funkcije prebroj */void prebroj(){ int c; while((c = getchar()) != EOF) { if(c >= 'a' && c <= 'z') br_malih++; else if(c >= 'A' && c <= 'Z') br_velikih++; else if(c >= '0' && c <= '9') br_cifara++; else if(c == '\n' || c == '\t' || c == ' ') { br_belina++; if(c == '\n') br_redova++; } }}

Page 6: Programiranje 1  programski jezik c

Pokazivač je promenljiva koja sadrži adresu neke druge promenljive.

int x=1, y=1;11

11

x

y

Page 7: Programiranje 1  programski jezik c

int *ip; /* ip je pokazivac na int, odnosno *ip je tipa int */ip = &x; /* ip sada pokazuje na x */

11

11

x

y

ip

Page 8: Programiranje 1  programski jezik c

y=*ip; /* y je sada 1 */*ip = 0; /* x je sada 0 */

00

11

x

y

ip

Page 9: Programiranje 1  programski jezik c

*ip+=10; /* x je sada 10*/

1010

11

x

y

ip

Page 10: Programiranje 1  programski jezik c

++*ip; /* x je sada 11*/

1111

11

x

y

ip

Page 11: Programiranje 1  programski jezik c

(*ip)++; /* x je sada 12, zagrada neophodna zbog prioriteta operatora*/

1212

11

x

y

ip

Page 12: Programiranje 1  programski jezik c

Program demonstrira jednostavnu upotrebu pokazivača.

#include <stdio.h>

/* main funkcija */int main(){ int a = 2;

Page 13: Programiranje 1  programski jezik c

int *pi;

/* Prikaz vrednosti a pre izmene */ printf("Vrednost promenljive a: %d\n", a); /* Vrednost promenljive a: 2*/

/* Promena vrednosti promenljive a preko pokazivaca */

pi = &a;

izraz &a se može čitati kao: "adresa od a". Uopšte, ako je data

deklaracija T a; gde je T proizvoljan tip, tada je

Tip izraza &a tip (T *) (pokazivač na tip T). Vrednost izraza &a je adresa bajta u memoriji od

koga počinje zapis podatka a.

Page 14: Programiranje 1  programski jezik c

*pi = *pi + 2; Izraz *pi se može čitati kao: "ono na šta pokazuje pi". Ovaj izraz se može koristiti i kao leva i kao desna vrednost. Ako je definisan pokazivač T *p; gde je T

proizvoljan tip, tada je tip izraza *p upravo tip T vrednost izraza *p je vrednost podatka na adresi

na koju pokazuje p, tumačen kao podatak tipa T. Ako se izraz *p koristi kao leva vrednost, tada se vrednost na desnoj strani operatora dodele upisuje u memorijsku lokaciju na koju pokazuje p, prethodno konvertovana po

potrebi u tip T.

Page 15: Programiranje 1  programski jezik c

/* Prikaz vrednosti promenljive a nakon izmene */

printf("Vrednost promenljive a: %d\n", a);

}

/* Vrednost promenljive a: 4*/

Page 16: Programiranje 1  programski jezik c

#include <stdio.h>

main() {int x = 3;/* Adresu promenjive x zapamticemo u

novoj promenljivoj. Nova promenljiva je tipa pokazivaca na int (int*) */

int* px;

Page 17: Programiranje 1  programski jezik c

printf("Adresa promenljive x je : %p\n", &x);printf("Vrednost promenljive x je : %d\n", x);

/* Adresa promenljive x je : 0012FF88 Vrednost promenljive x je : 3 */

px = &x;printf("Vrednost promenljive px je (tj. px) :

%p\n", px);printf("Vrednost promenljive na koju ukazuje

px (tj. *px) je : %d\n", *px);/*Vrednost promenljive px je (tj. px) :

0012FF88 Vrednost promenljive na koju ukazuje px

(tj. *px) je : 3*/

Page 18: Programiranje 1  programski jezik c

/* Menjamo vrednost promenljive na koju ukazuje px */

*px = 6;printf("Vrednost promenljive na koju

ukazuje px (tj. *px) je : %d\n", *px);/*Vrednost promenljive na koju ukazuje px

(tj. *px) je : 6/* Posto px sadrzi adresu promenljive x,

ona ukazuje na x tako da je posredno promenjena i vrednost promenljive x */

printf("Vrednost promenljive x je : %d\n", x);

}/* Vrednost promenljive x je : 6*/

Page 19: Programiranje 1  programski jezik c

#include <stdio.h>

/* main funkcija */int main(){ double x = 2.1, *px = &x; /*px pokazuje

na adresu od x*/ double y = 0.1, *py = &y; /*py pokazuje

na adresu od y*/

Page 20: Programiranje 1  programski jezik c

/* Prikazujemo vrednosti pokazivaca. %p specifikator u printf()-u ispisuje vrednost pokazivaca u heksadekadnoj notaciji. */

printf("Vrednost pokazivaca px je %p\n", px); printf("Vrednost pokazivaca py je %p\n", py);

/* Vrednost pokazivaca px je 0xbfe7caa0 Vrednost pokazivaca py je 0xbfe7ca98*/

/* Ispisujemo vrednosti na koje pokazuju pokazivaci */

printf("px pokazuje na vrednost: %f\n", *px); printf("py pokazuje na vrednost: %f\n", *py);/* px pokazuje na vrednost: 2.100000 py pokazuje na vrednost: 0.100000 */

Page 21: Programiranje 1  programski jezik c

/* Ispitujemo da li su pokazivaci jednaki, tj. da li pokazuju na isti objekat u memoriji */

if(px == py) printf("Pokazivaci px i py pokazuju na

isti objekat\n"); else printf("Pokazivaci px i py ne pokazuju

na isti objekat\n");

/* Pokazivaci px i py ne pokazuju na isti objekat */

py = px;

Page 22: Programiranje 1  programski jezik c

/* Prikazujemo vrednosti pokazivaca. %p specifikator u printf()-u ispisuje vrednost pokazivaca u heksadekadnoj notaciji. */

printf("Vrednost pokazivaca px je %p\n", px);

printf("Vrednost pokazivaca py je %p\n", py);

/* Vrednost pokazivaca px je 0xbfe7caa0 Vrednost pokazivaca py je 0xbfe7caa0 */

/* Ispisujemo vrednosti na koje pokazuju pokazivaci */

printf("px pokazuje na vrednost: %f\n", *px); printf("py pokazuje na vrednost: %f\n", *py);/* px pokazuje na vrednost: 2.100000 py pokazuje na vrednost: 2.100000 */

Page 23: Programiranje 1  programski jezik c

/* Ispitujemo da li su pokazivaci jednaki, tj. da li pokazuju na isti objekat u memoriji */

if(px == py) printf("Pokazivaci px i py pokazuju na

isti objekat\n"); else printf("Pokazivaci px i py ne pokazuju

na isti objekat\n");/* Pokazivaci px i py pokazuju na isti

objekat*/

px = &y;

Page 24: Programiranje 1  programski jezik c

/* Prikazujemo vrednosti pokazivaca. %p specifikator u printf()-u ispisuje vrednost pokazivaca u heksadekadnoj notaciji. */

printf("Vrednost pokazivaca px je %p\n", px); printf("Vrednost pokazivaca py je %p\n", py);/* Vrednost pokazivaca px je 0xbfe7ca98 Vrednost pokazivaca py je 0xbfe7caa0 */

/* Ispisujemo vrednosti na koje pokazuju pokazivaci */

printf("px pokazuje na vrednost: %f\n", *px); printf("py pokazuje na vrednost: %f\n", *py);/* px pokazuje na vrednost: 0.100000 py pokazuje na vrednost: 2.100000 */

Page 25: Programiranje 1  programski jezik c

/* Ispitujemo da li su pokazivaci jednaki, tj. da li pokazuju na isti objekat u memoriji */

if(px == py) printf("Pokazivaci px i py pokazuju na

isti objekat\n"); else printf("Pokazivaci px i py ne pokazuju

na isti objekat\n");}

/* Pokazivaci px i py ne pokazuju na isti objekat */