Elektrotehnički
Fakultet Univerziteta u Beogradu Beograd,
03.10.2005.
Ispit traje 90 minuta
Napomene:
a) Pažljivo proučite Uputstvo pre popunjavanja Obrasca za odgovore.
b) Vrednost odgovora: tačan = 20;
netačan = -5; nevažeći
(nula ili više zacrnjenih kružića) = 0.
c) Na testu se može osvojiti najviše 100 poena.
PITANJA
1) Na nekom računaru realni brojevi se
predstavljaju u duhu IEEE standarda, po formatu seeeemmmmmmm gde je s bit za
predznak broja, e bitovi za predstavljanje eksponenta u kodu sa viškom 7, a m
bitovi za predstavljanje normalizovane mantise (1 <= M < 2) sa skrivenim
bitom. Ako je izgled broja A po opisanom formatu 5B216, a izgled
broja B po opisanom formatu 4B716, koju vrednost ima zbir ova dva
broja? Eventualna zaokruživanja se vrše u skladu sa IEEE standardom.
(A) 28 |
B) 28.125 |
C) 28.03125 |
2) Šta ispisuje sledeći program na PicoComputer-u?
P=1 N=2 X=3 Z=6 Q=7 ORG 8 MOV N,#Z MOV X,#P |
MOV Z,#N MOV Q,N MOV P,#X LAB: ADD P,P,1 ADD (P),N,X SUB N,N,X BGT Q,P,LAB OUT X,3 STOP |
(A) 1 7 6 |
B) 7 6 5 |
C) 6 5 6 |
3) Koja sintaksna definicija odgovara zadatom sintaksnom dijagramu:
A) BNF: <x>::=
B{P}<z> <z>::=
WB{P}<z> <z>::=
<prazno> <prazno>::= |
B) EBNF x =
"B"["BP"]{"WBP"}. |
(C) EBNF x =
"B" ["P"] { z }. z = [
"WB" ["P"] z ]. |
4) Funkcija f, pod pretpostavkom da su oba stvarna argumenta pozitivni brojevi i da je drugi manji ili jednak prvom, izračunava:
FUNCTION f(x, y: INTEGER): INTEGER;
IF y=1 THEN f:=x ELSE f:=f(x+1,y-1)+2*y END_IF END_FUNCTION
A) yx/(x-1)! |
B) y!/(y-x+1)! |
C) yx /x! |
5) Dat je nestrukturiran deo programa:
10:A; IF p THEN C; IF r THEN GOTO 10 ELSE D; GOTO 30 END_IF END_IF;
20:B; 30: IF not q THEN GOTO 20;
Koji je od ponuđenih strukturiranih segmenata ekvivalentan datom?
(A) flag:=true; WHILE flag DO A; IF not(p) THEN B; flag:=false ELSE C; IF not(r) THEN D; flag:=false; END_IF END_IF END_WHILE; WHILE not(q) DO B END_WHILE |
B) A;
flag:=not(p); REPEAT IF not(p) THEN B ELSE C; IF not(r) THEN D; flag:=true ELSE A END_IF END_IF UNTIL flag and q END_REPEAT |
C) A; REPEAT
flag:=p; IF p THEN C; flag:=r; IF r THEN A ELSE D END_IF END_IF; IF not(flag) THEN REPEAT B UNTIL q END_REPEAT END IF UNTIL not(flag) END_REPEAT |
6) Red funkcije složenosti priloženog algoritma je:
FOR M:=1 TO N DO
K:=0;
FOR J:=1 TO M DO
K:=K+J
END_FOR;
FOR J:=1 TO K DO
a[J]:=a[J]+K
END_FOR
END_FOR;
A) N1/2 |
(B) N3 |
C) N2K |
Elektrotehnički
Fakultet Univerziteta u Beogradu Beograd,
03.10.2005.
Ispit traje 90 minuta
Napomene:
a) Pažljivo proučite Uputstvo pre popunjavanja Obrasca za odgovore.
b) Vrednost odgovora: tačan = 10;
netačan = -2.5; nevažeći
(nula ili više zacrnjenih kružića) = 0.
c) Na testu se može osvojiti najviše 50 poena.
d) Zadaci nose po 25 poena.
I. ZADACI
1) Napisati program
na programskom jeziku C koji prepisuje tekst iz ulazne datoteke u izlaznu
datoteku. Ime ulazne i izlazne datoteke se učitavaju sa standardnog ulaza. Pri prepisivanju, svako malo slovo treba pretvoriti u veliko, svako
veliko slovo u malo, a svaki broj koji se pojavljuje u tekstu ulazne datoteke u
izlaznoj datoteci zamenjuje se odgovarajućom oktalnom reprezentacijom tog
broja. Pretpostaviti da se u ulaznoj datoteci pojavljuju samo nenegativni celi
dekadni brojevi. Brojem se smatra svaki niz od jedne ili više uzastopnih
cifara. Brojevi mogu biti razdvojeni bilo kojim znacima koji nisu cifre.
2) U programu koji kontroliše alarmni sistem svaki alarmni uređaj opisan je zapisom koji sadrži opis pozicije uređaja u zgradi (znakovni niz dužine 256) i njegovo trenutno stanje (pozar, provala, neaktivan, pokvaren) koje je opisano odgovarajućom skupovnom promenljivom. Napisati potprogram u programskom jeziku Pascal, koji od jednostruko ulančane liste alarma formira tekstualnu datoteku u koju upisuje poziciju i stanje svakog alarma. Ime datoteke i pokazivač na prvi element liste zadaju se kao parametri potprograma. Stanje alarma može istovremeno da označava više događaja: može istovremeno biti požar i provala. Napisati glavni program koji sa standardnog ulaza učitava ime tekstualne datoteke u kojoj treba sačuvati informacije o alarmima, zatim dohvata informacije o alarmima i pozivanjem gore opisanog potprograma snima te podatke. Za dohvatanje informacija o alarmima koristiti funkciju dohvatiAlarme koja ne prima nijedan argument a kao rezultat vraća pokazivač na prvi element liste. Obratiti pažnju da pomenuta funkcija kao rezultat može da vrati nevažeći pokazivač (u tom slučaju ne treba ništa snimati u datoteku).
1) Šta ispisuje sledeći program na
programskom jeziku Pascal?
program pazljivo(Output); var x,y,z: integer; procedure p(x:integer; var y:integer; a,b:integer; var c: integer); begin
x:=x+1; y:=y+x; z:=z+y; a:=a+z; b:=b+a; c:=c+a end; begin
x:=1; y:=0; z:=0; P(x,z,x,z,x); P(x,y,z,y,x); writeln(x:3, y:3, z:3) end. |
A) 22 8 12 |
B) 8 12 14 |
(C) 21 7 11 |
2) Sledeći program na programskom jeziku
Pascal prepisuje sadržaj datoteke f1 u f2 tako što:
Program
P(f1, f2); Var
f1,f2:Text; Procedure
PP; Var c:char; Begin If Not Eoln(f1) Then Begin Read(f1, c); Write(f2, c); PP End End; |
Begin Reset(f1); Rewrite(f2); While Not Eof(f1) Do Begin Readln(f1); PP; Writeln(f2) End End. |
A) zadržava isti
redosled redova i znakova u redovima |
B) prepiše redove
obrnutim redosledom (prvi postaje poslednji itd.) |
C) prepiše svaki red unatrag, a zadrži
redosled redova |
3) Pod pretpostavkom da je i
definisano kao promenljiva tipa int, šta ispisuje sledeći programski
segment na programskom jeziku C?
for( i = 1; i <= 20; i++ ) if (((i % 7) == 1)
&& ((i % 3) != 1))
printf("%d ", i%4); |
(A) 0 3 |
B) 3 5 |
C) 2 2 |
4) Šta ispisuje sledeći program na programskom jeziku C ako se u komandnoj liniji navede broj 212? (tj. program je pozvan na sledeći način: ime_programa 212)
#include
<stdlib.h> #include <stdio.h> main (int argc, char *argv[]) { int m, k; unsigned char j; m=atoi(argv[1]); j = (unsigned char) (m&0xA0A); k=(((j|218)>>3) + (~(j^13)<<2)); printf("0x%x", k); } |
A) 0xa2 |
B) 0xca |
(C) 0xe3 |
5) Šta ispisuje sledeći program na programskom jeziku C?
#include<stdio.h> main() { int a[] = {1, 2, 2, 4, 5}, *ap, *ak, i; ap = a; ak=ap+5; while (ap++<--ak) a[ak-ap] = ak[0] - a[ap[0]]; for(i = 0; i < 5; i++) printf("%d", a[i]); } |
A) 11321 |
B) 50301 |
(C) 11235 |
6) Šta ispisuje sledeći program na programskom jeziku C?
#include <stdio.h> #include <stdlib.h> void
main(){ int *p, *q, *r,
m, n; p = malloc(sizeof(int)); q =
malloc(sizeof(int)); n = 3; m = 2; *p = m; *q = n, r =
&n; for(n=2,m=1; n<5; n++) switch((*p * *r)%9 ){ case 0: case 2: case 3: m++; case 4: case 5: case 6: m+=2; break; default: m=n; } printf("%d%d%d%d", m, n, *p,
*q); free(p); free(q); } |
(A) 4523 |
B) 8513 |
C) 3213 |