Differences

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

Link to this comparison view

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 DriveDropbox etc.). Trebuie să trimiteți link-ul către locația ​de unde putem downloada tema de casă
-Spre exempluemail-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 exempluarhiva 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 publiccolegii 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]].
cpl-atm/tema2.1387434202.txt.gz · Last modified: 2013/12/19 08:23 by alexandru.radovici
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