63
Programiranje 1 Milena Vujoˇ sevi´ c Janiˇ ci´ c www.matf.bg.ac.rs/~milena Programski jezik C. Predstavljanje podataka i operacije nad njima.

Osnovno o programskom jeziku C. Predstavljanje podataka

  • Upload
    vantu

  • View
    247

  • Download
    8

Embed Size (px)

Citation preview

Page 1: Osnovno o programskom jeziku C. Predstavljanje podataka

Programiranje 1

Milena Vujosevic Janicic

www.matf.bg.ac.rs/~milena

Programski jezik C.Predstavljanje podataka i operacije nad njima.

Page 2: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Pregled

1 Programski jezik C

2 Predstavljanje podataka i operacije nad njima

3 Konstante i konstantni izrazi

4 Operatori i izrazi

5 Konverzije

Milena Vujosevic Janicic Programiranje 1

Page 3: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Pregled

1 Programski jezik C

2 Predstavljanje podataka i operacije nad njima

3 Konstante i konstantni izrazi

4 Operatori i izrazi

5 Konverzije

Milena Vujosevic Janicic Programiranje 1

Page 4: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Programski jezik C

C — jezik opste namene, imperativan i proceduralan1972 — Denis Rici (dobitnik Tjuringove nagrade 1983. godine)Namena: najpre kao sistemski softver u okviru Unix-a, kasnije iza aplikativni softverStandardi: K & R (1978), ANSI i ISO (1989-90), C99, C11

Milena Vujosevic Janicic Programiranje 1

Page 5: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Zdravo!

#include <stdio.h>

int main() {printf("Zdravo!\n");return 0;

}

Milena Vujosevic Janicic Programiranje 1

Page 6: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Kvadrat unetog broja

#include <stdio.h>

int main() {int a;printf("Unesite ceo broj: ");scanf("%i", &a);printf("Kvadrat unetog broja je: %i", a*a);return 0;

}

Milena Vujosevic Janicic Programiranje 1

Page 7: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Da li je broj paran?

#include <stdio.h>

int main() {int a;printf("Unesi broj: ");scanf("%d", &a);if (a % 2 == 0)

printf("Broj %d je paran\n", a);else

printf("Broj %d je neparan\n", a);return 0;

}

Milena Vujosevic Janicic Programiranje 1

Page 8: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Kvadrati i koreni prvih 100 brojeva

#include <stdio.h>#include <math.h>#define N 100

int main() {int i;for (i = 1; i <= N; i++)

printf("%3d %5d %7.4f\n", i, i*i, sqrt(i));return 0;

}

Milena Vujosevic Janicic Programiranje 1

Page 9: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Zbir brojeva

#include <stdio.h>#define N 100

int main() {int i = 1;int s = 1;while(s <= N) {

i++;s = s+i;

}printf("%d\n", i);return 0;

}

Milena Vujosevic Janicic Programiranje 1

Page 10: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Mala slova u velika

#include <stdio.h>#include <ctype.h>

int main() {int c;printf("Otkucaj recenicu (zavrsi je znakom .): ");do {

c = getchar();putchar(toupper(c));

} while (c != ’.’);putchar(’\n’);return 0;

}

Milena Vujosevic Janicic Programiranje 1

Page 11: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Pregled

1 Programski jezik C

2 Predstavljanje podataka i operacije nad njimaPromenljive i deklaracijeOsnovni tipovi podataka

3 Konstante i konstantni izrazi

4 Operatori i izrazi

5 Konverzije

Milena Vujosevic Janicic Programiranje 1

Page 12: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Promenljive i deklaracije

Promenljive su osnovni objekti koji se koriste u programima.Svaka promenljiva mora biti deklarisane pre koriscenja.Promenljiva je objekat kojem je pridruzen neki prostor umemoriji i u svakom trenutku svog postojanja ima vrednostkojoj se moze pristupiti — koja se moze procitati i koristiti, ali ikoja se (ukoliko nije trazeno drugacije) moze menjati.Imena promenljivih odredena su identifikatorima.Generalno, identifikator moze da sadrzi slova i cifre, kao isimbol _, ali ne moze pocinjati cifrom.Kljucne reci jezika C (na primer, if, for, while) ne mogu sekoristiti kao identifikatori.

Milena Vujosevic Janicic Programiranje 1

Page 13: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Promenljive

U identifikatorima, velika i mala slova se razlikuju. Na primer,promenljive sa imenima a i A se tretiraju kao dve razlicitepromenljive.Imena promenljivih i funkcija treba da oslikavaju njihovoznacenje i ulogu u programu, ali za promenljive kao sto suindeksi u petljama se obicno koriste kratka, jednoslovna imena(na primer i).Ako ime promenljive sadrzi vise reci, onda se, radi boljecitljivosti, te reci razdvajaju simbolom _ (na primer,broj_studenata) ili pocetnim velikim slovima (na primer,brojStudenata) — ovo drugo je takozvana kamilja notacija(CamelCase).

Milena Vujosevic Janicic Programiranje 1

Page 14: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Deklaracije

Sve promenljive moraju biti deklarisane pre koriscenja.Deklaracija sadrzi tip i listu od jedne ili vise promenljivih togtipa, razdvojenih zarezima.int broj; /* deklaracija celog broja */int a, b; /* deklaracija vise celih brojeva */

U opstem slucaju nije propisano koju vrednost ima promenljivaneposredno nakon sto je deklarisana.

Milena Vujosevic Janicic Programiranje 1

Page 15: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Deklaracije

Prilikom deklaracije moze se izvrsiti pocetna inicijalizacija.Moguce je kombinovati deklaracije sa i bez inicijalizacije.int vrednost = 5;int a = 3, b, c = 5;

Izraz kojim se promenljiva inicijalizuje zvacemo inicijalizator.Kvalifikator const moze biti dodeljen deklaraciji promenljiveda bi naznacio i obezbedio da se njena vrednost nece menjati,na primer:/* ovu promenljivu nije moguce menjati */const double GRAVITY = 9.81;

Milena Vujosevic Janicic Programiranje 1

Page 16: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Tipovi

Jedan tip karakterise:Vrsta podataka koje opisuje,Nacin reprezentacije,Skup operacija koje se mogu primeniti nad podacima tog tipa,Broj bitova koji se koriste za reprezentaciju (odakle sledi opsegmogucih vrednosti).

Milena Vujosevic Janicic Programiranje 1

Page 17: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Tip int

Cele brojeve opisuje tip int — od engleskog integer, ceo broj.Podrazumeva se da su vrednosti ovog tipa oznacene ireprezentuju se najcesce koristeci potpuni komplement.Mogu se koristiti aritmeticke operacije (npr +, -, *, /, %),relacije (npr, <, >=) itd.

Milena Vujosevic Janicic Programiranje 1

Page 18: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Tip int

Broj bitova nije standardom propisan, ali je propisano da sekoristi najmanje sesnaest bita.Velicina tipa int je obicno prilagodena konkretnoj masini, tj32 ili 64 bitaVelicina podataka zavisi od sistema, pri cemu se pod sistemompodrazumeva i hardver racunara i operativni sistem na kojemce se program izvrsavati.Podaci o opsegu ovih (i drugih tipova) za konkretan racunar iC prevodilac sadrzani su u standardnoj datoteci zaglavlja<limits.h>.

Milena Vujosevic Janicic Programiranje 1

Page 19: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Kvalifikatori

short, long i od C99 long long

signed i unsignedSpecifikatori za upis i ispis:%i, %d --- ceo dekadni broj%u --- neoznacen dekadni broj%o --- neoznacen oktalni broj%x, %X --- neoznacen heksadekadni broj

Kvalifikatori za upis i ispis %h i %l

Milena Vujosevic Janicic Programiranje 1

Page 20: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Opseg tipova

Konacan opseg tipova treba uvek imati u vidu#include <stdio.h>

int main() {int a = 2000000000, b = 2000000000;printf("Zbir brojeva %d i %d je: %d\n", a, b, a + b);return 0;

}Izlaz:

Zbir brojeva 2000000000 i 2000000000 je: -294967296

Milena Vujosevic Janicic Programiranje 1

Page 21: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Opseg tipova

Konacan opseg tipova treba uvek imati u vidu#include <stdio.h>

int main() {unsigned int a = 2000000000, b = 2000000000;printf("Zbir brojeva %u i %u je: %u\n", a, b, a + b);return 0;

}Izlaz:

Zbir brojeva 2000000000 i 2000000000 je: 4000000000

Milena Vujosevic Janicic Programiranje 1

Page 22: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Tip char

Male cele brojeve opisuje tip char (od engleskog character —karakter, simbol, znak).Mogu se primenjivati aritmeticke i operacije relacijeTacno jedan bajtMoze biti oznacen ili neoznacen, nije propisano standardomKvalifikatori signed [-128, 127] i unsigned [0, 255]Ovaj tip obicno se koristi za brojeve koji predstavljaju kodovekaraktera.Najcesce se koristi ASCII kodiranje karaktera (aski kodovi susedmobitni i imaju vrednosti od 0 do 127, sto staje i u signed iunsigned char)

Milena Vujosevic Janicic Programiranje 1

Page 23: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Tip char

Ispis i ucitavanje %c

Standardna biblioteka sadrzi mnoge funkcije i makroe za radsa karakterskim tipomOne su deklarisane u datoteci zaglavlja <ctype.h>

Na primer isalpha, isdigit, toupper, tolower

Milena Vujosevic Janicic Programiranje 1

Page 24: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Tip float, double i long double

Brojevi u pokretnom zarezu: float (osnovna tacnost) i double(dvostruka tacnost), i od C99 long double (prosirena tacnost)Nije propisano standardnom koliko ovi tipovi zauzimaju bitovaPodaci o opsegu i detaljima ovih (i drugih tipova) zakonkretan racunar i C prevodilac sadrzani su u standardnojdatoteci zaglavlja <float.h>.Uobicajne aritmeticke operacije (sem %) i relacijeIEEE 754 standard, vrednosti −∞, ∞, NaNNaN — 0.0/0.0, koren iz negativnog broja i slicne nedefinisanematematicke vrednosti1/∞ je 0, 1/0 je ∞Matematicke funkcie <math.h>Ispis i upis %f, za long double %lf

Milena Vujosevic Janicic Programiranje 1

Page 25: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Promenljive i deklaracijeOsnovni tipovi podataka

Logicki tip podataka

Bez logickog tipa, celobrojne vrednosti: 0 netacno, sve ostalotacnoC99 tip bool i konstante true i falseLogicke operacije i, ili, negacija

Milena Vujosevic Janicic Programiranje 1

Page 26: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Pregled

1 Programski jezik C

2 Predstavljanje podataka i operacije nad njima

3 Konstante i konstantni izrazi

4 Operatori i izrazi

5 Konverzije

Milena Vujosevic Janicic Programiranje 1

Page 27: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Konstante i konstantni izrazi

Izrazi kombinuju promenljive i konstante koriscenjemoperatora, dajuci nove vrednostiIzrazi mogu biti promenljive, konstante, pozivi funkcija ilislozeni izraziKonstante su fiksne vrednosti kao, na primer, 0, 2, 2007, 3.5,1.4e2 ili ’a’.Za sve konstante i za sve izraze, pravilima jezika jednoznacnosu odredeni njihovi tipovi.Od tipova zavisi vrednost slozenog izraza kao i koje jeoperacije moguce primeniti

Milena Vujosevic Janicic Programiranje 1

Page 28: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Celobrojne konstante

Celobrojne konstante su tipa int, npr 231, 9876Velike celobrojne konstante koje ne mogu da stanu u int amogu u long su tipa long, ili unsigned long ukoliko ne mogu dastanu u longDakle, tacan tip dekadne celobrojne konstante ne moze da seodredi ako se ne znaju detalji sistema.

Milena Vujosevic Janicic Programiranje 1

Page 29: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Celobrojne konstante

Mogu se koristiti kvalifikatori u i U za unsigned, l i L za long,ili ul za unsigned long Na primer, 12345 je tipa int a 12345L jetip longCelobrojne konstante mogu biti zapisane i u oktalnom i uheksadekadnom sistemuZapis konstante u oktalnom sistemu pocinje cifrom 0, a zapiskonstante u heksadekadnom sistemu pocinje simbolima 0x ili0X. Npr 037 (oktalni zapis), 0x1f (heksadekadni zapis)

Milena Vujosevic Janicic Programiranje 1

Page 30: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Celobrojne konstante

Negativne konstante ne postoje, ali se efekat moze posticiizrazima gde se ispred konstante navodi unarni operator -Kada se u tekstu programa naide na -123 vrednostpredstavljena ovim izrazom jeste minus stodvadesettri, ali izraznije konstanta vec je sacinjen od unarnog operatoraprimenjenog na konstantu.Slicno, moze se navesti i operator plus, ali to nema efekta(npr. +123 je isto kao i 123).

Milena Vujosevic Janicic Programiranje 1

Page 31: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Konstante u pokretnom zarezu

Konstantni brojevi u pokretnom zarezu sadrze tacku ilieksponent, ili i jedno i drugo123.4 ili 1e-2 ili .4 ili 5. ili -123. ili -123.2e10Tipovi ovih konstanti su double, osim ukoliko se za floatnavede kvalifikator f ili F, npr 1.23f ili l/L sto oznacava tiplong double

Milena Vujosevic Janicic Programiranje 1

Page 32: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Karakterske konstante

Iako se tip char koristi i za predstavljanje malih celih brojeva,on se prevashodno koristi za predstavljanje kodova karaktera(najcesce ASCII kodova).Direktno specifikovanje karaktera koriscenjem numerickihkodova nije preporucljivo.Umesto toga, preporucuje se koriscenje karakterskih konstanti.Karakterske konstante u programskom jeziku C se navodeizmedu ’’ navodnika.Vrednost date konstante je numericka vrednost datogkaraktera u koriscenoj karakterskoj tabeli (na primer, ASCII).

Milena Vujosevic Janicic Programiranje 1

Page 33: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Karakterske konstante

Na primer, u ASCII kodiranju, karakterska konstanta ’0’predstavlja vrednost 48 (koja nema veze sa numerickomvrednoscu 0),’A’ je karakterska konstanta cija je vrednost u ASCII kodu 65,’a’ je karakterska konstanta cija je vrednost u ASCII kodu 97char c = ’a’;char c = 97; /* ekvivalentno prethodnom (na ASCII masinama),

ali se ne preporucuje zbog toga sto smanjujecitljivost i prenosivost programa */

Milena Vujosevic Janicic Programiranje 1

Page 34: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Specijalni karakteri

\a alert (bell) character\b backspace\f formfeed\n newline\r carriage return\t horizontal tab\v vertical tab\\ backslash\? question mark\’ single quote\" double quote\ooo (npr. \012) octal number\xhh (npr. \x12) hexadecimal number

Milena Vujosevic Janicic Programiranje 1

Page 35: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Konstantni izrazi

Konstantni izraz je izraz koji sadrzi samo konstante (na primer,4 + 3*5).Tip izraza zavisi od tipova operanada

Milena Vujosevic Janicic Programiranje 1

Page 36: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Pregled

1 Programski jezik C

2 Predstavljanje podataka i operacije nad njima

3 Konstante i konstantni izrazi

4 Operatori i izrazi

5 Konverzije

Milena Vujosevic Janicic Programiranje 1

Page 37: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Operatori i izrazi

Operatorima su predstavljene osnovne operacije i relacije kojese mogu vrsiti nad podacima osnovnih tipova u jeziku C.Operatori se dele na osnovu svoje arnosti tj. broja operanadana koje se primenjuju.Unarni operatori deluju samo na jedan operand i mogu bitiprefiksni kada se navode pre operanda i postfiksni kada senavode nakon svog operanda.Binarni operatori imaju dva operanda i obicno su infiksnitj. navode se izmedu svojih operanda.U jeziku C postoji jedan ternarni operator koji se primenjuje natri operanda.

Milena Vujosevic Janicic Programiranje 1

Page 38: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Prioritet operatora

Izrazi mogu da obuhvataju vise operatora i zagrade ( i )Prioritet operatora — konvencija koja omogucava izostavljanjezagradaNa primer, vrednost konstantnog izraza 3 + 4 * 5 bice 23,jer operator * ima prioritet u odnosu na operator +.

1 Unarni operatori imaju veci prioritet u odnosu na binarne.2 Postfiksni unarni operatori imaju veci prioritet u odnosu na

prefiksne unarne operatore.3 Aritmeticki operatori imaju veci prioritet u odnosu na relacijske

koji imaju veci prioritet u odnosu na logicke operatore.4 Operatori dodele imaju veoma nizak prioritet.

Milena Vujosevic Janicic Programiranje 1

Page 39: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Asocijativnost operatora

Asocijativnost operatora definise kojim redosledom ce seizracunavati dva ista operatora ili operatora istog prioritetakada se nadu uzastopno u istom, nezagradenom izrazu.Obicno se razlikuju leva asocijativnost, kada se izrazizracunava sleva na desno i desna asocijativnost, kada se izrazizracunava zdesna na levo.Vecina operatora ima levu asocijativnost (najznacajniji izuzecisu prefiksni unarni operatori i operatori dodele).

Milena Vujosevic Janicic Programiranje 1

Page 40: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Operator dodele

broj_studenata = 80;broj_grupa = 2;

U dodeljivanju vrednosti, sa leve strane operatora dodele morabiti l-vrednost (promenljiva, element niza ili memorijskalokacija)Tip izraza dodele je tip leve strane, a vrednost izraza dodele jevrednost koja ce biti dodeljena levoj straniPromena vrednosti objekta na levoj strani je propratni (bocni,sporedni) efekat (engl. side effect) do kojeg dolazi prilikomizracunavanja vrednosti izraza.

Milena Vujosevic Janicic Programiranje 1

Page 41: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Operator dodele

Na primer, izvrsavanje naredbe broj_studenata = 80; svodise na izracunavanje izraza broj_studenata = 80.Tip promenljive broj_studenata je istovremeno i tip ovogizraza, vrednost je jednaka 80, a prilikom ovog izracunavanjamenja se vrednost promenljive broj_studenata.Ovakvo ponasanje moze se iskoristiti i za visestrukododeljivanje.Na primer, nakon sledece naredbe, sve tri promenljive x, y i zimace vrednost 0:x = y = z = 0;

Milena Vujosevic Janicic Programiranje 1

Page 42: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Aritmeticki operatori

+ binarni operator sabiranja;- binarni operator oduzimanja;* binarni operator mnozenja;/ binarni operator (celobrojnog) deljenja;% binarni operator ostatka pri deljenju;- unarni operator promene znaka;+ unarni operator.

Svi navedeni binarni operatori imaju levu asocijativnost.% se moze primeniti samo na cele brojeve/ se moze primeniti i na cele i na realne brojeve

Milena Vujosevic Janicic Programiranje 1

Page 43: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Inkrementiranje i dekrementiranje

Operator inkrementiranja (uvecavanja za 1) zapisuje se sa ++,a operator dekrementiranja (umanjivanja za 1) zapisuje se sa--:Prefiksni i postfiksni

x = n++;x = ++n;

int a = 3, x = a++, y = a++;int b = 3, z = b++ + b++;printf("a = %d, x = %d, y = %d,\n", a, x, y);printf("b = %d, z = %d\n", b, z);

Milena Vujosevic Janicic Programiranje 1

Page 44: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Relacijski operatori

> vece;>= vece ili jednako;< manje;

<= manje ili jednako;== jednako;!= razlicito.

Prioritet: prva cetiri isti, visi od jednakosti i razlicitostiLeva asocijativnostRezultat relacionog operatora primenjenog nad dva broja jevrednost 0 (koja odgovara istinitosnoj vrednosti netacno) ilivrednost 1 (koja odgovara istinitosnoj vrednosti tacno).Binarni relacijski operatori imaju nizi prioritet od binarniharitmetickih operatora.

Milena Vujosevic Janicic Programiranje 1

Page 45: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Relacijski operatori

3 > 5 ima vrednost 07 < 5 != 1 ima vrednost 1Ako promenljiva x ima vrednost 2, izraz 3 < x < 5 imavrednost 1Operator == koji ispituje da li su neke dve vrednosti jednake ioperator dodele = razliciti su operatori i imaju potpunodrugaciju semantiku. Njihovo nehoticno mesanje cest je uzrokgresaka u C programima.

Milena Vujosevic Janicic Programiranje 1

Page 46: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Logicki operatori

! logicka negacija&& logicka konjunkcija|| logicka disjunkcija

Logicki operatori primenjuju se nad brojevnim vrednostima i imajutip rezultata int.Brojevnim vrednostima pridruzene su logicke ili istinitosne vrednostina sledeci nacin: ukoliko je broj jednak 0, onda je njegova logickavrednost 0 (netacno), a inace je njegova logicka vrednost 1 (tacno).

Milena Vujosevic Janicic Programiranje 1

Page 47: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Logicki operatori

vrednost izraza 5 && 4.3 jednaka je 1;vrednost izraza 10.2 || 0 jednaka je 1;vrednost izraza 0 && 5 jednaka je 0;vrednost izraza !1 jednaka je 0;vrednost izraza !9.2 jednaka je 0;vrednost izraza !0 jednaka je 1;vrednost izraza !(2>3) jednaka je 1;izrazom 3 < x && x < 5 proverava se da li je vrednostpromenljive x izmedu 3 i 5;izraz a > b || b > c && b > d ekvivalentan je izrazu(a>b) || ((b>c) && (b>d));izrazom g % 4 == 0 && g % 100 != 0 || g % 400 == 0proverava se da li je godina g prestupna.

Milena Vujosevic Janicic Programiranje 1

Page 48: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Lenjo izracunavanje

U izracunavanju vrednosti logickih izraza koristi se strategijalenjog izracunavanja (engl. lazy evaluation).Osnovna karakteristika ove strategije je izracunavanje samoonog sto je neophodno.

2<1 && a++a++ && 2<11<2 || a++2<1 || a++

Milena Vujosevic Janicic Programiranje 1

Page 49: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Slozeni operatori dodele

Dodela koja ukljucuje aritmeticki operator i = i + 2; mozese zapisati krace i kao i += 2;. Slicno, naredbax = x * (y+1); ima isto dejstvo kao i x *= y+1;.Za vecinu binarnih operatora postoje odgovarajuci slozenioperatori dodele: +=, -=, *=, /=, %=, &=, |=, «=, »=Operatori dodele imaju nizi prioritet od svih ostalih operatora idesnu asocijativnost.

Milena Vujosevic Janicic Programiranje 1

Page 50: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Operator uslova

Ternarni operator uslova ?: se koristi u sledecem opstem obliku:

izraz1 ? izraz2 : izraz3;

Prioritet ovog operatora je nizi u odnosu na sve binarne operatoreosim dodela i operatora ,.

max = (a > b) ? a : b;abs = (a < 0) ? -a : a;n = 0;x = (2 > 3) ? n++ : 9; /*lenja semantika*/

Milena Vujosevic Janicic Programiranje 1

Page 51: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Operator , i sizeof

Binarni operator zarez , je operator najnizeg prioriteta.Prilikom izracunavanja vrednosti izraza izgradenog njegovomprimenom, izracunavaju se oba operanda, pri cemu se vrednostcelokupnog izraza definise kao vrednost desnog operanda.x = 3, y = 5; /* ekivalentno bi bilo i x = 3; y = 5; */

Velicinu u bajtovima koju zauzima neki tip ili neka promenljivamoguce je odrediti koriscenjem operatora sizeof.Tako, sizeof(int) predstavlja velicinu tipa int i natridesetidvobitnim sistemima vrednost ovog izraza je najcesce4.

Milena Vujosevic Janicic Programiranje 1

Page 52: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Pregled

1 Programski jezik C

2 Predstavljanje podataka i operacije nad njima

3 Konstante i konstantni izrazi

4 Operatori i izrazi

5 Konverzije

Milena Vujosevic Janicic Programiranje 1

Page 53: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Konverzije tipova

Konverzija tipova predstavlja pretvaranje vrednosti jednog tipau vrednost drugog tipa.Jezik C je veoma fleksibilan po pitanju konverzije tipova i umnogim situacijama dopusta koriscenje vrednosti jednog tipatamo gde se ocekuje vrednost drugog tipaVrste konverzija: eksplicitne i implicitneNeke konverzije je moguce izvesti bez gubitka informacija, dokse u nekim slucajevima prilikom konverzije vrsi izmena samevrednosti podatka.

Milena Vujosevic Janicic Programiranje 1

Page 54: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Konverzije tipova

Jedan oblik konverzije predstavlja konverzija vrednosti „nizegtipa“ u vrednost „viseg tipa“ (na primer, short u long, int ufloat ili float u double) u kom slucaju najcesce ne dolazido gubitka informacije.Konverzija tog oblika se naziva promocija (ili napredovanje)float a=4; /* 4 je int i implicitno se konvertuje u float */float f = 16777217; /*gubitak informacije*/

Milena Vujosevic Janicic Programiranje 1

Page 55: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Konverzije tipova

Drugi oblik konverzije predstavlja konverzija vrednosti visegtipa u vrednost nizeg tipa (na primer, long u short, double uint).Ovaj oblik konverzije ponekad se naziva democija (ilinazadovanje).Prilikom ovog oblika konverzije, moguce je da dode do gubitkainformacije (u slucaju da se polazna vrednost ne mozepredstaviti u okviru novog tipa).int b = 7.0f; /* 7.0f je float pa se vrsi konverzija u 7 */int c = 7.7f; /* 7.7f je float i vrsi se konverzija u 7,

pri cemu se gubi informacija */unsigned char d = 256; /* d dobija vrednost 0 */

Milena Vujosevic Janicic Programiranje 1

Page 56: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Konverzije tipova

Prilikom konverzije iz brojeva u pokretnom zarezu u celobrojnetipove podataka i obratno potrebno je potpuno izmeniti internizapis podataka (na primer, iz IEEE754 zapisa brojeva upokretnom zarezu u zapis u obliku potpunog komplementa).Ovo se najcesce vrsi uz „odsecanje decimala“, a nezaokruzivanjem na najblizi ceo broj (tako je 7.7fkonvertovano u 7, a ne u 8).Prilikom konverzija celobrojnih tipova istog internog zapisarazlicite sirine (razlicitog broja bajtova), vrsi se odsecanjevodecih bitova zapisa (u slucaju konverzija u uzi tip) iliprosirivanje zapisa dodavanjem vodecih bitova (u slucajukonverzija u siri tip).

Milena Vujosevic Janicic Programiranje 1

Page 57: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Konverzije tipova

Eksplicitna i implicitna konverzijaEksplicitna konverzija: kada programer navede u koji tip zelida se konverzija izvrsiImplicitna konverzija: kada kompajler sam odlucuje okonverziji iz jednog tipa u drugi

Milena Vujosevic Janicic Programiranje 1

Page 58: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Eksplicitna konverzija

(tip)izraz

Operator kastovanja je prefiksni, unaran operator i ima visiprioritet od svih binarnih operatora.U slucaju primene operatora kastovanja na promenljivu,vrednost izraza je vrednost promenljive konvertovana u trazenitip, a vrednost same promenljive se ne menja (i, naravno, nemenja se njen tip).int a = 13, b = 4;printf("%d\t", a/b);printf("%f\n", (double)a/(double)b);

Milena Vujosevic Janicic Programiranje 1

Page 59: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Impicitna konverzija

Prilikom primene nekih operatora vrse se konverzije vrednostioperanada implicitno, bez zahteva progremera.int a;double b = (a = 3.5);

Prilikom primene nekih aritmetickih operatora vrse seimplicitne konverzije (najcesce promocije) koje obezbeduju daoperandi postanu istog tipa pogodnog za primenu operacija.Na primer,int a = 3;double b = 4.5;a+b <- Tip ovog izraza je double

Milena Vujosevic Janicic Programiranje 1

Page 60: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Celobrojna promocija

Aritmeticki operatori se ne primenjuju na „male“ tipove tj. napodatke tipa char i short (zbog toga sto je u tim slucajevimaverovatno da ce doci do prekoracenja tj. da rezultat nece mocida se zapise u okviru malog tipa), vec se pre primeneoperatora mali tipovi promovisu u tip int.unsigned char cresult, c1, c2, c3;c1 = 100;c2 = 3;c3 = 4;cresult = c1 * c2 / c3;

Rezultat ce biti ispravan, iako broj 300 ne moze da stane u char

Milena Vujosevic Janicic Programiranje 1

Page 61: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Implicitna konverzija

1 Ako je bar jedan od operanada tipa long double, onda sedrugi konvertuje u long double;

2 inace, ako je jedan od operanada tipa double, onda se drugikonvertuje u double;

3 inace, ako je jedan od operanada tipa float, onda se drugikonvertuje u float;

4 inace, svi operandi tipa char i short promovisu se u int.5 ako je jedan od operanada tipa long long, onda se drugi

konvertuje u long long;6 inace, ako je jedan od operanada tipa long, onda se drugi

konvertuje u long.

Milena Vujosevic Janicic Programiranje 1

Page 62: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Oznaceni i neoznaceni brojevi

U slucaju koriscenja neoznacenih operanada (tj. mesanjaoznacenih i neoznacenih operanada), pravila konverzije sunesto komplikovanijaAko je neki tip siri, onda se konverzija vrsi u siri tipAko su oba tipa iste sirine, onda se konverzija vrsi uneoznaceni tipProblemi tu nastaju prilikom poredenja oznacenih ineoznacanih tipova. Na primer, ne vazi da je -1l < 1ul

Milena Vujosevic Janicic Programiranje 1

Page 63: Osnovno o programskom jeziku C. Predstavljanje podataka

Programski jezik CPredstavljanje podataka i operacije nad njima

Konstante i konstantni izraziOperatori i izrazi

Konverzije

Literatura

Slajdovi su pripremljeni na osnovu materijala iz petog i sestogpoglavlja knjige:Filip Maric, Predrag Janicic: Programiranje 1Za pripremu ispita nisu dovoljni slajdovi, potrebno je koristiti knjigu!

Milena Vujosevic Janicic Programiranje 1