Differences

This shows you the differences between two versions of the page.

Link to this comparison view

programare:teme_2022:tema0_2022_cbd [2022/10/18 14:26]
eduard.staniloiu created
programare:teme_2022:tema0_2022_cbd [2022/10/18 20:24] (current)
eduard.staniloiu
Line 2: Line 2:
  
 ==== Responsabili:​ ==== ==== Responsabili:​ ====
-  * Edi Staniloiu+  * Edi Stăniloiu
  
 Termen de predare: Termen de predare:
-  * Deadline soft: **TBD** +  * Deadline soft: **26.10.2022 23:55** 
-  * Deadline hard: **TBD**+  * Deadline hard: **02.11.2022 23:55**
  
 Aceasta este o temă de "​încălzire"​. Aceasta este o temă de "​încălzire"​.
 Scopul acesteia este să vă obișnuiți cu infrastructura de testare automată a temelor. Scopul acesteia este să vă obișnuiți cu infrastructura de testare automată a temelor.
 +Această infrastructură va fi folosită la toate temele ulterioare.
 +
 +Pentru fiecare zi (24 de ore) de întârziere,​ se vor scădea 10 puncte din nota acordată, până la atingerea deadline-ului hard.
 +
 +====Î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]].\\
 +La orice întrebare vom răspunde în maxim 24 de ore.\\
 +Nu se acceptă întrebări în ultimele 24 de ore înainte de deadline.
 +
 +===== Cerință =====
 +
 +Scrieți un program care citește de la standard input (tastatură) un număr natural, **N**.
 +Pentru toate valorile din intervalul **[1, N]**, programul va afișa, separate printr-un spațiu (** **):
 +  * cuvântul **Trick** dacă valoarea curentă este divizibilă cu **7**
 +  * cuvântul **Treat** dacă valoarea curentă este divizibilă cu **11**
 +  * cuvântul **TrickOrTreat** dacă valoarea curentă este divizibilă cu **7** și cu **11**
 +  * valoarea curentă, atunci când aceasta nu este divizibilă cu **7** sau **11**
 +
 +<​note>​
 +Exemplu utilizare:
 +<​code>​
 +./tema0
 +Introduceti valoarea numarului natural N:
 +11
 +1 2 3 4 5 6 Trick 8 9 10 Treat
 +</​code>​
 +</​note>​
 +
 +==== Coding Style ====
 +
 +Este foarte important, pentru orice proiect, ca codul sursă să fie ușor de citit.
 +Astfel, de-a lungul timpului, comunitatea programatorilor a agreat un set de reguli pe care programatorii trebuie să-l respecte atunci când scriu cod. Acest set de reguli poartă numele de **Coding style** și include directive precum:
 +  * utilizarea unor nume descriptive / intuitive pentru variabile care să descrie intenția utilizării variabilei - nu folosim **x**, folosim **num_elems**
 +  * nu utilizăm [[https://​en.wikipedia.org/​wiki/​Magic_number_(programming)|numere magice]]; le ținem într-o variabilă care are un nume descriptiv
 +  * indentăm codul
 +  * etc.
 +
 +În funcție de echipa / compania / proiectul la care veți lucra, coding style-ul poate diferi, în funcție de ce a fost agreat anterior, și vă veți adapta acelui stil.\\
 +În cadrul cursului de programare vom folosi regulile definite de către [[https://​isocpp.github.io/​CppCoreGuidelines/​CppCoreGuidelines| Cpp Core Guidelines]].
 +Acestea sunt verificate în mod automat de către checker.
 +
 +==== Validare locală temă ====
 +
 +Pentru a vă ajuta în dezvoltarea temei, arhiva {{:​programare:​teme_2022:​trickortreat.zip|}} conține o copie a checkerului.
 +
 +Pentru a instala dependențele necesare verificării pentru **coding style** utilizați scriptul **install-linters.sh**:​
 +<​code>​
 +./​install-linters.sh
 +</​code>​
 +
 +Pentru a rula checkerul local folosiți comanda:
 +<​code>​
 +make run
 +</​code>​
 +
 +<​note>​
 +Codul sursă este compilat folosind flagurile **-Wall -Werror**:
 +  * **-Wall** - compilatorul va avertiza (warn) orice operații care pot genera un comportament nedefinit
 +  * **-Werror** - compilatorul va trata warningurile ca pe niște erori de compilare
 +</​note>​
 +==== Trimitere temă ====
 +
 +Tema va fi trimisă folosind [[https://​vmchecker.cs.pub.ro/​ui/#​PCCB|vmchecker]],​ cursul **Programarea Calculatoarelor (CB & CD)**. \\
  
 Toate temele sunt testate în mod automat pe [[https://​vmchecker.cs.pub.ro/​ui/​|VMChecker]]. Toate temele sunt testate în mod automat pe [[https://​vmchecker.cs.pub.ro/​ui/​|VMChecker]].
Line 24: Line 87:
 **Punctajul final al temei** este afișat la finalul informațiilor afișate în **Rezultate**. **Punctajul final al temei** este afișat la finalul informațiilor afișate în **Rezultate**.
  
 +Conținutul arhivei va fi următorul:
 + - Fișierele **.c**, **.h** (dacă este cazul) care conține implementarea temei.
 + - Fișierul **Makefile**.
 + - Un fișier [[https://​en.wikipedia.org/​wiki/​README|README]] în care descrieți rezolvarea temei.
  
-Pentru fiecare zi (24 de ore) de întârziere,​ se vor scădea 10 puncte ​din nota acordată, până la atingerea deadline-ului hard.+<note warning>​ 
 +  - Arhiva trebuie să fie de tipul **zip**. 
 +  - Makefile-ul și testele ​vor fi cele din aceasta arhiva: {{:​programare:​teme_2022:​trickortreat.zip|}} 
 +  - Puteți utiliza regula **archive** din fișerul **Makefile** pentru a vă genera arhiva zip. Aceasta va adăuga fișierele Makefile, README și orice fișier **.c** și **.h** din directorul curent. 
 +  <​code>​ 
 +  make archive 
 +  </​code>​ 
 +</​note>​
  
-====Întrebări==== +<note warning> 
-Dacă aveți nelămuriri,​ puteți să ne contactați pe forumul dedicat [[TODO|temei de casă nr0]] sau pe [[TODO|canalul Temei 0]].\\ +Nu includeti fisierele checkerului in arhiva voastra**Nu folositi Makefile.checker** pe post 
-La orice întrebare vom răspunde în maxim 24 de ore.\\ +de Makefile in arhiva voastra: asta va duce la recursivitate infinita pe vmcheckerPuteti sa folositi 
-Nu se acceptă întrebări în ultimele 24 de ore înainte de deadline.+direct makefile-ul prezent in arhiva (**Makefile,​ nu Makefile.checker**). 
 +</​note>​
  
-===== Cerință =====+<note warning>​ 
 +In cazul in care testele va trec local, insa pica pe vmchecker cel mai probabil aveti 
 +o sursa de "​undefined behavior in cod". Pentru a va asigura ca scapati de aceste probleme, 
 +compilati cu flagul de compilare `-Wall` si rezolvati toate warning-urile. 
 +</​note>​ 
 + 
 +=== Listă depunctări ​=== 
 +Lista nu este exhaustivă. 
 +  * O temă care nu compilează și nu a rulat pe **vmchecker** nu va fi luată în considerare 
 +  * O temă care nu rezolvă cerința și trece testele prin alte mijloace nu va fi luată în considerare 
 +  * **NU acceptăm teme copiate**. În cazul unei teme copiate se scade punctajul aferent temei din punctajul total.  
 +  * [-20.0]: Nerezolvarea tuturor erorilor și warningurilor de coding style 
  
-Scrieți un program care citește de la standard input (tastatură) un număr natural. 
  
programare/teme_2022/tema0_2022_cbd.1666092386.txt.gz · Last modified: 2022/10/18 14:26 by eduard.staniloiu
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