<?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=KockaAdmiralac</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=KockaAdmiralac"/>
	<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/KockaAdmiralac"/>
	<updated>2026-06-04T11:31:42Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%86%D0%B0:Solutions.js&amp;diff=8351</id>
		<title>Справица:Solutions.js</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%86%D0%B0:Solutions.js&amp;diff=8351"/>
		<updated>2026-03-18T20:40:02Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: 18px -&amp;gt; 20px&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* eslint-disable max-statements */&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var $body = $(&#039;body&#039;);&lt;br /&gt;
    var questions = [];&lt;br /&gt;
    var allSolutionsShown = false;&lt;br /&gt;
    var CORRECT_SRC = &#039;https://upload.wikimedia.org/wikipedia/en/thumb/f/fb/Yes_check.svg/20px-Yes_check.svg.png&#039;;&lt;br /&gt;
    var INCORRECT_SRC = &#039;https://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/X_mark.svg/20px-X_mark.svg.png&#039;;&lt;br /&gt;
    var staticId = 0;&lt;br /&gt;
    var questionIdMap = {};&lt;br /&gt;
    var interactiveMode = null;&lt;br /&gt;
&lt;br /&gt;
    function createButton(msg) {&lt;br /&gt;
        return $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
            &#039;class&#039;: [&lt;br /&gt;
                &#039;oo-ui-buttonElement&#039;,&lt;br /&gt;
                &#039;oo-ui-buttonElement-framed&#039;,&lt;br /&gt;
                &#039;oo-ui-flaggedElement-primary&#039;,&lt;br /&gt;
                &#039;oo-ui-flaggedElement-progressive&#039;,&lt;br /&gt;
                &#039;oo-ui-labelElement&#039;,&lt;br /&gt;
                &#039;oo-ui-widget-enabled&#039;&lt;br /&gt;
            ].join(&#039; &#039;)&lt;br /&gt;
        }).append(&lt;br /&gt;
            $(&#039;&amp;lt;button&amp;gt;&#039;, {&lt;br /&gt;
                &#039;class&#039;: &#039;oo-ui-buttonElement-button&#039;,&lt;br /&gt;
                &#039;tabindex&#039;: &#039;0&#039;&lt;br /&gt;
            }).append(&lt;br /&gt;
                $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
                    &#039;class&#039;: &#039;oo-ui-labelElement-label label&#039;,&lt;br /&gt;
                    &#039;text&#039;: mw.message(&#039;gadget-solutions-&#039; + msg).plain()&lt;br /&gt;
                })&lt;br /&gt;
            )&lt;br /&gt;
        );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function createCorrectImage(correct) {&lt;br /&gt;
        // TODO: alt&lt;br /&gt;
        return $(&#039;&amp;lt;img&amp;gt;&#039;, {&lt;br /&gt;
            &#039;class&#039;: &#039;correct&#039;,&lt;br /&gt;
            &#039;src&#039;: correct ?&lt;br /&gt;
                CORRECT_SRC :&lt;br /&gt;
                INCORRECT_SRC&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function Question($elem) {&lt;br /&gt;
        this.id = staticId++;&lt;br /&gt;
        questionIdMap[this.id] = this;&lt;br /&gt;
        this.$elem = $elem.addClass(&#039;loaded&#039;);&lt;br /&gt;
        this.state = allSolutionsShown;&lt;br /&gt;
        if (allSolutionsShown) {&lt;br /&gt;
            this.$butt = createButton(&#039;hide&#039;);&lt;br /&gt;
            this.show();&lt;br /&gt;
        } else {&lt;br /&gt;
            this.$butt = createButton(&#039;show&#039;);&lt;br /&gt;
            this.hide();&lt;br /&gt;
        }&lt;br /&gt;
        this.appendButton();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Question.prototype.isAttached = function() {&lt;br /&gt;
        return $.contains(document, this.$elem[0]);&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    Question.prototype.show = function() {&lt;br /&gt;
        this.$butt&lt;br /&gt;
            .off()&lt;br /&gt;
            .click(this.hide.bind(this))&lt;br /&gt;
            .find(&#039;.label&#039;)&lt;br /&gt;
            .text(mw.message(&#039;gadget-solutions-hide&#039;).plain());&lt;br /&gt;
        if (this.explanation) {&lt;br /&gt;
            this.explanation.show();&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    Question.prototype.hide = function() {&lt;br /&gt;
        this.$butt&lt;br /&gt;
            .off()&lt;br /&gt;
            .click(this.show.bind(this))&lt;br /&gt;
            .find(&#039;.label&#039;)&lt;br /&gt;
            .text(mw.message(&#039;gadget-solutions-show&#039;).plain());&lt;br /&gt;
        if (this.explanation) {&lt;br /&gt;
            this.explanation.hide();&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    Question.prototype.appendButton = function() {&lt;br /&gt;
        this.$elem.after(this.$butt);&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    function Text($elem) {&lt;br /&gt;
        this.solution = $elem.text().trim();&lt;br /&gt;
        this.$input = $(&#039;&amp;lt;input&amp;gt;&#039;, {&lt;br /&gt;
            type: &#039;text&#039;&lt;br /&gt;
        });&lt;br /&gt;
        Question.call(this, $elem);&lt;br /&gt;
    }&lt;br /&gt;
    OO.inheritClass(Text, Question);&lt;br /&gt;
&lt;br /&gt;
    Text.prototype.show = function() {&lt;br /&gt;
        Question.prototype.show.call(this);&lt;br /&gt;
        this.$elem.addClass(&#039;spoiler show&#039;);&lt;br /&gt;
        var answer = this.$input.val().trim();&lt;br /&gt;
        this.$input.val(&#039;&#039;);&lt;br /&gt;
        this.$elem.text(this.solution);&lt;br /&gt;
        if (answer) {&lt;br /&gt;
            this.$elem.prepend(createCorrectImage(this.solution === answer));&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    Text.prototype.hide = function() {&lt;br /&gt;
        Question.prototype.hide.call(this);&lt;br /&gt;
        this.$elem&lt;br /&gt;
            .removeClass(&#039;spoiler&#039;)&lt;br /&gt;
            .empty()&lt;br /&gt;
            .append(this.$input);&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    function Choice($elem, inputType) {&lt;br /&gt;
        this.inputType = inputType;&lt;br /&gt;
        Question.call(this, $elem);&lt;br /&gt;
    }&lt;br /&gt;
    OO.inheritClass(Choice, Question);&lt;br /&gt;
&lt;br /&gt;
    Choice.prototype.show = function() {&lt;br /&gt;
        Question.prototype.show.call(this);&lt;br /&gt;
        this.$elem.addClass(&#039;show&#039;);&lt;br /&gt;
        this.$elem.find(&#039;li&#039;).each(function(_, el) {&lt;br /&gt;
            var $li = $(el);&lt;br /&gt;
            var isCorrect = $li.find(&#039;.solution&#039;).length === 1;&lt;br /&gt;
            var $input = $li.find(&#039;input&#039;);&lt;br /&gt;
            var isChecked = $input.prop(&#039;checked&#039;);&lt;br /&gt;
            $input.remove();&lt;br /&gt;
            $li.html($li.find(&#039;label&#039;).html());&lt;br /&gt;
            if (isChecked) {&lt;br /&gt;
                $li.prepend(createCorrectImage(isCorrect === isChecked));&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    Choice.prototype.hide = function() {&lt;br /&gt;
        Question.prototype.hide.call(this);&lt;br /&gt;
        this.$elem.removeClass(&#039;show&#039;);&lt;br /&gt;
        this.$elem.find(&#039;li&#039;).each(function(index, el) {&lt;br /&gt;
            var $li = $(el);&lt;br /&gt;
            var id = &#039;solution-&#039; + this.id + &#039;-&#039; + index;&lt;br /&gt;
            $li.find(&#039;img.correct&#039;).remove();&lt;br /&gt;
            $li&lt;br /&gt;
                .html($(&#039;&amp;lt;label&amp;gt;&#039;, {&lt;br /&gt;
                    &#039;for&#039;: id,&lt;br /&gt;
                    &#039;html&#039;: $li.html()&lt;br /&gt;
                }))&lt;br /&gt;
                .prepend($(&#039;&amp;lt;input&amp;gt;&#039;, {&lt;br /&gt;
                    id: id,&lt;br /&gt;
                    name: &#039;solution-&#039; + this.id,&lt;br /&gt;
                    type: this.inputType&lt;br /&gt;
                }));&lt;br /&gt;
        }.bind(this));&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    function Select($elem) {&lt;br /&gt;
        var options = $elem.attr(&#039;data-options&#039;);&lt;br /&gt;
        if (options) {&lt;br /&gt;
            this.options = options&lt;br /&gt;
                .split(&#039;,&#039;)&lt;br /&gt;
                .map(function(opt) {&lt;br /&gt;
                    return opt.trim();&lt;br /&gt;
                });&lt;br /&gt;
            this.$select = $(&#039;&amp;lt;select&amp;gt;&#039;)&lt;br /&gt;
                .append(this.options.map(function(opt) {&lt;br /&gt;
                    return $(&#039;&amp;lt;option&amp;gt;&#039;, {&lt;br /&gt;
                        text: opt&lt;br /&gt;
                    });&lt;br /&gt;
                }));&lt;br /&gt;
        }&lt;br /&gt;
        Question.call(this, $elem);&lt;br /&gt;
    }&lt;br /&gt;
    OO.inheritClass(Select, Question);&lt;br /&gt;
&lt;br /&gt;
    Select.prototype.show = function() {&lt;br /&gt;
        Question.prototype.show.call(this);&lt;br /&gt;
        this.$elem.find(&#039;&amp;gt; ul &amp;gt; li, &amp;gt; ol &amp;gt; li, td&#039;).each(function(_, el) {&lt;br /&gt;
            var $li = $(el);&lt;br /&gt;
            var images = [];&lt;br /&gt;
            $li.find(&#039;select&#039;).each(function(__, el2) {&lt;br /&gt;
                var $select = $(el2);&lt;br /&gt;
                var selected = $select.prop(&#039;selectedIndex&#039;);&lt;br /&gt;
                var answer = $select.attr(&#039;data-answer&#039;);&lt;br /&gt;
                var options = $select&lt;br /&gt;
                    .find(&#039;option&#039;)&lt;br /&gt;
                    .map(function(___, opt) {&lt;br /&gt;
                        return $(opt).text();&lt;br /&gt;
                    }).toArray();&lt;br /&gt;
                var correct = options.indexOf(answer);&lt;br /&gt;
                $select.replaceWith($(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
                    &#039;data-options&#039;: options.join(&#039;,&#039;),&lt;br /&gt;
                    &#039;class&#039;: &#039;spoiler show&#039;,&lt;br /&gt;
                    &#039;text&#039;: answer&lt;br /&gt;
                }));&lt;br /&gt;
                images.push(createCorrectImage(selected === correct));&lt;br /&gt;
            });&lt;br /&gt;
            $li.prepend(images);&lt;br /&gt;
        });&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    Select.prototype.hide = function() {&lt;br /&gt;
        Question.prototype.hide.call(this);&lt;br /&gt;
        var $thisSelect = this.$select;&lt;br /&gt;
        this.$elem.find(&#039;&amp;gt; ul &amp;gt; li, &amp;gt; ol &amp;gt; li, td&#039;).each(function(_, el) {&lt;br /&gt;
            var $li = $(el);&lt;br /&gt;
            $li.find(&#039;img.correct&#039;).remove();&lt;br /&gt;
            $li.find(&#039;.spoiler&#039;).each(function(__, el2) {&lt;br /&gt;
                var $spoiler = $(el2);&lt;br /&gt;
                var $oldSelect = $thisSelect;&lt;br /&gt;
                if (!$oldSelect) {&lt;br /&gt;
                    // Each list item has different options.&lt;br /&gt;
                    $oldSelect = $(&#039;&amp;lt;select&amp;gt;&#039;).append(&lt;br /&gt;
                        $spoiler&lt;br /&gt;
                            .attr(&#039;data-options&#039;)&lt;br /&gt;
                            .split(&#039;,&#039;)&lt;br /&gt;
                            .map(function(opt) {&lt;br /&gt;
                                return $(&#039;&amp;lt;option&amp;gt;&#039;, {&lt;br /&gt;
                                    text: opt.trim()&lt;br /&gt;
                                });&lt;br /&gt;
                            })&lt;br /&gt;
                    );&lt;br /&gt;
                }&lt;br /&gt;
                $spoiler.replaceWith(&lt;br /&gt;
                    $oldSelect&lt;br /&gt;
                        .clone()&lt;br /&gt;
                        .attr(&#039;data-answer&#039;, $spoiler.text())&lt;br /&gt;
                );&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    function Explanation($elem) {&lt;br /&gt;
        Question.call(this, $elem);&lt;br /&gt;
        questionIdMap[this.id - 1].explanation = this;&lt;br /&gt;
    }&lt;br /&gt;
    OO.inheritClass(Explanation, Question);&lt;br /&gt;
&lt;br /&gt;
    Explanation.prototype.appendButton = $.noop;&lt;br /&gt;
&lt;br /&gt;
    Explanation.prototype.show = function() {&lt;br /&gt;
        Question.prototype.show.call(this);&lt;br /&gt;
        this.$elem.addClass(&#039;show&#039;);&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    Explanation.prototype.hide = function() {&lt;br /&gt;
        Question.prototype.hide.call(this);&lt;br /&gt;
        this.$elem.removeClass(&#039;show&#039;);&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    function Plain($elem) {&lt;br /&gt;
        Question.call(this, $elem);&lt;br /&gt;
    }&lt;br /&gt;
    OO.inheritClass(Plain, Question);&lt;br /&gt;
&lt;br /&gt;
    Plain.prototype.show = function() {&lt;br /&gt;
        Question.prototype.show.call(this);&lt;br /&gt;
        this.$elem.addClass(&#039;show&#039;);&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    Plain.prototype.hide = function() {&lt;br /&gt;
        Question.prototype.hide.call(this);&lt;br /&gt;
        this.$elem.removeClass(&#039;show&#039;);&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    function createQuestion(_, elem) {&lt;br /&gt;
        var $elem = $(elem);&lt;br /&gt;
        var type = $elem.attr(&#039;data-solution&#039;);&lt;br /&gt;
        if (!interactiveMode) {&lt;br /&gt;
            if (type === &#039;explanation&#039;) {&lt;br /&gt;
                return new Explanation($elem);&lt;br /&gt;
            }&lt;br /&gt;
            return new Plain($elem);&lt;br /&gt;
        }&lt;br /&gt;
        switch (type) {&lt;br /&gt;
            case &#039;text&#039;: return new Text($elem);&lt;br /&gt;
            case &#039;single&#039;: return new Choice($elem, &#039;radio&#039;);&lt;br /&gt;
            case &#039;multiple&#039;: return new Choice($elem, &#039;checkbox&#039;);&lt;br /&gt;
            case &#039;select&#039;: return new Select($elem);&lt;br /&gt;
            case &#039;explanation&#039;: return new Explanation($elem);&lt;br /&gt;
            default: return new Plain($elem);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function toggleAll() {&lt;br /&gt;
        var $label = $(this).find(&#039;.label&#039;);&lt;br /&gt;
        allSolutionsShown = !allSolutionsShown;&lt;br /&gt;
        if (allSolutionsShown) {&lt;br /&gt;
            $label.text(mw.message(&#039;gadget-solutions-hide-all&#039;).plain());&lt;br /&gt;
        } else {&lt;br /&gt;
            $label.text(mw.message(&#039;gadget-solutions-show-all&#039;).plain());&lt;br /&gt;
        }&lt;br /&gt;
        questions.forEach(function(q) {&lt;br /&gt;
            if (allSolutionsShown) {&lt;br /&gt;
                q.show();&lt;br /&gt;
            } else {&lt;br /&gt;
                q.hide();&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function checkInteractiveMode() {&lt;br /&gt;
        if (interactiveMode !== null) {&lt;br /&gt;
            // We already checked for interactive mode.&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        var interactiveModeLS = mw.storage.get(&#039;solutions-interactive&#039;);&lt;br /&gt;
        if (interactiveModeLS) {&lt;br /&gt;
            // The interactive mode has been set.&lt;br /&gt;
            interactiveMode = interactiveModeLS === &#039;yes&#039;;&lt;br /&gt;
        } else {&lt;br /&gt;
            mw.storage.set(&#039;solutions-interactive&#039;, &#039;yes&#039;);&lt;br /&gt;
            interactiveMode = true;&lt;br /&gt;
            mw.notification.notify(mw.message(&#039;gadget-solutions-interactive-notification&#039;), {&lt;br /&gt;
                type: &#039;info&#039;&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function toggleInteractive() {&lt;br /&gt;
        mw.storage.set(&#039;solutions-interactive&#039;, interactiveMode ? &#039;no&#039; : &#039;yes&#039;);&lt;br /&gt;
        window.location.reload();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function hook($content) {&lt;br /&gt;
        if ($content.find(&#039;[data-solution]&#039;).length) {&lt;br /&gt;
            // Only check for interactive mode if we&#039;re on a page where it can be used.&lt;br /&gt;
            checkInteractiveMode();&lt;br /&gt;
        }&lt;br /&gt;
        $content&lt;br /&gt;
            // TODO: unhide -&amp;gt; show&lt;br /&gt;
            .find(&#039;.unhide-solutions:not(.loaded)&#039;)&lt;br /&gt;
            .addClass(&#039;loaded&#039;)&lt;br /&gt;
            .append([&lt;br /&gt;
                createButton(&lt;br /&gt;
                    allSolutionsShown ?&lt;br /&gt;
                        &#039;hide-all&#039; :&lt;br /&gt;
                        &#039;show-all&#039;&lt;br /&gt;
                ).click(toggleAll),&lt;br /&gt;
                createButton(&lt;br /&gt;
                    interactiveMode ?&lt;br /&gt;
                        &#039;disable-interactive&#039; :&lt;br /&gt;
                        &#039;enable-interactive&#039;&lt;br /&gt;
                ).click(toggleInteractive)&lt;br /&gt;
            ]);&lt;br /&gt;
        questions = questions.filter(function(q) {&lt;br /&gt;
            var ret = q.isAttached();&lt;br /&gt;
            if (!ret) {&lt;br /&gt;
                delete questionIdMap[q.id];&lt;br /&gt;
            }&lt;br /&gt;
            return q.isAttached();&lt;br /&gt;
        }).concat(&lt;br /&gt;
            $content.find(&#039;[data-solution]:not(.loaded)&#039;)&lt;br /&gt;
                .map(createQuestion)&lt;br /&gt;
                .toArray()&lt;br /&gt;
        );&lt;br /&gt;
    }&lt;br /&gt;
    mw.hook(&#039;wikipage.content&#039;).add(hook);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8_2&amp;diff=8255</id>
		<title>Информациони системи 2</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8_2&amp;diff=8255"/>
		<updated>2026-02-13T13:08:09Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: /* Испит */ Ispravka DPL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| шифра     = 13С114ИС2&lt;br /&gt;
| семестар  = 7&lt;br /&gt;
| статус    = изборни&lt;br /&gt;
| страница  = [http://is2.etf.bg.ac.rs/ is2.etf.rs]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
| претходни = Информациони системи 1&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Информациони системи 2&#039;&#039;&#039; је изборни предмет у седмом семестру, као наставак [[Информациони системи 1|Информационих система 1]].&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде иде листа (спољашњих, не на викију) веза до свих корисних страница у вези са предметом, укључујући материјале поменуте на [[Остали материјали]].. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Прво иду везе до званичних страница, па онда осталих, уређених по корисности --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Остале корисне везе, попут веза до развојних окружења која се користе на предмету --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Корисно је сумаризовати поред сваког линка какви се материјали налазе на њему (рокови, решења, белешке, водичи, лабови, модификације) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
Области се на следећи начин обрађују по блоковима:&lt;br /&gt;
* К1 (15п):&lt;br /&gt;
** &#039;&#039;&#039;Предавања (видеи 2-5)&#039;&#039;&#039;: BPMN дијаграми процеса. На колоквијуму се добија један задатак где се тражи цртање дијаграма процеса на основу описа пословног процеса и други задатак где се тражи анализа пословног процеса и модификација тог процеса. Колоквијум се ради у вежбанци.&lt;br /&gt;
* К2 (15п):&lt;br /&gt;
** &#039;&#039;&#039;Предавања (видеи 7-9)&#039;&#039;&#039;: BPMN дијаграми кореографије, BPMN дијаграми конверзације, Сервиси. Ко не жели да улази у детаље довољно је првих 20ак минута П7 и последњих 30 минута П9 (где се раде задаци). На колоквијуму се добија један задатак где треба да се црта дијаграм кореографије или конверзације и други задатак где се дефинишу АПИ-јеви сервиса и црта дијаграм секвенце који приказује како се ти АПИ-јеви користе.&lt;br /&gt;
* К3 (30п):&lt;br /&gt;
** &#039;&#039;&#039;Предавања (видеи 10-12)&#039;&#039;&#039;: Складишта података. На испиту долази један задатак где треба пројектовати складиште на основу дате шеме и описа података које су од интереса за складиште и други задатак где треба додати нова поља у табеле, описати потребне тригере и извршити пуњење складишта у псеудо-SQL који се ради на предавањима.&lt;br /&gt;
&lt;br /&gt;
== Лабораторијске вежбе ==&lt;br /&gt;
У школској 2025/2026 години, лабораторијске вежбе су избачене са овог предмета. Од школске 2025/2026 године, &#039;&#039;&#039;лабови више не постоје&#039;&#039;&#039; на овом предмету.&lt;br /&gt;
Области које се раде на лабораторијским вежбама:&lt;br /&gt;
* Лаб1 (12п)&lt;br /&gt;
** &#039;&#039;&#039;Вежбе (1-2)&#039;&#039;&#039; BPMN. Прави се дијаграм описаног процеса, али за разлику од К1, где се ради на папиру, овде се ради у алату Adonis.&lt;br /&gt;
* Лаб2 (8п)&lt;br /&gt;
** &#039;&#039;&#039;Вежбе (7-8.1)&#039;&#039;&#039; Складишта података. Углавном буде само писање упита мада може да дође и прављење шеме.&lt;br /&gt;
&lt;br /&gt;
== Пројекат(20п) ==&lt;br /&gt;
&#039;&#039;&#039;Вежбе (8.2-9)&#039;&#039;&#039; су релевантне искључиво за пројекат, али да би се успешно урадио потребно је и знање за К3 и лаб2.&lt;br /&gt;
&lt;br /&gt;
Ради се у алатима MySql Workbench, Spoon и Schema-Workbench. У пројекту је дата шема операционе база података и треба испројектовати и имплементирати складиште података на основу поставке задатка. Пројекат се може поделити у 4 фазе: прављење операционе базе, пројектовање складишта, прављење пуњења и писање MDX упита.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Напомене за SQL скрипте:&#039;&#039;&#039;&lt;br /&gt;
*Пошто се током пројекта користе две схеме - једна за операциону базу, а друга за складиште, топла препорука је да се у скриптама користи квалификовани назив табела да би се избегла потреба да се константно мења default schema у Workbenchu. Дакле табелу Lekar у схеми ordinacija_operativna ћемо увек референцирати са ordinacija_operativna.Lekar, а не само Lekar.&lt;br /&gt;
*Такође, у скриптама за креирање табела додати на почетку DROP TABLE IF EXISTS за сваку од табела да би се олакшало тестирање јер ће вероватно бити потребно да више пута празнимо и поново пунимо складиште током тестирања пуњења.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Напомена за Spoon на одбрани&#039;&#039;&#039;&lt;br /&gt;
*Из неког разлога функција YEAR() не ради на факултетском Spoonu, али је могуће користити SUBSTR(Datum, 1, 4) да се добије година из датума, па је океј то одмах ставити у трансформације.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Прављење операционе базе података (MySql Workbench):&#039;&#039;&#039; На основу дате шеме треба написати SQL скрипту која прави табеле операционе базе података. Затим треба написати још једну скрипту која попуњава операциону базу довољним бројем података (бар 10 редова у свакој табели). Такође је потребно написати скрипту која додаје податке у базу, да би се тестирало и инкрементално пуњење. Ова скрипта може да додаје по ред-два у сваку од табела.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Пројектовање складишта (MySql Workbench):&#039;&#039;&#039; На основу описаних табела факата треба испројектовати складиште података. За складиште је потребно написати SQL скрипту која ће да креира релевантне табеле. Обратити пажњу да је за инкрементално пуњење потребно чувати датум последњег пуњења. Ово је најлакше постићи тако што ће складиште имати табелу која има један ред где чува поменути датум, који ће се при сваком пуњењу ажурирати. Да би могле да се користе исте Spoon трансформације и за тотално и за инкрементално пуњење, добро је овој табели дати иницијалну вредност &#039;1000-01-01 00:00:00&#039; (најранији могући датум)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Прављење пуњења (Spoon):&#039;&#039;&#039; Потребно је направити два Spoon посла - тотално пуњење и инкрементално пуњење. Тотално пуњење се покреће да би се сви релевантни подаци из операционе базе пренели у табеле складишта. Инкрементално пуњење служи да допреми само оне редове који су уписани после последњег пуњења и односи се само на оне податке који су везани за неки датум (на пример табела Mesto ће се попунити једном током тоталног пуњења јер се сматра да се не додају константно нова места).&lt;br /&gt;
&lt;br /&gt;
На вежбама 8.2 и 9 су показане ствари попут dblink и merge joini, али то није заправо потребно. Довољно је користити Table input, која има конекцију на оперативну базу, и Table output, која има конекцију на складиште, и повезати их. Ако у упиту који се врши у Table input желимо да приступимо табели из складишта, довољно је да ту табелу позовемо квалификованим именом (нпр. ordinacija_skladise.Poslednje_Punjenje). Сви упити у трансформацији се врше истовремено, тако да ако постоји нека зависност, треба одвојити у различите трансофмације и касније повезати у послу, где се трансформације врше секвенцијално (нпр. прво пребацујемо Mesto, па онда Korisnik).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Писање MDX упита (Schema-Workbench):&#039;&#039;&#039; Треба се повезати на складиште и направити шему у Schema-Workbench. Како се то ради је објашњено на вежбама 8.1. Након што се шема направи потребно је написати неколико простих упита који су задати у домаћем. Предаје се и xml фајл шеме и сами упити.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Одбрана:&#039;&#039;&#039; На одбрани нема модификација. Прво се покреће скрипта за прављење операционе шеме, затим скрипта за попуњавање исте, затим тотално пуњење, затим скрипта за додавање података у операциону шему и на крају инкрементално пуњење. Након оба пуњења се ради неки прост SQL упит над складиштем да би асистент видео да пуњења раде. После овога могу да траже да им се покажу и MDX упити и шема, али и не морају.&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови се не објављују на страници предмета, али се у одељку за [[#Потребна помоћ|препис рокова]] могу наћи неки рокови од претходних година.&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          = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦24¦-1}²]],,&lt;br /&gt;
}}&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          = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦24¦-1}²]],,&lt;br /&gt;
}}&lt;br /&gt;
=== Испит ===&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = Информациони_системи_2/Јануар&lt;br /&gt;
| titleregexp     = Информациони_системи_2/Фебруар&lt;br /&gt;
| titleregexp     = Информациони_системи_2/Јун&lt;br /&gt;
| titleregexp     = Информациони_системи_2/Јул&lt;br /&gt;
| titleregexp     = Информациони_системи_2/Август&lt;br /&gt;
| titleregexp     = Информациони_системи_2/Септембар&lt;br /&gt;
| titleregexp     = Информациони_системи_2/Октобар&lt;br /&gt;
| format          = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦24¦-1}²]],,&lt;br /&gt;
| noresultsheader = Тренутно нема испитних рокова.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
Слично као на [[Информациони системи 1#Начин оцењивања|ИС1]], осим што су бодови са лабораторијских вежби замењени.&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — Бодови са колоквијума (0-15). &#039;&#039;&#039;На сваки колоквијум је могуће изаћи само једном.&#039;&#039;&#039; Надокнада колоквијума могућа је у термину јануарског испита.&lt;br /&gt;
* &amp;lt;math&amp;gt;L_1&amp;lt;/math&amp;gt; — Бодови са прве лабораторијске вежбе (0-12). &#039;&#039;&#039;Могуће је изаћи само једном.&#039;&#039;&#039; Надокнада могућа у фебруарском испитном року.&lt;br /&gt;
* &amp;lt;math&amp;gt;L_2&amp;lt;/math&amp;gt; — Бодови са друге лабораторијске вежбе (0-8). &#039;&#039;&#039;Могуће је изаћи само једном.&#039;&#039;&#039; Надокнада могућа у фебруарском испитном року.&lt;br /&gt;
* &amp;lt;math&amp;gt;PR&amp;lt;/math&amp;gt; — Бодови са пројекта (0-20). &#039;&#039;&#039;Пројекат се може бранити само једном.&#039;&#039;&#039; Надокнада могућа у фебруарском испитном року.&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — Бодови са испита (0-30). &amp;lt;!-- Не брините се, испит може да се ради више пута. --&amp;gt;&lt;br /&gt;
* Укупни бодови: &amp;lt;math&amp;gt;P = K_1 + K_2 + L_1 + L_2 + PR + I&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P \leq 50&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;50 &amp;lt; P \leq 60&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;60 &amp;lt; P \leq 70&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;70 &amp;lt; P \leq 80&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;80 &amp;lt; P \leq 90&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;90 &amp;lt; P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Рачунање ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;calculator&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;K1&amp;quot; data-max=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;K_2&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;K2&amp;quot; data-max=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_1&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;L1&amp;quot; data-max=&amp;quot;12&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_2&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;L2&amp;quot; data-max=&amp;quot;8&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;PR&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;PR&amp;quot; data-max=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;I&amp;quot; data-max=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;P&amp;quot; data-expression=&amp;quot;K1 K2 L1 L2 PR I + + + + +&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* Оцена: &amp;lt;span data-expression=&amp;quot;P 10 / ceil 5 max 10 min&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Потребна помоћ ==&lt;br /&gt;
* {{задаци|postavke}}&lt;br /&gt;
* {{задаци|prepis}}&lt;br /&gt;
** К1 2020 rešenje: [https://cdn.discordapp.com/attachments/725101389285556225/1033798946335760524/Resenje_Z1.pdf]&lt;br /&gt;
** K2 septembar 2021: [https://cdn.discordapp.com/attachments/696381655933386832/1074609589946962030/15.09.2021_Sep_2021_K2.docx]&lt;br /&gt;
** К2 2022: [https://cdn.discordapp.com/attachments/725101389285556225/1063425294557532270/Screenshot_20230113_125144_Gallery.jpg]&lt;br /&gt;
** Пример К3 из 2022/2023. године: [https://cdn.discordapp.com/attachments/725101389285556225/1063264638940217404/IS2-k3-primer.pdf]&lt;br /&gt;
** К3 2022: [https://cdn.discordapp.com/attachments/725101389285556225/1063678658407055440/WhatsApp_Image_2023-01-14_at_05.30.36.jpeg]&lt;br /&gt;
** К3 2023: [https://cdn.discordapp.com/attachments/725101389285556225/1071402228474195968/2e6fb381-0fcf-4c8c-9ace-bfc40d5bcabf.jpg]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice&amp;diff=8077</id>
		<title>Медијавики:Sitenotice</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice&amp;diff=8077"/>
		<updated>2025-09-28T06:05:27Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Aha, kapiram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice&amp;diff=8076</id>
		<title>Медијавики:Sitenotice</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice&amp;diff=8076"/>
		<updated>2025-09-28T06:04:55Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Hmm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;sitenotice-box&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;sitenotice-box__image&amp;quot;&amp;gt;[[File:Ambox notice.png|link=]]&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Ако већ нисте видели, у подешавањима је доступна &#039;&#039;&#039;[[Посебно:Подешавања#mw-prefsection-rendering|тамна тема]]&#039;&#039;&#039;!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice_id&amp;diff=8075</id>
		<title>Медијавики:Sitenotice id</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice_id&amp;diff=8075"/>
		<updated>2025-09-28T06:03:05Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Bump&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;5&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice&amp;diff=8074</id>
		<title>Медијавики:Sitenotice</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice&amp;diff=8074"/>
		<updated>2025-09-28T06:01:57Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Mislim da možemo ovo da zatvorimo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Darkvector-action-move&amp;diff=7995</id>
		<title>Медијавики:Darkvector-action-move</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Darkvector-action-move&amp;diff=7995"/>
		<updated>2025-09-13T11:04:57Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Isto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преименуј&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Vector-action-move&amp;diff=7994</id>
		<title>Медијавики:Vector-action-move</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Vector-action-move&amp;diff=7994"/>
		<updated>2025-09-13T11:04:43Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Isto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преименуј&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Skin-action-move&amp;diff=7993</id>
		<title>Медијавики:Skin-action-move</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Skin-action-move&amp;diff=7993"/>
		<updated>2025-09-13T11:04:02Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Премести -&amp;gt; Преименуј&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преименуј&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Move&amp;diff=7992</id>
		<title>Медијавики:Move</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Move&amp;diff=7992"/>
		<updated>2025-09-13T11:03:00Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: премести -&amp;gt; преименуј&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;преименуј&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%A1%D0%9C&amp;diff=7969</id>
		<title>АСМ</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%A1%D0%9C&amp;diff=7969"/>
		<updated>2025-08-26T17:12:23Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Autokategorizacija i jedna ispravka&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| назив     = Анализа социјалних мрежа&lt;br /&gt;
| шифра     = 13М111АСМ&lt;br /&gt;
| семестар  = 9&lt;br /&gt;
| статус    = изборни&lt;br /&gt;
| страница  = [https://rti.etf.bg.ac.rs/rti/ms1asm/ rti.etf.bg.ac.rs/rti/ms1asm]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Анализа социјалних мрежа&#039;&#039;&#039; је изборни предмет из групе А на мастер студијама, на модулу за софтверско инжењерство.&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
&amp;lt;!-- Остале корисне везе, попут веза до развојних окружења која се користе на предмету --&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;br /&gt;
* Кластери у реалним мрежама&lt;br /&gt;
* Мрежни модели&lt;br /&gt;
* Библиометријске и наукометријске анализе&lt;br /&gt;
* Визуелизација мреже&lt;br /&gt;
* &#039;&#039;NetworkX&#039;&#039; библиотека&lt;br /&gt;
* Транспортне мреже&lt;br /&gt;
* Бипартитне мреже&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
На предмету постоје два пројектна задатка. Први пројектни задатак носи 20 поена, и састоји се од анализе изабраног научног рада и кратке презентације његовог садржаја. Други пројектни задатак носи 40 поена, и састоји се од анализе и обраде података и моделовања мреже на неком реалном примеру (претходни пројекти укључују анализу мреже градског саобраћаја и мреже сицилијанске мафије). Оба пројекта се бране заједно.&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Рокови се могу наћи на страници предмета. Следећи рокови су сакупљени на викију:&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| category    = АСМ&lt;br /&gt;
| category    = Рокови&lt;br /&gt;
| format      = ,\n* &amp;lt;span class=&amp;quot;rok,&amp;quot;&amp;gt;[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦5¦-1}²]]&amp;lt;/span&amp;gt;,&lt;br /&gt;
| ordermethod = title&lt;br /&gt;
| include     = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl&lt;br /&gt;
}}&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* &amp;lt;math&amp;gt;PR_1&amp;lt;/math&amp;gt; — Бодови са првог пројектог задатка (0-20)&lt;br /&gt;
* &amp;lt;math&amp;gt;PR_2&amp;lt;/math&amp;gt; — Бодови са другог пројектог задатка (0-40)&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — Бодови са испита (0-40)&lt;br /&gt;
* Укупни бодови: &amp;lt;math&amp;gt;P = PR_1 + PR_2 + I&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P \leq 50&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;50 &amp;lt; P \leq 60&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;60 &amp;lt; P \leq 70&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;70 &amp;lt; P \leq 80&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;80 &amp;lt; P \leq 90&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;90 &amp;lt; P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Потребна помоћ ==&lt;br /&gt;
* {{задаци|postavke}}&lt;br /&gt;
* {{задаци|prepis}}&lt;br /&gt;
** Јавити се неком од старијих уређивача викија како би добили непреписане рокове.&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80/%D0%88%D1%83%D0%BB_1_2025&amp;diff=7955</id>
		<title>Системски софтвер/Јул 1 2025</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80/%D0%88%D1%83%D0%BB_1_2025&amp;diff=7955"/>
		<updated>2025-08-22T21:58:23Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Današnji rok od jednog kolege&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Испит у року јул 1 2025. године&#039;&#039;&#039; одржан је 22. августа. Трајао је сат и по времена и радио се на рачунарима. Рок јул 1 представљао је &amp;quot;фебруарски&amp;quot; рок за школску 2024/2025. годину.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Посматрају се два објектна програма levi.o и desni.o добијена помоћу GNU асемблера. Приказати излаз линкера izlaz.o, где је потребно приказати садржај:&lt;br /&gt;
&lt;br /&gt;
# табеле симбола&lt;br /&gt;
# табеле секција&lt;br /&gt;
# релокационих записа строго поштујући школски формат и обавезно у складу са задатом нумерацијом симбола.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Напомене:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Линкер је покренут коришћењем следеће команде:&amp;lt;syntaxhighlight&amp;gt;ld -o izlaz.o -T script.ld levi.o desni.o&amp;lt;/syntaxhighlight&amp;gt;где линкерска скрипта &amp;lt;code&amp;gt;script.ld&amp;lt;/code&amp;gt; има следећи садржај: &amp;lt;syntaxhighlight&amp;gt;SECTIONS&lt;br /&gt;
{&lt;br /&gt;
    .text : { *(.text) }&lt;br /&gt;
    .data : { *(.data) }&lt;br /&gt;
    .bss : { *(.bss) }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Све нумеричке вредности уносити у хексадецималном формату на ширини од 4B без префикса 0x у другом комплементу двојке.&lt;br /&gt;
* Нетачан одговор на ставке приказане падајућим менијем са понуђеним одговорима се пенализује са -33% поена од те ставке. Да се одређена ставка са понуђеним одговорима не би бодовала, потребно је одабрати одговор ???.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; gap: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;levi.o&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ #shdr&lt;br /&gt;
! Num&lt;br /&gt;
! Address&lt;br /&gt;
! Size&lt;br /&gt;
! Type&lt;br /&gt;
! Flags&lt;br /&gt;
! Name&lt;br /&gt;
|-&lt;br /&gt;
| 0:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 004F&lt;br /&gt;
| PROGBITS&lt;br /&gt;
| AX&lt;br /&gt;
| .text&lt;br /&gt;
|-&lt;br /&gt;
| 1:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0004&lt;br /&gt;
| PROGBITS&lt;br /&gt;
| WA&lt;br /&gt;
| .data&lt;br /&gt;
|-&lt;br /&gt;
| 2:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0022&lt;br /&gt;
| NOBITS&lt;br /&gt;
| WA&lt;br /&gt;
| .bss&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ #symtab&lt;br /&gt;
! Num&lt;br /&gt;
! Value&lt;br /&gt;
! Size&lt;br /&gt;
! Type&lt;br /&gt;
! Bind&lt;br /&gt;
! Ndx&lt;br /&gt;
! Name&lt;br /&gt;
|-&lt;br /&gt;
| 0:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| NOTYP&lt;br /&gt;
| LOC&lt;br /&gt;
| UND&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| SCTN&lt;br /&gt;
| LOC&lt;br /&gt;
| 1&lt;br /&gt;
| .text&lt;br /&gt;
|-&lt;br /&gt;
| 2:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| SCTN&lt;br /&gt;
| LOC&lt;br /&gt;
| 2&lt;br /&gt;
| .data&lt;br /&gt;
|-&lt;br /&gt;
| 3:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| SCTN&lt;br /&gt;
| LOC&lt;br /&gt;
| 3&lt;br /&gt;
| .bss&lt;br /&gt;
|-&lt;br /&gt;
| 4:&lt;br /&gt;
| 00000013&lt;br /&gt;
| c&lt;br /&gt;
| FUNC&lt;br /&gt;
| GLOB&lt;br /&gt;
| 1&lt;br /&gt;
| a&lt;br /&gt;
|-&lt;br /&gt;
| 5:&lt;br /&gt;
| 00000015&lt;br /&gt;
| 8&lt;br /&gt;
| NOTYP&lt;br /&gt;
| GLOB&lt;br /&gt;
| 2&lt;br /&gt;
| b&lt;br /&gt;
|-&lt;br /&gt;
| 6:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| NOTYP&lt;br /&gt;
| GLOB&lt;br /&gt;
| UND&lt;br /&gt;
| c&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ #.rela.text&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Symbol&lt;br /&gt;
! Addend&lt;br /&gt;
|-&lt;br /&gt;
| 0000000d&lt;br /&gt;
| R_X86_64_32S&lt;br /&gt;
| 4 (a)&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 00000000&lt;br /&gt;
| R_X86_64_PC32&lt;br /&gt;
| 6 (c)&lt;br /&gt;
| -4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;desni.o&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ #shdr&lt;br /&gt;
! Num&lt;br /&gt;
! Address&lt;br /&gt;
! Size&lt;br /&gt;
! Type&lt;br /&gt;
! Flags&lt;br /&gt;
! Name&lt;br /&gt;
|-&lt;br /&gt;
| 1:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0012&lt;br /&gt;
| PROGBITS&lt;br /&gt;
| AX&lt;br /&gt;
| .text&lt;br /&gt;
|-&lt;br /&gt;
| 2:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0008&lt;br /&gt;
| PROGBITS&lt;br /&gt;
| WA&lt;br /&gt;
| .data&lt;br /&gt;
|-&lt;br /&gt;
| 3:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0010&lt;br /&gt;
| NOBITS&lt;br /&gt;
| WA&lt;br /&gt;
| .bss&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ #symtab&lt;br /&gt;
! Num&lt;br /&gt;
! Value&lt;br /&gt;
! Size&lt;br /&gt;
! Type&lt;br /&gt;
! Bind&lt;br /&gt;
! Ndx&lt;br /&gt;
! Name&lt;br /&gt;
|-&lt;br /&gt;
| 0:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| NOTYP&lt;br /&gt;
| LOC&lt;br /&gt;
| UND&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| SCTN&lt;br /&gt;
| LOC&lt;br /&gt;
| 1&lt;br /&gt;
| .text&lt;br /&gt;
|-&lt;br /&gt;
| 2:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| SCTN&lt;br /&gt;
| LOC&lt;br /&gt;
| 2&lt;br /&gt;
| .data&lt;br /&gt;
|-&lt;br /&gt;
| 3:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| SCTN&lt;br /&gt;
| LOC&lt;br /&gt;
| 3&lt;br /&gt;
| .bss&lt;br /&gt;
|-&lt;br /&gt;
| 4:&lt;br /&gt;
| 00000004&lt;br /&gt;
| 8&lt;br /&gt;
| NOTYP&lt;br /&gt;
| LOC&lt;br /&gt;
| 2&lt;br /&gt;
| b&lt;br /&gt;
|-&lt;br /&gt;
| 5:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| OBJECT&lt;br /&gt;
| GLOB&lt;br /&gt;
| 5&lt;br /&gt;
| c&lt;br /&gt;
|-&lt;br /&gt;
| 6:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| NOTYP&lt;br /&gt;
| GLOB&lt;br /&gt;
| UND&lt;br /&gt;
| a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ #.rela.text&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Symbol&lt;br /&gt;
! Addend&lt;br /&gt;
|-&lt;br /&gt;
| 00000003&lt;br /&gt;
| R_X86_64_PC32&lt;br /&gt;
| 6 (a)&lt;br /&gt;
| -4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ #.rela.data&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Symbol&lt;br /&gt;
! Addend&lt;br /&gt;
|-&lt;br /&gt;
| 00000002&lt;br /&gt;
| R_X86_64_32&lt;br /&gt;
| 3 (.bss)&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ #shdr&lt;br /&gt;
! Num&lt;br /&gt;
! Address&lt;br /&gt;
! Size&lt;br /&gt;
! Type&lt;br /&gt;
! Flags&lt;br /&gt;
! Name&lt;br /&gt;
|-&lt;br /&gt;
| 1:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 00000061&lt;br /&gt;
| PROGBITS&lt;br /&gt;
| AX&lt;br /&gt;
| .text&lt;br /&gt;
|-&lt;br /&gt;
| 3:&lt;br /&gt;
| 00000061&lt;br /&gt;
| 0000000C&lt;br /&gt;
| PROGBITS&lt;br /&gt;
| WA&lt;br /&gt;
| .data&lt;br /&gt;
|-&lt;br /&gt;
| 5:&lt;br /&gt;
| 0000006D&lt;br /&gt;
| 00000032&lt;br /&gt;
| NOBITS&lt;br /&gt;
| WA&lt;br /&gt;
| .bss&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ #symtab&lt;br /&gt;
! Num&lt;br /&gt;
! Value&lt;br /&gt;
! Size&lt;br /&gt;
! Type&lt;br /&gt;
! Bind&lt;br /&gt;
! Ndx&lt;br /&gt;
! Name&lt;br /&gt;
|-&lt;br /&gt;
| 0:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| NOTYP&lt;br /&gt;
| LOC&lt;br /&gt;
| UND&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1:&lt;br /&gt;
| 00000000&lt;br /&gt;
| 0&lt;br /&gt;
| SCTN&lt;br /&gt;
| LOC&lt;br /&gt;
| 1&lt;br /&gt;
| .text&lt;br /&gt;
|-&lt;br /&gt;
| 2:&lt;br /&gt;
| 00000061&lt;br /&gt;
| 0&lt;br /&gt;
| SCTN&lt;br /&gt;
| LOC&lt;br /&gt;
| 3&lt;br /&gt;
| .data&lt;br /&gt;
|-&lt;br /&gt;
| 3:&lt;br /&gt;
| 0000006D&lt;br /&gt;
| 0&lt;br /&gt;
| SCTN&lt;br /&gt;
| LOC&lt;br /&gt;
| 5&lt;br /&gt;
| .bss&lt;br /&gt;
|-&lt;br /&gt;
| 4:&lt;br /&gt;
| 00000069&lt;br /&gt;
| 0&lt;br /&gt;
| NOTYP&lt;br /&gt;
| LOC&lt;br /&gt;
| 3&lt;br /&gt;
| b&lt;br /&gt;
|-&lt;br /&gt;
| 5:&lt;br /&gt;
| 00000082&lt;br /&gt;
| 0&lt;br /&gt;
| NOTYP&lt;br /&gt;
| GLOB&lt;br /&gt;
| 5&lt;br /&gt;
| b&lt;br /&gt;
|-&lt;br /&gt;
| 6:&lt;br /&gt;
| 00000097&lt;br /&gt;
| 0&lt;br /&gt;
| NOTYP&lt;br /&gt;
| GLOB&lt;br /&gt;
| 5&lt;br /&gt;
| c&lt;br /&gt;
|-&lt;br /&gt;
| 7:&lt;br /&gt;
| 00000013&lt;br /&gt;
| 0&lt;br /&gt;
| FUNC&lt;br /&gt;
| GLOB&lt;br /&gt;
| 1&lt;br /&gt;
| a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ #.rela.text&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Symbol&lt;br /&gt;
! Addend&lt;br /&gt;
|-&lt;br /&gt;
| 00000004&lt;br /&gt;
| R_X86_64_32S&lt;br /&gt;
| a&lt;br /&gt;
| 00000000&lt;br /&gt;
|-&lt;br /&gt;
| 0000000B&lt;br /&gt;
| R_X86_64_PC32&lt;br /&gt;
| c&lt;br /&gt;
| FFFFFFFC&lt;br /&gt;
|-&lt;br /&gt;
| 00000052&lt;br /&gt;
| R_X86_64_PC32&lt;br /&gt;
| a&lt;br /&gt;
| FFFFFFFC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ #.rela.data&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Symbol&lt;br /&gt;
! Addend&lt;br /&gt;
|-&lt;br /&gt;
| 00000006&lt;br /&gt;
| R_X86_64_32&lt;br /&gt;
| .bss&lt;br /&gt;
| 00000000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Посматра се &#039;&#039;JIT&#039;&#039; емулатор и емулирање следећег програма.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Означити све блокове који ће у току рада емулатора бити преведени. За сваки преведени блок навести јединствену идентификацију у облику &amp;lt;code&amp;gt;&#039;&#039;&#039;B&#039;&#039;&#039;&#039;&#039;&amp;amp;lt;n&amp;amp;gt;(&amp;amp;lt;x&amp;amp;gt;-&amp;amp;lt;y&amp;amp;gt;)&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;amp;lt;n&amp;amp;gt;&amp;lt;/code&amp;gt; је &amp;lt;u&amp;gt;редни број блока у погледу тренутка његовог превођења при чему нумерација почиње од броја један&amp;lt;/u&amp;gt;, &amp;amp;lt;x&amp;amp;gt; је редни број прве а &amp;amp;lt;y&amp;amp;gt; редни број последње линије изворног кода блока).&lt;br /&gt;
# Навести секвенцу извршавања. У секвенци извршавања могу се нађи само &amp;lt;code&amp;gt;GP&amp;lt;/code&amp;gt; (сваки пут када се емулатор врати у главну петљу), &amp;lt;code&amp;gt;BH&amp;lt;/code&amp;gt; (сваки пут када се позове функција која помаже у разрешавању скокова) и &amp;lt;code&amp;gt;&#039;&#039;&#039;B&#039;&#039;&#039;&#039;&#039;&amp;amp;lt;n&amp;amp;gt;&amp;lt;/code&amp;gt; (сваки пут када се изврши дати блок у складу са ознакама из претходне тачке).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
      BEG       ; 0x00&lt;br /&gt;
      LDA A     ; 0x00&lt;br /&gt;
  L3  BPO L1    ; 0x02&lt;br /&gt;
      BZE L2    ; 0x04&lt;br /&gt;
      LDA B     ; 0x06&lt;br /&gt;
      DEC       ; 0x08&lt;br /&gt;
      STA B     ; 0x09&lt;br /&gt;
      BNZ L2    ; 0x0B&lt;br /&gt;
      HLT       ; 0x0D&lt;br /&gt;
  L2  LDA A     ; 0x0E&lt;br /&gt;
      INC       ; 0x10&lt;br /&gt;
      STA A     ; 0x11&lt;br /&gt;
  L1  SBI 2     ; 0x13&lt;br /&gt;
      BRN L3    ; 0x15&lt;br /&gt;
  A   DC 1      ; 0x17&lt;br /&gt;
  B   DC 2      ; 0x18&lt;br /&gt;
      END&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Блокови по редоследу превођења:&lt;br /&gt;
## B1(0x00 - 0x03)&lt;br /&gt;
## B2(0x13 - 0x16)&lt;br /&gt;
## B3(0x02 - 0x03)&lt;br /&gt;
## B4(0x04 - 0x05)&lt;br /&gt;
## B5(0x06 - 0x0C)&lt;br /&gt;
## B6(0x0E - 0x12)&lt;br /&gt;
## B7(0x0D - 0x0D)&lt;br /&gt;
# Редослед извршавања:&lt;br /&gt;
## GP&lt;br /&gt;
## B1&lt;br /&gt;
## BH&lt;br /&gt;
## GP&lt;br /&gt;
## B2&lt;br /&gt;
## BH&lt;br /&gt;
## GP&lt;br /&gt;
## B3&lt;br /&gt;
## BH&lt;br /&gt;
## GP&lt;br /&gt;
## B4&lt;br /&gt;
## BH&lt;br /&gt;
## GP&lt;br /&gt;
## B5&lt;br /&gt;
## BH&lt;br /&gt;
## GP&lt;br /&gt;
## B6&lt;br /&gt;
## B2&lt;br /&gt;
## BH&lt;br /&gt;
## B3&lt;br /&gt;
## BH&lt;br /&gt;
## B4&lt;br /&gt;
## BH&lt;br /&gt;
## B6&lt;br /&gt;
## B2&lt;br /&gt;
## B3&lt;br /&gt;
## B2&lt;br /&gt;
## B3&lt;br /&gt;
## B4&lt;br /&gt;
## BH&lt;br /&gt;
## B5&lt;br /&gt;
## BH&lt;br /&gt;
## GP&lt;br /&gt;
## B7&lt;br /&gt;
## BH&lt;br /&gt;
## GP&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Одредити индекс класификације и то да ли је израз релокативан за сваки израз дат у табели, уколико се смешта на место &#039;&#039;placeholder&#039;&#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
.extern e1, e2&lt;br /&gt;
.equ sym, 100&lt;br /&gt;
.section .X&lt;br /&gt;
x1: .skip 4&lt;br /&gt;
x2: .skip 5&lt;br /&gt;
.section .Y&lt;br /&gt;
y1: .skip 6&lt;br /&gt;
y2: .skip 7&lt;br /&gt;
y3: .skip 8&lt;br /&gt;
.section .here&lt;br /&gt;
# placeholder&lt;br /&gt;
.end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! &amp;lt;code&amp;gt;.X&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;.Y&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;.here&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;.unique(e1)&amp;lt;/code&amp;gt;&lt;br /&gt;
! &amp;lt;code&amp;gt;.unique(e2)&amp;lt;/code&amp;gt;&lt;br /&gt;
! Израз релокативан?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.long x1+y1-y2+sym&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| Да&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.long x1+x2&amp;lt;/code&amp;gt;&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| Не&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.long sym+3&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| Не&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.long e1+e2&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Не&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.long .+e1-e2&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| -1&lt;br /&gt;
| Не&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;code&amp;gt;.long sym+3&amp;lt;/code&amp;gt; је апсолутан, самим тим није релокативан.&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Навести шта је резултат експанзије следећег кода од стране &#039;&#039;C претпроцесора.&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define A 1, 1&lt;br /&gt;
#define B(b), #b&lt;br /&gt;
#define C(c1, c2) c1 ## c2&lt;br /&gt;
#define D(d) d&lt;br /&gt;
#define E(e) B(A) C(e) D(#e)&lt;br /&gt;
E(A)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;A&amp;quot; 11 &amp;quot;A&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Системски софтвер]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0&amp;diff=7860</id>
		<title>Пројектовање софтвера</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0&amp;diff=7860"/>
		<updated>2024-10-29T19:24:22Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: /* Испитни рокови */ Noviji izgled izlistavanja rokova&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| шифра     = 13С113ПС, 13Е114ПС&lt;br /&gt;
| семестар  = 5 (СИ), 7 (РТИ)&lt;br /&gt;
| статус    = обавезни (СИ), изборни (РТИ)&lt;br /&gt;
| страница  = [https://rti.etf.bg.ac.rs/rti/ir4ps/ rti.etf.rs/rti/ir4ps]&lt;br /&gt;
| одсек     = СИ, РТИ&lt;br /&gt;
| претходни = ОО2&lt;br /&gt;
| следећи   = Рачунарска графика&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ИНФОРМАЦИЈЕ ИСПОД СУ У СКЛАДУ СА СТАРИМ ПРОПОЗИЦИЈАМА, И НИСУ НУЖНО АЖУРНЕ У ШКОЛСКОЈ 2024/25. ГОДИНИ. АЖУРНЕ ИНФОРМАЦИЈЕ БИЋЕ ДОДАТЕ КАДА БУДУ ПОЗНАТЕ.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Пројектовање софтвера&#039;&#039;&#039; је неизбежан предмет у петом семестру за СИ, а изборни у седмом семестру за РТИ, у духу [[ОО1|Објектно оријентисаног програмирања 1]] и [[ОО2|2]].&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
* &#039;&#039;[https://staruml.io/ StarUML]&#039;&#039; — окружење које се користи на вежбама&lt;br /&gt;
* [https://drive.google.com/open?id=1qZ1Z_wSa1BBmOvmgz4mRS2yTHEyaJfQK &#039;&#039;&#039;Скрипта са свим презентацијама комбинованим у једном документу, спремно за штампу&#039;&#039;&#039;] ([https://docs.google.com/document/d/1pXMugMAyTZx8ki2z4gbcA27tmVaDbIa2 изворни &#039;&#039;Word&#039;&#039; документ])&lt;br /&gt;
* [https://drive.google.com/open?id=1FQce1ZdoMZK1V6wOdC9w6SZliWrDTBGx ETF SI] (збирка задатака, претходне лабораторијске вежбе)&lt;br /&gt;
* [https://app.box.com/s/0r50je333z1qyypz0h3rm0iqb9s0d64f/folder/38805409747 ETF Materijali (Box)] (белешке)&lt;br /&gt;
* [https://studentetfbgacrs-my.sharepoint.com/:b:/g/personal/sa190595d_student_etf_bg_ac_rs/EZn3Myy8GgZKohr0hCgOXh8Btt9JVmgpK7EDHtz6V4qhUA Документ са пречицама за алат &#039;&#039;StarUML&#039;&#039;]&lt;br /&gt;
* [https://github.com/Jovan11111/DesignPatterns Пројектни узорци имплементирани у Јави и C++]&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
На предавањима на предмету се паралелно предају две области: UML и пројектни узорци. Њихова подела иде овако:&lt;br /&gt;
* &#039;&#039;&#039;Први блок:&#039;&#039;&#039;&lt;br /&gt;
** Дијаграми: класа, пакета, објеката&lt;br /&gt;
** Пројектни узорци: Уникат, Шаблонски метод, Прототип, Састав, Декоратер&lt;br /&gt;
* &#039;&#039;&#039;Други блок:&#039;&#039;&#039; &lt;br /&gt;
** Дијаграми: интеракције (секвенце и комуникације), случјаева коришћења (до ове области за РТИ колоквијум), стања&lt;br /&gt;
** Пројектни узорци: Посматрач, Итератор, Стратегија (до ове области за РТИ колоквијум), Стање, Подсетник, Мува, Адаптер, Фасада&lt;br /&gt;
* &#039;&#039;&#039;Трећи блок:&#039;&#039;&#039; &lt;br /&gt;
** Дијаграми: активности, сложене структуре, компонената, распоређивања, класа (напредни појмови), интеракције (напредни појмови)&lt;br /&gt;
** Пројектни узорци: Фабрички метод, Апстрактна фабрика, Мост, Команда, Заступник, Посредник, Ланац одговорности, Градитељ&lt;br /&gt;
Презентације из архитектуре метамоделирања и пројектних узорака Посетилац и Интерпретер се не предају током семестра и не могу доћи у прва два испитна рока.&lt;br /&gt;
&lt;br /&gt;
На вежбама се дијаграми и пројектни узорци пређени на предавањима прелазе у &#039;&#039;StarUML&#039;&#039; алату са додатним објашњењима. Градиво вежби долази на лабораторијским вежбама.&lt;br /&gt;
&lt;br /&gt;
== Домаћи ==&lt;br /&gt;
За разлику од [[ОО1#Домаћи|ОО1]], домаћи служе само за припрему, не предају се, а на лабораторијским вежбама се добијају решени домаћи. За домаћи задатак се обично добије опис једног система за који треба да се саставља један или више UML дијаграма.&lt;br /&gt;
&lt;br /&gt;
== Лабораторијске вежбе ==&lt;br /&gt;
Исто као и на [[ОО1#Лабораторијске вежбе|ОО1]], осим што се домаћи задаци не предају, већ се на самој лабораторијској вежби добије готово решење.&lt;br /&gt;
&lt;br /&gt;
На првој лабораторијској вежби демонстратори пролазе референтно решење домаћег задатка, а затим над њом раде модификације које пишу у задатку. За другу лабораторијску вежбу долази градиво закључно са дијаграмима стања и пројектног узорка Стање, док за трећу лабораторијску вежбу долази градиво закључно са дијаграмима активности и пројектним узорком Заступник.&lt;br /&gt;
&lt;br /&gt;
Неке претходне лабораторијске вежбе могу се наћи међу драјвовима у [[#Корисне везе|одељку са корисним везама]]. Неке лабораторијске вежбе објављиване су на страници предмета, па су сада архивиране:&lt;br /&gt;
* [https://web.archive.org/web/20230125192247im_/https://rti.etf.bg.ac.rs/rti/ir4ps/lab/lab2_2022_23_reseno.pdf Лаб 2 2022/2023. године]&lt;br /&gt;
* [https://web.archive.org/web/20231221005013im_/https://rti.etf.bg.ac.rs/rti/ir4ps/lab/lab2_2023_24_V1_reseno.pdf Лаб 2 група 1 2023/2024. године]&lt;br /&gt;
* [https://web.archive.org/web/20231221005129im_/https://rti.etf.bg.ac.rs/rti/ir4ps/lab/lab2_2023_24_V2_reseno.pdf Лаб 2 група 2 2023/2024. године]&lt;br /&gt;
* [https://web.archive.org/web/20230125192053im_/https://rti.etf.bg.ac.rs/rti/ir4ps/lab/lab3_2022_23_reseno.pdf Лаб 3 2022/2023. године]&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Слична прича као и за [[ОО1#Испитни рокови|ОО1]]. &#039;&#039;&#039;Доступни су и [[Пројектовање софтвера/Питалице|испитни примери који нису категорисани по роковима]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Уколико желите да додате рок, посетите &#039;&#039;&#039;[[Project:Направи#Moodle|страницу за прављење рока]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Пробни тестови ===&lt;br /&gt;
Овде се налазе пробни тестови дати за вежбу пред колоквијум на Moodle платформи.&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = Пројектовање софтвера/Пробни тестови&lt;br /&gt;
| noresultsheader = Тренутно нема решених рокова.&lt;br /&gt;
| format          = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]],,&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Колоквијум 1 ===&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| category    = Пројектовање софтвера&lt;br /&gt;
| category    = Рокови&lt;br /&gt;
| titleregexp = Пројектовање софтвера/К1&lt;br /&gt;
| format      = ,\n* &amp;lt;span class=&amp;quot;rok,&amp;quot;&amp;gt;[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]]&amp;lt;/span&amp;gt;,&lt;br /&gt;
| ordermethod = title&lt;br /&gt;
| include     = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Колоквијум 2 ===&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| category    = Пројектовање софтвера&lt;br /&gt;
| category    = Рокови&lt;br /&gt;
| titleregexp = Пројектовање софтвера/К2&lt;br /&gt;
| format      = ,\n* &amp;lt;span class=&amp;quot;rok,&amp;quot;&amp;gt;[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]]&amp;lt;/span&amp;gt;,&lt;br /&gt;
| ordermethod = title&lt;br /&gt;
| include     = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Испит ===&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| category    = Пројектовање софтвера&lt;br /&gt;
| category    = Рокови&lt;br /&gt;
| titleregexp     = Пројектовање софтвера/.* \d+$&lt;br /&gt;
| nottitleregexp  = Пројектовање софтвера/К\d&lt;br /&gt;
| nottitleregexp  = Пројектовање софтвера/Пробни тестови&lt;br /&gt;
| nottitleregexp  = Пројектовање софтвера/Лаб&lt;br /&gt;
| format      = ,\n* &amp;lt;span class=&amp;quot;rok,&amp;quot;&amp;gt;[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]]&amp;lt;/span&amp;gt;,&lt;br /&gt;
| ordermethod = title&lt;br /&gt;
| include     = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
Исто као и на [[ОО1#Начин оцењивања|ОО1]]. Школске 2022/23. године је, због друге лабораторијске вежбе која није била прегледана до пар сати пред трећу лабораторијску вежбу, било омогућено да поправна лабораторијска вежба надокнађује другу, трећу, или и другу и трећу лабораторијску вежбу (студенти су тај избор морали да направе пре саме лабораторијске вежбе).&lt;br /&gt;
&lt;br /&gt;
== Потребна помоћ ==&lt;br /&gt;
* {{zadaci|postavke}}&lt;br /&gt;
** Од користи су такође модификације добијене на лабораторијским вежбама, како би студенти знали отприлике шта их на лабораторијским вежбама чека.&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0/%D0%9A1_2024&amp;diff=7859</id>
		<title>Пројектовање софтвера/К1 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0/%D0%9A1_2024&amp;diff=7859"/>
		<updated>2024-10-29T19:20:47Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Formatiranje&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Први колоквијум 2024. године&#039;&#039;&#039; одржан је 27. октобра 2024. године. Биле су доступне презентације о свим пројектним обрасцима, као и &#039;&#039;Java&#039;&#039; документација. Време за израду је било 120 минута. Текстови задатака нису са оригиналног теста већ су препричани. За сваки задатак потребно је доставити &#039;&#039;Java&#039;&#039; фајлове и текстуални фајл који садржи опис пројектних узорака и улога њихових учесника.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Направити програм за рад са сликама. Слика је дефинисана као низ пиксела, где се сваки пиксел састоји од три целобројне вредности (R, G и B), с тим да су сви бројеви у опсегу од 0 до 255. Имплементација пиксела приказана је у следећој класи:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
public class Pixel {&lt;br /&gt;
    private int R, G, B;&lt;br /&gt;
&lt;br /&gt;
    public Pixel(int R, int G, int B) {&lt;br /&gt;
        this.R = R;&lt;br /&gt;
        this.G = G;&lt;br /&gt;
        this.B = B;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public int getR() {&lt;br /&gt;
        return R;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void setR(int R) {&lt;br /&gt;
        this.R = R;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public int getG() {&lt;br /&gt;
        return G;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void setG(int G) {&lt;br /&gt;
        this.G = G;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public int getB() {&lt;br /&gt;
        return B;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void setB(int B) {&lt;br /&gt;
        this.B = B;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kорисник може читати пикселе са слике и додавати произвољан број филтера слици, али тако да разлика између обичне слике и слике са примењеним филтерима није видљива кориснику. Потребно је имплементирати два конкретна филтера:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Greyscale&#039;&#039;&#039;: R, G, B = 0.2 * R + 0.5 * G + 0.3 * B&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inverse&#039;&#039;&#039;: R = 255 - R, G = 255 - G, B = 255 - B&lt;br /&gt;
&lt;br /&gt;
Потребно је написати пример сарадње ових класа. На произвољну слику треба применити оба филтера, Greyscale и Inverse, и исписати све пикселе након примене филтера.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
==== Сарадња ====&lt;br /&gt;
У овом задатку потребно је користити узорак Декоратер, а у изради се користио и узорак Шаблонски метод.&lt;br /&gt;
&lt;br /&gt;
; Декоратер&lt;br /&gt;
: Учесници:&lt;br /&gt;
:* Компонента (Picture)&lt;br /&gt;
:* Субјекат (RawPicture)&lt;br /&gt;
:* Допуна (Filter)&lt;br /&gt;
:* КонкретнаДопуна (Greyscale, Inverse)&lt;br /&gt;
; Шаблонски метод&lt;br /&gt;
: Учесници:&lt;br /&gt;
:* АпстрактнаКласа (Filter)&lt;br /&gt;
:* КонкретнаКласа (Greyscale, Inverse)&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Picture.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public abstract class Picture {&lt;br /&gt;
    protected List&amp;lt;Pixel&amp;gt; pixels;&lt;br /&gt;
&lt;br /&gt;
    public List&amp;lt;Pixel&amp;gt; getPixels() {&lt;br /&gt;
        return pixels;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;RawPicture.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class RawPicture extends Picture {&lt;br /&gt;
&lt;br /&gt;
    public RawPicture(List&amp;lt;Pixel&amp;gt; pixels) {&lt;br /&gt;
		this.pixels = pixels;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Filter.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public abstract class Filter extends Picture {&lt;br /&gt;
&lt;br /&gt;
	public Filter(Picture picture) {&lt;br /&gt;
		pixels = new ArrayList&amp;lt;Pixel&amp;gt;();&lt;br /&gt;
		for (Pixel pixel : picture.getPixels()) {&lt;br /&gt;
			pixels.add(applyFilter(pixel));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public abstract Pixel applyFilter(Pixel pixel);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Greyscale.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
public class Greyscale extends Filter {&lt;br /&gt;
&lt;br /&gt;
	public Greyscale(Picture picture) {&lt;br /&gt;
		super(picture);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public Pixel applyFilter(Pixel pixel) {&lt;br /&gt;
		int color = (int) (pixel.getR() * 0.2 + pixel.getG() * 0.5 + pixel.getB() * 0.3);&lt;br /&gt;
		return new Pixel(color, color, color);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Inverse.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
public class Inverse extends Filter {&lt;br /&gt;
	&lt;br /&gt;
	public Inverse(Picture picture) {&lt;br /&gt;
		super(picture);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public Pixel applyFilter(Pixel pixel) {&lt;br /&gt;
		return new Pixel(255 - pixel.getR(), 255 - pixel.getG(), 255 - pixel.getB());&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Main.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class Main {&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		List&amp;lt;Pixel&amp;gt; pixels = Arrays.asList(new Pixel(100, 0, 50), new Pixel(255, 255, 0), new Pixel(0, 255, 0));&lt;br /&gt;
        Picture raw = new RawPicture(pixels);&lt;br /&gt;
&lt;br /&gt;
		Picture picture = new Greyscale(new Inverse(raw));&lt;br /&gt;
		&lt;br /&gt;
		for (Pixel pixel : picture.getPixels()) {&lt;br /&gt;
			System.out.println(&amp;quot;R = &amp;quot; + pixel.getR() + &amp;quot;\tG = &amp;quot; + pixel.getG() + &amp;quot;\tB = &amp;quot; + pixel.getB());&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&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;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0/%D0%9A1_2024&amp;diff=7858</id>
		<title>Пројектовање софтвера/К1 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0/%D0%9A1_2024&amp;diff=7858"/>
		<updated>2024-10-29T19:14:28Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: KockaAdmiralac преместио је страницу Пројектовање софтвера/Колоквијум 1 Октобар 2024 на Пројектовање софтвера/К1 2024 без остављања преусмерења: Ispravan naslov&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;К1 2024. године&#039;&#039;&#039; Доступне су презентације о свим пројектним обрасцима, као и Java документација. Време за израду је 120 мин. Текстови задатака нису са оригиналног теста већ су препричани. За сваки задатак потребно је доставити Java фајлове и текстуални фајл који садржи опис пројектних узорака и улога њихових учесника.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Направити програм за рад са сликама. Слика је дефинисана као низ пиксела, где се сваки пиксел састоји од три целобројне вредности (R, G и B), с тим да су сви бројеви у опсегу од 0 до 255. Имплементација пиксела приказана је у следећој класи:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
public class Pixel {&lt;br /&gt;
    private int R, G, B;&lt;br /&gt;
&lt;br /&gt;
    public Pixel(int R, int G, int B) {&lt;br /&gt;
        this.R = R;&lt;br /&gt;
        this.G = G;&lt;br /&gt;
        this.B = B;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public int getR() {&lt;br /&gt;
        return R;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void setR(int R) {&lt;br /&gt;
        this.R = R;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public int getG() {&lt;br /&gt;
        return G;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void setG(int G) {&lt;br /&gt;
        this.G = G;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public int getB() {&lt;br /&gt;
        return B;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void setB(int B) {&lt;br /&gt;
        this.B = B;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kорисник може читати пикселе са слике и додавати произвољан број филтера слици, али тако да разлика између обичне слике и слике са примењеним филтерима није видљива кориснику. Потребно је имплементирати два конкретна филтера:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Greyscale&#039;&#039;&#039;: R, G, B = 0.2 * R + 0.5 * G + 0.3 * B&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inverse&#039;&#039;&#039;: R = 255 - R, G = 255 - G, B = 255 - B&lt;br /&gt;
&lt;br /&gt;
Потребно је написати пример сарадње ових класа. На произвољну слику треба применити оба филтера, Greyscale и Inverse, и исписати све пикселе након примене филтера.&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;
Учесници: Компонента (Picture), Субјекат (RawPicture), Допуна (Filter), КонкретнаДопуна (Greyscale, Inverse).&lt;br /&gt;
&lt;br /&gt;
У изради се користио и узорак Шаблонски метод.&lt;br /&gt;
&lt;br /&gt;
Шаблонски метод&lt;br /&gt;
&lt;br /&gt;
Учесници: АпстрактнаКласа (Filter), КонкретнаКласа (Greyscale, Inverse).&lt;br /&gt;
&lt;br /&gt;
==== Код ====&lt;br /&gt;
&lt;br /&gt;
Klasa &#039;&#039;&#039;Picture&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public abstract class Picture {&lt;br /&gt;
    protected List&amp;lt;Pixel&amp;gt; pixels;&lt;br /&gt;
&lt;br /&gt;
    public List&amp;lt;Pixel&amp;gt; getPixels() {&lt;br /&gt;
        return pixels;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klasa &#039;&#039;&#039;RawPicture&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class RawPicture extends Picture {&lt;br /&gt;
&lt;br /&gt;
    public RawPicture(List&amp;lt;Pixel&amp;gt; pixels) {&lt;br /&gt;
		this.pixels = pixels;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klasa &#039;&#039;&#039;Filter&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public abstract class Filter extends Picture {&lt;br /&gt;
&lt;br /&gt;
	public Filter(Picture picture) {&lt;br /&gt;
		pixels = new ArrayList&amp;lt;Pixel&amp;gt;();&lt;br /&gt;
		for (Pixel pixel : picture.getPixels()) {&lt;br /&gt;
			pixels.add(applyFilter(pixel));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public abstract Pixel applyFilter(Pixel pixel);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klasa &#039;&#039;&#039;Greyscale&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
public class Greyscale extends Filter {&lt;br /&gt;
&lt;br /&gt;
	public Greyscale(Picture picture) {&lt;br /&gt;
		super(picture);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public Pixel applyFilter(Pixel pixel) {&lt;br /&gt;
		int color = (int) (pixel.getR() * 0.2 + pixel.getG() * 0.5 + pixel.getB() * 0.3);&lt;br /&gt;
		return new Pixel(color, color, color);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klasa &#039;&#039;&#039;Inverse&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
public class Inverse extends Filter {&lt;br /&gt;
	&lt;br /&gt;
	public Inverse(Picture picture) {&lt;br /&gt;
		super(picture);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public Pixel applyFilter(Pixel pixel) {&lt;br /&gt;
		return new Pixel(255 - pixel.getR(), 255 - pixel.getG(), 255 - pixel.getB());&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klasa &#039;&#039;&#039;Main&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package zad1;&lt;br /&gt;
&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class Main {&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		List&amp;lt;Pixel&amp;gt; pixels = Arrays.asList(new Pixel(100, 0, 50), new Pixel(255, 255, 0), new Pixel(0, 255, 0));&lt;br /&gt;
        Picture raw = new RawPicture(pixels);&lt;br /&gt;
&lt;br /&gt;
		Picture picture = new Greyscale(new Inverse(raw));&lt;br /&gt;
		&lt;br /&gt;
		for (Pixel pixel : picture.getPixels()) {&lt;br /&gt;
			System.out.println(&amp;quot;R = &amp;quot; + pixel.getR() + &amp;quot;\tG = &amp;quot; + pixel.getG() + &amp;quot;\tB = &amp;quot; + pixel.getB());&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&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;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Requestaccount-sent&amp;diff=7850</id>
		<title>Медијавики:Requestaccount-sent</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Requestaccount-sent&amp;diff=7850"/>
		<updated>2024-10-09T23:26:04Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Nema više problema&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Потврдите вашу адресу е-поште како бисте наставили процес отварања налога.&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%91%D1%83%D1%9F%D0%B5%D1%82&amp;diff=7849</id>
		<title>Буџет</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%91%D1%83%D1%9F%D0%B5%D1%82&amp;diff=7849"/>
		<updated>2024-10-03T17:47:58Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Istorijske informacije i ovogodišnje liste&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Буџет&#039;&#039;&#039; на одсеку за Софтверско инжењерство функционише другачије од буџета на осталим одсецима. Док на осталим одсецима само број ЕСПБ одређује да ли је студент следеће године на буџету, на СИ такође одређују оцене и рокови у којима су предмети положени. На крају рангирања, на буџет упада првих 36, док наредних 4 испод листе имају шансе да добију школарину смањену на пола (факултет сваке године одлучује о овоме).&lt;br /&gt;
&lt;br /&gt;
== Формула ==&lt;br /&gt;
Формула за рачунање средње пондерисане оцене која се користи при рангирању за буџет се може наћи у члану 49. [https://www.etf.bg.ac.rs/uploads/files/Akta_fakulteta/osnovne%20studije/Pravilnik%20o%20osnovnim%20akademskim%20studijama%20-%20precisceno.pdf Правилника о основним студијама] и гласи овако:&lt;br /&gt;
&amp;lt;div class=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;math&amp;gt;spo = \frac{\sum_{i = 1}^{N} e_i \times (1 + r_i) \times o_i}{S \times 60}&amp;lt;/math&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
где је:&lt;br /&gt;
* &amp;lt;math&amp;gt;spo&amp;lt;/math&amp;gt; — средња пондерисана оцена&lt;br /&gt;
* &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; — укупан број положених предмета (без факултативних)&lt;br /&gt;
* &amp;lt;math&amp;gt;e_i&amp;lt;/math&amp;gt; — број ЕСПБ предмета &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt; — 0.1 уколико је предмет &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; положен у прва два испитна рока (јануарски и фебруарски за предмете зимског семестра, односно јунски и јулски за предмете летњег) и 0 у супротном&lt;br /&gt;
* &amp;lt;math&amp;gt;o_i&amp;lt;/math&amp;gt; — оцена на предмету &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; — број година студирања од уписа (не рачунајући године мировања)&lt;br /&gt;
Уколико сте дали све предмете једне године, ово у суштини значи:&lt;br /&gt;
# за сваки предмет (из свих година) оцену добијену на предмету помножите са бројем ЕСПБ које тај предмет носи,&lt;br /&gt;
# уколико сте га положили у првом или другом року, помножите још са 1.1,&lt;br /&gt;
# саберете све такве производе и поделите са 60 ако завршавате прву годину, 120 ако завршавате другу или 180 или ако завршавате трећу&lt;br /&gt;
и добили сте број бодова на основу којих се рангирате.&lt;br /&gt;
&lt;br /&gt;
== Историја ==&lt;br /&gt;
Ранг листе се обично објављују у [https://www.etf.bg.ac.rs/sr/vesti вестима на сајту Електротехничког факултета.]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Границе за буџет на СИ претходних година&lt;br /&gt;
! Школска година&lt;br /&gt;
! Друга година&lt;br /&gt;
! Трећа година&lt;br /&gt;
! Четврта година&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.etf.bg.ac.rs/sr/vesti/2024/10/preliminarne-rang-liste-za-finansiranje-iz-budzeta-za-studente-studijskog-programa-softversko-inzenjerstvo 2024/2025]&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2024/st_rang_lista_upis-%20Upisani%202023%2024.pdf 9.86/11.0] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2024/st_rang_lista_upis-Upisani%202022%2023.pdf 10.47/11.0] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2024/st_rang_lista_upis-Upisani%202021%2022.pdf 10.46/11.0] (36)&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.etf.bg.ac.rs/sr/vesti/2023/10/konacne-rang-liste-za-finansiranje-iz-budzeta-za-studente-studijskog-programa-softversko-inzenjerstvo 2023/2024]&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2023/st_rang_lista_upis%202022%2023-1.pdf 10.43/11.0] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2023/st_rang_lista_upis%202021%2022-1.pdf 10.47/11.0] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2023/st_rang_lista_upis%202020%2021-1.pdf 10.38/11.0] (36)&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.etf.bg.ac.rs/sr/vesti/2022/10/konacne-rang-liste-za-finansiranje-iz-budzeta-za-studente-studijskog-programa-softversko-inzenjerstvo 2022/2023]&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2022/si/Rang%20lista%20SI%202021%2022.pdf 10.29/11.0] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2022/si/Rang%20lista%20SI%202020%2021.pdf 10.19/11.0] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2022/si/Rang%20lista%20SI%202019%2020.pdf 10.22/11.0] (36)&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.etf.bg.ac.rs/sr/vesti/2021/10/konacne-rang-liste-za-finansiranje-iz-budzeta-za-studente-studijskog-programa-softversko-inzenjerstvo 2021/2022]&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2021/konacne/SI%2020-21.pdf 10.20/11.0] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2021/konacne/SI_1920.pdf 10.22/11.0] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2021/konacne/SI_1819.pdf 10.11/11.0] (36)&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.etf.bg.ac.rs/sr/vesti/2020/10/konacne-rang-liste-za-finansiranje-iz-budzeta-za-studente-na-studijskom-programu-softversko-inzenjerstvo 2020/2021]&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2020/konacne/st_rang_lista_upis_preliminarna_2019.pdf 10.37/11.0] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2020/konacne/st_rang_lista_upis_preliminarna_2018.pdf 10.09/11.0] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2020/konacne/st_rang_lista_upis_preliminarna_2017.pdf 9.71/11.0] (36)&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.etf.bg.ac.rs/sr/vesti/2019/10/konacne-rang-liste-za-finansiranje-iz-budzeta-na-studijskom-programu-softversko-inzenjerstvo 2019/2020]&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2019/st_rang_lista_upis_18-19.pdf 15.32/16.5] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2019/st_rang_lista_upis_17-18.pdf 14.22/16.5] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/osnovne/2019/st_rang_lista_upis_16-17.pdf 15.40/16.5] (24)&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.etf.bg.ac.rs/sr/vesti/2018/10/konacne-rang-liste-za-finansiranje-iz-budzeta-na-studijskom-programu-softversko-inzenjerstvo 2018/2019]&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/vesti/2018/Rang%20lista%20-%20Generacija%202017%20(1).pdf 15.40/16.5] (36)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/vesti/2018/Rang%20lista%20-%20Generacija%202016%20(1).pdf 15.25/16.5] (24)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/vesti/2018/Rang%20lista%20-%20Generacija%202015%20(1).pdf 15.57/16.5] (24)&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.etf.bg.ac.rs/sr/vesti/2017/09/konacne-rang-liste-za-finansiranje-iz-budzeta-na-studijskom-programu-softversko-inzenjerstvo 2017/2018]&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/vesti/2017/st_rang_lista_upis_gen_2016.pdf 15.10/16.5] (24)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/vesti/2017/st_rang_lista_upis_gen_2015.pdf 15.34/16.5] (24)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/vesti/2017/st_rang_lista_upis_gen_2014.pdf 15.49/16.5] (24)&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.etf.bg.ac.rs/sr/vesti/2016/10/konacne-rang-liste-za-finansiranje-iz-budzeta-na-studijskom-programu-softversko-inzenjerstvo 2016/2017]&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/vesti/2016/st_rang_lista_2015.pdf 15.87/16.5] (24)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/vesti/2016/st_rang_lista_2014.pdf 15.81/16.5] (24)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/vesti/2016/st_rang_lista_2013.pdf 15.49/16.5] (24)&lt;br /&gt;
|-&lt;br /&gt;
! 2015/2016&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
! 2014/2015&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
! 2013/2014&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.etf.bg.ac.rs/sr/vesti/2012/10/rang-liste-za-finansiranje-iz-budzeta-na-studijskom-programu-softversko-inzenjerstvo 2012/2013]&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/obavestenja/2012/2012-10-02-etf_rang_lista%20generacija_2011.pdf 15.87/16.5] (12)&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/obavestenja/2012/2012-10-02-etf_rang_lista%20generacija_2010.pdf 15.04/16.5] (12)&lt;br /&gt;
| Не постоји&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.etf.bg.ac.rs/sr/vesti/2011/10/rang-lista-za-budzet-studenta-si-koji-su-se-prvi-put-upisali-u-skolskoj-2010-11 2011/2012]&lt;br /&gt;
| [https://www.etf.bg.ac.rs/uploads/files/upis/2011-11-03-SI_rang_lista_upis.pdf 11.40/12.0] (12)&lt;br /&gt;
| Не постоји&lt;br /&gt;
| Не постоји&lt;br /&gt;
|}&lt;br /&gt;
У свакој ћелији је приказан број бодова који је последњи студент на буџету имао, укупан број могућих бодова (пошто се начин бодовања разликовао током година) уколико је студент узимао 60 ЕСПБ те године и колико је студената те године било уписано на буџет.&lt;br /&gt;
&lt;br /&gt;
Студенти могу да прекораче број бодова од 11.0 уколико узму више од 60 ЕСПБ по години. Ова опција је дошла до знања ширег круга студената школске 2022/2023 (али је била коришћена и раније), када су два студента генерације 2020 и један студент генерације 2019 завршили са бројем бодова изнад 11.0. Из овог разлога се следећих година може видети скок у броју бодова последњег студента на буџету. Ова опција није доступна у првој години, па се код њих тај скок не може уочити.&lt;br /&gt;
&lt;br /&gt;
Уколико желите да сами правите ранг листу пре него што изађе званична листа, можете користити следећу [[github:topofkeks/ponder|скрипту за пондер]].&lt;br /&gt;
&lt;br /&gt;
== Полубуџет ==&lt;br /&gt;
Неколико година уназад, факултет у неком тренутку током семестра преполови школарину студентима друге, треће и четврте године који су били четири места испод листе (тридесет седмо, осмо, девето и четрдесето место). Ово је одлука коју факултет доноси сваке године појединачно, и да бисте проверили да ли ће и ове године донети (а већ сте пре тога проверили да вам школарина није смањена на е-студенту) можете [mailto:nbosko@etf.bg.ac.rs послати мејл] шефу одсека за Софтверско инжењерство Бошку Николићу.&lt;br /&gt;
&lt;br /&gt;
== Калкулатор ==&lt;br /&gt;
Можете унети своје оцене и да ли сте положили у првом року у табеле испод како бисте израчунали своју средњу пондерисану оцену на крају сваке године. Да бисте израчунали средњу пондерисану оцену за другу годину, оцене за прву морају да буду унесене, и да бисте израчунали средњу пондерисану оцену за трећу годину оцене из прве две морају да буду унесене.&lt;br /&gt;
&lt;br /&gt;
Просечна оцена и средња пондерисана оцена се заокружују на три цифре после зареза. У колони &#039;&#039;&#039;Прва два рока&#039;&#039;&#039; изаберите 1 уколико јесте положили у прва два рока, и 0 у супротном.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;calculator&amp;quot;&amp;gt;&lt;br /&gt;
=== Прва година ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | Први семестар&lt;br /&gt;
|-&lt;br /&gt;
! Назив предмета&lt;br /&gt;
! ЕСПБ&lt;br /&gt;
! Прва два рока&lt;br /&gt;
! Оцена&lt;br /&gt;
|-&lt;br /&gt;
| Математика 1&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bM1&amp;quot; data-expression=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokM1&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;M1&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Основи електронике&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bOE&amp;quot; data-expression=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokOE&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;OE&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Физика&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bF&amp;quot; data-expression=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokF&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;F&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Програмирање 1&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bP1&amp;quot; data-expression=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokP1&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;P1&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ПП1&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bPP1&amp;quot; data-expression=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokPP1&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;PP1&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Енглески језик - нижи&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bEJN&amp;quot; data-expression=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokEJN&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;EJN&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Изборни #1&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bi1&amp;quot; data-expression=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;roki1&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;i1&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Изборни #2&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bi2&amp;quot; data-expression=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;roki2&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;i2&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | Други семестар&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;
| &amp;lt;span data-variable=&amp;quot;bM2&amp;quot; data-expression=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokM2&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;M2&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ОРТ1&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bORT1&amp;quot; data-expression=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokORT1&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;ORT1&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Програмирање 2&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bP2&amp;quot; data-expression=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokP2&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;P2&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| АСП1&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bASP1&amp;quot; data-expression=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokASP1&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;ASP1&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ПП2&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bPP2&amp;quot; data-expression=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokPP2&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;PP2&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ПОРТ&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bPORT&amp;quot; data-expression=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokPORT&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;PORT&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Енглески језик - виши&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bEJV&amp;quot; data-expression=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokEJV&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;EJV&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Изборни #3&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bi3&amp;quot; data-expression=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;roki3&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;i3&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Просечна оцена&lt;br /&gt;
! &amp;lt;span data-variable=&amp;quot;avg1&amp;quot; data-expression=&amp;quot;M1 OE P1 F EJN PP1 i1 i2 M2 ORT1 P2 ASP1 PP2 PORT EJV i3 + + + + + + + + + + + + + + + 16 / 1000 * round 1000 /&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Средња пондерисана оцена&lt;br /&gt;
! &amp;lt;span data-variable=&amp;quot;coeff1&amp;quot; data-expression=&amp;quot;0.1 rokM1 * 1 + bM1 M1 * * 0.1 rokOE * 1 + bOE OE * * 0.1 rokF * 1 + bF F * * 0.1 rokP1 * 1 + bP1 P1 * * 0.1 rokPP1 * 1 + bPP1 PP1 * * 0.1 rokEJN * 1 + bEJN EJN * * 0.1 roki1 * 1 + bi1 i1 * * 0.1 roki2 * 1 + bi2 i2 * * 0.1 rokM2 * 1 + bM2 M2 * * 0.1 rokP2 * 1 + bP1 P2 * * 0.1 rokASP1 * 1 + bASP1 ASP1 * * 0.1 rokORT1 * 1 + bORT1 ORT1 * * 0.1 rokPP2 * 1 + bPP2 PP2 * * 0.1 rokPORT * 1 + bPORT PORT * * 0.1 rokEJV * 1 + bEJV EJV * * 0.1 roki3 * 1 + bi3 i3 * * + + + + + + + + + + + + + + + 60 / 1000 * round 1000 /&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Друга година ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | Трећи семестар&lt;br /&gt;
|-&lt;br /&gt;
! Назив предмета&lt;br /&gt;
! ЕСПБ&lt;br /&gt;
! Прва два рока&lt;br /&gt;
! Оцена&lt;br /&gt;
|-&lt;br /&gt;
| ОО1&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bOO1&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokOO1&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;OO1&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Базе података 1&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bBP1&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokBP1&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;BP1&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ОРТ2&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bORT2&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokORT2&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;ORT2&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| АСП2&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bASP2&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokASP2&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;ASP2&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Изборни #4&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bi4&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;roki4&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;i4&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | Четврти семестар&lt;br /&gt;
|-&lt;br /&gt;
! Назив предмета&lt;br /&gt;
! ЕСПБ&lt;br /&gt;
! Прва два рока&lt;br /&gt;
! Оцена&lt;br /&gt;
|-&lt;br /&gt;
| ОС1&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bOS1&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokOS1&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;OS1&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Архитектура рачунара&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bAR&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokAR&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;AR&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ОО2&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bOO2&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokOO2&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;OO2&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| РМ1&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bRM1&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokRM1&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;RM1&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Изборни #5&amp;lt;ref group=&amp;quot;напомена&amp;quot;&amp;gt;Уколико сте узели практикуме, овде унесите просек оцена на практикумима.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bi5&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;roki5&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;i5&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;0.5&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Просечна оцена&lt;br /&gt;
! &amp;lt;span data-variable=&amp;quot;avg2&amp;quot; data-expression=&amp;quot;OO1 BP1 ORT2 ASP2 i4 OS1 AR OO2 RM1 i5 + + + + + + + + + 10 / avg1 + 2 / 1000 * round 1000 /&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Средња пондерисана оцена&lt;br /&gt;
! &amp;lt;span data-variable=&amp;quot;coeff2&amp;quot; data-expression=&amp;quot;0.1 rokOO1 * 1 + bOO1 OO1 * * 0.1 rokBP1 * 1 + bBP1 BP1 * * 0.1 rokORT2 * 1 + bORT2 ORT2 * * 0.1 rokASP2 * 1 + bASP2 ASP2 * * 0.1 roki4 * 1 + bi4 i4 * * 0.1 rokOS1 * 1 + bOS1 OS1 * * 0.1 rokAR * 1 + bAR AR * * 0.1 rokOO2 * 1 + bOO2 OO2 * * 0.1 rokRM1 * 1 + bRM1 RM1 * * 0.1 roki5 * 1 + bi5 i5 * * + + + + + + + + + 60  / coeff1 + 2 / 1000 * round 1000 /&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Трећа година ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | Пети семестар&lt;br /&gt;
|-&lt;br /&gt;
! Назив предмета&lt;br /&gt;
! ЕСПБ&lt;br /&gt;
! Прва два рока&lt;br /&gt;
! Оцена&lt;br /&gt;
|-&lt;br /&gt;
| Информациони системи 1&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bIS1&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokIS1&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;IS1&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Пројектовање софтвера&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bPS&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokPS&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;PS&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Изборни #6&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bi6&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;roki6&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;i6&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Изборни #7&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bi7&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;roki7&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;i7&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Изборни #8&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bi8&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;roki8&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;i8&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&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;
| &amp;lt;span data-variable=&amp;quot;bKDP&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokKDP&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;KDP&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ПСИ&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bPSI&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;rokPSI&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;PSI&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Изборни #9&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bi9&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;roki9&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;i9&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Изборни #10&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bi10&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;roki10&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;i10&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Изборни #11&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;bi11&amp;quot; data-expression=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;roki11&amp;quot; data-max=&amp;quot;1&amp;quot; data-min=&amp;quot;0&amp;quot; data-step=&amp;quot;1&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span data-variable=&amp;quot;i11&amp;quot; data-max=&amp;quot;10&amp;quot; data-min=&amp;quot;6&amp;quot; data-step=&amp;quot;0.5&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Просечна оцена&lt;br /&gt;
! &amp;lt;span data-expression=&amp;quot;IS1 PS KDP PSI i6 i7 i8 i9 i10 i11 + + + + + + + + + 10 / avg1 + avg2 + 3 / 1000 * round 1000 /&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Средња пондерисана оцена&lt;br /&gt;
! &amp;lt;span data-expression=&amp;quot;0.1 rokIS1 * 1 + bIS1 IS1 * * 0.1 rokPS * 1 + bPS PS * * 0.1 roki6 * 1 + bi6 i6 * * 0.1 roki7 * 1 + bi7 i7 * * 0.1 roki8 * 1 + bi8 i8 * * 0.1 rokKDP * 1 + bKDP KDP * * 0.1 rokPSI * 1 + bPSI PSI * * 0.1 roki9 * 1 + bi9 i9 * * 0.1 roki10 * 1 + bi10 i10 * * 0.1 roki11 * 1 + bi11 i11 * * + + + + + + + + + 60  / coeff1 + coeff2 + 3 / 1000 * round 1000 /&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Напомене ==&lt;br /&gt;
&amp;lt;references group=&amp;quot;напомена&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Водичи]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Requestaccount-sent&amp;diff=7848</id>
		<title>Медијавики:Requestaccount-sent</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Requestaccount-sent&amp;diff=7848"/>
		<updated>2024-10-02T13:13:25Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Takođe ovde&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Потврдите вашу адресу е-поште како бисте наставили процес отварања налога.&lt;br /&gt;
&lt;br /&gt;
Сервер тренутно има проблема са слањем мејлова. Уколико не добијете поруку потврде, пишите нам на [[Project:Discord|Discord]], [mailto:admin@siwiki.rs мејл,] или директно неком од [[Project:Администратори|администратора]].&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Requestaccount-go-away&amp;diff=7846</id>
		<title>Медијавики:Requestaccount-go-away</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Requestaccount-go-away&amp;diff=7846"/>
		<updated>2024-10-02T09:38:24Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Nova poruka&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Нисте унели студентску мејл адресу.&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice_id&amp;diff=7836</id>
		<title>Медијавики:Sitenotice id</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice_id&amp;diff=7836"/>
		<updated>2024-09-27T18:13:47Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Za svaki slučaj&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;4&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice&amp;diff=7835</id>
		<title>Медијавики:Sitenotice</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice&amp;diff=7835"/>
		<updated>2024-09-27T18:13:28Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Ups&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;sitenotice-box&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;sitenotice-box__image&amp;quot;&amp;gt;[[File:Ambox important.svg|link=]]&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;Oтворена је годишња [https://forms.gle/SspyM2mPArbQ6PsJA СИ Вики анкета!]&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Попуњавање, као и иначе, траје од 2 до 10 минута, и значило би нам да је попуните како бисмо знали на шта да се фокусирамо у следећој години. Хвала!&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: x-small;&amp;quot;&amp;gt;Резултате претходних анкета можете да пронађете на [[Project:Анкета|чланку о анкети]].&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice_id&amp;diff=7834</id>
		<title>Медијавики:Sitenotice id</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice_id&amp;diff=7834"/>
		<updated>2024-09-27T18:12:17Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: +1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;3&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice&amp;diff=7833</id>
		<title>Медијавики:Sitenotice</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Sitenotice&amp;diff=7833"/>
		<updated>2024-09-27T18:12:08Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Anketa&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;sitenotice-box&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;sitenotice-box__image&amp;quot;&amp;gt;[[File:Ambox important.svg|link=]]&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;Oтворена је годишња [https://forms.gle/aQwSaqDS4mSsFSkz7 СИ Вики анкета!]&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Попуњавање, као и иначе, траје од 2 до 10 минута, и значило би нам да је попуните како бисмо знали на шта да се фокусирамо у следећој години. Хвала!&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: x-small;&amp;quot;&amp;gt;Резултате претходних анкета можете да пронађете на [[Project:Анкета|чланку о анкети]].&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Infobox/data&amp;diff=7832</id>
		<title>Модул:Infobox/data</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Infobox/data&amp;diff=7832"/>
		<updated>2024-09-27T15:25:55Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Master semestri&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
	semesters = {&lt;br /&gt;
		&#039;Први&#039;,&lt;br /&gt;
		&#039;Други&#039;,&lt;br /&gt;
		&#039;Трећи&#039;,&lt;br /&gt;
		&#039;Четврти&#039;,&lt;br /&gt;
		&#039;Пети&#039;,&lt;br /&gt;
		&#039;Шести&#039;,&lt;br /&gt;
		&#039;Седми&#039;,&lt;br /&gt;
		&#039;Осми&#039;,&lt;br /&gt;
		&#039;Мастер - зимски&#039;,&lt;br /&gt;
		&#039;Мастер - летњи&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%98%D0%B0&amp;diff=7830</id>
		<title>Микропроцесорски системи/Теорија</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%98%D0%B0&amp;diff=7830"/>
		<updated>2024-09-18T20:35:28Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Pomerena napomena van rešenja&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;
=== Улазак и излазак из прекидне рутине ===&lt;br /&gt;
Код овог типа питања битно је разумети како функционише неколико механизама у &#039;&#039;Cortex-M3&#039;&#039; микропроцесору. Текст испод парафразиран је из &#039;&#039;Cortex-M3 Programming Manual&#039;&#039; са страница 37 и 38:&lt;br /&gt;
* &#039;&#039;&#039;Stacking:&#039;&#039;&#039; операција чувања одређених регистара на стеку приликом уласка у прекидну рутину. На стеку се чувају следећи регистри (то се зове &#039;&#039;stack frame&#039;&#039;) у редоследу који је дат:&lt;br /&gt;
** &#039;&#039;R0&#039;&#039;, &#039;&#039;R1&#039;&#039;, &#039;&#039;R2&#039;&#039;, &#039;&#039;R3&#039;&#039; и &#039;&#039;R12&#039;&#039;&lt;br /&gt;
** Повратна адреса прекидне рутине (односно &#039;&#039;PC&#039;&#039; регистар)&lt;br /&gt;
** Програмски статусни регистар (&#039;&#039;PSR&#039;&#039;)&lt;br /&gt;
** &#039;&#039;Link register&#039;&#039; (&#039;&#039;LR&#039;&#039;)&lt;br /&gt;
*: Након &#039;&#039;stacking&#039;&#039;, &#039;&#039;SP&#039;&#039; показује на најнижу адресу у &#039;&#039;stack frame&#039;&#039; (односно на &#039;&#039;R0&#039;&#039;). У &#039;&#039;CCR&#039;&#039; регистру бит &#039;&#039;STKALIGN&#039;&#039; може бити постављен на 1, у ком случају се дешава поравнање стека на дуплу реч.&lt;br /&gt;
*: За овај механизам углавном буде дат програм на асемблеру који са стека учита одређени податак, па се мора одредити која је вредност тог податка.&lt;br /&gt;
* &#039;&#039;&#039;Late-arriving:&#039;&#039;&#039; Паралелно са &#039;&#039;stacking&#039;&#039; се дохвата адреса руковаоца у IVT, па ако се до учитавања прве инструкције у прекидној рутини појави изузетак вишег групног приоритета прелази се на његово извршавање.&lt;br /&gt;
* &#039;&#039;&#039;Tail-chaining:&#039;&#039;&#039; ако након извршавања тренутне прекидне рутине постоји следећи прекид који испуњава услове извршавања, прелази се на његово извршавање без уклањања вредности из &#039;&#039;stack frame&#039;&#039;.&lt;br /&gt;
*: За овај механизам питања углавном буду бројање колико пута се десио &#039;&#039;tail-chaining&#039;&#039; под одређеним условима.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Stacking:&#039;&#039; [[Микропроцесорски системи/К1 2022#3. задатак|3. задатак, К1 2022]]&lt;br /&gt;
* &#039;&#039;Tail-chaining:&#039;&#039; [[Микропроцесорски системи/К1 2022#2. задатак|2. задатак, К1 2022]]&lt;br /&gt;
&lt;br /&gt;
=== Почетна инструкција програма ===&lt;br /&gt;
Адреса адресе прве инструкције програма јесте 0x00000004, тако да је адреса прве инструкције програма штагод да пише у меморији на адреси 0x00000004. Ова једноставна питалица може често да се појави на различитим роковима и одговор на њу може се наћи на страни 15 од &#039;&#039;Cortex-M3 Programming Manual&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/Јул 2022#1. задатак|1. задатак, јул 2022]], 1. задатак, јануар 2023&lt;br /&gt;
&lt;br /&gt;
=== Условно извршавање инструкција ===&lt;br /&gt;
Овај механизам објашњен је на страни 56 у &#039;&#039;Cortex-M3 Programming Manual&#039;&#039;, у одељку 3.3.7 &#039;&#039;Conditional execution&#039;&#039;. Питања из ове области обично садрже барем једну &amp;lt;code&amp;gt;it&amp;lt;/code&amp;gt; инструкцију и неке комбинације &amp;lt;code&amp;gt;add&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sub&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cmp&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;mov&amp;lt;/code&amp;gt; инструкција са суфиксом &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; (ажурира програмски статусни регистар!) или без њега (не ажурира програмски статусни регистар!), а на крају се тражи вредност у неком од коришћених регистара. Треба нагласити да &amp;lt;code&amp;gt;cmp&amp;lt;/code&amp;gt; инструкција увек ажурира програмски статусни регистар.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/Пробни тест 2022#Задатак 1|1. задатак, пробни тест 2022]]&lt;br /&gt;
* [[Микропроцесорски системи/Јул 2022#2. задатак|2. задатак, јул 2022]], 2. задатак, јануар 2023&lt;br /&gt;
* (&#039;&#039;извршавање инструкција генерално&#039;&#039;) [[Микропроцесорски системи/К1 2022#1. задатак|1. задатак, К1 2022]]&lt;br /&gt;
* [[#Питање 1|Некатегорисано питање 1]]&lt;br /&gt;
* [[#Питање 2|Некатегорисано питање 2]]&lt;br /&gt;
* Примери из документације&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Bit-band alias&#039;&#039; ===&lt;br /&gt;
У овом типу задатка тражи се да се за неки бит у SRAM одреди &#039;&#039;bit-band alias&#039;&#039; адреса. На страни 27 &#039;&#039;Cortex-M3 Programming Manual&#039;&#039; објашњен је овај механизам и наведене следеће формуле:&lt;br /&gt;
* &amp;lt;code&amp;gt;bit_word_offset = (byte_offset x 32) + (bit_number x 4)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bit_word_addr = bit_band_base + bit_word_offset&amp;lt;/code&amp;gt;&lt;br /&gt;
где је:&lt;br /&gt;
* &amp;lt;code&amp;gt;byte_offset&amp;lt;/code&amp;gt; померај неког бајта од почетка SRAM (SRAM почиње на 0x20000000),&lt;br /&gt;
* &amp;lt;code&amp;gt;bit_number&amp;lt;/code&amp;gt; број бита који се тражи (дат у задатку)&lt;br /&gt;
* &amp;lt;code&amp;gt;bit_band_base&amp;lt;/code&amp;gt; почетак &#039;&#039;bit-band alias&#039;&#039; региона (почиње на 0x22000000)&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/Пробни тест 2022#Задатак 2|2. задатак, пробни тест 2022]]&lt;br /&gt;
&lt;br /&gt;
=== Режими рада ===&lt;br /&gt;
Иако нема примера овог питања, може да дође питање у ком режиму се налази процесор приликом извршавања прекидне рутине (&#039;&#039;handler mode&#039;&#039;), а у ком приликом главног програма (&#039;&#039;thread mode&#039;&#039;). Овај податак се може наћи на страни 13 у &#039;&#039;Cortex-M3 Programming Manual&#039;&#039;, у одељку 2.1.1 &#039;&#039;Processor mode and privilege levels for software execution&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Intel HEX&#039;&#039; формат ===&lt;br /&gt;
У оваквом задатку потребно је растумачити шта пише у једној &#039;&#039;Intel HEX&#039;&#039; датотеци за коју је дат садржај и истакнута синтакса. Опис овог формата може са наћи на [[wikipedia:Intel HEX|Википедији]], али такође и на [https://developer.arm.com/documentation/ka003292/latest &#039;&#039;ARM&#039;&#039;-овом] и [https://www.intel.com/content/www/us/en/support/programmable/articles/000076770.html &#039;&#039;Intel&#039;&#039;-овом] сајту.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/Август 2022#1. задатак|1. задатак, август 2022]]&lt;br /&gt;
* [[Микропроцесорски системи/Фебруар 2023#1. задатак|1. задатак, фебруар 2023]]&lt;br /&gt;
&lt;br /&gt;
=== Иницијална вредност &#039;&#039;SP&#039;&#039; ===&lt;br /&gt;
Регистар &#039;&#039;SP&#039;&#039; своју иницијалну вредност добија са адресе 0x00000000. У овом типу задатка буде један асемблерски програм у коме се ради формирање IVT (чији је нулти улаз заправо вредност &#039;&#039;SP&#039;&#039;), а затим се у програму негде та вредност користи, и резултат извршавања зависи од те вредности. Главна идеја је прочитати вредност &#039;&#039;SP&#039;&#039; са прве локације у вектор табели из асемблерског програма.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/Август 2022#3. задатак|3. задатак, август 2022]], 4. задатак, К1 2022, 3. задатак, фебруар 2023&lt;br /&gt;
&lt;br /&gt;
=== Тренутна прекидна рутина ===&lt;br /&gt;
Још један чест задатак јесте асемблерски програм у којем се изазове одређени прекид на неки начин, а затим се у прекидној рутини у одређени регистар упише вредност IPSR и пита која је вредност уписана. Овај тип задатка није превише шаблонски у делу где се изазива прекид, али када се сазна који је прекид изазван његов број се лако може сазнати из &#039;&#039;Cortex-M3 Programming Manual&#039;&#039;, страна 32, 2.3.2 &#039;&#039;Exception types&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/Август 2022#4. задатак|4. задатак, август 2022]]&lt;br /&gt;
* [[Микропроцесорски системи/Фебруар 2023#4. задатак|4. задатак, фебруар 2023]]&lt;br /&gt;
&lt;br /&gt;
=== Одређивање изузетка на основу описа ===&lt;br /&gt;
У овом типу задатка дат је опис једног типа изузетка у &#039;&#039;Cortex-M3&#039;&#039; процесору, практично преведен из &#039;&#039;Cortex-M3 Programming Manual&#039;&#039;, са стране 32, 2.3.2 &#039;&#039;Exception types&#039;&#039;, и дато је више назива изузетака за бирање.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/Август 2022#2. задатак|2. задатак, август 2022]]&lt;br /&gt;
* [[Микропроцесорски системи/Фебруар 2023#2. задатак|2. задатак, фебруар 2023]]&lt;br /&gt;
&lt;br /&gt;
== Други блок ==&lt;br /&gt;
=== Пинови за активацију тајмера ===&lt;br /&gt;
У овом типу питања траже се пинови чија одговарајућа промена окида односно стартује бројање на одређеном тајмеру микроконтролера. На фигурама са страна 294 и 367 из &#039;&#039;STM32F103 Reference Manual&#039;&#039; можемо видети да у сигналу TRGI учествују &amp;lt;code&amp;gt;TIMx_ETR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMx_CH1&amp;lt;/code&amp;gt; (преко TI1FP1) и &amp;lt;code&amp;gt;TIMx_CH2&amp;lt;/code&amp;gt; (преко TI2FP2), а на странама 178 и 179 можемо пронаћи одговарајућа мапирања пинова за те канале микроконтролера. У теорији, у том сигналу би могао да учествује и сигнал &amp;lt;code&amp;gt;TIMx_CH3&amp;lt;/code&amp;gt; (преко XOR кола које улази у TI1) али ово никада није означено као тачан одговор.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/Пробни тест 2022#Задатак 3|3. задатак, пробни тест 2022]] (&#039;&#039;TIM2&#039;&#039;)&lt;br /&gt;
* [[Микропроцесорски системи/К2 2022#3. задатак|3. задатак, К2 2022]], 4. задатак, јул 2022 (&#039;&#039;TIM1&#039;&#039;), 4. задатак, јануар 2023&lt;br /&gt;
&lt;br /&gt;
=== Фреквенција HCLK ===&lt;br /&gt;
Постоји неколико варијанти овог питања где је дата фреквенција интерних или екстерних осцилатора а пита се за максималну радну фреквенцију (HCLK). Одговор на ово питање се увек може наћи на фигури 8 са стране 93 од &#039;&#039;STM32F103 Reference Manual&#039;&#039;, где ти сигнали такта обично пролазе кроз PLL и евентуално се одсецају на одговарајуће максимуме као што је прописано шемом. Обратити пажњу и на текст испод фигуре!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/Пробни тест 2022#Задатак 4|4. задатак, пробни тест 2022]]&lt;br /&gt;
* [[Микропроцесорски системи/Јул 2022#3. задатак|3. задатак, јул 2022]], 3. задатак, јануар 2023&lt;br /&gt;
* [[#Питање 3|Некатегорисано питање 3]]&lt;br /&gt;
&lt;br /&gt;
=== Број догађаја пред UEV ===&lt;br /&gt;
Овај тип питања пита колико пута се којих догађаја мора десити како би се десио &#039;&#039;Update Event&#039;&#039; (UEV) неког тајмера. Одговор је суштински да треба да се деси за један више пута него што је вредност &#039;&#039;repetition counter&#039;&#039;, при бројању навише се дешава &#039;&#039;counter overflow&#039;&#039;, док се при бројању наниже дешава &#039;&#039;counter underflow&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/Август 2022#5. задатак|5. задатак, август 2022]]&lt;br /&gt;
* [[Микропроцесорски системи/Фебруар 2023#5. задатак|5. задатак, фебруар 2022]]&lt;br /&gt;
&lt;br /&gt;
=== Начин бројања тајмера ===&lt;br /&gt;
Иако нема забележеног тачног текста овог питања, може да дође питање да се означи на који начин може да броји тајмер, и на то је потребно одговорити:&lt;br /&gt;
# навише,&lt;br /&gt;
# наниже, и&lt;br /&gt;
# комбиновано.&lt;br /&gt;
&lt;br /&gt;
=== Активирање EXTI преко RTSR ===&lt;br /&gt;
Питање пита за вредност EXTI_RTSR регистра која мора бити уписана како би се омогућили прекиди на датим пиновима. На страни 212. од &#039;&#039;STM32F103 Reference Manual&#039;&#039; можемо видети да за сваку &#039;&#039;EXTI&#039;&#039; линију постоји по један бит у &#039;&#039;RTSR&#039;&#039; регистру, док на страни 210. можемо видети да пиновима са индексом 0 одговара линија 0, пиновима са индексом 1 одговара линија 1, и тако даље. На основу тога, поставимо одговарајуће битове броја на основу датих пинова, и то је тражени одговор.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/К2 2022#1. задатак|1. задатак, К2 2022]]&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Auto-reload&#039;&#039; регистар ===&lt;br /&gt;
Често умеју да дођу питања где су фигуре 59, 60, 70 или 71 исечене на неком делу и студенти се питају за одговарајуће вредности након исеченог дела. За овакво питање је потребно пронаћи одговарајућу фигуру из документације и видети на који начин измена &#039;&#039;Auto-reload preload&#039;&#039; регистра утиче на &#039;&#039;shadow&#039;&#039; регистар.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/К2 2022#4. задатак|4. задатак, К2 2022]]&lt;br /&gt;
&lt;br /&gt;
=== Магистрале за периферије ===&lt;br /&gt;
Могу да дођу питања која питају на којој се магистрали налази одређена периферија. Ова информација се може наћи на неколико места у &#039;&#039;STM32F103 Reference Manual&#039;&#039;, а најбоље на страни 50, 3.3 &#039;&#039;Memory map&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/К2 2022#2. задатак|2. задатак, К2 2022]]&lt;br /&gt;
&lt;br /&gt;
== Трећи блок ==&lt;br /&gt;
=== &#039;&#039;USART&#039;&#039; грешке ===&lt;br /&gt;
Као једино често теоријско питање из овог блока може се издвојити питање о грешкама приликом спровођења &#039;&#039;USART&#039;&#039; протокола. &#039;&#039;USART&#039;&#039; комуникација изгледа тако што се магистрала држи на вредности 1 док по њој нема комуникације, затим почетни бит поруке има вредност 0 (&#039;&#039;start bit&#039;&#039;), после њега долази одређен број битова података (дат у задатку) у који је (опционо) укључен и бит парности (последњи међу битовима података), и на крају долази &#039;&#039;stop bit&#039;&#039; који мора имати вредност 1. Овде су могуће две грешке протокола:&lt;br /&gt;
* &#039;&#039;&#039;Parity error:&#039;&#039;&#039; у задатку је дато да ли се ради о парној парности или непарној парности, тако да ако је збир битова података (укључујући и бит парности) паран приликом непарне парности, или непаран приликом парне парности, дошло је до ове грешке.&lt;br /&gt;
* &#039;&#039;&#039;Framing error:&#039;&#039;&#039; ова грешка се десила уколико на месту где треба да стоји &#039;&#039;stop bit&#039;&#039; не стоји вредност 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примери питања:&#039;&#039;&#039;&lt;br /&gt;
* [[Микропроцесорски системи/Јул 2022#5. задатак|5. задатак, јул 2022]], 5. задатак, јануар 2023&lt;br /&gt;
&lt;br /&gt;
== Некатегорисана питања ==&lt;br /&gt;
Следећа питања не припадају ниједном року, али спадају у једну од категорија питања изнад.&lt;br /&gt;
&lt;br /&gt;
=== Питање 1 ===&lt;br /&gt;
Која вредност се налази у регистру &#039;&#039;R1&#039;&#039; након извршавања дате секвенце асемблерских инструкција? Одговор унети према формату неозначених хексадецималних литерала у &#039;&#039;C&#039;&#039; програмском језику ширине 32 бита.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
mov r0, 6&lt;br /&gt;
mov r1, 9&lt;br /&gt;
cmp r1, r0&lt;br /&gt;
itttt gt&lt;br /&gt;
subsgt r1, r1, r0&lt;br /&gt;
subsgt r1, r1, 5&lt;br /&gt;
addgt r1, r1, r0&lt;br /&gt;
subgt r1, r1, #4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Приказ очекиваног формата одговора за произвољно одабрану вредност 1 јесте:&lt;br /&gt;
 0x00000001&lt;br /&gt;
&#039;&#039;&#039;Одговор:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0xFFFFFFFE&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Питање 2 ===&lt;br /&gt;
Која вредност се налази у регистру &#039;&#039;R1&#039;&#039; након извршавања дате секвенце асемблерских инструкција? Одговор унети према формату неозначених хексадецималних литерала у &#039;&#039;C&#039;&#039; програмском језику ширине 32 бита.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
mov r0, 5&lt;br /&gt;
mov r1, 7&lt;br /&gt;
cmp r1, r0&lt;br /&gt;
ittet gt&lt;br /&gt;
subsgt r1, r1, r0&lt;br /&gt;
subsgt r1, r1, 3&lt;br /&gt;
addle r1, r1, r0&lt;br /&gt;
subgt r1, r1, 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Приказ очекиваног формата одговора за произвољно одабрану вредност 1 јесте:&lt;br /&gt;
 0x00000001&lt;br /&gt;
&#039;&#039;&#039;Одговор:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x00000004&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Напомена:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;на страни 58 у &#039;&#039;Cortex-M3 Programming Manual&#039;&#039;, у одељку 3.3.7 &#039;&#039;Conditional execution&#039;&#039;, лоше је написан услов за LE суфикс, исправан услов је &amp;quot;Z = 1 or N != V&amp;quot; уместо &amp;quot;Z = 1 and N != V&amp;quot; како је написано у документацији.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Питање 3 ===&lt;br /&gt;
Колика је максимална радна фреквенција (&#039;&#039;HCLK&#039;&#039;) микроконтролера &#039;&#039;STM32F103R6&#039;&#039; уколико се користи &#039;&#039;HSE&#039;&#039; осцилатор који на свом излазу производи сигнал такта фреквенције 8MHz? Одговор унети у мегахерцима без навођења ознаке јединице.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Одговор:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;72&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Објашњење:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Као што пише на фигури са стране 93 од &#039;&#039;STM32F103 Reference Manual&#039;&#039;, &#039;&#039;HSE&#039;&#039; такт може проћи кроз PLL који може да његову фреквенцију помножи до 16 пута, али је максимална фреквенција &#039;&#039;HCLK&#039;&#039; 72MHz, што је мање од 128MHz колико би иначе могло да буде.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Микропроцесорски системи]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Common.css&amp;diff=7822</id>
		<title>Медијавики:Common.css</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Common.css&amp;diff=7822"/>
		<updated>2024-09-13T00:35:34Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: --&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* [[Template:Tocright]] */&lt;br /&gt;
#tocright {&lt;br /&gt;
    float: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[ОО2/Лаб 3 2021]] */&lt;br /&gt;
del {&lt;br /&gt;
    color: #888;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* a, b, c numerisanje u uređenim listama i podlistama */&lt;br /&gt;
.abc-list ol, .abc-sublist ol ol {&lt;br /&gt;
    list-style-type: lower-alpha;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[SI Wiki]] */&lt;br /&gt;
@media (min-width: 720px) {&lt;br /&gt;
	.mainpage__column {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
		width: 33%;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[MediaWiki:Sidebar]] */&lt;br /&gt;
#mw-navigation a[href=&amp;quot;/wiki/Project:%D0%9F%D0%BE%D1%82%D1%80%D0%B5%D0%B1%D0%BD%D0%B0_%D0%BF%D0%BE%D0%BC%D0%BE%D1%9B&amp;quot;],&lt;br /&gt;
#mw-navigation a[href=&amp;quot;/wiki/Project:%D0%9D%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%B8&amp;quot;] {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[MediaWiki:Sitenotice]], [[MediaWiki:Anonnotice]] */&lt;br /&gt;
.sitenotice-box {&lt;br /&gt;
	background-color: #eee;&lt;br /&gt;
	border: 1px solid lightblue;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	margin: auto;&lt;br /&gt;
	padding: 2px;&lt;br /&gt;
	width: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
	.sitenotice-box {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sitenotice-box &amp;gt; p {&lt;br /&gt;
	align-self: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sitenotice-box .sitenotice-box__image {&lt;br /&gt;
	margin-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[Template:File]] */&lt;br /&gt;
.file-description {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sakrij podrazumevani birač licence */&lt;br /&gt;
.mw-htmlform-field-Licenses {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Uređivač mora uvek da bude monospace */&lt;br /&gt;
#wpTextbox1 {&lt;br /&gt;
	font-family: Courier New;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[Пројектовање софтвера/Јануар 2020#2. zadatak]] */&lt;br /&gt;
.transparent-svg img, img.transparent-svg {&lt;br /&gt;
	background-color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Stil za infokutije */&lt;br /&gt;
.portable-infobox {&lt;br /&gt;
	border: 1px solid var(--pi-border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.portable-infobox .pi-title {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Stil pri štampanju */&lt;br /&gt;
@media print {&lt;br /&gt;
	#toc {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Uklonjeni skins.vector.styles.responsive modul */&lt;br /&gt;
/* Videti https://github.com/wikimedia/mediawiki-skins-Vector/commit/68b989e */&lt;br /&gt;
@media screen and ( max-width: 720px ) {&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static !important;&lt;br /&gt;
		margin-top: 0.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Move the panel to the bottom and display it as in-line lists */&lt;br /&gt;
	#mw-navigation #mw-panel {&lt;br /&gt;
        display: table;&lt;br /&gt;
        position: static;&lt;br /&gt;
        table-layout: fixed;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        overflow: hidden;&lt;br /&gt;
        font-size: 150%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #mw-navigation #mw-panel .portal {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation #mw-panel ul li {&lt;br /&gt;
        list-style: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
	/* Hide the logo and tabs */&lt;br /&gt;
	#p-logo {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Rearrange various page elements to fill the now-available space */&lt;br /&gt;
	body .mw-footer {&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
		padding-top: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
    /* don&#039;t need these in the footer either... */&lt;br /&gt;
    body .mw-footer #footer-info-lastmod,&lt;br /&gt;
	body .mw-footer #footer-info-viewcount {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: table;&lt;br /&gt;
		position: relative;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		top: inherit;&lt;br /&gt;
		left: inherit;&lt;br /&gt;
		right: inherit;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
    #p-personal ul {&lt;br /&gt;
        padding-left: 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		/* float: none; Override not needed with `position: absolute` above. */&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: inherit;&lt;br /&gt;
		right: 0;&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		/* float: none; Override not needed with `position: absolute` above. */&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: inherit;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#p-namespaces,&lt;br /&gt;
	#p-views,&lt;br /&gt;
	#p-variants {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		top: 2.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#p-namespaces {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#p-cactions {&lt;br /&gt;
		top: 2.5em;&lt;br /&gt;
		float: right;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#p-search {&lt;br /&gt;
		/* float: none; Override not needed with `position: absolute` above. */&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		right: 0;&lt;br /&gt;
		width: 100vw;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#simpleSearch {&lt;br /&gt;
		margin: 0 3em;&lt;br /&gt;
		width: 80vw;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-content-list {&lt;br /&gt;
		left: inherit;&lt;br /&gt;
		right: -1px;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		/* Hide the 1px blue border on the left side */&lt;br /&gt;
		border-left: 0;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-data-after-content {&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vraćanje PI stila na onaj pre 1.39 */&lt;br /&gt;
.portable-infobox p {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Oznaka rešenih, delimično rešenih i nerešenih rokova */&lt;br /&gt;
.rok:before {&lt;br /&gt;
	color: green;&lt;br /&gt;
	content: &amp;quot;✓&amp;quot;;&lt;br /&gt;
	padding-right: 3px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rok.delimicno-reseno:before {&lt;br /&gt;
	color: gold;&lt;br /&gt;
	content: &amp;quot;✎&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rok.nereseno:before {&lt;br /&gt;
	color: red;&lt;br /&gt;
	content: &amp;quot;✕&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media print {&lt;br /&gt;
	.rok:before {&lt;br /&gt;
		padding-right: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.rok:before, .rok.delimicno-reseno:before, .rok.nereseno:before {&lt;br /&gt;
		content: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* SI Wiki ne koristi stranice za razgovor */&lt;br /&gt;
#ca-talk,&lt;br /&gt;
#pt-mytalk,&lt;br /&gt;
.mw-usertoollinks-talk,&lt;br /&gt;
span:not(.mw-usertoollinks):has(&amp;gt; .mw-usertoollinks-talk),&lt;br /&gt;
.mw-contributions-link-talk,&lt;br /&gt;
span:has(&amp;gt; .mw-contributions-link-talk),&lt;br /&gt;
#ca-edit.istalk,&lt;br /&gt;
#ca-addsection {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-changeslist-links &amp;gt; span:not(:first-child):before {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-changeslist-links &amp;gt; span:not(:last-child):after {&lt;br /&gt;
    content: &#039; | &#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[Special:ConfirmAccount]] koristi .errorbox umesto .mw-message-box-error */&lt;br /&gt;
.errorbox {&lt;br /&gt;
    background-color: #fee7e6;&lt;br /&gt;
    border: 1px solid #d33;&lt;br /&gt;
    margin-bottom: 16px;&lt;br /&gt;
    padding: 12px 24px;&lt;br /&gt;
    word-wrap: break-word;&lt;br /&gt;
    overflow-wrap: break-word;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Common.css&amp;diff=7821</id>
		<title>Медијавики:Common.css</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Common.css&amp;diff=7821"/>
		<updated>2024-09-13T00:35:12Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Sintaksa Milokoda se više ne ističe ovako&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* [[Template:Tocright]] */&lt;br /&gt;
#tocright {&lt;br /&gt;
    float: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[ОО2/Лаб 3 2021]] */&lt;br /&gt;
del {&lt;br /&gt;
    color: #888;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* a, b, c numerisanje u uređenim listama i podlistama */&lt;br /&gt;
.abc-list ol, .abc-sublist ol ol {&lt;br /&gt;
    list-style-type: lower-alpha;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[SI Wiki]] */&lt;br /&gt;
@media (min-width: 720px) {&lt;br /&gt;
	.mainpage__column {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
		width: 33%;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[MediaWiki:Sidebar]] */&lt;br /&gt;
#mw-navigation a[href=&amp;quot;/wiki/Project:%D0%9F%D0%BE%D1%82%D1%80%D0%B5%D0%B1%D0%BD%D0%B0_%D0%BF%D0%BE%D0%BC%D0%BE%D1%9B&amp;quot;],&lt;br /&gt;
#mw-navigation a[href=&amp;quot;/wiki/Project:%D0%9D%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%B8&amp;quot;] {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[MediaWiki:Sitenotice]], [[MediaWiki:Anonnotice]] */&lt;br /&gt;
.sitenotice-box {&lt;br /&gt;
	background-color: #eee;&lt;br /&gt;
	border: 1px solid lightblue;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	margin: auto;&lt;br /&gt;
	padding: 2px;&lt;br /&gt;
	width: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
	.sitenotice-box {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sitenotice-box &amp;gt; p {&lt;br /&gt;
	align-self: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sitenotice-box .sitenotice-box__image {&lt;br /&gt;
	margin-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[Template:File]] */&lt;br /&gt;
.file-description {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sakrij podrazumevani birač licence */&lt;br /&gt;
.mw-htmlform-field-Licenses {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Uređivač mora uvek da bude monospace */&lt;br /&gt;
#wpTextbox1 {&lt;br /&gt;
	font-family: Courier New;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[Пројектовање софтвера/Јануар 2020#2. zadatak]] */&lt;br /&gt;
.transparent-svg img, img.transparent-svg {&lt;br /&gt;
	background-color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** Naziv **/&lt;br /&gt;
.mw-highlight[class*=&amp;quot;milo&amp;quot;] .n {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Stil za infokutije */&lt;br /&gt;
.portable-infobox {&lt;br /&gt;
	border: 1px solid var(--pi-border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.portable-infobox .pi-title {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Stil pri štampanju */&lt;br /&gt;
@media print {&lt;br /&gt;
	#toc {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Uklonjeni skins.vector.styles.responsive modul */&lt;br /&gt;
/* Videti https://github.com/wikimedia/mediawiki-skins-Vector/commit/68b989e */&lt;br /&gt;
@media screen and ( max-width: 720px ) {&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static !important;&lt;br /&gt;
		margin-top: 0.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Move the panel to the bottom and display it as in-line lists */&lt;br /&gt;
	#mw-navigation #mw-panel {&lt;br /&gt;
        display: table;&lt;br /&gt;
        position: static;&lt;br /&gt;
        table-layout: fixed;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        overflow: hidden;&lt;br /&gt;
        font-size: 150%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #mw-navigation #mw-panel .portal {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation #mw-panel ul li {&lt;br /&gt;
        list-style: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
	/* Hide the logo and tabs */&lt;br /&gt;
	#p-logo {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Rearrange various page elements to fill the now-available space */&lt;br /&gt;
	body .mw-footer {&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
		padding-top: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
    /* don&#039;t need these in the footer either... */&lt;br /&gt;
    body .mw-footer #footer-info-lastmod,&lt;br /&gt;
	body .mw-footer #footer-info-viewcount {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: table;&lt;br /&gt;
		position: relative;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		top: inherit;&lt;br /&gt;
		left: inherit;&lt;br /&gt;
		right: inherit;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
    #p-personal ul {&lt;br /&gt;
        padding-left: 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		/* float: none; Override not needed with `position: absolute` above. */&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: inherit;&lt;br /&gt;
		right: 0;&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		/* float: none; Override not needed with `position: absolute` above. */&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: inherit;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#p-namespaces,&lt;br /&gt;
	#p-views,&lt;br /&gt;
	#p-variants {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		top: 2.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#p-namespaces {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#p-cactions {&lt;br /&gt;
		top: 2.5em;&lt;br /&gt;
		float: right;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#p-search {&lt;br /&gt;
		/* float: none; Override not needed with `position: absolute` above. */&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		right: 0;&lt;br /&gt;
		width: 100vw;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#simpleSearch {&lt;br /&gt;
		margin: 0 3em;&lt;br /&gt;
		width: 80vw;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-content-list {&lt;br /&gt;
		left: inherit;&lt;br /&gt;
		right: -1px;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		/* Hide the 1px blue border on the left side */&lt;br /&gt;
		border-left: 0;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-data-after-content {&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vraćanje PI stila na onaj pre 1.39 */&lt;br /&gt;
.portable-infobox p {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Oznaka rešenih, delimično rešenih i nerešenih rokova */&lt;br /&gt;
.rok:before {&lt;br /&gt;
	color: green;&lt;br /&gt;
	content: &amp;quot;✓&amp;quot;;&lt;br /&gt;
	padding-right: 3px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rok.delimicno-reseno:before {&lt;br /&gt;
	color: gold;&lt;br /&gt;
	content: &amp;quot;✎&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rok.nereseno:before {&lt;br /&gt;
	color: red;&lt;br /&gt;
	content: &amp;quot;✕&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media print {&lt;br /&gt;
	.rok:before {&lt;br /&gt;
		padding-right: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.rok:before, .rok.delimicno-reseno:before, .rok.nereseno:before {&lt;br /&gt;
		content: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* SI Wiki ne koristi stranice za razgovor */&lt;br /&gt;
#ca-talk,&lt;br /&gt;
#pt-mytalk,&lt;br /&gt;
.mw-usertoollinks-talk,&lt;br /&gt;
span:not(.mw-usertoollinks):has(&amp;gt; .mw-usertoollinks-talk),&lt;br /&gt;
.mw-contributions-link-talk,&lt;br /&gt;
span:has(&amp;gt; .mw-contributions-link-talk),&lt;br /&gt;
#ca-edit.istalk,&lt;br /&gt;
#ca-addsection {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-changeslist-links &amp;gt; span:not(:first-child):before {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-changeslist-links &amp;gt; span:not(:last-child):after {&lt;br /&gt;
    content: &#039; | &#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[Special:ConfirmAccount]] koristi .errorbox umesto .mw-message-box-error */&lt;br /&gt;
.errorbox {&lt;br /&gt;
    background-color: #fee7e6;&lt;br /&gt;
    border: 1px solid #d33;&lt;br /&gt;
    margin-bottom: 16px;&lt;br /&gt;
    padding: 12px 24px;&lt;br /&gt;
    word-wrap: break-word;&lt;br /&gt;
    overflow-wrap: break-word;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Darkvector.css&amp;diff=7820</id>
		<title>Медијавики:Darkvector.css</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%B2%D0%B8%D0%BA%D0%B8:Darkvector.css&amp;diff=7820"/>
		<updated>2024-09-13T00:34:30Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Nema više lang=&amp;quot;milo&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:root {&lt;br /&gt;
	/* Stil za infokutije */&lt;br /&gt;
	--pi-background: #1B1E1F;&lt;br /&gt;
    --pi-secondary-background: #353A3C;&lt;br /&gt;
    --pi-border-color: #484E51;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mwe-math-fallback-image-inline {&lt;br /&gt;
    filter: invert(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content {&lt;br /&gt;
	font-size: calc(1rem * 0.875);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#wpTextbox1 {&lt;br /&gt;
    color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .CodeMirror {&lt;br /&gt;
    background-color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
code.mw-highlight {&lt;br /&gt;
    background-color: #4C4C4C;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monokai tema za isticanje sintakse */&lt;br /&gt;
/** pygmentize -f html -S monokai -a .mw-highlight **/&lt;br /&gt;
pre { line-height: 125%; }&lt;br /&gt;
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }&lt;br /&gt;
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }&lt;br /&gt;
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }&lt;br /&gt;
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }&lt;br /&gt;
.mw-highlight .hll { background-color: #49483e }&lt;br /&gt;
.mw-highlight { background: #272822; color: #f8f8f2 }&lt;br /&gt;
.mw-highlight .c { color: #75715e } /* Comment */&lt;br /&gt;
.mw-highlight .err { color: #960050; background-color: #1e0010 } /* Error */&lt;br /&gt;
.mw-highlight .k { color: #66d9ef } /* Keyword */&lt;br /&gt;
.mw-highlight .l { color: #ae81ff } /* Literal */&lt;br /&gt;
.mw-highlight .n { color: #f8f8f2 } /* Name */&lt;br /&gt;
.mw-highlight .o { color: #f92672 } /* Operator */&lt;br /&gt;
.mw-highlight .p { color: #f8f8f2 } /* Punctuation */&lt;br /&gt;
.mw-highlight .ch { color: #75715e } /* Comment.Hashbang */&lt;br /&gt;
.mw-highlight .cm { color: #75715e } /* Comment.Multiline */&lt;br /&gt;
.mw-highlight .cp { color: #75715e } /* Comment.Preproc */&lt;br /&gt;
.mw-highlight .cpf { color: #75715e } /* Comment.PreprocFile */&lt;br /&gt;
.mw-highlight .c1 { color: #75715e } /* Comment.Single */&lt;br /&gt;
.mw-highlight .cs { color: #75715e } /* Comment.Special */&lt;br /&gt;
.mw-highlight .gd { color: #f92672 } /* Generic.Deleted */&lt;br /&gt;
.mw-highlight .ge { font-style: italic } /* Generic.Emph */&lt;br /&gt;
.mw-highlight .gi { color: #a6e22e } /* Generic.Inserted */&lt;br /&gt;
.mw-highlight .go { color: #66d9ef } /* Generic.Output */&lt;br /&gt;
.mw-highlight .gp { color: #f92672; font-weight: bold } /* Generic.Prompt */&lt;br /&gt;
.mw-highlight .gs { font-weight: bold } /* Generic.Strong */&lt;br /&gt;
.mw-highlight .gu { color: #75715e } /* Generic.Subheading */&lt;br /&gt;
.mw-highlight .kc { color: #66d9ef } /* Keyword.Constant */&lt;br /&gt;
.mw-highlight .kd { color: #66d9ef } /* Keyword.Declaration */&lt;br /&gt;
.mw-highlight .kn { color: #f92672 } /* Keyword.Namespace */&lt;br /&gt;
.mw-highlight .kp { color: #66d9ef } /* Keyword.Pseudo */&lt;br /&gt;
.mw-highlight .kr { color: #66d9ef } /* Keyword.Reserved */&lt;br /&gt;
.mw-highlight .kt { color: #66d9ef } /* Keyword.Type */&lt;br /&gt;
.mw-highlight .ld { color: #e6db74 } /* Literal.Date */&lt;br /&gt;
.mw-highlight .m { color: #ae81ff } /* Literal.Number */&lt;br /&gt;
.mw-highlight .s { color: #e6db74 } /* Literal.String */&lt;br /&gt;
.mw-highlight .na { color: #a6e22e } /* Name.Attribute */&lt;br /&gt;
.mw-highlight .nb { color: #f8f8f2 } /* Name.Builtin */&lt;br /&gt;
.mw-highlight .nc { color: #a6e22e } /* Name.Class */&lt;br /&gt;
.mw-highlight .no { color: #66d9ef } /* Name.Constant */&lt;br /&gt;
.mw-highlight .nd { color: #a6e22e } /* Name.Decorator */&lt;br /&gt;
.mw-highlight .ni { color: #f8f8f2 } /* Name.Entity */&lt;br /&gt;
.mw-highlight .ne { color: #a6e22e } /* Name.Exception */&lt;br /&gt;
.mw-highlight .nf { color: #a6e22e } /* Name.Function */&lt;br /&gt;
.mw-highlight .nl { color: #f8f8f2 } /* Name.Label */&lt;br /&gt;
.mw-highlight .nn { color: #f8f8f2 } /* Name.Namespace */&lt;br /&gt;
.mw-highlight .nx { color: #a6e22e } /* Name.Other */&lt;br /&gt;
.mw-highlight .py { color: #f8f8f2 } /* Name.Property */&lt;br /&gt;
.mw-highlight .nt { color: #f92672 } /* Name.Tag */&lt;br /&gt;
.mw-highlight .nv { color: #f8f8f2 } /* Name.Variable */&lt;br /&gt;
.mw-highlight .ow { color: #f92672 } /* Operator.Word */&lt;br /&gt;
.mw-highlight .w { color: #f8f8f2 } /* Text.Whitespace */&lt;br /&gt;
.mw-highlight .mb { color: #ae81ff } /* Literal.Number.Bin */&lt;br /&gt;
.mw-highlight .mf { color: #ae81ff } /* Literal.Number.Float */&lt;br /&gt;
.mw-highlight .mh { color: #ae81ff } /* Literal.Number.Hex */&lt;br /&gt;
.mw-highlight .mi { color: #ae81ff } /* Literal.Number.Integer */&lt;br /&gt;
.mw-highlight .mo { color: #ae81ff } /* Literal.Number.Oct */&lt;br /&gt;
.mw-highlight .sa { color: #e6db74 } /* Literal.String.Affix */&lt;br /&gt;
.mw-highlight .sb { color: #e6db74 } /* Literal.String.Backtick */&lt;br /&gt;
.mw-highlight .sc { color: #e6db74 } /* Literal.String.Char */&lt;br /&gt;
.mw-highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */&lt;br /&gt;
.mw-highlight .sd { color: #e6db74 } /* Literal.String.Doc */&lt;br /&gt;
.mw-highlight .s2 { color: #e6db74 } /* Literal.String.Double */&lt;br /&gt;
.mw-highlight .se { color: #ae81ff } /* Literal.String.Escape */&lt;br /&gt;
.mw-highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */&lt;br /&gt;
.mw-highlight .si { color: #e6db74 } /* Literal.String.Interpol */&lt;br /&gt;
.mw-highlight .sx { color: #e6db74 } /* Literal.String.Other */&lt;br /&gt;
.mw-highlight .sr { color: #e6db74 } /* Literal.String.Regex */&lt;br /&gt;
.mw-highlight .s1 { color: #e6db74 } /* Literal.String.Single */&lt;br /&gt;
.mw-highlight .ss { color: #e6db74 } /* Literal.String.Symbol */&lt;br /&gt;
.mw-highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */&lt;br /&gt;
.mw-highlight .fm { color: #a6e22e } /* Name.Function.Magic */&lt;br /&gt;
.mw-highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */&lt;br /&gt;
.mw-highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */&lt;br /&gt;
.mw-highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */&lt;br /&gt;
.mw-highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */&lt;br /&gt;
.mw-highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */&lt;br /&gt;
&lt;br /&gt;
/* CodeMirror isticanje sintakse */&lt;br /&gt;
.cm-mw-template, .cm-mw-template-name, .cm-mw-template-argument-name,&lt;br /&gt;
.cm-mw-template-delimiter, .cm-mw-template-bracket,&lt;br /&gt;
.cm-mw-template-ground, .cm-mw-template2-ground, .cm-mw-template3-ground {&lt;br /&gt;
    color: #BE3DFF;&lt;br /&gt;
}&lt;br /&gt;
.cm-mw-skipformatting {&lt;br /&gt;
    background-color: #303436;&lt;br /&gt;
}&lt;br /&gt;
.cm-mw-list, .cm-mw-signature, .cm-mw-hr, .cm-mw-indenting,&lt;br /&gt;
.cm-mw-apostrophes-bold, .cm-mw-apostrophes-italic,&lt;br /&gt;
.cm-mw-section-header {&lt;br /&gt;
    color: #33A6FF;&lt;br /&gt;
}&lt;br /&gt;
.cm-mw-signature, .cm-mw-hr, .cm-mw-indenting {&lt;br /&gt;
    background-color: #222426;&lt;br /&gt;
}&lt;br /&gt;
.cm-mw-mnemonic {&lt;br /&gt;
    color: #84FF61;&lt;br /&gt;
}&lt;br /&gt;
.cm-mw-comment {&lt;br /&gt;
    color: #B2ACA2;&lt;br /&gt;
}&lt;br /&gt;
.cm-mw-templatevariable, .cm-mw-templatevariable-name,&lt;br /&gt;
.cm-mw-templatevariable-bracket, .cm-mw-templatevariable-delimiter,&lt;br /&gt;
.cm-mw-parserfunction-name, .cm-mw-parserfunction-bracket,&lt;br /&gt;
.cm-mw-parserfunction-delimiter {&lt;br /&gt;
    color: #FF661A;&lt;br /&gt;
}&lt;br /&gt;
pre.cm-mw-exttag, .cm-mw-exttag {&lt;br /&gt;
    background-color: #402037;&lt;br /&gt;
}&lt;br /&gt;
.cm-mw-exttag-name, .cm-mw-exttag-bracket, .cm-mw-exttag-attribute,&lt;br /&gt;
.cm-mw-htmltag-name, .cm-mw-htmltag-bracket, .cm-mw-htmltag-attribute {&lt;br /&gt;
    color: #84FF61;&lt;br /&gt;
}&lt;br /&gt;
.cm-mw-link-pagename, .cm-mw-link, .cm-mw-link-bracket, .cm-mw-link-delimiter,&lt;br /&gt;
.cm-mw-extlink, .cm-mw-free-extlink, .cm-mw-extlink-protocol,&lt;br /&gt;
.cm-mw-free-extlink-protocol, .cm-mw-extlink-bracket {&lt;br /&gt;
    color: #5C98D6;&lt;br /&gt;
}&lt;br /&gt;
.cm-mw-link-tosection {&lt;br /&gt;
    color: #41A5F1;&lt;br /&gt;
}&lt;br /&gt;
.cm-mw-table-bracket, .cm-mw-table-delimiter, .cm-mw-table-definition {&lt;br /&gt;
    color: #FF25FF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MediaViewer ispravke */&lt;br /&gt;
.mw-mmv-wrapper .mw-mmv-image-desc, .mw-mmv-wrapper .mw-mmv-credit {&lt;br /&gt;
	color: #BBBBBB;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[MediaWiki:Sidebar]] ispravke */&lt;br /&gt;
div#mw-panel div.portal h3 {&lt;br /&gt;
	color: #AAAAAA;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [[MediaWiki:Sitenotice]], [[MediaWiki:Anonnotice]] */&lt;br /&gt;
.sitenotice-box {&lt;br /&gt;
	background-color: #555;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Otkrij linkove za uređivanje na mobilnom */&lt;br /&gt;
@media screen and (max-width: 768px) {&lt;br /&gt;
	#p-logo, #left-navigation, #p-cactions, #p-views {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media print {&lt;br /&gt;
    #siteSub, #contentSub, #jump-to-nav, #footer-places, #footer-icons, #mw-navigation {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
    .mwe-math-fallback-image-inline {&lt;br /&gt;
        filter: none;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%A1%D0%9F1/%D0%9A2_2018&amp;diff=7819</id>
		<title>АСП1/К2 2018</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%A1%D0%9F1/%D0%9A2_2018&amp;diff=7819"/>
		<updated>2024-09-13T00:16:16Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Hmmmmmmm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
[https://rti.etf.bg.ac.rs/rti/ri3sp/rokovi/13S111ASP1_K2_1718.pdf Zadaci]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Napisati u pseudokodu iterativnu funkciju koja vrši generalizovani &#039;&#039;preorder&#039;&#039; obilazak &#039;&#039;m&#039;&#039;-arnog stabla na koje pokazuje pokazivač &#039;&#039;root&#039;&#039;. Svaki čvor stabla sadrži oznaku čvora i &#039;&#039;m&#039;&#039; pokazivača na potomke. Funkcija treba da vrati niz koji za svaki čvor stabla sadrži njegovu oznaku i nivo u stablu na kome se čvor nalazi. Komentarisati rešenje. Dozvoljeno je koristiti gotove linearne strukture podataka.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
PREORDER M I(root, m)&lt;br /&gt;
if root = nil then&lt;br /&gt;
    return nil&lt;br /&gt;
end_if&lt;br /&gt;
INIT_STACK(S1)&lt;br /&gt;
INIT_STACK(S2)&lt;br /&gt;
STACK_PUSH(S1, root)&lt;br /&gt;
STACK_PUSH(S2, 1)&lt;br /&gt;
node = nil&lt;br /&gt;
depth = 0&lt;br /&gt;
list = nil&lt;br /&gt;
p = nil&lt;br /&gt;
while not STACK_EMPTY(S1) do&lt;br /&gt;
    node = STACK_POP(S1)&lt;br /&gt;
    depth = STACK_POP(S2)&lt;br /&gt;
    if list = nil then&lt;br /&gt;
        list = p = GETNODE&lt;br /&gt;
    else&lt;br /&gt;
        next(p) = GETNODE&lt;br /&gt;
        p = next(p)&lt;br /&gt;
    end_if&lt;br /&gt;
    symbol(p) = symbol(node)&lt;br /&gt;
    depth(p) = depth&lt;br /&gt;
    for i = m to 1 do&lt;br /&gt;
        if children(node)[i] ≠ nil then&lt;br /&gt;
            STACK_PUSH(S1, children(node)[i])&lt;br /&gt;
            STACK_PUSH(S2, depth + 1)&lt;br /&gt;
        end_if&lt;br /&gt;
    end_for&lt;br /&gt;
end_while&lt;br /&gt;
return list&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Ovo rešenje se zasniva na čuvanju čvora i nivoa čvora u dva odvojena steka i korišćenju povezane liste (pošto ne znamo unapred količinu čvorova u stablu kako bismo alocirali niz). Za svaki čvor u steku dodajemo njegovu decu na jedan stek, s tim što ih dodajemo s desna na levo kako bi prvi posećeni čvor bio najlevlje (odnosno prvo) dete čvora (kao što je to i slučaj kod &#039;&#039;preorder&#039;&#039; obilaska), a njegov nivo uvećan za jedan na drugi stek.&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Izvesti i objasniti izraz za određivanje minimalne visine &#039;&#039;h&amp;lt;sub&amp;gt;min&amp;lt;/sub&amp;gt;&#039;&#039; za binarno stablo sa n čvorova. Kakve osobine ima binarno stablo sa minimalnom visinom?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Binarno stablo sa minimalnom visinom teži da ima svaki nivo popunjen, tj. teži da bude kompletno stablo. Pošto znamo da kompletno stablo na nivou &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; ima &amp;lt;math&amp;gt;2^i&amp;lt;/math&amp;gt; čvorova (svaki čvor osim listova ima maksimalni izlazni stepen, što je 2), i da je stoga ukupan broj čvorova u stablu jednak &amp;lt;math&amp;gt;n = 2^0 + 2^1 + ... + 2^h = 2^{h + 1} - 1&amp;lt;/math&amp;gt;. To znači da je &amp;lt;math&amp;gt;\log_2(n + 1)&amp;lt;/math&amp;gt; jednako &amp;lt;math&amp;gt;h + 1&amp;lt;/math&amp;gt; i time dobijamo da je &amp;lt;math&amp;gt;h_{min} = \left\lceil{\log_2(n + 1)}\right\rceil - 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za neko binarno stablo &#039;&#039;preorder&#039;&#039; obilazak daje poredak ABDCEFGHI, a &#039;&#039;postorder&#039;&#039; obilazak DBFIHGECA.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Navesti sve čvorove koji predstavljaju listove ovog stabla.&lt;br /&gt;
# Odrediti sve pretke čvora E.&lt;br /&gt;
# Navesti sve čvorove koji se nalaze u podstablu čiji je koren čvor E.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
     A&lt;br /&gt;
    / \&lt;br /&gt;
   B   C&lt;br /&gt;
  /   /&lt;br /&gt;
 D   E&lt;br /&gt;
    / \&lt;br /&gt;
   F   G&lt;br /&gt;
      /&lt;br /&gt;
     H&lt;br /&gt;
    /&lt;br /&gt;
   I&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# D, F, I&lt;br /&gt;
# C, A&lt;br /&gt;
# F, G, H, I&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Primenom LZW algoritma prikazati postupak kodiranja znakovnog niza LESQUELLES, ako je data početna tabela sa kodovima simbola. Napisati kodiranu poruku i izgled tabele simbola nakon postupka kodiranja.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Kodirana poruka: &#039;&#039;&#039;012341052&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Simbol&lt;br /&gt;
! Kôd&lt;br /&gt;
|-&lt;br /&gt;
| L&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| S&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Q&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| U&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| LE&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| ES&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| SQ&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| QU&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| UE&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| EL&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| LL&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| LES&lt;br /&gt;
| 12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dato je stablo formirano primenom algoritma statički &#039;&#039;Huffman&#039;&#039;. Implementirati funkciju FIND_LONGEST_CODES koja vraća broj simbola koji se kodiraju najvećim brojem bita prema formiranom stablu. Funkciji je prosleđen pokazivač na koren stabla &#039;&#039;root&#039;&#039;. Napisati u pseudokodu i metodu IS EXTERNAL NODE koja proverava da li je čvor na koji pokazuje prosleđeni pokazivač eksterni.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
FIND LONGEST CODES(root)&lt;br /&gt;
tail = head = GETNODE(root)&lt;br /&gt;
next(head) = GETNODE(nil)&lt;br /&gt;
head = next(head)&lt;br /&gt;
num_max = 0&lt;br /&gt;
t = nil&lt;br /&gt;
while tail ≠ nil do&lt;br /&gt;
    if value(tail) = nil then&lt;br /&gt;
        if tail ≠ head then&lt;br /&gt;
            next(head) = GETNODE(nil)&lt;br /&gt;
            head = next(head)&lt;br /&gt;
            num_max = 0&lt;br /&gt;
        end_if&lt;br /&gt;
    else&lt;br /&gt;
        if IS_EXTERNAL_NODE(value(tail)) then&lt;br /&gt;
            num_max = num_max + 1&lt;br /&gt;
        else&lt;br /&gt;
            if left(value(tail)) ≠ nil then&lt;br /&gt;
                next(head) = GETNODE(left(value(tail)))&lt;br /&gt;
                head = next(head)&lt;br /&gt;
            end_if&lt;br /&gt;
            if right(value(tail)) ≠ nil then&lt;br /&gt;
                next(head) = GETNODE(right(value(tail)))&lt;br /&gt;
                head = next(head)&lt;br /&gt;
            end_if&lt;br /&gt;
        end_if&lt;br /&gt;
    end_if&lt;br /&gt;
    t = next(tail)&lt;br /&gt;
    FREENODE(tail)&lt;br /&gt;
    tail = t&lt;br /&gt;
end_while&lt;br /&gt;
return num_max&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
IS EXTERNAL NODE(node)&lt;br /&gt;
if left(node) = nil and right(node) = nil then&lt;br /&gt;
    return true&lt;br /&gt;
else&lt;br /&gt;
    return false&lt;br /&gt;
end_if&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
GETNODE(value)&lt;br /&gt;
ALLOCATE(node)&lt;br /&gt;
next(node) = nil&lt;br /&gt;
value(node) = value&lt;br /&gt;
return node&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
FREENODE(node)&lt;br /&gt;
DEALLOCATE(node)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Posmatra se stablo sa slike. Povezati ga po &#039;&#039;inorder&#039;&#039;-u i ilustrovati slikom na kojoj su obeležene sve potrebne dodatne informacije. Precizno objasniti na koji način se može izvršiti ispisivanje stabla po inverznom &#039;&#039;inorder&#039;&#039; poretku.&lt;br /&gt;
     A&lt;br /&gt;
    / \&lt;br /&gt;
   B   C&lt;br /&gt;
  / \   \&lt;br /&gt;
 F   G   Y&lt;br /&gt;
    /   /&lt;br /&gt;
   E   M&lt;br /&gt;
    \&lt;br /&gt;
     X&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[File:ASP1 K2 2018 zadatak 6 stablo.svg|thumb|Rešenje prvog dela zadatka.]]&lt;br /&gt;
Algoritam za obilazak povezanog stabla obrnutim &#039;&#039;inorder&#039;&#039; poretkom dat je ispod.&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
REVERSE INORDER T(root)&lt;br /&gt;
node = root&lt;br /&gt;
while right(node) ≠ nil do&lt;br /&gt;
    node = right(node)&lt;br /&gt;
end_while&lt;br /&gt;
while node ≠ nil do&lt;br /&gt;
    P(node)&lt;br /&gt;
    if lf(node) = 0 then&lt;br /&gt;
        node = left(node)&lt;br /&gt;
    else&lt;br /&gt;
        node = left(node)&lt;br /&gt;
        while node ≠ nil and rf(node) = 1 do&lt;br /&gt;
            node = right(node)&lt;br /&gt;
        end_while&lt;br /&gt;
    end_if&lt;br /&gt;
end_while&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Primenog algoritma dinamički &#039;&#039;Huffman&#039;&#039; dekodovati poruku 0000100101011011111101101101 ukoliko se sastoji od karaktera A, B i C koji imaju početne fiksne kodove 00, 01 i 10. Proces dekodovanja prikazati po koracima.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* Dekodovana poruka: &#039;&#039;&#039;ABCCAACBBB&#039;&#039;&#039;&lt;br /&gt;
* Krajnje &#039;&#039;Huffman&#039;&#039;-ovo stablo:&lt;br /&gt;
   10&lt;br /&gt;
  /  \&lt;br /&gt;
 B    6&lt;br /&gt;
 4   / \&lt;br /&gt;
    3   C&lt;br /&gt;
   / \  3&lt;br /&gt;
 NYT  A&lt;br /&gt;
  0   3&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U jednom programu treba modelirati odnose dugovanja i potraživanja između n firmi.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Predložiti odgovarajuću logičku strukturu i detaljno opisati njene osobine.&lt;br /&gt;
# Predložiti i obrazložiti odgovarajaću memorijsku reprezentaciju ove strukture ako je potrebno optimizovati operaciju izračunavanja ukupnog iznosa dugovanja prema nekoj firmi, kao i određivanje njenog najvećeg dužnika.&lt;br /&gt;
# Napisati pseudokod funkcije koja za zadatu firmu vraća ukupna iznos dugovanja koja ona potražuje.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Graf koji nam je u ovom slučaju potreban jeste težinski usmeren graf u kom čvorovi predstavljaju firme a grane predstavljaju dugovanja, gde grana težine w od čvora A do čvora B označava da firma A duguje firmi B iznos od w jedinica valute. Operacije koje nad njim moraju biti realizovane jesu dodavanje novog čvora i povezivanje dva čvora.&lt;br /&gt;
# Optimalna memorijska reprezentacija jeste preko inverzne liste susednosti, tj. niza dužine n koji sadrži pokazivače ka ulančanim listama u kojima se nalaze svi čvorovi koji su povezani sa trenutnim čvorom. Težine grana se mogu čuvati ili u samim čvorovima ulančane liste ili u odvojenoj matrici w gde w[i, j] označava težinu grane od i ka j i može biti postavljena na ∞ ukoliko ta grana ne postoji.&lt;br /&gt;
#: Operacija izračunavanja ukupnog iznosa dugovanja može se realizovati prolaskom kroz listu susednosti i sabiranjem svih težina grana koje ti čvorovi čine s zadatim čvorom, a može se i izmeniti struktura tako da se u zaglavlju lista susednosti čuva ukupno dugovanje bez da se poveća složenost neke druge operacije.&lt;br /&gt;
#: Operacija određivanja najvećeg dužnika može se isto realizovati linearnim prolaskom kroz listu koji čuva najvećeg dužnika i najveći dug. Dodatna optimizacija može se postići time što se povezane liste pretvore u prioritetne redove što operaciji povezivanja dva čvora povećava složenost sa konstantne na logaritamsku ali operaciji pronalaženja najvećeg dužnika smanjuje složenost sa linearne na konstantnu, za šta smo i optimizovali.&lt;br /&gt;
# U implementaciji ispod smatra se da optimizacije pomenute iznad nisu primenjene (jer bi to malo obesmislilo algoritam). Takođe se smatra da su težine grana čuvane u matrici težina w.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
DEBT(G, i)&lt;br /&gt;
total_debt = 0&lt;br /&gt;
p = first(e[i])&lt;br /&gt;
while p ≠ nil do&lt;br /&gt;
    total_debt = total_debt + w[i, value(p)]&lt;br /&gt;
    p = next(p)&lt;br /&gt;
end_while&lt;br /&gt;
return total_debt&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АСП1]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%A1%D0%9F1/%D0%88%D1%83%D0%BB_2018&amp;diff=7818</id>
		<title>АСП1/Јул 2018</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%A1%D0%9F1/%D0%88%D1%83%D0%BB_2018&amp;diff=7818"/>
		<updated>2024-09-13T00:15:30Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Hmm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
[https://rti.etf.bg.ac.rs/rti/ri3sp/rokovi/13S111ASP1_jul_2018.pdf Zadaci]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Odrediti binarno stablo čijim eksternim čvorovima su pridružene težine: 3, 6, 3, 1, za koje je težinska eksterna dužina puta najmanja i izračunati tu dužinu.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
   13&lt;br /&gt;
  /  \&lt;br /&gt;
 6    7&lt;br /&gt;
     / \&lt;br /&gt;
    3   4&lt;br /&gt;
       / \&lt;br /&gt;
      3   1&lt;br /&gt;
Eksterna dužina puta: &amp;lt;math&amp;gt;1 \cdot 6 + 2 \cdot 3 + 3 \cdot 1 + 3 \cdot 3 = 6 + 6 + 3 + 9 = 24&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dat je aritmetički izraz u infiksnoj notaciji: 3+7+4*(2+1). Pretvoriti dati izraz u postfiksni izraz, a zatim prikazati stanje steka po koracima tokom izračunavanja vrednosti dobijenog postfiksnog izraza. Smatrati da pokazivač vrha steka pokazuje na poslednju zauzetu lokaciju i obeležiti ga na slici.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Postfiksni izraz: &#039;&#039;&#039;3 7 + 4 2 1 + * +&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | 3&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | 7&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | +&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | 4&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | 2&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | 1&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | +&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | *&lt;br /&gt;
! colspan=&amp;quot;2&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;
|   || -- ||   || -- ||   || -- ||   || -- ||   || -- || → || 1  ||   || -- ||   || -- ||   || -- &lt;br /&gt;
|-&lt;br /&gt;
|   || -- ||   || -- ||   || -- ||   || -- || → || 2  ||   || 2  || → || 3  ||   || -- ||   || -- &lt;br /&gt;
|-&lt;br /&gt;
|   || -- || → || 7  ||   || -- || → || 4  ||   || 4  ||   || 4  ||   || 4  || → || 12 ||   || --&lt;br /&gt;
|-&lt;br /&gt;
| → || 3  ||   || 3  || → || 10 ||   || 10 ||   || 10 ||   || 10 ||   || 10 ||   || 10 || → || 22 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Posmatra se vektorska implementacija kompletnog ili skoro kompletnog stabla reda 3 u vidu vektora &#039;&#039;V[1:n]&#039;&#039;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Prikazati stablo čija je vektorska reprezentacija data na slici.&lt;br /&gt;
# Napisati u pseudokodu funkciju koja nalazi put od čvora sa indeksom &#039;&#039;k&#039;&#039; ka korenu i funkciju koja nalazi sve sinove čvora sa indeksom &#039;&#039;k&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Slika uz deo pod a.&lt;br /&gt;
| 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11 || 12 || 13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
             1&lt;br /&gt;
        /    |    \&lt;br /&gt;
    2        3         4&lt;br /&gt;
  / | \    / | \    /  |  \&lt;br /&gt;
 5  6  7  8  9 10  11  12  13&lt;br /&gt;
&lt;br /&gt;
U pseudokodu ispod pretpostavlja se da nam put od čvora ka korenu kao i deca trenutnog čvora trebaju vraćeni kao ulančane liste.&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
NODE TO ROOT(V, n, k)&lt;br /&gt;
t = 0&lt;br /&gt;
path = nil&lt;br /&gt;
p = k&lt;br /&gt;
while p ≠ 0 do&lt;br /&gt;
    LIST_INSERT(path, v[p])&lt;br /&gt;
    t = p mod 3&lt;br /&gt;
    if t = 0 then&lt;br /&gt;
        p = p / 3&lt;br /&gt;
    else if t = 1 then&lt;br /&gt;
        p = (p - 1) / 3&lt;br /&gt;
    else&lt;br /&gt;
        p = (p + 1) / 3&lt;br /&gt;
    end_if&lt;br /&gt;
end_while&lt;br /&gt;
return path&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
CHILD NODES(V, n, k)&lt;br /&gt;
children = nil&lt;br /&gt;
if 3 * k - 1 ≤ n then&lt;br /&gt;
    LIST_INSERT(children, v[3 * k - 1])&lt;br /&gt;
end_if&lt;br /&gt;
if 3 * k ≤ n then&lt;br /&gt;
    LIST_INSERT(children, v[3 * k])&lt;br /&gt;
end_if&lt;br /&gt;
if 3 * k + 1 ≤ n then&lt;br /&gt;
    LIST_INSERT(children, v[3 * k + 1])&lt;br /&gt;
end_if&lt;br /&gt;
return children&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neka je data opšta kvadratna matrica A[&#039;&#039;l:u&#039;&#039;, &#039;&#039;l:u&#039;&#039;] koja sadrži elemente samo ispod glavne dijagonale, uključujući i tu dijagonalu. Formalno definisati i kratko objasniti adresnu funkciju za pristup proizvoljnom elementu A[&#039;&#039;i&#039;&#039;, &#039;&#039;j&#039;&#039;], ukoliko se matrica linearizuje po vrstama.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;math&amp;gt;A_{ij} = A_{ll} + \left(\frac{(i-l)(i-l+1)}{2} + j - l\right) \cdot S&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;A_{ll}&amp;lt;/math&amp;gt; je adresa početnog elementa matrice.&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{(i-l)(i-l+1)}{2}&amp;lt;/math&amp;gt; je broj elemenata u redovima iznad elementa kojeg tražimo. &amp;lt;math&amp;gt;i-l&amp;lt;/math&amp;gt; je broj redova iznad trenutnog reda i stoga broj elemenata u redu iznad našeg, a pošto broj elemenata opada sa brojem reda ovaj zbir dobijamo kao Gausov zbir.&lt;br /&gt;
* &amp;lt;math&amp;gt;j-l&amp;lt;/math&amp;gt; je broj elemenata levo od našeg trenutnog elementa.&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neka se posmatra jedan skup veb stranica u okviru lokalnog intraneta jedne kompanije. Svaka stranica sadrži određeni broj hiperlinkova koji vode ka drugim stranicama u okviru intraneta.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Opisati na koji način se ovaj skup stranica može modelovati grafom. Komentarisati tip i usmerenost grafa.&lt;br /&gt;
# Napisati u pseudokodu iterativnu funkciju koja određuje prosečan broj klikova potreban da se sa neke veb stranice stigne do neke druge veb stranice u okviru kompanijskog intraneta. Prosek računati na nivou svih mogućih parova stranica.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Ovaj skup stranica se može modelovati netežinskim usmerenim grafom gde čvorovi predstavljaju stranice a grana od strane A do strane B znači da postoji veza na strani A do strane B.&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
AVG CLICKS NUM(G)&lt;br /&gt;
for i = 1 to n do&lt;br /&gt;
    for i = 1 to n do&lt;br /&gt;
        if (i, j) ∈ E then&lt;br /&gt;
            d[i, j] = 1&lt;br /&gt;
        else&lt;br /&gt;
            d[i, j] = ∞&lt;br /&gt;
        end_if&lt;br /&gt;
    end_for&lt;br /&gt;
end_for&lt;br /&gt;
for k = 1 to n do&lt;br /&gt;
    for i = 1 to n do&lt;br /&gt;
        for j = 1 to n do&lt;br /&gt;
            if d[i, k] + d[k, j] &amp;lt; d[i, j] then&lt;br /&gt;
                d[i, j] = d[i, k] + d[k, j]&lt;br /&gt;
            end_if&lt;br /&gt;
        end_for&lt;br /&gt;
    end_for&lt;br /&gt;
end_for&lt;br /&gt;
for i = 1 to n do&lt;br /&gt;
    for j = 1 to n do&lt;br /&gt;
        if i ≠ j then&lt;br /&gt;
            sum = sum + d[i, j]&lt;br /&gt;
        end_if&lt;br /&gt;
    end_for&lt;br /&gt;
end_for&lt;br /&gt;
return sum / (n * (n - 1))&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
[[{{ns:6}}:ASP1 jul 2018 zadatak 6 graf.svg|thumb|Graf iz postavke zadatka.]]&lt;br /&gt;
Primenom algoritma za određivanje kritičnih puteva u grafu odrediti kritične puteve u grafu sa slike kao i dozvoljena kašnjenja svih aktivnosti u grafu.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Kritični putevi: &#039;&#039;&#039;AEDCM&#039;&#039;&#039; i &#039;&#039;&#039;AEDVM&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Čvor&lt;br /&gt;
! EST&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| D&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| K&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| M&lt;br /&gt;
| 13&lt;br /&gt;
|-&lt;br /&gt;
| V&lt;br /&gt;
| 11&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Aktivnost&lt;br /&gt;
! I&lt;br /&gt;
|-&lt;br /&gt;
| A-B&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| A-E&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| E-D&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| D-B&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| D-C&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| B-C&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| C-M&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| D-V&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| V-M&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| E-V&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| E-K&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| K-V&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data je dvostruko ulančana lista. Implementirati funkciju REARRANGE_LIST koja prosleđenu listu preuređuje tako da se svi elementi sa neparnih pozicija u originalnom poretku nađu pre svih elemenata sa parnih pozicija u originalnom poretku.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
LIST REMOVE(node)&lt;br /&gt;
next(prev(node)) = next(node)&lt;br /&gt;
prev(next(node)) = prev(node)&lt;br /&gt;
return node&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
LIST INSERT(before, node)&lt;br /&gt;
t = prev(before)&lt;br /&gt;
prev(before) = node&lt;br /&gt;
next(t) = node&lt;br /&gt;
prev(node) = t&lt;br /&gt;
next(node) = before&lt;br /&gt;
return node&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
REARRANGE LIST(head)&lt;br /&gt;
if head = nil then&lt;br /&gt;
    return&lt;br /&gt;
end_if&lt;br /&gt;
p = head&lt;br /&gt;
n = nil&lt;br /&gt;
loop&lt;br /&gt;
    for k = 1 to i + 1 do&lt;br /&gt;
        p = next(p)&lt;br /&gt;
        if p = nil then&lt;br /&gt;
            return&lt;br /&gt;
        end_if&lt;br /&gt;
    end_for&lt;br /&gt;
    n = LIST_REMOVE(p)&lt;br /&gt;
    for k = 1 to i do&lt;br /&gt;
        p = prev(p)&lt;br /&gt;
    end_for&lt;br /&gt;
    LIST_INSERT(p, n)&lt;br /&gt;
    p = n&lt;br /&gt;
    i = i + 1&lt;br /&gt;
end_loop&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Prikazati postupak kodiranja poruke ADBECDAADBE primenom dinamičkog &#039;&#039;Huffman&#039;&#039; algoritma.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Krajnje &#039;&#039;Huffman&#039;&#039;-ovo stablo:&lt;br /&gt;
       11&lt;br /&gt;
      /   \&lt;br /&gt;
    5       6&lt;br /&gt;
   / \     / \&lt;br /&gt;
  B   3   D   A&lt;br /&gt;
  2  / \  3   3&lt;br /&gt;
    1   E&lt;br /&gt;
   / \  2&lt;br /&gt;
 NYT  C&lt;br /&gt;
  0   1&lt;br /&gt;
Krajnja poruka: &#039;&#039;&#039;A 0D 00B 100E 000C 00 00 01 10 00 011&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Posmatra se neusmeren težinski graf predstavljen matricom susednosti, čiji čvorovi predstavljaju gradove u kojima se nalaze benzinske pumpe na kojima se može dopuniti rezervoar, a težine grana predstavljaju koliko litara goriva se potroši u putu između povezanih gradova. Perica kreće iz grada src i želi da stigne u grad dst. Na efikasan način odrediti minimalni kapacitet rezervoara Peričinog automobila da bi on mogao da uspešno da završi svoj put.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
GETNODE(i, j)&lt;br /&gt;
ALLOCATE(node)&lt;br /&gt;
from(node) = i&lt;br /&gt;
to(node) = j&lt;br /&gt;
next(node) = nil&lt;br /&gt;
return node&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
GASOLINE TRAVEL(G, src, dst)&lt;br /&gt;
branches = nil&lt;br /&gt;
t = nil&lt;br /&gt;
for i = 1 to n do&lt;br /&gt;
    for j = 1 to n do&lt;br /&gt;
        if e[i, j] = 1 then&lt;br /&gt;
            if branches = nil then&lt;br /&gt;
                branches = GETNODE(i, j)&lt;br /&gt;
            else&lt;br /&gt;
                t = next(branches)&lt;br /&gt;
                next(branches) = GETNODE(i, j)&lt;br /&gt;
                next(next(branches)) = t&lt;br /&gt;
            end_if&lt;br /&gt;
        end_if&lt;br /&gt;
    end_for&lt;br /&gt;
end_for&lt;br /&gt;
S = {src}&lt;br /&gt;
loop&lt;br /&gt;
    t = branches&lt;br /&gt;
    min_branch = nil&lt;br /&gt;
    while t ≠ nil do&lt;br /&gt;
        if (from(t) ∈ S) and (to(t) ∈ (V - S) then&lt;br /&gt;
            if (min_branch = nil) or (w(from(t), to(t)) &amp;lt; w(from(min_branch), to(min_branch))) then&lt;br /&gt;
                min_branch = t&lt;br /&gt;
            end_if&lt;br /&gt;
        end_if&lt;br /&gt;
        t = next(t)&lt;br /&gt;
    end_while&lt;br /&gt;
    if to(min_branch) = dst then&lt;br /&gt;
        return last_min&lt;br /&gt;
    end_if&lt;br /&gt;
    S = S + {to(min_branch)}&lt;br /&gt;
end_loop&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Prilikom obilaska nekog grafa može se dobiti &#039;&#039;&#039;stablo obilaska&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Definisati ovo stablo.&lt;br /&gt;
# Prilikom obilaska usmerenog grafa po dubini dobijena su početna (&#039;&#039;t1&#039;&#039;) i završna vremena (&#039;&#039;t2&#039;&#039;) čvorova kao u priloženoj tabeli. Rekonstruisati stablo obilaska i precizno objasniti postupak rekonstrukcije.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! &#039;&#039;t1&#039;&#039;&lt;br /&gt;
! &#039;&#039;t2&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| A || 3 || 4&lt;br /&gt;
|-&lt;br /&gt;
| B || 5 || 10&lt;br /&gt;
|-&lt;br /&gt;
| C || 11 || 12&lt;br /&gt;
|-&lt;br /&gt;
| D || 14 || 15&lt;br /&gt;
|-&lt;br /&gt;
| E || 8 || 9&lt;br /&gt;
|-&lt;br /&gt;
| F || 2 || 13&lt;br /&gt;
|-&lt;br /&gt;
| G || 1 || 16&lt;br /&gt;
|-&lt;br /&gt;
| H || 6 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Stablo obilaska je aciklični neusmereni netežinski graf čije grane označavaju iz kog je čvora posećen koji čvor prilikom obilaska grafa, a čvorovi su isti kao u grafu koji se obilazi.&lt;br /&gt;
# Postupak ide tako što udemo predom kroz brojeve &amp;lt;math&amp;gt;t = 1 ... 2n&amp;lt;/math&amp;gt; i čuvamo jedan imaginarni pokazivač koji je u &amp;lt;math&amp;gt;t = 1&amp;lt;/math&amp;gt; postavljam na koren. Ako &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; označava početno vreme nekog čvora, na trenutni pokazivač dodajemo dete sa vrednošću tog čvora i prebacujemo pokazivač na to dete. Ako &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; označava krajnje vreme nekog čvora, prebacujemo pokazivač na njegovog roditelja (ako je pokazivač na korenu, završavamo).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
      G&lt;br /&gt;
     / \&lt;br /&gt;
    F   D&lt;br /&gt;
  / | \&lt;br /&gt;
 A  B  C&lt;br /&gt;
   / \&lt;br /&gt;
  H   E&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АСП1]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</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=7817</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=7817"/>
		<updated>2024-09-13T00:10:22Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: /* Postavka */ Ovo nije milokod&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;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Objasniti razliku između pojmova &#039;&#039;proces&#039;&#039; i &#039;&#039;nit&#039;&#039; (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. Nit (&#039;&#039;thread&#039;&#039;) ili laki proces je 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 &#039;&#039;wait&#039;&#039; 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;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void Event::wait() {&lt;br /&gt;
    if (val == 1) {&lt;br /&gt;
        val = 0;&lt;br /&gt;
    } else {&lt;br /&gt;
        if (setjmp(Thread::running-&amp;gt;context) == 0) {&lt;br /&gt;
            blocked.put(running);&lt;br /&gt;
            Thread::running = Scheduler::get();&lt;br /&gt;
            longjmp(Thread::running-&amp;gt;context, 1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
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 &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; koja kreira proces nad programom u fajlu sa zadatom putanjom i vraća negativnu vrednost u slučaju greške, a &amp;lt;code&amp;gt;pid&amp;lt;/code&amp;gt; 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;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int run(char* path) {&lt;br /&gt;
    pid_t pid = fork();&lt;br /&gt;
    if (pid &amp;lt; 0) {&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
    if (pid == 0) {&lt;br /&gt;
        int t = exec(path);&lt;br /&gt;
        if (t &amp;lt; 0) {&lt;br /&gt;
            exit(-2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return pid;&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;pascal&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 &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; a zatim se desi promena konteksta i P2 postavi &amp;lt;code&amp;gt;flag2&amp;lt;/code&amp;gt; na &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&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 iznova i iznova, dok će dinamičko učitavanje zauzeti više memorije, svaki potreban modul će učitati po jednom.&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U nekom sistemu primenjuje se &#039;&#039;worst-fit&#039;&#039; 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): A64, B16, C128, D32, A-, E8, F32, B-&lt;br /&gt;
&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;
Jedno slovo označava 8KB prostora.&lt;br /&gt;
 AAAAAAAA------------------------&lt;br /&gt;
 AAAAAAAABB----------------------&lt;br /&gt;
 AAAAAAAABBCCCCCCCCCCCCCCCC------&lt;br /&gt;
 AAAAAAAABBCCCCCCCCCCCCCCCCDDDD--&lt;br /&gt;
 --------BBCCCCCCCCCCCCCCCCDDDD--&lt;br /&gt;
 E-------BBCCCCCCCCCCCCCCCCDDDD--&lt;br /&gt;
 EFFFF---BBCCCCCCCCCCCCCCCCDDDD--&lt;br /&gt;
 EFFFF-----CCCCCCCCCCCCCCCCDDDD--&lt;br /&gt;
* Slobodnih fragmenata: 2&lt;br /&gt;
* Najmanji slobodan fragment: 16KB&lt;br /&gt;
* Najveći slobodan fragment: 40KB&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, MMU vidi tu memoriju kao zabranjenu za upis. Prilikom generisanja greške, OS proverava da li je zabranjena, i kako vidi da zapravo nije nije, to znači da se radi o tehnici kopiranja na upis pa će operativni sistem kopirati stranicu i reći MMU da je dozvoljena za 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;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;time_t time (time_t* tloc);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#: Vraća broj sekundi koje su protekle od 1. 1. 1970. u 0 časova. Postoje i bibliotečke funkcije u &amp;lt;code&amp;gt;time.h&amp;lt;/code&amp;gt; koje vraćaju “kalendarsko” vreme, rastavljeno na datum i sat itd, a oslanjaju se na ovaj sistemski poziv: &amp;lt;code&amp;gt;asctime&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ctime&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gmtime&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;localtime&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Suspenzija pozivajućeg procesa (“uspavljivanje”) za zadato vreme&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;unsigned int sleep (unsigned int seconds);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Čekanje na događaje, uslove ili na sinhronizacione primitive, ali vremenski ograničeno (tzv. &#039;&#039;timeout&#039;&#039; kontrole); ako se proces ne deblokira u zadatom vremenu, biće deblokiran zbog isteka vremenske kontrole; npr. za semafore:&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;int sem_timedwait (sem_t *sem, const struct timespec *abs_timeout);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ako je tekući direktorijum nekog procesa &amp;lt;code&amp;gt;/a/b/c&amp;lt;/code&amp;gt;, koja je apsolutna putanja do fajla koji taj proces otvara davanjem putanje &amp;lt;code&amp;gt;d/../../e/f.txt&amp;lt;/code&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Raščlanimo relativnu putanju na delove:&lt;br /&gt;
* &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt;: idemo u direktorijum &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt;, sada je putanja &amp;lt;code&amp;gt;/a/b/c/d&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt; idemo jedan direktorijum iznad, sada je putanja &amp;lt;code&amp;gt;/a/b/c&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt; idemo jedan direktorijum iznad, sada je putanja &amp;lt;code&amp;gt;/a/b&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;e&amp;lt;/code&amp;gt; idemo u direktorijum &amp;lt;code&amp;gt;e&amp;lt;/code&amp;gt;, sada je putanja &amp;lt;code&amp;gt;/a/b/e&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;f.txt&amp;lt;/code&amp;gt; posećujemo fajl &amp;lt;code&amp;gt;f.txt&amp;lt;/code&amp;gt;, krajnja putanja je &amp;lt;code&amp;gt;/a/b/e/f.txt&amp;lt;/code&amp;gt;&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;
=== Rešenje ===&lt;br /&gt;
Pretpostavimo da &amp;lt;code&amp;gt;free_head&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;free_tail&amp;lt;/code&amp;gt; predstavljaju pokazivače na početak i kraj ulančane liste slobodnih blokova.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void truncate(FCB *f) {&lt;br /&gt;
    if (f-&amp;gt;head == NULL) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    int numOfBlocks = f-&amp;gt;size / BLOCK_SIZE, i = 0, cur = f-&amp;gt;head, tmp_head = f-&amp;gt;head, prev;&lt;br /&gt;
    while (i &amp;lt; numOfBlocks) {&lt;br /&gt;
        free(cur);&lt;br /&gt;
        prev = cur;&lt;br /&gt;
        cur = cur-&amp;gt;next;&lt;br /&gt;
        i++;&lt;br /&gt;
    }&lt;br /&gt;
    if (free_head == NULL) {&lt;br /&gt;
        free_head = tmp_head;&lt;br /&gt;
    } else {&lt;br /&gt;
        free_tail-&amp;gt;next = tmp_head;&lt;br /&gt;
    }&lt;br /&gt;
    free_tail = prev;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%A1%D0%9F1/%D0%9A3_%D0%88%D1%83%D0%BB_2021&amp;diff=7785</id>
		<title>АСП1/К3 Јул 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%A1%D0%9F1/%D0%9A3_%D0%88%D1%83%D0%BB_2021&amp;diff=7785"/>
		<updated>2024-09-13T00:03:28Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Hmm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{nerešeno}}&lt;br /&gt;
&#039;&#039;&#039;Jul 2021. godine&#039;&#039;&#039; nema postavku dostupnu sa stranice predmeta.&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Posmatra se plan za realizaciju jednog softverskog projekta dat tabelom. Faza S je početna.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Plan za realizaciju projekta&lt;br /&gt;
| A || S – 7 dana&lt;br /&gt;
|-&lt;br /&gt;
| B || G – 6 dana, R – 2 dana&lt;br /&gt;
|-&lt;br /&gt;
| F || L – 11 dana&lt;br /&gt;
|-&lt;br /&gt;
| L || S – 7 dana&lt;br /&gt;
|-&lt;br /&gt;
| G || L – 3 dana,  A – 4 dana&lt;br /&gt;
|-&lt;br /&gt;
| M || F – 5 dana, B – 3 dana&lt;br /&gt;
|-&lt;br /&gt;
| R || A – 5 dana&lt;br /&gt;
|-&lt;br /&gt;
| T || B – 7 dana, M – 2 dana&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;(5p)&#039;&#039;&#039; Predstaviti projekat grafom.&lt;br /&gt;
# &#039;&#039;&#039;(10p)&#039;&#039;&#039; Ako faza B predstavlja beta fazu projekta i želimo da znamo da ni ona neće kasniti naći kritični put (ili puteve) i kritične aktivnosti za beta fazu.&lt;br /&gt;
# &#039;&#039;&#039;(10p)&#039;&#039;&#039; Naći kritični put (ili puteve) za uspešnu realizaciju ovog projekta kao i kritične aktivnosti.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data je mreža puteva između gradova predstavljena matričnom reprezentacijom grafa. Putarina između bilo koja dva povezana grada iznosi 1. Međutim pri ulasku u svaki grad, postoji određena taksa koju je potrebno platiti. Cena takse se definiše na nivou grada.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Mika voli da putuje i nalazi se u gradu X. Izračunati za svaki grad koliko je novca Miki potrebno da ga obiđe ukoliko uvek kreće iz mesta X. Implementirati funkciju koja efikasno računa minimalnu potrebnu količinu novca za posetu svakom gradu. Funkciji su prosleđeni broj gradova, graf, cene taksi za svaki grad (niz prirodnih brojeva) i indeks početnog grada.&lt;br /&gt;
# Jedan od gradova je zbog nedostatka turista uveo da turisti pri ulasku ne plaćaju taksu, već da dobiju beneficiju u vidu novca. Ukratko prokomentarisati kako ova modifikacija utiče na predloženi algoritam pod a). Da li bi se u tom slučaju koristio isti algoritam ili bi bio pogodniji neki drugi (ako da, koji)?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;CALC EXPENSES(N, G, taxes, X)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
[[Датотека:ASP1 jul 2021 zadatak 3.svg|1000px|frame|center|Slika iz trećeg zadatka.]]&lt;br /&gt;
Uparivanje neusmerenog netežinskog grafa.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Predložiti i ukratko opisati način na koji se vrši pronalaženje maksimalnog uparenog skupa grafa.&lt;br /&gt;
# Za graf sa slike prikazati pronalaženje maksimalnog uparenog skupa po koracima.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Obilazak po dubini&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Definisati stablo obilaska.&lt;br /&gt;
# Definisati početno i završno vreme prilikom obilaska grafa po dubini. Koja je njegova uloga?&lt;br /&gt;
# Napisati u pseudokodu implementaciju funkcije koja na osnovu zapisanih početnih i završnih vremena obilaska svakog čvora obilaskom po dubini određuje da li se čvor X nalazi u podstablu čvora Y u stablu obilaska.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Милокод|&amp;lt;nowiki&amp;gt;IS SUCCESSOR(start_time, finish_time, x, y)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АСП1]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Milokod&amp;diff=7783</id>
		<title>Модул:Milokod</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Milokod&amp;diff=7783"/>
		<updated>2024-09-12T23:53:25Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Trim&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
require(&#039;strict&#039;)&lt;br /&gt;
&lt;br /&gt;
local KEYWORDS = {&lt;br /&gt;
	-- Условни изрази&lt;br /&gt;
	[&#039;if&#039;] = true,&lt;br /&gt;
	[&#039;then&#039;] = true,&lt;br /&gt;
	[&#039;else&#039;] = true,&lt;br /&gt;
	[&#039;end_if&#039;] = true,&lt;br /&gt;
	-- Петље&lt;br /&gt;
	[&#039;for&#039;] = true,&lt;br /&gt;
	[&#039;do&#039;] = true,&lt;br /&gt;
	[&#039;end_for&#039;] = true,&lt;br /&gt;
	[&#039;while&#039;] = true,&lt;br /&gt;
	[&#039;end_while&#039;] = true,&lt;br /&gt;
	[&#039;break&#039;] = true,&lt;br /&gt;
	[&#039;repeat&#039;] = true,&lt;br /&gt;
	[&#039;until&#039;] = true,&lt;br /&gt;
	-- Опсези и низови&lt;br /&gt;
	[&#039;in&#039;] = true,&lt;br /&gt;
	[&#039;to&#039;] = true,&lt;br /&gt;
	-- Остало&lt;br /&gt;
	[&#039;return&#039;] = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local OPERATORS = {&lt;br /&gt;
	[&#039;and&#039;] = true,&lt;br /&gt;
	[&#039;or&#039;] = true,&lt;br /&gt;
	[&#039;not&#039;] = true,&lt;br /&gt;
	[&#039;nil&#039;] = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function heading(highlighted, line)&lt;br /&gt;
	table.insert(highlighted, &#039; &amp;lt;u&amp;gt;&#039;)&lt;br /&gt;
	local paren = mw.ustring.find(line, &#039;(&#039;, 0, true)&lt;br /&gt;
	if paren ~= nil then&lt;br /&gt;
		local funcname = mw.ustring.sub(line, 1, paren - 1)&lt;br /&gt;
		table.insert(highlighted, mw.ustring.upper(funcname))&lt;br /&gt;
		table.insert(highlighted, &#039;(&#039;)&lt;br /&gt;
		local args = mw.ustring.sub(line, paren + 1, mw.ustring.len(line) - 1)&lt;br /&gt;
		for idx, arg in ipairs(mw.text.split(args, &#039;,&#039;, true)) do&lt;br /&gt;
			table.insert(highlighted, &#039;\&#039;\&#039;&#039;)&lt;br /&gt;
			table.insert(highlighted, mw.text.trim(arg))&lt;br /&gt;
			table.insert(highlighted, &#039;\&#039;\&#039;&#039;)&lt;br /&gt;
			table.insert(highlighted, &#039;, &#039;)&lt;br /&gt;
		end&lt;br /&gt;
		-- Замена последње запете са затвореном заградом.&lt;br /&gt;
		highlighted[#highlighted] = &#039;)&#039;&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(highlighted, line)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(highlighted, &#039;&amp;lt;/u&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function highlighter(varname)&lt;br /&gt;
	if KEYWORDS[varname] then&lt;br /&gt;
		return &#039;\&#039;\&#039;\&#039;&#039; .. varname .. &#039;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
	elseif OPERATORS[varname] then&lt;br /&gt;
		return varname&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;\&#039;\&#039;&#039; .. varname .. &#039;\&#039;\&#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function body(line)&lt;br /&gt;
	local newline, _ = mw.ustring.gsub(line, &#039;%f[%w_-][a-z0-9-_]+%f[^%w_-]&#039;, highlighter)&lt;br /&gt;
	newline, _ = mw.ustring.gsub(newline, &#039;%f[%w_-][A-Z]%f[^%w_-]&#039;, highlighter)&lt;br /&gt;
	return newline&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local milocode = mw.text.trim(mw.text.decode(mw.text.unstrip(frame:getParent().args[1])))&lt;br /&gt;
	local highlighted = {}&lt;br /&gt;
	for lineno, line in ipairs(mw.text.split(milocode, &#039;\n&#039;, true)) do&lt;br /&gt;
		if lineno == 1 then&lt;br /&gt;
			heading(highlighted, line)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(highlighted, &#039; &#039;)&lt;br /&gt;
			table.insert(highlighted, body(line))&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(highlighted, &#039;\n&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	-- Уклања се последња празна линија.&lt;br /&gt;
	highlighted[#highlighted] = nil&lt;br /&gt;
	return table.concat(highlighted)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Milokod&amp;diff=7782</id>
		<title>Модул:Milokod</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Milokod&amp;diff=7782"/>
		<updated>2024-09-12T23:50:07Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Razmak na početku&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
require(&#039;strict&#039;)&lt;br /&gt;
&lt;br /&gt;
local KEYWORDS = {&lt;br /&gt;
	-- Условни изрази&lt;br /&gt;
	[&#039;if&#039;] = true,&lt;br /&gt;
	[&#039;then&#039;] = true,&lt;br /&gt;
	[&#039;else&#039;] = true,&lt;br /&gt;
	[&#039;end_if&#039;] = true,&lt;br /&gt;
	-- Петље&lt;br /&gt;
	[&#039;for&#039;] = true,&lt;br /&gt;
	[&#039;do&#039;] = true,&lt;br /&gt;
	[&#039;end_for&#039;] = true,&lt;br /&gt;
	[&#039;while&#039;] = true,&lt;br /&gt;
	[&#039;end_while&#039;] = true,&lt;br /&gt;
	[&#039;break&#039;] = true,&lt;br /&gt;
	[&#039;repeat&#039;] = true,&lt;br /&gt;
	[&#039;until&#039;] = true,&lt;br /&gt;
	-- Опсези и низови&lt;br /&gt;
	[&#039;in&#039;] = true,&lt;br /&gt;
	[&#039;to&#039;] = true,&lt;br /&gt;
	-- Остало&lt;br /&gt;
	[&#039;return&#039;] = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local OPERATORS = {&lt;br /&gt;
	[&#039;and&#039;] = true,&lt;br /&gt;
	[&#039;or&#039;] = true,&lt;br /&gt;
	[&#039;not&#039;] = true,&lt;br /&gt;
	[&#039;nil&#039;] = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function heading(highlighted, line)&lt;br /&gt;
	table.insert(highlighted, &#039; &amp;lt;u&amp;gt;&#039;)&lt;br /&gt;
	local paren = mw.ustring.find(line, &#039;(&#039;, 0, true)&lt;br /&gt;
	if paren ~= nil then&lt;br /&gt;
		local funcname = mw.ustring.sub(line, 1, paren - 1)&lt;br /&gt;
		table.insert(highlighted, mw.ustring.upper(funcname))&lt;br /&gt;
		table.insert(highlighted, &#039;(&#039;)&lt;br /&gt;
		local args = mw.ustring.sub(line, paren + 1, mw.ustring.len(line) - 1)&lt;br /&gt;
		for idx, arg in ipairs(mw.text.split(args, &#039;,&#039;, true)) do&lt;br /&gt;
			table.insert(highlighted, &#039;\&#039;\&#039;&#039;)&lt;br /&gt;
			table.insert(highlighted, mw.text.trim(arg))&lt;br /&gt;
			table.insert(highlighted, &#039;\&#039;\&#039;&#039;)&lt;br /&gt;
			table.insert(highlighted, &#039;, &#039;)&lt;br /&gt;
		end&lt;br /&gt;
		-- Замена последње запете са затвореном заградом.&lt;br /&gt;
		highlighted[#highlighted] = &#039;)&#039;&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(highlighted, line)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(highlighted, &#039;&amp;lt;/u&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function highlighter(varname)&lt;br /&gt;
	if KEYWORDS[varname] then&lt;br /&gt;
		return &#039;\&#039;\&#039;\&#039;&#039; .. varname .. &#039;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
	elseif OPERATORS[varname] then&lt;br /&gt;
		return varname&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;\&#039;\&#039;&#039; .. varname .. &#039;\&#039;\&#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function body(line)&lt;br /&gt;
	local newline, _ = mw.ustring.gsub(line, &#039;%f[%w_-][a-z0-9-_]+%f[^%w_-]&#039;, highlighter)&lt;br /&gt;
	newline, _ = mw.ustring.gsub(newline, &#039;%f[%w_-][A-Z]%f[^%w_-]&#039;, highlighter)&lt;br /&gt;
	return newline&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local milocode = mw.text.trim(mw.text.decode(mw.text.unstrip(frame:getParent().args[1])))&lt;br /&gt;
	local highlighted = {}&lt;br /&gt;
	for lineno, line in ipairs(mw.text.split(milocode, &#039;\n&#039;, true)) do&lt;br /&gt;
		if lineno == 1 then&lt;br /&gt;
			heading(highlighted, line)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(highlighted, &#039; &#039;)&lt;br /&gt;
			table.insert(highlighted, body(line))&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(highlighted, &#039;\n&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(highlighted)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Milokod&amp;diff=7781</id>
		<title>Модул:Milokod</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Milokod&amp;diff=7781"/>
		<updated>2024-09-12T23:48:57Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Pretprocesiranje argumenta&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
require(&#039;strict&#039;)&lt;br /&gt;
&lt;br /&gt;
local KEYWORDS = {&lt;br /&gt;
	-- Условни изрази&lt;br /&gt;
	[&#039;if&#039;] = true,&lt;br /&gt;
	[&#039;then&#039;] = true,&lt;br /&gt;
	[&#039;else&#039;] = true,&lt;br /&gt;
	[&#039;end_if&#039;] = true,&lt;br /&gt;
	-- Петље&lt;br /&gt;
	[&#039;for&#039;] = true,&lt;br /&gt;
	[&#039;do&#039;] = true,&lt;br /&gt;
	[&#039;end_for&#039;] = true,&lt;br /&gt;
	[&#039;while&#039;] = true,&lt;br /&gt;
	[&#039;end_while&#039;] = true,&lt;br /&gt;
	[&#039;break&#039;] = true,&lt;br /&gt;
	[&#039;repeat&#039;] = true,&lt;br /&gt;
	[&#039;until&#039;] = true,&lt;br /&gt;
	-- Опсези и низови&lt;br /&gt;
	[&#039;in&#039;] = true,&lt;br /&gt;
	[&#039;to&#039;] = true,&lt;br /&gt;
	-- Остало&lt;br /&gt;
	[&#039;return&#039;] = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local OPERATORS = {&lt;br /&gt;
	[&#039;and&#039;] = true,&lt;br /&gt;
	[&#039;or&#039;] = true,&lt;br /&gt;
	[&#039;not&#039;] = true,&lt;br /&gt;
	[&#039;nil&#039;] = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function heading(highlighted, line)&lt;br /&gt;
	table.insert(highlighted, &#039;&amp;lt;u&amp;gt;&#039;)&lt;br /&gt;
	local paren = mw.ustring.find(line, &#039;(&#039;, 0, true)&lt;br /&gt;
	if paren ~= nil then&lt;br /&gt;
		local funcname = mw.ustring.sub(line, 1, paren - 1)&lt;br /&gt;
		table.insert(highlighted, mw.ustring.upper(funcname))&lt;br /&gt;
		table.insert(highlighted, &#039;(&#039;)&lt;br /&gt;
		local args = mw.ustring.sub(line, paren + 1, mw.ustring.len(line) - 1)&lt;br /&gt;
		for idx, arg in ipairs(mw.text.split(args, &#039;,&#039;, true)) do&lt;br /&gt;
			table.insert(highlighted, &#039;\&#039;\&#039;&#039;)&lt;br /&gt;
			table.insert(highlighted, mw.text.trim(arg))&lt;br /&gt;
			table.insert(highlighted, &#039;\&#039;\&#039;&#039;)&lt;br /&gt;
			table.insert(highlighted, &#039;, &#039;)&lt;br /&gt;
		end&lt;br /&gt;
		-- Замена последње запете са затвореном заградом.&lt;br /&gt;
		highlighted[#highlighted] = &#039;)&#039;&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(highlighted, line)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(highlighted, &#039;&amp;lt;/u&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function highlighter(varname)&lt;br /&gt;
	if KEYWORDS[varname] then&lt;br /&gt;
		return &#039;\&#039;\&#039;\&#039;&#039; .. varname .. &#039;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
	elseif OPERATORS[varname] then&lt;br /&gt;
		return varname&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;\&#039;\&#039;&#039; .. varname .. &#039;\&#039;\&#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function body(line)&lt;br /&gt;
	local newline, _ = mw.ustring.gsub(line, &#039;%f[%w_-][a-z0-9-_]+%f[^%w_-]&#039;, highlighter)&lt;br /&gt;
	newline, _ = mw.ustring.gsub(newline, &#039;%f[%w_-][A-Z]%f[^%w_-]&#039;, highlighter)&lt;br /&gt;
	return newline&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local milocode = mw.text.trim(mw.text.decode(mw.text.unstrip(frame:getParent().args[1])))&lt;br /&gt;
	local highlighted = {}&lt;br /&gt;
	for lineno, line in ipairs(mw.text.split(milocode, &#039;\n&#039;, true)) do&lt;br /&gt;
		if lineno == 1 then&lt;br /&gt;
			heading(highlighted, line)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(highlighted, body(line))&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(highlighted, &#039;\n&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(highlighted)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Milokod&amp;diff=7780</id>
		<title>Модул:Milokod</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Milokod&amp;diff=7780"/>
		<updated>2024-09-12T23:43:59Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Ispravljeno da hvata reči i velika slova odvojeno&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
require(&#039;strict&#039;)&lt;br /&gt;
&lt;br /&gt;
local KEYWORDS = {&lt;br /&gt;
	-- Условни изрази&lt;br /&gt;
	[&#039;if&#039;] = true,&lt;br /&gt;
	[&#039;then&#039;] = true,&lt;br /&gt;
	[&#039;else&#039;] = true,&lt;br /&gt;
	[&#039;end_if&#039;] = true,&lt;br /&gt;
	-- Петље&lt;br /&gt;
	[&#039;for&#039;] = true,&lt;br /&gt;
	[&#039;do&#039;] = true,&lt;br /&gt;
	[&#039;end_for&#039;] = true,&lt;br /&gt;
	[&#039;while&#039;] = true,&lt;br /&gt;
	[&#039;end_while&#039;] = true,&lt;br /&gt;
	[&#039;break&#039;] = true,&lt;br /&gt;
	[&#039;repeat&#039;] = true,&lt;br /&gt;
	[&#039;until&#039;] = true,&lt;br /&gt;
	-- Опсези и низови&lt;br /&gt;
	[&#039;in&#039;] = true,&lt;br /&gt;
	[&#039;to&#039;] = true,&lt;br /&gt;
	-- Остало&lt;br /&gt;
	[&#039;return&#039;] = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local OPERATORS = {&lt;br /&gt;
	[&#039;and&#039;] = true,&lt;br /&gt;
	[&#039;or&#039;] = true,&lt;br /&gt;
	[&#039;not&#039;] = true,&lt;br /&gt;
	[&#039;nil&#039;] = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function heading(highlighted, line)&lt;br /&gt;
	table.insert(highlighted, &#039;&amp;lt;u&amp;gt;&#039;)&lt;br /&gt;
	local paren = mw.ustring.find(line, &#039;(&#039;, 0, true)&lt;br /&gt;
	if paren ~= nil then&lt;br /&gt;
		local funcname = mw.ustring.sub(line, 1, paren - 1)&lt;br /&gt;
		table.insert(highlighted, mw.ustring.upper(funcname))&lt;br /&gt;
		table.insert(highlighted, &#039;(&#039;)&lt;br /&gt;
		local args = mw.ustring.sub(line, paren + 1, mw.ustring.len(line) - 1)&lt;br /&gt;
		for idx, arg in ipairs(mw.text.split(args, &#039;,&#039;, true)) do&lt;br /&gt;
			table.insert(highlighted, &#039;\&#039;\&#039;&#039;)&lt;br /&gt;
			table.insert(highlighted, mw.text.trim(arg))&lt;br /&gt;
			table.insert(highlighted, &#039;\&#039;\&#039;&#039;)&lt;br /&gt;
			table.insert(highlighted, &#039;, &#039;)&lt;br /&gt;
		end&lt;br /&gt;
		-- Замена последње запете са затвореном заградом.&lt;br /&gt;
		highlighted[#highlighted] = &#039;)&#039;&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(highlighted, line)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(highlighted, &#039;&amp;lt;/u&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function highlighter(varname)&lt;br /&gt;
	if KEYWORDS[varname] then&lt;br /&gt;
		return &#039;\&#039;\&#039;\&#039;&#039; .. varname .. &#039;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
	elseif OPERATORS[varname] then&lt;br /&gt;
		return varname&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;\&#039;\&#039;&#039; .. varname .. &#039;\&#039;\&#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function body(line)&lt;br /&gt;
	local newline, _ = mw.ustring.gsub(line, &#039;%f[%w_-][a-z0-9-_]+%f[^%w_-]&#039;, highlighter)&lt;br /&gt;
	newline, _ = mw.ustring.gsub(newline, &#039;%f[%w_-][A-Z]%f[^%w_-]&#039;, highlighter)&lt;br /&gt;
	return newline&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local milocode = mw.text.trim(frame:getParent().args[1])&lt;br /&gt;
	local highlighted = {}&lt;br /&gt;
	for lineno, line in ipairs(mw.text.split(milocode, &#039;\n&#039;, true)) do&lt;br /&gt;
		if lineno == 1 then&lt;br /&gt;
			heading(highlighted, line)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(highlighted, body(line))&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(highlighted, &#039;\n&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(highlighted)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Milokod&amp;diff=7779</id>
		<title>Шаблон:Milokod</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Milokod&amp;diff=7779"/>
		<updated>2024-09-12T23:28:28Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Šablon za isticanje milokoda&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Milokod|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Код&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Милокод без икакве синтаксе истакнуте. Прва линија је неопходно да буде дефиниција функције са аргументима.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;BINARY SEARCH PROB(arr, n, k)&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;Шаблон за истицанје синтаксе кода приказаног у књизи Мила В. Томашевића \&amp;quot;Алгоритми и структуре података\&amp;quot;, такозваног милокода. Када му се зада обичан милокод, овај шаблон подебља, подвуче и искоси одређене конструкте како би изгледали као у поменутој књизи.&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;[[Категорија:Шаблони]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Milokod&amp;diff=7778</id>
		<title>Модул:Milokod</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:Milokod&amp;diff=7778"/>
		<updated>2024-09-12T23:22:56Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Modul za isticanje Milokod sintakse (kako bi zamenio hakove unutar SyntaxHighlight ekstenzije)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
require(&#039;strict&#039;)&lt;br /&gt;
&lt;br /&gt;
local KEYWORDS = {&lt;br /&gt;
	-- Условни изрази&lt;br /&gt;
	[&#039;if&#039;] = true,&lt;br /&gt;
	[&#039;then&#039;] = true,&lt;br /&gt;
	[&#039;else&#039;] = true,&lt;br /&gt;
	[&#039;end_if&#039;] = true,&lt;br /&gt;
	-- Петље&lt;br /&gt;
	[&#039;for&#039;] = true,&lt;br /&gt;
	[&#039;do&#039;] = true,&lt;br /&gt;
	[&#039;end_for&#039;] = true,&lt;br /&gt;
	[&#039;while&#039;] = true,&lt;br /&gt;
	[&#039;end_while&#039;] = true,&lt;br /&gt;
	[&#039;break&#039;] = true,&lt;br /&gt;
	[&#039;repeat&#039;] = true,&lt;br /&gt;
	[&#039;until&#039;] = true,&lt;br /&gt;
	-- Опсези и низови&lt;br /&gt;
	[&#039;in&#039;] = true,&lt;br /&gt;
	[&#039;to&#039;] = true,&lt;br /&gt;
	-- Остало&lt;br /&gt;
	[&#039;return&#039;] = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local OPERATORS = {&lt;br /&gt;
	[&#039;and&#039;] = true,&lt;br /&gt;
	[&#039;or&#039;] = true,&lt;br /&gt;
	[&#039;not&#039;] = true,&lt;br /&gt;
	[&#039;nil&#039;] = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function heading(highlighted, line)&lt;br /&gt;
	table.insert(highlighted, &#039;&amp;lt;u&amp;gt;&#039;)&lt;br /&gt;
	local paren = mw.ustring.find(line, &#039;(&#039;, 0, true)&lt;br /&gt;
	if paren ~= nil then&lt;br /&gt;
		local funcname = mw.ustring.sub(line, 1, paren - 1)&lt;br /&gt;
		table.insert(highlighted, mw.ustring.upper(funcname))&lt;br /&gt;
		table.insert(highlighted, &#039;(&#039;)&lt;br /&gt;
		local args = mw.ustring.sub(line, paren + 1, mw.ustring.len(line) - 1)&lt;br /&gt;
		for idx, arg in ipairs(mw.text.split(args, &#039;,&#039;, true)) do&lt;br /&gt;
			table.insert(highlighted, &#039;\&#039;\&#039;&#039;)&lt;br /&gt;
			table.insert(highlighted, mw.text.trim(arg))&lt;br /&gt;
			table.insert(highlighted, &#039;\&#039;\&#039;&#039;)&lt;br /&gt;
			table.insert(highlighted, &#039;, &#039;)&lt;br /&gt;
		end&lt;br /&gt;
		-- Замена последње запете са затвореном заградом.&lt;br /&gt;
		highlighted[#highlighted] = &#039;)&#039;&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(highlighted, line)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(highlighted, &#039;&amp;lt;/u&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function highlighter(varname)&lt;br /&gt;
	if KEYWORDS[varname] then&lt;br /&gt;
		return &#039;\&#039;\&#039;\&#039;&#039; .. varname .. &#039;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
	elseif OPERATORS[varname] then&lt;br /&gt;
		return varname&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;\&#039;\&#039;&#039; .. varname .. &#039;\&#039;\&#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function body(line)&lt;br /&gt;
	local newline, _ = mw.ustring.gsub(line, &#039;[a-z0-9-_]+&#039;, highlighter)&lt;br /&gt;
	return newline&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local milocode = mw.ustring.trim(frame:getParent().args[1])&lt;br /&gt;
	local highlighted = {}&lt;br /&gt;
	for lineno, line in ipairs(mw.text.split(milocode, &#039;\n&#039;, true)) do&lt;br /&gt;
		if lineno == 1 then&lt;br /&gt;
			heading(highlighted, line)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(highlighted, body(line))&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(highlighted, &#039;\n&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(highlighted)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%A0%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D1%81%D0%BA%D0%B5_%D0%BC%D1%80%D0%B5%D0%B6%D0%B5_1&amp;diff=7718</id>
		<title>Рачунарске мреже 1</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%A0%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D1%81%D0%BA%D0%B5_%D0%BC%D1%80%D0%B5%D0%B6%D0%B5_1&amp;diff=7718"/>
		<updated>2024-07-05T03:06:03Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: /* Рачунање */ Ne postoji ovaj uslov više&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| шифра     = 13С112РМ1, 13Е112РМ1&lt;br /&gt;
| семестар  = 4&lt;br /&gt;
| статус    = обавезни&lt;br /&gt;
| страница  = [https://rti.etf.bg.ac.rs/rti/ir2rm/ rti.etf.rs/rti/ir2rm]&lt;br /&gt;
| одсек     = СИ, РТИ&lt;br /&gt;
| следећи   = Рачунарске мреже 2&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Рачунарске мреже 1&#039;&#039;&#039; су обавезан предмет у четвртом семестру на СИ и РТИ.&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
* [https://studentetfbgacrs-my.sharepoint.com/:f:/g/personal/sa190595d_student_etf_bg_ac_rs/ElqwLCIltDdHspd9-kDBMqUBMSB32ATH9vtNMSRej59MsQ Преузимање &#039;&#039;Packet Tracer&#039;&#039;]&lt;br /&gt;
* [https://drive.google.com/open?id=1--8WGiKMDDu9VxWT_6gr0pNUEGAPPi2K ETF SI] (задаци са испита)&lt;br /&gt;
* [https://app.box.com/s/0r50je333z1qyypz0h3rm0iqb9s0d64f/folder/8376150409 ETF Materijali (Box)] (испитна теорија)&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
На предмету се прелазе следеће области:&lt;br /&gt;
* &#039;&#039;&#039;Први блок:&#039;&#039;&#039; Слој везе података, Ethernet, VLAN, STP, WLAN, WAN, PPP&lt;br /&gt;
* &#039;&#039;&#039;Други блок:&#039;&#039;&#039; IP, рутирање, ARP, ICMP, протоколи рутирања, RIP, OSPF&lt;br /&gt;
* &#039;&#039;&#039;Трећи блок:&#039;&#039;&#039; Транспортни слој, TCP, UDP, Апликативни слој (HTTP, SMTP), DNS, IPv6, RARP, BOOTP, DHCP, NAT, ACL&lt;br /&gt;
Вежбе прате предавања и на њима се прелазе задаци из области са предавања (STP, IP, RIP, OSPF, DHCP, DNS, NAT), као и ради у програму &#039;&#039;Packet Tracer&#039;&#039; који се користи за [[#Пројекат|пројекат]]. Са предавања долази већина теоријских питања на колоквијуму, али са вежби долази задатак који носи највише бодова. Наставни материјали се постављају на &#039;&#039;Moodle&#039;&#039; курс предмета, док страница предмета не садржи корисне информације.&lt;br /&gt;
&lt;br /&gt;
На &#039;&#039;Moodle&#039;&#039; курсу предмета били су дати задаци за вежбу појединих области:&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = Рачунарске мреже 1/Задаци \d+&lt;br /&gt;
| namespace       =&lt;br /&gt;
| noresultsheader = Тренутно нема задатака&lt;br /&gt;
| format          = ,\n* [[%TITLE%|²{#invoke:String¦sub¦%PAGE%¦27¦-1}²]],,&lt;br /&gt;
| ordermethod     = title&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
На предмету од 2020. године постоји пројекат које заменио некадашње лабораторијске вежбе. Пројекат се може бранити у јунском и августовском року. Доступне су следеће поставке пројеката из претходних година:&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = RM1 Projekat \d+.pdf&lt;br /&gt;
| namespace       = File&lt;br /&gt;
| noresultsheader = Тренутно нема поставки пројекта&lt;br /&gt;
| format          = ,\n* [[Медиј:%TITLE%|²{#invoke:String¦sub¦%PAGE%¦24¦-5}²]],,&lt;br /&gt;
| ordermethod     = title&lt;br /&gt;
}}&lt;br /&gt;
Доступан је [[Рачунарске мреже 1/Packet Tracer|водич за &#039;&#039;Packet Tracer&#039;&#039; команде]]. Пошто су поставке пројеката 2020, 2021, 2022, 2023, i 2024. године биле идентичне, доступан је и [[Рачунарске мреже 1/Пројекат 2021|водич за пројекат]].&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Уколико желите да вежбате за колоквијум или теоријски део испита, &#039;&#039;&#039;препоручено је да прво прођете кроз&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-size: larger;&amp;quot;&amp;gt;[[Рачунарске мреже 1/Питања|велику базу питања у облику теста]]&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; на овом викију.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
На колоквијумима генерално долазе теоријски задаци у вези са градивом са предавања и по један кратак задатак са вежби, док на испитима долазе већи задаци који су били обрађивани на вежбама.&lt;br /&gt;
&lt;br /&gt;
Следећи задаци са испитних рокова су доступни:&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = Рачунарске мреже 1/.* \d+$&lt;br /&gt;
| nottitleregexp  = Рачунарске мреже 1/Задаци \d+&lt;br /&gt;
| nottitleregexp  = Рачунарске мреже 1/Пројекат \d+&lt;br /&gt;
| noresultsheader = Тренутно нема решених рокова.&lt;br /&gt;
| format          = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦20¦-1}²]],,&lt;br /&gt;
}}&lt;br /&gt;
Више задатака са испитних рокова од прошлих година су доступни на везама у одељку [[#Корисне везе|Корисне везе]]. Доступна су и теоријска питања, али би требало да се она сва већ налазе у великој бази питања. Уколико желите да додате рок, посетите &#039;&#039;&#039;[[Project:Направи#Moodle|страницу за прављење рока]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
За предмет је предвиђена једна књига:&lt;br /&gt;
* [https://akademska-misao.rs/wp-content/uploads/2023/07/Osnovi_racunarskh_mreza-Slavko_Gajin%E2%80%A2FINAL.zip &#039;&#039;&#039;&amp;quot;Основе рачунарских мрежа&amp;quot;&#039;&#039;&#039;,] С.Гајин, 2023, доступна бесплатно са сајта Академске мисли&lt;br /&gt;
По узору на [[Рачунарске мреже 2#Литература|РМ2]], књига је предвиђена да садржи сво градиво потребно за колоквијуме.&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
=== СИ ===&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — Бодови са првог и другог колоквијума (0-20 сваки), надокнада једног или оба у јунском року&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — Бодови са интегралног испита (0-80), могуће радити након јунског рока&lt;br /&gt;
* &amp;lt;math&amp;gt;K_3&amp;lt;/math&amp;gt; — бодови са трећег колоквијума (0-40)&lt;br /&gt;
* &amp;lt;math&amp;gt;PR&amp;lt;/math&amp;gt; — Бодови са пројекта (0-20)&lt;br /&gt;
* Укупни бодови: &amp;lt;math&amp;gt;P = \left\{\begin{array}{ll}&lt;br /&gt;
    K_1 + K_2 + K_3 + PR, &amp;amp; \text{сви рокови} \\&lt;br /&gt;
    I + PR, &amp;amp; \text{почев од јулског рока} &lt;br /&gt;
\end{array}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== РТИ ===&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1&amp;lt;/math&amp;gt; — Бодови са колоквијума (0-40 сваки), надокнада у јунском року&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — Бодови са интегралног испита (0-80), могуће радити након јунског рока&lt;br /&gt;
* &amp;lt;math&amp;gt;K_2&amp;lt;/math&amp;gt; — бодови са трећег колоквијума (0-40)&lt;br /&gt;
* &amp;lt;math&amp;gt;PR&amp;lt;/math&amp;gt; — Бодови са пројекта (0-20)&lt;br /&gt;
* Укупни бодови: &amp;lt;math&amp;gt;P = \left\{\begin{array}{ll}&lt;br /&gt;
    K_1 + K_2 + PR, &amp;amp; \text{сви рокови} \\&lt;br /&gt;
    I + PR, &amp;amp; \text{почев од јулског рока} &lt;br /&gt;
\end{array}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P \leq 50&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;50 &amp;lt; P \leq 60&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;60 &amp;lt; P \leq 70&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;70 &amp;lt; P \leq 80&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;80 &amp;lt; P \leq 90&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;90 &amp;lt; P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Рачунање ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;calculator&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;K1&amp;quot; data-max=&amp;quot;100&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;K_2&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;K2&amp;quot; data-max=&amp;quot;100&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;K_3&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;K3&amp;quot; data-max=&amp;quot;100&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;I&amp;quot; data-max=&amp;quot;100&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;Z&amp;quot; data-max=&amp;quot;100&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;PR&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;PR&amp;quot; data-max=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;T&amp;quot; data-expression=&amp;quot;K1 K2 K3 + + 3 / I max&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;!-- max((K1 + K2 + K3)/3, I) --&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;P&amp;quot; data-expression=&amp;quot;T 2 / Z 3 * 10 / PR + +&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* Оцена: &amp;lt;span data-expression=&amp;quot;P 10 / ceil 5 max 10 min&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Потребна помоћ ==&lt;br /&gt;
* {{zadaci|postavke}}&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</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%9A2_2024&amp;diff=7625</id>
		<title>Архитектура рачунара/К2 2024</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%9A2_2024&amp;diff=7625"/>
		<updated>2024-05-06T14:35:18Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: KockaAdmiralac преместио је страницу Архитектура рачунара/К 2 2024 на Архитектура рачунара/К2 2024 без остављања преусмерења: Bez razmaka&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;К2 2024. године&#039;&#039;&#039; одржан је у априлу&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
І (15)&lt;br /&gt;
&amp;lt;br&amp;gt;1. (5) Посматра се магистрала са подељеним циклусима на којој се реализују циклус слање захтева за&lt;br /&gt;
читање, циклус слање захтева за упис и циклус врађање податка. Магистрала се састоји од адресних линија,&lt;br /&gt;
линија података и управљачких линија. За сваки оД навелена три циклуса на магистрали навести по којим&lt;br /&gt;
линијама (адресне линије, линије података и сигнали по управљачким линијама) и које информације размењују&lt;br /&gt;
газда и слуга. Одговор дати табеларно.&lt;br /&gt;
&amp;lt;br&amp;gt;Циклус - Линије - Информације - Ко поставља &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;2. (5) Модули mod5, mod4, mod3, mod2, mod1 и mod0, од којих je mod5 највишег а mod0 најнижег приоритета,&lt;br /&gt;
учествују у арбитрацији да би могли да реализују циклус на магистрали.&lt;br /&gt;
&amp;lt;br&amp;gt;а) Нацртати структуру ароитратора за случај паралелне арбитрације и повезаги ове модуле на арбитратор&lt;br /&gt;
водећи рачуна о њиховим приоритетима, Објаснити како се реализује ароитрација.&lt;br /&gt;
&amp;lt;br&amp;gt;б) Нацртати како&lt;br /&gt;
ове модуле треба повезати да би могла да се реализује серијска арбитрација водећи рачуна&lt;br /&gt;
њиховим приоритетима, Објаснити како се у овом случају реализује арбитрација.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;3. (5) Контролер улазне периферије и улазна периферија за међусобно повезивање користе паралелни интерфејс&lt;br /&gt;
који се састоји од линија података, једне статусне линије и једне управљачке линије. Статусном линијом&lt;br /&gt;
контролер улазне периферије даје индикацију периферији да ли у његов регистар податка може да се уписује&lt;br /&gt;
садржај са линија података, док периферија управљачком линијом обезбеђује упис податка са линија података&lt;br /&gt;
у регистар податка контролера улазне периферије.&lt;br /&gt;
&amp;lt;br&amp;gt;а) Навести по ком редоследу се статусна линија контролера периферије и управљачка линија периферије&lt;br /&gt;
користе за синхронизацију при слању података из периферије у контролер периферије. Одговор дати табеларно.&lt;br /&gt;
Редослед_ Линија - Вредност - Значење - Ко поставља&lt;br /&gt;
&amp;lt;br&amp;gt;б) За случај да процесор не стигне да прочита постојећи податак пре него што периферија генерише нови&lt;br /&gt;
податак нацртати временске облике сигнала које размењују контролер периферије и периферија и навести које&lt;br /&gt;
сигнале и по ком редоследу генеришу контролер периферије и периферија.&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
II (10) &amp;lt;br&amp;gt;Посматра се једноадресни процесор који је повезан са меморијом и улазно/излазним уређајима преко&lt;br /&gt;
синхроне магистрале. Улазно/излазни адресни простор је меморијски мапиран. Адресни простор је капацитета&lt;br /&gt;
16GB,&lt;br /&gt;
величина адресибилне јединица је 32 бита. Највиши део адресног простора капацитета 1GВ је&lt;br /&gt;
резервисан за улазно/излазни адресни простор, док је остатак адресног простора резервисан за ROM и RAM&lt;br /&gt;
меморије. RАМ меморија заузима највиших 3G адреса адресног простора резервисаног за RОМ и RAM&lt;br /&gt;
меморију, а остатак тог адресног простора припада RОМ мемориіи&lt;br /&gt;
Физичка RАМ меморија (RАМ попуњен) је капацитета 3GВ и заузима највише адресе адресног простора&lt;br /&gt;
резервисаног за RАМ меморију. Физичка RОМ меморија (RОМ попуњен) заузима највишу трећину адресног&lt;br /&gt;
простора резервисаног за RОМ меморију. Постоји само један улазно/излазни уређај који је повезан на највише&lt;br /&gt;
адресе улазно/излазног адресног простора. Улазно/излазни уређај има 24 регистара&lt;br /&gt;
&amp;lt;br&amp;gt;а) (6) Табелу попунити са релевантним адресама. Све адресе дати у хексадецималном бројном систему.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Table Title&lt;br /&gt;
|-&lt;br /&gt;
! Р.Бр.&lt;br /&gt;
! Адресни простор&lt;br /&gt;
! Почетна адреса&lt;br /&gt;
! Последња адреса&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Адресни простор резервисан за ROM&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Адресни простор резервисан за RAM&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Физичка ROM меморија&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Физичка RAM меморија&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Улазно/излазни адресни простор&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Улазно/излазни адресни простор попуњен&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Напомена: Табелу прецртати (редни број, почетна адреса,ч последња адреса)у Вашу&lt;br /&gt;
свеску.&lt;br /&gt;
&amp;lt;br&amp;gt;б) (4) Приказати реализацију физичке RAM меморије као један чип користећи чипове 1Gx8 бита. Дозвољеноје&lt;br /&gt;
коришћење само И, ИЛИ, НИ, НИЛИ логичких кола. Уз вођење рачуна да њихов број буде минималан.&lt;br /&gt;
&amp;lt;br&amp;gt;Напомене: На испиту нису дозвољена никаква помоћна средства, ни калкулатори ни литература. Колоквијум&lt;br /&gt;
траје 90 минута. Студент је дужан да пише читко и Уредно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Наставити са копирањем одељака изнад уколико има још задатака. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%95%D0%9F/%D0%9A2_2024&amp;diff=7619</id>
		<title>ИЕП/К2 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%95%D0%9F/%D0%9A2_2024&amp;diff=7619"/>
		<updated>2024-05-01T17:20:44Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Kategorizacija&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&#039;&#039;&#039;Други колоквијум 2024. године&#039;&#039;&#039; одржан је 21. априла. На колоквијуму су били доступни &#039;&#039;Spark&#039;&#039; документација, презентација са предавања, виртуелна машина коришћена на предавању и два текстуална фајла као примери уноса (без очекиваног исписа или примера параметара).&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Посматра се евиденција о редитељима и сценаристима ангажованим на неком филму. У једном реду се налазе: идентификатор филма, листа идентификатора редитеља, листа идентификатора сценариста.&lt;br /&gt;
Подаци о особама су дати у облику:&lt;br /&gt;
tconst (string) directors (array of nconsts) writers (array of nconsts)&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# У програмском језику Јава саставити МаpReduce програм користећи Spark који враћа статистичке податке о филмовима: минималан број редитеља, максималан број редитеља, и просечан број редитеља по филму, за филмове који имају барем једну особу која je на датом филму и сценариста и редитељ. Резултат je jедан ред укупно. Водити рачуна о конкурентности.&lt;br /&gt;
# У програмском језику Јава саставити МаpReduce програм користећи Spark који враћа статистичке податке за све особе које су на филмовима истовремено биле и редитељи и сценаристи: минималан број филмова, максималан број филмова, и просечан број филмова за филмове на којима je дата особа била и редитељ и сценариста, за редитеље који имају барем N унетих филмова (N параметар који се прослеђује рачунарима који раде обраду) на којима нису нужно били и сценаристи. Резултат je један ред укупно. Водити рачуна о конкурентности.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Одговор&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; се предају у виду два&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; јава датотека (&amp;lt;code&amp;gt;FilmoviProsek.java&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;OsobeProsek.java&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
[[Категорија:ИЕП]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9A1_2024&amp;diff=7587</id>
		<title>ОО2/К1 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9A1_2024&amp;diff=7587"/>
		<updated>2024-04-28T12:06:58Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Ćirilica&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;K1 2024. godine&#039;&#039;&#039; održan je 22. marta i trajao je 20min.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Šta je sve tačno za programski jezik &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Interpretiranje bajtokoda je slabijih performansi od izvršavanja mašinskog koda.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Java virtuelna mašina predstavlja interpreter za bajtkod.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Prevođenjem izvornog koda dobije se interpretativni bajtkod.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Implementacija Javine virtuelne mašine je nezavisna od platforme.&lt;br /&gt;
# Bajtkod zavisi od platforme na kojoj se vrši prevođenje izvornog koda.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
Koje od navedenih implicitnih konverzija su dozvoljene u programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Konverzija podataka tipa &#039;&#039;&#039;byte&#039;&#039;&#039; u tip &#039;&#039;&#039;int&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Konverzija podataka tipa &#039;&#039;&#039;int&#039;&#039;&#039; u tip &#039;&#039;&#039;long&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Konverzija podataka tipa &#039;&#039;&#039;int&#039;&#039;&#039; u tip &#039;&#039;&#039;short&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Konverzija podataka tipa &#039;&#039;&#039;float&#039;&#039;&#039; u tip &#039;&#039;&#039;double&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Konverzija podataka tipa &#039;&#039;&#039;double&#039;&#039;&#039; u tip &#039;&#039;&#039;float&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
Šta ispisuje sledeći program na programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
    private static void f(Object a, Integer b, int c) {&lt;br /&gt;
        a = 0;&lt;br /&gt;
        b = b + 1;&lt;br /&gt;
        c = c - 1;&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Integer a = 1, b = 1, c = 1;&lt;br /&gt;
        f(a, b, c);&lt;br /&gt;
        System.out.println(a + &amp;quot;,&amp;quot; + b + &amp;quot;,&amp;quot; + c);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1,1,1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;U Javi se argumenti, uključujući reference prenose po vrednosti. Tako da su u metodi f kopije referenci na a i b dobile nove vrednosti, ali ne i same reference a i b&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Šta sve mogu da sadrže klase na programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Deskruktore&lt;br /&gt;
# Preklopljene operatorske funkcije&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Definicije interfejsa&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Inicijalizacione blokove&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Definicije klasnih tipova&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Šta sve može da stoji umesto ### da bi se sledeći kod uspešno pisan na jeziku &#039;&#039;Java&#039;&#039; uspešno preveo?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class B {&lt;br /&gt;
    B b1;&lt;br /&gt;
    static B b2;&lt;br /&gt;
    public static void s() {}&lt;br /&gt;
    public void m() {}&lt;br /&gt;
    public static void test() {&lt;br /&gt;
        ###&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Object o = b2&amp;lt;/span&amp;gt;&lt;br /&gt;
# m()&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;B.s()&amp;lt;/span&amp;gt;&lt;br /&gt;
# Object o = b1&lt;br /&gt;
# b1.m()&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Napisati naredbu na jeziku &#039;&#039;Java&#039;&#039; kojom se uvoze svi tipovi iz paketa &#039;&#039;&#039;paket&#039;&#039;&#039;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;import paket.*;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Koje od sledećih tvrdnji su tačne za pakete na programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Klase u paketu mogu da imaju samo privatno ili javno pravo pristupa.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Tipovi deklarisani u izvornoj datoteci bez deklaracije paketa biće smešteni u bezimeni paket.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Deklaracija paketa package a.b; može da postoji čak i ako ni u jednom fajlu sa izvornim kodom programa ne postoji deklaracija paketa package a;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Paket java.util se uvozi implicitno.&lt;br /&gt;
# Podrazumevano pravo pristupa metodima je paketsko, a poljima klasa privatno.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
Šta ispisuje sledeći program na programskom jeziku &#039;&#039;Java&#039;&#039;?Upisati &#039;&#039;&#039;NP&#039;&#039;&#039; ukoliko se program ne prevodi.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package test;&lt;br /&gt;
class B {&lt;br /&gt;
    public void m(D x) {&lt;br /&gt;
        System.out.print(1);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class D extends B {&lt;br /&gt;
    public void m(D x) {&lt;br /&gt;
        System.out.print(2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class Test {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        B b = new B();&lt;br /&gt;
        b.m(new D());&lt;br /&gt;
        b = new D();&lt;br /&gt;
        b.m(new D());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Kod poziva metoda se gleda tip objekta, ne tip reference&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Šta ispisuje sledeći program na programskom jeziku &#039;&#039;Java&#039;&#039;?Upisati &#039;&#039;&#039;NP&#039;&#039;&#039; ukoliko se program ne prevodi.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package p;&lt;br /&gt;
public class A {&lt;br /&gt;
    protected int pi;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package q;&lt;br /&gt;
import p.A;&lt;br /&gt;
public class B extends A {&lt;br /&gt;
    public void m() {&lt;br /&gt;
        ###&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package q;&lt;br /&gt;
public class C extends A {}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;B b = new B(); b.pi = 1;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;pi = 1&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;super.pi = 1&amp;lt;/span&amp;gt;&lt;br /&gt;
#  C c = new C(); c.pi = 1;&lt;br /&gt;
#  A a = new A(); a.pi = 1;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Prava pristupa za reference na objekte koji nisu &#039;&#039;this&#039;&#039; je ista za sve klase&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Da bi klasa &#039;&#039;X&#039;&#039; bezuslovno podržala kloniranje i obezbedila da i izvedene klase iz nje moraju da podrže kloniranje, pored toga što treba da implementira interfejs &#039;&#039;Cloneable&#039;&#039;, potrebno je i da nadjača metod clone na način:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# protected X clone () {...}&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;public X clone() {...}&amp;lt;/span&amp;gt;&lt;br /&gt;
# protected X clone () throws CloneNotSupportedException {...}&lt;br /&gt;
# public X clone () throws CloneNotSupportedException {...}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОО2]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9A2_2024&amp;diff=7586</id>
		<title>ОО2/К2 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9A2_2024&amp;diff=7586"/>
		<updated>2024-04-28T12:06:40Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Ćirilica&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;K2 2024. godine&#039;&#039;&#039; održan je 26. aprila i trajao je 20min.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Ovako izgledaju zadaci sa odgovorima ponuđenim u padajućem meniju.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;Interfejs, Ni apstraktna klasa ni interfejs, Apstraktna klasa, I apstraktna klasa i interfejs&amp;quot;&amp;gt;&lt;br /&gt;
# Mogu da se definišu reference tog tipa &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;I apstraktna klasa i interfejs&amp;lt;/span&amp;gt;&lt;br /&gt;
# Podrazumevano pravo pristupa članovima je javno &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Interfejs&amp;lt;/span&amp;gt;&lt;br /&gt;
# Može da ima zaštićene članove &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Apstraktna klasa&amp;lt;/span&amp;gt;&lt;br /&gt;
# Može da ima inicijalizacione blokove &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Apstraktna klasa&amp;lt;/span&amp;gt;&lt;br /&gt;
# Predstavlja kombinaciju ugovora i delimične implementacije&amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;I apstraktna klasa i interfejs&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
Koji modifikator se stavlja uz metod interfejsa za koji želimo da napišemo podrazumevanu implementaciju sa ciljem da se izbegne modifikacija postojećih implementacija interfejsa kada je interfejsu potrebno dodati nove metode&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
Koje od sledećih tvrdnji su tačne za programski jezik &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Objektima tipa nabrajanja memeorija se dodeljuje na steku&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Argumenti koji se navode uz simboličku konstantu u definiciji tipa nabrajanja su argumenti konstruktora nabrajanja&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Tip nabrajanja može da definiše metode&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Tip nabrajanja može da definiše nestatička polja&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Simboličke konstante nabrajanj predstavljaju nepromenljive reference na objekte datog tipa nabrajanja&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Na jeziku &#039;&#039;Java&#039;&#039;, provereni izuzetak može da se baci iz:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Statičkog inicijalizacionog bloka, ako svi konstruktori navode dati tip izuzetka u svojoj &#039;&#039;throws&#039;&#039; klauzuli&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Metoda koja navodi dati tip izuzetka u svojoj &#039;&#039;throws&#039;&#039; klauzuli&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Nestatičkog inicijalizacionog bloka, ako svi konstruktori navode dati tip izuzetka u svojoj &#039;&#039;throws&#039;&#039; klauzuli&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Bloka &#039;&#039;catch&#039;&#039; grane, ako metod u kojem se grana nalazi navodi dati tip izuzetka u svojoj &#039;&#039;throws&#039;&#039; klauzuli&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Konstruktora koji navodi dati tip izuzetka u svojoj &#039;&#039;throws&#039;&#039; klauzuli&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Šta sve može da se napiše umesto *** da bi se programski kod uspešno preveo?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Spoljasnja {&lt;br /&gt;
    private int x;&lt;br /&gt;
    public in y;&lt;br /&gt;
    class Unutrasnja {&lt;br /&gt;
        public void m() {&lt;br /&gt;
            ***&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;super.y = 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;x = 1&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;&amp;gt;y = 1&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;&amp;gt;Spoljasnja.this.y = 1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;this.y = 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Šta ispisuje sledeći program napisan na programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
interface I {&lt;br /&gt;
    int m(int x, int y);&lt;br /&gt;
}&lt;br /&gt;
public class Main {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int x = 2, y = 5, z = 0;&lt;br /&gt;
        I[] niz = new I[] {&lt;br /&gt;
                (a, b) -&amp;gt; a+b,&lt;br /&gt;
                (a, b) -&amp;gt; a*b,&lt;br /&gt;
                (a, b) -&amp;gt; b-a&lt;br /&gt;
        };&lt;br /&gt;
        for(I i: niz) {&lt;br /&gt;
            z += i.m(x,y);&lt;br /&gt;
        }&lt;br /&gt;
        System.out.print(z);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;20&amp;lt;/span&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Korak gde se pravi new I[] zapravo inicijalizuje niz sa 3 anonimne klase, gde svaka implementira interfejs I, a iza -&amp;gt; je data implementacija metoda m() iz I. Na kraju se sabiraju rezultati sve 3 operacije s x i y&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Koji od navedenih metoda mogu da bace &#039;&#039;&#039;InterruptedException&#039;&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;notify&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;&amp;gt;sleep&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;&amp;gt;join&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;interrupt&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;&amp;gt;wait&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&#039;&#039;&#039;InterruptedException&#039;&#039;&#039; bacaju metode koje na bilo koji način zaustavljaju nit koja ih poziva&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
Koje od sledećih tvrdnji su tačne za programski jezik &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Moguće je da nadjačani metod u izvedenoj klasi ne bude označen modifikatorom &#039;&#039;&#039;synchronized&#039;&#039;&#039;, iako je odgovarajući metod u osnovnoj klasi označen tim modifikatorom.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Moguće je da u isto vreme jedna nit pristupi jednom sinhronizovanom nestatičkom metodu objekta, a druga nit pristupi drugom sinhronizovanom nestatičkom metodu istog objekta.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Moguće je da u isto vreme jedna nit pristupi jednom sinhronizovanom nestatičkom metodu objekta, a druga nit pristupi istom sinhronizovanom metodu drugog objekta iste klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Moguće je da u isto vreme jedna nit pristupi sinhronizovanom statičkom metodu klase, a druga nit pristupi  sinhronizovanom nestatičkom metodu objekta iste te klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ukoliko nit ne može da pristupi sinhronizovanom metodu neke klase one preskače taj metod i nastavlja sa izvršavanjem.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Koje od sledećih tvrdnji su tačne za &#039;&#039;&#039;notify()&#039;&#039;&#039; u programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Moguće je da pozvati metod &#039;&#039;&#039;notify()&#039;&#039;&#039; kad nijedna nit nije blokirana.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Prilikom nadjačavanja metoda &#039;&#039;&#039;notify()&#039;&#039;&#039; mora se nadjačati i metod &#039;&#039;&#039;wait()&#039;&#039;&#039; .&lt;br /&gt;
# Metod &#039;&#039;&#039;notify()&#039;&#039;&#039; može da se nadjača samo za klasu koja je označena kao &#039;&#039;&#039;synchronized&#039;&#039;&#039;&lt;br /&gt;
# Prilikom nadjačavanja metoda &#039;&#039;&#039;notify()&#039;&#039;&#039; mora se nadjačati i metod &#039;&#039;&#039;notifyAll()&#039;&#039;&#039; .&lt;br /&gt;
# Prilikom poziva metoda &#039;&#039;&#039;notify()&#039;&#039;&#039; sa izvršavanjem garantovano nastavlja nit koja je najduže čekala&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
Koji ispisi su mogući za sledeći programski kod na jeziku Java?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Nit extends Thread {&lt;br /&gt;
    public void run() {&lt;br /&gt;
        System.out.println(&amp;quot;3&amp;quot;);&lt;br /&gt;
        for (int i = 0; i &amp;lt; 1000; i++);&lt;br /&gt;
        System.out.println(&amp;quot;4&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class Main {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Nit nit = new Nit();&lt;br /&gt;
        nit.run();&lt;br /&gt;
        System.out.println(&amp;quot;1&amp;quot;);&lt;br /&gt;
        for(int i = 0; i &amp;lt; 1000; i++);&lt;br /&gt;
        System.out.println(&amp;quot;2&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Dati programski kod ispisuje isključivo 1234&lt;br /&gt;
# Nijedan od ponuđenih odgovora nije tačan&lt;br /&gt;
# Moguće je više različitih ispisa, pri čemu se 1 uvek nalazi ispred 2, a 3 uvek ispred 4&lt;br /&gt;
# Dati programski kod se ne prevodi&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Dati programski kod ispisuje isključivo 3412&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Funkcija run() se poziva sekvencijalno, kao i bilo koja druga funkcija, pa je redosled predodređen. Da bi se nad objektom napravila nit, mora da se pozove start()&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОО2]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9A2_2024&amp;diff=7585</id>
		<title>ОО2/К2 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9A2_2024&amp;diff=7585"/>
		<updated>2024-04-28T12:06:20Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: KockaAdmiralac преместио је страницу OO2/K2 2024 на ОО2/К2 2024 без остављања преусмерења: Čirilica&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;K2 2024. godine&#039;&#039;&#039; održan je 26. aprila i trajao je 20min.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Ovako izgledaju zadaci sa odgovorima ponuđenim u padajućem meniju.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;Interfejs, Ni apstraktna klasa ni interfejs, Apstraktna klasa, I apstraktna klasa i interfejs&amp;quot;&amp;gt;&lt;br /&gt;
# Mogu da se definišu reference tog tipa &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;I apstraktna klasa i interfejs&amp;lt;/span&amp;gt;&lt;br /&gt;
# Podrazumevano pravo pristupa članovima je javno &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Interfejs&amp;lt;/span&amp;gt;&lt;br /&gt;
# Može da ima zaštićene članove &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Apstraktna klasa&amp;lt;/span&amp;gt;&lt;br /&gt;
# Može da ima inicijalizacione blokove &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Apstraktna klasa&amp;lt;/span&amp;gt;&lt;br /&gt;
# Predstavlja kombinaciju ugovora i delimične implementacije&amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;I apstraktna klasa i interfejs&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
Koji modifikator se stavlja uz metod interfejsa za koji želimo da napišemo podrazumevanu implementaciju sa ciljem da se izbegne modifikacija postojećih implementacija interfejsa kada je interfejsu potrebno dodati nove metode&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
Koje od sledećih tvrdnji su tačne za programski jezik &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Objektima tipa nabrajanja memeorija se dodeljuje na steku&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Argumenti koji se navode uz simboličku konstantu u definiciji tipa nabrajanja su argumenti konstruktora nabrajanja&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Tip nabrajanja može da definiše metode&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Tip nabrajanja može da definiše nestatička polja&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Simboličke konstante nabrajanj predstavljaju nepromenljive reference na objekte datog tipa nabrajanja&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Na jeziku &#039;&#039;Java&#039;&#039;, provereni izuzetak može da se baci iz:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Statičkog inicijalizacionog bloka, ako svi konstruktori navode dati tip izuzetka u svojoj &#039;&#039;throws&#039;&#039; klauzuli&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Metoda koja navodi dati tip izuzetka u svojoj &#039;&#039;throws&#039;&#039; klauzuli&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Nestatičkog inicijalizacionog bloka, ako svi konstruktori navode dati tip izuzetka u svojoj &#039;&#039;throws&#039;&#039; klauzuli&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Bloka &#039;&#039;catch&#039;&#039; grane, ako metod u kojem se grana nalazi navodi dati tip izuzetka u svojoj &#039;&#039;throws&#039;&#039; klauzuli&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Konstruktora koji navodi dati tip izuzetka u svojoj &#039;&#039;throws&#039;&#039; klauzuli&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Šta sve može da se napiše umesto *** da bi se programski kod uspešno preveo?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Spoljasnja {&lt;br /&gt;
    private int x;&lt;br /&gt;
    public in y;&lt;br /&gt;
    class Unutrasnja {&lt;br /&gt;
        public void m() {&lt;br /&gt;
            ***&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;super.y = 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;x = 1&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;&amp;gt;y = 1&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;&amp;gt;Spoljasnja.this.y = 1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;this.y = 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Šta ispisuje sledeći program napisan na programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
interface I {&lt;br /&gt;
    int m(int x, int y);&lt;br /&gt;
}&lt;br /&gt;
public class Main {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        int x = 2, y = 5, z = 0;&lt;br /&gt;
        I[] niz = new I[] {&lt;br /&gt;
                (a, b) -&amp;gt; a+b,&lt;br /&gt;
                (a, b) -&amp;gt; a*b,&lt;br /&gt;
                (a, b) -&amp;gt; b-a&lt;br /&gt;
        };&lt;br /&gt;
        for(I i: niz) {&lt;br /&gt;
            z += i.m(x,y);&lt;br /&gt;
        }&lt;br /&gt;
        System.out.print(z);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;20&amp;lt;/span&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Korak gde se pravi new I[] zapravo inicijalizuje niz sa 3 anonimne klase, gde svaka implementira interfejs I, a iza -&amp;gt; je data implementacija metoda m() iz I. Na kraju se sabiraju rezultati sve 3 operacije s x i y&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Koji od navedenih metoda mogu da bace &#039;&#039;&#039;InterruptedException&#039;&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;notify&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;&amp;gt;sleep&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;&amp;gt;join&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;interrupt&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;&amp;gt;wait&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&#039;&#039;&#039;InterruptedException&#039;&#039;&#039; bacaju metode koje na bilo koji način zaustavljaju nit koja ih poziva&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
Koje od sledećih tvrdnji su tačne za programski jezik &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Moguće je da nadjačani metod u izvedenoj klasi ne bude označen modifikatorom &#039;&#039;&#039;synchronized&#039;&#039;&#039;, iako je odgovarajući metod u osnovnoj klasi označen tim modifikatorom.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Moguće je da u isto vreme jedna nit pristupi jednom sinhronizovanom nestatičkom metodu objekta, a druga nit pristupi drugom sinhronizovanom nestatičkom metodu istog objekta.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Moguće je da u isto vreme jedna nit pristupi jednom sinhronizovanom nestatičkom metodu objekta, a druga nit pristupi istom sinhronizovanom metodu drugog objekta iste klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Moguće je da u isto vreme jedna nit pristupi sinhronizovanom statičkom metodu klase, a druga nit pristupi  sinhronizovanom nestatičkom metodu objekta iste te klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ukoliko nit ne može da pristupi sinhronizovanom metodu neke klase one preskače taj metod i nastavlja sa izvršavanjem.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Koje od sledećih tvrdnji su tačne za &#039;&#039;&#039;notify()&#039;&#039;&#039; u programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Moguće je da pozvati metod &#039;&#039;&#039;notify()&#039;&#039;&#039; kad nijedna nit nije blokirana.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Prilikom nadjačavanja metoda &#039;&#039;&#039;notify()&#039;&#039;&#039; mora se nadjačati i metod &#039;&#039;&#039;wait()&#039;&#039;&#039; .&lt;br /&gt;
# Metod &#039;&#039;&#039;notify()&#039;&#039;&#039; može da se nadjača samo za klasu koja je označena kao &#039;&#039;&#039;synchronized&#039;&#039;&#039;&lt;br /&gt;
# Prilikom nadjačavanja metoda &#039;&#039;&#039;notify()&#039;&#039;&#039; mora se nadjačati i metod &#039;&#039;&#039;notifyAll()&#039;&#039;&#039; .&lt;br /&gt;
# Prilikom poziva metoda &#039;&#039;&#039;notify()&#039;&#039;&#039; sa izvršavanjem garantovano nastavlja nit koja je najduže čekala&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
Koji ispisi su mogući za sledeći programski kod na jeziku Java?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Nit extends Thread {&lt;br /&gt;
    public void run() {&lt;br /&gt;
        System.out.println(&amp;quot;3&amp;quot;);&lt;br /&gt;
        for (int i = 0; i &amp;lt; 1000; i++);&lt;br /&gt;
        System.out.println(&amp;quot;4&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class Main {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Nit nit = new Nit();&lt;br /&gt;
        nit.run();&lt;br /&gt;
        System.out.println(&amp;quot;1&amp;quot;);&lt;br /&gt;
        for(int i = 0; i &amp;lt; 1000; i++);&lt;br /&gt;
        System.out.println(&amp;quot;2&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Dati programski kod ispisuje isključivo 1234&lt;br /&gt;
# Nijedan od ponuđenih odgovora nije tačan&lt;br /&gt;
# Moguće je više različitih ispisa, pri čemu se 1 uvek nalazi ispred 2, a 3 uvek ispred 4&lt;br /&gt;
# Dati programski kod se ne prevodi&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Dati programski kod ispisuje isključivo 3412&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Funkcija run() se poziva sekvencijalno, kao i bilo koja druga funkcija, pa je redosled predodređen. Da bi se nad objektom napravila nit, mora da se pozove start()&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:OO2]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9A1_2024&amp;diff=7584</id>
		<title>ОО2/К1 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E2/%D0%9A1_2024&amp;diff=7584"/>
		<updated>2024-04-28T12:05:46Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: KockaAdmiralac преместио је страницу OO2/K1 2024 на ОО2/К1 2024 без остављања преусмерења: Ćirilica&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;K1 2024. godine&#039;&#039;&#039; održan je 22. marta i trajao je 20min.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Šta je sve tačno za programski jezik &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Interpretiranje bajtokoda je slabijih performansi od izvršavanja mašinskog koda.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Java virtuelna mašina predstavlja interpreter za bajtkod.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Prevođenjem izvornog koda dobije se interpretativni bajtkod.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Implementacija Javine virtuelne mašine je nezavisna od platforme.&lt;br /&gt;
# Bajtkod zavisi od platforme na kojoj se vrši prevođenje izvornog koda.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
Koje od navedenih implicitnih konverzija su dozvoljene u programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Konverzija podataka tipa &#039;&#039;&#039;byte&#039;&#039;&#039; u tip &#039;&#039;&#039;int&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Konverzija podataka tipa &#039;&#039;&#039;int&#039;&#039;&#039; u tip &#039;&#039;&#039;long&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Konverzija podataka tipa &#039;&#039;&#039;int&#039;&#039;&#039; u tip &#039;&#039;&#039;short&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Konverzija podataka tipa &#039;&#039;&#039;float&#039;&#039;&#039; u tip &#039;&#039;&#039;double&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Konverzija podataka tipa &#039;&#039;&#039;double&#039;&#039;&#039; u tip &#039;&#039;&#039;float&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
Šta ispisuje sledeći program na programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
    private static void f(Object a, Integer b, int c) {&lt;br /&gt;
        a = 0;&lt;br /&gt;
        b = b + 1;&lt;br /&gt;
        c = c - 1;&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Integer a = 1, b = 1, c = 1;&lt;br /&gt;
        f(a, b, c);&lt;br /&gt;
        System.out.println(a + &amp;quot;,&amp;quot; + b + &amp;quot;,&amp;quot; + c);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1,1,1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;U Javi se argumenti, uključujući reference prenose po vrednosti. Tako da su u metodi f kopije referenci na a i b dobile nove vrednosti, ali ne i same reference a i b&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Šta sve mogu da sadrže klase na programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Deskruktore&lt;br /&gt;
# Preklopljene operatorske funkcije&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Definicije interfejsa&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Inicijalizacione blokove&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Definicije klasnih tipova&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Šta sve može da stoji umesto ### da bi se sledeći kod uspešno pisan na jeziku &#039;&#039;Java&#039;&#039; uspešno preveo?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class B {&lt;br /&gt;
    B b1;&lt;br /&gt;
    static B b2;&lt;br /&gt;
    public static void s() {}&lt;br /&gt;
    public void m() {}&lt;br /&gt;
    public static void test() {&lt;br /&gt;
        ###&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Object o = b2&amp;lt;/span&amp;gt;&lt;br /&gt;
# m()&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;B.s()&amp;lt;/span&amp;gt;&lt;br /&gt;
# Object o = b1&lt;br /&gt;
# b1.m()&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Napisati naredbu na jeziku &#039;&#039;Java&#039;&#039; kojom se uvoze svi tipovi iz paketa &#039;&#039;&#039;paket&#039;&#039;&#039;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;import paket.*;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Koje od sledećih tvrdnji su tačne za pakete na programskom jeziku &#039;&#039;Java&#039;&#039;?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Klase u paketu mogu da imaju samo privatno ili javno pravo pristupa.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Tipovi deklarisani u izvornoj datoteci bez deklaracije paketa biće smešteni u bezimeni paket.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Deklaracija paketa package a.b; može da postoji čak i ako ni u jednom fajlu sa izvornim kodom programa ne postoji deklaracija paketa package a;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Paket java.util se uvozi implicitno.&lt;br /&gt;
# Podrazumevano pravo pristupa metodima je paketsko, a poljima klasa privatno.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
Šta ispisuje sledeći program na programskom jeziku &#039;&#039;Java&#039;&#039;?Upisati &#039;&#039;&#039;NP&#039;&#039;&#039; ukoliko se program ne prevodi.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package test;&lt;br /&gt;
class B {&lt;br /&gt;
    public void m(D x) {&lt;br /&gt;
        System.out.print(1);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class D extends B {&lt;br /&gt;
    public void m(D x) {&lt;br /&gt;
        System.out.print(2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class Test {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        B b = new B();&lt;br /&gt;
        b.m(new D());&lt;br /&gt;
        b = new D();&lt;br /&gt;
        b.m(new D());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Kod poziva metoda se gleda tip objekta, ne tip reference&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Šta ispisuje sledeći program na programskom jeziku &#039;&#039;Java&#039;&#039;?Upisati &#039;&#039;&#039;NP&#039;&#039;&#039; ukoliko se program ne prevodi.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package p;&lt;br /&gt;
public class A {&lt;br /&gt;
    protected int pi;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package q;&lt;br /&gt;
import p.A;&lt;br /&gt;
public class B extends A {&lt;br /&gt;
    public void m() {&lt;br /&gt;
        ###&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package q;&lt;br /&gt;
public class C extends A {}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;B b = new B(); b.pi = 1;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;pi = 1&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;super.pi = 1&amp;lt;/span&amp;gt;&lt;br /&gt;
#  C c = new C(); c.pi = 1;&lt;br /&gt;
#  A a = new A(); a.pi = 1;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Prava pristupa za reference na objekte koji nisu &#039;&#039;this&#039;&#039; je ista za sve klase&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Da bi klasa &#039;&#039;X&#039;&#039; bezuslovno podržala kloniranje i obezbedila da i izvedene klase iz nje moraju da podrže kloniranje, pored toga što treba da implementira interfejs &#039;&#039;Cloneable&#039;&#039;, potrebno je i da nadjača metod clone na način:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# protected X clone () {...}&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;public X clone() {...}&amp;lt;/span&amp;gt;&lt;br /&gt;
# protected X clone () throws CloneNotSupportedException {...}&lt;br /&gt;
# public X clone () throws CloneNotSupportedException {...}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:OO2]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%86%D0%B0:Solutions.css&amp;diff=7569</id>
		<title>Справица:Solutions.css</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%86%D0%B0:Solutions.css&amp;diff=7569"/>
		<updated>2024-04-27T14:25:49Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Sakrij kod unutar objašnjenja&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.unhide-solutions {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.show[data-solution] .solution, .solution-example  {&lt;br /&gt;
    border: 1px solid red;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    padding: 3px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler:not(.mw-highlight), .spoiler-example {&lt;br /&gt;
    border-bottom: 1px dotted black;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.mw-highlight:not(.show) pre,&lt;br /&gt;
.spoiler:not(.show) .mw-highlight pre,&lt;br /&gt;
.spoiler:not(.show) img,&lt;br /&gt;
.spoiler:not(.show) li.gallerybox div.thumb img {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler:not(.mw-highlight):not(.show),&lt;br /&gt;
.spoiler:not(.mw-highlight):not(.show) code,&lt;br /&gt;
.spoiler-example {&lt;br /&gt;
    color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.show .spoiler:not(.mw-highlight) {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler:not(.mw-highlight):not(.show) code {&lt;br /&gt;
	background-color: inherit;&lt;br /&gt;
	border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler:not(.show) a {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	/* !important neophodan zbog glupih DarkVector stilova. */&lt;br /&gt;
	color: transparent !important;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-darkvector .spoiler:not(.mw-highlight),&lt;br /&gt;
.skin-darkvector .spoiler-example {&lt;br /&gt;
	border-bottom: 1px dotted white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* &amp;lt;math&amp;gt; ispis se preklapa sa border-bottom */&lt;br /&gt;
.spoiler.show .mwe-math-element img {&lt;br /&gt;
	/* Inline CSS */&lt;br /&gt;
	vertical-align: 0 !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A1%D0%9F_2024&amp;diff=7558</id>
		<title>Заштита података/К1П 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A1%D0%9F_2024&amp;diff=7558"/>
		<updated>2024-04-27T14:07:42Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: KockaAdmiralac преместио је страницу Заштита података/К1П на Заштита података/К1П 2024 без остављања преусмерења: Godina&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;K1P 2024. godine&#039;&#039;&#039; održan je 26. aprila i trajao je 1.5h.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak [5] ==&lt;br /&gt;
Ana je Branku poslala poruku šifrovanu &#039;&#039;Vigenere&#039;&#039;-ovim algoritmom sa autokey poboljšanjem. Ključ za &#039;&#039;Vigener&#039;&#039;-ov algoritam je poslala šifrovan pomoću Cezarove šifre. Šifrovan ključ je dat dole kao &#039;&#039;enc_key&#039;&#039;, a šifrovana poruka kao &#039;&#039;ciphertext&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
I &#039;&#039;Vigenere-ov&#039;&#039; i &#039;&#039;Cezarov&#039;&#039; algoritam rade sa karakterima iz ASCII tabele sa vrednostima od 32 do 126, uključujući (tzv &#039;&#039;Printable ASCII&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
1.Pronaći ključ za &#039;&#039;Vigenerov&#039;&#039; algoritam ukoliko nije poznat pomeraj kod &#039;&#039;Cezarovog&#039;&#039; algoritma&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
enc_key = r&#039;P/&amp;amp;t&amp;quot;)/strt}$/zt)=&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.Dešifrovati poruku:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
ciphertext = r&#039;b ZUaarZKRITti_e^s(iRUSgTieUSRlYkiSM!iFKdsCm [XNaoYiX[:cGTgfW_nihVd D WcdY\^gauOUtnqwaobv{dmUUrT Kfa]a(D-D{q ZXZ[eiPtGVJrV.&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Napomena:&#039;&#039;&#039; karakter &#039;&#039;r&#039;&#039; ispred stringa u Pythonu označava &#039;&#039;raw&#039;&#039; string, odnosno da se svaki karakter tumači kao takav, jer bez toga bi skupovi karaktera imali posebno značenje, npr. &#039;&#039;\n&#039;&#039; bi se tumačio kao prelazak u novi red itd. &lt;br /&gt;
&lt;br /&gt;
Ključ za &#039;&#039;Vigenere&#039;&#039;: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;A very decent key.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dešifrovana poruka: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;A congruence is defined as following: We say that a is congruent to b modulo n if n∣(a−b) where a and b are both integers&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Pošto ne znamo ključ za Cezarov algoritam, moramo da probamo svih 126-32+1 mogućih pomeraja i da vidimo koji od njih daje smislen plaintext kad se iskoristi za dešifrovanje Vigenere-a.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
modulus = 126 - 32 + 1&lt;br /&gt;
&lt;br /&gt;
def c_to_n(char):&lt;br /&gt;
    return ord(char) - 32&lt;br /&gt;
&lt;br /&gt;
def n_to_c(number):&lt;br /&gt;
    return chr(number + 32)&lt;br /&gt;
&lt;br /&gt;
def decrypt_caesar(ciphertext, key):&lt;br /&gt;
    plaintext = &amp;quot;&amp;quot;&lt;br /&gt;
    for i in ciphertext:&lt;br /&gt;
        plaintext += n_to_c((c_to_n(i) - key) % modulus)&lt;br /&gt;
    return plaintext&lt;br /&gt;
&lt;br /&gt;
def decrypt_vigenere(ciphertext, key):&lt;br /&gt;
    key = list(key)&lt;br /&gt;
    plaintext = &amp;quot;&amp;quot;&lt;br /&gt;
    for i in range(len(ciphertext)):&lt;br /&gt;
        plaintext += decrypt_caesar(ciphertext[i], c_to_n(key[i]))&lt;br /&gt;
        key.append(plaintext[i])&lt;br /&gt;
    return plaintext&lt;br /&gt;
&lt;br /&gt;
for i in range(modulus):&lt;br /&gt;
    mykey = decrypt_caesar(enc_key, i)&lt;br /&gt;
    print(mykey,&amp;quot;: &amp;quot;, decrypt_vigenere(ciphertext, mykey), end=&amp;quot;\n\n&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak [5]==&lt;br /&gt;
Za originlani tekst 5A8B i ključ 76AE uraditi SAES.&lt;br /&gt;
&lt;br /&gt;
# Podatak nakon inicjalne Add Round Key &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ključ prve iteracije &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Podatak nakon prve runde &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ključ druge iteracije &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Šifrovani tekst &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak [3]==&lt;br /&gt;
Ana je poslala Branku svoju platu koju je šifrovanu pomoću RSA algoritma. Ana je šiforvala podatak svojim javnim ključem {237997, 234339640697}. Vi ste presreli Aniu poruku i pročitali broj 163860944446. Kolika je Anina plata?&lt;br /&gt;
Odgovor &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;240000&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
e = 237997&lt;br /&gt;
n = 234339640697&lt;br /&gt;
p = 163860944446&lt;br /&gt;
def find_d(e, n):&lt;br /&gt;
    p, q = None, None&lt;br /&gt;
    for i in range(3, n, 2):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            p, q = i, n // i&lt;br /&gt;
            break&lt;br /&gt;
    phi_n = (p - 1)*(q - 1)&lt;br /&gt;
    return pow(e, -1, phi_n)&lt;br /&gt;
&lt;br /&gt;
print(pow(p, find_d(e, n), n))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak [2]==&lt;br /&gt;
Na slici je šema komunikacije između Ane i Branka. Podrazumeva se da je prvi nailazak na ključ enkripcija, a drugi dekripcija. Ukoliko je Branko Ani poslao poruku po ovoj šemi šta je postigao?&lt;br /&gt;
[[Датотека:ZPK1n2024.jpg|мини]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Autentikaciju&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Tajnost&amp;lt;/span&amp;gt;&lt;br /&gt;
# Tajnost i autentikaciju&lt;br /&gt;
# Ne znam&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak [2]==&lt;br /&gt;
Koristeći napad izabranom porukom (&#039;&#039;chosen plaintext attack&#039;&#039;) moguće je dobiti koji ključ je korišćen za one-time pad. (Podrazumeva se da se ovim dobije plaintext i odgovarajući ciphertext)&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Tačno&amp;lt;/span&amp;gt;&lt;br /&gt;
# Netačno&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak [3]==&lt;br /&gt;
Koji od sledećih napada na kompjuterske sisteme koriste softverske slabosti sistema?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# DNS spoofing&lt;br /&gt;
# DoS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;SQLi&amp;lt;/span&amp;gt;&lt;br /&gt;
# socijalni inžinjering&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;XSS&amp;lt;/span&amp;gt;&lt;br /&gt;
# ARP spoofing&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%92%D0%B5%D0%B1_%D0%B4%D0%B8%D0%B7%D0%B0%D1%98%D0%BD/%D0%9A2_%D0%88%D1%83%D0%BD_2021&amp;diff=7545</id>
		<title>Веб дизајн/К2 Јун 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%92%D0%B5%D0%B1_%D0%B4%D0%B8%D0%B7%D0%B0%D1%98%D0%BD/%D0%9A2_%D0%88%D1%83%D0%BD_2021&amp;diff=7545"/>
		<updated>2024-04-21T20:06:52Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: KockaAdmiralac преместио је страницу К2 Јун 2021 на Веб дизајн/К2 Јун 2021 без остављања преусмерења: Ispravka naslova&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Drugi kolokvijum u junskom roku 2021. godine&#039;&#039;&#039; održan je 10. juna. Postavka je dostupna [https://rti.etf.bg.ac.rs/rti/si2vd/rokovi/VD_2021_Jun.zip sa stranice predmeta.] &#039;&#039;JQuery&#039;&#039; biblioteka se uvozila preko minifikovanog JQuery fajla koji je bio dat u materijalima.&lt;br /&gt;
&lt;br /&gt;
== Rešenje ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;zadatak2.html&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;lt;meta charset=&amp;quot;UTF-8&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;script src=&amp;quot;./jquery-3.7.1.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
		&amp;lt;script src=&amp;quot;zadatak2.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
		&amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;style&amp;gt;&lt;br /&gt;
		td {&lt;br /&gt;
			height: 100px;&lt;br /&gt;
			width: 100px;&lt;br /&gt;
			border: 3px solid black;&lt;br /&gt;
		}&lt;br /&gt;
	&amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;lt;table&amp;gt;&lt;br /&gt;
			&amp;lt;tr&amp;gt;&lt;br /&gt;
				&amp;lt;td id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
				&amp;lt;td id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
				&amp;lt;td id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;/tr&amp;gt;&lt;br /&gt;
			&amp;lt;tr&amp;gt;&lt;br /&gt;
				&amp;lt;td id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
				&amp;lt;td id=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
				&amp;lt;td id=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;/tr&amp;gt;&lt;br /&gt;
			&amp;lt;tr&amp;gt;&lt;br /&gt;
				&amp;lt;td id=&amp;quot;7&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
				&amp;lt;td id=&amp;quot;8&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
				&amp;lt;td id=&amp;quot;9&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		Tezina: &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;&amp;quot; id=&amp;quot;tezina&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;button onclick=&amp;quot;pokreniIgru()&amp;quot;&amp;gt;Pokreni&amp;lt;/button&amp;gt;&lt;br /&gt;
	&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;zadatak2.js&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var tezina;&lt;br /&gt;
&lt;br /&gt;
function pokreniIgru() {&lt;br /&gt;
	tezina = document.getElementById(&amp;quot;tezina&amp;quot;).value;&lt;br /&gt;
	if (/^\d+$/.test(tezina)) {&lt;br /&gt;
		tezina = parseInt(tezina);&lt;br /&gt;
	} else {&lt;br /&gt;
		alert(&amp;quot;Morate uneti tezinu&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	let prev;&lt;br /&gt;
	let cnt = 0;&lt;br /&gt;
&lt;br /&gt;
	let interval = setInterval(() =&amp;gt; {&lt;br /&gt;
		if (cnt == tezina) {&lt;br /&gt;
			if (prev) $(&amp;quot;#&amp;quot; + prev).css(&amp;quot;background-color&amp;quot;, &amp;quot;white&amp;quot;);&lt;br /&gt;
			clearInterval(interval);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		let id = Math.floor(Math.random() * 9 + 1);&lt;br /&gt;
		if (prev) {&lt;br /&gt;
			$(&amp;quot;#&amp;quot; + prev).css(&amp;quot;background-color&amp;quot;, &amp;quot;white&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		$(&amp;quot;#&amp;quot; + id).css(&amp;quot;background-color&amp;quot;, &amp;quot;red&amp;quot;);&lt;br /&gt;
		prev = id;&lt;br /&gt;
		cnt++;&lt;br /&gt;
	}, 1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(document).ready(function () {&lt;br /&gt;
	$(&amp;quot;td&amp;quot;).click(function () {&lt;br /&gt;
		let clickedTd = $(this);&lt;br /&gt;
		let id = clickedTd.attr(&amp;quot;id&amp;quot;);&lt;br /&gt;
		$(&amp;quot;#&amp;quot; + id).css(&amp;quot;background-color&amp;quot;, &amp;quot;green&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		setTimeout(function () {&lt;br /&gt;
			let color = $(&amp;quot;#&amp;quot; + id).css(&amp;quot;background-color&amp;quot;);&lt;br /&gt;
			if (&lt;br /&gt;
				$(&amp;quot;#elementId&amp;quot;).is(&amp;quot;:not(:animated)&amp;quot;) &amp;amp;&amp;amp;&lt;br /&gt;
				(color === &amp;quot;blue&amp;quot; || color === &amp;quot;rgb(0, 0, 255)&amp;quot;)&lt;br /&gt;
			) {&lt;br /&gt;
				$(&amp;quot;#&amp;quot; + id).css(&amp;quot;background-color&amp;quot;, &amp;quot;white&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}, 1000);&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	$(&amp;quot;td&amp;quot;).dblclick(function () {&lt;br /&gt;
		let clickedTd = $(this);&lt;br /&gt;
		let id = clickedTd.attr(&amp;quot;id&amp;quot;);&lt;br /&gt;
		let color = $(&amp;quot;#&amp;quot; + id).css(&amp;quot;background-color&amp;quot;);&lt;br /&gt;
		if (color === &amp;quot;rgb(0, 0, 255)&amp;quot; || color === &amp;quot;blue&amp;quot;) {&lt;br /&gt;
			$(&amp;quot;#&amp;quot; + id).css(&amp;quot;background-color&amp;quot;, &amp;quot;white&amp;quot;);&lt;br /&gt;
		} else {&lt;br /&gt;
			$(&amp;quot;#&amp;quot; + id).css(&amp;quot;background-color&amp;quot;, &amp;quot;blue&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Веб дизајн]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%95%D0%9F/%D0%9A2_2022&amp;diff=7543</id>
		<title>ИЕП/К2 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%95%D0%9F/%D0%9A2_2022&amp;diff=7543"/>
		<updated>2024-04-20T22:22:46Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Objašnjenje&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Други колоквијум 2022. године&#039;&#039;&#039; одржан је 5. маја. На колоквијуму су били доступни &#039;&#039;Hadoop&#039;&#039; документација, презентација са предавања, виртуелна машина коришћена на предавању и два текстуална фајла као примери уноса (без очекиваног исписа или примера R и N параметара).&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Посматра се евиденција о положеним испитима. У једном реду се налазе идентификатор студента и листа испитима&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; које је положио дати студент. Сваки рад&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; садржи информације о положеном испиту као што су шифра предмета, шифра рока, и оцена коју је студент добио. За потребе наведене евиденције подаци се чувају у текстуалној датотеци на &#039;&#039;Hadoop&#039;&#039; систему. Подаци су дати у облику:&lt;br /&gt;
 &amp;amp;lt;Student&amp;gt;&amp;amp;lt;TAB&amp;gt;{&amp;amp;lt;Exam&amp;gt;{;&amp;amp;lt;Exam&amp;gt;}}&lt;br /&gt;
Где поље &amp;lt;code&amp;gt;&amp;amp;lt;Student&amp;gt;&amp;lt;/code&amp;gt; представља идентификатор студента, а поље &amp;lt;code&amp;gt;&amp;amp;lt;Exam&amp;gt;&amp;lt;/code&amp;gt; садржи шифру предмета, након кога долази знак &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;, па шифра рока, након кога долази знак &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt; и на крају оцена.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# У програмском језику Јава саставити &#039;&#039;Map/Reduce&#039;&#039; посао који враћа статистичке податке о испитима у испитним роковима: шифру предмета, шифру рока, број студената који су полагали дати испит, минималну оцену, максималну оцену и просечну оцену. Водити рачуна о конкурентности.&lt;br /&gt;
# У програмском језику Јава саставити ланац од два &#039;&#039;Map/Reduce&#039;&#039; посла који враћа предмет&amp;lt;ref&amp;gt;Уколико их има више, вратити било који. Није гарантовано да овај предмет постоји.&amp;lt;/ref&amp;gt; који је у задатом испитном R полагало највише студената, а да ни један од тих студената у том року није добио задату оцену N. Параметри R и N се прослеђује&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; рачунарима који раде обраду. Водити рачуна о конкурентности.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Одговор&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; се предају у виду два&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; јава датотека (&amp;lt;code&amp;gt;Ocene1.java&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;Ocene2.java&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;MapReduce&#039;&#039; ==&lt;br /&gt;
На предмету се од школске 2023/2024. године ради &#039;&#039;Apache Spark&#039;&#039; уместо &#039;&#039;Hadoop&#039;&#039; са &#039;&#039;MapReduce&#039;&#039;. Решење овог колоквијума са &#039;&#039;MapReduce&#039;&#039; може се видети на [[Special:Permalink/4291|верзији странице из маја 2022]], док су испод дата решења у &#039;&#039;Apache Spark&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Ocene1.java&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package spark_iep;&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
import org.apache.spark.*;&lt;br /&gt;
import org.apache.spark.api.java.*;&lt;br /&gt;
import scala.Tuple2;&lt;br /&gt;
import scala.Tuple5;&lt;br /&gt;
&lt;br /&gt;
public class Ocene1 {&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		SparkConf conf = new SparkConf()&lt;br /&gt;
				.setAppName(&amp;quot;Ocene1&amp;quot;)&lt;br /&gt;
				.setMaster(&amp;quot;local&amp;quot;);&lt;br /&gt;
		try(JavaSparkContext sc = new JavaSparkContext(conf);){&lt;br /&gt;
			JavaRDD&amp;lt;String&amp;gt; ulazniPodaci = sc.textFile(&amp;quot;studenti_test.txt&amp;quot;);&lt;br /&gt;
			//obrada ulaznih podataka&lt;br /&gt;
			List&amp;lt;Tuple2&amp;lt;String,Integer[]&amp;gt;&amp;gt; rezultat = ulazniPodaci.flatMapToPair(&lt;br /&gt;
					s-&amp;gt;{&lt;br /&gt;
						List&amp;lt;Tuple2&amp;lt;String, Integer[]&amp;gt;&amp;gt; lista = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
						String[] podaciSvi = s.split(&amp;quot;\t&amp;quot;);&lt;br /&gt;
						//za slucaj da student nema polozene ispite&lt;br /&gt;
						if(podaciSvi.length==1) return lista.iterator();&lt;br /&gt;
						//niz podataka o ispitima za studenta&lt;br /&gt;
						String[] podaciIspiti = podaciSvi[1].split(&amp;quot;;&amp;quot;);&lt;br /&gt;
						for(String p:podaciIspiti) {&lt;br /&gt;
							//pod[0] = predmet1,rok1,6&lt;br /&gt;
							String[] pod = p.split(&amp;quot;,&amp;quot;);&lt;br /&gt;
							//konvertujemo ocenu u string radi dalje obrade&lt;br /&gt;
							Integer ocena = Integer.parseInt(pod[2]);&lt;br /&gt;
							//torka spremna za obradu i dodavanje u listu&lt;br /&gt;
							Tuple2&amp;lt;String, Integer[]&amp;gt; podatakZaListu = new Tuple2&amp;lt;&amp;gt;(pod[0]+&amp;quot;&amp;amp;&amp;quot;+pod[1], new Integer[] {ocena, ocena, ocena, 1});&lt;br /&gt;
							lista.add(podatakZaListu);&lt;br /&gt;
						}&lt;br /&gt;
						return lista.iterator();&lt;br /&gt;
					}&lt;br /&gt;
					)&lt;br /&gt;
					//prvi clan se koristi za max, drugi za min, treci je suma vrednosti, cetvrti brojac vrednosti&lt;br /&gt;
					.reduceByKey((a,b)-&amp;gt;new Integer[] {Math.max(a[0], b[0]), Math.min(a[1], b[1]), a[2]+b[2], a[3]+b[3]}).collect();&lt;br /&gt;
			&lt;br /&gt;
			for(Tuple2&amp;lt;String, Integer[]&amp;gt; r:rezultat) {&lt;br /&gt;
				System.out.println(&amp;quot;Predmet&amp;amp;Rok: &amp;quot;+r._1()+&amp;quot;, max:&amp;quot;+r._2()[0]+&amp;quot;, min:&amp;quot;+r._2()[1]+&amp;quot;, avg:&amp;quot;+(r._2()[2]*1.0/r._2()[3]));&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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Ocene2.java&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package spark_iep;&lt;br /&gt;
&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
import org.apache.spark.*;&lt;br /&gt;
import org.apache.spark.api.java.*;&lt;br /&gt;
import scala.Tuple2;&lt;br /&gt;
import scala.Tuple5;&lt;br /&gt;
&lt;br /&gt;
public class Ocene2 {&lt;br /&gt;
	&lt;br /&gt;
	//predmet zadat rok R, polagalo najvise studenata, a da nema ocene N&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		SparkConf conf = new SparkConf()&lt;br /&gt;
				.setAppName(&amp;quot;Ocene1&amp;quot;)&lt;br /&gt;
				.setMaster(&amp;quot;local&amp;quot;);&lt;br /&gt;
		try(JavaSparkContext sc = new JavaSparkContext(conf);){&lt;br /&gt;
			String rok = &amp;quot;jun2020&amp;quot;;&lt;br /&gt;
			String zadataOcena = &amp;quot;10&amp;quot;;&lt;br /&gt;
			JavaRDD&amp;lt;String&amp;gt; ulazniPodaci = sc.textFile(&amp;quot;studenti_test.txt&amp;quot;);&lt;br /&gt;
			//obrada ulaznih podataka&lt;br /&gt;
			//Tuple2&amp;lt;Integer,String[]&amp;gt;&lt;br /&gt;
			List&amp;lt;Tuple2&amp;lt;Integer,String[]&amp;gt;&amp;gt;  rezultat = ulazniPodaci.flatMapToPair(&lt;br /&gt;
					s-&amp;gt;{&lt;br /&gt;
						List&amp;lt;Tuple2&amp;lt;String[], String&amp;gt;&amp;gt; lista = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
						String[] podaciSvi = s.split(&amp;quot;\t&amp;quot;);&lt;br /&gt;
						//za slucaj da student nema polozene ispite&lt;br /&gt;
						if(podaciSvi.length==1) return lista.iterator();&lt;br /&gt;
						//niz podataka o ispitima za studenta&lt;br /&gt;
						String[] podaciIspiti = podaciSvi[1].split(&amp;quot;;&amp;quot;);&lt;br /&gt;
						for(String p:podaciIspiti) {&lt;br /&gt;
							//pod[0] = predmet1,rok1,6&lt;br /&gt;
							String[] pod = p.split(&amp;quot;,&amp;quot;);&lt;br /&gt;
							//konvertujemo ocenu u string radi dalje obrade&lt;br /&gt;
							//torka spremna za obradu i dodavanje u listu&lt;br /&gt;
							Integer ocena = Integer.parseInt(pod[2]);&lt;br /&gt;
							//([predmet,rok], ocena)&lt;br /&gt;
							Tuple2&amp;lt;String[], String&amp;gt; podatakZaListu = new Tuple2&amp;lt;&amp;gt;(new String[] {pod[0],pod[1]}, pod[2]);&lt;br /&gt;
							lista.add(podatakZaListu);&lt;br /&gt;
						}&lt;br /&gt;
						return lista.iterator();&lt;br /&gt;
					}&lt;br /&gt;
					)&lt;br /&gt;
					//isfiltriraj rok&lt;br /&gt;
			 		.filter(s-&amp;gt;s._1[1].equals(rok))&lt;br /&gt;
			 		//reformatiraj kljuc predmet, vrednost ocena&lt;br /&gt;
			 		.mapToPair(s-&amp;gt;new Tuple2&amp;lt;String, String&amp;gt;(s._1[0], s._2))&lt;br /&gt;
                    //ni jedna ocena u roku nije zadata ocena&lt;br /&gt;
			 		.filter(s-&amp;gt;!(s._2.equals(zadataOcena)))&lt;br /&gt;
			 		//pravimoStringOcena ocena1,ocena2...&lt;br /&gt;
			 		.reduceByKey((a,b)-&amp;gt;(a+&amp;quot;;&amp;quot;+b))&lt;br /&gt;
			 		//reformatiraj da bude ([predmet1,ocena1;ocena2...],brojOcena)&lt;br /&gt;
			 		.mapToPair(s-&amp;gt;new Tuple2&amp;lt;Integer, String[]&amp;gt;(s._2.split(&amp;quot;;&amp;quot;).length, new String[] {s._1, s._2}))&lt;br /&gt;
			 		//sortiraj po broju ocena&lt;br /&gt;
			 		.sortByKey(false)&lt;br /&gt;
			 		//vrati sve, ovako zbog lakse obrade ako nema&lt;br /&gt;
			 		.collect()&lt;br /&gt;
					;&lt;br /&gt;
			if(rezultat.size()==0) {&lt;br /&gt;
				System.out.println(&amp;quot;Nema jbg&amp;quot;);&lt;br /&gt;
			}else {&lt;br /&gt;
				System.out.println(&amp;quot;Trazeni predmet je &amp;quot;+rezultat.get(0)._2[0]);&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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Провера ==&lt;br /&gt;
Следећи садржај датотеке која се прослеђује као први аргумент оба програма може се користити за тестирање:&lt;br /&gt;
 pera	predmet1,jun2020,9;predmet2,jun2020,10;predmet3,jun2020,9;predmet1,jul2020,10;predmet3,jul2020,10&lt;br /&gt;
 mika	predmet1,jun2020,6;predmet2,jun2020,6;predmet3,jun2020,7;predmet1,jul2020,6&lt;br /&gt;
 zika	predmet1,jun2020,8&lt;br /&gt;
 jovan	&lt;br /&gt;
(додати табулатор на крај последњег реда ручно уколико се не ископира).&lt;br /&gt;
&lt;br /&gt;
На колоквијуму су биле доступне &amp;lt;code&amp;gt;[[Медиј:IEP K2 Students V0.txt|Students_V0.txt]]&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;[[Медиј:IEP K2 Students V1.txt|Students_V1.txt]]&amp;lt;/code&amp;gt; датотеке за тестирање решења.&lt;br /&gt;
&lt;br /&gt;
== Напомене ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ИЕП]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%95%D0%9F/%D0%9A2_2022&amp;diff=7542</id>
		<title>ИЕП/К2 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%95%D0%9F/%D0%9A2_2022&amp;diff=7542"/>
		<updated>2024-04-20T22:22:17Z</updated>

		<summary type="html">&lt;p&gt;KockaAdmiralac: Uklonjeno moje rešenje&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Други колоквијум 2022. године&#039;&#039;&#039; одржан је 5. маја. На колоквијуму су били доступни &#039;&#039;Hadoop&#039;&#039; документација, презентација са предавања, виртуелна машина коришћена на предавању и два текстуална фајла као примери уноса (без очекиваног исписа или примера R и N параметара).&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Посматра се евиденција о положеним испитима. У једном реду се налазе идентификатор студента и листа испитима&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; које је положио дати студент. Сваки рад&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; садржи информације о положеном испиту као што су шифра предмета, шифра рока, и оцена коју је студент добио. За потребе наведене евиденције подаци се чувају у текстуалној датотеци на &#039;&#039;Hadoop&#039;&#039; систему. Подаци су дати у облику:&lt;br /&gt;
 &amp;amp;lt;Student&amp;gt;&amp;amp;lt;TAB&amp;gt;{&amp;amp;lt;Exam&amp;gt;{;&amp;amp;lt;Exam&amp;gt;}}&lt;br /&gt;
Где поље &amp;lt;code&amp;gt;&amp;amp;lt;Student&amp;gt;&amp;lt;/code&amp;gt; представља идентификатор студента, а поље &amp;lt;code&amp;gt;&amp;amp;lt;Exam&amp;gt;&amp;lt;/code&amp;gt; садржи шифру предмета, након кога долази знак &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;, па шифра рока, након кога долази знак &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt; и на крају оцена.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# У програмском језику Јава саставити &#039;&#039;Map/Reduce&#039;&#039; посао који враћа статистичке податке о испитима у испитним роковима: шифру предмета, шифру рока, број студената који су полагали дати испит, минималну оцену, максималну оцену и просечну оцену. Водити рачуна о конкурентности.&lt;br /&gt;
# У програмском језику Јава саставити ланац од два &#039;&#039;Map/Reduce&#039;&#039; посла који враћа предмет&amp;lt;ref&amp;gt;Уколико их има више, вратити било који. Није гарантовано да овај предмет постоји.&amp;lt;/ref&amp;gt; који је у задатом испитном R полагало највише студената, а да ни један од тих студената у том року није добио задату оцену N. Параметри R и N се прослеђује&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; рачунарима који раде обраду. Водити рачуна о конкурентности.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Одговор&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; се предају у виду два&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; јава датотека (&amp;lt;code&amp;gt;Ocene1.java&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;Ocene2.java&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;MapReduce&#039;&#039; ==&lt;br /&gt;
На предмету се од школске 2023/2024. године ради &#039;&#039;Apache Spark&#039;&#039; уместо &#039;&#039;Hadoop&#039;&#039; са &#039;&#039;MapReduce&#039;&#039;. Решење овог колоквијума са &#039;&#039;MapReduce&#039;&#039; може се видети на [[Special:Permalink/4291|верзији странице из маја 2022]].&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Ocene1.java&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package spark_iep;&lt;br /&gt;
&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
import org.apache.spark.*;&lt;br /&gt;
import org.apache.spark.api.java.*;&lt;br /&gt;
import scala.Tuple2;&lt;br /&gt;
import scala.Tuple5;&lt;br /&gt;
&lt;br /&gt;
public class Ocene1 {&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		SparkConf conf = new SparkConf()&lt;br /&gt;
				.setAppName(&amp;quot;Ocene1&amp;quot;)&lt;br /&gt;
				.setMaster(&amp;quot;local&amp;quot;);&lt;br /&gt;
		try(JavaSparkContext sc = new JavaSparkContext(conf);){&lt;br /&gt;
			JavaRDD&amp;lt;String&amp;gt; ulazniPodaci = sc.textFile(&amp;quot;studenti_test.txt&amp;quot;);&lt;br /&gt;
			//obrada ulaznih podataka&lt;br /&gt;
			List&amp;lt;Tuple2&amp;lt;String,Integer[]&amp;gt;&amp;gt; rezultat = ulazniPodaci.flatMapToPair(&lt;br /&gt;
					s-&amp;gt;{&lt;br /&gt;
						List&amp;lt;Tuple2&amp;lt;String, Integer[]&amp;gt;&amp;gt; lista = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
						String[] podaciSvi = s.split(&amp;quot;\t&amp;quot;);&lt;br /&gt;
						//za slucaj da student nema polozene ispite&lt;br /&gt;
						if(podaciSvi.length==1) return lista.iterator();&lt;br /&gt;
						//niz podataka o ispitima za studenta&lt;br /&gt;
						String[] podaciIspiti = podaciSvi[1].split(&amp;quot;;&amp;quot;);&lt;br /&gt;
						for(String p:podaciIspiti) {&lt;br /&gt;
							//pod[0] = predmet1,rok1,6&lt;br /&gt;
							String[] pod = p.split(&amp;quot;,&amp;quot;);&lt;br /&gt;
							//konvertujemo ocenu u string radi dalje obrade&lt;br /&gt;
							Integer ocena = Integer.parseInt(pod[2]);&lt;br /&gt;
							//torka spremna za obradu i dodavanje u listu&lt;br /&gt;
							Tuple2&amp;lt;String, Integer[]&amp;gt; podatakZaListu = new Tuple2&amp;lt;&amp;gt;(pod[0]+&amp;quot;&amp;amp;&amp;quot;+pod[1], new Integer[] {ocena, ocena, ocena, 1});&lt;br /&gt;
							lista.add(podatakZaListu);&lt;br /&gt;
						}&lt;br /&gt;
						return lista.iterator();&lt;br /&gt;
					}&lt;br /&gt;
					)&lt;br /&gt;
					//prvi clan se koristi za max, drugi za min, treci je suma vrednosti, cetvrti brojac vrednosti&lt;br /&gt;
					.reduceByKey((a,b)-&amp;gt;new Integer[] {Math.max(a[0], b[0]), Math.min(a[1], b[1]), a[2]+b[2], a[3]+b[3]}).collect();&lt;br /&gt;
			&lt;br /&gt;
			for(Tuple2&amp;lt;String, Integer[]&amp;gt; r:rezultat) {&lt;br /&gt;
				System.out.println(&amp;quot;Predmet&amp;amp;Rok: &amp;quot;+r._1()+&amp;quot;, max:&amp;quot;+r._2()[0]+&amp;quot;, min:&amp;quot;+r._2()[1]+&amp;quot;, avg:&amp;quot;+(r._2()[2]*1.0/r._2()[3]));&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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Ocene2.java&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package spark_iep;&lt;br /&gt;
&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
import org.apache.spark.*;&lt;br /&gt;
import org.apache.spark.api.java.*;&lt;br /&gt;
import scala.Tuple2;&lt;br /&gt;
import scala.Tuple5;&lt;br /&gt;
&lt;br /&gt;
public class Ocene2 {&lt;br /&gt;
	&lt;br /&gt;
	//predmet zadat rok R, polagalo najvise studenata, a da nema ocene N&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		SparkConf conf = new SparkConf()&lt;br /&gt;
				.setAppName(&amp;quot;Ocene1&amp;quot;)&lt;br /&gt;
				.setMaster(&amp;quot;local&amp;quot;);&lt;br /&gt;
		try(JavaSparkContext sc = new JavaSparkContext(conf);){&lt;br /&gt;
			String rok = &amp;quot;jun2020&amp;quot;;&lt;br /&gt;
			String zadataOcena = &amp;quot;10&amp;quot;;&lt;br /&gt;
			JavaRDD&amp;lt;String&amp;gt; ulazniPodaci = sc.textFile(&amp;quot;studenti_test.txt&amp;quot;);&lt;br /&gt;
			//obrada ulaznih podataka&lt;br /&gt;
			//Tuple2&amp;lt;Integer,String[]&amp;gt;&lt;br /&gt;
			List&amp;lt;Tuple2&amp;lt;Integer,String[]&amp;gt;&amp;gt;  rezultat = ulazniPodaci.flatMapToPair(&lt;br /&gt;
					s-&amp;gt;{&lt;br /&gt;
						List&amp;lt;Tuple2&amp;lt;String[], String&amp;gt;&amp;gt; lista = new LinkedList&amp;lt;&amp;gt;();&lt;br /&gt;
						String[] podaciSvi = s.split(&amp;quot;\t&amp;quot;);&lt;br /&gt;
						//za slucaj da student nema polozene ispite&lt;br /&gt;
						if(podaciSvi.length==1) return lista.iterator();&lt;br /&gt;
						//niz podataka o ispitima za studenta&lt;br /&gt;
						String[] podaciIspiti = podaciSvi[1].split(&amp;quot;;&amp;quot;);&lt;br /&gt;
						for(String p:podaciIspiti) {&lt;br /&gt;
							//pod[0] = predmet1,rok1,6&lt;br /&gt;
							String[] pod = p.split(&amp;quot;,&amp;quot;);&lt;br /&gt;
							//konvertujemo ocenu u string radi dalje obrade&lt;br /&gt;
							//torka spremna za obradu i dodavanje u listu&lt;br /&gt;
							Integer ocena = Integer.parseInt(pod[2]);&lt;br /&gt;
							//([predmet,rok], ocena)&lt;br /&gt;
							Tuple2&amp;lt;String[], String&amp;gt; podatakZaListu = new Tuple2&amp;lt;&amp;gt;(new String[] {pod[0],pod[1]}, pod[2]);&lt;br /&gt;
							lista.add(podatakZaListu);&lt;br /&gt;
						}&lt;br /&gt;
						return lista.iterator();&lt;br /&gt;
					}&lt;br /&gt;
					)&lt;br /&gt;
					//isfiltriraj rok&lt;br /&gt;
			 		.filter(s-&amp;gt;s._1[1].equals(rok))&lt;br /&gt;
			 		//reformatiraj kljuc predmet, vrednost ocena&lt;br /&gt;
			 		.mapToPair(s-&amp;gt;new Tuple2&amp;lt;String, String&amp;gt;(s._1[0], s._2))&lt;br /&gt;
                    //ni jedna ocena u roku nije zadata ocena&lt;br /&gt;
			 		.filter(s-&amp;gt;!(s._2.equals(zadataOcena)))&lt;br /&gt;
			 		//pravimoStringOcena ocena1,ocena2...&lt;br /&gt;
			 		.reduceByKey((a,b)-&amp;gt;(a+&amp;quot;;&amp;quot;+b))&lt;br /&gt;
			 		//reformatiraj da bude ([predmet1,ocena1;ocena2...],brojOcena)&lt;br /&gt;
			 		.mapToPair(s-&amp;gt;new Tuple2&amp;lt;Integer, String[]&amp;gt;(s._2.split(&amp;quot;;&amp;quot;).length, new String[] {s._1, s._2}))&lt;br /&gt;
			 		//sortiraj po broju ocena&lt;br /&gt;
			 		.sortByKey(false)&lt;br /&gt;
			 		//vrati sve, ovako zbog lakse obrade ako nema&lt;br /&gt;
			 		.collect()&lt;br /&gt;
					;&lt;br /&gt;
			if(rezultat.size()==0) {&lt;br /&gt;
				System.out.println(&amp;quot;Nema jbg&amp;quot;);&lt;br /&gt;
			}else {&lt;br /&gt;
				System.out.println(&amp;quot;Trazeni predmet je &amp;quot;+rezultat.get(0)._2[0]);&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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Провера ==&lt;br /&gt;
Следећи садржај датотеке која се прослеђује као први аргумент оба програма може се користити за тестирање:&lt;br /&gt;
 pera	predmet1,jun2020,9;predmet2,jun2020,10;predmet3,jun2020,9;predmet1,jul2020,10;predmet3,jul2020,10&lt;br /&gt;
 mika	predmet1,jun2020,6;predmet2,jun2020,6;predmet3,jun2020,7;predmet1,jul2020,6&lt;br /&gt;
 zika	predmet1,jun2020,8&lt;br /&gt;
 jovan	&lt;br /&gt;
(додати табулатор на крај последњег реда ручно уколико се не ископира).&lt;br /&gt;
&lt;br /&gt;
На колоквијуму су биле доступне &amp;lt;code&amp;gt;[[Медиј:IEP K2 Students V0.txt|Students_V0.txt]]&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;[[Медиј:IEP K2 Students V1.txt|Students_V1.txt]]&amp;lt;/code&amp;gt; датотеке за тестирање решења.&lt;br /&gt;
&lt;br /&gt;
== Напомене ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ИЕП]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
</feed>