Differences

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

Link to this comparison view

programare:teme_2021:tema1_2021_cbd [2021/11/03 10:23]
razvan.nitu1305 [Task 2: Executare instructiune (40p)]
programare:teme_2021:tema1_2021_cbd [2021/12/02 16:25] (current)
razvan.nitu1305 [Trimitere temă]
Line 25: Line 25:
 In aceasta tema, vom implementa un procesor de baza care decodifica un sir de biti si ulterior il executa. In aceasta tema, vom implementa un procesor de baza care decodifica un sir de biti si ulterior il executa.
  
-===== Task 1 - Decodificare instructiune (40p) =====+===== Task 1 - Decodificare instructiune (50p) =====
  
 Dandu-se o instructiune in format binar, decodificati instructiunea. Dandu-se o instructiune in format binar, decodificati instructiunea.
Line 69: Line 69:
 - rezolvarea acestui task se va afla in fisierul **task1.c** - rezolvarea acestui task se va afla in fisierul **task1.c**
  
-===== Task 2Executare instructiune (50p) =====+===== Task 2 Executare instructiune (50p) =====
  
 În cadrul acestui exercițiu vom continua task-ul anterior prin: În cadrul acestui exercițiu vom continua task-ul anterior prin:
Line 135: Line 135:
 - numerele citite de la tastatura sunt considerate fara pozitive, insa rezultatul poate fi negativ asa ca folositi o variabila de tip **int** pentru a salva rezultatul executarii instructiunii. - numerele citite de la tastatura sunt considerate fara pozitive, insa rezultatul poate fi negativ asa ca folositi o variabila de tip **int** pentru a salva rezultatul executarii instructiunii.
  
-===== Task 3 - Operanzi cu dimensiuni ciudate (20p) =====+- afisati doar numarul rezultat, altfel checker-ul nu va lua in considerare testul 
 + 
 +===== Bonus 1 - Operanzi cu dimensiuni ciudate (20p) =====
  
 In cadrul acestui task vom extinde implementarea de la Task 2 pentru a executa instrucțuni ale căror operanzi pot avea **orice** dimensiune din intervalul [1, 16]. În continuare, operanzii for fi citiți de la intrarea standard sub forma **unsigned short**, însă un operand ar putea să se întindă pe 2 citiri succesive. In cadrul acestui task vom extinde implementarea de la Task 2 pentru a executa instrucțuni ale căror operanzi pot avea **orice** dimensiune din intervalul [1, 16]. În continuare, operanzii for fi citiți de la intrarea standard sub forma **unsigned short**, însă un operand ar putea să se întindă pe 2 citiri succesive.
Line 142: Line 144:
 Exemplu: Exemplu:
  
-**N = 1**, **Dim = 11**. (1+1)*11/16 = 1,375 => se citesc 2 numere de tipul **unsigned short**. Sa presupunem ca acestea sunt 374444 ​(**10010010010 00100**) si 33792 (**100001 0000000000**). Va trebuie sa facem o operație intre 1170 (**10010010010**) si 289 (**00100 100001**)+**N = 1**, **Dim = 11**. (1+1)*11/16 = 1,375 => se citesc 2 numere de tipul **unsigned short**. Sa presupunem ca acestea sunt 37444 (**10010010010 00100**) si 33792 (**100001 0000000000**). Va trebuie sa facem o operație intre 1170 (**10010010010**) si 289 (**00100 100001**)
 </​note>​ </​note>​
  
 **Precizări:​** **Precizări:​**
  
-Pentru acest task veti modifica modifica ​fisierul ​task2.c  ​astfel incat sa extindeti functionalitatea pentru a rezolva task-ul curent.+Acest task se va rezolva in fisierul ​task3.c
  
-===== BonusPrecedenta operatorilor (20p) =====+- Pentru acest task veti copia continutul fisierul task2.c in fisierul task3.c si veti extinde functionalitatea acestuia. 
 + 
 +- Pentru acest task, veti afisa doar rezultatul final. 
 + 
 + 
 +===== Bonus 2 - Precedenta operatorilor (20p) =====
  
 Implementati precedenta operatilor, astfel incat * si / au precedenta egala intre ei, insa precdenta mai mai mare ca + si -. Implementati precedenta operatilor, astfel incat * si / au precedenta egala intre ei, insa precdenta mai mai mare ca + si -.
Line 158: Line 165:
 Pentru + * - / si 1 2 3 4 5 vom avea 1 + 2*3 - 4/5 = 1 + 6 - 0 = 7 Pentru + * - / si 1 2 3 4 5 vom avea 1 + 2*3 - 4/5 = 1 + 6 - 0 = 7
 </​note>​ </​note>​
 +
 +**Precizari**:​
 +
 +- Acest task se va rezolva in fisierul task4.c.
 +
 +- Veti afisa doar rezultatul final.
 ==== Trimitere temă ==== ==== Trimitere temă ====
  
-Tema va fi trimisă folosind [[https://v2.vmchecker.grid.pub.ro/homepage/​|vmchecker]],​ cursul **Programarea Calculatoarelor (CB & CD)**. \\+Tema va fi trimisă folosind [[https://​vmchecker.cs.pub.ro/ui/#PCCB|vmchecker]],​ cursul **Programarea Calculatoarelor (CB & CD)**. \\
  
-Găsiți arhiva cu checker-ul si makefile-ul {{:​programare:​teme_2020:​pc_tema_1.zip|aici}}. 
  
  
 Formatul arhivei va fi următorul: Formatul arhivei va fi următorul:
- - {task1.c task2.c}+ - {task1.c task2.c ​task3.c task4.c Makefile}
  - Un fișier [[https://​en.wikipedia.org/​wiki/​README|README]] în care vă descrieți rezolvarea taskurilor.  - Un fișier [[https://​en.wikipedia.org/​wiki/​README|README]] în care vă descrieți rezolvarea taskurilor.
 +
  
 <note warning> <note warning>
-  - O parte din cerințe conțin explicații și în cod. 
   - Arhiva trebuie să fie de tipul **zip**.   - Arhiva trebuie să fie de tipul **zip**.
-  ​- Codul va fi scris doar în fișierele //​gates.c//,​ //​communication.c//​ și //​hunt.c//​ +  - Makefile-ul și testele vor fi cele din aceasta ​arhiva: {{:​programare:​teme_2021:​miniprocesor.zip|}}
-  ​- Makefile-ul și testele vor fi cele din arhiva ​de test - noi vom dezarhiva arhiva voastră direct in folderul //src// +
-  - În scheletul de cod veți vedea bucăți de cod care conțin assert-uri **assert(condiție)** - acestea sunt folosite pentru a valida inputul+
 </​note>​ </​note>​
  
 +<note warning>
 +Nu includeti fisierele checkerului in arhiva voastra. **Nu folositi Makefile.checker** pe post
 +de Makefile in arhiva voastra: asta va duce la recursivitate infinita pe vmchecker. Puteti sa folositi
 +direct makefile-ul prezent in arhiva (**Makefile,​ nu Makefile.checker**).
 +</​note>​
 +
 +<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 === === Listă depunctări ===
Line 186: Line 207:
   * [-5.0]: abordare ineficientă   * [-5.0]: abordare ineficientă
   * [-10.0]: variabile globale   * [-10.0]: variabile globale
 +  * [-25.0]: Daca se folosesc vectori pentru stocarea bitilor ​
   * [-100.0]: TOT punctajul, în cazul în care se încearcă "​obținerea"​ punctajului pe temă folosind alte metode decât cele normale ​   * [-100.0]: TOT punctajul, în cazul în care se încearcă "​obținerea"​ punctajului pe temă folosind alte metode decât cele normale ​
     * în cadrul cursului de programare nu avem ca obiectiv rezolvarea în cel mai eficient mod posibil a programelor;​ totuși, ne dorim ca abordarea să nu fie una ineficientă,​ de genul să nu folosiți instrucțiuni repetitive acolo unde clar nu era cazul, etc.     * în cadrul cursului de programare nu avem ca obiectiv rezolvarea în cel mai eficient mod posibil a programelor;​ totuși, ne dorim ca abordarea să nu fie una ineficientă,​ de genul să nu folosiți instrucțiuni repetitive acolo unde clar nu era cazul, etc.
  
programare/teme_2021/tema1_2021_cbd.1635927801.txt.gz · Last modified: 2021/11/03 10:23 by razvan.nitu1305
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