<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Savo</id>
	<title>SI Wiki - Кориснички доприноси [sr]</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Savo"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/wiki/%D0%9F%D0%BE%D1%81%D0%B5%D0%B1%D0%BD%D0%BE:%D0%94%D0%BE%D0%BF%D1%80%D0%B8%D0%BD%D0%BE%D1%81%D0%B8/Savo"/>
	<updated>2026-06-04T03:15:28Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A12/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2022&amp;diff=5486</id>
		<title>ОС2/Фебруар 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A12/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2022&amp;diff=5486"/>
		<updated>2023-02-09T16:25:37Z</updated>

		<summary type="html">&lt;p&gt;Savo: /* Rešenje */ Ispravljena greska u prvom delu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Ispit u februarskom roku 2022. godine&#039;&#039;&#039; održan je 10. februara. Postavka roka dostupna je sa [http://os.etf.rs/OS2/rokovi/2022/februar/Feb%202022.pdf stranice predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Da li se kod algoritma raspoređivanja &#039;&#039;Multi-level Feedback Queue Scheduling&#039;&#039; procesu koji je došao u red spremnih iz stanja suspenzije po pravilu smanjuje ili povećava prioritet? Zašto? &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* Stavlja se u viši (prioritetniji) red.&lt;br /&gt;
* Zato što smo prošlom procenom precenili dužinu njegovog naleta ili smo potcenili njegovu interaktivnost. Zato stavljamo proces u red u kojem će kraće čekati sledeći nalet, ali će imati i manje vreme naleta.&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Na programskom jeziku Java realizovati monitor sa dve operacije, &amp;lt;code&amp;gt;op1&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;op2&amp;lt;/code&amp;gt;, pri čemu monitor održava sledeću invarijantu: ukupan broj izvršavanja operacije &amp;lt;code&amp;gt;op1&amp;lt;/code&amp;gt; je uvek ne manji od broja izvršavanja operacije &amp;lt;code&amp;gt;op2&amp;lt;/code&amp;gt;. Zanemariti prekoračenje ograničenog opsega celobrojnih brojača. &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MyMonitor {&lt;br /&gt;
    private int count;&lt;br /&gt;
&lt;br /&gt;
    public synchronized void op1() {&lt;br /&gt;
        this.count += 1;&lt;br /&gt;
        if (this.count == 1) notifyAll();&lt;br /&gt;
    }&lt;br /&gt;
    public synchronized void op2() {&lt;br /&gt;
        while (--this.count &amp;lt; 0) wait();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U koju kategoriju međuprocesne komunikacije po pitanju imenovanja spada koncept cevovoda (&#039;&#039;pipe&#039;&#039;)? Obrazložiti. Šta je osnovna motivacija za ovakav koncept?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* Indirektno, ne moramo znati tačnu indetifikaciju procesa kojem šaljemo/uzimamo podatke, već samo ime cevovoda.&lt;br /&gt;
* Motivacija je rasprezanje koda što omogućava lakše održavanje i nezavisno menjanje koda.&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Navesti i precizno objasniti bar dva načina sprečavanja mrtve blokade ukidanjem uslova &amp;quot;držanje i čekanje&amp;quot; (&#039;&#039;hold and wait&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* Procesi ne smeju tražiti novi resurs ukoliko već imaju/traže neki drugi. Za &#039;&#039;hold and wait&#039;&#039; su potrebna bar 2 resursa što ovaj pristup onemogućava.&lt;br /&gt;
* Procesi sve svoje resurse moraju tražiti istovremeno, ukoliko ne dobiju sve koje su tražili oslobađaju ih pa posle nekog vremena pokušavaju ponovo sve dok ne dobiju sve tražene resurse. Za &#039;&#039;hold and wait&#039;&#039; moramo držati neki resurs dok tražimo drugi, a ovim pristupom se to onemogućava jer se svi resursi zauzimaju istovremeno.&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dati sistem primenjuje izbegavanje mrtve blokade. Tri procesa, P1, P2 i P3, najavila su korišćenje oba resursa R1 i R2. Nacrtati graf zauzeća resursa nakon sledeće sekvence: P1 traži R1, P3 traži R2, P2 traži R1, P1 oslobađa R1. Ako više procesa čeka na isti resurs, dobiće ga najpre onaj koji ga je najranije tražio.&lt;br /&gt;
&lt;br /&gt;
=== Skica rešenja ===&lt;br /&gt;
* P1 najavljuje korišćenje svih resursa&lt;br /&gt;
* P2 traži R1, najavljuje korišćenje R2&lt;br /&gt;
* P3 koristi R2, najavljuje korišćenje R1&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Kod LRU algoritma zamene stranica korišćenjem dodatnih bita referenciranja, navesti šta tačno radi operativni sistem u sledeće dve situacije: &lt;br /&gt;
* periodično ažuriranje evidencije: &lt;br /&gt;
* izbor žrtve za izbacivanje:&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* Šiftuje dodatne bite referenciranja i u njih ubacuje bit referenciranja koji ugađa hardver koji potom resetuje na 0&lt;br /&gt;
* Putuje po kružnoj listi i ponavlja korak pod a dok ne naiđe na stranicu kojoj svi biti referenciranja 0&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neki sistem primenjuje sistem parnjaka (&#039;&#039;buddy&#039;&#039;) za alokaciju memorije. Stanje sistema u datom trenutku prikazano je na sledećoj slici: &lt;br /&gt;
* X__XX__X_X__X___&lt;br /&gt;
Svako polje predstavlja jedan elementarni blok (najmanju jedinicu alokacije), a blokovi označeni sa X su zauzeti. Prikazati stanje nakon zahteva za alokaciju segmenta veličine dva bloka: &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* X__XX__X_XXXX___ ili&lt;br /&gt;
* X__XX__X_X__X_XX&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Koja RAID konfiguracija ima veći efektivni prostor za podatke, RAID0 ili RAID1, i koliki je efektivni prostor za 2N jednakih diskova? A koja ima veću pouzdanost? &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* Veću pouzdanost ima RAID1, a veći efektivni prostor ima RAID0.&lt;br /&gt;
* U ovom primeru RAID0 ima 2N, a RAID1 ima N efektivnog prostora.&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ukratko objasniti koncept modula jezgra u sistemu &#039;&#039;Linux&#039;&#039;, uključujući i motivaciju za uvođenje tog kocnepta&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* Jezgro &#039;&#039;Linux&#039;&#039; &amp;quot;dovlači&amp;quot; potrebne delove koda tek kada mu zatrebaju, npr. drajvere, jer ih inače ne sadrži u svom kodu.&lt;br /&gt;
* Motivacija je želja da &#039;&#039;Linux&#039;&#039; može raditi i na hardverski lošim računarima.&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Koji način alokacije fajlova primenjuje &#039;&#039;Linux&#039;&#039; ext fajl sistem? Ukratko ga objasniti. &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* Indeksni, sa najviše 3 nivoa indirekcije.&lt;br /&gt;
* Nalik je alokaciji stranica za procese korišćenjem PCBa.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС2]]&lt;/div&gt;</summary>
		<author><name>Savo</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%88%D1%83%D0%BD_2021&amp;diff=4404</id>
		<title>Архитектура рачунара/Јун 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%88%D1%83%D0%BD_2021&amp;diff=4404"/>
		<updated>2022-06-13T22:33:17Z</updated>

		<summary type="html">&lt;p&gt;Savo: /* 3. задатак */ Resen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5п]&#039;&#039;&#039; У посматраном рачунарском систему процесор има 3 пара линија по којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 8 улазно/излазних уређаја које треба некако повезати помоћу та 3 пара линија на процесор и омогућити за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида. &lt;br /&gt;
# Нацртати како тих 8 улазно/излазних уређаја треба повезати помоћу та 3 пара линија на процесор. &lt;br /&gt;
# Нацртати интерну структуру контролера периферије који дозвољава серијско слање прекида наредној периферији у ланцу.&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5п]&#039;&#039;&#039; Haписати оптималну секвенцу инструкција неопходних за срачунавање израза: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
int a,b,c,d,e,f;&lt;br /&gt;
...&lt;br /&gt;
a = (b+c) - (d+e);&lt;br /&gt;
if (a == 0) f = (b+c);&lt;br /&gt;
else f = (d+e);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
На располаrању је процесор код кога аритметичке, логичке и померачке инструкције имају формат: ОС reg, reg, reg/imm где је ОС код операције, одредишни операнд и први операнд морају бити у регистру (reg), док други може бити или у регистру или дат непосредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дат одредишни регистар (reg), a другим извориште. Инструкцијa STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), a другим одредиште. А, В, С, D, E и F су глобалне променљиве које одговарају симболичким ознакама адреса меморијских локација у којима се налазе операнди. Садржај меморијских локација означених адресама В, С, D и Е треба да остане непромењен, садржај одговарајућих регистара је дозвољено мењати. На располагању стоји 8 регистара опште намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној јединици&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
        LOAD R1, b&lt;br /&gt;
        LOAD R2, c&lt;br /&gt;
        ADD R1, R1, R2&lt;br /&gt;
        LOAD R2, d&lt;br /&gt;
        LOAD R3, e&lt;br /&gt;
        ADD R2, R2, R3&lt;br /&gt;
        SUB R3, R1, R2&lt;br /&gt;
        STORE R3, a&lt;br /&gt;
        JNZ else&lt;br /&gt;
        STORE R1, f&lt;br /&gt;
        JMP end&lt;br /&gt;
else:   STORE R2, f&lt;br /&gt;
end:    ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5п]&#039;&#039;&#039; Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој С функцији која копира &#039;&#039;n&#039;&#039; бајта низа &#039;&#039;src&#039;&#039; y низ &#039;&#039;dst&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;void *memсру (void *dst, const void *src, int n);&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
Функција као резултат враћа показивач на одредишни низ &#039;&#039;dst&#039;&#039;. Формати инструкција и података су као у задатку 2. На располагању стоје и сложене инструкције.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
	PUSH BP&lt;br /&gt;
	MV BP, SP&lt;br /&gt;
	PUSH R0&lt;br /&gt;
	PUSH R1&lt;br /&gt;
	PUSH R2&lt;br /&gt;
	&lt;br /&gt;
	//Pretpostavka da SP ukazuje na prvu slobodnu lokaciju i da raste na dole&lt;br /&gt;
	LD R0, [BP]3 	//dst&lt;br /&gt;
	LD R1, [BP]4	//src&lt;br /&gt;
	LD R2, [BP]5 	//n&lt;br /&gt;
	&lt;br /&gt;
	//srcLen, srcAddr, fill, dstLen, dstAddr&lt;br /&gt;
	MOVC R2, R1, &#039;x&#039;, R2, R0&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	POP R2&lt;br /&gt;
	POP R1&lt;br /&gt;
	POP R0&lt;br /&gt;
	POP BP&lt;br /&gt;
	RTS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[25п]&#039;&#039;&#039; У рачунарском систему се налази једноадресни процесор, меморија и периферије РЕR0, PER1 до РERN. Cматрати да број N припада скупу од 1 до 15 и да може да се користи као непосредна вредност у програму (#N). Периферији РER0 jе придружен DMA0 контролер. Све компоненте рачунара су повезане системском магистралом са 16 битном адресном и 16 битном магистралом података. Адресирање је на нивоу 16 битних речи. Сви подаци и адресе су ширине 16 бита. Узети да је тип података &#039;&#039;&#039;іnt&#039;&#039;&#039; дужине 16 бита. Улазно-излазни адресни простор и меморијски адресни простор су преклопљени. Адресе релевантних регистара периферија РER0 и DМА0 контролера су:&lt;br /&gt;
{|&lt;br /&gt;
| PER0_CONTROL || F000h || DMA0_CONTROL || F003h || DMA0_ADDR || F006h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_STATUS  || F001h || DMA0_STATUS  || F004h || DMA0_CNT  || F007h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_DATA    || F002h || DMA0_DATA    || F005h&lt;br /&gt;
|}&lt;br /&gt;
Адресе релевантних регистара периферија РER1 до РERN се добијају као резултат потпрограма &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;int* getPеrRegAddr (unsigned int N, unsigned int typе);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
где N представља број периферије, type представља тип регистра (1 - ENTRY, 2 - CONTROL, 3 - STATUS, 4 - DATA). Потпрограм &#039;&#039;getPerRegAddr&#039;&#039; не треба имплементирати, већ само позивати на одговарајућем месту у програму.&lt;br /&gt;
&lt;br /&gt;
У управљачким регистрима бит 0 је &#039;&#039;Start&#039;&#039; којим се дозвољава почетак операције, бит 1 одрeђују тип преноса података (1 - улаз (&#039;&#039;input&#039;&#039;), 0 - излаз (&#039;&#039;output&#039;&#039;)), бит 2 је &#039;&#039;Enable&#039;&#039; којим се дозвољава прекид. Бит 3 управљачког регистра контролера DMA0 се задаје режим рада (0-блоковски (&#039;&#039;burst&#039;&#039;), 1-циклус по циклус (&#039;&#039;сусle stealing&#039;&#039;)). У статусним регистрима бит 0 је &#039;&#039;Ready&#039;&#039; који сигнализира спремност контролера периферије.&lt;br /&gt;
&lt;br /&gt;
Написати главни програм, одговарајући потпрограм и прекидну рутину којима се обавља следећи пренос. &lt;br /&gt;
&lt;br /&gt;
Периферија РER0 шаље низ од 100h означених целих бројева који се смештају у меморију почев од адресе 5000h. Hакон учитаног низа у меморију потребно је проследити максималну вредност низа периферијама РER1 до РЕRN. Пренос максималне вредности периферијама треба обављати у паралели, чим периферија буде спремна да прими податак. Након што је свака периферија примила максималну вредност, потребно је да РER0 учита нов низ (од 100h означених целих бројева који се смештају у меморију почев од адресе 5000h), да се проследи нова максимална вредност низа периферијама РER1 до PERN и тако циклично да ради програм.&lt;br /&gt;
&lt;br /&gt;
Периферије PER1 до РERN када се једном укључе, није дозвољено да се потом искључе. Ради евиденције којoј периферији је прослеђена тренутна максимална вредност низа потребно је увести променљиву &#039;&#039;mask&#039;&#039;. Bредност бита &#039;&#039;mask&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&#039;&#039; треба да има вредност 1 уколико је тренутна максимална вредност низа прослеђена периферији РER&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;, a да има вредност 0 уколико тренутна максимална вредност низа није још прослеђена периферији РER&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;. Након прослеђене максималне вредности свим периферијама, вредност променльиву &#039;&#039;mask&#039;&#039; треба ресетовати на 0.&lt;br /&gt;
&lt;br /&gt;
Потребно је имплементирати и у програму на одговарајуhем месту позвати потпрограм &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;int max (int* arrAddr, unsigned int length);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Који враћа максималну вредност низа задатом почетном адресом аrrAddr и дужине length eлемената.&lt;br /&gt;
&lt;br /&gt;
Примање података са периферије РERO реализовати коришћењем DMА0 контролера у блоковском режиму рада. Слање података на периферије РER1 до РERN peализовати испитивањем бита спремности.&lt;br /&gt;
&lt;br /&gt;
Сматрати да су доступни регистри ВР и SP приликом писања потпрограма. Обратити пажњу да потпрограм не сме да користи глобалне променљиве, већ само параметре потпрограма и локане променљиве. Позивалац потпрограма је дужан да уклони параметре са стека. Резултат потпрограма се враћа кроз акумулатор. Процесор не поседује регистре опште намене, као ни регистар IМR. Стек расте од виших ка нижим локацијама, а SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове називе треба писати описно и семантички исправно. &#039;&#039;&#039;Обавезно је писање концизних коментара над семантичким целинама.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>Savo</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%88%D1%83%D0%BD_2021&amp;diff=4371</id>
		<title>ОО2/Јун 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%88%D1%83%D0%BD_2021&amp;diff=4371"/>
		<updated>2022-06-04T20:06:32Z</updated>

		<summary type="html">&lt;p&gt;Savo: /* 5. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== G1/G2 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Koja od sledećih tvrđenja su tačna za programski jezik Java?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Moguće je imenovati promenljive u izvornom kodu napisanom na jeziku Java koristeći srpsko ćirilično pismo.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Veličina primitivnog podatka tipa &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt; u programskom jeziku Java je tačno 8 bita.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Izvorni kod napisan na programskom jeziku Java koristeći ASCII način kodiranja translira se pre prevođenja koristeći UTF-16 način kodiranja.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Java koristi UTF-16 način kodiranja za kodiranje znaka (&amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;).&amp;lt;/span&amp;gt;&lt;br /&gt;
# Java koristi isključivo ASCII način kodiranja za kodiranje znaka (&amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Koja od sledećih tvrđenja su tačna za glavni metod (funkciju &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; koja predstavlja ulaznu tačku programa) na programskom jeziku Java?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Glavni metod mora biti javno dostupan.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Glavni metod mora biti statički metod.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Glavni metod može da ima proizvoljan broj parametara proizvoljnog tipa.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Povratna vrednost glavnog metoda mora biti tipa &amp;lt;code&amp;gt;void&amp;lt;/code&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Svaka od više klasa koje obrazuju program može da definiše metod &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;, sa odgovarajućom deklaracijom glavnog metoda i različitim telom, od kojih svaki može da bude glavni metod u različitim pokretanjima programa.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
Koja od sledećih tvrđenja su tačna na programskom jeziku Java?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Paketi rešavaju problem konflikta imena tipova.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Paketi ostvaruju koncept prostora imena sličan konceptu &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt; u jeziku C++.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Po konvenciji, imena paketa se pišu isključivo velikim slovima.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Paket predstavlja skup logički povezanih tipova objekata (na primer, klasa, interfejsa).&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Paketi utiču na pravo pristupa sadržanim tipovima i članovima tipova.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
Šta ispisuje sledeći program na programskom jeziku Java? Upisati simbol &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ukoliko se program ne prevodi.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
interface I {&lt;br /&gt;
    static void m() {&lt;br /&gt;
        System.out.print(1);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class B {&lt;br /&gt;
    public static void m() {&lt;br /&gt;
        System.out.print(2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class D extends B implements I {&lt;br /&gt;
    public D() {&lt;br /&gt;
        m();&lt;br /&gt;
        B.m();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Test {&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        new D();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;22&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Poziv &amp;lt;code&amp;gt;m()&amp;lt;/code&amp;gt; poziva nasleđeni metod klase &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; jer se statički metod interfejsa mora pozvati eksplicitno preko naziva interfejsa.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Šta može da stoji umesto #### da bi se sledeći izvorni kod napisan na programskom jeziku Java uspešno preveo?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Test {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        try {&lt;br /&gt;
            ####&lt;br /&gt;
        } catch (Exception e) {}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;throw 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;throw new Throwable();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;throw new Exception();&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;throw;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;throw new Object();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Izuzetak koji se baca kroz &amp;lt;code&amp;gt;throw&amp;lt;/code&amp;gt; na programskom jeziku Java mora biti izveden iz &amp;lt;code&amp;gt;Throwable&amp;lt;/code&amp;gt;. Bacanje &amp;lt;code&amp;gt;Throwable&amp;lt;/code&amp;gt; se ovde neće prevesti jer metoda ne hvata niti deklariše u &amp;lt;code&amp;gt;throws&amp;lt;/code&amp;gt; klauzuli &amp;lt;code&amp;gt;Throwable&amp;lt;/code&amp;gt;, a &amp;lt;code&amp;gt;Throwable&amp;lt;/code&amp;gt; je takođe Interfejs koji se ne može instancirati.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
Koja od sledećih tvrđenja su tačna za programski jezik Java?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Lokalnu klasu moguće je definisati unutar metoda klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Lokalnu klasu moguće je definisati unutar konstruktora klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Lokalnu klasu moguče je definisati unutar inicijalizacionog bloka klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Lokalnu klasu moguće je definisati unutar definicije klase, van bilo kog bloka koda.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Lokalnu klasu moguće je definisati unutar main funkcije.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Dat je sledeći programski kod napisan na programskom jeziku Java.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Brojac {&lt;br /&gt;
    private int br = 0;&lt;br /&gt;
    public void inkrement() { br++; }&lt;br /&gt;
    public int dajBroj() { return br; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Test {&lt;br /&gt;
    public static void main(String args[]) throws InterruptedException {&lt;br /&gt;
        Brojac brojac = new Brojac();&lt;br /&gt;
        Thread[] niti = new Thread[10];&lt;br /&gt;
        &lt;br /&gt;
        for (int i = 0; i &amp;lt; niti.length; i++) niti[i] = new Thread(() -&amp;gt; { brojac.inkrement(); });&lt;br /&gt;
        for (int i = 0; i &amp;lt; niti.length; i++) niti[i].start();&lt;br /&gt;
        for (int i = 0; i &amp;lt; niti.length; i++) niti[i].join();&lt;br /&gt;
        System.out.print(brojac.dajBroj());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Koje od sledećih tvrdnji su tačne za prikazani kod?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Izaberite jedan odgovor)&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu uvek se ispisuje vrednost 10.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu može se, ali ne mora, ispisati vrednost 10.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Programski kod se ne prevodi uspešno.&lt;br /&gt;
# Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu uvek se ispisuje vrednost 0.&lt;br /&gt;
# Programski kod se uspešno prevodi, ali se prilikom izvršavanja emituje izuzetak &#039;&#039;InterruptedException&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Metodi klase &amp;lt;code&amp;gt;Brojac&amp;lt;/code&amp;gt; nisu sinhronizovani, tako da je tehnički moguće da &amp;lt;code&amp;gt;br++&amp;lt;/code&amp;gt; zapravo prvo dohvati vrednost &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, onda bude prekinuta od strane neke druge niti, pa pri povratku uveća pročitanu vrednost za 1 i upiše u &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, time gazeći vrednost koje su prethodne niti posle prekida upisale.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Klasa &amp;lt;code&amp;gt;Menu&amp;lt;/code&amp;gt; izvedena je direktno iz klase:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;MenuContainer&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;MenuComponent&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;MenuBar&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;Component&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;MenuItem&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Koja od sledećih tvrdnji je tačna?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Izabrati više odgovora)&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Programi pisani za izvršenje na platformi .NET se prevode u međukod MSIL.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Jedna od ciljnih karakteristika radnog okvira .NET je integracija sistema korišćenjem otvorenih standarda za razmenu podataka kakav je XML.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Izvršni sklop (&#039;&#039;assembly&#039;&#039;) za .NET može biti u samo jednom ili više fajlova.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Izvršno okruženje (CLR) radnog okvira .NET izvršava program iz fajla koji sadrži prevedeni C++ program na mašinski jezik računara domaćina.&lt;br /&gt;
# Jezik Java je standard međunarodne organizacije za standardizaciju ISO, za razliku od jezika C# koji nije standardizovan.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
Šta ispisuje sledeći program na jeziku C#?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
class Program {&lt;br /&gt;
    static void M1(ref int i) { System.Console.Write(i++ + &amp;quot; &amp;quot;); }&lt;br /&gt;
    static void M2(ref int i) { System.Console.Write(i/2 + &amp;quot; &amp;quot;); }&lt;br /&gt;
    static void M3(ref int i) { System.Console.Write(i-- + &amp;quot; &amp;quot;); }&lt;br /&gt;
&lt;br /&gt;
    public delegate void Delegat(ref int i);&lt;br /&gt;
&lt;br /&gt;
    public static void Main(string[] args) {&lt;br /&gt;
        Delegat d1 = new Delegat(M1);&lt;br /&gt;
        Delegat d2 = new Delegat(M2);&lt;br /&gt;
        Delegat da = d1 + d2;&lt;br /&gt;
        Delegat d = da + d1;&lt;br /&gt;
        d += new Delegat(M3) + da;&lt;br /&gt;
        d -= d1;&lt;br /&gt;
        d -= d2;&lt;br /&gt;
        d -= new Delegat(M3);&lt;br /&gt;
        int i = 3;&lt;br /&gt;
        d(ref i);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;3 2 4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;U &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt; se pri stvaranju dodaju &amp;lt;code&amp;gt;M1&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;M2&amp;lt;/code&amp;gt; (iz &amp;lt;code&amp;gt;da&amp;lt;/code&amp;gt;) pa ponovo &amp;lt;code&amp;gt;M1&amp;lt;/code&amp;gt;. Zatim se dodaju &amp;lt;code&amp;gt;M3&amp;lt;/code&amp;gt; i ponovo &amp;lt;code&amp;gt;M1&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;M2&amp;lt;/code&amp;gt; (iz &amp;lt;code&amp;gt;da&amp;lt;/code&amp;gt;). Onda se uklanjaju &amp;lt;code&amp;gt;M1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;M2&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;M3&amp;lt;/code&amp;gt; sa kraja liste poziva pa ostaju samo &amp;lt;code&amp;gt;M1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;M2&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;M1&amp;lt;/code&amp;gt; u delegatu. Posle izvršavanja prvog &amp;lt;code&amp;gt;M1&amp;lt;/code&amp;gt; ispis je 3 a vrednost je 4, posle &amp;lt;code&amp;gt;M2&amp;lt;/code&amp;gt; ispis je 2 a vrednost ostaje ista, i posle drugog &amp;lt;code&amp;gt;M1&amp;lt;/code&amp;gt; ispis je 4 i vrednost je 3.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== G3/G4 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Koje od sledećih tvrđenja je tačno na programskom jeziku Java?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Veličina tipa &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt; je zavisna od implementacije.&lt;br /&gt;
# Veličina tipa &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt; je uvek ista i iznosi 32 bita.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Veličina tipa &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt; je uvek ista i iznosi 64 bita.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Veličina tipa &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt; je uvek ista i iznosti 128 bita.&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Koja od sledećih tvrđenja su tačna na programskom jeziku Java?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Potpis funkcije se sastoji iz imena, broja argumenata i njihovih tipova.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Deklaracija sadrži potpis, tip rezultata i &amp;lt;code&amp;gt;throws&amp;lt;/code&amp;gt; klauzulu.&amp;lt;/span&amp;gt;&lt;br /&gt;
# U jednoj klasi može postojati više metoda sa istim potpisom.&lt;br /&gt;
# Ako se u klasi nađe više metoda sa istom deklaracijom, njihova implementacija se u vreme prevođenja spaja u jednu metodu.&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
Koja od sledećih tvrđenja su tačna na programskom jeziku Java?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Jedan paket se može prostirati na više fajlova.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Svaki fajl sa izvornim kodom koji je deo nekog paketa mora sadržati naredbu &amp;lt;code&amp;gt;package imePaketa;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Različite metode sa istom deklaracijom se mogu nalaziti u dva različita paketa.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Naredba &amp;lt;code&amp;gt;package imePaketa&amp;lt;/code&amp;gt; mora biti prva naredba u fajlu.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Jedan fajl može biti sadržan u više paketa.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Odgovor pod b je inicijalno označen kao tačan, međutim, u slučaju podrazumevanog paketa ovo ne važi, tako da odgovor nije tačan.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
Šta ispisuje sledeći program na programskom jeziku Java? Upisati simbol &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ukoliko se program ne prevodi.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
interface I {&lt;br /&gt;
    static void m() {&lt;br /&gt;
        System.out.print(1);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class B {&lt;br /&gt;
    public static void m() {&lt;br /&gt;
        System.out.print(2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class D extends B implements I {&lt;br /&gt;
    public D() {&lt;br /&gt;
        I.m();&lt;br /&gt;
        B.m();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Test {&lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        new D();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Šta može da stoji umesto #### da bi se sledeći izvorni kod napisan na programskom jeziku Java uspešno preveo?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Izuzetak extends Exception {}&lt;br /&gt;
&lt;br /&gt;
class Klasa {&lt;br /&gt;
    public void m() throws Izuzetak {&lt;br /&gt;
        ####&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;throw;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;throw 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;throw new RuntimeException();&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;throw new Exception();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;throw new Izuzetak();&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Moguće je baciti &amp;lt;code&amp;gt;Izuzetak&amp;lt;/code&amp;gt; jer je naznačen u &amp;lt;code&amp;gt;throws&amp;lt;/code&amp;gt; klauzuli i &amp;lt;code&amp;gt;RuntimeException&amp;lt;/code&amp;gt; jer je neproveren.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
Navesti koja su tvrđenja tačna za lokalne klase:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Lokalne klase definisane u nestatičkom okruženju okružujuće klase sadrže pokazivač na objekat okružujuće klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Referenca na lokalnu klasu se može koristiti van bloka u kome je lokalna klasa definisana.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Referenca na lokalnu klasu se može proslediti kao povratna vrednost metoda.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Referenca na lokalnu klasu se može proslediti kao argument metodu.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Isti kao [[#7. zadatak|za G1/G2]].&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Koje klase su izvedene iz &amp;lt;code&amp;gt;Component&amp;lt;/code&amp;gt;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;BorderLayout&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Panel&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;Graphics&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;MenuBar&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;TextField&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Checkbox&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Choice&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Button&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Koje od sledećih tvrdnji su tačne u vezi sa izvršnim okruženjem u .NET (CLR)?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;CLR je odgovoran za sigurnost i zaštitu.&amp;lt;/span&amp;gt;&lt;br /&gt;
# CLR ne podržava više jezika.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;CLR podržava višenitno izvršavanje.&amp;lt;/span&amp;gt;&lt;br /&gt;
# CLR ne podržava JIT prevođenje.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;CLR upravlja memorijom programa.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
Neki kod sa delegatima. &#039;&#039;(Nedostaje tekst zadatka.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОО2]]&lt;/div&gt;</summary>
		<author><name>Savo</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A0%D0%A22/%D0%9A1_2020&amp;diff=3273</id>
		<title>ОРТ2/К1 2020</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A0%D0%A22/%D0%9A1_2020&amp;diff=3273"/>
		<updated>2021-12-11T12:22:25Z</updated>

		<summary type="html">&lt;p&gt;Savo: /* Поставка */ 5. pasus pri kraju: SPA -&amp;gt; SPC, 6. pasus pri kraju SPA -&amp;gt; SCP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Реализовати уређај P за спрегу између уређаја UA, UB и UC који извршава следећу операцију. Уређај P треба од уређаја UA да прими осмобитну бинарну неозначену реч N (N &amp;gt; 0), која представља дужину низа A, а затим и чланове низа  A (a[i], i = 0 .. (N - 1)). Чланови низа A су означене осмобитне бинарне речи дате у другом комплементу. Након завршеног читања низа A, уређај P треба да пошаље серијски уређају UB сваки члан низа B. Чланови низа B (b[i]) су шеснаестобитне бинарне речи у другом комплементу где је: &amp;lt;math&amp;gt;b[i] = \frac{(A[(N-1) - i] + 1)^2}{8}, i = 0 .. (N-1)&amp;lt;/math&amp;gt;. Описана операција треба да се понавља циклично.&lt;br /&gt;
&lt;br /&gt;
У случају потребе за аритметичким множењем, уређај P може да пошаље два означена осмобитна операнда уређају UC. Када уређај UC срачуна производ, уређај P треба да прихвати шеснаестобитни означени резултат. Уређаји UA, P и UB треба да раде синхроно на исти сигнал такта.&lt;br /&gt;
&lt;br /&gt;
Уређај UA паралелно шаље уређају P осмобитне бинарне речи по линијама података DAP&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;, при чему је бит 7 најстарији а бит 0 најмлађи бит. За синхронизацију између уређаја UA и P користе се статусни сигнал SPA и управљачки сигнал CAP. Вредностима 0 и 1 сигнала SPA уређај P шаље уређају UA индикацију када не може и када може да прими осмобитну бинарну реч, респективно. Вредношћу 1 сигнала CAP, трајања једне периоде сигнала такта, уређај UA шаље уређају P команду да треба да прими осмобитну бинарну реч, при чему уређај UA то чини кад утврди да уређај P на статусној линији SPA држи вредност 1.&lt;br /&gt;
&lt;br /&gt;
Уређај P серијски шаље уређају UB шеснаестобитне бинарне речи по линијама података DPB. Слање се врши почев од виших ка нижим битовима. За синхронизацију између уређаја P и UB користе се статусни сигнал SBP и управљачки сигнал CPB. Вредностима 0 и 1 сигнала SBP уређај UB шаље уређају P индикацију када не може и када може да прими један бит, респективно. Вредношћу 1 сигнала CPB, трајања једне периоде сигнала такта, уређај P шаље уређају UB команду да треба да прими један бит, при чему уређај P то чини кад утврди да уређај UB на статусној линији SBP држи вредност 1.&lt;br /&gt;
&lt;br /&gt;
Уређај UC паралелно шаље уређају P шеснаестобитне бинарне речи по линијама података DCP&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt;, при чему је бит 15 најстарији а бит 0 најмлађи бит. За синхронизацију између уређаја UC и P користе се статусни сигнал SPC и управљачки сигнал CCP. Вредностима 0 и 1 сигнала SPC уређај P шаље уређају UC индикацију када не може и када може да прими шеснаестобитну бинарну реч, респективно. Вредношћу 1 сигнала CCP, трајања једне периоде сигнала такта, уређај UC шаље уређају P команду да треба да прими шеснаестобитну бинарну реч, при чему уређај UC то чини кад утврди да уређај P на статусној линији SPC држи вредност 1.&lt;br /&gt;
&lt;br /&gt;
Уређај P паралелно шаље уређају UC две осмобитне бинарне речи по линијама података DPC&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt; и DPC&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt;, при чему је бит 7 најстарији а бит 0 најмлађи бит прве речи, док је бит 15 најстарији а бит 8 најмлађи бит друге речи. За синхронизацију између уређаја P и UC користе се статусни сигнал SCP и управљачки сигнал CPC. Вредностима 0 и 1 сигнала SCP уређај UC шаље уређају P индикацију када не може и када може да прими шеснаестобитну бинарну реч, респективно. Вредношћу 1 сигнала CPC, трајања једне периоде сигнала такта, уређај P шаље уређају UC команду да треба да прими две осмобитне бинарне речи, при чему уређај P то чини кад утврди да уређај UC на статусној линији SCP држи вредност 1.&lt;br /&gt;
&lt;br /&gt;
У случају коришћења меморијског модула потребно је обратити пажњу на капацитет модула тако да се не користи сувишан простор. Сматрати да су на располагању меморијски модули који имају стандардне улазе и излазе (&amp;lt;math&amp;gt;DI&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;DO&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;ADDR&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\overline{RD}/WR&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Потребно је обратити пажњу на могућа прекорачења приликом аритметичких операција, као и на могућа проширивања означених вредности на одговарајући број битова.&lt;br /&gt;
&lt;br /&gt;
Претпоставити да се на почетку на статусним линијама SPA, SPC, SBP и SCP налазе вредности 0.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Нацртати структурну шему операционе јединице уређаја P.&lt;br /&gt;
# Нацртати дијаграме тока управљачких сигнала операционе јединице и управљачке јединице уређаја P.&lt;br /&gt;
# Нацртати структурну шему управљачке јединице уређаја P реализоване помоћу бројача корака и декодера и дати изразе за генерисање управљачких сигнала операционе и управљачке јединице уређаја P.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Решење ==&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОРТ2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Датотека:ORT2 K1 2020 Operaciona jedinica.svg|thumb|1200px|center|Дијаграм тока сигнала операционе јединице.]]&lt;br /&gt;
&lt;br /&gt;
На шеми се налазе секвенцијални елементи:&lt;br /&gt;
* &#039;&#039;&#039;N&#039;&#039;&#039; - Осмобитни регистар који чува димензију низа.&lt;br /&gt;
* &#039;&#039;&#039;SC&#039;&#039;&#039; - Осмобитни регистар који служи као бројач корака при упису и слању низа.&lt;br /&gt;
* &#039;&#039;&#039;MEM&#039;&#039;&#039; - Меморија у којој се чува сам низ. Садржи 256 осмобитних речи.&lt;br /&gt;
* &#039;&#039;&#039;OUT&#039;&#039;&#039; - Шеснаестобитни регистар у ком се чува податак који треба да се шаље уређају &#039;&#039;B&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;SHC&#039;&#039;&#039; - Четворобитни регистар који служи као бројач битова при серијском слању резултата.&lt;br /&gt;
&lt;br /&gt;
[[Датотека:ORT2 K1 2020 Dijagram operaciona.png|thumb|800px|center|Дијаграм тока сигнала операционе јединице.]]&lt;br /&gt;
&lt;br /&gt;
У &#039;&#039;Т0&#039;&#039; се уписује број &#039;&#039;N&#039;&#039; у регистар &#039;&#039;&#039;N&#039;&#039;&#039; који представља димензију низа. У &#039;&#039;Т1&#039;&#039; се иницијализује бројач корака чија вредност представља адресу где ће се сместити појединачни елемент низа. Упис у меморију се креће на горе, од &#039;&#039;N&#039;&#039; до 0. Када је уписан цео низ у меморију, онда од задњег елемента (уписан на адреси 0) се, елемент по елемент, обрађују вредности тако да се формира вредност елемента низа &#039;&#039;b&#039;&#039; која се одмах после израчунавања шаље. Вредност из меморије се инкрементира и шаље уређају &#039;&#039;C&#039;&#039; као обе 8-битни вредности које се множе. Одмах после, чим се то множење заврши и стигне у уређај &#039;&#039;P&#039;&#039;, смешта се у регистар &#039;&#039;&#039;OUT&#039;&#039;&#039; и серијски шаље уређају &#039;&#039;B&#039;&#039;. Кораци се броје помоћу &#039;&#039;&#039;SHC&#039;&#039;&#039;, који се иницијализовао у &#039;&#039;Т3&#039;&#039;, док је само слање у кораку &#039;&#039;T5&#039;&#039;. Након проласка кроз сваки елемент (доласка до адресе &#039;&#039;N&#039;&#039;), враћамо се на почетак.&lt;/div&gt;</summary>
		<author><name>Savo</name></author>
	</entry>
</feed>