User Tools

Site Tools


laboratoare:laborator-02

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:laborator-02 [2015/10/23 18:31]
razvan.deaconescu [1. [20p] Online C Compiling]
laboratoare:laborator-02 [2015/10/23 19:05] (current)
razvan.deaconescu [4. [40p] C: GOTOs]
Line 1: Line 1:
 ====== Laborator 02: Toolchain ====== ====== Laborator 02: Toolchain ======
 +
 În acest laborator, vom trece prin fiecare nivel de procesare a unui limbaj de nivel înalt și prin toolchain-ul pe care îl vom folosi de acum încolo. În acest laborator, vom trece prin fiecare nivel de procesare a unui limbaj de nivel înalt și prin toolchain-ul pe care îl vom folosi de acum încolo.
  
 ===== C basics: GOTOs ===== ===== C basics: GOTOs =====
 +
 Un concept mai puțin abordat în tutoriale de C este instrucțiunea **goto**. Un concept mai puțin abordat în tutoriale de C este instrucțiunea **goto**.
 Prin instrucțiunea **goto**, un program poate sări în puncte intermediare în cadrul unei funcții. Prin instrucțiunea **goto**, un program poate sări în puncte intermediare în cadrul unei funcții.
-Aceste puncte intermediare se numesc **label**-uri (etichete).\\ +Aceste puncte intermediare se numesc **label**-uri (etichete). 
 Un exemplu de cod: Un exemplu de cod:
 <code c> <code c>
Line 23: Line 26:
 } }
 </​code>​ </​code>​
 +
 Programul execută un job prin **work()**. În caz că mai sunt alte joburi neterminate,​ programul sare la labelul **do_some_work**.\\ ​ Programul execută un job prin **work()**. În caz că mai sunt alte joburi neterminate,​ programul sare la labelul **do_some_work**.\\ ​
 **do_some_work** este punctul din program în care începe procesarea unui nou job. Acesta e marcat printr-un nume urmat de **:**. **do_some_work** este punctul din program în care începe procesarea unui nou job. Acesta e marcat printr-un nume urmat de **:**.
Line 258: Line 262:
  
 Scrieți în zona ''​Code editor''​ următoarea secvență de cod:<​code>​ Scrieți în zona ''​Code editor''​ următoarea secvență de cod:<​code>​
-int my_fun(void)+int simple_fn(void)
 { {
     int a = 1;     int a = 1;
Line 278: Line 282:
 </​note>​ </​note>​
  
-Creați ​un fișier nou în **cadrul proiectului**, numit ''​main.cpp''​ și adăugați următorul cod în fișier. Puteți da click dreapta pe intrarea ''​Source files'' ​din partea dreapta a ecranului ​''​Visual Studio''​ și apoi puteți folosi ​''​Add -> New Item''​.+Pentru a adăuga ​un fișier nou în cadrul proiectului ​mergeți cu mouse-ul în  zona ''​Solution Explorer'' ​(din partea dreapta sus a ecranului) ​și apoi folosiți click dreapta pe intrarea ''​Source files''​, apoi folosiți ​''​Add''​ și apoi, după caz, ''​New ​Item''​ sau ''​Existing ​Item''​. ​Adăugați un fișier nou în **cadrul proiectului**,​ numit ''​main.cpp''​ și adăugați următorul cod în fișier:
 <code c> <code c>
 #define DATA_LEN 100  #define DATA_LEN 100 
Line 355: Line 359:
 ==== 4. [40p] C: GOTOs ==== ==== 4. [40p] C: GOTOs ====
  
-Implementați algoritmii de mai jos în C **fără a folosi apeluri de funcţii (exceptând //scanf()// şi //​printf()//​)elseforwhiledo {} while; ​și construcțiile ​cu if nu pot conține return**. Adică va trebui să folosiți multe instrucțiuni ''​goto''​. +<note important>​ 
-  ​- ​maximul dintr-un vector [20p] + 
-  - căutare binară ​[20p]+Când scrieți cod cu etichete (label-uri) țineți cont de următoarele recomandări de indentare:​ 
 +  * Nu indentați etichetele (label-urile). "​Lipiți-le"​ de marginea din stânga a ecranului de editare. 
 +  * O etichetă este singură pe linie. Nu există cod după etichetă. 
 +  * Nu țineți cont de indentare în indetarea codului. Codul trebuie indendat în același mod și cu etichete și fără etichete. 
 +  * Puneți o linie liberă înaintea linie care conține o etichetă. 
 + 
 +</​note>​ 
 + 
 +Pentru ​algoritmii de mai jos scrieți cod în C **fără** a folosi
 +  * apeluri de funcţii (exceptând //scanf()// şi //​printf()//​) 
 +  * else 
 +  * for 
 +  * while 
 +  * do {} while; 
 +  * construcțiile ​''​if''​ care conțin return 
 + 
 +Adică va trebui să folosiți ''​if''​ și multe instrucțiuni ''​goto''​. 
 + 
 +**[20p]** Implementați ​maximul dintr-un vector ​folosind cod C și constrângerile de mai sus. 
 + 
 +**[20p]** Implementați ​căutare binară ​folosind cod C și constrângerile de mai sus.
  
 <note warning> <note warning>
laboratoare/laborator-02.1445614306.txt.gz · Last modified: 2015/10/23 18:31 by razvan.deaconescu