---
title: 'Вежбе 1 - Упознавање'
author: 'Радован Туровић - Бранислав Ристић'
lang: sr-Cyrl
format: 
  revealjs:
    theme: [white, ../../../custom.scss]
    transition: slide
    navigation-mode: vertical
    controls-layout: bottom-right
    controls-tutorial: true
    slide-number: true
    show-slide-number: all
    scrollable: true
    chalkboard: true
    center: true

  beamer:
    mainfont: "DejaVu Serif"
    theme: Szeged
    navigation: horizontal
    aspectratio: 32
    section-titles: true
    geometry:
      - bottom=1.5cm
---

# Увод

## Основне информације
* Сва обавештења ће се постављати на АЦС страницу [>>www.acs.uns.ac.rs<<](http://www.acs.uns.ac.rs/sr)
* Материјале можете добавити на репозиторијуму предмета на АЦС-у на [>>Оперативни системи<<](http://www.acs.uns.ac.rs/sr/node/237/21)

## Организација вежби
* Вежбе се одржавају комбиновано као мешавина вођеног и самосталног рада
* Када је рад вођен, препоручује се да пратите шта вам асистент прича и да слушате инструкције које добијете током тог периода
* Када је рад независан од вас се очекује да радите самостално на неком унапред датом проблему
* Ако не учествујете у независном раду, нећете пуно научити на овим вежбама

## Полагање предмета
+ Обавезе предмета "Оперативни системи" су подељене у два дела:
    - испитне обавезе: носе 30 бодова (полажу се у испитним роковима)
    - предиспитне обавезе: носе 70 бодова

## Предиспитне обавезе
* На вежбама је у оптицају 70 бодова укупно
* 40 носи Т1234 (не питајте за име)
* 30 носи СОВ
* Нема другог извора бодова

## Провере
* Провере ће се радити на часу
* Т1234 ће се одржати у седмици која почиње 11.05.
* СОВ ће се одржати у седмици која почиње 15.06.

## Полагање
* Минимални број бодова да би се предиспитне обавезе сматрале положеним је 36
* Уколико не сакупите 36 бодова не можете добити потпис
* Тренутно, правила дозвољавају да поновимо једну проверу ван наставе што вам омогућава да сакупите 36 ако већ нисте (излазак на исту се плаћа)
* Ово понављање никако не сме да вам буде план 'А'!

## Преписивање 
* Преписивање овде значи да предате у било ком тренутку било који код који нисте ви лично писали
* Ако препишете, нећете добити бодове и против вас се може повести дисциплински поступак
* Верујте, не исплати се.

## Недоумице 
* За било какве недоумице се обратите асистенту или предметном наставнику

# Технички детаљи

## Рад код куће
* Вежба код куће је нешто што се апсолутно од вас очекује
* Да би то могло да се изведе, треба вам окружење код куће где можете да располажете са Линуксом, и одговарајућим C++ компајлером. 
* Треба вам, минимално, `g++` верзије `9.4.0` (то је у лабораторијама). 
* Касније верзије су ОК. 

## Подешавање окружења код куће
* На репозиторијуму предмета имате два видео записа која показују два различита начина да, безболно, направите себи Линукс окружење у оквиру Виндовс оперативног система

## Рад на вежбама
* Ми овде користимо ефективно само два алата: едитор и компајлер
* Компајлер је C++ компајлер за `GCC` колекцију познат и као `g++`
* Едитор је штагод ви желите: Вижуал Студио Код који би требао да вам је на располагању је вероватно шта желите да користите али сте слободни да употребљавате шта год желите. 

## Компајлирање
* Већину кода пропуштамо кроз следећу команду: `g++ -pthread -o program kod.cpp`
* Она позива компајлер (`g++`) и каже му да ће код користити нити (`-pthread`) и то кроз механизам `POSIX` нити (на предавањима ћете чути више о овоме) што је за већину наших програма истина (мада није потребно у овим првим часовима)
* Затим специфицира да ће излазна, тј. извршна, датотека бити именована `program`
* Коначно специфицирамо да компајлирамо датотеку изворног кода `kod.cpp`

## Компајлирање
* Компајлира се само једна датотека (већина нашег кода је таква да стаје у једну датотеку)
* Наравно, можемо компајлирати одједном и велики број датотека користећи исти овај механизам, мада је најбоље то урадити преко посебних механизама за аутоматизацију компилације софтвера као што је нпр. `Make`
* За сада, обично позивање `g++` програма је довољно за наше потребе. 

# Тест C++ способности

## Здраво свете!
* Напишите `Hello world!` програм у C++ програмском језику, искомпајлирајте и покрените

## `FizzBuzz`
* Напишите `FizzBuzz` програм у C++ програмском језику
+ Треба исписати првих 100 целих бројева али:
    - ако је број дељив са 3 уместо броја исписати `Fizz`
    - ако је број дељив са 5 уместо броја исписати `Buzz`
    - ако је број дељив и са 3 и са 5 уместо броја исписати `FizzBuzz`

## Трећа срећа
* Напишите програм у C++ програмском језику који учитава произвољан број целобројних бројева у низ и потом тај низ сортира

## `Quick sort`
* Напишите програм у C++ програмском језику који учитава произвољан број целобројних бројева у низ и потом тај низ сортира "quick sort" алгоритмом за сортирање.
