ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, 20.01.2022.
Prvi deo ispita iz Programiranja 1
Trajenje 60 minuta Napomene: a) Pažljivo proučite Uputstvo pre popunjavanja Obrasca za odgovore. b) Vrednost odgovora: tačan = 5; netačan = -1.25; nevažeći (nula ili više zacrnjenih kružića) = 0. c) Na pitanjima se može osvojiti najviše 20 poena. I. PITANJA 1)Koji od ponuđenih odgovora zadovoljava dato sintaksno pravilo za <contact> neterminalni simbol dato u BNF notaciji? Ignorisati razmake i ostale neštampajuće znake. <contact> ::= + <country> <city> / <number> <country> ::= <ttt> <city> ::= <dd> <number> ::= <number> - <ttt> | <dd> <ttt> ::= <digit> <dd> <dd> ::= <digit> <digit> <digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (A) + 384 63 / 71 - 623 B) + 385 66 / 21 44 66 C) + 386 65 / 421 - 553 - 72 2)Koja od ponuđenih sekvenci u ENBF notaciji odgovara sintaksnoj definiciji izraz? Pretpostaviti da je slovo sintaksna definicija za velika i mala slova abecede, cifra za cifre 0-9, a blanko za razmak. izraz = operacija blanko operand dodatno. dodatno = {"," blanko operand}. operand = ("(" simbol ")" | ["#"] slovo | broj). operacija = ("BGT" | "BEQ" | "JSR" | "MOV"). simbol = slovo [(cifra | slovo)]. broj = cifra {cifra}. A) BGT (jmp), a, LAB (B) JSR L, 54 C) MOV a, 1, (b), 2, (3) 3)Šta ispisuje sledeći program na programskom jeziku Python ukoliko se unese: acb ab ca? d = {} for str in input().split(): try: str = str[::-1] for s in str: d[s] = d[s] + 1 except: d[s] = 1 finally: print(d) (A) B) C) {'b': 1} {'a': 1} {'a': 1} {'b': 2, 'a': 1} {'a': 2, 'b': 1} {'a': 2, 'b': 1} {'b': 2, 'a': 2, 'c': 1} {'a': 2, 'b': 1, 'c': 1} {'a': 2, 'b': 1} 4)Šta ispisuje sledeći program na programskom jeziku Python ukoliko se unese: a b c a? def foo(d, s, num): if num % 2 == 0: d.add(s) elif s in d: d.remove(s) return d d = {'a', 'b', 'c'} for num, str in enumerate(input().split()): d = foo(d, str, num) print(sorted(d)) (A) ['c'] B) ['a', 'c', 'c'] C) ['b', 'b', 'c', 'c'] 5)Šta ispisuje sledeći program na programskom jeziku Python ukoliko se unese: 1 -30 2? def process(elems): left = [i for i in elems if i % 2] right = [i if i > 0 else -i for i in elems ] for val in elems: if val not in left: left.extend([val]) else: right.append(left) left = [] if len(left) > 0: right.extend(left) return right data = [int(i) for i in input().split()] print(process(data)) A) [[1, -30, 2], [1], [-30, 2]] (B) [1, 30, 2, [1], -30, 2] C) [1, 30, 2, [1], [-30, 2]]