# Вежбе 1 - Упознавање

Радован Туровић - Бранислав Ристић

# Увод

## Основне информације

- Сва обавештења ће се постављати на АЦС страницу >>www.acs.uns.ac.rs<<
- Материјале можете добавити на репозиторијуму предмета на АЦС-у на >>Оперативни системи<<

## Организација вежби

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

## Полагање предмета

- Обавезе предмета “Оперативни системи” су подељене у два дела:
  - испитне обавезе: носе 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” алгоритмом за сортирање.