Tema 1

Informații generale

Deadline: 6 Noiembrie 2014, 23:55

Timp de lucru: 7 zile + 1 zi

Punctaj: 0.6 puncte din nota finală

Formular de trimitere temă: http://goo.gl/D4TP4v

Tema va fi considerată rezolvată la data trimiterii codului pe site. NU se acceptă întârzieri!

Actualizări enunț:

  • 5 Noiembrie 2014, 15:49 - A fost actualizată regula pentru partajarea soluțiilor în cadrul temelor la secțiunea Task-uri
  • 4 Noiembrie 2014, 19:04 - A fost prelungi deadline-ul temei cu 24 de ore
  • 31 Octombrie 2014, 16:51 - A fost adăugată explicit regula pentru partajarea soluțiilor în cadrul temelor la secțiunea Task-uri

Actualizări checker:

Versiunea curentă: versiunea 6

  • versiunea 6: 5 Noiembrie 2014, 16:55 - Este afișat corect mesajul pentru Task 02 legat de conținutul fișierelor: Matt Smith și David Tennant
  • versiunea 5: 31 Octombrie 2014, 14:20 - Task 05 este punctat dacă se face compilarea in 2 pași
  • versiunea 4: 30 Octombrie 2014, 15:24 - punctajul pe bonus are valoarea corectă
  • versiunea 3: 30 Octombrie 2014, 13:45 - bonusul nu este punctat dacă trece Task 05
  • versiunea 2: 30 Octombrie 2014, 11:12 - a fost reparat modul în care se verifică outputul Task-ului 05

Actualizări utilitar uso:

Versiunea curentă: v15 - “Divide et impera!”

  • Nu există actualizări pentru utilitarul uso

Cunoștințe evaluate

  • navigare în sistemul de fișiere
  • instalarea de programe folosind apt-get
  • folosirea utilitarului git
  • compilarea programelor

Testare

Task-uri

Este STRICT interzisă publicarea pe Forum sau prin alte mijloace colaborative a comenzilor care fac parte din rezolvarea parțială sau integrală a temei sau a unui task. La prima abatere, la decizia oricărui membru al echipei de USO, studentul primește un avertisment, iar punctajul obținut pe temă îi este redus cu valoarea punctajului a task-ul respectiv. Începând cu a doua abatere, se va anula întregul punctaj pe tema curentă, temele anterioare sau cele viitoare nefiind afectate. Abaterile rămân valabile pe tot parcursul semestrului, acestea nefiind anulate în momentul în care se publică o temă nouă. Ori de câte ori se încalcă această regulă, se va ține cont de istoricul abaterilor. Aceste abateri vor fi actualizate în catalog.

Este recomandată rezolvarea taskurilor în ordine. Dacă doriți să ștergeți ceea ce ați lucrat și să reveniți la starea inițială rulați din nou comanda uso start. Atenție, această comandă șterge toate fișierele create și aduce repository-ul în starea inițială!

Task 01 (20p)

Clonați în directorul /home/student repository-ul disponibil la adresa https://github.com/systems-cs-pub-ro/uso. Directorul creat după clonare trebuie să aibă numele uso.

Adaugați în directorul uso urmatoarea structură de directoare și fișiere:

seriale/
├── dr. who/
│   └── 2005/
│       ├── Cristopher Eccleston
│       ├── David Tennant
│       └── Matt Smith
└── stargate/
    ├── atlantis/
    │   └── Ronon Dex
    ├── sg1/
    │   └── Jack O'Neil
    └── universe/
        └── Dr. Nicholaus Rush

Directoarele au după nume caracterul / (slash)

Adaugați toate fișierele în git și efectuați un commit cu mesajul initial commit (Hint: try.github.io și git-scm.com/doc)

Task 02 (20p)

Redenumiți fișierul Jack O'Neil în Jack O'Neill și adăugați fișierul Teal'c în directorul sg1. Având în vedere că ați făcut modificări, trebuie să mai adaugați un commit în repository care să cuprindă aceste modificări. Fiecare commit trebuie să aibă un mesaj atașat. Pentru acest commit trebuie să folosiți mesajul sg1-season 1.

Adăugati fișierul John Hurt în directorul 2005 (din dr. who). Scrieți în fișierul Matt Smith textul Geronimo!. Scrieți în fișierul David Tennant textul Allons-y!. Scrieți în fișierul John Hurt textul Oh, for god's sake!. Adaugați un commit care să cuprindă aceste modificări și care are mesajul day of the doctor.

Instalați și folosiți pachetul gitk pentru a inspecta ușor istoricul modificărilor din repository-ul de Git

Task 03 (20p)

Pentru acest task aveți nevoie de fișierul obiect hello.o aflat la adresa https://github.com/systems-cs-pub-ro/uso/blob/master/tema1/help/hello.o?raw=true

Creați directorul ~/uso/tema1/hello/ și descărcați fișierul obiect hello.o (Hint: man wget) în directorul anterior creat. Fișierul obiect hello.o conține un apel la funcția world() de tip void. Funcția nu a fost implementată în fisierul obiect descarcat.

Fără a modifica fișierul obiect hello.o, trebuie să implementați funcția void world() într-un fișier sursă world.c care să afișeze textul world. Fișierul world.c se va compila in fișierul obiect world.o si apoi sa va genera executabilul hello.

În plus, se cere să creați un fișier Makefile cu numele Makefile care generează executabilul hello folosind atât fișierul obiect hello.o cât și fisierul obiect world.o obținut în urma compilării sursei .c implementată anterior. La primirea oricăreia dintre comenzile make sau make build va fi generat fișierul executabil hello iar în momentul rulării acestuia se va afișa textul Hello world.

Task 04 (20p)

Deschideți directorul ~/uso/tema1/asm. Scrieți un fișier Makefile cu numele Makefile astfel încât din fișierul hello.s să rezulte un executabil cu numele hello la primirea comenzilor make sau make build. Adăugați o regulă numită run care recompilează întreg programul, dacă e cazul, apoi îl rulează.

Task 05 (20p)

Deschideți directorul ~/uso/tema1/year. Scrieți un fișier Makefile cu numele Makefile care compilează fișierul sursă year.c astfel încât anul indicat la output să fie cel curent (2014). Adăugați regulile run și clean astfel încât la apelarea make run să se ruleze programul, iar la apelarea make clean să șe șteargă eventualele fișiere obiect și executabilul rezultat.

Nu este permisă modificarea fișierului sursă!

Task 06 - Bonus (20p)

Compilând sursele și respectând indicațiile de instalare, instalați în mașina virtuală terminalul de aici: https://github.com/Swordfish90/cool-retro-term.

Bonusul este luat în considerare doar dacă s-a obținut punctaj maxim la toate taskurile din temă.

uso/internal/2014-2015/tema-1.txt · Last modified: 2016/10/08 13:43 by razvan.deaconescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0