<?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=Duke</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=Duke"/>
	<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/Duke"/>
	<updated>2026-06-04T02:15:17Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%BE%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D0%BA:Duke&amp;diff=4918</id>
		<title>Корисник:Duke</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%BE%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D0%BA:Duke&amp;diff=4918"/>
		<updated>2022-10-25T06:12:58Z</updated>

		<summary type="html">&lt;p&gt;Duke: Замењена садржина странице текстом „Kontakt na discordu”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kontakt na discordu&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%BE%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D0%BA:Duke&amp;diff=3214</id>
		<title>Корисник:Duke</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%BE%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D0%BA:Duke&amp;diff=3214"/>
		<updated>2021-12-02T21:41:23Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Као поток, плитак али бистар */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Као поток, плитак али бистар ==&lt;br /&gt;
&lt;br /&gt;
Име ми је Душан, из породице [https://sr.wikipedia.org/sr-ec/%D0%A2%D0%BE%D0%B4%D0%BE%D1%80%D0%BE%D0%B2%D0%B8%D1%9B%D0%B8_(%D0%BF%D0%BE%D1%80%D0%BE%D0%B4%D0%B8%D1%86%D0%B0) Тодоровић], од оца Ивана.&lt;br /&gt;
&lt;br /&gt;
Имам E-mail адресу али боље на [https://discord.com/ дискорду] контактирајте: Duke#1516&lt;br /&gt;
&lt;br /&gt;
Мој Github налог има неке корисне ствари за људе, махом се фокусирам на графику тренутно, додуше у тренутку писања два пројекта нису јавна: github.com/DusanTodorovic5&lt;br /&gt;
&lt;br /&gt;
Мада можете ме контактирати и типа на инстаграму: [https://www.instagram.com/dusan.todorovic/ @dusan.todorovic] или LinkedIn-у ако волите да сте формарлни: https://www.linkedin.com/in/dusantodorovic5/&lt;br /&gt;
&lt;br /&gt;
Кратка биографија, с обзиром да је изгледа то популарно овде:&lt;br /&gt;
&lt;br /&gt;
Волим све што воле млади.&lt;br /&gt;
Свирам [https://sr.wikipedia.org/wiki/%D0%96%D0%B8%D1%87%D0%B0%D0%BD%D0%B8_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B8 жичани инструмент] са шест жица, у народу познат као [[wikipedia:sr:Гитара|Гитара]].&lt;br /&gt;
Покушавам да практикујем [https://vukajlija.com/stoik стоицизам], сходно томе и омиљени [https://vukajlija.com/citati/130226 цитат] ми је : &amp;quot;И да плешеш и да плачеш по киши, киша ће и даље падати&amp;quot;. [[wikipedia:sr:Марко_Аурелије|Марко Аурелије]] ❤️&lt;br /&gt;
Омиљено пиће ми је [https://sr.wikipedia.org/sr-ec/%D0%A6%D1%80%D0%BD%D0%B8_%D1%87%D0%B0%D1%98 црни чај], али из оне мале [[wikipedia:sr:File:Rosehiptea.png|уске чашице]] што користе [https://vukajlija.com/turci/25956 турци], некако слађи чај буде.&lt;br /&gt;
Најбескориснији таленат који имам је склапање [[wikipedia:sr:Rubikova_kocka|рубикове коцке]] за ~11 [https://vukajlija.com/sekunda/405579 секунди].&lt;br /&gt;
Волим додуше да возим [https://www.motorcyclespecs.co.za/model/suzu/suzuki_vl125lc_intruder%2001.htm овај мотор] а и друге али мануелне, по могућству крузер или накед.&lt;br /&gt;
Слушам [https://sr.wikipedia.org/sr/Bluz блуз] али волим и [https://sr.wikipedia.org/sr-ec/%D0%90%D0%B7%D1%80%D0%B0_(%D0%BC%D1%83%D0%B7%D0%B8%D1%87%D0%BA%D0%B0_%D0%B3%D1%80%D1%83%D0%BF%D0%B0) Азру].&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%BE%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D0%BA:Duke&amp;diff=3213</id>
		<title>Корисник:Duke</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%BE%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D0%BA:Duke&amp;diff=3213"/>
		<updated>2021-12-02T20:41:36Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Као поток, плитак али бистар */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Као поток, плитак али бистар ==&lt;br /&gt;
&lt;br /&gt;
Име ми је Душан, из породице Тодоровић, од оца Ивана.&lt;br /&gt;
&lt;br /&gt;
Имам E-mail адресу али боље на [https://discord.com/ дискорду] контактирајте: Duke#1516&lt;br /&gt;
&lt;br /&gt;
Мој Github налог има неке корисне ствари за људе, махом се фокусирам на графику тренутно, додуше у тренутку писања два пројекта нису јавна: github.com/DusanTodorovic5&lt;br /&gt;
&lt;br /&gt;
Мада можете ме контактирати и типа на инстаграму: @dusan.todorovic или LinkedIn-у ако волите да сте формарлни: https://www.linkedin.com/in/dusantodorovic5/&lt;br /&gt;
&lt;br /&gt;
Кратка биографија, с обзиром да је изгледа то популарно овде:&lt;br /&gt;
&lt;br /&gt;
Волим све што воле млади.&lt;br /&gt;
Свирам жичани инструмент са шест жица, у народу познат као [https://sr.wikipedia.org/sr-ec/%D0%93%D0%B8%D1%82%D0%B0%D1%80%D0%B0 Gitara].&lt;br /&gt;
Покушавам да практикујем стоицизам, сходно томе и омиљени цитат ми је : &amp;quot;И да плешеш и да плачеш по киши, киша ће и даље падати&amp;quot;. [https://en.wikipedia.org/wiki/Marcus_Aurelius Марко Аурелије] ❤️&lt;br /&gt;
Омиљено пиће ми је [https://sr.wikipedia.org/sr-ec/%D0%A6%D1%80%D0%BD%D0%B8_%D1%87%D0%B0%D1%98 црни чај], али из оне мале [https://sr.wikipedia.org/sr/Turski_%C4%8Daj#/media/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Rosehiptea.png уске чашице] што користе турци, некако слађи чај буде.&lt;br /&gt;
Најбескориснији таленат који имам је склапање [https://sh.wikipedia.org/wiki/Rubikova_kocka рубикове коцке] за ~11 секунди.&lt;br /&gt;
Волим додуше да возим [https://www.motorcyclespecs.co.za/model/suzu/suzuki_vl125lc_intruder%2001.htm овај мотор] а и друге али мануелне, по могућству крузер или накед.&lt;br /&gt;
Слушам [https://sr.wikipedia.org/sr/Bluz блуз] али волим и [https://sr.wikipedia.org/sr-ec/%D0%90%D0%B7%D1%80%D0%B0_(%D0%BC%D1%83%D0%B7%D0%B8%D1%87%D0%BA%D0%B0_%D0%B3%D1%80%D1%83%D0%BF%D0%B0) Азру].&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%BE%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D0%BA:Duke&amp;diff=3212</id>
		<title>Корисник:Duke</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%BE%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D0%BA:Duke&amp;diff=3212"/>
		<updated>2021-12-02T15:49:30Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Као поток, плитак али бистар */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Као поток, плитак али бистар ==&lt;br /&gt;
&lt;br /&gt;
Име ми је Душан, из породице Тодоровић.&lt;br /&gt;
&lt;br /&gt;
Имам E-mail адресу али боље на [https://discord.com/ дискорду] контактирајте: Duke#1516&lt;br /&gt;
&lt;br /&gt;
Мој Github налог има неке корисне ствари за људе, махом се фокусирам на графику тренутно, додуше у тренутку писања два пројекта нису јавна: github.com/DusanTodorovic5&lt;br /&gt;
&lt;br /&gt;
Мада можете ме контактирати и типа на инстаграму: @dusan.todorovic или LinkedIn-у ако волите да сте формарлни: https://www.linkedin.com/in/dusantodorovic5/&lt;br /&gt;
&lt;br /&gt;
Кратка биографија, с обзиром да је изгледа то популарно овде:&lt;br /&gt;
&lt;br /&gt;
Волим све што воле млади.&lt;br /&gt;
Свирам жичани инструмент са шест жица, у народу познат као [https://sr.wikipedia.org/sr-ec/%D0%93%D0%B8%D1%82%D0%B0%D1%80%D0%B0 Gitara].&lt;br /&gt;
Покушавам да практикујем стоицизам, сходно томе и омиљени цитат ми је : &amp;quot;И да плешеш и да плачеш по киши, киша ће и даље падати&amp;quot;. [https://en.wikipedia.org/wiki/Marcus_Aurelius Марко Аурелије] ❤️&lt;br /&gt;
Омиљено пиће ми је [https://sr.wikipedia.org/sr-ec/%D0%A6%D1%80%D0%BD%D0%B8_%D1%87%D0%B0%D1%98 црни чај], али из оне мале [https://sr.wikipedia.org/sr/Turski_%C4%8Daj#/media/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Rosehiptea.png уске чашице] што користе турци, некако слађи чај буде.&lt;br /&gt;
Најбескориснији таленат који имам је склапање [https://sh.wikipedia.org/wiki/Rubikova_kocka рубикове коцке] за ~11 секунди.&lt;br /&gt;
Волим додуше да возим [https://www.motorcyclespecs.co.za/model/suzu/suzuki_vl125lc_intruder%2001.htm овај мотор] а и друге али мануелне, по могућству крузер или накед.&lt;br /&gt;
Слушам [https://sr.wikipedia.org/sr/Bluz блуз] али волим и [https://sr.wikipedia.org/sr-ec/%D0%90%D0%B7%D1%80%D0%B0_(%D0%BC%D1%83%D0%B7%D0%B8%D1%87%D0%BA%D0%B0_%D0%B3%D1%80%D1%83%D0%BF%D0%B0) Азру].&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=3127</id>
		<title>ПООП</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=3127"/>
		<updated>2021-11-05T19:59:46Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Корисне везе */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Практикум из објектно оријентисаног програмирања&#039;&#039;&#039; (ПООП) је изборни предмет у четвртом семестру.&lt;br /&gt;
&lt;br /&gt;
== Странице ==&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/ Страница предмета]&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/materijali/ Пројектни задаци из претходних година]&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{Материјали&lt;br /&gt;
| vuk = 1Hurdf0yxDWLcFmWV1cQrcqtOWiAT1_iD&lt;br /&gt;
}}&lt;br /&gt;
* [[github:DusanTodorovic5/StockPriceSimulatorCpp|Пример C++ пројекта из 2021. године са GUI-јем]]&lt;br /&gt;
* [[github:DusanTodorovic5/StockSimulator|Пример Java пројекта из 2021. године са GUI-јем]]&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
Модификације пројекта тренутно сакупљене на викију:&lt;br /&gt;
* [[ПООП/Лаб 1 2021|Лаб 2021]]&lt;br /&gt;
* [[ПООП/Јун_2021|Јун 2021]]&lt;br /&gt;
&lt;br /&gt;
== Прављење &#039;&#039;Native&#039;&#039; библиотеке за Java пројекат ==&lt;br /&gt;
* Скините жељени JDK, идеално JDK 1.8.&lt;br /&gt;
* У Java пројекту, направите класу са &#039;&#039;native&#039;&#039; методом као на примеру klase &amp;lt;code&amp;gt;MojaKlasa&amp;lt;/code&amp;gt;:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;public native int saberi(int a, int b);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Покрените &#039;&#039;Command Prompt&#039;&#039; или &#039;&#039;Terminal&#039;&#039; и идите до жељеног директоријума са вашом Java класом.&lt;br /&gt;
* Покрените следећу команду&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; inline&amp;gt;javac -h . MojaKlasa.java&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Добијени &#039;&#039;.h&#039;&#039; фајл прекопирајте у ваш C++ пројекат.&lt;br /&gt;
* Прављење библиотеке:&lt;br /&gt;
** Ако сте на &#039;&#039;Windows&#039;&#039;-у, потребно је направити &#039;&#039;DLL (Dynamic Link Library)&#039;&#039; и то можете урадити помоћу &#039;&#039;Visual Studio&#039;&#039;&lt;br /&gt;
**# Промените &#039;&#039;target platform&#039;&#039; на &#039;&#039;&#039;x64 Release&#039;&#039;&#039;&lt;br /&gt;
**# Потребно је да у &#039;&#039;Project Properties&#039;&#039; изаберете &#039;&#039;Include Directories&#039;&#039; под менијем &#039;&#039;VC++ Directories&#039;&#039; и додате путању до &#039;&#039;Include&#039;&#039; фолдера у инсталираном JDK-у. Такође додати фолдер &#039;&#039;include/win32&#039;&#039;.&lt;br /&gt;
**# Остало је још да додате путању до библиотеке, и у истом менију &#039;&#039;VC++ Directories&#039;&#039; на пољу &#039;&#039;Library Directories&#039;&#039; додајте путању до &#039;&#039;Lib&#039;&#039; фолдера у инсталираном JDK-у.&lt;br /&gt;
** Ако сте на &#039;&#039;Linux&#039;&#039; или &#039;&#039;macOS&#039;&#039; потребно је само имати инсталиран JDK.&lt;br /&gt;
* Ако сте успешно направили жељену билиотеку (DLL или SO), сада је можете додати у окружење у коме радите. Потребно је додати фолдер где се библиотека налази у &#039;&#039;Project Path&#039;&#039; → &#039;&#039;Native Libraries&#039;&#039;.&lt;br /&gt;
* На крају додајте у класу где је &#039;&#039;native&#039;&#039; методa статичко поље које ће учитати ту библиотеку (без екстензије).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MojaKlasa{&lt;br /&gt;
	static {&lt;br /&gt;
		System.loadLibrary(&amp;quot;MojaBiblioteka&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	public native int saberi(int a, int b);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* Пројектни задатак из C++-a (35 поена)&lt;br /&gt;
* Пројектни задатак из Jave (35 поена)&lt;br /&gt;
* Испит који се састоји из надоградње пројектног задатка из Jave (30 поена)&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Четврти семестар]]&lt;br /&gt;
[[Категорија:Изборни предмети]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BD_2018&amp;diff=2723</id>
		<title>ОС1/Јун 2018</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BD_2018&amp;diff=2723"/>
		<updated>2021-07-09T10:57:40Z</updated>

		<summary type="html">&lt;p&gt;Duke: pogresan link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
[http://os.etf.bg.ac.rs/OS1/rokovi/2018/jun/Jun%202018.pdf Zadaci na stranici predmeta.]&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti razliku između pojmova proces i nit (engl. &#039;&#039;thread&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Proces je jedno izvršavanje programa sa jednim adresnim prostorom. Niti (&#039;&#039;thread&#039;&#039;) ili laki  procesi: tok kontrole koji teče uporedo sa drugim tokovima kontrole, ali koji deli virtuelni   adresni prostor sa nekim drugim tokom ili tokovima kontrole.&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem standardnih bibliotečnih operacija &amp;lt;code&amp;gt;setjmp&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;longjmp&amp;lt;/code&amp;gt;, implementirati operaciju &amp;lt;code&amp;gt;wait&amp;lt;/code&amp;gt; na binarnom semaforu koji je realizovan klasom &amp;lt;code&amp;gt;Event&amp;lt;/code&amp;gt; poput one u školskom jezgru.&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem sistemskih poziva &amp;lt;code&amp;gt;fork&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt;, napisati funkciju run koja kreira proces nad programom u fajlu sa zadatom putanjom i vraća negativnu vrednost u slučaju greške, a pid kreiranog procesa u slučaju uspeha pri &amp;lt;code&amp;gt;fork&amp;lt;/code&amp;gt;. Ukoliko ne uspe &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt;, kreirani proces-dete treba ugasiti.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, int argv[]){&lt;br /&gt;
    if (argc &amp;lt; 2) return -1;&lt;br /&gt;
    pid_t pid = fork();&lt;br /&gt;
    if (pid &amp;lt; 0){&lt;br /&gt;
        return -2;&lt;br /&gt;
    }&lt;br /&gt;
    if (pid == 0){&lt;br /&gt;
        int t = exec(argv[1]);&lt;br /&gt;
        if (t &amp;lt; 0){&lt;br /&gt;
            exit(-3);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dva procesa pristupaju kritičnoj sekciji. Dat je presudokod jednog od njih, koji bi trebalo da obezbedi međusobno isključenje uposlenim čekanjem (kod drugog procesa izgleda analogno). Da li ovo rešenje obezbeđuje međusobno isključenje? Da li ima neki problem (ako ima, koji)?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;milo&amp;quot;&amp;gt;&lt;br /&gt;
process P1&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        flag1 := true;&lt;br /&gt;
        while flag2 = true do null end;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag1 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Ovo rešenje ne valja jer se dešava &#039;&#039;livelock&#039;&#039; odnosno oba procesa se međusobno zaključaju i ni jedan ni drugi se neće dalje izvršavati. To se desi kada proces P1 postavi &amp;lt;code&amp;gt;flag1&amp;lt;/code&amp;gt; na &#039;&#039;true&#039;&#039; a zatim P2 postavi &amp;lt;code&amp;gt;flag2&amp;lt;/code&amp;gt; na &#039;&#039;true&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za koju od ove dve tehnike, dinamičko učitavanje (&#039;&#039;dynamic loading&#039;&#039;) ili preklopi (&#039;&#039;overlays&#039;&#039;), se može očekivati duže izvršavanje istog programa u najgorem slučaju? Precizno obrazložiti.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Duže vreme izvršavanja u najgorem slučaju se može očekivati kod preklopa jer će program stalno učitavati iz memorije. Dok će dinamičko učitavanje zauzeti više memorije, svaki potreban modul će učitati po jednom dok preklopi će se stalno učitavati iznova i iznova.&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U nekom sistemu primenjuje se worst-fit algoritam kontinualne alokacije memorije. Inicijalno je prostor veličine 256KB potpuno slobodan za alokaciju korisničkih procesa. Potom su različiti procesi zadavali sledeće zahteve (slovna oznaka označava proces koji je postavio zahtev, brojna oznaka označava veličinu alociranog prostora u KB, a minus označava gašenje procesa i oslobađanje njegove memorije): &lt;br /&gt;
A64, B16, C128, D32, A-, E8, F32, B-&lt;br /&gt;
Odgovoriti na sledeća pitanja koja se odnose na stanje memorije nakon ove sekvence zahteva: &lt;br /&gt;
*Koliko je ukupno slobodnih fragmenata?&lt;br /&gt;
*Kolika je veličina najmanjeg slobodnog fragmenta?&lt;br /&gt;
*Kolika je veličina najvećeg slobodnog fragmenta?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
#A64 -&amp;gt; A(64), Free(192)&lt;br /&gt;
#B16 -&amp;gt; A(64), B(16), Free(176)&lt;br /&gt;
#C128 -&amp;gt; A(64), B(16), C(128), Free(48)&lt;br /&gt;
#D32 -&amp;gt; A(64), B(16), C(128), D(32), Free(16)&lt;br /&gt;
#A- -&amp;gt; Free(64), B(16), C(128), D(32), Free(16)&lt;br /&gt;
#E8 -&amp;gt; E(8), Free(56), B(16), C(128), D(32), Free(16)&lt;br /&gt;
#F32 -&amp;gt; E(8), F(32), Free(24), B(16), C(128), D(32), Free(16)&lt;br /&gt;
#B- -&amp;gt; E(8), F(32), Free(42), C(128), D(32), Free(16)&lt;br /&gt;
*Koliko je ukupno slobodnih fragmenata? 2&lt;br /&gt;
*Kolika je veličina najmanjeg slobodnog fragmenta? 16KB&lt;br /&gt;
*Kolika je veličina najvećeg slobodnog fragmenta? 42KB&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Prilikom preslikavanja virtuelne adrese, procesor je generisao izuzetak zbog pokušaja upisa na tu adresu koji je u deskriptoru stranice označen kao zabranjen. Operativni sistem ipak neće ugasiti taj proces. Precizno objasniti zašto.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Neće ugasiti program jer se zapravo radi o tehnici &#039;&#039;copy-on-write&#039;&#039; odnosno kopiranja na upis. U ovoj tehnici, &#039;&#039;MMU&#039;&#039; vidi tu memoriju kao zabranjenu za upis. Prilikom generisanja greške, OS proverava da li je zabranjena, i kako kod njega nije, to znači da se radi o tehnici kopiranja na upis.&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Navesti tri usluge vezane za realno vreme koje operativni sistem može da nudi i predložiti i kratko objasniti funkcije – sistemske pozive za te usluge.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
#Informacija o tekućem realnom vremenu:&lt;br /&gt;
#:&amp;lt;code&amp;gt;time_t time (time_t* tloc);&amp;lt;/code&amp;gt;&lt;br /&gt;
#:Vraća broj sekundi koje su protekle od 1. 1. 1970. u 0 časova postoje i bibliotečne funkcije u &amp;lt;time.h&amp;gt; koje vraćaju “kalendarsko” vreme, rastavljeno na datum i sat itd, a oslanjaju se na ovaj sistemski poziv: &#039;&#039;asctime&#039;&#039;, &#039;&#039;ctime&#039;&#039;, &#039;&#039;gmtime&#039;&#039;, &#039;&#039;localtime&#039;&#039;&lt;br /&gt;
#Suspenzija pozivajućeg procesa (“uspavljivanje”) za zadato vreme&lt;br /&gt;
#:&amp;lt;code&amp;gt;unsigned int sleep (unsigned int seconds);&amp;lt;/code&amp;gt;&lt;br /&gt;
#Čekanje na događaje, uslove ili na sinhronizacione primitive, ali vremenski ograničeno (tzv. tajmaout kontrole, timeout); ako se proces ne deblokira u zadatom vremenu, biće deblokiran zbog isteka vremenske kontrole; npr. za semafore:&lt;br /&gt;
#:&amp;lt;code&amp;gt;int sem_timedwait (sem_t *sem, const struct timespec *abs_timeout);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ako je tekući direktorijum nekog procesa &#039;&#039;/a/b/c&#039;&#039;, koja je apsolutna putanja do fajla koji taj proces otvara davanjem putanje &#039;&#039;d/../../e/f.txt&#039;&#039;?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Rešenje je &#039;&#039;a/b/e/f.txt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Fajl sistem primenjuje ulančanu alokaciju, s tim da se i slobodni blokovi ulančavaju u listu. U strukturi FCB polje &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; sadrži broj prvog bloka sa sadržajem fajla, a polje &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; veličinu sadržaja. Funkcija jezgra &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt; prima kao argument broj prvog bloka u lancu blokova koje treba proglasiti slobodnim. Napisati funkciju jezgra &amp;lt;code&amp;gt;truncate&amp;lt;/code&amp;gt; koja briše sadržaj fajla na čiji &amp;lt;code&amp;gt;FCB&amp;lt;/code&amp;gt; ukazuje argument.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BD_2018&amp;diff=2722</id>
		<title>ОС1/Јун 2018</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BD_2018&amp;diff=2722"/>
		<updated>2021-07-09T10:54:48Z</updated>

		<summary type="html">&lt;p&gt;Duke: jos jedan rok&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
[http://os.etf.bg.ac.rs/OS1/rokovi/2020/avgust/Avg%202020.pdf Zadaci na stranici predmeta.]&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti razliku između pojmova proces i nit (engl. &#039;&#039;thread&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Proces je jedno izvršavanje programa sa jednim adresnim prostorom. Niti (&#039;&#039;thread&#039;&#039;) ili laki  procesi: tok kontrole koji teče uporedo sa drugim tokovima kontrole, ali koji deli virtuelni   adresni prostor sa nekim drugim tokom ili tokovima kontrole.&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem standardnih bibliotečnih operacija &amp;lt;code&amp;gt;setjmp&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;longjmp&amp;lt;/code&amp;gt;, implementirati operaciju &amp;lt;code&amp;gt;wait&amp;lt;/code&amp;gt; na binarnom semaforu koji je realizovan klasom &amp;lt;code&amp;gt;Event&amp;lt;/code&amp;gt; poput one u školskom jezgru.&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem sistemskih poziva &amp;lt;code&amp;gt;fork&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt;, napisati funkciju run koja kreira proces nad programom u fajlu sa zadatom putanjom i vraća negativnu vrednost u slučaju greške, a pid kreiranog procesa u slučaju uspeha pri &amp;lt;code&amp;gt;fork&amp;lt;/code&amp;gt;. Ukoliko ne uspe &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt;, kreirani proces-dete treba ugasiti.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, int argv[]){&lt;br /&gt;
    if (argc &amp;lt; 2) return -1;&lt;br /&gt;
    pid_t pid = fork();&lt;br /&gt;
    if (pid &amp;lt; 0){&lt;br /&gt;
        return -2;&lt;br /&gt;
    }&lt;br /&gt;
    if (pid == 0){&lt;br /&gt;
        int t = exec(argv[1]);&lt;br /&gt;
        if (t &amp;lt; 0){&lt;br /&gt;
            exit(-3);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dva procesa pristupaju kritičnoj sekciji. Dat je presudokod jednog od njih, koji bi trebalo da obezbedi međusobno isključenje uposlenim čekanjem (kod drugog procesa izgleda analogno). Da li ovo rešenje obezbeđuje međusobno isključenje? Da li ima neki problem (ako ima, koji)?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;milo&amp;quot;&amp;gt;&lt;br /&gt;
process P1&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        flag1 := true;&lt;br /&gt;
        while flag2 = true do null end;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag1 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Ovo rešenje ne valja jer se dešava &#039;&#039;livelock&#039;&#039; odnosno oba procesa se međusobno zaključaju i ni jedan ni drugi se neće dalje izvršavati. To se desi kada proces P1 postavi &amp;lt;code&amp;gt;flag1&amp;lt;/code&amp;gt; na &#039;&#039;true&#039;&#039; a zatim P2 postavi &amp;lt;code&amp;gt;flag2&amp;lt;/code&amp;gt; na &#039;&#039;true&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za koju od ove dve tehnike, dinamičko učitavanje (&#039;&#039;dynamic loading&#039;&#039;) ili preklopi (&#039;&#039;overlays&#039;&#039;), se može očekivati duže izvršavanje istog programa u najgorem slučaju? Precizno obrazložiti.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Duže vreme izvršavanja u najgorem slučaju se može očekivati kod preklopa jer će program stalno učitavati iz memorije. Dok će dinamičko učitavanje zauzeti više memorije, svaki potreban modul će učitati po jednom dok preklopi će se stalno učitavati iznova i iznova.&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U nekom sistemu primenjuje se worst-fit algoritam kontinualne alokacije memorije. Inicijalno je prostor veličine 256KB potpuno slobodan za alokaciju korisničkih procesa. Potom su različiti procesi zadavali sledeće zahteve (slovna oznaka označava proces koji je postavio zahtev, brojna oznaka označava veličinu alociranog prostora u KB, a minus označava gašenje procesa i oslobađanje njegove memorije): &lt;br /&gt;
A64, B16, C128, D32, A-, E8, F32, B-&lt;br /&gt;
Odgovoriti na sledeća pitanja koja se odnose na stanje memorije nakon ove sekvence zahteva: &lt;br /&gt;
*Koliko je ukupno slobodnih fragmenata?&lt;br /&gt;
*Kolika je veličina najmanjeg slobodnog fragmenta?&lt;br /&gt;
*Kolika je veličina najvećeg slobodnog fragmenta?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
#A64 -&amp;gt; A(64), Free(192)&lt;br /&gt;
#B16 -&amp;gt; A(64), B(16), Free(176)&lt;br /&gt;
#C128 -&amp;gt; A(64), B(16), C(128), Free(48)&lt;br /&gt;
#D32 -&amp;gt; A(64), B(16), C(128), D(32), Free(16)&lt;br /&gt;
#A- -&amp;gt; Free(64), B(16), C(128), D(32), Free(16)&lt;br /&gt;
#E8 -&amp;gt; E(8), Free(56), B(16), C(128), D(32), Free(16)&lt;br /&gt;
#F32 -&amp;gt; E(8), F(32), Free(24), B(16), C(128), D(32), Free(16)&lt;br /&gt;
#B- -&amp;gt; E(8), F(32), Free(42), C(128), D(32), Free(16)&lt;br /&gt;
*Koliko je ukupno slobodnih fragmenata? 2&lt;br /&gt;
*Kolika je veličina najmanjeg slobodnog fragmenta? 16KB&lt;br /&gt;
*Kolika je veličina najvećeg slobodnog fragmenta? 42KB&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Prilikom preslikavanja virtuelne adrese, procesor je generisao izuzetak zbog pokušaja upisa na tu adresu koji je u deskriptoru stranice označen kao zabranjen. Operativni sistem ipak neće ugasiti taj proces. Precizno objasniti zašto.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Neće ugasiti program jer se zapravo radi o tehnici &#039;&#039;copy-on-write&#039;&#039; odnosno kopiranja na upis. U ovoj tehnici, &#039;&#039;MMU&#039;&#039; vidi tu memoriju kao zabranjenu za upis. Prilikom generisanja greške, OS proverava da li je zabranjena, i kako kod njega nije, to znači da se radi o tehnici kopiranja na upis.&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Navesti tri usluge vezane za realno vreme koje operativni sistem može da nudi i predložiti i kratko objasniti funkcije – sistemske pozive za te usluge.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
#Informacija o tekućem realnom vremenu:&lt;br /&gt;
#:&amp;lt;code&amp;gt;time_t time (time_t* tloc);&amp;lt;/code&amp;gt;&lt;br /&gt;
#:Vraća broj sekundi koje su protekle od 1. 1. 1970. u 0 časova postoje i bibliotečne funkcije u &amp;lt;time.h&amp;gt; koje vraćaju “kalendarsko” vreme, rastavljeno na datum i sat itd, a oslanjaju se na ovaj sistemski poziv: &#039;&#039;asctime&#039;&#039;, &#039;&#039;ctime&#039;&#039;, &#039;&#039;gmtime&#039;&#039;, &#039;&#039;localtime&#039;&#039;&lt;br /&gt;
#Suspenzija pozivajućeg procesa (“uspavljivanje”) za zadato vreme&lt;br /&gt;
#:&amp;lt;code&amp;gt;unsigned int sleep (unsigned int seconds);&amp;lt;/code&amp;gt;&lt;br /&gt;
#Čekanje na događaje, uslove ili na sinhronizacione primitive, ali vremenski ograničeno (tzv. tajmaout kontrole, timeout); ako se proces ne deblokira u zadatom vremenu, biće deblokiran zbog isteka vremenske kontrole; npr. za semafore:&lt;br /&gt;
#:&amp;lt;code&amp;gt;int sem_timedwait (sem_t *sem, const struct timespec *abs_timeout);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ako je tekući direktorijum nekog procesa &#039;&#039;/a/b/c&#039;&#039;, koja je apsolutna putanja do fajla koji taj proces otvara davanjem putanje &#039;&#039;d/../../e/f.txt&#039;&#039;?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Rešenje je &#039;&#039;a/b/e/f.txt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Fajl sistem primenjuje ulančanu alokaciju, s tim da se i slobodni blokovi ulančavaju u listu. U strukturi FCB polje &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; sadrži broj prvog bloka sa sadržajem fajla, a polje &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; veličinu sadržaja. Funkcija jezgra &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt; prima kao argument broj prvog bloka u lancu blokova koje treba proglasiti slobodnim. Napisati funkciju jezgra &amp;lt;code&amp;gt;truncate&amp;lt;/code&amp;gt; koja briše sadržaj fajla na čiji &amp;lt;code&amp;gt;FCB&amp;lt;/code&amp;gt; ukazuje argument.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>Duke</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%BB_2021&amp;diff=2663</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%BB_2021&amp;diff=2663"/>
		<updated>2021-07-08T09:16:08Z</updated>

		<summary type="html">&lt;p&gt;Duke: nisam udario enter izmedju a i b na prvi&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;
а) Нацртати структуру контролера улазно/излазне периферије са директним приступом меморији. &lt;br /&gt;
б) Објаснити функцију свих делова контролера. &lt;br /&gt;
в) Објаснити којим битовима и у којим регистрима се задају могући режими рада контролера и добијају информације како се одвија пренос података.&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Контролер излазне периферије и излазна периферија за међусобно повезивање користе паралелни интерфејс који се састоји од линија података, једне статусне линије и једне управљачке линије. Статусном линијом излазна периферија даје индикацију контролеру периферије да ли је спремна да прими податак који је доступан на линијама података, док контролер периферије управљачком линијом обезбеђује читање податка са линија података у свој интерни регистар. Навести по ком редоследу се наведене линије користе за синхронизацију и слање података из контролера периферије на периферију. Одговор дати табеларно. Назначити која је почетна вредност на овим линијама.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Редослед&lt;br /&gt;
| Линија(статусн/управљачка/подаци)&lt;br /&gt;
| Вредност&lt;br /&gt;
| Значење&lt;br /&gt;
| Ко поставља&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Hаписати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој С функцији која надовезује низ &amp;lt;code&amp;gt;srс&amp;lt;/code&amp;gt; на крај низа &amp;lt;code&amp;gt;dest&amp;lt;/code&amp;gt;: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt; char *strcat (char *dest, const char *src);&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
Функција као резултат враћа показивач на резултујући низ &amp;lt;code&amp;gt; dest&amp;lt;/code&amp;gt; . Претпоставити да је низ &amp;lt;code&amp;gt;dest&amp;lt;/code&amp;gt;  довољне величине да се у њега може сместити резултујући низ, као и да нема преклапана између &amp;lt;code&amp;gt;srс&amp;lt;/code&amp;gt;  и &amp;lt;code&amp;gt;dest&amp;lt;/code&amp;gt;. Ha располагању је процесор код кога аритметичке, логичке и померачке инструкције имају формат: ОC reg, reg, reg/imm где је ОС код операције, одредишни операнд и морају бити у регистру (rеg), док други може бити или у регистру или дат непоcредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дат одредишни регистар (reg), a другим извориште. Инструкција STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), а другим одредиште. На располагану стоји 8 регистара отпте намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној jединици. На располагању стоје и сложене инструкције.&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
У рачунврском систему се налази једноадресни процесор, меморија и периферије РER0, и PER1. Периферији РER0 је придружен DMA0 контролер. Све компоненте рачунара су повезане системском магистралом са 16 битном адресном и 16 битном магистралом података. Адресирање jе на нивоу 16 битних речн. Сви подаци и адресе су ширине 16 бита. Узети да је тип података &#039;&#039;&#039;іnt&#039;&#039;&#039; дужине 16 бита. Улазно-излазни адресни простор и меморијски адресни простор су преклопљени. Адресе релевантних регистара периферија РERO и DMA0 контролера су:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| PER0_CONTROL || F000h || DMA0_CONTROL || F003h || PER1_CONTROL || F010h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_STATUS  || F001h || DMA0_STATUS  || F004h || PER1_STATUS  || F011h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_DATA    || F002h || DMA0_DATA    || F005h || PER1_DATA    || F012h&lt;br /&gt;
|-&lt;br /&gt;
|              ||       || DMA0_ADDR    || F006h ||              || &lt;br /&gt;
|-&lt;br /&gt;
|              ||       || DMA0_CNT     || F007h ||              || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
У управљачким регистрима бит 0 је &#039;&#039;Start&#039;&#039; којим се дозволава почетак операције, бит 1 одређyjy тип преноса података (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;суcle stealing&#039;&#039;)). Битови од 4 до 7 управљачког регистра DMА0 контролера сaдрже вредност за колико се увећава адресни регистар након сваког пренетог податка. У статусним регистрима бит 0 је &#039;&#039;Ready&#039;&#039; који сигнализира спремност контродера периферије.&lt;br /&gt;
&lt;br /&gt;
Haписати главни програм, одговарајући потпрограм и прекидне рутине којима се обавља следећи пренос.&lt;br /&gt;
&lt;br /&gt;
Са периферија PER0 и РER1 упоредо се шаљу елементи низа. Низ се смешта у меморију почев од адресе 1000h н има 100h слемената. Периферија РER0 шаље елементе које треба смештати на места у низу са парним индексом, а елементе са РER1 треба смештати на места са непарним индексом.&lt;br /&gt;
&lt;br /&gt;
Након пријема низа, периферији која је прва завршила слање шаље се комплетан неопадајуће сортирани низ. За сортирање низа потребно је имплементирати и на одговарајућем месту у програму позвати функцију &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;void sort (ant* arrAddr, int 1ength)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Где је &amp;lt;code&amp;gt;аrraddr&amp;lt;/code&amp;gt; адреса низа, а &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; дужина низа. Не треба водити рачуна који алгоритам се користи за сортирање.&lt;br /&gt;
&lt;br /&gt;
Примане елемента са периферије PER0 реализовати коришћенем DMА0 контролера у блоковском режиму рада, a евентуално слање сортираног низа коришћењем DMA0 контролера у режиму циклус по циклус. Примање елемената са РER1 и евентуално слање сортираног низа на PER1 pеализовати коришћенем механизма прекида.&lt;br /&gt;
&lt;br /&gt;
Сматрати да су доступни регистри XR, ВР и SP приликом писања потпрограма, као и да је дозвољено регистарско индиректно адресираье са регистром XR. Обратити пажњу да потпрограм не сме да користи глобалне промењиве, вeћ cамо параметре потпрограма и локане промењеве. Позивалац потпрограма је дужан да уклони параметре са стека. Процесор не поседује регистре oпште намене, као ни регистар IMR. Стек расте од виших ка нижим локацијама, a SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове назнве треба писати описно и семантички исправно.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>Duke</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%BB_2021&amp;diff=2662</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%BB_2021&amp;diff=2662"/>
		<updated>2021-07-08T09:11:56Z</updated>

		<summary type="html">&lt;p&gt;Duke: &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;
а) Нацртати структуру контролера улазно/излазне периферије са директним приступом меморији. &lt;br /&gt;
6) Објаснити функцију свих делова контролера. &lt;br /&gt;
в) Објаснити којим битовима и у којим регистрима се задају могући режими рада контролера и добијају информације како се одвија пренос података.&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Контролер излазне периферије и излазна периферија за међусобно повезивање користе паралелни интерфејс који се састоји од линија података, једне статусне линије и једне управљачке линије. Статусном линијом излазна периферија даје индикацију контролеру периферије да ли је спремна да прими податак који је доступан на линијама података, док контролер периферије управљачком линијом обезбеђује читање податка са линија података у свој интерни регистар. Навести по ком редоследу се наведене линије користе за синхронизацију и слање података из контролера периферије на периферију. Одговор дати табеларно. Назначити која је почетна вредност на овим линијама.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Редослед&lt;br /&gt;
| Линија(статусн/управљачка/подаци)&lt;br /&gt;
| Вредност&lt;br /&gt;
| Значење&lt;br /&gt;
| Ко поставља&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Hаписати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој С функцији која надовезује низ &amp;lt;code&amp;gt;srс&amp;lt;/code&amp;gt; на крај низа &amp;lt;code&amp;gt;dest&amp;lt;/code&amp;gt;: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt; char *strcat (char *dest, const char *src);&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
Функција као резултат враћа показивач на резултујући низ &amp;lt;code&amp;gt; dest&amp;lt;/code&amp;gt; . Претпоставити да је низ &amp;lt;code&amp;gt;dest&amp;lt;/code&amp;gt;  довољне величине да се у њега може сместити резултујући низ, као и да нема преклапана између &amp;lt;code&amp;gt;srс&amp;lt;/code&amp;gt;  и &amp;lt;code&amp;gt;dest&amp;lt;/code&amp;gt;. Ha располагању је процесор код кога аритметичке, логичке и померачке инструкције имају формат: ОC reg, reg, reg/imm где је ОС код операције, одредишни операнд и морају бити у регистру (rеg), док други може бити или у регистру или дат непоcредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дат одредишни регистар (reg), a другим извориште. Инструкција STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), а другим одредиште. На располагану стоји 8 регистара отпте намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној jединици. На располагању стоје и сложене инструкције.&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
У рачунврском систему се налази једноадресни процесор, меморија и периферије РER0, и PER1. Периферији РER0 је придружен DMA0 контролер. Све компоненте рачунара су повезане системском магистралом са 16 битном адресном и 16 битном магистралом података. Адресирање jе на нивоу 16 битних речн. Сви подаци и адресе су ширине 16 бита. Узети да је тип података &#039;&#039;&#039;іnt&#039;&#039;&#039; дужине 16 бита. Улазно-излазни адресни простор и меморијски адресни простор су преклопљени. Адресе релевантних регистара периферија РERO и DMA0 контролера су:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| PER0_CONTROL || F000h || DMA0_CONTROL || F003h || PER1_CONTROL || F010h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_STATUS  || F001h || DMA0_STATUS  || F004h || PER1_STATUS  || F011h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_DATA    || F002h || DMA0_DATA    || F005h || PER1_DATA    || F012h&lt;br /&gt;
|-&lt;br /&gt;
|              ||       || DMA0_ADDR    || F006h ||              || &lt;br /&gt;
|-&lt;br /&gt;
|              ||       || DMA0_CNT     || F007h ||              || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
У управљачким регистрима бит 0 је &#039;&#039;Start&#039;&#039; којим се дозволава почетак операције, бит 1 одређyjy тип преноса података (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;суcle stealing&#039;&#039;)). Битови од 4 до 7 управљачког регистра DMА0 контролера сaдрже вредност за колико се увећава адресни регистар након сваког пренетог податка. У статусним регистрима бит 0 је &#039;&#039;Ready&#039;&#039; који сигнализира спремност контродера периферије.&lt;br /&gt;
&lt;br /&gt;
Haписати главни програм, одговарајући потпрограм и прекидне рутине којима се обавља следећи пренос.&lt;br /&gt;
&lt;br /&gt;
Са периферија PER0 и РER1 упоредо се шаљу елементи низа. Низ се смешта у меморију почев од адресе 1000h н има 100h слемената. Периферија РER0 шаље елементе које треба смештати на места у низу са парним индексом, а елементе са РER1 треба смештати на места са непарним индексом.&lt;br /&gt;
&lt;br /&gt;
Након пријема низа, периферији која је прва завршила слање шаље се комплетан неопадајуће сортирани низ. За сортирање низа потребно је имплементирати и на одговарајућем месту у програму позвати функцију &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;void sort (ant* arrAddr, int 1ength)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Где је &amp;lt;code&amp;gt;аrraddr&amp;lt;/code&amp;gt; адреса низа, а &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; дужина низа. Не треба водити рачуна који алгоритам се користи за сортирање.&lt;br /&gt;
&lt;br /&gt;
Примане елемента са периферије PER0 реализовати коришћенем DMА0 контролера у блоковском режиму рада, a евентуално слање сортираног низа коришћењем DMA0 контролера у режиму циклус по циклус. Примање елемената са РER1 и евентуално слање сортираног низа на PER1 pеализовати коришћенем механизма прекида.&lt;br /&gt;
&lt;br /&gt;
Сматрати да су доступни регистри XR, ВР и SP приликом писања потпрограма, као и да је дозвољено регистарско индиректно адресираье са регистром XR. Обратити пажњу да потпрограм не сме да користи глобалне промењиве, вeћ cамо параметре потпрограма и локане промењеве. Позивалац потпрограма је дужан да уклони параметре са стека. Процесор не поседује регистре oпште намене, као ни регистар IMR. Стек расте од виших ка нижим локацијама, a SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове назнве треба писати описно и семантички исправно.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>Duke</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%BB_2021&amp;diff=2661</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%BB_2021&amp;diff=2661"/>
		<updated>2021-07-08T09:10:59Z</updated>

		<summary type="html">&lt;p&gt;Duke: ар јул 2021&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;
6) Објаснити функцију свих делова контролера. &lt;br /&gt;
в) Објаснити којим битовима и у којим регистрима се задају могући режими рада контролера и добијају информације како се одвија пренос података.&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Контролер излазне периферије и излазна периферија за међусобно повезивање користе паралелни интерфејс који се састоји од линија података, једне статусне линије и једне управљачке линије. Статусном линијом излазна периферија даје индикацију контролеру периферије да ли је спремна да прими податак који је доступан на линијама података, док контролер периферије управљачком линијом обезбеђује читање податка са линија података у свој интерни регистар. Навести по ком редоследу се наведене линије користе за синхронизацију и слање података из контролера периферије на периферију. Одговор дати табеларно. Назначити која је почетна вредност на овим линијама.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Редослед&lt;br /&gt;
| Линија(статусн/управљачка/подаци)&lt;br /&gt;
| Вредност&lt;br /&gt;
| Значење&lt;br /&gt;
| Ко поставља&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Hаписати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој С функцији која надовезује низ &amp;lt;code&amp;gt;srс&amp;lt;/code&amp;gt; на крај низа &amp;lt;code&amp;gt;dest&amp;lt;/code&amp;gt;: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt; char *strcat (char *dest, const char *src);&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
Функција као резултат враћа показивач на резултујући низ &amp;lt;code&amp;gt; dest&amp;lt;/code&amp;gt; . Претпоставити да је низ &amp;lt;code&amp;gt;dest&amp;lt;/code&amp;gt;  довољне величине да се у њега може сместити резултујући низ, као и да нема преклапана између &amp;lt;code&amp;gt;srс&amp;lt;/code&amp;gt;  и &amp;lt;code&amp;gt;dest&amp;lt;/code&amp;gt;. Ha располагању је процесор код кога аритметичке, логичке и померачке инструкције имају формат: ОC reg, reg, reg/imm где је ОС код операције, одредишни операнд и морају бити у регистру (rеg), док други може бити или у регистру или дат непоcредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дат одредишни регистар (reg), a другим извориште. Инструкција STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), а другим одредиште. На располагану стоји 8 регистара отпте намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној jединици. На располагању стоје и сложене инструкције.&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
У рачунврском систему се налази једноадресни процесор, меморија и периферије РER0, и PER1. Периферији РER0 је придружен DMA0 контролер. Све компоненте рачунара су повезане системском магистралом са 16 битном адресном и 16 битном магистралом података. Адресирање jе на нивоу 16 битних речн. Сви подаци и адресе су ширине 16 бита. Узети да је тип података &#039;&#039;&#039;іnt&#039;&#039;&#039; дужине 16 бита. Улазно-излазни адресни простор и меморијски адресни простор су преклопљени. Адресе релевантних регистара периферија РERO и DMA0 контролера су:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| PER0_CONTROL || F000h || DMA0_CONTROL || F003h || PER1_CONTROL || F010h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_STATUS  || F001h || DMA0_STATUS  || F004h || PER1_STATUS  || F011h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_DATA    || F002h || DMA0_DATA    || F005h || PER1_DATA    || F012h&lt;br /&gt;
|-&lt;br /&gt;
|              ||       || DMA0_ADDR    || F006h ||              || &lt;br /&gt;
|-&lt;br /&gt;
|              ||       || DMA0_CNT     || F007h ||              || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
У управљачким регистрима бит 0 је &#039;&#039;Start&#039;&#039; којим се дозволава почетак операције, бит 1 одређyjy тип преноса података (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;суcle stealing&#039;&#039;)). Битови од 4 до 7 управљачког регистра DMА0 контролера сaдрже вредност за колико се увећава адресни регистар након сваког пренетог податка. У статусним регистрима бит 0 је &#039;&#039;Ready&#039;&#039; који сигнализира спремност контродера периферије.&lt;br /&gt;
&lt;br /&gt;
Haписати главни програм, одговарајући потпрограм и прекидне рутине којима се обавља следећи пренос.&lt;br /&gt;
&lt;br /&gt;
Са периферија PER0 и РER1 упоредо се шаљу елементи низа. Низ се смешта у меморију почев од адресе 1000h н има 100h слемената. Периферија РER0 шаље елементе које треба смештати на места у низу са парним индексом, а елементе са РER1 треба смештати на места са непарним индексом.&lt;br /&gt;
&lt;br /&gt;
Након пријема низа, периферији која је прва завршила слање шаље се комплетан неопадајуће сортирани низ. За сортирање низа потребно је имплементирати и на одговарајућем месту у програму позвати функцију &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;void sort (ant* arrAddr, int 1ength)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Где је &amp;lt;code&amp;gt;аrraddr&amp;lt;/code&amp;gt; адреса низа, а &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; дужина низа. Не треба водити рачуна који алгоритам се користи за сортирање.&lt;br /&gt;
&lt;br /&gt;
Примане елемента са периферије PER0 реализовати коришћенем DMА0 контролера у блоковском режиму рада, a евентуално слање сортираног низа коришћењем DMA0 контролера у режиму циклус по циклус. Примање елемената са РER1 и евентуално слање сортираног низа на PER1 pеализовати коришћенем механизма прекида.&lt;br /&gt;
&lt;br /&gt;
Сматрати да су доступни регистри XR, ВР и SP приликом писања потпрограма, као и да је дозвољено регистарско индиректно адресираье са регистром XR. Обратити пажњу да потпрограм не сме да користи глобалне промењиве, вeћ cамо параметре потпрограма и локане промењеве. Позивалац потпрограма је дужан да уклони параметре са стека. Процесор не поседује регистре oпште намене, као ни регистар IMR. Стек расте од виших ка нижим локацијама, a SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове назнве треба писати описно и семантички исправно.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BB_2019&amp;diff=2652</id>
		<title>ОС1/Јул 2019</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BB_2019&amp;diff=2652"/>
		<updated>2021-07-07T12:31:31Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
[http://os.etf.bg.ac.rs/OS1/rokovi/2019/jul/Jul%202019.pdf Zadaci na stranici predmeta.]&lt;br /&gt;
== 1. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta se smatra multiprocesorskim računarskim sistemom? Šta je simetričan multiprocesorski sistem?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Multiprocesorski sistem je sistem sa više procesora koji imaju zajedničku memoriju. Simetričan multiprocesorski sistem znači da su svi procesori opšte namene, jednaki i imaju isto vreme pristupa operativnoj memoriji. Asimetrični multiprocesorski sistem ima i specijalizovane procesore ili procesore sa različitim vremenom pristupa memoriji.&lt;br /&gt;
&lt;br /&gt;
== 2. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neki procesor prilikom obrade prekida prebacuje svoje izvršavanje na korišćenje posebnog pokazivača steka koji se koristi u privilegovanom režimu rada, i pritom čuva sve registre na steku na čiji vrh ukazuje ovaj pokazivač. Operativni sistem na ovom procesoru koristi samo jedan sistemski stek za izvršavanje celog kernel koda. Da li se kontekst izvršavanja procesa (kontekst procesora) može čuvati na ovom steku?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem niti u školskom jezgru napisati funkciju sum koja kreira nit koja će sabrati sve elemente zadatog niza zadate dužine i rezultat upisati na traženo mesto; u slučaju greške ove funkcije vraćaju negativnu vrednost.&lt;br /&gt;
&amp;lt;code&amp;gt;int sum (int array[], size_t size, long* result);&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
class SumThread{&lt;br /&gt;
    public:&lt;br /&gt;
        SumThread(int* arr, size_t _size, long* res): array(arr), size(_size), result(res) {}&lt;br /&gt;
        void run(){&lt;br /&gt;
            long res = 0;&lt;br /&gt;
            for (size_t i = 0;i&amp;lt;size;i++){&lt;br /&gt;
                res += array[i];&lt;br /&gt;
            }&lt;br /&gt;
            *result = res;&lt;br /&gt;
        }&lt;br /&gt;
    private:&lt;br /&gt;
        int* array;&lt;br /&gt;
        size_t size;&lt;br /&gt;
        long* result;&lt;br /&gt;
};&lt;br /&gt;
int sum (int array[], size_t size, long* result){&lt;br /&gt;
    if (result == nullptr) return -1;&lt;br /&gt;
    SumThread* st = new SumThread(array,size,result);&lt;br /&gt;
    st-&amp;gt;start();&lt;br /&gt;
&lt;br /&gt;
    st-&amp;gt;waitToComplete();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Napisati pseudokod koji obezbeđuje međusobno isključenje pristupa kritičnoj sekciji dva procesa pomoću Petersonovog algoritma.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;milo&amp;quot;&amp;gt;&lt;br /&gt;
shared var turn : integer := 1, flag1, flag2 : boolean := false;&lt;br /&gt;
process P1&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        flag1 := true; turn := 2;&lt;br /&gt;
        while flag2 and turn = 2 do null;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag1 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P1;&lt;br /&gt;
process P2&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        flag2 := true; turn := 1;&lt;br /&gt;
        while flag1 and turn = 1 do null;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag2 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Zbog čega operativni sistem ne radi zamenu (swapping) procesa njegovim izbacivanjem iz memorije prilikom svake promene konteksta, kada procesu koji je izgubio procesor memorija svakako nije potrebna?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Zato što je pristup hard disku vrlo spor te će takva implementacija znatno uticati na performanse. Ovo se primenjivalo na &#039;&#039;Windows 3.1&#039;&#039;, bilo je vrlo sporo. Danas, swapping se koristi kada nema dovoljno mesta u operativnoj memoriji.&lt;br /&gt;
&lt;br /&gt;
== 6. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je kompakcija kod kontinualne alokacije memorije?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Kod kontinualne alokacije može doći do eksterne fragmentacije, odnosno da su slobodni fragmenti toliko mali da ni jedan proces ne može stati na tom delu, ali zbirno ih ima dovoljno za neki procos. Kompakcija rešava taj problem realokacijom svih zauzetih delova i spajanjem svih slobodnih fragmenata u jedan veliki slobodan fragment. Dok se dešava kompakcija, ni jedan proces se ne može izvršavati.&lt;br /&gt;
&lt;br /&gt;
== 7. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Virtuelni adresni prostor je velične 8GB, a adresibilna jedinica je 16-bitna reč. Stranica je veličine 4KB, a preslikavanje je u dva nivoa, s tim da PMT prvog nivoa ima dva puta manje ulaza nego PMT drugog nivoa. Prikazati strukturu virtuelne adrese i označiti širinu svakog polja.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
VA(32): 10 (Page1), 11(Page2), 11(Offset)&lt;br /&gt;
&lt;br /&gt;
== 8. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Navesti tipične usluge operativnog sistema vezane za pristup blokovski orijentisanom ulaznom uređaju sa direktnim pristupom i predložiti potpise odgovarajućih funkcija za te sistemske pozive.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Osnovne usluge jesu pisanje i čitanje.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; int readBlock(BlockNo block, void* buffer);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; int writeBlock(BlockNo block, void* buffer);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti koncept ACL (access control list).&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Da bi se fajlovi zaštitili, jedan način je da se ograniče prava pristupa korisnika. Potrebno je definisati koji korisnik(ili grupa) može da izvršava koju operaciju. Jedan pristup je svakom fajlu pridružiti listu ovih parova(korisnik i operacija). Takva lista je lista kontrole pristupa (ACL).&lt;br /&gt;
&lt;br /&gt;
== 10. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Fajl sistem primenjuje FAT alokaciju, s tim da se i slobodni blokovi ulančavaju u listu. U strukturi FCB polje head sadrži broj prvog bloka sa sadržajem fajla, a polje size veličinu sadržaja. Globalna promenljiva fat_free_head sadrži broj prvog bloka (glavu liste), a fat_free_tail poslednjeg bloka (rep liste) u lancu slobodnih. FAT je u memoriju učitana kao niz. Napisati funkciju jezgra truncate koja briše sadržaj fajla na čiji FCB ukazuje argument.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BB_2019&amp;diff=2651</id>
		<title>ОС1/Јул 2019</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BB_2019&amp;diff=2651"/>
		<updated>2021-07-07T12:31:03Z</updated>

		<summary type="html">&lt;p&gt;Duke: vljd je i ovo dobro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
[http://os.etf.bg.ac.rs/OS1/rokovi/2019/jul/Jul%202019.pdf Zadaci na stranici predmeta.]&lt;br /&gt;
== 1. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta se smatra multiprocesorskim računarskim sistemom? Šta je simetričan multiprocesorski sistem?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Multiprocesorski sistem je sistem sa više procesora koji imaju zajedničku memoriju. Simetričan multiprocesorski sistem znači da su svi procesori opšte namene, jednaki i imaju isto vreme pristupa operativnoj memoriji. Asimetrični multiprocesorski sistem ima i specijalizovane procesore ili procesore sa različitim vremenom pristupa memoriji.&lt;br /&gt;
&lt;br /&gt;
== 2. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neki procesor prilikom obrade prekida prebacuje svoje izvršavanje na korišćenje posebnog pokazivača steka koji se koristi u privilegovanom režimu rada, i pritom čuva sve registre na steku na čiji vrh ukazuje ovaj pokazivač. Operativni sistem na ovom procesoru koristi samo jedan sistemski stek za izvršavanje celog kernel koda. Da li se kontekst izvršavanja procesa (kontekst procesora) može čuvati na ovom steku?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem niti u školskom jezgru napisati funkciju sum koja kreira nit koja će sabrati sve elemente zadatog niza zadate dužine i rezultat upisati na traženo mesto; u slučaju greške ove funkcije vraćaju negativnu vrednost.&lt;br /&gt;
&amp;lt;code&amp;gt;int sum (int array[], size_t size, long* result);&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
class SumThread{&lt;br /&gt;
    public:&lt;br /&gt;
        SumThread(int* arr, size_t _size, long* res): array(arr), size(_size), result(res) {}&lt;br /&gt;
        void run(){&lt;br /&gt;
            long res = 0;&lt;br /&gt;
            for (size_t i = 0;i&amp;lt;size;i++){&lt;br /&gt;
                res += array[i];&lt;br /&gt;
            }&lt;br /&gt;
            *result = res;&lt;br /&gt;
        }&lt;br /&gt;
    private:&lt;br /&gt;
        int* array;&lt;br /&gt;
        size_t size;&lt;br /&gt;
        long* result;&lt;br /&gt;
};&lt;br /&gt;
int sum (int array[], size_t size, long* result){&lt;br /&gt;
    if (result == nullptr) return -1;&lt;br /&gt;
    SumThread* st = new SumThread(array,size,result);&lt;br /&gt;
    st-&amp;gt;start();&lt;br /&gt;
&lt;br /&gt;
    st-&amp;gt;waitToComplete();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Napisati pseudokod koji obezbeđuje međusobno isključenje pristupa kritičnoj sekciji dva procesa pomoću Petersonovog algoritma.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;milo&amp;quot;&amp;gt;&lt;br /&gt;
shared var turn : integer := 1, flag1, flag2 : boolean := false;&lt;br /&gt;
process P1&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        flag1 := true; turn := 2;&lt;br /&gt;
        while flag2 and turn = 2 do null;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag1 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P1;&lt;br /&gt;
process P2&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        flag2 := true; turn := 1;&lt;br /&gt;
        while flag1 and turn = 1 do null;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag2 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Zbog čega operativni sistem ne radi zamenu (swapping) procesa njegovim izbacivanjem iz memorije prilikom svake promene konteksta, kada procesu koji je izgubio procesor memorija svakako nije potrebna?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Zato što je pristup hard disku vrlo spor te će takva implementacija znatno uticati na performanse. Ovo se primenjivalo na &#039;&#039;Windows 3.1&#039;&#039;, bilo je vrlo sporo. Danas, swapping se koristi kada nema dovoljno mesta u operativnoj memoriji.&lt;br /&gt;
&lt;br /&gt;
== 6. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je kompakcija kod kontinualne alokacije memorije?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Kod kontinualne alokacije može doći do eksterne fragmentacije, odnosno da su slobodni fragmenti toliko mali da ni jedan proces ne može stati na tom delu, ali zbirno ih ima dovoljno za neki procos. Kompakcija rešava taj problem realokacijom svih zauzetih delova i spajanjem svih slobodnih fragmenata u jedan veliki slobodan fragment. Dok se dešava kompakcija, ni jedan proces se ne može izvršavati.&lt;br /&gt;
&lt;br /&gt;
== 7. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Virtuelni adresni prostor je velične 8GB, a adresibilna jedinica je 16-bitna reč. Stranica je veličine 4KB, a preslikavanje je u dva nivoa, s tim da PMT prvog nivoa ima dva puta manje ulaza nego PMT drugog nivoa. Prikazati strukturu virtuelne adrese i označiti širinu svakog polja.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
VA(32): 10 (Page1), 11(Page2), 11(Offset)&lt;br /&gt;
&lt;br /&gt;
== 8. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Navesti tipične usluge operativnog sistema vezane za pristup blokovski orijentisanom ulaznom uređaju sa direktnim pristupom i predložiti potpise odgovarajućih funkcija za te sistemske pozive.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Osnovne usluge jesu pisanje i čitanje.&lt;br /&gt;
&amp;lt;code&amp;gt; int readBlock(BlockNo block, void* buffer);&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt; int writeBlock(BlockNo block, void* buffer);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti koncept ACL (access control list).&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Da bi se fajlovi zaštitili, jedan način je da se ograniče prava pristupa korisnika. Potrebno je definisati koji korisnik(ili grupa) može da izvršava koju operaciju. Jedan pristup je svakom fajlu pridružiti listu ovih parova(korisnik i operacija). Takva lista je lista kontrole pristupa (ACL).&lt;br /&gt;
&lt;br /&gt;
== 10. Zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Fajl sistem primenjuje FAT alokaciju, s tim da se i slobodni blokovi ulančavaju u listu. U strukturi FCB polje head sadrži broj prvog bloka sa sadržajem fajla, a polje size veličinu sadržaja. Globalna promenljiva fat_free_head sadrži broj prvog bloka (glavu liste), a fat_free_tail poslednjeg bloka (rep liste) u lancu slobodnih. FAT je u memoriju učitana kao niz. Napisati funkciju jezgra truncate koja briše sadržaj fajla na čiji FCB ukazuje argument.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BB_2017&amp;diff=2650</id>
		<title>ОС1/Јул 2017</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BB_2017&amp;diff=2650"/>
		<updated>2021-07-07T12:10:23Z</updated>

		<summary type="html">&lt;p&gt;Duke: dodata resenja, valjda dobra&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
[http://os.etf.bg.ac.rs/OS1/rokovi/2017/jul/Jul%202017.pdf Zadaci sa stranice predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je hard, a šta soft sistem za rad u realnom vremenu (real-time system)?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Tvrdi sistemi za rad u realnom vremenu su sistemu u kojima odziv mora da stigne u određenom vremenu (deadline). Prekoračenje može dovesti do rezličitih katastrofa. Meki sistemi za rad u realnom vremenu su sistemi kojima je rok bitan ali smeju ga prekoračiti dok god performanse ulaze u zadate okvire.&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti značenje mašinske instrukcije tipa &amp;lt;code&amp;gt;test_and_set&amp;lt;/code&amp;gt; i njenu upotrebu u jezgru operativnog sistema.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;code&amp;gt;test_and_set&amp;lt;/code&amp;gt; je instrukcija koja omogućava sinhronizaciju na hardverskom nivou. Služi za međusobno isključenje izvršavanja na više procesora. Ona čita i vraća vrednost zadate memorijske lokacije a u tu lokaciju stavlja vrednost 1. Koristi se u implementaciji &#039;&#039;lock()&#039;&#039; funkcije.&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem školskog jezgra napisati program koji u n uporednih niti izračunava kvadrat svakog elementa nekog celobrojnog niza (a[i]*=a[i])  veličine n*k, tako što svaka nit obrađuje kelemanata(jednu particiju niza).&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
class ArrThread : Thread{&lt;br /&gt;
    public:&lt;br /&gt;
        ArrThread(int* a, int s, int f): arr(a), start(s), finish(f) {}&lt;br /&gt;
        void run(){&lt;br /&gt;
            for (int i=start;i&amp;lt;finish;i++){&lt;br /&gt;
                arr[i] *= arr[i];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    private:&lt;br /&gt;
        int* arr;&lt;br /&gt;
        int start;&lt;br /&gt;
        int finish;&lt;br /&gt;
};&lt;br /&gt;
int main(){&lt;br /&gt;
    ArrThread *t[n];&lt;br /&gt;
    int start=0;&lt;br /&gt;
    for (int i=0;i&amp;lt;n;i++){&lt;br /&gt;
        t[i] = new ArrThread(array,start,start+k);&lt;br /&gt;
        start += k;&lt;br /&gt;
    }&lt;br /&gt;
    for (int i=0;i&amp;lt;n;i++){&lt;br /&gt;
        t[i]-&amp;gt;waitToComplete();&lt;br /&gt;
        delete t[i];&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Implementirati Petersonov algoritam za međusobno isključenje kritičnih sekcija dva uporedna procesa.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;milo&amp;quot;&amp;gt;&lt;br /&gt;
shared var turn : integer := 1, flag1, flag2 : boolean := false;&lt;br /&gt;
process P1&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        flag1 := true; turn := 2;&lt;br /&gt;
        while flag2 and turn = 2 do null;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag1 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P1;&lt;br /&gt;
process P2&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        flag2 := true; turn := 1;&lt;br /&gt;
        while flag1 and turn = 1 do null;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag2 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Precizno objasniti zašto klasičan linker svoj posao obavlja u dva prolaza (a ne može samo ujednom). Obrazloženje ilustrovati primerom.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Linkerov zadatak je spojiti sve fajlove u jedan izvriš ali da bi to uradio, linker mora naći sve simbole koji se uvoze odnosno izvoze.&lt;br /&gt;
U prvom prolazu analizira ulazne fajlove, veličinu njihovog binarnog sadržaja (prevoda), i pravi mapu &#039;&#039;exe&#039;&#039; fajla; osim toga, sakuplja infomacije iz tabela simbola obj fajlova i izgrađuje svoju tabelu simbola; u tu tabelu simbola unosi izvezene simbole iz obj fajlova, za koje odmah može da izračuna adresu u odnosu na ceo exe fajl. U drugom prolazu generiše binarni kod, i ujedno razrešava nerazrešena adresna polja mašinskih instrukcija na osnovu informacija o adresama u koje se preslikavaju simboli iz njegove tabele simbola&lt;br /&gt;
Primer: Recimo da imamo dva objektna fajla, &#039;&#039;a.obj&#039;&#039; i &#039;&#039;b.obj&#039;&#039;. &#039;&#039;a.obj&#039;&#039; izvozi simbol &#039;&#039;f&#039;&#039; i uvozi simbol &#039;&#039;c&#039;&#039;. Linker ce prvo izvozni fajl dodati u tabelu &#039;&#039;f&#039;&#039;. &#039;&#039;b.obj&#039;&#039; uvozi simbol &#039;&#039;f&#039;&#039; i izvozi simbol &#039;&#039;c&#039;&#039;, pa ce linker u svojoj tabeli dodati simbol &#039;&#039;c&#039;&#039;. U drugom prolazu ce linker razresiti &#039;&#039;c&#039;&#039; polje u &#039;&#039;a.obj&#039;&#039; i polje &#039;&#039;f&#039;&#039; u &#039;&#039;b.obj&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti uslugu koju program očekuje od operativnog sistema ako koristi preklope(overlay).&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Obaveza OS-a je samo da obezbedi uslugu (sistemski poziv) koji alocira deo (virtuelnog) adresnog prostora procesa, kao i uslugu kojom u dati prostor procesa učitava sadržaj iz nekog binarnog fajla i sadržaj iz memorije upisuje u neki fajl (uobičajene sistemske usluge za rad sa fajlovima); OS ne zna za šta se te usluge koriste, tj. ne zna da se one upotrebljavaju baš za dinamičko učitavanje i zamenu delova procesa&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Virtuelni adresni prostor je veličine 1GB, organizovan je segmentno, sa maksimalnom veličinom  segmenta od 4KB, adresibilna jedinica je bajt. Svi  segmenti nekog procesa su stvarne veličine od po 2KB i u fizičku memoriju smešteni su odmah jedan iza drugog, pri čemu segment broj 0 počinje od fizičke adrese F000h. Prikazati logičku strukturu virtuelne adrese i izračunati u koju fizičku adresu se preslikava virtuelna adresa 2543h.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti kako se nedeljivi izlazni uređaj može učiniti (virtuelno) deljivim?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje === &lt;br /&gt;
Jedan način da se ovo reši je tehnikom rezervacije uređaja. To je zapravo međusobno isključenje operacija sa ovakvim uređajem. Problem je što operacije sa uređajima mogu trajati dugo pa ti procesi mogu dugo i da čekaju. Rešenje jeste u tehnici koja se naziva &#039;&#039;spuling&#039;&#039;. Ovde kada neki proces zahteva korišćenje, OS otvara poseban fajl u kome se preusmeravaju sve izlazne operacije sa tim uređajem. Kada se završi, proces nastavlja da izvršava svoj tok, dok se fajl šalje posebnoj niti operativnog sistema, &#039;&#039;spuleru&#039;&#039; koja onda izvršava jedan po jedan fajl iz liste čekanja i njegov sadržaj šalje uređaju.&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Navestii objasniti razlog zašto bi neki fajl sistem koristio klastere na disku različite veličine.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Način da se reči problem režijske potrošnje prostora za pokazivače je povećavanjem bloka ili alokacije više susednih blokova kao jedna jedinica alokacije, i to se naziva klaster.&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neki fajl sistem koristi indeksirani pristup alokaciji fajlova sa indeksima u dva nivoa, blokom veličine  512KB  i  64-bitnim  adresama  fizičkih  blokova.  Kolika  je  maksimalna  veličina  fajla  u  ovom sistemu?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
2^45 B, odnosno 35 TB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2020&amp;diff=2482</id>
		<title>ОС1/Август 2020</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2020&amp;diff=2482"/>
		<updated>2021-06-29T12:55:40Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Ако се над следећим програмом креира један процес, колико ће укупно процеса бити креирано (укључујући и тај један почетни), под претпоставком да су сви системски позиви успели?&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&#039;c&#039;&amp;gt;&lt;br /&gt;
void main {&lt;br /&gt;
    for (int i=0; (i&amp;lt;3) &amp;amp;&amp;amp; fork(); i++);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#:Одговор: 4&lt;br /&gt;
#:Поступак: &lt;br /&gt;
#*P1 прави дете P2 и инкрементира своје &#039;&#039;i&#039;&#039;.&lt;br /&gt;
#*P2 је дете, те &#039;&#039;fork()&#039;&#039; враћа 0 у контексту дете, како услов није испуњен, завршава се &#039;&#039;for&#039;&#039; циклус.&lt;br /&gt;
#*P1 прави дете P3 и инкрементира своје &#039;&#039;i&#039;&#039;.&lt;br /&gt;
#*P1 прави дете P4 и инкрементира своје &#039;&#039;i&#039;&#039;.&lt;br /&gt;
#*P3 и P4 се исто завршавају као процес P2.&lt;br /&gt;
#*P1 завршава свој &#039;&#039;for&#039;&#039; циклус јер је &#039;&#039;i&#039;&#039; постало 3.&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Шта је проблем следеће имплементације критичне секције упосленим чекањем?&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;milo&amp;quot;&amp;gt;&lt;br /&gt;
process P1&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        while flag2 = true do null end; (* Busy wait *)&lt;br /&gt;
        flag1 := true;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        (* Critical section *)&lt;br /&gt;
        flag1 := false;&lt;br /&gt;
        (* Exit protocol *)&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P1;&lt;br /&gt;
process P2&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        while flag1 = true do null end; (* Busy wait *)&lt;br /&gt;
        flag2 := true;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        (* Critical section *)&lt;br /&gt;
        flag2 := false;&lt;br /&gt;
         (* Exit protocol *)&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#:Одговор: Ова два процеса не обезбеђују међусобно искључење јер оба процеса могу прочитати одговарајући &#039;&#039;flag&#039;&#039; и ући у критичну секцију. Да би ово поправили можемо користити Петерснов алгоритам.&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Шта је основна разлика између технике динамичког учитавања и технике преклопа (оверлаyс)?&lt;br /&gt;
#:Одговор: Динамичко учитавање алоцира меморију за неки процес тек када му је она потребна. Преклопи функционишу на исти начин али користе се чињеницом да се неки део никад не користи у исто време када и неки други део, већ наизменично, па се они динамички учитавају на истом месту. Такорећи се преклапају.&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Укратко објаснити зашто је код сегментне организације виртуелне меморије обавезна провера прекорачења границе сегмента приликом сваког адресирања, а код станичне организације та провера не постоји.&lt;br /&gt;
#:Одговор: Сегментна организација функционише тако што се нађе одређени сегмент, односно базна адреса тог сегмента, затим се дода померај (&#039;&#039;offset&#039;&#039;). Могуће је да померај прелази величину сегмента те је обавезна провера за овакву грешку. Странична организација с друге стране, заправо и не познаје концепт сегмента. Пресликавање је реализовано тражењем физичке адресе оквира у односу на виртуелну адресу страницец која је увек исте величине. Померај такође не може бити већи од странице и он се не сабира са адресом већ се додаје на крају саме адресе.&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;]У неком систему постоје следећи системски позиви:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int async_write (const char* buffer);&lt;br /&gt;
void wait (int request_id);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#:Операција &#039;&#039;async_write&#039;&#039; асинхроно задаје операцију излаза датог низа знакова на неки излазни уређај и враћа интерни системски идентификатор тог захтева (већи од 0), односно код грешке (мањи од нула). Операција &#039;&#039;wait&#039;&#039; суспендује позивајући процес све док операција са датим идентификатором није завршена. Коришћењем ових системских позива, реализовати синхрони излаз (функција треба да враћа 0 у случају успеха, а код грешке у супротном):&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int sync_write (char* buffer);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#:Решење:&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Какав проблем може настати код уланчане алокације фајла ако се грешком промени садржај блока у ком је смештен део садржаја неког фајла?&lt;br /&gt;
#:Одговор: У случају када се деси грешка на садршај неког фајла, та грешка може оштетити сам показивач на следећи елемент у листи те или прекинути уланчану листу или грешка буде таква да сада то показује на неки део неког другог фајла. Па када буде читао фајл може наставити на тамо.&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Укратко објаснити шта је инкрементални, а шта тотални бекап (&#039;&#039;backup&#039;&#039;) фајл система и навести пример оперативног система који има уграђену подршку за инкрементални бекап.&lt;br /&gt;
#:Одговор: Тотални бекап копира све фајлове из једног фајл система или његовог дела независно од тога да ли су били измењени од прошлог бекапа или нису. Неки фајлови се беспотребно копирају. Инкрементални бекап копира само измењене фајлове. &#039;&#039;Mac OS X&#039;&#039; има подршку инкременталног бекапа, тако што или експлицитно или аутоматски покрене бекап када се повеже хард диск уређај који је за то намењен.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2020&amp;diff=2481</id>
		<title>ОС1/Август 2020</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2020&amp;diff=2481"/>
		<updated>2021-06-29T12:54:52Z</updated>

		<summary type="html">&lt;p&gt;Duke: Ваљда сви одговори сем петог задатка.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Ако се над следећим програмом креира један процес, колико ће укупно процеса бити креирано (укључујући и тај један почетни), под претпоставком да су сви системски позиви успели?&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&#039;c&#039;&amp;gt;&lt;br /&gt;
void main {&lt;br /&gt;
    for (int i=0; (i&amp;lt;3) &amp;amp;&amp;amp; fork(); i++);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#:Одговор: 4&lt;br /&gt;
#:Поступак: &lt;br /&gt;
#*P1 прави дете P2 и инкрементира своје &#039;&#039;i&#039;&#039;.&lt;br /&gt;
#*P2 је дете, те &#039;&#039;fork()&#039;&#039; враћа 0 у контексту дете, како услов није испуњен, завршава се &#039;&#039;for&#039;&#039; циклус.&lt;br /&gt;
#*P1 прави дете P3 и инкрементира своје &#039;&#039;i&#039;&#039;.&lt;br /&gt;
#*P1 прави дете P4 и инкрементира своје &#039;&#039;i&#039;&#039;.&lt;br /&gt;
#*P3 и P4 се исто завршавају као процес P2.&lt;br /&gt;
#*P1 завршава свој &#039;&#039;for&#039;&#039; циклус јер је &#039;&#039;i&#039;&#039; постало 3.&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Шта је проблем следеће имплементације критичне секције упосленим чекањем?&lt;br /&gt;
#:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
process P1&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        while flag2 = true do null end; (* Busy wait *)&lt;br /&gt;
        flag1 := true;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        (* Critical section *)&lt;br /&gt;
        flag1 := false;&lt;br /&gt;
        (* Exit protocol *)&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P1;&lt;br /&gt;
process P2&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        while flag1 = true do null end; (* Busy wait *)&lt;br /&gt;
        flag2 := true;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        (* Critical section *)&lt;br /&gt;
        flag2 := false;&lt;br /&gt;
         (* Exit protocol *)&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#:Одговор: Ова два процеса не обезбеђују међусобно искључење јер оба процеса могу прочитати одговарајући &#039;&#039;flag&#039;&#039; и ући у критичну секцију. Да би ово поправили можемо користити Петерснов алгоритам.&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Шта је основна разлика између технике динамичког учитавања и технике преклопа (оверлаyс)?&lt;br /&gt;
#:Одговор: Динамичко учитавање алоцира меморију за неки процес тек када му је она потребна. Преклопи функционишу на исти начин али користе се чињеницом да се неки део никад не користи у исто време када и неки други део, већ наизменично, па се они динамички учитавају на истом месту. Такорећи се преклапају.&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Укратко објаснити зашто је код сегментне организације виртуелне меморије обавезна провера прекорачења границе сегмента приликом сваког адресирања, а код станичне организације та провера не постоји.&lt;br /&gt;
#:Одговор: Сегментна организација функционише тако што се нађе одређени сегмент, односно базна адреса тог сегмента, затим се дода померај (&#039;&#039;offset&#039;&#039;). Могуће је да померај прелази величину сегмента те је обавезна провера за овакву грешку. Странична организација с друге стране, заправо и не познаје концепт сегмента. Пресликавање је реализовано тражењем физичке адресе оквира у односу на виртуелну адресу страницец која је увек исте величине. Померај такође не може бити већи од странице и он се не сабира са адресом већ се додаје на крају саме адресе.&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;]У неком систему постоје следећи системски позиви:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int async_write (const char* buffer);&lt;br /&gt;
void wait (int request_id);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#:Операција &#039;&#039;async_write&#039;&#039; асинхроно задаје операцију излаза датог низа знакова на неки излазни уређај и враћа интерни системски идентификатор тог захтева (већи од 0), односно код грешке (мањи од нула). Операција &#039;&#039;wait&#039;&#039; суспендује позивајући процес све док операција са датим идентификатором није завршена. Коришћењем ових системских позива, реализовати синхрони излаз (функција треба да враћа 0 у случају успеха, а код грешке у супротном):&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int sync_write (char* buffer);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#:Решење:&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Какав проблем може настати код уланчане алокације фајла ако се грешком промени садржај блока у ком је смештен део садржаја неког фајла?&lt;br /&gt;
#:Одговор: У случају када се деси грешка на садршај неког фајла, та грешка може оштетити сам показивач на следећи елемент у листи те или прекинути уланчану листу или грешка буде таква да сада то показује на неки део неког другог фајла. Па када буде читао фајл може наставити на тамо.&lt;br /&gt;
#[&#039;&#039;&#039;3&#039;&#039;&#039;] Укратко објаснити шта је инкрементални, а шта тотални бекап (&#039;&#039;backup&#039;&#039;) фајл система и навести пример оперативног система који има уграђену подршку за инкрементални бекап.&lt;br /&gt;
#:Одговор: Тотални бекап копира све фајлове из једног фајл система или његовог дела независно од тога да ли су били измењени од прошлог бекапа или нису. Неки фајлови се беспотребно копирају. Инкрементални бекап копира само измењене фајлове. &#039;&#039;Mac OS X&#039;&#039; има подршку инкременталног бекапа, тако што или експлицитно или аутоматски покрене бекап када се повеже хард диск уређај који је за то намењен.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=2265</id>
		<title>ПООП</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=2265"/>
		<updated>2021-06-26T08:23:41Z</updated>

		<summary type="html">&lt;p&gt;Duke: mala greskica&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Практикум из објектно оријентисаног програмирања&#039;&#039;&#039; (ПООП) је изборни предмет у четвртом семестру.&lt;br /&gt;
&lt;br /&gt;
== Странице ==&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/ Страница предмета]&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/materijali/ Пројектни задаци из претходних година]&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{Материјали&lt;br /&gt;
| vuk = 1Hurdf0yxDWLcFmWV1cQrcqtOWiAT1_iD&lt;br /&gt;
}}&lt;br /&gt;
* [[github:DusanTodorovic5/StockPriceSimulatorCpp|Пример C++ пројекта из 2021. године са GUI-јем]]&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
Модификације пројекта тренутно сакупљене на викију:&lt;br /&gt;
* [[ПООП/Лаб 1 2021|Лаб 2021]]&lt;br /&gt;
* [[ПООП/Јун_2021|Јун 2021]]&lt;br /&gt;
&lt;br /&gt;
== Прављење Native библиотеке за Java пројекат ==&lt;br /&gt;
* Скините жељени JDK, идеално  JDK 1.8.&lt;br /&gt;
* У Java пројекту, направите класу са &#039;&#039;native&#039;&#039; методом као на примеру klase &#039;&#039;MojaKlasa&#039;&#039;&lt;br /&gt;
*:    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;public native int saberi(int a, int b);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Покрените &#039;&#039;CMD&#039;&#039; или &#039;&#039;Terminal&#039;&#039; и идите до жељеног директоријума са вашом java класом&lt;br /&gt;
*Покрените следећу команду&lt;br /&gt;
*:    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; inline&amp;gt;javac -h . MojaKlasa.java&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Добијени &#039;&#039;.h&#039;&#039; фајл прекопирате у ваш C++ пројекат.&lt;br /&gt;
*Прављење библиотеке:&lt;br /&gt;
**Ако сте на Windows-u, потребно је направити &#039;&#039;DLL (Dynamic Link Library)&#039;&#039; и то можете помоћу &#039;&#039;Visual Studio&#039;&#039;&lt;br /&gt;
**#Промените target platform на &#039;&#039;&#039;x64 Release&#039;&#039;&#039;&lt;br /&gt;
**#Потребно је да у &#039;&#039;Project Properties&#039;&#039; изаберете &#039;&#039;Include Directories&#039;&#039; под менијем &#039;&#039;VC++ Directories&#039;&#039; и додати путању до &#039;&#039;Include&#039;&#039; фолдера у инсталираном JDK-u. Такође додати фолдер &#039;&#039;include/win32&#039;&#039;.&lt;br /&gt;
**#Остало је још да додамо путању до библиотеке, и у истом менију &#039;&#039;VC++ Directories&#039;&#039; на пољу &#039;&#039;Library Directories&#039;&#039; додати путању до &#039;&#039;Lib&#039;&#039; фолдера у инсталираном JDK-u.&lt;br /&gt;
**Ако сте на Линуксу или MacOS-u потребно је само имати инсталиран JDK.&lt;br /&gt;
&lt;br /&gt;
*Ако сте успешно направили жељену билиотеку (DLL ili SO). Сада је можете додати у окружењу у коме радите. Потребно је додати фолдер где се библиотека налази у &#039;&#039;Project Path&#039;&#039; -&amp;gt; &#039;&#039;Native Libraries&#039;&#039;.&lt;br /&gt;
*На крају додајте у класу где је &#039;&#039;native&#039;&#039; методa статичко поље које ће учитати ту библиотеку (без екстензије)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MojaKlasa{&lt;br /&gt;
	static {&lt;br /&gt;
		System.loadLibrary(&amp;quot;MojaBiblioteka&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	public native int saberi(int a, int b);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* Пројектни задатак из C++-a (35 поена)&lt;br /&gt;
* Пројектни задатак из Jave (35 поена)&lt;br /&gt;
* Испит који се састоји из надоградње пројектног задатка из Jave (30 поена)&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Четврти семестар]]&lt;br /&gt;
[[Категорија:Изборни предмети]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=2264</id>
		<title>ПООП</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=2264"/>
		<updated>2021-06-26T08:21:36Z</updated>

		<summary type="html">&lt;p&gt;Duke: dodato uputstvo oko projekta&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Практикум из објектно оријентисаног програмирања&#039;&#039;&#039; (ПООП) је изборни предмет у четвртом семестру.&lt;br /&gt;
&lt;br /&gt;
== Странице ==&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/ Страница предмета]&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/materijali/ Пројектни задаци из претходних година]&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{Материјали&lt;br /&gt;
| vuk = 1Hurdf0yxDWLcFmWV1cQrcqtOWiAT1_iD&lt;br /&gt;
}}&lt;br /&gt;
* [[github:DusanTodorovic5/StockPriceSimulatorCpp|Пример C++ пројекта из 2021. године са GUI-јем]]&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
Модификације пројекта тренутно сакупљене на викију:&lt;br /&gt;
* [[ПООП/Лаб 1 2021|Лаб 2021]]&lt;br /&gt;
* [[ПООП/Јун_2021|Јун 2021]]&lt;br /&gt;
&lt;br /&gt;
== Прављење Native библиотеке за Java пројекат ==&lt;br /&gt;
* Скините жељени JDK, идеално  JDK 1.8.&lt;br /&gt;
* У Java пројекту, направите класу са &#039;&#039;native&#039;&#039; методом као на примеру klase &#039;&#039;MojaKlasa&#039;&#039;&lt;br /&gt;
*:    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;public native int saberi(int a, int b);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Покрените &#039;&#039;CMD&#039;&#039; или &#039;&#039;Terminal&#039;&#039; и идите до жељеног директоријума са вашом java класом&lt;br /&gt;
*Покрените следећу команду&lt;br /&gt;
*:    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; inline&amp;gt;javac -h . MojaKlasa.java&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Добијени &#039;&#039;.h&#039;&#039; фајл прекопирате у ваш C++ пројекат.&lt;br /&gt;
*Прављење библиотеке:&lt;br /&gt;
**Ако сте на Windows-u, потребно је направити &#039;&#039;DLL (Dynamic Link Library)&#039;&#039; и то можете помоћу &#039;&#039;Visual Studio&#039;&#039;&lt;br /&gt;
**#Промените target platform на &#039;&#039;&#039;x64 Release&#039;&#039;&#039;&lt;br /&gt;
**#Потребно је да у &#039;&#039;Project Properties&#039;&#039; изаберете &#039;&#039;Include Directories&#039;&#039; под менијем &#039;&#039;VC++ Directories&#039;&#039; и додати путању до &#039;&#039;Include&#039;&#039; фолдера у инсталираном JDK-u. Такође додати фолдер &#039;&#039;include/win32&#039;&#039;.&lt;br /&gt;
**#Остало је још да додамо путању до библиотеке, и у истом менију &#039;&#039;VC++ Directories&#039;&#039; на пољу &#039;&#039;Library Directories&#039;&#039; додати путању до &#039;&#039;Lib&#039;&#039; фолдера у инсталираном JDK-u.&lt;br /&gt;
**Ако сте на Линуксу или MacOS-u потребно је само имати инсталиран JDK.&lt;br /&gt;
&lt;br /&gt;
*Ако сте успешно направили жељену билиотеку (DLL ili SO). Сада је можете додати у окружењу у коме радите. Потребно је додати фолдер где се библиотека налази у &#039;&#039;Project Path&#039;&#039; -&amp;gt; &#039;&#039;Native Libraries&#039;&#039;.&lt;br /&gt;
*На крају додајте у класу где је &#039;&#039;native методa&#039;&#039; статичко поље које ће учитати ту библиотеку (без екстензије)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MojaKlasa{&lt;br /&gt;
	static {&lt;br /&gt;
		System.loadLibrary(&amp;quot;MojaBiblioteka&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	public native int saberi(int a, int b);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* Пројектни задатак из C++-a (35 поена)&lt;br /&gt;
* Пројектни задатак из Jave (35 поена)&lt;br /&gt;
* Испит који се састоји из надоградње пројектног задатка из Jave (30 поена)&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Четврти семестар]]&lt;br /&gt;
[[Категорија:Изборни предмети]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=2259</id>
		<title>ПООП</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=2259"/>
		<updated>2021-06-25T17:24:14Z</updated>

		<summary type="html">&lt;p&gt;Duke: dodat github FOLLOW ME PLS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Практикум из објектно оријентисаног програмирања&#039;&#039;&#039; (ПООП) је изборни предмет у четвртом семестру.&lt;br /&gt;
&lt;br /&gt;
== Странице ==&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/ Страница предмета]&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/materijali/ Пројектни задаци из претходних година]&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{Материјали&lt;br /&gt;
| vuk = 1Hurdf0yxDWLcFmWV1cQrcqtOWiAT1_iD&lt;br /&gt;
}}&lt;br /&gt;
* [[github:DusanTodorovic5/StockPriceSimulatorCpp|Пример C++ пројекта из 2021. године са GUI-јем]]&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
Модификације пројекта тренутно сакупљене на викију:&lt;br /&gt;
* [[ПООП/Лаб 1 2021|Лаб 2021]]&lt;br /&gt;
* [[ПООП/Јун_2021|Јун 2021]]&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* Пројектни задатак из C++-a (35 поена)&lt;br /&gt;
* Пројектни задатак из Jave (35 поена)&lt;br /&gt;
* Испит који се састоји из надоградње пројектног задатка из Jave (30 поена)&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Четврти семестар]]&lt;br /&gt;
[[Категорија:Изборни предмети]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=2251</id>
		<title>ПООП</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=2251"/>
		<updated>2021-06-25T16:56:09Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Пројекат */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Практикум из објектно оријентисаног програмирања&#039;&#039;&#039; (ПООП) је изборни предмет у четвртом семестру.&lt;br /&gt;
&lt;br /&gt;
== Странице ==&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/ Страница предмета]&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/materijali/ Пројектни задаци из претходних година]&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{Материјали&lt;br /&gt;
| vuk = 1Hurdf0yxDWLcFmWV1cQrcqtOWiAT1_iD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
Модификације пројекта тренутно сакупљене на викију:&lt;br /&gt;
* [[ПООП/Лаб 1 2021|Лаб 2021]]&lt;br /&gt;
* [[ПООП/Јун_2021|Јун 2021]]&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* Пројектни задатак из C++-a (35 поена)&lt;br /&gt;
* Пројектни задатак из Jave (35 поена)&lt;br /&gt;
* Испит који се састоји из надоградње пројектног задатка из Jave (30 поена)&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Четврти семестар]]&lt;br /&gt;
[[Категорија:Изборни предмети]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F/%D0%88%D1%83%D0%BD_2021&amp;diff=2247</id>
		<title>ПООП/Јун 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F/%D0%88%D1%83%D0%BD_2021&amp;diff=2247"/>
		<updated>2021-06-25T16:53:44Z</updated>

		<summary type="html">&lt;p&gt;Duke: додата модификација&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
Следећа модификација је била на одбрани пројекта у јуну 2021. године.&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Додати функцију програма која омогућава селектовање одређеног дела приказа свећа и приказати их преко целог прозора&lt;br /&gt;
Омогућити вишеструко увеличавање, односно могућност да се додатно увелича, већ увеличан део.&lt;br /&gt;
[[Датотека:Селектовање ПООП.png|мини]]&lt;br /&gt;
[[Датотека:Селектован ПООП.png|мини]]&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Додати 2 нова поља у класи која ће чувати позицију миша када је претиснут и поље које ће чувати позицију миша када се пусти клик.&lt;br /&gt;
Унутра &#039;&#039;paint&#039;&#039; методе, израчунати фактор увеличавања, поделивши величину прозора са величином селектоване секције. Померити цео график за вредност поља у којем се чувају позиције клика.&lt;br /&gt;
[[Категорија:ПООП]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:POOP_jun_2021_selektovan.png&amp;diff=2246</id>
		<title>Датотека:POOP jun 2021 selektovan.png</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:POOP_jun_2021_selektovan.png&amp;diff=2246"/>
		<updated>2021-06-25T16:47:54Z</updated>

		<summary type="html">&lt;p&gt;Duke: Отпремљено кроз дијалог за отпремање датотека.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{file&lt;br /&gt;
| description = Изглед графика после селектовања&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:POOP_jun_2021_selektovanje.png&amp;diff=2245</id>
		<title>Датотека:POOP jun 2021 selektovanje.png</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:POOP_jun_2021_selektovanje.png&amp;diff=2245"/>
		<updated>2021-06-25T16:47:12Z</updated>

		<summary type="html">&lt;p&gt;Duke: Отпремљено кроз дијалог за отпремање датотека.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{file&lt;br /&gt;
| description = Изглед графика током селектовања&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=2244</id>
		<title>ПООП</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=2244"/>
		<updated>2021-06-25T16:39:54Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Практикум из објектно оријентисаног програмирања&#039;&#039;&#039; (ПООП) је изборни предмет у четвртом семестру.&lt;br /&gt;
&lt;br /&gt;
== Странице ==&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/ Страница предмета]&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/materijali/ Пројектни задаци из претходних година]&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{Материјали&lt;br /&gt;
| vuk = 1Hurdf0yxDWLcFmWV1cQrcqtOWiAT1_iD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
Модификације пројекта тренутно сакупљене на викију:&lt;br /&gt;
* [[ПООП/Лаб 1 2021|Lab 2021]]&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* Пројектни задатак из C++-a (35 поена)&lt;br /&gt;
* Пројектни задатак из Jave (35 поена)&lt;br /&gt;
* Испит који се састоји из надоградње пројектног задатка из Jave (30 поена)&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Четврти семестар]]&lt;br /&gt;
[[Категорија:Изборни предмети]]&lt;/div&gt;</summary>
		<author><name>Duke</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=2093</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=2093"/>
		<updated>2021-06-18T09:32:05Z</updated>

		<summary type="html">&lt;p&gt;Duke: Zaboravih nesto to je to&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-sublist&amp;quot;&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;[5п]&#039;&#039;&#039; У посматраном рачунарском систему процесор има 3 пара линија по којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 8 улазно/излазних уређаја које треба некако повезати помоћу та 3 пара линија на процесор и омогућити за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида. &lt;br /&gt;
## a) Нацртати како тих 8 улазно/излазних уређаја треба повезати помоћу та 3 пара линија на процесор. &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;
# &#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;
# &#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;
#:&amp;lt;table class=&amp;quot;tg&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;PER0_CONTROL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F000h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_CONTROL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F003h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_ADDR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F006h&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;PER0_STATUS&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F001h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F004h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_CNT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F007h&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;PER0_DATA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F002h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_DATA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F005h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
#:Адресе релевантних регистара периферија РERI до Р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;
#:У управљачким регистрима бит 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;
#:Периферија РER0 шалье низ од 100h означених целих бројева који се смештају у меморију почев од адресе 5000h. Hакон учитаног низа у меморију потребно је проследити максималну вредност низа периферијама РER1 до РЕRN. Пренос максималне вредности периферијама треба обављати у паралели, чим периферија буде спремна да прими податак. Након што је свака периферија примила максималну вредност, потребно је да РER0 учита нов низ (од 100h означених целих бројева који се смештају у меморију почев од адресе 5000h), да се проследи нова максимална вредност низа периферијама РER1 до PERN и тако циклично да ради програм.&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;
#:Потребно је имплементирати и у програму на одговарају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 и дужине 1ength eлемената.&lt;br /&gt;
#:Примање података са периферије РERO реализовати коришћењем DMА0 контролера у блоковском режиму рада. Слање података на периферије РER1 до РERN peализовати испитивањем бита спремности.&lt;br /&gt;
#:Сматрати да су доступни регистри ВР и SP приликом писања потпрограма. Обратити пажњу да потпрограм не сме да користи глобалне променљиве, већ само параметре потпрограма и локане променљиве. Позивалац потпрограма је дужан да уклони параметре са стека. Резултат потпрограма се враћа кроз акумулатор. Процесор не поседује регистре опште намене, као ни регистар IМR. Стек расте од виших ка нижим локацијама, а SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове називе треба писати описно и семантички исправно. &#039;&#039;&#039;Обавезно је писање концизних коментара над семантичким целинама.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</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=2092</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=2092"/>
		<updated>2021-06-18T09:30:45Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Поставка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-sublist&amp;quot;&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;[5п]&#039;&#039;&#039; У посматраном рачунарском систему процесор има 3 пара линија по којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 8 улазно/излазних уређаја које треба некако повезати помоћу та 3 пара линија на процесор и омогућити за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида. &lt;br /&gt;
## a) Нацртати како тих 8 улазно/излазних уређаја треба повезати помоћу та 3 пара линија на процесор. &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;
# &#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;
# &#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;
#:&amp;lt;table class=&amp;quot;tg&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;PER0_CONTROL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F000h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_CONTROL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F003h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_ADDR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F006h&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;PER0_STATUS&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F001h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F004h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_CNT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F007h&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;PER0_DATA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F002h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_DATA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F005h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
#:Адресе релевантних регистара периферија РERI до РERN се добијају као резултат потпрограма &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;int* getPеrRegAddr (unsigned int N, unsigned int typеe)&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;
#:У управљачким регистрима бит 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;
#:Периферија РER0 шалье низ од 100h означених целих бројева који се смештају у меморију почев од адресе 5000h. Hакон учитаног низа у меморију потребно је проследити максималну вредност низа периферијама РER1 до РЕRN. Пренос максималне вредности периферијама треба обављати у паралели, чим периферија буде спремна да прими податак. Након што је свака периферија примила максималну вредност, потребно је да РER0 учита нов низ (од 100h означених целих бројева који се смештају у меморију почев од адресе 5000h), да се проследи нова максимална вредност низа периферијама РER1 до PERN и тако циклично да ради програм.&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;
#:Потребно је имплементирати и у програму на одговарају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 и дужине 1ength eлемената.&lt;br /&gt;
#:Примање података са периферије РERO реализовати коришћењем DMА0 контролера у блоковском режиму рада. Слање података на периферије РER1 до РERN peализовати испитивањем бита спремности.&lt;br /&gt;
#:Сматрати да су доступни регистри ВР и SP приликом писања потпрограма. Обратити пажњу да потпрограм не сме да користи глобалне променљиве, већ само параметре потпрограма и локане променљиве. Позивалац потпрограма је дужан да уклони параметре са стека. Резултат потпрограма се враћа кроз акумулатор. Процесор не поседује регистре опште намене, као ни регистар IМR. Стек расте од виших ка нижим локацијама, а SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове називе треба писати описно и семантички исправно. &#039;&#039;&#039;Обавезно је писање концизних коментара над семантичким целинама.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</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=2091</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=2091"/>
		<updated>2021-06-18T09:29:45Z</updated>

		<summary type="html">&lt;p&gt;Duke: Ispit iz 2021 godinu JUN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-sublist&amp;quot;&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;[5п]&#039;&#039;&#039; У посматраном рачунарском систему процесор има 3 пара линија по којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 8 улазно/излазних уређаја које треба некако повезати помоћу та 3 пара линија на процесор и омогућити за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида. &lt;br /&gt;
## a) Нацртати како тих 8 улазно/излазних уређаја треба повезати помоћу та 3 пара линија на процесор. &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;
# &#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;
# &#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;
#:&amp;lt;table class=&amp;quot;tg&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;PER0_CONTROL&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;F000h&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;DMA0_CONTROL&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;F003h&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;DMA0_ADDR&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;F006h&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;PER0_STATUS&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F001h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F004h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_CNT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F007h&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;PER0_DATA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F002h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DMA0_DATA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;F005h&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
#:Адресе релевантних регистара периферија РERI до РERN се добијају као резултат потпрограма &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;int* getPеrRegAddr (unsigned int N, unsigned int typеe)&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;
#:У управљачким регистрима бит 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;
#:Периферија РER0 шалье низ од 100h означених целих бројева који се смештају у меморију почев од адресе 5000h. Hакон учитаног низа у меморију потребно је проследити максималну вредност низа периферијама РER1 до РЕRN. Пренос максималне вредности периферијама треба обављати у паралели, чим периферија буде спремна да прими податак. Након што је свака периферија примила максималну вредност, потребно је да РER0 учита нов низ (од 100h означених целих бројева који се смештају у меморију почев од адресе 5000h), да се проследи нова максимална вредност низа периферијама РER1 до PERN и тако циклично да ради програм.&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;
#:Потребно је имплементирати и у програму на одговарају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 и дужине 1ength eлемената.&lt;br /&gt;
#:Примање података са периферије РERO реализовати коришћењем DMА0 контролера у блоковском режиму рада. Слање података на периферије РER1 до РERN peализовати испитивањем бита спремности.&lt;br /&gt;
#:Сматрати да су доступни регистри ВР и SP приликом писања потпрограма. Обратити пажњу да потпрограм не сме да користи глобалне променљиве, већ само параметре потпрограма и локане променљиве. Позивалац потпрограма је дужан да уклони параметре са стека. Резултат потпрограма се враћа кроз акумулатор. Процесор не поседује регистре опште намене, као ни регистар IМR. Стек расте од виших ка нижим локацијама, а SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове називе треба писати описно и семантички исправно. &#039;&#039;&#039;Обавезно је писање концизних коментара над семантичким целинама.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</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%9A_%D0%88%D1%83%D0%BD_2021&amp;diff=2088</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%9A_%D0%88%D1%83%D0%BD_2021&amp;diff=2088"/>
		<updated>2021-06-18T08:09:18Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-sublist&amp;quot;&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;[7п]&#039;&#039;&#039; Посматра се процесор код кога се у корацима за обраду прекида хардверски уместо на стеку perистар РС чува у регистру NPC, а регистар PSW чува у регистру NPSW док се остали регистри не чувају. У регистру IRR jе забележено о ком прекиду се ради. Регистрима NPC, NPSW, IRR je могуhe приступати програмским путем за упис и читање. Обjаснити шта је све потребно урадити хардверски и софтверски како би се омогућило гнежђење прекида код оваквог процесора&lt;br /&gt;
# &#039;&#039;&#039;[8п]&#039;&#039;&#039; Нацртати и објаснити шему дела модула који се користи у арбитрацији са праћењем. Шема треба да укључи делове који подржавају и паралелну и серијску арбитрацију, синхронизацију на сигпал такта магистрале и ситнал заузећа магистрале.&lt;br /&gt;
# &#039;&#039;&#039;[25п]&#039;&#039;&#039; Адресна магистрала процесора jе ширине 16 бита, магистрала података је 8 битова. Садржај дела оперативне меморије је приказан на слици:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Адреса&amp;lt;br /&amp;gt;&lt;br /&gt;
! 0000h&lt;br /&gt;
! 0001h&lt;br /&gt;
! 0002h&lt;br /&gt;
! 0003h&lt;br /&gt;
! 0004h&lt;br /&gt;
! 0005h&lt;br /&gt;
! 0006h&amp;lt;br /&amp;gt;&lt;br /&gt;
! 0007h&lt;br /&gt;
! 0008h&lt;br /&gt;
! 0009h&lt;br /&gt;
! 000Ah&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot; | Садржај&lt;br /&gt;
| 02h&lt;br /&gt;
| 34h&lt;br /&gt;
| 0Ch&lt;br /&gt;
| 72h&lt;br /&gt;
| 12h&lt;br /&gt;
| 72h&lt;br /&gt;
| 00h&lt;br /&gt;
| 03h&lt;br /&gt;
| 05h&lt;br /&gt;
| 07h&lt;br /&gt;
| 00h&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot; | Адреса&lt;br /&gt;
| 7200h&lt;br /&gt;
| 7201h&lt;br /&gt;
| 7202h&lt;br /&gt;
| 7203h&lt;br /&gt;
| 7204h&lt;br /&gt;
| 7205h&lt;br /&gt;
| 7206h&lt;br /&gt;
| 7207h&lt;br /&gt;
| 7208h&lt;br /&gt;
| 7209h&lt;br /&gt;
| 720Ah&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot; | Садржај&lt;br /&gt;
| 1Fh&lt;br /&gt;
| 0Eh&lt;br /&gt;
| 0Fh&lt;br /&gt;
| 25h&lt;br /&gt;
| 09h&lt;br /&gt;
| 00h&lt;br /&gt;
| F1h&lt;br /&gt;
| 21h&lt;br /&gt;
| 05h&lt;br /&gt;
| 00h&lt;br /&gt;
| FFh&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot; | Адреса&lt;br /&gt;
| 720Bh&lt;br /&gt;
| 720Ch&lt;br /&gt;
| 720Dh&lt;br /&gt;
| 720Eh&lt;br /&gt;
| 720Fh&lt;br /&gt;
| 7210h&lt;br /&gt;
| 7211h&lt;br /&gt;
| 7212h&lt;br /&gt;
| 7213h&lt;br /&gt;
| 7214h&lt;br /&gt;
| 7215h&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot; | Садржај&lt;br /&gt;
| F3h&lt;br /&gt;
| FDh&lt;br /&gt;
| 24h&lt;br /&gt;
| 34h&lt;br /&gt;
| 12h&lt;br /&gt;
| F4h&lt;br /&gt;
| F5h&lt;br /&gt;
| FDh&lt;br /&gt;
| F5h&lt;br /&gt;
| 34h&lt;br /&gt;
| 12h&lt;br /&gt;
|}&lt;br /&gt;
Процесор поседује 16-битне регистре РС (програмски бројач), SP (показивач на прву слободну локацију стека који расте према вишим адресама), РSW (програмска статусна реч), IVTP (показивач на IV табелу) и регистар АСС (акумулатор). Претпоставити да је пре почетка извршавања главног програма РC=7203h, АСС=2211h, SP=Е000h, IVTР=0000h, а PSW=C001h. Индикатори NZCV се налазе на месту највиша четири бита регистра PSW (PSW&amp;lt;sub&amp;gt;15..12&amp;lt;/sub&amp;gt;), док се бити L&amp;lt;sub&amp;gt;1..0&amp;lt;/sub&amp;gt; и бит I налазе на месту најнижих битова овог регистра (PSW&amp;lt;sub&amp;gt;2..0&amp;lt;/sub&amp;gt;). Процесор из меморије дохвата податке бајт по бајт. &lt;br /&gt;
&lt;br /&gt;
У току извршавања инструкције DEC  по линији IRQM&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; долази захтев за спољашњи маскирајући захтев који има највиши приоритет. Овој линији одговара улаз број 2 у IV табели. Све инструкције, осим инструкције RTI, реагују на прекиде и не постоји регистар маске IMR.&lt;br /&gt;
&lt;br /&gt;
Навести секвенцу садржаја на адресној магистрали, магистрали података и контролној магистрали за сваки циклус на магистрали при извршавању главног програма и прекидних рутина којe ћe се извршити. Приликом скока у прекидну рутину на стеку се чувају РС и PSW, тим редоследом.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Assembly&amp;quot;&amp;gt;&lt;br /&gt;
7203h STOREW ; memorijsko direktno adresiranje&lt;br /&gt;
7206h INT #1h ; softverski prekid&lt;br /&gt;
7207h DEC ; bezadresno adresiranje&lt;br /&gt;
7208h HALT ; zaustavljanje procesora&lt;br /&gt;
7209h ...&lt;br /&gt;
   &lt;br /&gt;
720Ch РОPW ; skidanje sa steka dva bajta&lt;br /&gt;
720Dh LDW #1234h ; nesposredno adresiranje&lt;br /&gt;
7210h PUSHW ; stavljanje na stek dva bajta&lt;br /&gt;
7211h RTI ; povratak iz prekidne routine&lt;br /&gt;
7212h INC ; bezadresno adresiranje &lt;br /&gt;
7213h RTI ; povratak iz prekidne routine &lt;br /&gt;
7214h ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Решење представити у табели чије заглавље изгледа као на слици:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Рб&lt;br /&gt;
! A&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt;&lt;br /&gt;
! D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;&lt;br /&gt;
! RD&lt;br /&gt;
! WR&lt;br /&gt;
! PC&amp;lt;br /&amp;gt;&lt;br /&gt;
! IR&amp;lt;sub&amp;gt;23..16&amp;lt;/sub&amp;gt;&lt;br /&gt;
! IR&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt;&lt;br /&gt;
! IR&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;&lt;br /&gt;
! TEMP&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt;&lt;br /&gt;
! ACC&lt;br /&gt;
! SP&lt;br /&gt;
! PSW&lt;br /&gt;
! Коменатар&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Рб представља редни број циклуса на магистрали, А&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; и D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt; садржаје адресних линија и линија података у датом циклусу. RD и WR су вредности управљачких сигнала на магистрали. РС представља садржај програмског бројача, IR садржај инструкцијскоr perистра, ТЕМP садржај прихватног регистра операнда или адресе операнда, АСС садржај акумулатора, SP садржај показивача на врх стека и РSW садржај програмске статусне речи. У коментару навести у којој од фаза дохватања инструкције (IF), декодовања инструкције (ID), извршавања (EX) или опслуживања прекида (IS) се реализује дати циклус. Све инструкције након којих се скаче у прекидну рутину у фази IS врше припрему за скок у одговарајућу прекидну рутину.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</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%9A_%D0%88%D1%83%D0%BD_2021&amp;diff=2087</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%9A_%D0%88%D1%83%D0%BD_2021&amp;diff=2087"/>
		<updated>2021-06-18T07:56:23Z</updated>

		<summary type="html">&lt;p&gt;Duke: Додат колоквијум рађен у јуну&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-sublist&amp;quot;&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;[7п]&#039;&#039;&#039; Посматра се процесор код кога се у корацима за обраду прекида хардверски уместо на стеку perистар РС чува у регистру NPC, а регистар PSW чува у регистру NPSW док се остали регистри не чувају. У регистру IRR jе забележено о ком прекиду се ради. Регистрима NPC, NPSW, IRR je могуhe приступати програмским путем за упис и читање.&lt;br /&gt;
Обjаснити шта је све потребно урадити хардверски и софтверски како би се омогућило гнежђење прекида код оваквог процесора&lt;br /&gt;
# &#039;&#039;&#039;[8п]&#039;&#039;&#039; Нацртати и објаснити шему дела модула који се користи у арбитрацији са праћењем. Шема треба да укључи делове који подржавају и паралелну и серијску арбитрацију, синхронизацију на сигпал такта магистрале и ситнал заузећа магистрале.&lt;br /&gt;
# &#039;&#039;&#039;[25п]&#039;&#039;&#039; Адресна магистрала процесора jе ширине 16 бита, магистрала података је 8 битова. Садржај дела оперативне меморије је приказан на слици:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Адреса&amp;lt;br /&amp;gt;&lt;br /&gt;
! 0000h&lt;br /&gt;
! 0001h&lt;br /&gt;
! 0002h&lt;br /&gt;
! 0003h&lt;br /&gt;
! 0004h&lt;br /&gt;
! 0005h&lt;br /&gt;
! 0006h&amp;lt;br /&amp;gt;&lt;br /&gt;
! 0007h&lt;br /&gt;
! 0008h&lt;br /&gt;
! 0009h&lt;br /&gt;
! 000Ah&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot; | Садржај&lt;br /&gt;
| 02h&lt;br /&gt;
| 34h&lt;br /&gt;
| 0Ch&lt;br /&gt;
| 72h&lt;br /&gt;
| 12h&lt;br /&gt;
| 72h&lt;br /&gt;
| 00h&lt;br /&gt;
| 03h&lt;br /&gt;
| 05h&lt;br /&gt;
| 07h&lt;br /&gt;
| 00h&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot; | Адреса&lt;br /&gt;
| 7200h&lt;br /&gt;
| 7201h&lt;br /&gt;
| 7202h&lt;br /&gt;
| 7203h&lt;br /&gt;
| 7204h&lt;br /&gt;
| 7205h&lt;br /&gt;
| 7206h&lt;br /&gt;
| 7207h&lt;br /&gt;
| 7208h&lt;br /&gt;
| 7209h&lt;br /&gt;
| 720Ah&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot; | Садржај&lt;br /&gt;
| 1Fh&lt;br /&gt;
| 0Eh&lt;br /&gt;
| 0Fh&lt;br /&gt;
| 25h&lt;br /&gt;
| 09h&lt;br /&gt;
| 00h&lt;br /&gt;
| F1h&lt;br /&gt;
| 21h&lt;br /&gt;
| 05h&lt;br /&gt;
| 00h&lt;br /&gt;
| FFh&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot; | Адреса&lt;br /&gt;
| 720Bh&lt;br /&gt;
| 720Ch&lt;br /&gt;
| 720Dh&lt;br /&gt;
| 720Eh&lt;br /&gt;
| 720Fh&lt;br /&gt;
| 7210h&lt;br /&gt;
| 7211h&lt;br /&gt;
| 7212h&lt;br /&gt;
| 7213h&lt;br /&gt;
| 7214h&lt;br /&gt;
| 7215h&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot; | Садржај&lt;br /&gt;
| F3h&lt;br /&gt;
| FDh&lt;br /&gt;
| 24h&lt;br /&gt;
| 34h&lt;br /&gt;
| 12h&lt;br /&gt;
| F4h&lt;br /&gt;
| F5h&lt;br /&gt;
| FDh&lt;br /&gt;
| F5h&lt;br /&gt;
| 34h&lt;br /&gt;
| 12h&lt;br /&gt;
|}&lt;br /&gt;
Процесор поседује 16-битне регистре РС (програмски бројач), SP (показивач на прву слободну локацију стека који расте према вишим адресама), РSW (програмска статусна реч), IVTP (показивач на IV табелу) и регистар АСС (акумулатор). Претпоставити да је пре почетка извршавања главног програма РC=7203h, АСС=2211h, SP=Е000h, IVTР=0000h, а PSW=C001h. Индикатори NZCV се налазе на месту највиша четири бита регистра PSW (PSW&amp;lt;sub&amp;gt;15..12&amp;lt;/sub&amp;gt;), док се бити L&amp;lt;sub&amp;gt;1..0&amp;lt;/sub&amp;gt; и бит I налазе на месту најнижих битова овог регистра (PSW&amp;lt;sub&amp;gt;2..0&amp;lt;/sub&amp;gt;). Процесор из меморије дохвата податке бајт по бајт. &lt;br /&gt;
&lt;br /&gt;
У току извршавања инструкције DEC  по линији IRQM&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; долази захтев за спољашњи маскирајући захтев који има највиши приоритет. Овој линији одговара улаз број 2 у IV табели. Све инструкције, осим инструкције RTI, реагују на прекиде и не постоји регистар маске IMR.&lt;br /&gt;
&lt;br /&gt;
Навести секвенцу садржаја на адресној магистрали, магистрали података и контролној магистрали за сваки циклус на магистрали при извршавању главног програма и прекидних рутина којe ћe се извршити. Приликом скока у прекидну рутину на стеку се чувају РС и PSW, тим редоследом.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Assembly&amp;quot;&amp;gt;&lt;br /&gt;
7203h STOREW ; memorijsko direktno adresiranje&lt;br /&gt;
7206h INT #1h ; softverski prekid&lt;br /&gt;
7207h DEC ; bezadresno adresiranje&lt;br /&gt;
7208h HALT ; zaustavljanje procesora&lt;br /&gt;
7209h ...&lt;br /&gt;
   &lt;br /&gt;
720Ch РОPW ; skidanje sa steka dva bajta&lt;br /&gt;
720Dh LDW #1234h ; nesposredno adresiranje&lt;br /&gt;
7210h PUSHW ; stavljanje na stek dva bajta&lt;br /&gt;
7211h RTI ; povratak iz prekidne routine&lt;br /&gt;
7212h INC ; bezadresno adresiranje &lt;br /&gt;
7213h RTI ; povratak iz prekidne routine &lt;br /&gt;
7214h ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Решење представити у табели чије заглавље изгледа као на слици:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Рб&lt;br /&gt;
! A&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt;&lt;br /&gt;
! D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;&lt;br /&gt;
! RD&lt;br /&gt;
! WR&lt;br /&gt;
! PC&amp;lt;br /&amp;gt;&lt;br /&gt;
! IR&amp;lt;sub&amp;gt;23..16&amp;lt;/sub&amp;gt;&lt;br /&gt;
! IR&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt;&lt;br /&gt;
! IR&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;&lt;br /&gt;
! TEMP&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt;&lt;br /&gt;
! ACC&lt;br /&gt;
! SP&lt;br /&gt;
! PSW&lt;br /&gt;
! Коменатар&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Рб представља редни број циклуса на магистрали, А&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; и D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt; садржаје адресних линија и линија података у датом циклусу. RD и WR су вредности управљачких сигнала на магистрали. РС представља садржај програмског бројача, IR садржај инструкцијскоr perистра, ТЕМP садржај прихватног регистра операнда или адресе операнда, АСС садржај акумулатора, SP садржај показивача на врх стека и РSW садржај програмске статусне речи. У коментару навести у којој од фаза дохватања инструкције (IF), декодовања инструкције (ID), извршавања (EX) или опслуживања прекида (IS) се реализује дати циклус. Све инструкције након којих се скаче у прекидну рутину у фази IS врше припрему за скок у одговарајућу прекидну рутину.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9A2_2021&amp;diff=2067</id>
		<title>ОО2/К2 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9A2_2021&amp;diff=2067"/>
		<updated>2021-06-07T18:14:11Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* 9. zadatak */  izbacen odgovor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
* Za pitanja sa više odgovora, tačni odgovori su &amp;lt;span class=&amp;quot;solution-example&amp;quot;&amp;gt;podebljani i uokvireni&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Za pitanja za koje se odgovori unose, tačni odgovori su podvučeni i sakriveni: &amp;lt;span class=&amp;quot;spoiler-example&amp;quot;&amp;gt;ovako&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Pritisnite na sledeće dugme kako biste ih sakrili ili otkrili: &amp;lt;span class=&amp;quot;unhide-spoilers unhide-solutions&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== G1 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Označiti tačna tvrđenja na programskom jeziku Java:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ako konstruktor natklase nema konstruktor bez parametara (&#039;&#039;no-arg&#039;&#039;) potrebno je eksplicitno pozvati taj konstruktor u prvoj liniji konstruktora posmatrane klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Konstruktor natklase će biti implicitno pozvan ako postoji i bez parametara je.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Konstruktor natklase se može eksplicitno pozvati imenom te klase.&lt;br /&gt;
# ??&lt;br /&gt;
# ??&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Označiti tačna tvrđenja na programskom jeziku Java:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Interfejs može da proširuje&amp;lt;ref name=&amp;quot;interface&amp;quot;&amp;gt;Ovo nije bila navlakuša, već je trebalo da piše &amp;quot;implementira&amp;quot;. Nekim studentima koji su ovakvu grešku smatrali namernom su bodovi koje su izgubili nezaokruživanjem tačnih tvrdnji zbog ove greške bili priznati naknadno.&amp;lt;/ref&amp;gt; više klasa.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Interfejs može da proširuje&amp;lt;ref name=&amp;quot;interface&amp;quot; /&amp;gt; više interfejsa.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Interfejs može da proširi&amp;lt;ref name=&amp;quot;interface&amp;quot; /&amp;gt; samo jedan interfejs.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Interfejs može biti osnova za proširivanje&amp;lt;ref name=&amp;quot;interface&amp;quot; /&amp;gt; više interfejsa.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Interfejs se implicitno izvodi iz klase &#039;&#039;Object&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
Označiti tačna tvrđenja na programskom jeziku Java:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Anonimna klasa je lokalna klasa bez imena.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Anonimna klasa se definiše u izrazu new, kao deo naredbe.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Anonimna klasa proširuje drugu klasu ili interfejs.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Natklasa anonimne klase se definiše u imenu te klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Anonimna klasa u svojoj definiciji koristi ključne reči &amp;lt;code&amp;gt;extends&amp;lt;/code&amp;gt; i/ili &amp;lt;code&amp;gt;implements&amp;lt;/code&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 kod na programskom jeziku Java? (Upisati 0 ako se program ne prevodi.)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
interface A { default void m() { System.out.print(&amp;quot;A.m()&amp;quot;); } }&lt;br /&gt;
interface B { default void m() { System.out.print(&amp;quot;B.m()&amp;quot;); } }&lt;br /&gt;
public class C implements A,B {&lt;br /&gt;
    public void m() { System.out.print(&amp;quot;C.m()&amp;quot;); A.super.m(); B.super.m(); }&lt;br /&gt;
    public static void main(String[] arguments) {&lt;br /&gt;
        C c = new C();&lt;br /&gt;
        c.m();&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;&amp;gt;C.m()A.m()B.m()&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Šta se može napisati umesto &amp;lt;code&amp;gt;###&amp;lt;/code&amp;gt; kako bi se sledeći kod na programskom jeziku Java prevodio ispravno?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
interface Calc {&lt;br /&gt;
    int m(int a, int b);&lt;br /&gt;
}&lt;br /&gt;
public class Test {&lt;br /&gt;
    public static void main(String[] arguments) {&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;&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;Calc c = (int a, int b) -&amp;gt; a + b;&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;Calc c = a, b -&amp;gt; a + b ;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;Calc c = a, b -&amp;gt; { a + b };&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;Calc c = (int a, b) -&amp;gt; return a + b;&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;Calc c = (int a, int b) -&amp;gt; { return a + b; };&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
Šta se može napisati umesto &amp;lt;code&amp;gt;$$$&amp;lt;/code&amp;gt; kako bi se sledeći kod na programskom jeziku Java ispravno izvršavao i ispisivao 3?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Spoljna {&lt;br /&gt;
    int x = 1;&lt;br /&gt;
    class Unutrasnja {&lt;br /&gt;
        int x = 2;&lt;br /&gt;
        public void m(int x) {&lt;br /&gt;
            System.out.println($$$);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Main {&lt;br /&gt;
    public static void main(String[] arguments) {&lt;br /&gt;
        new Spoljna().new Unutrasnja().m(3);&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;&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;this.x&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;x&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;super.x&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;Spoljna.this.x&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;Spoljna.x&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Označiti tačna tvrđenja na programskom jeziku Java:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &#039;&#039;finally&#039;&#039; blok se izvršava samo ukoliko se u &#039;&#039;try&#039;&#039; bloku baci izuzetak.&lt;br /&gt;
# &#039;&#039;finally&#039;&#039; blok se izvršava samo ukoliko se u &#039;&#039;try&#039;&#039; bloku ne baci izuzetak.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&#039;&#039;finally&#039;&#039; blok se izvršava bez obzira na to da li je u &#039;&#039;try&#039;&#039; bloku bačen izuzetak.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Može postojati samo jedan &#039;&#039;finally&#039;&#039; blok za posmatrani &#039;&#039;try&#039;&#039; blok.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;U &#039;&#039;finally&#039;&#039; bloku može biti bačen izuzetak.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Označiti tačna tvrđenja na programskom jeziku Java:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Telo metode &#039;&#039;run&#039;&#039; klase Thread je prazno.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Korisnik eksplicitno treba da pozove metodu &#039;&#039;run&#039;&#039;.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Klasa izvedena iz klase Thread treba&amp;lt;ref&amp;gt;Ovo nije navlakuša već se misli pri konkretnom korišćenju, tako da treba, ali ne mora - samo neće raditi ništa.&amp;lt;/ref&amp;gt; da nadjača metodu &#039;&#039;run&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Java virtuelna mašina implicitno zove metodu &#039;&#039;run&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Nit normalno završava izvršenje po povratku iz njenog metoda &#039;&#039;run&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Označiti tačna tvrđenja na programskom jeziku Java:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Poziv &#039;&#039;interrupt&#039;&#039; nad blokiranom niti metodom join() izaziva izuzetak &#039;&#039;InterruptedException&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Poziv &#039;&#039;interrupt&#039;&#039; nad blokiranom niti metodom join() izaziva izuzetak &#039;&#039;ThreadDeath&#039;&#039;.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Poziv &#039;&#039;interrupt&#039;&#039; nad blokiranom metodom join() nit se deblokira.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Poziv &#039;&#039;interrupt&#039;&#039; nad blokiranom niti metodom join() ne postavlja &#039;&#039;interrupted&#039;&#039; status.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Tvrdnja pod e je na kolokvijumu bila označena kao tačna, ali zapravo nije, i studentima su naknadno bili priznavani bodovi. U verziji prezentacije iz niti iz 2021 je ovaj deo na slajdu 11 ispravljen.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
Šta je tačno za sledeći kod na programskom jeziku Java?&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[] arguments) {&lt;br /&gt;
        Thread t1 = new Thread(() -&amp;gt; { while (true); });&lt;br /&gt;
        t1.setDaemon(false);&lt;br /&gt;
        t1.start();&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;&amp;gt;&lt;br /&gt;
# Referenca &#039;&#039;t1&#039;&#039; pokazuje na demonsku nit.&lt;br /&gt;
# Java virtuelna mašina (JVM) završava svoj rad nakon završetka glavne funkcije.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Linija sa &#039;&#039;setDaemon&#039;&#039; u kodu ne menja demonski status niti na koju pokazuje &#039;&#039;t1&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Nakon izvršenja glavne funkcije se ne izlazi iz programa jer ima još korisničkih niti za izvršavanje.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Linija sa &#039;&#039;setDaemon&#039;&#039; u kodu ne menja ništa, odnosno nema efekta.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== G2 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Označiti tačna tvrđenja na programskom jeziku Java:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Eksplicitni ili implicitni poziv konstruktora nadklase se može izbeći ako se u konstruktoru izvedene klase pozove neki drugi konstruktor te iste klase.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ako se koristi, poziv drugog konstruktora iste klase mora biti prva naredba u konstruktoru.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Konstrukcija objekta se može delegirati pozivom jednog konstruktora iz drugog konstruktora.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Rekurziju u delegiranju konstruktora detektuje prevodilac.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Dozvoljeno je u konstruktoru prvo pozvati konstruktor nadklase a zatim delegirati konstrukciju nekom drugom konstruktoru.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Označiti tačna tvrđenja na programskom jeziku Java:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Referenca na neki interfejs može pokazivati na literal &#039;&#039;&#039;null&#039;&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Svi interfejsi su izvedeni iz klase &#039;&#039;Interface&#039;&#039; u paketu &#039;&#039;&#039;java.lang&#039;&#039;&#039;.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Referenci na neki interfejs može se dodeliti objekat bilo koje klase koja proširuje&amp;lt;ref name=&amp;quot;interface&amp;quot; /&amp;gt; taj interfejs.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Referenci na interfejs se može dodeliti objekat koji se dobije kada se sa druge strane alokatora &amp;lt;code&amp;gt;new&amp;lt;/code&amp;gt; nađe naziv tog interfejsa.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Referenca na neki interfejs se može dodeliti referenci tipa &#039;&#039;Object&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
Šta ispisuje sledeći kod na programskom jeziku Java? Ukoliko se program ne kompajlira, upisati 0.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
interface A { default void m() { System.out.println(&amp;quot;A.m()&amp;quot;); } }&lt;br /&gt;
class C { public void m() { System.out.println(&amp;quot;C.m()&amp;quot;); } }&lt;br /&gt;
public class Test extends C implements A {&lt;br /&gt;
    public static void main(String[] arguments) {&lt;br /&gt;
        Test t = new Test();&lt;br /&gt;
        t.m();&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;&amp;gt;C.m&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
Anonimna klasa na programskom jeziku Java može sadržati:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# konstruktor&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;nestatičke metode&amp;lt;/span&amp;gt;&lt;br /&gt;
# statičke metode&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;nestatička polja&amp;lt;/span&amp;gt;&lt;br /&gt;
# statička polja&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Šta se može napisati umesto &amp;lt;code&amp;gt;###&amp;lt;/code&amp;gt; kako bi se sledeći kod na programskom jeziku Java prevodio ispravno?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
interface Calc {&lt;br /&gt;
    int m(int a, int b);&lt;br /&gt;
}&lt;br /&gt;
public class Test {&lt;br /&gt;
    public static void main(String[] arguments) {&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;&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;Calc c = (int a, int b) -&amp;gt; a + b;&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;Calc c = (int a, int b) -&amp;gt; { a + b };&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;Calc c = (int a, int b) -&amp;gt; { int r = a + b; return r; };&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;Calc c = (int a, int b) -&amp;gt; return a + b;&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;Calc c = (int a, int b) -&amp;gt; { return a + b; };&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
Šta se može napisati umesto &amp;lt;code&amp;gt;$$$&amp;lt;/code&amp;gt; kako bi se sledeći kod na programskom jeziku Java ispravno izvršavao i ispisivao 2?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Spoljna {&lt;br /&gt;
    int x = 1;&lt;br /&gt;
    class Unutrasnja {&lt;br /&gt;
        int x = 2;&lt;br /&gt;
        public void m(int x) {&lt;br /&gt;
            System.out.println($$$);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Main {&lt;br /&gt;
    public static void main(String[] arguments) {&lt;br /&gt;
        new Spoljna().new Unutrasnja().m(3);&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;&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;x&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;this.x&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;super.x&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;Spoljna.this.x&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;Spoljna.x&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Označiti tačna tvrđenja na programskom jeziku Java:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&#039;&#039;finally&#039;&#039; blok može da postoji bez &#039;&#039;catch&#039;&#039; bloka.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &#039;&#039;finally&#039;&#039; blok se izvršava samo ukoliko se u &#039;&#039;catch&#039;&#039; bloku baci izuzetak.&lt;br /&gt;
# &#039;&#039;finally&#039;&#039; blok se izvršava samo ukoliko se u &#039;&#039;catch&#039;&#039; bloku ne baci izuzetak.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&#039;&#039;finally&#039;&#039; blok se izvršava bez obzira na to da li je u &#039;&#039;catch&#039;&#039; bloku bačen izuzetak.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&#039;&#039;finally&#039;&#039; blok se izvršava iako ne dođe do greške.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Označiti tačna tvrđenja na programskom jeziku Java:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Metoda &#039;&#039;start&#039;&#039; ponovo pokreće nit ukoliko je završena.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ponovni poziv &#039;&#039;start&#039;&#039; nakon završetka niti je greška.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Poziv metode &#039;&#039;start&#039;&#039; stavlja nit nad kojom je pozvana u red spremnih niti.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Nit koja poziva &#039;&#039;start&#039;&#039; se blokira.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Nit koja poziva &#039;&#039;start&#039;&#039; se ne blokira.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Označiti tačna tvrđenja na programskom jeziku Java:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Poziv &#039;&#039;interrupt&#039;&#039; nad blokiranom niti izaziva izuzetak &#039;&#039;InterruptedException&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Poziv &#039;&#039;interrupt&#039;&#039; nad blokiranom niti izaziva izuzetak &#039;&#039;ThreadDeath&#039;&#039;.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Poziv &#039;&#039;interrupt&#039;&#039; nad blokiranom niti je deblokira.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Poziv &#039;&#039;interrupt&#039;&#039; nad blokiranom niti ne menja njeno stanje.&lt;br /&gt;
# Pozivom metoda &#039;&#039;interrupt&#039;&#039; za neku nit koja je suspendovana pozivom metoda &#039;&#039;sleep&#039;&#039; ne vrši se postavljanje statusa prekida te niti.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Tvrdnja pod e je na kolokvijumu bila označena kao tačna, ali zapravo nije, i studentima su naknadno bili priznavani bodovi. U verziji prezentacije iz niti iz 2021 je ovaj deo na slajdu 11 ispravljen.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
Šta je tačno za sledeći kod na programskom jeziku Java?&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[] arguments) {&lt;br /&gt;
        Thread t1 = new Thread(() -&amp;gt; { while (true); });&lt;br /&gt;
        t1.setDaemon(true);&lt;br /&gt;
        t1.start();&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;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Referenca &#039;&#039;t1&#039;&#039; pokazuje na demonsku nit.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Java virtuelna mašina (JVM) završava svoj rad nakon završetka glavne funkcije.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Linija sa &#039;&#039;setDaemon&#039;&#039; u kodu ne menja demonski status niti na koju pokazuje &#039;&#039;t1&#039;&#039;.&lt;br /&gt;
# Nakon izvršenja glavne funkcije se ne izlazi iz programa jer ima još korisničkih niti za izvršavanje.&lt;br /&gt;
# Referenca &#039;&#039;t1&#039;&#039; ne pokazuje na demonsku nit.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== G3 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Šta će sledeći program ispisati? Napisati 0 ukoliko se program ne prevodi.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
interface A { default void m() { System.out.print(&amp;quot;A.m()&amp;quot;); } }&lt;br /&gt;
interface B { default void m() { System.out.print(&amp;quot;B.m()&amp;quot;); } }&lt;br /&gt;
public class X implements A, B {&lt;br /&gt;
    public void f() { System.out.print(&amp;quot;X.f()&amp;quot;); A.super.m(); B.super.m(); }&lt;br /&gt;
    public static void main (String[] args) {&lt;br /&gt;
        X x = new X();&lt;br /&gt;
        x.f();&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;&amp;gt;0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Klasa X implementira interfejse koji imaju podrazumevanu metodu istog naziva, a pritom je ne redefiniše kao svoj metod, što je u Javi greška i takav program se neće prevoditi.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Koji su iskazi tačni za metod &amp;lt;code&amp;gt;wait&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ukoliko se pozove &#039;&#039;interrupt&#039;&#039; za nit za koju je prethodno pozvano &#039;&#039;wait&#039;&#039;, takva nit će se deblokirati.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ukoliko se pozove &#039;&#039;interrupt&#039;&#039; za nit za koju je prethodno pozvano &#039;&#039;wait&#039;&#039;, baciće se izuzetak &#039;&#039;InterruptedException&#039;&#039;.&lt;br /&gt;
# Ukoliko se pozove &#039;&#039;interrupt&#039;&#039; za nit za koju je prethodno pozvano &#039;&#039;wait&#039;&#039;, baciće se izuzetak &#039;&#039;ThreadDeath&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ukoliko se pozove &#039;&#039;interrupt&#039;&#039; za nit za koju je prethodno pozvano &#039;&#039;wait&#039;&#039;, neće se promeniti status prekida.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Tvrdnja pod d je na kolokvijumu bila označena kao tačna, ali zapravo nije, i studentima su naknadno bili priznavani bodovi. U verziji prezentacije iz niti iz 2021 je ovaj deo na slajdu 11 ispravljen.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
Koji su iskazi tačni za metod &amp;lt;code&amp;gt;join&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Pozivom metoda &#039;&#039;join&#039;&#039; bez argumenata za neku nit, nit koja poziva metod čeka da nit za koju je metod pozvan završi izvršavanje.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Metod &#039;&#039;join&#039;&#039; se može pozvati bez argumenata.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Pozivom metoda &#039;&#039;join&#039;&#039; za neku nit sa zadatim vremenom u milisekundama čekaće se bar toliko vremena, bez obzira na to da li je nit završila izvršavanje pre isteka vremena.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Metod &#039;&#039;join&#039;&#039; ne može da se nadjača u izvedenim klasama.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Pozivom metoda &#039;&#039;join&#039;&#039; podrazumevano se završava nit za koju je pozvan metod.&amp;lt;!-- Napomena: Nije baš ovako glasilo, te nisam siguran kako je tačno baš bilo. --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
Šta važi za anonimne klase:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Anonimne klase mogu pristupati nestatičkim poljima okružujuće klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Anonimne klase mogu pristupati statičkim poljima okružujuće klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Anonimne klase mogu pristupati nepromenljivim parametrima metoda koji ih okružuje.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Anonimne klase mogu pristupati lokalnim promenljivama okružujućeg metoda kojima se ne menja vrednost.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Anonimne klase mogu pristupati svim lokalnim promenljivama okružujućeg metoda, kao i njegovim parametrima, bez obzira na to da li im se menja vrednost.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Šta važi za interfejse:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Podrazumevano su polja interfejsa javna, statička i konačna.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Podrazumevano su metodi interfejsa apstraktni i javni.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Interfejsi mogu definisati podrazumevane metode.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Interfejsi mogu definisati statičke metode.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Interfejsi mogu imati modifikator final.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
Navesti šta je tačno za demonske niti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Demonstvo se nasleđuje od niti iz koje je kreirana data nit.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Demonstvo može da se menja nakon pokretanja niti.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Pokušaj promene demonstva nakon pokretanja baciće &#039;&#039;IllegalStateException&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Demonske niti će nastaviti izvršavanje nakon završetka svih ostalih niti.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Demonstvo se može menjati samo pre pokretanja niti.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
interface Calc {&lt;br /&gt;
    int f(int x);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Test {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Test test = new Test();&lt;br /&gt;
        ###&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šta treba da stoji umesto &amp;lt;code&amp;gt;###&amp;lt;/code&amp;gt; da bi program korektno završio?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&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;Calc c = (a) -&amp;gt; a * a;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&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;Calc c = a -&amp;gt; a * a;&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;Calc c = a -&amp;gt; { a*a; }&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;Calc c = b -&amp;gt; b * b;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&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;Calc c = (int a) -&amp;gt; a * a;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Koje su tvrdnje tačne za podrazumevani ugrađeni konstruktor:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ukoliko nije definisan nijedan drugi konstruktor, prevodilac ga automatski obezbeđuje.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Podrazumevano će samo pozvati podrazumevani konstruktor natklase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Neće pozvati podrazumevani konstruktor natklase samo u slučaju da je klasa direktno izvedena iz klase Object.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ukoliko je klasa javna, i on je podrazumevano javan.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &#039;&#039;??? svakako nešto netačno&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Spoljna {&lt;br /&gt;
    int x = 1;&lt;br /&gt;
    class Unutrasnja {&lt;br /&gt;
        int x = 2;&lt;br /&gt;
        void m(int x) {&lt;br /&gt;
            System.out.print(###);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        new Spoljna().new Unutrasnja().m(3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šta može sve stajati umesto &amp;lt;code&amp;gt;###&amp;lt;/code&amp;gt; da bi program korektno završio i ispisao 1?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;this.x&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;x&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;Spoljna.this.x&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;Outer.x&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; inline&amp;gt;super.x&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
Navesti tačne tvrdnje za izuzetke:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Svi izuzeci u Javi moraju biti izvedeni iz klase Exception.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Svi izuzeci koji se bacaju u metodu moraju se navesti u njegovoj throws klauzuli.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Prevodilac može da proveri tipove izuzetaka navedenih u throws klauzuli.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Metod može baciti izuzetak isključivo eksplicitnim navođenjem uz throw.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Napomene ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОО2]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2061</id>
		<title>ОО2/Лаб 3 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2061"/>
		<updated>2021-06-04T19:26:25Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* В2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== В1 ==&lt;br /&gt;
&lt;br /&gt;
== В2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор&#039;&#039;&#039; случајних целих бројева генерише случајне целе бројеве на захтев. Могуће је&lt;br /&gt;
захтевати један случајан цео број ili niz od n elemenata у задатом опсегу доње и горње границе. Задате границе су инклузивне.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор јединствених&#039;&#039;&#039; целих бројева је генератор који генерише низ са јединственим бројевима помоћу хеш сета(&amp;lt;code&amp;gt;HashSet&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поље&#039;&#039;&#039; је платно (Canvas) које се ствара са задатом дводимензионом мрежом (видети ниже)&lt;br /&gt;
којој припада и задатом целобројном вредношћу (број) која представља натпис (лабелу) на&lt;br /&gt;
пољу и која може да се дохвати. Поље може имати један од следећих статуса:ПРОМАШЕНО, ПОГОЂЕНО, (И ЈОШ ЈЕДАН ЧИЈЕ ИМЕ СЕ НЕ СЕЋАМ, НЕК БУДЕ СЕЛЕКТОВАНО), SLOBODNO, IZABRANO, који се може поставити и дохватити. Подразумевано, поље има статус SLOBODNO, а ширина и висина су му 75 пиксела, боја позадине му је наранџаста, а број је исписан црном бојом на средини поља и заузима једну трећину мање димензије поља (потребно је обезбедити промену величине садржаја поља при промени величине прозора). Поље статуса IZABRANO унутар целог поља исцртава елипсу попуњену плавом бојом, а број је исписан белом бојом. Поље статуса ПОГОЂЕНО унутар целог поља исцртава елипсу попуњену зеленом бојом, а број је исписан црном бојом. Поље статуса ПРОМАШЕН унутар целог поља исцртава елипсу попуњену црвеном бојом, а број је исписан црном бојом. Поље статуса СЕЛЕКТОВАН унутар целог поља исцртава елипсу попуњену белом бојом, а број је исписан црном бојом.  Кликом левог тастера миша на поље мења се његов статус (уколико је статус поља SLOBODNO оно постаје IZABRANO и обрнуто) и поље прослеђује мрежи информацију да се његов статус променио.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Мрежа&#039;&#039;&#039; је панел који садржи правоугаону матрицу поља и листу (ArrayList) поља која имају статус IZABRANO и која може да се дохвати. Ствара се са задатим целобројним димензијама (подразумевано 4 х 5) и игром (видети ниже) којој припада. Приликом стварања мреже, поља се додају у мрежу редом по врстама, при чему се пољима задају сукцесивне целобројне вредности, а нумерација креће од вредности 0. Поља су размакнута једна од других за 3 пиксела, а боја позадине мреже је црна, тако да се постигне ефекат поља распоређених у мрежи. Могуће је дохватити скуп (HashSet) који чине сви цели бројеви поља мреже са статусом IZABRANO. Променом статуса неког њеног поља, мрежа ажурира листу поља са статусом IZABRANO и прослеђује игри информацију да је поље променило статус. Треба имплементирати методу која омогућује односно онемогућује мрежу. Док је мрежа онемогућена, немогуће је изабрати ново поље.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Рулет&#039;&#039;&#039; је класа која анимира избор бројева. Ствара се са задатом мрежом. Садржи низ величине између 30% и 70% величине мреже. Тренутни број се може дохватити(он увек представља последњи број). Треба омогућити да се последњи број не може дохватити док се не заврши анимација. Анимација треба бити следећа: Почиње се тако што се селектује поље са вредности коју представља први члан низа, затим поставити статус тог поља на СЕЛЕКТОВАН, сачекати 200ms и затим вратити претходни статус пољу. Свака следећа итерација кроз низ треба повећати време чекања за 10% иницијалног чекања(200ms). Тренутни број је последњи број у итерацији.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Извлачење&#039;&#039;&#039; је класа која извлачи број с рулета. Ствара се са задатом игром и бројем рунди. Потребно је имплементирати тако да при покретању ова класа понови исти циклус колико има број рунди. Циклус се састоји од тога да покрене рулет, покупи с рулета последњи број и да обавести &#039;&#039;&#039;Игру&#039;&#039;&#039; да је иѕвучен број. Ако је број који је извучен би изабран, потребно је поставити статус тог поља на ПОГОЂЕН у супротном статус је ПРОМАШЕН. Затим треба чекати 1000ms после чега треба рестурирати стари статус поља. Док траје процес извлачења, није могуће бирати поља, односно мрежа треба бити онемогућена.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Историја&#039;&#039;&#039; је панел који садржи листу ставки(видети слику). Ствара се са максималним капацитетом .Ставке требају бити класа &amp;lt;code&amp;gt;TextArea&amp;lt;/code&amp;gt;, не треба имати ни вертикални и хоризонтални скрол бар. Могуће је додати ставку. У случају да се додаје ставка која би прешла максимални капацитет, потребно је ту ставку убацити уместо најраније ставке. Ставка треба садржати број рунде, извучен број, улог и добитак.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Игра&#039;&#039;&#039; је главни прозор апликације (са слике) који садржи једну мрежу подразумеване величине,&lt;br /&gt;
која може да се дохвати, један панел за ставке (са леве стране), један панел за управљање (са десне стране) и статусну траку (на дну). Игру је могуће започети само уколико се изабере барем једно поље. Улог има подразумевану вредност 100. Број улога има подразумевану вредност 100 .Избором поља (променом његовог статуса) или изменом вредности улога врши се ажурирање вредности квоте и добитка који се приказују у прозору апликације. Вредност квоте се рачуна као количник укупног броја поља и броја поља са статусом IZABRANO. Вредност добитка се рачуна као производ квоте и улога.&lt;br /&gt;
[[Датотека:Гиф Лаб3 В2.gif|мини|десно]]&lt;br /&gt;
Игра се започиње кликом на дугме Igraj након чега се покреће Извлачење. Генерисани број исписује се у статусној траци на дну прозора, која се боји зеленом бојом уколико је генерисани број један од бројева на изабраним пољима мреже (број је погођен), односно црвеном бојом у супротном (број је промашен). Уколико је генерисани број погођен, врши се додавање вредности добитка на вредност баланса, док се, уколико је број промашен, врши одузимање вредности улога од вредности баланса. Иницијална вредност баланса је 0. Иницијално, боја статусне траке је тамно-сива. Главни прозор садржи мени бар Избор са опцијама &#039;&#039;Пар&#039;&#039; (Бира све парне бројеве мреже), &#039;&#039;НеПар&#039;&#039; (Бира све непарне бројеве мреже), &#039;&#039;Пола&#039;&#039; (Изабере насумично пола мреже) и опцију &#039;&#039;Бриши&#039;&#039; која свим пољима ставља статус СЛОБОДНО. Треба онемогућити ове опције док траје процес извлачења.&lt;br /&gt;
&lt;br /&gt;
== В3 ==&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2059</id>
		<title>ОО2/Лаб 3 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2059"/>
		<updated>2021-06-04T18:48:15Z</updated>

		<summary type="html">&lt;p&gt;Duke: Ово је ваљда цео задатак&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== В1 ==&lt;br /&gt;
&lt;br /&gt;
== В2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор&#039;&#039;&#039; случајних целих бројева генерише случајне целе бројеве на захтев. Могуће је&lt;br /&gt;
захтевати један случајан цео број ili niz od n elemenata у задатом опсегу доње и горње границе. Задате границе су инклузивне.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор јединствених&#039;&#039;&#039; целих бројева је генератор који генерише низ са јединственим бројевима помоћу хеш сета(&amp;lt;code&amp;gt;HashSet&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поље&#039;&#039;&#039; је платно (Canvas) које се ствара са задатом дводимензионом мрежом (видети ниже)&lt;br /&gt;
којој припада и задатом целобројном вредношћу (број) која представља натпис (лабелу) на&lt;br /&gt;
пољу и која може да се дохвати. Поље може имати један од следећих статуса:ПРОМАШЕНО, ПОГОЂЕНО, (И ЈОШ ЈЕДАН ЧИЈЕ ИМЕ СЕ НЕ СЕЋАМ, НЕК БУДЕ СЕЛЕКТОВАНО), SLOBODNO, IZABRANO, који се може поставити и дохватити. Подразумевано, поље има статус SLOBODNO, а ширина и висина су му 75 пиксела, боја позадине му је наранџаста, а број је исписан црном бојом на средини поља и заузима једну трећину мање димензије поља (потребно је обезбедити промену величине садржаја поља при промени величине прозора). Поље статуса IZABRANO унутар целог поља исцртава елипсу попуњену плавом бојом, а број је исписан белом бојом. Поље статуса ПОГОЂЕНО унутар целог поља исцртава елипсу попуњену зеленом бојом, а број је исписан црном бојом. Поље статуса ПРОМАШЕН унутар целог поља исцртава елипсу попуњену црвеном бојом, а број је исписан црном бојом. Поље статуса СЕЛЕКТОВАН унутар целог поља исцртава елипсу попуњену белом бојом, а број је исписан црном бојом.  Кликом левог тастера миша на поље мења се његов статус (уколико је статус поља SLOBODNO оно постаје IZABRANO и обрнуто) и поље прослеђује мрежи информацију да се његов статус променио.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Мрежа&#039;&#039;&#039; је панел који садржи правоугаону матрицу поља и листу (ArrayList) поља која имају статус IZABRANO и која може да се дохвати. Ствара се са задатим целобројним димензијама (подразумевано 4 х 5) и игром (видети ниже) којој припада. Приликом стварања мреже, поља се додају у мрежу редом по врстама, при чему се пољима задају сукцесивне целобројне вредности, а нумерација креће од вредности 0. Поља су размакнута једна од других за 3 пиксела, а боја позадине мреже је црна, тако да се постигне ефекат поља распоређених у мрежи. Могуће је дохватити скуп (HashSet) који чине сви цели бројеви поља мреже са статусом IZABRANO. Променом статуса неког њеног поља, мрежа ажурира листу поља са статусом IZABRANO и прослеђује игри информацију да је поље променило статус. Треба имплементирати методу која омогућује односно онемогућује мрежу. Док је мрежа онемогућена, немогуће је изабрати ново поље.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Рулет&#039;&#039;&#039; је класа која анимира избор бројева. Ствара се са задатом мрежом. Садржи низ величине између 30% и 70% величине мреже. Тренутни број се може дохватити(он увек представља последњи број). Треба омогућити да се последњи број не може дохватити док се не заврши анимација. Анимација треба бити следећа: Почиње се тако што се селектује поље са вредности коју представља први члан низа, затим поставити статус тог поља на СЕЛЕКТОВАН, сачекати 200ms и затим вратити претходни статус пољу. Свака следећа итерација кроз низ треба повећати време чекања за 10% иницијалног чекања(200ms). Тренутни број је последњи број у итерацији.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Извлачење&#039;&#039;&#039; је класа која извлачи број с рулета. Ствара се са задатом игром и бројем рунди. Потребно је имплементирати тако да при покретању ова класа понови исти циклус колико има број рунди. Циклус се састоји од тога да покрене рулет, покупи с рулета последњи број и да обавести &#039;&#039;&#039;Игру&#039;&#039;&#039; да је иѕвучен број. Ако је број који је извучен би изабран, потребно је поставити статус тог поља на ПОГОЂЕН у супротном статус је ПРОМАШЕН. Затим треба чекати 1000ms после чега треба рестурирати стари статус поља. Док траје процес извлачења, није могуће бирати поља, односно мрежа треба бити онемогућена.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Историја&#039;&#039;&#039; је панел који садржи листу ставки(видети слику). Ствара се са максималним капацитетом .Ставке требају бити класа &amp;lt;code&amp;gt;TextArea&amp;lt;/code&amp;gt;, не треба имати ни вертикални и хоризонтални скрол бар. Могуће је додати ставку. У случају да се додаје ставка која би прешла максимални капацитет, потребно је ту ставку убацити уместо најраније ставке. Ставка треба садржати број рунде, извучен број, улог и добитак.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Игра&#039;&#039;&#039; је главни прозор апликације (са слике) који садржи једну мрежу подразумеване величине,&lt;br /&gt;
која може да се дохвати, један панел за ставке (са леве стране), један панел за управљање (са десне стране) и статусну траку (на дну). Игру је могуће започети само уколико се изабере барем једно поље. Улог има подразумевану вредност 100. Број улога има подразумевану вредност 100 .Избором поља (променом његовог статуса) или изменом вредности улога врши се ажурирање вредности квоте и добитка који се приказују у прозору апликације. Вредност квоте се рачуна као количник укупног броја поља и броја поља са статусом IZABRANO. Вредност добитка се рачуна као производ квоте и улога.&lt;br /&gt;
[[Датотека:Lab3V2Mod.png|мини|десно|Изглед коначног програма]]&lt;br /&gt;
Игра се започиње кликом на дугме Igraj након чега се покреће Извлачење. Генерисани број исписује се у статусној траци на дну прозора, која се боји зеленом бојом уколико је генерисани број један од бројева на изабраним пољима мреже (број је погођен), односно црвеном бојом у супротном (број је промашен). Уколико је генерисани број погођен, врши се додавање вредности добитка на вредност баланса, док се, уколико је број промашен, врши одузимање вредности улога од вредности баланса. Иницијална вредност баланса је 0. Иницијално, боја статусне траке је тамно-сива. Главни прозор садржи мени бар Избор са опцијама &#039;&#039;Пар&#039;&#039; (Бира све парне бројеве мреже), &#039;&#039;НеПар&#039;&#039; (Бира све непарне бројеве мреже), &#039;&#039;Пола&#039;&#039; (Изабере насумично пола мреже) и опцију &#039;&#039;Бриши&#039;&#039; која свим пољима ставља статус СЛОБОДНО. Треба онемогућити ове опције док траје процес извлачења.&lt;br /&gt;
&lt;br /&gt;
== В3 ==&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2058</id>
		<title>ОО2/Лаб 3 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2058"/>
		<updated>2021-06-04T18:38:39Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* В2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== В1 ==&lt;br /&gt;
&lt;br /&gt;
== В2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор&#039;&#039;&#039; случајних целих бројева генерише случајне целе бројеве на захтев. Могуће је&lt;br /&gt;
захтевати један случајан цео број ili niz od n elemenata у задатом опсегу доње и горње границе. Задате границе су инклузивне.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор јединствених&#039;&#039;&#039; целих бројева је генератор који генерише низ са јединственим бројевима помоћу хеш сета(&amp;lt;code&amp;gt;HashSet&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поље&#039;&#039;&#039; је платно (Canvas) које се ствара са задатом дводимензионом мрежом (видети ниже)&lt;br /&gt;
којој припада и задатом целобројном вредношћу (број) која представља натпис (лабелу) на&lt;br /&gt;
пољу и која може да се дохвати. Поље може имати један од следећих статуса:ПРОМАШЕНО, ПОГОЂЕНО, (И ЈОШ ЈЕДАН ЧИЈЕ ИМЕ СЕ НЕ СЕЋАМ, НЕК БУДЕ СЕЛЕКТОВАНО), SLOBODNO, IZABRANO, који се може поставити и дохватити. Подразумевано, поље има статус SLOBODNO, а ширина и висина су му 75 пиксела, боја позадине му је наранџаста, а број је исписан црном бојом на средини поља и заузима једну трећину мање димензије поља (потребно је обезбедити промену величине садржаја поља при промени величине прозора). Поље статуса IZABRANO унутар целог поља исцртава елипсу попуњену плавом бојом, а број је исписан белом бојом. Поље статуса ПОГОЂЕНО унутар целог поља исцртава елипсу попуњену зеленом бојом, а број је исписан црном бојом. Поље статуса ПРОМАШЕН унутар целог поља исцртава елипсу попуњену црвеном бојом, а број је исписан црном бојом. Поље статуса СЕЛЕКТОВАН унутар целог поља исцртава елипсу попуњену белом бојом, а број је исписан црном бојом.  Кликом левог тастера миша на поље мења се његов статус (уколико је статус поља SLOBODNO оно постаје IZABRANO и обрнуто) и поље прослеђује мрежи информацију да се његов статус променио.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Мрежа&#039;&#039;&#039; је панел који садржи правоугаону матрицу поља и листу (ArrayList) поља која имају&lt;br /&gt;
статус IZABRANO и која може да се дохвати. Ствара се са задатим целобројним димензијама&lt;br /&gt;
(подразумевано 4 х 5) и игром (видети ниже) којој припада. Приликом стварања мреже, поља се&lt;br /&gt;
додају у мрежу редом по врстама, при чему се пољима задају сукцесивне целобројне вредности,&lt;br /&gt;
а нумерација креће од вредности 0. Поља су размакнута једна од других за 3 пиксела, а боја&lt;br /&gt;
позадине мреже је црна, тако да се постигне ефекат поља распоређених у мрежи. Могуће је&lt;br /&gt;
дохватити скуп (HashSet) који чине сви цели бројеви поља мреже са статусом IZABRANO.&lt;br /&gt;
Променом статуса неког њеног поља, мрежа ажурира листу поља са статусом IZABRANO и&lt;br /&gt;
прослеђује игри информацију да је поље променило статус.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Рулет&#039;&#039;&#039; је класа која анимира избор бројева. Ствара се са задатом мрежом. Садржи низ величине између 30% и 70% величине мреже. Тренутни број се може дохватити(он увек представља последњи број). Треба омогућити да се последњи број не може дохватити док се не заврши анимација. Анимација треба бити следећа: Почиње се тако што се селектује поље са вредности коју представља први члан низа, затим поставити статус тог поља на СЕЛЕКТОВАН, сачекати 200ms и затим вратити претходни статус пољу. Свака следећа итерација кроз низ треба повећати време чекања за 10% иницијалног чекања(200ms). Тренутни број је последњи број у итерацији.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Извлачење&#039;&#039;&#039; је класа која извлачи број с рулета. Ствара се са задатом игром и бројем рунди. Потребно је имплементирати тако да при покретању ова класа понови исти циклус колико има број рунди. Циклус се састоји од тога да покрене рулет, покупи с рулета последњи број и да обавести &#039;&#039;&#039;Игру&#039;&#039;&#039; да је иѕвучен број. Ако је број који је извучен би изабран, потребно је поставити статус тог поља на ПОГОЂЕН у супротном статус је ПРОМАШЕН. Затим треба чекати 1000ms после чега треба рестурирати стари статус поља.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Историја&#039;&#039;&#039; је панел који садржи листу ставки(видети слику). Ствара се са максималним капацитетом .Ставке требају бити класа &amp;lt;code&amp;gt;TextArea&amp;lt;/code&amp;gt;, не треба имати ни вертикални и хоризонтални скрол бар. Могуће је додати ставку. У случају да се додаје ставка која би прешла максимални капацитет, потребно је ту ставку убацити уместо најраније ставке. Ставка треба садржати број рунде, извучен број, улог и добитак.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Игра&#039;&#039;&#039; је главни прозор апликације (са слике) који садржи једну мрежу подразумеване величине,&lt;br /&gt;
која може да се дохвати, један панел за ставке (са леве стране), један панел за управљање (са десне стране) и статусну траку (на дну). Игру је могуће започети само уколико се изабере барем једно поље. Улог има подразумевану вредност 100. Број улога има подразумевану вредност 100 .Избором поља (променом његовог статуса) или изменом вредности улога врши се ажурирање вредности квоте и добитка који се приказују у прозору апликације. Вредност квоте се рачуна као количник укупног броја поља и броја поља са статусом IZABRANO. Вредност добитка се рачуна као производ квоте и улога. Игра се започиње кликом на дугме Igraj након чега се врши генерисање случајног целог броја у опсегу бројева на пољима мреже. Генерисани број исписује се у статусној траци на дну прозора, која се боји зеленом бојом уколико је генерисани број један од бројева на изабраним пољима мреже (број је погођен), односно црвеном бојом у&lt;br /&gt;
супротном (број је промашен). Уколико је генерисани број погођен, врши се додавање вредности добитка на вредност баланса, док се, уколико је број промашен, врши одузимање вредности улога од вредности баланса. Иницијална вредност баланса је 0. Иницијално, боја статусне траке је тамно-сива.&lt;br /&gt;
[[Датотека:Lab3V2Mod.png|мини|десно|Изглед коначног програма]]&lt;br /&gt;
&lt;br /&gt;
== В3 ==&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2057</id>
		<title>ОО2/Лаб 3 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2057"/>
		<updated>2021-06-04T18:33:43Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* В2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== В1 ==&lt;br /&gt;
&lt;br /&gt;
== В2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор&#039;&#039;&#039; случајних целих бројева генерише случајне целе бројеве на захтев. Могуће је&lt;br /&gt;
захтевати један случајан цео број ili niz od n elemenata у задатом опсегу доње и горње границе. Задате границе су инклузивне.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор јединствених&#039;&#039;&#039; целих бројева је генератор који генерише низ са јединственим бројевима помоћу хеш сета(&amp;lt;code&amp;gt;HashSet&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поље&#039;&#039;&#039; је платно (Canvas) које се ствара са задатом дводимензионом мрежом (видети ниже)&lt;br /&gt;
којој припада и задатом целобројном вредношћу (број) која представља натпис (лабелу) на&lt;br /&gt;
пољу и која може да се дохвати. Поље може имати један од следећих статуса:ПРОМАШЕНО, ПОГОЂЕНО, (И ЈОШ ЈЕДАН ЧИЈЕ ИМЕ СЕ НЕ СЕЋАМ, НЕК БУДЕ СЕЛЕКТОВАНО), SLOBODNO, IZABRANO, који се може поставити и дохватити. Подразумевано, поље има статус SLOBODNO, а ширина и висина су му 75 пиксела, боја позадине му је наранџаста, а број је исписан црном бојом на средини поља и заузима једну трећину мање димензије поља (потребно је обезбедити промену величине садржаја поља при промени величине прозора). Поље статуса IZABRANO унутар целог поља исцртава елипсу попуњену плавом бојом, а број је исписан белом бојом. Поље статуса ПОГОЂЕНО унутар целог поља исцртава елипсу попуњену зеленом бојом, а број је исписан црном бојом. Поље статуса ПРОМАШЕН унутар целог поља исцртава елипсу попуњену црвеном бојом, а број је исписан црном бојом. Поље статуса СЕЛЕКТОВАН унутар целог поља исцртава елипсу попуњену белом бојом, а број је исписан црном бојом.  Кликом левог тастера миша на поље мења се његов статус (уколико је статус поља SLOBODNO оно постаје IZABRANO и обрнуто) и поље прослеђује мрежи информацију да се његов статус променио.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Мрежа&#039;&#039;&#039; је панел који садржи правоугаону матрицу поља и листу (ArrayList) поља која имају&lt;br /&gt;
статус IZABRANO и која може да се дохвати. Ствара се са задатим целобројним димензијама&lt;br /&gt;
(подразумевано 4 х 5) и игром (видети ниже) којој припада. Приликом стварања мреже, поља се&lt;br /&gt;
додају у мрежу редом по врстама, при чему се пољима задају сукцесивне целобројне вредности,&lt;br /&gt;
а нумерација креће од вредности 0. Поља су размакнута једна од других за 3 пиксела, а боја&lt;br /&gt;
позадине мреже је црна, тако да се постигне ефекат поља распоређених у мрежи. Могуће је&lt;br /&gt;
дохватити скуп (HashSet) који чине сви цели бројеви поља мреже са статусом IZABRANO.&lt;br /&gt;
Променом статуса неког њеног поља, мрежа ажурира листу поља са статусом IZABRANO и&lt;br /&gt;
прослеђује игри информацију да је поље променило статус.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Рулет&#039;&#039;&#039; је класа која анимира избор бројева. Ствара се са задатом мрежом. Садржи низ величине између 30% и 70% величине мреже. Тренутни број се може дохватити(он увек представља последњи број). Треба омогућити да се последњи број не може дохватити док се не заврши анимација. Анимација треба бити следећа: Почиње се тако што се селектује поље са вредности коју представља први члан низа, затим поставити статус тог поља на СЕЛЕКТОВАН, сачекати 200ms и затим вратити претходни статус пољу. Свака следећа итерација кроз низ треба повећати време чекања за 10% иницијалног чекања(200ms). Тренутни број је последњи број у итерацији.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Извлачење&#039;&#039;&#039; је класа која извлачи број с рулета. Ствара се са задатом игром и бројем рунди. Потребно је имплементирати тако да при покретању ова класа понови исти циклус колико има број рунди. Циклус се састоји од тога да покрене рулет, покупи с рулета последњи број и да обавести &#039;&#039;&#039;Игру&#039;&#039;&#039; да је иѕвучен број. Ако је број који је извучен би изабран, потребно је поставити статус тог поља на ПОГОЂЕН у супротном статус је ПРОМАШЕН. Затим треба чекати 1000ms после чега треба рестурирати стари статус поља.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Историја&#039;&#039;&#039; је панел који садржи листу ставки(видети слику). Ствара се са максималним капацитетом .Ставке требају бити класа &amp;lt;code&amp;gt;TextArea&amp;lt;/code&amp;gt;, не треба имати ни вертикални и хоризонтални скрол бар. Могуће је додати ставку. У случају да се додаје ставка која би прешла максимални капацитет, потребно је ту ставку убацити уместо најраније ставке. Ставка треба садржати број рунде, извучен број, улог и добитак.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Игра&#039;&#039;&#039; је главни прозор апликације (са слике) који садржи једну мрежу подразумеване величине,&lt;br /&gt;
која може да се дохвати, један панел за ставке (са леве стране), један панел за управљање (са десне стране) и статусну траку (на дну). Игру је могуће започети само уколико се изабере барем једно поље. Улог има подразумевану вредност 100. Број улога има подразумевану вредност 100 .Избором поља (променом његовог статуса) или изменом вредности улога врши се ажурирање вредности квоте и добитка који се приказују у прозору апликације. Вредност квоте се рачуна као количник укупног броја поља и броја поља са статусом IZABRANO. Вредност добитка се рачуна као производ квоте и улога. Игра се започиње кликом на дугме Igraj након чега се врши генерисање случајног целог броја у опсегу бројева на пољима мреже. Генерисани број исписује се у статусној траци на дну прозора, која се боји зеленом бојом уколико је генерисани број један од бројева на изабраним пољима мреже (број је погођен), односно црвеном бојом у&lt;br /&gt;
супротном (број је промашен). Уколико је генерисани број погођен, врши се додавање вредности добитка на вредност баланса, док се, уколико је број промашен, врши одузимање вредности улога од вредности баланса. Иницијална вредност баланса је 0. Иницијално, боја статусне траке је тамно-сива.&lt;br /&gt;
[[Датотека:Lab3V2Mod.png|оквир|десно|Изглед коначног програма]]&lt;br /&gt;
&lt;br /&gt;
== В3 ==&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2055</id>
		<title>ОО2/Лаб 3 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2055"/>
		<updated>2021-06-04T18:14:36Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* В2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== В1 ==&lt;br /&gt;
&lt;br /&gt;
== В2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор&#039;&#039;&#039; случајних целих бројева генерише случајне целе бројеве на захтев. Могуће је&lt;br /&gt;
захтевати један случајан цео број ili niz od n elemenata у задатом опсегу доње и горње границе. Задате границе су инклузивне.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор јединствених&#039;&#039;&#039; целих бројева је генератор који генерише низ са јединственим бројевима помоћу хеш сета(&amp;lt;code&amp;gt;HashSet&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поље&#039;&#039;&#039; је платно (Canvas) које се ствара са задатом дводимензионом мрежом (видети ниже)&lt;br /&gt;
којој припада и задатом целобројном вредношћу (број) која представља натпис (лабелу) на&lt;br /&gt;
пољу и која може да се дохвати. Поље може имати један од следећих статуса:ПРОМАШЕНО, ПОГОЂЕНО, (И ЈОШ ЈЕДАН ЧИЈЕ ИМЕ СЕ НЕ СЕЋАМ, НЕК БУДЕ СЕЛЕКТОВАНО), SLOBODNO, IZABRANO, који се може поставити и дохватити. Подразумевано, поље има статус SLOBODNO, а ширина и висина су му 75 пиксела, боја позадине му је наранџаста, а број је исписан црном бојом на средини поља и заузима једну трећину мање димензије поља (потребно је обезбедити промену величине садржаја поља при промени величине прозора). Поље статуса IZABRANO унутар целог поља исцртава елипсу попуњену плавом бојом, а број је исписан белом бојом. Поље статуса ПОГОЂЕНО унутар целог поља исцртава елипсу попуњену зеленом бојом, а број је исписан црном бојом. Поље статуса ПРОМАШЕН унутар целог поља исцртава елипсу попуњену црвеном бојом, а број је исписан црном бојом. Поље статуса СЕЛЕКТОВАН унутар целог поља исцртава елипсу попуњену белом бојом, а број је исписан црном бојом.  Кликом левог тастера миша на поље мења се његов статус (уколико је статус поља SLOBODNO оно постаје IZABRANO и обрнуто) и поље прослеђује мрежи информацију да се његов статус променио.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Мрежа&#039;&#039;&#039; је панел који садржи правоугаону матрицу поља и листу (ArrayList) поља која имају&lt;br /&gt;
статус IZABRANO и која може да се дохвати. Ствара се са задатим целобројним димензијама&lt;br /&gt;
(подразумевано 4 х 5) и игром (видети ниже) којој припада. Приликом стварања мреже, поља се&lt;br /&gt;
додају у мрежу редом по врстама, при чему се пољима задају сукцесивне целобројне вредности,&lt;br /&gt;
а нумерација креће од вредности 0. Поља су размакнута једна од других за 3 пиксела, а боја&lt;br /&gt;
позадине мреже је црна, тако да се постигне ефекат поља распоређених у мрежи. Могуће је&lt;br /&gt;
дохватити скуп (HashSet) који чине сви цели бројеви поља мреже са статусом IZABRANO.&lt;br /&gt;
Променом статуса неког њеног поља, мрежа ажурира листу поља са статусом IZABRANO и&lt;br /&gt;
прослеђује игри информацију да је поље променило статус.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Рулет&#039;&#039;&#039; је класа која анимира избор бројева. Ствара се са задатом мрежом. Садржи низ величине између 30% и 70% величине мреже. Тренутни број се може дохватити(он увек представља последњи број). Треба омогућити да се последњи број не може дохватити док се не заврши анимација. Анимација треба бити следећа: Почиње се тако што се селектује поље са вредности коју представља први члан низа, затим поставити статус тог поља на СЕЛЕКТОВАН, сачекати 200ms и затим вратити претходни статус пољу. Свака следећа итерација кроз низ треба повећати време чекања за 10% иницијалног чекања(200ms). Тренутни број је последњи број у итерацији.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Извлачење&#039;&#039;&#039; је класа која извлачи број с рулета. Ствара се са задатом игром и бројем рунди. Потребно је имплементирати тако да при покретању ова класа понови исти циклус колико има број рунди. Циклус се састоји од тога да покрене рулет, покупи с рулета последњи број и да обавести &#039;&#039;&#039;Игру&#039;&#039;&#039; да је иѕвучен број. Ако је број који је извучен би изабран, потребно је поставити статус тог поља на ПОГОЂЕН у супротном статус је ПРОМАШЕН. Затим треба чекати 1000ms после чега треба рестурирати стари статус поља.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Историја&#039;&#039;&#039; је панел који садржи листу ставки(видети слику). Ствара се са максималним капацитетом .Ставке требају бити класа &amp;lt;code&amp;gt;TextArea&amp;lt;/code&amp;gt;, не треба имати ни вертикални и хоризонтални скрол бар. Могуће је додати ставку. У случају да се додаје ставка која би прешла максимални капацитет, потребно је ту ставку убацити уместо најраније ставке. Ставка треба садржати број рунде, извучен број, улог и добитак.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Игра&#039;&#039;&#039; је главни прозор апликације (са слике) који садржи једну мрежу подразумеване величине,&lt;br /&gt;
која може да се дохвати, један панел за ставке (са леве стране), један панел за управљање (са десне стране) и статусну траку (на дну). Игру је могуће започети само уколико се изабере барем једно поље. Улог има подразумевану вредност 100. Број улога има подразумевану вредност 100 .Избором поља (променом његовог статуса) или изменом вредности улога врши се ажурирање вредности квоте и добитка који се приказују у прозору апликације. Вредност квоте се рачуна као количник укупног броја поља и броја поља са статусом IZABRANO. Вредност добитка се рачуна као производ квоте и улога. Игра се започиње кликом на дугме Igraj након чега се врши генерисање случајног целог броја у опсегу бројева на пољима мреже. Генерисани број исписује се у статусној траци на дну прозора, која се боји зеленом бојом уколико је генерисани број један од бројева на изабраним пољима мреже (број је погођен), односно црвеном бојом у&lt;br /&gt;
супротном (број је промашен). Уколико је генерисани број погођен, врши се додавање вредности добитка на вредност баланса, док се, уколико је број промашен, врши одузимање вредности улога од вредности баланса. Иницијална вредност баланса је 0. Иницијално, боја статусне траке је тамно-сива.&lt;br /&gt;
&lt;br /&gt;
== В3 ==&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2&amp;diff=2053</id>
		<title>ОО2</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2&amp;diff=2053"/>
		<updated>2021-06-04T15:32:53Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Лаб вежбе */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Објектно оријентисано програмирање 2&#039;&#039;&#039; је обавезан предмет у четвртом семестру, настављајући се на [[ОО1|Објектно оријентисано програмирање 1]].&lt;br /&gt;
&lt;br /&gt;
== Странице ==&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/ir2oo2/ Страница предмета]&lt;br /&gt;
&amp;lt;!--* [http://elearning.rcub.bg.ac.rs Moodle курс]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{Материјали&lt;br /&gt;
| suetf          = ir2oo2&lt;br /&gt;
| vuk            = 1tsApPhN_66xrdBYYFg_4PAivufJ4cBVQ&lt;br /&gt;
| box            = 8381893109&lt;br /&gt;
}}&lt;br /&gt;
* [https://github.com/nikolabebic95/Fakultet/tree/master/Godina2/OO2 Бебићев гитхуб]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Предавања ==&lt;br /&gt;
Овде се наводе све битне информације у вези са предавањима на предмету, као и потребни материјали.&lt;br /&gt;
&lt;br /&gt;
== Вежбе ==&lt;br /&gt;
Овде се наводе све битне информације у вези са вежбама на предмету, као и потребни материјали.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Домаћи ==&lt;br /&gt;
Погледати [[ОО1#Домаћи]].&lt;br /&gt;
&lt;br /&gt;
== Лаб вежбе ==&lt;br /&gt;
Исто као и на ОО1.&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = ОО2/Лаб&lt;br /&gt;
| noresultsheader = Тренутно нема модификација.&lt;br /&gt;
| format          = ,* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦5¦-1}²]]\n,,&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Слична прича као и за ОО1.&lt;br /&gt;
=== Пробни тестови ===&lt;br /&gt;
Овде се налазе пробни тестови дати за вежбу пред колоквијум на Moodle платформи.&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = ОО2/Пробни тестови&lt;br /&gt;
| noresultsheader = Тренутно нема решених рокова.&lt;br /&gt;
| format          = ,* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦5¦-1}²]]\n,,&lt;br /&gt;
}}&lt;br /&gt;
=== Колоквијум 1 ===&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = ОО2/К1&lt;br /&gt;
| noresultsheader = Тренутно нема решених рокова.&lt;br /&gt;
| format          = ,* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦5¦-1}²]]\n,,&lt;br /&gt;
}}&lt;br /&gt;
=== Колоквијум 2 ===&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = ОО2/К2&lt;br /&gt;
| noresultsheader = Тренутно нема решених рокова.&lt;br /&gt;
| format          = ,* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦5¦-1}²]]\n,,&lt;br /&gt;
}}&lt;br /&gt;
=== Испит ===&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = ОО2/.* \d+$&lt;br /&gt;
| nottitleregexp  = ОО2/К\d&lt;br /&gt;
| nottitleregexp  = ОО2/Пробни тестови&lt;br /&gt;
| nottitleregexp  = ОО2/Лаб&lt;br /&gt;
| noresultsheader = Тренутно нема решених рокова.&lt;br /&gt;
| format          = ,* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦5¦-1}²]]\n,,&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
Исто као и на ОО1.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
Предмет је могуће положити са највишом оценом без коришћења литературе. Градиво предмета покривено је у ширини у уџбеницима:&lt;br /&gt;
* &#039;&#039;&#039;[https://akademska-misao.rs/index.html#/info/book/576 Програмски језик Java са решеним задацима]&#039;&#039;&#039; 3. издање, Ласло Краус, &#039;&#039;Издавач: Академска Мисао, Београд&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://akademska-misao.rs/index.html#/info/book/308 Програмски језик C# са решеним задацима]&#039;&#039;&#039; 1. издање, Ласло Краус, &#039;&#039;Издавач: Академска Мисао, Београд&#039;&#039;&lt;br /&gt;
Збирке су од мањег значаја након увођења новог формата колоквијума:&lt;br /&gt;
* &#039;&#039;&#039;[https://akademska-misao.rs/index.html#/info/book/678 Решени задаци из програмског језика Java]&#039;&#039;&#039; 5. издање, Ласло Краус, &#039;&#039;Издавач: Академска Мисао, Београд&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://akademska-misao.rs/index.html#/info/book/9 Решени задаци из програмског језика C#]&#039;&#039;&#039; 2. издање, Ласло Краус, &#039;&#039;Издавач: Академска Мисао, Београд&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Четврти семестар]]&lt;br /&gt;
[[Категорија:Обавезни предмети]]&lt;br /&gt;
[[Категорија:ОО2]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2052</id>
		<title>ОО2/Лаб 3 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2052"/>
		<updated>2021-06-04T15:31:37Z</updated>

		<summary type="html">&lt;p&gt;Duke: додао сам мало више&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== В1 ==&lt;br /&gt;
&lt;br /&gt;
== В2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор&#039;&#039;&#039; случајних целих бројева генерише случајне целе бројеве на захтев. Могуће је&lt;br /&gt;
захтевати један случајан цео број ili niz od n elemenata у задатом опсегу доње и горње границе. Задате границе су инклузивне.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор јединствених&#039;&#039;&#039; целих бројева је генератор који генерише низ са јединственим бројевима помоћу хеш сета(&amp;lt;code&amp;gt;HashSet&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поље&#039;&#039;&#039; је платно (Canvas) које се ствара са задатом дводимензионом мрежом (видети ниже)&lt;br /&gt;
којој припада и задатом целобројном вредношћу (број) која представља натпис (лабелу) на&lt;br /&gt;
пољу и која може да се дохвати. Поље може имати један од следећих статуса:ПРОМАШЕНО, ПОГОЂЕНО, (И ЈОШ ЈЕДАН ЧИЈЕ ИМЕ СЕ НЕ СЕЋАМ, НЕК БУДЕ СЕЛЕКТОВАНО), SLOBODNO, IZABRANO, који се може поставити и дохватити. Подразумевано, поље има статус SLOBODNO, а ширина и висина су му 75 пиксела, боја позадине му је наранџаста, а број је исписан црном бојом на средини поља и заузима једну трећину мање димензије поља (потребно је обезбедити промену величине садржаја поља при промени величине прозора). Поље статуса IZABRANO унутар целог поља исцртава елипсу попуњену плавом бојом, а број је исписан белом бојом. Поље статуса ПОГОЂЕНО унутар целог поља исцртава елипсу попуњену зеленом бојом, а број је исписан црном бојом. Поље статуса ПРОМАШЕН унутар целог поља исцртава елипсу попуњену црвеном бојом, а број је исписан црном бојом. Поље статуса СЕЛЕКТОВАН унутар целог поља исцртава елипсу попуњену белом бојом, а број је исписан црном бојом.  Кликом левог тастера миша на поље мења се његов статус (уколико је статус поља SLOBODNO оно постаје IZABRANO и обрнуто) и поље прослеђује мрежи информацију да се његов статус променио.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Мрежа&#039;&#039;&#039; је панел који садржи правоугаону матрицу поља и листу (ArrayList) поља која имају&lt;br /&gt;
статус IZABRANO и која може да се дохвати. Ствара се са задатим целобројним димензијама&lt;br /&gt;
(подразумевано 4 х 5) и игром (видети ниже) којој припада. Приликом стварања мреже, поља се&lt;br /&gt;
додају у мрежу редом по врстама, при чему се пољима задају сукцесивне целобројне вредности,&lt;br /&gt;
а нумерација креће од вредности 0. Поља су размакнута једна од других за 3 пиксела, а боја&lt;br /&gt;
позадине мреже је црна, тако да се постигне ефекат поља распоређених у мрежи. Могуће је&lt;br /&gt;
дохватити скуп (HashSet) који чине сви цели бројеви поља мреже са статусом IZABRANO.&lt;br /&gt;
Променом статуса неког њеног поља, мрежа ажурира листу поља са статусом IZABRANO и&lt;br /&gt;
прослеђује игри информацију да је поље променило статус.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Рулет&#039;&#039;&#039; је класа која анимира избор бројева. Ствара се са задатом мрежом. Садржи низ величине између 30% и 70% величине мреже. Тренутни број се може дохватити(он увек представља последњи број). Треба омогућити да се последњи број не може дохватити док се не заврши анимација. Анимација треба бити следећа: Почиње се тако што се селектује поље са вредности коју представља први члан низа, затим поставити статус тог поља на СЕЛЕКТОВАН, сачекати 200ms и затим вратити претходни статус пољу. Свака следећа итерација кроз низ треба повећати време чекања за 10% иницијалног чекања(200ms). Тренутни број је последњи број у итерацији.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klasa koja treba da bira...???&#039;&#039;&#039; је класа која...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Istorija&#039;&#039;&#039; је панел који садржи листу ставки(видети слику). Ствара се са максималним капацитетом .Ставке требају бити класа &amp;lt;code&amp;gt;TextArea&amp;lt;/code&amp;gt;, не треба имати ни вертикални и хоризонтални скрол бар. Могуће је додати ставку. У случају да се додаје ставка која би прешла максимални капацитет, потребно је ту ставку убацити уместо најраније ставке. Ставка треба садржати број рунде, извучен број, улог и добитак.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Игра&#039;&#039;&#039; је главни прозор апликације (са слике) који садржи једну мрежу подразумеване величине,&lt;br /&gt;
која може да се дохвати, један панел за ставке (са леве стране), један панел за управљање (са десне стране) и статусну траку (на дну). Игру је могуће започети само уколико се изабере барем једно поље. Улог има подразумевану вредност 100. Број улога има подразумевану вредност 100 .Избором поља (променом његовог статуса) или изменом вредности улога врши се ажурирање вредности квоте и добитка који се приказују у прозору апликације. Вредност квоте се рачуна као количник укупног броја поља и броја поља са статусом IZABRANO. Вредност добитка се рачуна као производ квоте и улога. Игра се започиње кликом на дугме Igraj након чега се врши генерисање случајног целог броја у опсегу бројева на пољима мреже. Генерисани број исписује се у статусној траци на дну прозора, која се боји зеленом бојом уколико је генерисани број један од бројева на изабраним пољима мреже (број је погођен), односно црвеном бојом у&lt;br /&gt;
супротном (број је промашен). Уколико је генерисани број погођен, врши се додавање вредности добитка на вредност баланса, док се, уколико је број промашен, врши одузимање вредности улога од вредности баланса. Иницијална вредност баланса је 0. Иницијално, боја статусне траке је тамно-сива.&lt;br /&gt;
&lt;br /&gt;
== В3 ==&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2051</id>
		<title>ОО2/Лаб 3 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9B%D0%B0%D0%B1_3_2021&amp;diff=2051"/>
		<updated>2021-06-04T15:18:08Z</updated>

		<summary type="html">&lt;p&gt;Duke: prve izmene za Lab3 sad pisem ostatak&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== В1 ==&lt;br /&gt;
&lt;br /&gt;
== В2 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Генератор&#039;&#039;&#039; случајних целих бројева генерише случајне целе бројеве на захтев. Могуће је&lt;br /&gt;
захтевати један случајан цео број &#039;&#039;ili niz od n elemenata&#039;&#039; у задатом опсегу доње и горње границе. Задате границе су инклузивне.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Генератор јединствених&#039;&#039;&#039; целих бројева је генератор који генерише низ са јединственим бројевима помоћу хеш сета(HashSet).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поље&#039;&#039;&#039; је платно (Canvas) које се ствара са задатом дводимензионом мрежом (видети ниже)&lt;br /&gt;
којој припада и задатом целобројном вредношћу (број) која представља натпис (лабелу) на&lt;br /&gt;
пољу и која може да се дохвати. Поље може имати један од следећих статуса:&#039;&#039;ПРОМАШЕНО, ПОГОЂЕНО, (И ЈОШ ЈЕДАН ЧИЈЕ ИМЕ СЕ НЕ СЕЋАМ, НЕК БУДЕ СЕЛЕКТОВАНО),&#039;&#039; SLOBODNO, IZABRANO, који се може поставити и дохватити. Подразумевано, поље има статус SLOBODNO, а ширина и висина су му 75 пиксела, боја позадине му је наранџаста, а број је исписан црном бојом на средини поља и заузима једну трећину мање димензије поља (потребно је обезбедити промену величине садржаја поља при промени величине прозора). Поље статуса IZABRANO унутар целог поља исцртава елипсу попуњену плавом бојом, а број је исписан белом бојом. П&#039;&#039;оље статуса ПОГОЂЕНО унутар целог поља исцртава елипсу попуњену зеленом бојом, а број је исписан црном бојом. Поље статуса ПРОМАШЕН унутар целог поља исцртава елипсу попуњену црвеном бојом, а број је исписан црном бојом. Поље статуса СЕЛЕКТОВАН унутар целог поља исцртава елипсу попуњену белом бојом, а број је исписан црном бојом.&#039;&#039;  Кликом левог тастера миша на поље мења се његов статус (уколико је статус поља SLOBODNO оно постаје IZABRANO и обрнуто) и поље прослеђује мрежи информацију да се његов статус променио.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Мрежа&#039;&#039;&#039; је панел који садржи правоугаону матрицу поља и листу (ArrayList) поља која имају&lt;br /&gt;
статус IZABRANO и која може да се дохвати. Ствара се са задатим целобројним димензијама&lt;br /&gt;
(подразумевано 4 х 5) и игром (видети ниже) којој припада. Приликом стварања мреже, поља се&lt;br /&gt;
додају у мрежу редом по врстама, при чему се пољима задају сукцесивне целобројне вредности,&lt;br /&gt;
а нумерација креће од вредности 0. Поља су размакнута једна од других за 3 пиксела, а боја&lt;br /&gt;
позадине мреже је црна, тако да се постигне ефекат поља распоређених у мрежи. Могуће је&lt;br /&gt;
дохватити скуп (HashSet) који чине сви цели бројеви поља мреже са статусом IZABRANO.&lt;br /&gt;
Променом статуса неког њеног поља, мрежа ажурира листу поља са статусом IZABRANO и&lt;br /&gt;
прослеђује игри информацију да је поље променило статус.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== В3 ==&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2025</id>
		<title>ПОС/Лаб 4 2016</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2025"/>
		<updated>2021-05-17T19:48:30Z</updated>

		<summary type="html">&lt;p&gt;Duke: Dodato ono besorisno MT sto kao radi nesto i neophodno je kao&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;unhide-spoilers&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Група 3 ==&lt;br /&gt;
=== Задатак 1 ===&lt;br /&gt;
==== Поставка ====&lt;br /&gt;
(6) У фајл &#039;&#039;test/project/makefile&#039;&#039; уписати правила за превођење кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;. &lt;br /&gt;
У фолдеру &#039;&#039;obj&#039;&#039; треба се нађу сви &#039;&#039;.о&#039;&#039; фајлови, &lt;br /&gt;
У &#039;&#039;project&#039;&#039; фолдеру треба да се налази извршни фајл под називом &#039;&#039;program&#039;&#039;. &lt;br /&gt;
Правила треба да уклоне непотребне зависности.&lt;br /&gt;
Користити променљиве, &#039;&#039;$@&#039;&#039;, &#039;&#039;$&amp;lt;&#039;&#039;, &#039;&#039;$^&#039;&#039; и &#039;&#039;patsubst&#039;&#039; где год има смисла.&lt;br /&gt;
&lt;br /&gt;
(4) У &#039;&#039;makefile&#039;&#039; додати акције &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039;.&lt;br /&gt;
&#039;&#039;clean&#039;&#039; треба да брише све фајлове који нису &#039;&#039;.c&#039;&#039; или &#039;&#039;.h&#039;&#039; или &#039;&#039;makefile&#039;&#039; (потребно је уклонити и скривене фајлове који имају &#039;&#039;~&#039;&#039; на крају, а које генерише едитор)&lt;br /&gt;
&#039;&#039;all&#039;&#039; треба да уради поновно формирање свих зависних фајлова без обзира да ли су ажурирани или не &lt;br /&gt;
(дакле, треба да се опет генеришу сви &#039;&#039;.о&#039;&#039; фајлови, као и сам програм)&lt;br /&gt;
Заштити &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039; акције тако да се увек извршавају.&lt;br /&gt;
&lt;br /&gt;
==== Решење ====&lt;br /&gt;
Једно од решења које има максимални број бодова:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;makefile&amp;quot; class=&amp;quot;spoiler&amp;quot;&amp;gt;&lt;br /&gt;
# makefile&lt;br /&gt;
&lt;br /&gt;
CC = gcc&lt;br /&gt;
OBJDIR = ./obj&lt;br /&gt;
SRCDIR = ./src&lt;br /&gt;
IDIR = ./src/include&lt;br /&gt;
CFLAGS = -w -I$(IDIR)&lt;br /&gt;
PROGRAM = ../program&lt;br /&gt;
&lt;br /&gt;
SRC = $(wildcard $(SRCDIR)/*.c)&lt;br /&gt;
OBJ = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC))&lt;br /&gt;
DEP = $(patsubst $(SRCDIR)/%.c,$(SRCDIR)/%.d,$(SRC))&lt;br /&gt;
&lt;br /&gt;
$(PROGRAM): $(OBJ) &lt;br /&gt;
	$(CC) -o $@ $^&lt;br /&gt;
&lt;br /&gt;
$(OBJDIR)/%.o: $(SRCDIR)/%.c | proveridir&lt;br /&gt;
	$(CC) -o $@ -c $&amp;lt; $(CFLAGS)&lt;br /&gt;
&lt;br /&gt;
$(SRCDIR)/%.d: $(SRCDIR)/%.c&lt;br /&gt;
	$(CC) -MM -MT (OBJDIR)/%.o $&amp;lt; $(CFLAGS) &amp;gt; $@&lt;br /&gt;
	include $(DEP) &lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -rf obj&lt;br /&gt;
	rm -f $(PROGRAM)&lt;br /&gt;
	rm -f $(SRCDIR)/*.d&lt;br /&gt;
	rm -f *~&lt;br /&gt;
all: clean $(PROGRAM)&lt;br /&gt;
&lt;br /&gt;
proveridir:&lt;br /&gt;
	[ -d $(OBJDIR) ] || mkdir -p $(OBJDIR)&lt;br /&gt;
.PHONY: &lt;br /&gt;
	proveridir&lt;br /&gt;
	clean&lt;br /&gt;
	all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Задатак 2 ===&lt;br /&gt;
(4) Користећи &#039;&#039;gdb&#039;&#039;, написати следеће команде у фајл &#039;&#039;test/gdb/gdb.txt&#039;&#039;:&lt;br /&gt;
# Створити извршни програм од кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;&lt;br /&gt;
# Поставити бреакпоинт на линију 14 у &#039;&#039;main.c&#039;&#039; фајлу &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;a = dohvFibonaciBrojeve(n);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Покренути програм са параметром 10&lt;br /&gt;
# Ући у функцију &#039;&#039;dohvFibonaciBrojeve&#039;&#039; и прочитати вредност &#039;&#039;fib[9]&#039;&#039; када програм стигне до линије 18: &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;return (int*)fib;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Скочити на линију 23 у фајлу маин.ц: &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;return 0;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Завршити програм&lt;br /&gt;
# Приказати све бреакпоинт-ове&lt;br /&gt;
# Уклонити све бреакпоинт-ове&lt;br /&gt;
# Изаћи из дибагера&lt;br /&gt;
&lt;br /&gt;
==== Решење ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot;&amp;gt;&lt;br /&gt;
# potreban kontekst zadatka&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;break main.c:14&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;run 10&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# potreban kontekst zadatka&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;jump 23&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# ako se odnosi na završavanje debuggovanja, onda CTRL-c, ako se odnosi na završavanje gdb-a onda &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;quit&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;info breakpoint&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;delete&amp;lt;/syntaxhighlight&amp;gt; (bez argumenata) ili &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;clear main.c:14&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;quit&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:ПОС]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2020</id>
		<title>ПОС/Лаб 4 2016</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2020"/>
		<updated>2021-05-16T18:17:00Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Задатак 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;unhide-spoilers&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Група 3 ==&lt;br /&gt;
=== Задатак 1 ===&lt;br /&gt;
==== Поставка ====&lt;br /&gt;
(6) У фајл &#039;&#039;test/project/makefile&#039;&#039; уписати правила за превођење кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;. &lt;br /&gt;
У фолдеру &#039;&#039;obj&#039;&#039; треба се нађу сви &#039;&#039;.о&#039;&#039; фајлови, &lt;br /&gt;
У &#039;&#039;project&#039;&#039; фолдеру треба да се налази извршни фајл под називом &#039;&#039;program&#039;&#039;. &lt;br /&gt;
Правила треба да уклоне непотребне зависности.&lt;br /&gt;
Користити променљиве, &#039;&#039;$@&#039;&#039;, &#039;&#039;$&amp;lt;&#039;&#039;, &#039;&#039;$^&#039;&#039; и &#039;&#039;patsubst&#039;&#039; где год има смисла.&lt;br /&gt;
&lt;br /&gt;
(4) У &#039;&#039;makefile&#039;&#039; додати акције &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039;.&lt;br /&gt;
&#039;&#039;clean&#039;&#039; треба да брише све фајлове који нису &#039;&#039;.c&#039;&#039; или &#039;&#039;.h&#039;&#039; или &#039;&#039;makefile&#039;&#039; (потребно је уклонити и скривене фајлове који имају &#039;&#039;~&#039;&#039; на крају, а које генерише едитор)&lt;br /&gt;
&#039;&#039;all&#039;&#039; треба да уради поновно формирање свих зависних фајлова без обзира да ли су ажурирани или не &lt;br /&gt;
(дакле, треба да се опет генеришу сви &#039;&#039;.о&#039;&#039; фајлови, као и сам програм)&lt;br /&gt;
Заштити &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039; акције тако да се увек извршавају.&lt;br /&gt;
&lt;br /&gt;
==== Решење ====&lt;br /&gt;
Једно од решења које има максимални број бодова:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;makefile&amp;quot; class=&amp;quot;spoiler&amp;quot;&amp;gt;&lt;br /&gt;
# makefile&lt;br /&gt;
&lt;br /&gt;
CC = gcc&lt;br /&gt;
OBJDIR = ./obj&lt;br /&gt;
SRCDIR = ./src&lt;br /&gt;
IDIR = ./src/include&lt;br /&gt;
CFLAGS = -w -I$(IDIR)&lt;br /&gt;
PROGRAM = ../program&lt;br /&gt;
&lt;br /&gt;
SRC = $(wildcard $(SRCDIR)/*.c)&lt;br /&gt;
OBJ = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC))&lt;br /&gt;
DEP = $(patsubst $(SRCDIR)/%.c,$(SRCDIR)/%.d,$(SRC))&lt;br /&gt;
&lt;br /&gt;
$(PROGRAM): $(OBJ) &lt;br /&gt;
	$(CC) -o $@ $^&lt;br /&gt;
&lt;br /&gt;
$(OBJDIR)/%.o: $(SRCDIR)/%.c | proveridir&lt;br /&gt;
	$(CC) -o $@ -c $&amp;lt; $(CFLAGS)&lt;br /&gt;
&lt;br /&gt;
$(SRCDIR)/%.d: $(SRCDIR)/%.c&lt;br /&gt;
	$(CC) -MM $&amp;lt; $(CFLAGS) &amp;gt; $@&lt;br /&gt;
	include $(DEP) &lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -rf obj&lt;br /&gt;
	rm -f $(PROGRAM)&lt;br /&gt;
	rm -f $(SRCDIR)/*.d&lt;br /&gt;
	rm -f *~&lt;br /&gt;
all: clean $(PROGRAM)&lt;br /&gt;
&lt;br /&gt;
proveridir:&lt;br /&gt;
	[ -d $(OBJDIR) ] || mkdir -p $(OBJDIR)&lt;br /&gt;
.PHONY: &lt;br /&gt;
	proveridir&lt;br /&gt;
	clean&lt;br /&gt;
	all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Задатак 2 ===&lt;br /&gt;
(4) Користећи &#039;&#039;gdv&#039;&#039;, написати следеће команде у фајл &#039;&#039;test/gdb/gdb.txt&#039;&#039;:&lt;br /&gt;
# Створити извршни програм од кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;&lt;br /&gt;
# Поставити бреакпоинт на линију 14 у &#039;&#039;main.c&#039;&#039; фајлу &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;a = dohvFibonaciBrojeve(n);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Покренути програм са параметром 10&lt;br /&gt;
# Ући у функцију &#039;&#039;dohvFibonaciBrojeve&#039;&#039; и прочитати вредност &#039;&#039;fib[9]&#039;&#039; када програм стигне до линије 18: &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;return (int*)fib; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Скочити на линију 23 у фајлу маин.ц: &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;return 0;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Завршити програм&lt;br /&gt;
# Приказати све бреакпоинт-ове&lt;br /&gt;
# Уклонити све бреакпоинт-ове&lt;br /&gt;
# Изаћи из дибагера&lt;br /&gt;
&lt;br /&gt;
[[Категорија:ПОС]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2019</id>
		<title>ПОС/Лаб 4 2016</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2019"/>
		<updated>2021-05-16T18:16:37Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Задатак 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;unhide-spoilers&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Група 3 ==&lt;br /&gt;
=== Задатак 1 ===&lt;br /&gt;
==== Поставка ====&lt;br /&gt;
(6) У фајл &#039;&#039;test/project/makefile&#039;&#039; уписати правила за превођење кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;. &lt;br /&gt;
У фолдеру &#039;&#039;obj&#039;&#039; треба се нађу сви &#039;&#039;.о&#039;&#039; фајлови, &lt;br /&gt;
У &#039;&#039;project&#039;&#039; фолдеру треба да се налази извршни фајл под називом &#039;&#039;program&#039;&#039;. &lt;br /&gt;
Правила треба да уклоне непотребне зависности.&lt;br /&gt;
Користити променљиве, &#039;&#039;$@&#039;&#039;, &#039;&#039;$&amp;lt;&#039;&#039;, &#039;&#039;$^&#039;&#039; и &#039;&#039;patsubst&#039;&#039; где год има смисла.&lt;br /&gt;
&lt;br /&gt;
(4) У &#039;&#039;makefile&#039;&#039; додати акције &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039;.&lt;br /&gt;
&#039;&#039;clean&#039;&#039; треба да брише све фајлове који нису &#039;&#039;.c&#039;&#039; или &#039;&#039;.h&#039;&#039; или &#039;&#039;makefile&#039;&#039; (потребно је уклонити и скривене фајлове који имају &#039;&#039;~&#039;&#039; на крају, а које генерише едитор)&lt;br /&gt;
&#039;&#039;all&#039;&#039; треба да уради поновно формирање свих зависних фајлова без обзира да ли су ажурирани или не &lt;br /&gt;
(дакле, треба да се опет генеришу сви &#039;&#039;.о&#039;&#039; фајлови, као и сам програм)&lt;br /&gt;
Заштити &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039; акције тако да се увек извршавају.&lt;br /&gt;
&lt;br /&gt;
==== Решење ====&lt;br /&gt;
Једно од решења које има максимални број бодова:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;makefile&amp;quot; class=&amp;quot;spoiler&amp;quot;&amp;gt;&lt;br /&gt;
# makefile&lt;br /&gt;
&lt;br /&gt;
CC = gcc&lt;br /&gt;
OBJDIR = ./obj&lt;br /&gt;
SRCDIR = ./src&lt;br /&gt;
IDIR = ./src/include&lt;br /&gt;
CFLAGS = -w -I$(IDIR)&lt;br /&gt;
PROGRAM = ../program&lt;br /&gt;
&lt;br /&gt;
SRC = $(wildcard $(SRCDIR)/*.c)&lt;br /&gt;
OBJ = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC))&lt;br /&gt;
DEP = $(patsubst $(SRCDIR)/%.c,$(SRCDIR)/%.d,$(SRC))&lt;br /&gt;
&lt;br /&gt;
$(PROGRAM): $(OBJ) &lt;br /&gt;
	$(CC) -o $@ $^&lt;br /&gt;
&lt;br /&gt;
$(OBJDIR)/%.o: $(SRCDIR)/%.c | proveridir&lt;br /&gt;
	$(CC) -o $@ -c $&amp;lt; $(CFLAGS)&lt;br /&gt;
&lt;br /&gt;
$(SRCDIR)/%.d: $(SRCDIR)/%.c&lt;br /&gt;
	$(CC) -MM $&amp;lt; $(CFLAGS) &amp;gt; $@&lt;br /&gt;
	include $(DEP) &lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -rf obj&lt;br /&gt;
	rm -f $(PROGRAM)&lt;br /&gt;
	rm -f $(SRCDIR)/*.d&lt;br /&gt;
	rm -f *~&lt;br /&gt;
all: clean $(PROGRAM)&lt;br /&gt;
&lt;br /&gt;
proveridir:&lt;br /&gt;
	[ -d $(OBJDIR) ] || mkdir -p $(OBJDIR)&lt;br /&gt;
.PHONY: &lt;br /&gt;
	proveridir&lt;br /&gt;
	clean&lt;br /&gt;
	all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Задатак 2 ===&lt;br /&gt;
(4) Користећи &#039;&#039;gdv&#039;&#039;, написати следеће команде у фајл &#039;&#039;test/gdb/gdb.txt&#039;&#039;:&lt;br /&gt;
# Створити извршни програм од кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;&lt;br /&gt;
# Поставити бреакпоинт на линију 14 у &#039;&#039;main.c&#039;&#039; фајлу&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;a = dohvFibonaciBrojeve(n);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Покренути програм са параметром 10&lt;br /&gt;
# Ући у функцију &#039;&#039;dohvFibonaciBrojeve&#039;&#039; и прочитати вредност &#039;&#039;fib[9]&#039;&#039; када програм стигне до линије 18:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;return (int*)fib; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Скочити на линију 23 у фајлу маин.ц:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;return 0;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Завршити програм&lt;br /&gt;
# Приказати све бреакпоинт-ове&lt;br /&gt;
# Уклонити све бреакпоинт-ове&lt;br /&gt;
# Изаћи из дибагера&lt;br /&gt;
&lt;br /&gt;
[[Категорија:ПОС]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2018</id>
		<title>ПОС/Лаб 4 2016</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2018"/>
		<updated>2021-05-16T18:16:03Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Задатак 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;unhide-spoilers&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Група 3 ==&lt;br /&gt;
=== Задатак 1 ===&lt;br /&gt;
==== Поставка ====&lt;br /&gt;
(6) У фајл &#039;&#039;test/project/makefile&#039;&#039; уписати правила за превођење кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;. &lt;br /&gt;
У фолдеру &#039;&#039;obj&#039;&#039; треба се нађу сви &#039;&#039;.о&#039;&#039; фајлови, &lt;br /&gt;
У &#039;&#039;project&#039;&#039; фолдеру треба да се налази извршни фајл под називом &#039;&#039;program&#039;&#039;. &lt;br /&gt;
Правила треба да уклоне непотребне зависности.&lt;br /&gt;
Користити променљиве, &#039;&#039;$@&#039;&#039;, &#039;&#039;$&amp;lt;&#039;&#039;, &#039;&#039;$^&#039;&#039; и &#039;&#039;patsubst&#039;&#039; где год има смисла.&lt;br /&gt;
&lt;br /&gt;
(4) У &#039;&#039;makefile&#039;&#039; додати акције &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039;.&lt;br /&gt;
&#039;&#039;clean&#039;&#039; треба да брише све фајлове који нису &#039;&#039;.c&#039;&#039; или &#039;&#039;.h&#039;&#039; или &#039;&#039;makefile&#039;&#039; (потребно је уклонити и скривене фајлове који имају &#039;&#039;~&#039;&#039; на крају, а које генерише едитор)&lt;br /&gt;
&#039;&#039;all&#039;&#039; треба да уради поновно формирање свих зависних фајлова без обзира да ли су ажурирани или не &lt;br /&gt;
(дакле, треба да се опет генеришу сви &#039;&#039;.о&#039;&#039; фајлови, као и сам програм)&lt;br /&gt;
Заштити &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039; акције тако да се увек извршавају.&lt;br /&gt;
&lt;br /&gt;
==== Решење ====&lt;br /&gt;
Једно од решења које има максимални број бодова:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;makefile&amp;quot; class=&amp;quot;spoiler&amp;quot;&amp;gt;&lt;br /&gt;
# makefile&lt;br /&gt;
&lt;br /&gt;
CC = gcc&lt;br /&gt;
OBJDIR = ./obj&lt;br /&gt;
SRCDIR = ./src&lt;br /&gt;
IDIR = ./src/include&lt;br /&gt;
CFLAGS = -w -I$(IDIR)&lt;br /&gt;
PROGRAM = ../program&lt;br /&gt;
&lt;br /&gt;
SRC = $(wildcard $(SRCDIR)/*.c)&lt;br /&gt;
OBJ = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC))&lt;br /&gt;
DEP = $(patsubst $(SRCDIR)/%.c,$(SRCDIR)/%.d,$(SRC))&lt;br /&gt;
&lt;br /&gt;
$(PROGRAM): $(OBJ) &lt;br /&gt;
	$(CC) -o $@ $^&lt;br /&gt;
&lt;br /&gt;
$(OBJDIR)/%.o: $(SRCDIR)/%.c | proveridir&lt;br /&gt;
	$(CC) -o $@ -c $&amp;lt; $(CFLAGS)&lt;br /&gt;
&lt;br /&gt;
$(SRCDIR)/%.d: $(SRCDIR)/%.c&lt;br /&gt;
	$(CC) -MM $&amp;lt; $(CFLAGS) &amp;gt; $@&lt;br /&gt;
	include $(DEP) &lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -rf obj&lt;br /&gt;
	rm -f $(PROGRAM)&lt;br /&gt;
	rm -f $(SRCDIR)/*.d&lt;br /&gt;
	rm -f *~&lt;br /&gt;
all: clean $(PROGRAM)&lt;br /&gt;
&lt;br /&gt;
proveridir:&lt;br /&gt;
	[ -d $(OBJDIR) ] || mkdir -p $(OBJDIR)&lt;br /&gt;
.PHONY: &lt;br /&gt;
	proveridir&lt;br /&gt;
	clean&lt;br /&gt;
	all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Задатак 2 ===&lt;br /&gt;
(4) Користећи &#039;&#039;gdv&#039;&#039;, написати следеће команде у фајл &#039;&#039;test/gdb/gdb.txt&#039;&#039;:&lt;br /&gt;
# Створити извршни програм од кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;&lt;br /&gt;
# Поставити бреакпоинт на линију 14 у &#039;&#039;main.c&#039;&#039; фајлу&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;a = dohvFibonaciBrojeve(n);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Покренути програм са параметром 10&lt;br /&gt;
# Ући у функцију &#039;&#039;dohvFibonaciBrojeve&#039;&#039; &lt;br /&gt;
  и прочитати вредност &#039;&#039;fib[9]&#039;&#039; када програм стигне до линије 18:&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;return (int*)fib; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Скочити на линију 23 у фајлу маин.ц:&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;return 0;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Завршити програм&lt;br /&gt;
# Приказати све бреакпоинт-ове&lt;br /&gt;
# Уклонити све бреакпоинт-ове&lt;br /&gt;
# Изаћи из дибагера&lt;br /&gt;
&lt;br /&gt;
[[Категорија:ПОС]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2017</id>
		<title>ПОС/Лаб 4 2016</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2017"/>
		<updated>2021-05-16T18:14:48Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;unhide-spoilers&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Група 3 ==&lt;br /&gt;
=== Задатак 1 ===&lt;br /&gt;
==== Поставка ====&lt;br /&gt;
(6) У фајл &#039;&#039;test/project/makefile&#039;&#039; уписати правила за превођење кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;. &lt;br /&gt;
У фолдеру &#039;&#039;obj&#039;&#039; треба се нађу сви &#039;&#039;.о&#039;&#039; фајлови, &lt;br /&gt;
У &#039;&#039;project&#039;&#039; фолдеру треба да се налази извршни фајл под називом &#039;&#039;program&#039;&#039;. &lt;br /&gt;
Правила треба да уклоне непотребне зависности.&lt;br /&gt;
Користити променљиве, &#039;&#039;$@&#039;&#039;, &#039;&#039;$&amp;lt;&#039;&#039;, &#039;&#039;$^&#039;&#039; и &#039;&#039;patsubst&#039;&#039; где год има смисла.&lt;br /&gt;
&lt;br /&gt;
(4) У &#039;&#039;makefile&#039;&#039; додати акције &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039;.&lt;br /&gt;
&#039;&#039;clean&#039;&#039; треба да брише све фајлове који нису &#039;&#039;.c&#039;&#039; или &#039;&#039;.h&#039;&#039; или &#039;&#039;makefile&#039;&#039; (потребно је уклонити и скривене фајлове који имају &#039;&#039;~&#039;&#039; на крају, а које генерише едитор)&lt;br /&gt;
&#039;&#039;all&#039;&#039; треба да уради поновно формирање свих зависних фајлова без обзира да ли су ажурирани или не &lt;br /&gt;
(дакле, треба да се опет генеришу сви &#039;&#039;.о&#039;&#039; фајлови, као и сам програм)&lt;br /&gt;
Заштити &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039; акције тако да се увек извршавају.&lt;br /&gt;
&lt;br /&gt;
==== Решење ====&lt;br /&gt;
Једно од решења које има максимални број бодова:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;makefile&amp;quot; class=&amp;quot;spoiler&amp;quot;&amp;gt;&lt;br /&gt;
# makefile&lt;br /&gt;
&lt;br /&gt;
CC = gcc&lt;br /&gt;
OBJDIR = ./obj&lt;br /&gt;
SRCDIR = ./src&lt;br /&gt;
IDIR = ./src/include&lt;br /&gt;
CFLAGS = -w -I$(IDIR)&lt;br /&gt;
PROGRAM = ../program&lt;br /&gt;
&lt;br /&gt;
SRC = $(wildcard $(SRCDIR)/*.c)&lt;br /&gt;
OBJ = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC))&lt;br /&gt;
DEP = $(patsubst $(SRCDIR)/%.c,$(SRCDIR)/%.d,$(SRC))&lt;br /&gt;
&lt;br /&gt;
$(PROGRAM): $(OBJ) &lt;br /&gt;
	$(CC) -o $@ $^&lt;br /&gt;
&lt;br /&gt;
$(OBJDIR)/%.o: $(SRCDIR)/%.c | proveridir&lt;br /&gt;
	$(CC) -o $@ -c $&amp;lt; $(CFLAGS)&lt;br /&gt;
&lt;br /&gt;
$(SRCDIR)/%.d: $(SRCDIR)/%.c&lt;br /&gt;
	$(CC) -MM $&amp;lt; $(CFLAGS) &amp;gt; $@&lt;br /&gt;
	include $(DEP) &lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -rf obj&lt;br /&gt;
	rm -f $(PROGRAM)&lt;br /&gt;
	rm -f $(SRCDIR)/*.d&lt;br /&gt;
	rm -f *~&lt;br /&gt;
all: clean $(PROGRAM)&lt;br /&gt;
&lt;br /&gt;
proveridir:&lt;br /&gt;
	[ -d $(OBJDIR) ] || mkdir -p $(OBJDIR)&lt;br /&gt;
.PHONY: &lt;br /&gt;
	proveridir&lt;br /&gt;
	clean&lt;br /&gt;
	all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Задатак 2 ===&lt;br /&gt;
(4) Користећи &#039;&#039;gdv&#039;&#039;, написати следеће команде у фајл &#039;&#039;test/gdb/gdb.txt&#039;&#039;:&lt;br /&gt;
# Створити извршни програм од кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;&lt;br /&gt;
# Поставити бреакпоинт на линију 14 у &#039;&#039;main.c&#039;&#039; фајлу&lt;br /&gt;
# 14 Linija.    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;a = dohvFibonaciBrojeve(n);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Покренути програм са параметром 10&lt;br /&gt;
# Ући у функцију &#039;&#039;dohvFibonaciBrojeve&#039;&#039; &lt;br /&gt;
# и прочитати вредност &#039;&#039;fib[9]&#039;&#039; када програм стигне до линије 18:&lt;br /&gt;
# 18 Linija.    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;return (int*)fib; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Скочити на линију 23 у фајлу маин.ц:&lt;br /&gt;
# 23 Linija.    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;return 0;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Завршити програм&lt;br /&gt;
# Приказати све бреакпоинт-ове&lt;br /&gt;
# Уклонити све бреакпоинт-ове&lt;br /&gt;
# Изаћи из дибагера&lt;br /&gt;
&lt;br /&gt;
[[Категорија:ПОС]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2016</id>
		<title>ПОС/Лаб 4 2016</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2016"/>
		<updated>2021-05-16T18:14:05Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Група 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;unhide-spoilers&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Група 3 ==&lt;br /&gt;
=== Задатак 1 ===&lt;br /&gt;
==== Поставка ====&lt;br /&gt;
(6) У фајл &#039;&#039;test/project/makefile&#039;&#039; уписати правила за превођење кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;. &lt;br /&gt;
У фолдеру &#039;&#039;obj&#039;&#039; треба се нађу сви &#039;&#039;.о&#039;&#039; фајлови, &lt;br /&gt;
У &#039;&#039;project&#039;&#039; фолдеру треба да се налази извршни фајл под називом &#039;&#039;program&#039;&#039;. &lt;br /&gt;
Правила треба да уклоне непотребне зависности.&lt;br /&gt;
Користити променљиве, &#039;&#039;$@&#039;&#039;, &#039;&#039;$&amp;lt;&#039;&#039;, &#039;&#039;$^&#039;&#039; и &#039;&#039;patsubst&#039;&#039; где год има смисла.&lt;br /&gt;
&lt;br /&gt;
(4) У &#039;&#039;makefile&#039;&#039; додати акције &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039;.&lt;br /&gt;
&#039;&#039;clean&#039;&#039; треба да брише све фајлове који нису &#039;&#039;.c&#039;&#039; или &#039;&#039;.h&#039;&#039; или &#039;&#039;makefile&#039;&#039; (потребно је уклонити и скривене фајлове који имају &#039;&#039;~&#039;&#039; на крају, а које генерише едитор)&lt;br /&gt;
&#039;&#039;all&#039;&#039; треба да уради поновно формирање свих зависних фајлова без обзира да ли су ажурирани или не &lt;br /&gt;
(дакле, треба да се опет генеришу сви &#039;&#039;.о&#039;&#039; фајлови, као и сам програм)&lt;br /&gt;
Заштити &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039; акције тако да се увек извршавају.&lt;br /&gt;
&lt;br /&gt;
==== Решење ====&lt;br /&gt;
Једно од решења које има максимални број бодова:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;makefile&amp;quot; class=&amp;quot;spoiler&amp;quot;&amp;gt;&lt;br /&gt;
# makefile&lt;br /&gt;
&lt;br /&gt;
CC = gcc&lt;br /&gt;
OBJDIR = ./obj&lt;br /&gt;
SRCDIR = ./src&lt;br /&gt;
IDIR = ./src/include&lt;br /&gt;
CFLAGS = -w -I$(IDIR)&lt;br /&gt;
PROGRAM = ../program&lt;br /&gt;
&lt;br /&gt;
SRC = $(wildcard $(SRCDIR)/*.c)&lt;br /&gt;
OBJ = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC))&lt;br /&gt;
DEP = $(patsubst $(SRCDIR)/%.c,$(SRCDIR)/%.d,$(SRC))&lt;br /&gt;
&lt;br /&gt;
$(PROGRAM): $(OBJ) &lt;br /&gt;
	$(CC) -o $@ $^&lt;br /&gt;
&lt;br /&gt;
$(OBJDIR)/%.o: $(SRCDIR)/%.c | proveridir&lt;br /&gt;
	$(CC) -o $@ -c $&amp;lt; $(CFLAGS)&lt;br /&gt;
&lt;br /&gt;
$(SRCDIR)/%.d: $(SRCDIR)/%.c&lt;br /&gt;
	$(CC) -MM $&amp;lt; $(CFLAGS) &amp;gt; $@&lt;br /&gt;
	include $(DEP) &lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -rf obj&lt;br /&gt;
	rm -f $(PROGRAM)&lt;br /&gt;
	rm -f $(SRCDIR)/*.d&lt;br /&gt;
	rm -f *~&lt;br /&gt;
all: clean $(PROGRAM)&lt;br /&gt;
&lt;br /&gt;
proveridir:&lt;br /&gt;
	[ -d $(OBJDIR) ] || mkdir -p $(OBJDIR)&lt;br /&gt;
.PHONY: &lt;br /&gt;
	proveridir&lt;br /&gt;
	clean&lt;br /&gt;
	all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Задатак 2 ===&lt;br /&gt;
(4) Користећи &#039;&#039;gdv&#039;&#039;, написати следеће команде у фајл &#039;&#039;test/gdb/gdb.txt&#039;&#039;:&lt;br /&gt;
# Створити извршни програм од кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;&lt;br /&gt;
# Поставити бреакпоинт на линију 14 у &#039;&#039;main.c&#039;&#039; фајлу&lt;br /&gt;
# 14    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;a = dohvFibonaciBrojeve(n);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Покренути програм са параметром 10&lt;br /&gt;
# Ући у функцију &#039;&#039;dohvFibonaciBrojeve&#039;&#039; &lt;br /&gt;
# и прочитати вредност &#039;&#039;fib[9]&#039;&#039; када програм стигне до линије 18:&lt;br /&gt;
# 18    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;return (int*)fib; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Скочити на линију 23 у фајлу маин.ц:&lt;br /&gt;
# 23    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;return 0;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Завршити програм&lt;br /&gt;
# Приказати све бреакпоинт-ове&lt;br /&gt;
# Уклонити све бреакпоинт-ове&lt;br /&gt;
# Изаћи из дибагера&lt;br /&gt;
==== Поставка ====&lt;br /&gt;
&lt;br /&gt;
[[Категорија:ПОС]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2015</id>
		<title>ПОС/Лаб 4 2016</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2015"/>
		<updated>2021-05-16T18:08:01Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;unhide-spoilers&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Група 3 ==&lt;br /&gt;
=== Задатак 1 ===&lt;br /&gt;
==== Поставка ====&lt;br /&gt;
(6) У фајл &#039;&#039;test/project/makefile&#039;&#039; уписати правила за превођење кода датог у фолдерима &#039;&#039;src&#039;&#039; и &#039;&#039;include&#039;&#039;. &lt;br /&gt;
У фолдеру &#039;&#039;obj&#039;&#039; треба се нађу сви &#039;&#039;.о&#039;&#039; фајлови, &lt;br /&gt;
У &#039;&#039;project&#039;&#039; фолдеру треба да се налази извршни фајл под називом &#039;&#039;program&#039;&#039;. &lt;br /&gt;
Правила треба да уклоне непотребне зависности.&lt;br /&gt;
Користити променљиве, &#039;&#039;$@&#039;&#039;, &#039;&#039;$&amp;lt;&#039;&#039;, &#039;&#039;$^&#039;&#039; и &#039;&#039;patsubst&#039;&#039; где год има смисла.&lt;br /&gt;
&lt;br /&gt;
(4) У &#039;&#039;makefile&#039;&#039; додати акције &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039;.&lt;br /&gt;
&#039;&#039;clean&#039;&#039; треба да брише све фајлове који нису &#039;&#039;.c&#039;&#039; или &#039;&#039;.h&#039;&#039; или &#039;&#039;makefile&#039;&#039; (потребно је уклонити и скривене фајлове који имају &#039;&#039;~&#039;&#039; на крају, а које генерише едитор)&lt;br /&gt;
&#039;&#039;all&#039;&#039; треба да уради поновно формирање свих зависних фајлова без обзира да ли су ажурирани или не &lt;br /&gt;
(дакле, треба да се опет генеришу сви &#039;&#039;.о&#039;&#039; фајлови, као и сам програм)&lt;br /&gt;
Заштити &#039;&#039;clean&#039;&#039; и &#039;&#039;all&#039;&#039; акције тако да се увек извршавају.&lt;br /&gt;
&lt;br /&gt;
==== Решење ====&lt;br /&gt;
Једно од решења које има максимални број бодова:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;makefile&amp;quot; class=&amp;quot;spoiler&amp;quot;&amp;gt;&lt;br /&gt;
# makefile&lt;br /&gt;
&lt;br /&gt;
CC = gcc&lt;br /&gt;
OBJDIR = ./obj&lt;br /&gt;
SRCDIR = ./src&lt;br /&gt;
IDIR = ./src/include&lt;br /&gt;
CFLAGS = -w -I$(IDIR)&lt;br /&gt;
PROGRAM = ../program&lt;br /&gt;
&lt;br /&gt;
SRC = $(wildcard $(SRCDIR)/*.c)&lt;br /&gt;
OBJ = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC))&lt;br /&gt;
DEP = $(patsubst $(SRCDIR)/%.c,$(SRCDIR)/%.d,$(SRC))&lt;br /&gt;
&lt;br /&gt;
$(PROGRAM): $(OBJ) &lt;br /&gt;
	$(CC) -o $@ $^&lt;br /&gt;
&lt;br /&gt;
$(OBJDIR)/%.o: $(SRCDIR)/%.c | proveridir&lt;br /&gt;
	$(CC) -o $@ -c $&amp;lt; $(CFLAGS)&lt;br /&gt;
&lt;br /&gt;
$(SRCDIR)/%.d: $(SRCDIR)/%.c&lt;br /&gt;
	$(CC) -MM $&amp;lt; $(CFLAGS) &amp;gt; $@&lt;br /&gt;
	include $(DEP) &lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -rf obj&lt;br /&gt;
	rm -f $(PROGRAM)&lt;br /&gt;
	rm -f $(SRCDIR)/*.d&lt;br /&gt;
	rm -f *~&lt;br /&gt;
all: clean $(PROGRAM)&lt;br /&gt;
&lt;br /&gt;
proveridir:&lt;br /&gt;
	[ -d $(OBJDIR) ] || mkdir -p $(OBJDIR)&lt;br /&gt;
.PHONY: &lt;br /&gt;
	proveridir&lt;br /&gt;
	clean&lt;br /&gt;
	all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:ПОС]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2014</id>
		<title>ПОС/Лаб 4 2016</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2014"/>
		<updated>2021-05-16T18:06:22Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Поставка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;unhide-spoilers&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Група 3 ==&lt;br /&gt;
=== Задатак 1 ===&lt;br /&gt;
==== Поставка ====&lt;br /&gt;
(6) У фајл &#039;test/project/makefile&#039; уписати правила за превођење кода датог у фолдерима &#039;src&#039; и &#039;include&#039;. &lt;br /&gt;
У фолдеру &#039;obj&#039; треба се нађу сви .о фајлови, &lt;br /&gt;
У &#039;project&#039; фолдеру треба да се налази извршни фајл под називом &#039;program&#039;. &lt;br /&gt;
Правила треба да уклоне непотребне зависности.&lt;br /&gt;
Користити променљиве, &#039;$@&#039;, &#039;$&amp;lt;&#039;, &#039;$^&#039; и &#039;patsubst&#039; где год има смисла.&lt;br /&gt;
&lt;br /&gt;
(4) У &#039;makefile&#039; додати акције &#039;clean&#039; и &#039;all&#039;.&lt;br /&gt;
&#039;clean&#039; треба да брише све фајлове који нису &#039;.c&#039; или &#039;.h&#039; или &#039;makefile&#039; (потребно је уклонити и скривене фајлове који имају &#039;~&#039; на крају, а које генерише едитор)&lt;br /&gt;
&#039;all&#039; треба да уради поновно формирање свих зависних фајлова без обзира да ли су ажурирани или не &lt;br /&gt;
(дакле, треба да се опет генеришу сви &#039;.о&#039; фајлови, као и сам програм)&lt;br /&gt;
Заштити &#039;clean&#039; и &#039;all&#039; акције тако да се увек извршавају.&lt;br /&gt;
&lt;br /&gt;
==== Решење ====&lt;br /&gt;
Једно од решења које има максимални број бодова:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;makefile&amp;quot; class=&amp;quot;spoiler&amp;quot;&amp;gt;&lt;br /&gt;
# makefile&lt;br /&gt;
&lt;br /&gt;
CC = gcc&lt;br /&gt;
OBJDIR = ./obj&lt;br /&gt;
SRCDIR = ./src&lt;br /&gt;
IDIR = ./src/include&lt;br /&gt;
CFLAGS = -w -I$(IDIR)&lt;br /&gt;
PROGRAM = ../program&lt;br /&gt;
&lt;br /&gt;
SRC = $(wildcard $(SRCDIR)/*.c)&lt;br /&gt;
OBJ = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC))&lt;br /&gt;
DEP = $(patsubst $(SRCDIR)/%.c,$(SRCDIR)/%.d,$(SRC))&lt;br /&gt;
&lt;br /&gt;
$(PROGRAM): $(OBJ) &lt;br /&gt;
	$(CC) -o $@ $^&lt;br /&gt;
&lt;br /&gt;
$(OBJDIR)/%.o: $(SRCDIR)/%.c | proveridir&lt;br /&gt;
	$(CC) -o $@ -c $&amp;lt; $(CFLAGS)&lt;br /&gt;
&lt;br /&gt;
$(SRCDIR)/%.d: $(SRCDIR)/%.c&lt;br /&gt;
	$(CC) -MM $&amp;lt; $(CFLAGS) &amp;gt; $@&lt;br /&gt;
	include $(DEP) &lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -rf obj&lt;br /&gt;
	rm -f $(PROGRAM)&lt;br /&gt;
	rm -f $(SRCDIR)/*.d&lt;br /&gt;
	rm -f *~&lt;br /&gt;
all: clean $(PROGRAM)&lt;br /&gt;
&lt;br /&gt;
proveridir:&lt;br /&gt;
	[ -d $(OBJDIR) ] || mkdir -p $(OBJDIR)&lt;br /&gt;
.PHONY: &lt;br /&gt;
	proveridir&lt;br /&gt;
	clean&lt;br /&gt;
	all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:ПОС]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2013</id>
		<title>ПОС/Лаб 4 2016</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%A1/%D0%9B%D0%B0%D0%B1_4_2016&amp;diff=2013"/>
		<updated>2021-05-16T18:05:57Z</updated>

		<summary type="html">&lt;p&gt;Duke: Dodato resenje prvog zadatka&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;unhide-spoilers&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Група 3 ==&lt;br /&gt;
=== Задатак 1 ===&lt;br /&gt;
==== Поставка ====&lt;br /&gt;
(6) У фајл &#039;test/project/makefile&#039; уписати правила за превођење кода датог у фолдерима &#039;src&#039; и &#039;include&#039;. &lt;br /&gt;
У фолдеру &#039;obj&#039; треба се нађу сви .о фајлови, &lt;br /&gt;
У &#039;project&#039; фолдеру треба да се налази извршни фајл под називом &#039;program&#039;. &lt;br /&gt;
Правила треба да уклоне непотребне зависности.&lt;br /&gt;
Користити променљиве, &#039;$@&#039;, &#039;$&amp;lt;&#039;, &#039;$^&#039; и &#039;patsubst&#039; где год има смисла.&lt;br /&gt;
(4) У &#039;makefile&#039; додати акције &#039;clean&#039; и &#039;all&#039;.&lt;br /&gt;
&#039;clean&#039; треба да брише све фајлове који нису &#039;.c&#039; или &#039;.h&#039; или &#039;makefile&#039; (потребно је уклонити и скривене фајлове који имају &#039;~&#039; на крају, а које генерише едитор)&lt;br /&gt;
&#039;all&#039; треба да уради поновно формирање свих зависних фајлова без обзира да ли су ажурирани или не &lt;br /&gt;
(дакле, треба да се опет генеришу сви &#039;.о&#039; фајлови, као и сам програм)&lt;br /&gt;
Заштити &#039;clean&#039; и &#039;all&#039; акције тако да се увек извршавају. &lt;br /&gt;
&lt;br /&gt;
==== Решење ====&lt;br /&gt;
Једно од решења које има максимални број бодова:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;makefile&amp;quot; class=&amp;quot;spoiler&amp;quot;&amp;gt;&lt;br /&gt;
# makefile&lt;br /&gt;
&lt;br /&gt;
CC = gcc&lt;br /&gt;
OBJDIR = ./obj&lt;br /&gt;
SRCDIR = ./src&lt;br /&gt;
IDIR = ./src/include&lt;br /&gt;
CFLAGS = -w -I$(IDIR)&lt;br /&gt;
PROGRAM = ../program&lt;br /&gt;
&lt;br /&gt;
SRC = $(wildcard $(SRCDIR)/*.c)&lt;br /&gt;
OBJ = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC))&lt;br /&gt;
DEP = $(patsubst $(SRCDIR)/%.c,$(SRCDIR)/%.d,$(SRC))&lt;br /&gt;
&lt;br /&gt;
$(PROGRAM): $(OBJ) &lt;br /&gt;
	$(CC) -o $@ $^&lt;br /&gt;
&lt;br /&gt;
$(OBJDIR)/%.o: $(SRCDIR)/%.c | proveridir&lt;br /&gt;
	$(CC) -o $@ -c $&amp;lt; $(CFLAGS)&lt;br /&gt;
&lt;br /&gt;
$(SRCDIR)/%.d: $(SRCDIR)/%.c&lt;br /&gt;
	$(CC) -MM $&amp;lt; $(CFLAGS) &amp;gt; $@&lt;br /&gt;
	include $(DEP) &lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -rf obj&lt;br /&gt;
	rm -f $(PROGRAM)&lt;br /&gt;
	rm -f $(SRCDIR)/*.d&lt;br /&gt;
	rm -f *~&lt;br /&gt;
all: clean $(PROGRAM)&lt;br /&gt;
&lt;br /&gt;
proveridir:&lt;br /&gt;
	[ -d $(OBJDIR) ] || mkdir -p $(OBJDIR)&lt;br /&gt;
.PHONY: &lt;br /&gt;
	proveridir&lt;br /&gt;
	clean&lt;br /&gt;
	all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:ПОС]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F/%D0%9B%D0%B0%D0%B1_1_2021&amp;diff=1981</id>
		<title>ПООП/Лаб 1 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F/%D0%9B%D0%B0%D0%B1_1_2021&amp;diff=1981"/>
		<updated>2021-05-11T15:51:55Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Модификације 2021 =&lt;br /&gt;
&lt;br /&gt;
== 1. Група ==&lt;br /&gt;
&lt;br /&gt;
== 2. Група ==&lt;br /&gt;
&lt;br /&gt;
Поставка : Израчунати максимални износ новца који корисник може имати за одређени период.&lt;br /&gt;
&lt;br /&gt;
Решење : Посматрамо дати график. &lt;br /&gt;
[[Датотека:Слика.png|thumb|мини|индикатор]]&lt;br /&gt;
[[Датотека:Slikasaliniju.png|thumb|мини|slika sa dodatnu liniju]]&lt;br /&gt;
&lt;br /&gt;
Потребно је да од почетка низа до краја низа индикатора тражимо локалне минимуме и максимуме. Када дођемо до максимума, продамо све акције које поседујемо, ако дођемо до минимума, купимо колико год можемо. На крају, проверимо ако имамо неке остале купљене акције, продамо их.&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=1980</id>
		<title>ПООП</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F&amp;diff=1980"/>
		<updated>2021-05-11T15:51:40Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Modifikacije */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Практикум из објектно оријентисаног програмирања&#039;&#039;&#039; (ПООП) је изборни предмет у четвртом семестру.&lt;br /&gt;
&lt;br /&gt;
== Странице ==&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/ Страница предмета]&lt;br /&gt;
* [https://rti.etf.bg.ac.rs/rti/13S112POOP/materijali/ Пројектни задаци из претходних година]&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{Материјали&lt;br /&gt;
| vuk = 1Hurdf0yxDWLcFmWV1cQrcqtOWiAT1_iD&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modifikacije ==&lt;br /&gt;
[https://si.kocka.tech/wiki/%D0%9F%D0%9E%D0%9E%D0%9F/modifikacija2021 Modifkacije 2021]&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* Пројектни задатак из C++-a (35 поена)&lt;br /&gt;
* Пројектни задатак из Jave (35 поена)&lt;br /&gt;
* Испит који се састоји из надоградње пројектног задатка из Jave (30 поена)&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Четврти семестар]]&lt;br /&gt;
[[Категорија:Изборни предмети]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F/%D0%9B%D0%B0%D0%B1_1_2021&amp;diff=1979</id>
		<title>ПООП/Лаб 1 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F/%D0%9B%D0%B0%D0%B1_1_2021&amp;diff=1979"/>
		<updated>2021-05-11T15:50:51Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Модификације 2021 =&lt;br /&gt;
&lt;br /&gt;
== 1. Група ==&lt;br /&gt;
&lt;br /&gt;
== 2. Група ==&lt;br /&gt;
&lt;br /&gt;
Поставка : Израчунати максимални износ новца који корисник може имати за одређени период.&lt;br /&gt;
&lt;br /&gt;
Решење : Посматрамо дати график. &lt;br /&gt;
[[Датотека:Слика.png|thumb|мини|центар|индикатор]]&lt;br /&gt;
[[Датотека:Slikasaliniju.png|thumb|мини|slika sa dodatnu liniju]]&lt;br /&gt;
&lt;br /&gt;
Потребно је да од почетка низа до краја низа индикатора тражимо локалне минимуме и максимуме. Када дођемо до максимума, продамо све акције које поседујемо, ако дођемо до минимума, купимо колико год можемо. На крају, проверимо ако имамо неке остале купљене акције, продамо их.&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F/%D0%9B%D0%B0%D0%B1_1_2021&amp;diff=1978</id>
		<title>ПООП/Лаб 1 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%9E%D0%9E%D0%9F/%D0%9B%D0%B0%D0%B1_1_2021&amp;diff=1978"/>
		<updated>2021-05-11T15:47:47Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Модификације 2021 =&lt;br /&gt;
&lt;br /&gt;
== 1. Група ==&lt;br /&gt;
&lt;br /&gt;
== 2. Група ==&lt;br /&gt;
&lt;br /&gt;
Поставка : Израчунати максимални износ новца који корисник може имати за одређени период.&lt;br /&gt;
&lt;br /&gt;
Решење : Посматрамо дати график. &lt;br /&gt;
[[Датотека:Слика.png|мини|центар|индикатор]]&lt;br /&gt;
[[Датотека:Slikasaliniju.png|мини|slika sa dodatnu liniju]]&lt;br /&gt;
&lt;br /&gt;
Потребно је да од почетка низа до краја низа индикатора тражимо локалне минимуме и максимуме. Када дођемо до максимума, продамо све акције које поседујемо, ако дођемо до минимума, купимо колико год можемо. На крају, проверимо ако имамо неке остале купљене акције, продамо их.&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
</feed>