PODACI U JEZIKU C
Tipovi podataka
Tip podatka je određen skupom odrećenih vrednosti koje može da uzme podatak i skupom operacija koje mogu da se izvrše nad podatkom.
Tip podatka | Opis | Memorija[bit] |
---|---|---|
char | Mali celobrojni podatak. Koristi se za smeštanje znakova | 8 |
short | Kratak celobrojni podatak | 16 |
int | Celobrojni podatak | 16 ili 32 |
long | Dugački celobrojni podatak | 32 |
float | Realan broj u jednostrukoj preciznosti | 32 |
double | Realan broj u dvostrukoj preciznosti | 64 |
- Promenljivi podaci:
- Mogu da menjaju vrednost u toku programa
- Mora se rezervisati memorija
- primer: int a; //rezeviše se memorija za celobrojni podatak
- Konstante
- Ne rezerviše se memorija
- Koriste se u izrayima
- primer: Y=2*X; //2 je konstanta
- Simboličke konstante
- Konstante predstavljene pomoću identifikatora
- primer:
#define PI 3.14
P=r*r*PI;
- Konstantni podaci
- Rezerviše se memorija
- Podaci moraju da se inicijalizuju
- ne menjaju vrednost u toku programa
- primer: const double e=2.71828;
Postoje sledeći tipovi podataka:
- Primitivni tipovi podataka
- Izvedeni tipovi podataka
- Tip void
- Nabrajanja
Rešavanje zadataka
Da bi ste odgledali video - lekciju za rešavanje jednostavnih primera upotrebom alata "Code Block", kao i primere za samostalan rad, kliknite na sledeći link: Podaci-primeri
|
Uputstvo za kreiranje aplikacija u programskom jeziku C pomoću mobilnog telefona
|
Primitivni tipovi podataka
Za opis celih brojeva koriste se tipovi:
- short 16byta kratak celobrojni podatak
- int 16 ili 32 bita celobrojni podatak
- long 32 bita dugačak celobrojni podatak
- long long 64 bita dugačak celobrojni podatak
dakle to bi bio broj 263+262 +...+20 =18446744073709551615
Primer:
int a;
int b;
Realni tip u pokretnom zarezu: Za opis celih brojeva koriste se tipovi:
- float 32byta kratak celobrojni podatak
- double 64 bita celobrojni podatak
Primer kod-a sa upotrebom karaktera:
char c;
c='A';
printf(“ASCII kod karaktera %c iznosi %d\n”,c,c);
Izvedeni tipovi podataka
Nizovni tip: Ako treba definisati niz brojeva istog tipa, npr. celih brojeva onda definišemo tip podatka na sledeći način:
int niz[10];
Pokazivački tip: Ako treba definisati pokazivač na podatak tipa double onda se definiše i inicijalizuje pokazivač na sledeći način:
double a;
double *pA;;//Pokazivač na podatak tipa double
pA=&a;
Od izvedenih tipova podataka se koriste još i strukture, unije i funkcije
Označeni i neoznačeni podaci(signed i unsigned)
int a;
signed int b;
unsigned int c;
Celobrojni označeni podaci, ako int zauzima 32 bita memorije su u opsegu od -231 do 231 tj od -32767 do 32767,
dok
neoznačeni su u rangu od 0-232 tj od 0-65535.
Prva cifra kod označenih celih brojeva se koristi da odredi znak(0-pozitivan,1-negativan) dok se preostale cifre koriste za prikaz vrednosti broja. Zbog toga je najveća vrednost označenih brojeva 231 a ne 232. I ostali tipovi, float, double, char mogu biti označeni i neoznačeni:
unsigned float x;
signed double y;
unsigned char z;
Promenljivi podaci(engl. variable)
tip_podatka ime_podatka;
Npr. ako su u pitanju dva cela broja onda se za tip podatka koristi službena reč int i podatak se definiše na sledeći način:
int a,b;// ili u dva reda
int a;
int b;
a
b
Više o operatorima u jeziku c pogledati na web stranici: https://izprogramiranja.weebly.com/operatori_u_jeziku_c.html
Ovo ne znači jednakost i ne važi da je levo od znaka “=” isto što i desno. Ovde levo mora biti memorija koja treba da dobije neku vrednost a sa desne strane je ta vrednost ili neki izraz čiji će rezultat biti smešten u memoriju sa leve strane. Npr. dodelimo neke vrednosti promenljivima a i b:
a=14;
b=22;
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
---|
a
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
---|
b
14 |
---|
a
22 |
---|
b
int c;
c = a + b;
36 |
---|
c
To je funkcija printf iz zaglavlja stdio.h u jeziku c(vidi podnaslov čitanje i pisanje podataka u nastavku) ili u jeziku c++ može se koristiti funkcija cout iz zaglavlja iostream.
U prethodnom primeru programer je naredbom a=14; i b=22; programski odredio vrednost a i b i korisnik programa na te vrednosti ne bi mogao da utiče. U većini slučajeva je potrebno obezbediti da korisnik unese vrednosti po svojoj želji i za to je potrebno obezbediti komandu koja broj ukucan na tastaturi od strane korisnika privremeno upamti kao niz karaktera a zatim konvertuje odgovarajućom ulaznom konverzijom u binarnom obliku. Vidi u nastavku čitanje podataka.
Konstantni podaci
const double e = 2.718281;
Konstante
Za njih se ne rezerviše memorija, već se one jednostavno koriste u izrazima. Međutim i konstante imaju svoj tip podatka. Npr 2 je celobrojna konstanta tipa int, 2. ili 2.0 su tipa double, dok bi 2f bila po tipu float.
Simboličke konstante
#define PI 3.14;
P = r * r * PI;
Datoteke zaglavlja
Te datoteke nazivamo datoteke zaglavlja. U C jeziku imaju ekstenziju .h. Npr. da bi mogli koristiti funkcije printf i scanf za pisanje i čitanje podataka na standardni izlaz, tj. ulaz moramo uključiti datoteku stdio.h:
#include <stdio.h>
Ili za upotrebu matematičkih funkcija potrebno je uključiti datoteku math.h u jeziku c, ili, datoteku cmath u jeziku c++.
#include<math.h>
Koristan sajt za pregled datoteka zaglavlja u c i c++ je: http://www.cplusplus.com/reference/
Čitanje i pisanje podataka
Mora se među direktivama pretprocesora uključiti datoteka stdio.h
#define<stdio.h>
Ulazna konverzija
scanf(format, &podatak,&podatak,....,&podatak)
Format je tekstualni podatak. Pojedinačne konverzije se iskazuju podnizovima oblika:
%nq, gde je q oznaka konverzije, a n dopunski parametar konverzije.
Celobrojne ulazne konverzije: i, d,u, o, x,.
za short: hi,hd....
za long: li, ld,...
Celobrojne izlazne konverzije: i, d,u, o, x,.
za short: hi,hd....
za long: li, ld,...
ulazne konverzije realnih brojeva:
za float: f,e,g.
za double: lf, le,lg
za long double: Lf, Le,Lg
izlazne konverzije realnih brojeva:
za float: f,e,g.
za double: f, e,g
Izlazna konverzija
Datoteka stdio.h obezbeđuje funkciju printf čija je sintaksa:
printf(format,podatak1,podatak2,..);
U našem primeru to bi bilo:
printf(“%d”,c);
Na konzoli bi se posle izvršenja ove naredbe prikazalo:
Ako bismo želeli da na izlazu kombinujemo prikaz teksta i broja npr. da napišemo “Zbir brojeva 14 i 22 iznosi 36”, onda bi parametar format bio zapravo tekst sa umetnutim formatima za izlaznu konverziju za u ovom slučaju cele brojeve “%d” ili “%i”. Parametri u funkciji printf, navedeni posle formata su zapravo promenljive čija se konverzija vrši i to napisanih po redosledu s leva na desno:
printf(“Zbir brojeva %d i %d iznosi %d”, a, b, c);
Redove za dodelu vrednosti promenljivima a i b
a=14;
b=22;
treba zameniti sa :
scanf(“%d%d”, &a, &b);
Operator “&” daje memorijsku adresu podatka i koristi se kod ulazne, a ne i kod izlazne konverzije.
Pre naredbe scanf, treba dodati printf naredbu kojom se ispisuje poruka, koja obaveštava korisnika koje podatke treba da unese.
Kompletan kod zadatka bi bio:
- Uneti poluprecnik kruga i izracunati površinu
- Učitati stranice trapeza i izračunati površinu.
- Učitati vreme u sekundama i ispisati u obliku hh:mm:ss
Rešenja:
Resenje primera 1:
Zadatak rešavamo u 4 koraka:
Prvo moramo da definišemo podatke koji su nam potrebni: U program je potrebno da korisnik unese poluprečnik, a program treba da izračuna površinu kruga. Da bi definisali te podatke daćemo im nazive i staviti tip podatka za realne brojeve(double). Dakle prva naredba:
double r,P;
Ovim smo rezervisali memoriju za dva podatka tipa double koje smo oznacili sa r i sa P
Drugi korak je da omogucimo da korisnik unese poluprecnik. Za unos koristimo metodu scanf koja se nalazi u datoteci stdio.h
Ovu datoteku cemo ukljuciti pomocu direktive #include za uklucivanje datoteka i ovo pisemo pri vrhu dokumenta
#include < stdio.h >U ovoj datoteci se još nalazi i metoda printf za ispisivanje podataka i teksta na konzolu.
Pre unosa ispisujemo poruku na konzolu da bi korisnik znao šta treba da unese. Za ispisivanje koristimo metodu printf što zapravo predstavlja izlaznu konverziju. Ulazna konverzija ostvaruje se metodom scanf. Ovaj drugi korak je:
Slika 4: Rešenje zadatka "Površina kruga"
U 4. koraku se na ekranispisuje poruka sa vrednošću površine, koja se isčitava iz memorije označene u ovom programu sa P. Za izlaznu konverziju se koristi format %f za podatke tipa double.
Resenje primera 3:
Ovde korisnik unosi vreme u sekundama koje treba biti ceo broj
int vrSek;
scanf(“%d”, &vrSek);
vremena u sekundama i 3600, vrSek/3600, a da bi dobili koliko je sekundi preostalo koristimo „%“, dakle vrSek % 3600.
Kod koji ovo radi:
int hh, ostSek;
hh = vrSek / 3600;
ostSek= vrSek % 3600;
Na sličan način bi od preostalog broja sekundi (ostSek) dobili minute, ali u ovom slučaju bi za delilac uzeli 60 jer 1min=60sek;
int mm;
mm = ostSek/ 60;
ostSek= ostSek% 60;
printf(“%02d : %02d : %02d”, hh, mm, ostSek);
Sledeće
Operatori u jeziku C/C++ >| |