odgovori aip

8
1. Napisati rekurzivnu funkciju u C-u za izracunavanje vrednosti faktorijela unetog broja. Long fakt(int broj) {if (broj == 1) return(1); else return(broj*fakt(broj-1)); } 2. Napisati procedure za upis i citanje magacina u pseudokodu . inicijalno je vrh:=0 if (vrh <n) then vrh:=vrh+1 -upis mag(vrh):=podatak endif if (vrh >0) then podatak :=mag(vrh) - citanje vrh:=vrh-1 endif 3. Sta je odredjeno tipom podatka? Tipom podatka je odredjeno: 1. Skup vrednosti koje konstante, promenljive ili izrazi mogu uzimati; 2. Skup operatora (operacija) koje se mogu primenjivati nad konstantama i promenljivima odredjenog tipa; 3. način predstavljanja u memoriji računara 4. Pobrojati faze u razvoju C programa po redosledu obavljanja. 1. Editovanje 2. Preprocesiranje 3. Kompilacija 4. Linkovanje 5. Učitavanje(Load) 6. Izvršenje

Upload: nmenja-tonic

Post on 24-Mar-2016

223 views

Category:

Documents


2 download

DESCRIPTION

jeste iz leskovac

TRANSCRIPT

Page 1: odgovori AIP

1. Napisati rekurzivnu funkciju u C-u za izracunavanje vrednosti faktorijela unetog broja.

Long fakt(int broj)

{if (broj == 1) return(1);

else return(broj*fakt(broj-1));

}

2. Napisati procedure za upis i citanje magacina u pseudokodu .

inicijalno je vrh:=0

if (vrh <n) then

vrh:=vrh+1 -upis

mag(vrh):=podatak

endif

if (vrh >0) then

podatak :=mag(vrh) - citanje

vrh:=vrh-1

endif

3. Sta je odredjeno tipom podatka?

Tipom podatka je odredjeno:

1. Skup vrednosti koje konstante, promenljive ili izrazi mogu uzimati;

2. Skup operatora (operacija) koje se mogu primenjivati nad konstantama i promenljivima

odredjenog tipa;

3. način predstavljanja u memoriji računara

4. Pobrojati faze u razvoju C programa po redosledu obavljanja.

1. Editovanje

2. Preprocesiranje

3. Kompilacija

4. Linkovanje

5. Učitavanje(Load)

6. Izvršenje

Page 2: odgovori AIP

5. Sta se ispisuje naredbom printf iz poslednje linije sekvence datog koda?

Int a, b, c, d;

a=3; b=6;

c=a*--b;

d=a*b--;

printf(“%d &d”, c, d);

Stampa u ovom slucaju – 15&d,

a u slucaju da u printf stoji %d %d, onda stampa – 15 15.

6. Objasniti znacenje:

- ulazne konverzije %15Lf (ucitava se broj tipa long double koji moze sa zauzima najvise 15 cifara, ako ima

vise u promenljivu se ucitavaju samo prvih 15)

- izlazne konverzije %-+15.7e (e oznacava da se ispisuje vrednost promenljive u naucnoj notaciji tj. ima samo

jedna cifra ispred decimalne tacke, broj decimalnih mesta je po definiciji 6, zatim ide znak “e” a onda stepen

eksponenta; 15 oznacava kolika je sirina polja u kojoj se ispisuje vrednost(ako je ona veca, u ovom slucaju se

stavljaju blanko znaci do kraja a ako je manja od duzine vrednosti onda se ispisuje cela vrednost); .7 oznacava

da se broj ispisuje na sedam decimal odnosno ako broj ima manje od 7 decimala dodaju se nule do kraja ako ne

onda se sedma cifra zaokruzi; prvi znak a to je “-“ oznacava da se onaj visak praznik mesta od 15 koliko je gore

receno popunjava blanko znacima sa desna, znaci prvo ide vrednost broja pa onda blanko znaci do kraja 15tog

mesta, a + je karakter koji se ispisuje ukoliko je broj pozitivan znaci naglasava znak).

7. Sta su to samoreferencirajuce structure u C-u?

To su strukture sa ukazateljima na istu strukturu, odnosno neki clan structure je pokazivac i tipa iste te structure,

odnosno on moze da ukazuje na neku drugu promenljivu tipa te stukture ili na samu sebe. Nije dozvoljeno da

struktura sadrži instancu same sebe, ali je sasvim korektno da sadrži pokazivač na instancu same sebe.

8. Definisati makro za nalazenje manjeg od dva broja i dati primer koriscenja u C-u.

#define MIN(x,y) (((x)>(y))?(x):(y))

min = MIN(a,b);

9. Napisati deo koda u C-u kojim se deklarise promenljiva koja ce se koristiti za cuvanje imena studenata.

Ime studenta je maksimalno 30 karaktera, a moze ih biti najvise 50.

char ImeStudenta[50][30];

Page 3: odgovori AIP

10. Opisati modove za pristup fajlovima koji postoje kod C funkicja za otvaranje fajla.

“r” – otvara datoteku za citanje od pocetka

“r+” – otvara datoteku za citanje od pocetka i upisivanje na pocetku

“w” – otvara postojecu datoteku i brise njen sadrzaj ili otvara novu datoteku, za upis

“w+” – isto kao i w samo sto moze i da se cita iz nje

“a” – otvara datoteku za upisivanje pocev od kraja vec postojeceg sadrzaja

“a+” – isto kao i a samo i za citanje

11. Napisati strukturni dijagram toka i napisati funkciju za izracunavanje najveceg zajednickog delioca dva

prirodna broja m i n.

#include<stdio.h>

int salabbezp(int n, int m)

{

while (m!=n)

{

if (m>n) m=m-n;

else n=n-m;

}

return(n);

}

rekurzivno

int NZD(int n, int m)

{if (n==m) return(n);

else if (n>m) return(NZD(n-m,m));

else return(NZD(n,m-n));

}

12. Navesti osobine polja kao structure podataka.

Polja su statičke strukture podataka, dimenzije polja se ne mogu menjati u toku izvršenja programa; ubacivanje

ili izbacivanje elementa iz polja zahteva potpuno preuredjenje polja.

Polje je homogena struktura podataka (sastavljena od elemenata istog tipa) koji imaju zajedničko ime.

jednodimenzionalna (vektori), dvodimenzionalna (matrice), višedimenzionalna.

Polja su indexirani tip podataka kod kojih prvi element pocinje sa indexom 0.

Page 4: odgovori AIP

13. Objasniti unije.

Unija, kao tip podataka, poseduje veoma mnogo sličnosti strukturi, ali dok je struktura agregatni tip podataka

koji okuplja objekte (promenljive) čiji su tipovi (verovatno) različiti, unija je elementarni tip podatka od samo

jednog elementa koji u nekom trenutku može da bude samo jedan od specificiranih tipova. Naravno,

promenljiva je dovoljno velika da može da sadrži najveći od tipova članica unije.

union naziv_unije

{

tip1 ime_promenljive_1;

tip2 ime_promenljive_2;

};

14. Uz pomoc zagrada odrediti kojim redom ce se izvrsiti koja operacija.

a*=b+++c!=d>>e~f==--a

a*=((b++)+c)!=(d>>e))|((~f)==(--a))

15. Makroi u programskom jeziku C.

Makro je definicija simbola u kojoj se javljaju jedan ili više argumenata.

16. Reci koje mogu biti identifikatori su one koje sadrze slova, donju crtu i brojeve, s tim da ne mogu da

pocnu brojevima.

17. Parametri funkcije main su argc, i argv[]

argc – (Argument count) - Prvi parametar – predstavlja broj parametara koje operativni sistem predaje

programu (funkciji main).

- argv - (Argument value) - Drugi parametar – predstavlja pokazivač na tabelu čiji su elementi znakovni nizovi

koji predstavljaju stvarne argumente funkcije main. To znači da funkcija main, u stvari, može imati

proizvoljan broj parametara.

• argc uvek ima početnu vrednost 1, jer prvi element niza argv pokazuje na ime programa.

18. Dodela vrednosti u stringu se vrsi na sledece nacine:

char ime[] = {‘k’, ‘i’, ‘c’, ‘a’, ‘\o’};

char *ime = {‘k’, ‘i’, ‘c’, ‘a’, ‘\o’};-ovo ne moze

char ime[] = {“kica”};

char *ime = {“kica”};

char ime[] = “kica”;

char *ime = “kica”;

Page 5: odgovori AIP

19. Elementima znakovnog niza se pristupa navodjenjem zajednickog imena i indexa; postoje dva nacina:

s[i] ili *(s+i), time se pristupa i-tom clanu znakovnog niza

20. Linearne strukture podataka.

Svaki element strukture, izuzev prvog i poslednjeg, je u relaciji samo sa dva druga elementa,

prethodnikom i sledbenikom.

polja

linearne lančane liste

magacini

redovi

21. Funkcije za upravljanje memorijom.

- void *malloc(size_t size)-Funkcija rezerviše prostor u memoriji veličine size bajtova, i kao rezultat

vraća pokazivač na početak rezervisanog prostora.

-void *calloc(size_t num, size_t size)-Funkcija rezerviše prostor u memoriji (i inicijalizuje je na

vrednost 0) za num elemenata veličine size bajtova, i kao rezultat vraća pokazivač na početak rezervisanog

prostora.

- void free(void *memblock)- Argument memblock je pokazivač na memorijski blok koji treba

osloboditi. Funkcija ne vraća nikakvu vrednost. Oslobađa memorije zauzete funkcijama malloc i calloc.

-void *realloc()(void *memblock, size_t size)- Funkcija oslobađa rezervisani blok na koji pokazuje

memblock i rezervise novi veličine size bajtova, i kao rezultat vraća pokazivač na početak rezervisanog

prostora.

22. Memorijske klase identifikatora u C-u.

Memorijska klasa određuje lokaciju i vreme postojanja memorijskog bloka dodeljenog funkciji ili promenljivoj.

• u C jeziku postoje četiri osnovne memorijske klase :

1. Automatska (auto)

2. Eksterna (extern)

3. Statička i (static)

4. Registarska (register)

Promenljive deklarisane u funkciji ili na početku bloka su po definiciji automatske. Nastaju pri ulasku u blok ili

funkciju i nestaju kada se blok ili funkcija završe. Deklaracije ovih promenljivih mogu opciono imati ključnu

reč auto.

• Promenljive deklarisane u jednom modulu (fajlu) a koriste se u drugom modulu su eksterne. Deklaracije

ovih promenljivih moraju imati ključnu reč extern.

Page 6: odgovori AIP

• Ove promenljive omogućavaju modularno programiranje, odnosno pisanje programa korišćenjem više

datoteka (fajlova). Svaka globalna promenljiva je i eksterna promenljiva. Da bi se ona videla iz drugog

modula mora se koristiti extern.

• Promenljive koje zadržavaju vrednost kada se blok ili funkcija gde su deklarisane završe su statičke.

Deklaracije ovih promenljivih moraju imati ključnu reč static.

C jezik omogućava programeru da utiče na efikasnost programa. Naime, ako program često koristi neku

promenljivu, programer može sugerisati prevodiocu da tu promenljivu smesti u brze registre centralnog

procesora. Ovakve promenljive se zovu registarske i u deklaraciji se mora koristiti ključna reč register.

23.Prikazivanje argumenata funkcije main().

#include <stdio.h>

void main( int argc, char *argv[] )

{

int brojac;

for( brojac = 0; brojac < argc; brojac++ )

printf(“%s\n”, argv[brojac]);

}

24. Funkcija za razmenu vrednosti dveju promenljivih.

void razmena(int *a, int *b)

{int pom;

pom=*a;

*a=*b;

*b=pom;

}

25. Goto, alfa, Mil, _beta, Uzor_

26. scanf(“%d”,&i);

scanf(“%s”,string);

razlika je u konverionom karakteru (d i s) i u tome sto kod ucitavanje celobrojne vrednosti ispred

promenljive mora stajati adresni operator, dok kod ucitavanja stringa stoji samo ime jer je ono istovremeno i

memorijska adresa prvog elementa.

Page 7: odgovori AIP

27. BubbleSort

#include “stdio.h”

void BubbleSort(int niz[], int n);

{int i, j, pom;

for (i=1;i<n;i++)

for (j=n-1;j>i-1;j--)

if (niz[j-1] > niz[j])

{pom = niz[j];

niz[j]=niz[j-1];

niz[j-1]=pom;

}

}

void main()

{int A[20], N=20, i;

for (i=0; i<N;i++) scanf(“%d”, &A[i]);

for (i=0; i<N;i++) prinf(“%d ”, A[i]);

BubbleSort(A,N);

for (i=0; i<N;i++) scanf(“%d”, A[i]);

}

28. Osobine valjanog algoritma.

Ako petlja počne unutar then bloka ili else bloka, u tom bloku se mora i završiti!

Dozvoljene su paralelne (ugnježdjene) petlje.

Nisu dozvoljene petlje koje se seku!

29. Navesti linearne i nelinearne strukture podataka:

1. Linearne – svaki element strukture, izuzev prvog i poslednjeg, je u relaciji samo sa dva druga

elementa, prethodnikom i sledbenikom.

polja

linearne lančane liste

magacini

redovi

2. Nelinearne – veze izmedju elemenata strukture su proizvoljne (svaki element može imati veći

broj prethodnika ili sledbenika)

stabla

grafovi

Page 8: odgovori AIP

30. Vrste petlji:

a) sa konstantnim brojem prolaza (for),

b) sa promenljivim brojem prolaza (while, do while)

for (i=0;i<n;i++)

<naredba>

while (uslov)

<naredba>

do

<naredba>

while(uslov)

31. Sta su strukture? Kako se realizuju.

Strukture predstavljaju kompleksne tipove podataka koji mogu sadržati promenljive istog ili različitog tipa.

struct naziv_strukture

{

tip1 ime_promenljive_1;

tip2 ime_promenljive_2;

};

struct naziv_strukture naziv_strukturne_promenljive;

32. Objasniti fopen.

FILE *fopen(const char *path, const char *mode)

fopen otvara fajl sa navedenim imenom (string *path koji sadrži pored imena i putanju do fajla), i asocira ga sa

odgovarajućim tokom (stream).

mode je string koji može da ima sledeće vrednosti:

r – otvara postojeći fajl za čitanje, počinje od početka fajla.

w – kreira novi fajl (ako ne postoji) ili briše sadržaj postojećeg i otvara ga za upis, od početka fajla.

a – otvara ili kreira fajl za dodavanje na kraj tekstualnog fajla.

r+ - otvara fajl za čitanje i upis, počev od startne pozicije (ažuriranje).

w+ - isto kao w, s tim da se fajl otvara za čitanje i upis (ažuriranje).

a+ - isto kao a, s tim da se fajl otvara za čitanje i upis (ažuriranje).

String mode može da sadrži i b kao drugi ili treći karakter, da označi da se radio binarnom fajlu.

String mode može da sadrži i druge karaktere koji se mogu koristiti u procesu implementacije.

Ako je fopen uspešno otvorio fajl, vraća pointer na FILE. Inače vraća NULL.