This shows you the differences between two versions of the page.
cpl-atm:tema2 [2013/12/19 08:23] alexandru.radovici created |
cpl-atm:tema2 [2014/01/29 12:37] (current) alexandru.radovici [FOR] |
||
---|---|---|---|
Line 5: | Line 5: | ||
===== Trimitere temă ===== | ===== Trimitere temă ===== | ||
- | Tema de casă se trimit sub forma unei **arhive ZIP** pe mail către: | + | Tema de casă se trimit sub forma unei **arhive ZIP**. |
- | * laura.vasilescu@cti.pub.ro **ȘI** alexandru.radovici@cs.pub.ro | + | |
- | Numele email-ului trebuie să fie de forma: **[ATM][2] Prenume Nume**. | + | Arhiva va fi uploadă folosind un serviciu public de sharing (Google Drive, Dropbox etc.). Trebuie să trimiteți link-ul către locația de unde putem downloada tema de casă. |
- | Spre exemplu, email-ul trimis de studentul Jeffrey Ullman se va numi: [ATM][2] Jefferey Ullman. | + | |
- | Numele arhivei trebuie să fie de forma: **ATM_Nume_Prenume.zip**. | + | Trimiterea temei de casă se face prin completarea [[https://docs.google.com/forms/d/1ogEGHs57glx4StRFiX8ImGmDT1w8dqWHQnMoLs1ftzs/viewform|acestui formular]]. |
- | Spre exemplu, arhiva trimisă de studentul Jeffrey Ullman se va numi ATM_Ullman_Jeffrey.zip | + | |
+ | <note> | ||
+ | Atenție! Nu faceți link-ul public! Dacă ajunge link-ul public, colegii ar putea să se inspire din tema voastră. | ||
+ | |||
+ | Dacă două teme seamănă suficient de mult vor fi considerate copiate. | ||
+ | </note> | ||
+ | |||
+ | Toate întrebările despre temă se vor purta public pe [[https://groups.google.com/forum/?hl=en#!forum/cpl-atm-2013-2014|grupul acesta]]. Toți cei care au trimis tema de casă nr. 1 au fost înscriși cu adresa de e-mail de pe care au trimis tema. | ||
Arhiva trebuie să conțină: | Arhiva trebuie să conțină: | ||
Line 27: | Line 32: | ||
* sirurile de caractere incep cu @ si continua cu litere sau cifre | * sirurile de caractere incep cu @ si continua cu litere sau cifre | ||
* numele de functii incep cu litere si continua cu litere sau cifre | * numele de functii incep cu litere si continua cu litere sau cifre | ||
+ | * fiecare instructiune este pe o linie separata | ||
- | ==== Declaratii de variabile ==== | + | ===== Declaratii de variabile ===== |
Declaratiile de variabile pot aparea doar la inceputul programului sau ai functiilor. Ele incep cu | Declaratiile de variabile pot aparea doar la inceputul programului sau ai functiilor. Ele incep cu | ||
cuvantul VAR. | cuvantul VAR. | ||
Line 36: | Line 42: | ||
</code> | </code> | ||
+ | ===== Expresii ===== | ||
+ | Expresiile folosite pot fi: | ||
+ | * adunari | ||
+ | * scaderi | ||
+ | * inmultiri | ||
+ | * impartiri | ||
+ | * modulo (cuvantul mod) | ||
+ | * paranteze | ||
- | ====== Testare ====== | + | ===== If ===== |
+ | If arata in felul urmator: (atentie ELSEIF si ELSE pot lipsi) | ||
+ | <code> | ||
+ | IF conditie THEN | ||
+ | instructiuni | ||
+ | ELSEIF conditie THEN | ||
+ | instructiuni | ||
+ | ELSE | ||
+ | instructiuni | ||
+ | ENDIF | ||
+ | </code> | ||
- | In curand | + | ===== WHILE ===== |
+ | While arata in felul urmator: | ||
+ | <code> | ||
+ | WHILE conditie DO | ||
+ | instructiuni | ||
+ | ENDWHILE | ||
+ | </code> | ||
+ | ===== FOR ===== | ||
+ | FOR arata in felul urmator: (atentie STEP poate lipsi, dupa step urmeaza un numar intreg pasul de incrementare) | ||
+ | <code> | ||
+ | FOR #variabila FROM numar TO numar STEP numar DO | ||
+ | instructiuni | ||
+ | ENDFOR | ||
+ | </code> | ||
+ | ===== Functii ===== | ||
+ | Functiile se declara in felul urmator. | ||
+ | <code> | ||
+ | SUB nume lista_parametrii | ||
+ | instructiuni | ||
+ | ENDSUB | ||
+ | </code> | ||
+ | Functiile nu intorc valori. | ||
+ | |||
+ | ===== Apel de functie ===== | ||
+ | Apelul de functie arata in felul urmator: | ||
+ | <code> | ||
+ | CALL nume_functie lista_parametrii | ||
+ | </code> | ||
+ | |||
+ | ====== Bonus ====== | ||
+ | (1p) Implementati ridicarea la putere in expresii | ||
+ | (1p) Implementati restrangeti expresiile constante | ||
+ | (1p) Implementati valoare de intoarcere a functiilor | ||
+ | |||
+ | ====== Exemple ====== | ||
+ | Aici sunt cateva exemple de programe care ar trebui sa functioneze | ||
+ | |||
+ | <code> | ||
+ | |||
+ | VAR #nr | ||
+ | |||
+ | SUB prim #n | ||
+ | VAR #i, #divizori | ||
+ | #divizori = 0 | ||
+ | IF #n <> 0 AND #n <> 1 THEN | ||
+ | FOR #i FROM 2 TO #n/2 STEP 1 DO | ||
+ | IF #n MOD #i = 0 THEN | ||
+ | #divizori=#divizori+1 | ||
+ | ENDIF | ||
+ | ENDFOR | ||
+ | ELSE | ||
+ | #divizori = 1 | ||
+ | ENDIF | ||
+ | IF #divizori = 0 THEN | ||
+ | PRINT #n, " este prim" | ||
+ | ELSE | ||
+ | PRINT #n, " nu este prim" | ||
+ | ENDIF | ||
+ | ENDSUB | ||
+ | |||
+ | FOR #nr FROM 1 TO 10 STEP 1 DO | ||
+ | CALL prim #nr | ||
+ | ENDFOR | ||
+ | |||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | VAR #nr | ||
+ | |||
+ | SUB perfect #n | ||
+ | VAR #i, #s | ||
+ | #s = 0 | ||
+ | FOR #i FROM 1 TO #n/2 STEP 1 DO | ||
+ | IF #n MOD #i = 0 THEN | ||
+ | #s=#s+#i | ||
+ | ENDIF | ||
+ | ENDFOR | ||
+ | IF #s = #n THEN | ||
+ | PRINT #n, " este perfect" | ||
+ | ELSE | ||
+ | PRINT #n, " nu este perfect" | ||
+ | ENDIF | ||
+ | ENDSUB | ||
+ | |||
+ | FOR #nr FROM 1 TO 10 STEP 1 DO | ||
+ | CALL perfect #nr | ||
+ | ENDFOR | ||
+ | |||
+ | </code> | ||
+ | |||
+ | |||
+ | ====== Testare ====== | ||
+ | Fisirele pentru corectare se afla pe GitHub la acesta adresa [[https://github.com/alexandruradovici/atm-basic/blob/master/README.md]]. |