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

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

Увод

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

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

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

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

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