Programski sistemi 97/98, vezbe

Ovde mozete naci primere sa vezbi i zadatke sa pismenih ispita iz predmeta Programski sistemi.

Za sve primedbe i pitanja obratite se asistentu Nebojsi Vasiljevicu (nebojsa@matf.bg.ac.yu)

Saveti za samostalan rad

Primeri su pratili izlaganje asistena na vezbama, tako da cete mnogo lakse razumeti primere ako koristite i beleske sa vezbi. Na casu su cesto pravljene modifikacije, a neki kraci primeri su editovani na licu mesta, tako ono sto je ovde islozeno ne cini sav C kod koji je prikazan na vezbama.

Eksperimentisite sa pocetnim vrednostima pojedinih promenljivih i sa ulaznim podacima. Menjajte slobodno program. Ako vas, na primer, interesuje koju vrednost ima promenljiva u nekoj tacki, dodajte na tom mestu printf() funkciju koja stampa vrednost promenljive ili koristitie mogucnost debagera da pratite vrednosti promenljivih tokom izvrsavanja programa. Ako program ne radi kako treba, pred vama je izazov koji ce vam cesto odnositi puno vremena, ali lociranje i otklanjanje sopstvenih gresaka u programu je iskustvo bez koga se ne moze reci da ste naucili C.

Program koji niste iskomlilirali i videli kako radi nemojte da brojite da ste uradili.

Primeri

Prvi program:
zdravo.c

while i for petlja, int i float tip, pritntf funkcija, makroi kao konstante:
farcel1.c
farcel2.c
farcel3.c
farcel4.c

Osnove rada sa U/I (koristi se samo standardni ulaz i izlaz), iskazi grananja (if-else i switch), operatori uvecanja i umanjena za 1 (++ i --), nizovi, definisanje funkcija i prenos parametara, odvojena kompilacija (kljucna rec extern, zaglavlja i #include direktiva):
brkar1.c brkar2.c
prepis1.c prepis2.c
brlin.c
brcif.c
gdld.c
pow1.c pow2.c
najlin1.c
najlin2.c
najlin3.c, uzmilin3.c, kopiraj3.c
najlin4.c, uzmilin4.c, kopiraj4.c, najlin4.h

Vise o celobrojnim tipovima i tipovima u pokretnom zarezu:
char1.c
char2.c
int1.c
int2.c
longshrt.c
float1.c
float2.c
float3.c

Bitski operatori:
bits.c
2nov96.c (ispitni zadatak)
2feb97.c (ispitni zadatak)
2maj97.c (ispitni zadatak)
2jun97.c (ispitni zadatak)

Pretprocesorske direktive (makroi bez i sa parametrima i uslovna kompilacija):
def1.c
def2.c
ifelse.c

Pokazivaci, osnovno (* i & operatori, upotreba u prenosu parametara):
ptr1.c
ptr2.c
ptr3.c

Stringovi, odnos pokazivaca i nizova
str1.c str2.c
str3.c str4.c str5.c
str6.c (pazljivo prostudirati)
str7.c str8.c
str9.c str10.c
str11.c
str12.c
1jun97.c (ispitni zadatak)
2jan98.c (ispitni zadatak)

Alokacija memorije (funkcije standardne biblioteke):
malloc1.c
malloc2.c
str13.c

Strukture:
struct1.c
struct2.c
struct3.c

Pokazivaci na funkcije:
funprt1.c
funprt2.c
funprt3.c
funprt4.c
1apr97.c (ispitni zadatak)

Datoteke i argumenti komandne linije (nedostaju barem jos primeri za fseek, ftell, fgetpos i fsetpos):
brkar2a.c
brkar2b.c
prepis2a.c prepis3.c
1nov96.c (ispitni zadatak)

Dinamicke strukture podataka:
lista.c
dliata.c
drvo1.c drvo2.c
zivotinj.c
1feb97.c (ispitni zadatak)
1jan98.c (ispitni zadatak)
1maj97.c (ispitni zadatak)

Alokacija memorije (implementacija):
urdrvo.c (ilustruje uredjeno drvo i alokaciju segmenata jednake duzine)
alloc1.c (alokacija segmenata raznih duzina)
alloc2.c
1jun96.c (ispitni zadatak)

Drveta sa raznovrsnim èvorovima:
varstr1.c
varstr2.c
varstr3.c
varstr4.c

Rad sa direktorijumima (nije deo standardne C biblioteke):
listdir1.c
listdir2.c
Napomena: Predhodnih godina su za citanje direktorijuma koriscene _dos_findfirst() i _dos_findnext() funkcije, a sada smo koristili opendir() i readdir() koje su nesto jednostavnije i raspolozive na vecem broju operativnih sistema, ali ne tretiraju dzoker karaktere.

Direktan pristup CGA video memoriji u tekstualnom rezimu:
1jan97.c (ispitni zadatak)