odgovori aip
DESCRIPTION
jeste iz leskovacTRANSCRIPT
![Page 1: odgovori AIP](https://reader031.vdocuments.pub/reader031/viewer/2022020112/568c48ae1a28ab49169123c5/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022020112/568c48ae1a28ab49169123c5/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022020112/568c48ae1a28ab49169123c5/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022020112/568c48ae1a28ab49169123c5/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022020112/568c48ae1a28ab49169123c5/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022020112/568c48ae1a28ab49169123c5/html5/thumbnails/6.jpg)
• 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](https://reader031.vdocuments.pub/reader031/viewer/2022020112/568c48ae1a28ab49169123c5/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022020112/568c48ae1a28ab49169123c5/html5/thumbnails/8.jpg)
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.