This shows you the differences between two versions of the page.
programare:teme_2023:tema0_2023_cbd [2023/10/31 03:43] alin_bogdan.popa [Intro Makefile] |
programare:teme_2023:tema0_2023_cbd [2023/11/05 16:31] (current) alin_bogdan.popa |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Tema 0 - TrickOrTreat ====== | ====== Tema 0 - TrickOrTreat ====== | ||
+ | |||
+ | ==== Changelog: ==== | ||
+ | * 05 Nov 2023: updatat secțiunea **Trimitere tema**; deadline soft 12nov și hard 15nov | ||
==== Responsabili: ==== | ==== Responsabili: ==== | ||
Line 5: | Line 8: | ||
Termen de predare: | Termen de predare: | ||
- | * Deadline soft: **TBA 23:55** | + | * Deadline soft: **Duminică 12 Noiembrie 2023, 23:55** |
- | * Deadline hard: **TBA 23:55** | + | * Deadline hard: **Miercuri 15 Noiembrie 2023, 23:55** |
Aceasta este o temă de "încălzire". | Aceasta este o temă de "încălzire". | ||
Line 15: | Line 18: | ||
====Întrebări==== | ====Întrebări==== | ||
- | Dacă aveți nelămuriri, puteți să ne contactați pe forumul dedicat [[https://curs.upb.ro/2022/mod/forum/view.php?id=59781|temei de casă nr. 0]] sau pe [[https://teams.microsoft.com/l/channel/19%3a72025456beeb4a1492916b8f4b923fc3%40thread.tacv2/Tema%25200?groupId=6105be57-b728-4078-9f4a-00dc43e83e70&tenantId=2d8cc8ba-8dda-4334-9e5c-fac2092e9bac|canalul Temei 0]].\\ | + | Dacă aveți nelămuriri, puteți să ne contactați pe forumul dedicat [[https://curs.upb.ro/2023/mod/forum/view.php?id=57385|temei de casă nr. 0]] sau pe [[https://teams.microsoft.com/l/channel/19%3a0a648c85e9ed4a2bbb343b5792443551%40thread.tacv2/Tema%25200?groupId=1f7c7112-0ea2-4f0b-9131-d5c29590d62c&tenantId=2d8cc8ba-8dda-4334-9e5c-fac2092e9bac|canalul Temei 0]].\\ |
La orice întrebare vom răspunde în maxim 24 de ore.\\ | La orice întrebare vom răspunde în maxim 24 de ore.\\ | ||
Nu se acceptă întrebări în ultimele 24 de ore înainte de deadline. | Nu se acceptă întrebări în ultimele 24 de ore înainte de deadline. | ||
Line 24: | Line 27: | ||
* Respectați întocmai regulile de încarcare a arhivei. Dacă uitați să includeți fișierele sursă sau Makefile-ul în arhivă, veți primi 0 pe temă. | * Respectați întocmai regulile de încarcare a arhivei. Dacă uitați să includeți fișierele sursă sau Makefile-ul în arhivă, veți primi 0 pe temă. | ||
* Respectați întocmai instrucțiunile de scriere a fișierului ''Makefile''. Checkerul folosește acest fișier pentru a vă rula tema. Dacă el nu este scris corect, veți primi 0 pe temă chiar dacă codul sursă este ok. | * Respectați întocmai instrucțiunile de scriere a fișierului ''Makefile''. Checkerul folosește acest fișier pentru a vă rula tema. Dacă el nu este scris corect, veți primi 0 pe temă chiar dacă codul sursă este ok. | ||
- | * **La trimiterea arhivei pe [[https://vmchecker.cs.pub.ro/ui/|VMChecker]], tema vă este corectată automat, pe loc. Verificați secțiunea de "Rezultate" pentru a afla punctajul. Dacă vă apar erori și/sau nu apare punctajul obținut (în format numeric e.g. 85/100) înseamnă că tema voastră nu a fost rulată și veți primi 0 pe temă dacă nu rezolvați eroarea.** | + | * **La trimiterea arhivei pe Moodle, tema vă este corectată automat, pe loc. Verificați secțiunea "Feedback" pentru a afla punctajul. Dacă vă apar erori și/sau nu apare punctajul obținut (în format numeric e.g. 85/100) înseamnă că tema voastră nu a fost rulată și veți primi 0 pe temă dacă nu rezolvați eroarea.** |
- | * Puteți retrimite tema pe [[https://vmchecker.cs.pub.ro/ui/|VMChecker]] de oricate ori vreți înainte de expirarea deadline-ului. Se va lua în considerare numai ultima variantă trimisă. | + | * Puteți retrimite tema de oricate ori vreți înainte de expirarea deadline-ului. Se va lua în considerare numai ultima variantă trimisă. |
</note> | </note> | ||
Line 56: | Line 59: | ||
* o regulă ''clean'' care șterge executabilul generat. | * o regulă ''clean'' care șterge executabilul generat. | ||
* o variabilă numită ''CFLAGS'' care conține string-ul ''-Wall -Werror'' și care este folosită la compilare. În cazul în care dorim să compilăm mai multe fișiere folosind același ''Makefile'', putem refolosi variabila în loc sa repetăm flag-urile pentru fiecare utilizare ''gcc''. | * o variabilă numită ''CFLAGS'' care conține string-ul ''-Wall -Werror'' și care este folosită la compilare. În cazul în care dorim să compilăm mai multe fișiere folosind același ''Makefile'', putem refolosi variabila în loc sa repetăm flag-urile pentru fiecare utilizare ''gcc''. | ||
- | * o linie care marchează regulile ''clean'' și ''run'' ca reguli de tip ''PHONY''. Asta îi spune utilitarului ''make'' că aceste reguli nu au rolul de a genera un fișier cu același nume (''clean'' și ''run''). Spre exemplu pentru regula ''run'', fără mențiunea ''PHONY'', la apelarea acestei reguli utilitarul ''make'' nu ar mai executa comenzile asociate dacă în același director ar exista un fișier numit ''run'', deoarece ar considera că rularea regulii nu e necesară întrucât fișierul este deja generat. Dacă folosim ''PHONY'', acea regulă se va rula mereu, chiar dacă deja există un fișier cu acel nume. Atentie: ''make'' rulează mereu o regulă dacă dependentele ei au fost modificate mai recent decât fișierul produs de către regulă. Exemplu: dacă rulăm regula ''myexe'', chiar dacă executabilul ''myexe'' este deja generat, dacă fișierul ''main.c'' a fost modificat între timp, ''make'' va rula regula din nou (adică ''main.c'' va fi recompilat și vom obține un nou ''myexe'', ceea ce este rezultatul dorit). | + | * o linie care marchează regulile ''clean'' și ''run'' ca reguli de tip ''PHONY''. Asta îi spune utilitarului ''make'' că aceste reguli **NU** au rolul de a genera un fișier cu același nume (''clean'' și ''run''). Spre exemplu pentru regula ''run'', fără mențiunea ''PHONY'', la apelarea acestei reguli utilitarul ''make'' nu ar mai executa comenzile asociate dacă în același director ar exista un fișier numit ''run'', deoarece ar considera că rularea regulii nu e necesară întrucât fișierul este deja generat. Dacă folosim ''PHONY'', acea regulă se va rula mereu, chiar dacă deja există un fișier cu acel nume. Atentie: ''make'' rulează mereu o regulă dacă dependentele ei au fost modificate mai recent decât fișierul produs de către regulă. Exemplu: dacă rulăm regula ''myexe'', chiar dacă executabilul ''myexe'' este deja generat, dacă fișierul ''main.c'' a fost modificat între timp, ''make'' va rula regula din nou (adică ''main.c'' va fi recompilat și vom obține un nou ''myexe'', ceea ce este rezultatul dorit). |
Pentru rularea unei reguli, scriem în terminal: ''make [nume-regula]''. | Pentru rularea unei reguli, scriem în terminal: ''make [nume-regula]''. | ||
Line 144: | Line 147: | ||
==== Trimitere temă ==== | ==== Trimitere temă ==== | ||
- | Tema va fi trimisă folosind [[https://vmchecker.cs.pub.ro/ui/#PCCB|vmchecker]], cursul **Programarea Calculatoarelor (CB & CD)**. \\ | + | Tema va fi trimisă folosind [[https://curs.upb.ro/2023/mod/assign/view.php?id=60408|Moodle]], cursul **Programarea Calculatoarelor (CB & CD)**, activitatea "Tema 0". \\ |
- | + | ||
- | Toate temele sunt testate în mod automat pe [[https://vmchecker.cs.pub.ro/ui/|VMChecker]]. | + | |
- | Autentificarea se face folosind numele de utilizator și parola de pe moodle / Teams. | + | |
- | Din meniul //drop-down// selectați cursul corespunzător; în cazul de față: **Programarea Calculatoarelor (CB & CD)**. | + | Toate temele sunt testate în mod automat pe Moodle. |
- | În meniul //didebar//, din partea stângă a paginii, selectați tema pentru care veți face submisia; în cazul de față: **TrickOrTreat**. | + | |
- | Arhiva temei se va încărca pe checker folosind formularul de submisie din tabul **Trimitere solutii**. | + | Arhiva temei se va încărca folosind formularul de submisie (butonul **Add submission**. |
- | Rezultatele vor fi disponibile în tabul **Rezultate**.\\ | + | Rezultatele vor fi disponibile în secțiunea **Feedback** - nota apare la linia **Grade**, iar outputul checkerului și erorile apar la sectiunea **Feedback comments**. Dacă apare un buton albastru în formă de plus, trebuie să dați click pe el pentru a afișa întregul output al checkerului.\\ |
- | **Citiți cu atenție** informațiile afișate în **Rezultate** pentru a vă asigura că tema a fost rulată cu succes; o eroare comună este dată de faptul că conținutul arhivei nu respectă structura dorită (ex. fișierele sunt într-un alt director).\\ | + | **Citiți cu atenție** informațiile afișate în **Feedback** pentru a vă asigura că tema a fost rulată cu succes; o eroare comună este dată de faptul că conținutul arhivei nu respectă structura dorită (ex. fișierele sunt într-un alt director).\\ |
- | **Punctajul final al temei** este afișat la finalul informațiilor afișate în **Rezultate**. | + | **Punctajul final al temei** este afișat la linia **Grade** și la finalul outputului din checker. |
Conținutul arhivei trebuie să fie următorul: | Conținutul arhivei trebuie să fie următorul: |