This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
laboratoare:laborator-02 [2015/10/23 18:53] razvan.deaconescu |
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 279: | 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 356: | 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()//), else, for, while, do {} 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> |