rolisz's site

Subiecte FP

Domnul profesor Ioan Lazăr.

Din auzite (dacă are cineva ceva completări, sunt binevenite):

La examenul scris:

Primele 8 exercitii erau grila (4 variante )-unul,niciunul  sau mai multe raspunsuri:
1)
a=1
b=a+1
a=”1”
c=a+b
2)
a=1
def  f(b):
    a=2
    a=b+a
    return a
print(f(2))
3)
def f(x)
    Return x+1
g=lambda x:x+2
def printh3(h):
    print(h(3))
printh3(f)
printh3(g)
f=g
printh3(f)
6)
Class A:
    def  f(self): print(“fa”)
class B(A):
    def f(self): print(“fb”)
def g(self):print(“gb”)
def printo(o):
    o.f()
    o.g()
printo(B())
printo(A())
        a)se tipareste fb apoi gb apoi fa
        b)linia 8… exceptie
        C)linia 9 …exceptie
        d)se genereaza tiparirea unei erori

8) scrieti documentatia functiei de mai jos (preconditii, descriere, postconditii)
def pow(x,n):
    if n==0: return 1
    if n==1: return x
if n%2==0:
    xn2=pow(x,n/2)
    return xn2*xn2
else:
    return x*pow(x,n-1)
9)cazuri de testare pentru functia de la punctul 8
10) scrieti functia de la ex 8 in varianta iterativa
11)def insert(list,x):
“” Insereaza un element intr-o lista ordonata crescator
Pre: lista ordonata crescator
Post: adaugand x lista ramana ordonata crescator
“”
12)teste (petru functia de la 11 cred) white box

Examen practic:

Scrieți un program (joc de cuvinte) Scramble după cum urmează.

(Modulul Python „random” conține funcția „random.randint(m,n)” care generează un număr aleator între m și n - doi întregi).

Timp de lucru: 2 1/4 ore.

În weekend voi încerca să rezolv subiectele și să le pun pe siteul meu. Meanwhile, Arhi­tec­tura cal­cu­la­toarelor... din păcate fără subiect.

Subiectele de aici. Rezolvarea este... un pic aprox­i­ma­tivă la partea scrisă pentru că nu am subiectul complet.

1) După aceste operații, a va conține stringul "1", b va conține numărul întreg 2, iar la atribuirea valorii variabilei c se va ridica o eroare de „Can't convert int to string im­plic­it­ly”.

2) Se va afișa 4.

3) Se va afișa: 4, 5, 5.

6) Se va afișa ”fb”, ”gb”, ”fa” și apoi se aruncă o excepție la linia 8. Deci răspunsul e a) și b)

8) Descriere: Funcția ridică la puterea n numărul x.

Pre­condiții: x de tip float. n de tip întreg pozitiv.

Post­condiții: rezultat = x^n , de tip float.

9)

x n Rezultat
2 1 2
5 0 1
10 4 10000
2.5 3 15.625

10) [gist id=1739257]

11) [gist id=1739458]

12) Knock yourselves out cu white-box.

Rezolvarea subiec­tu­lui practic se gaseste pe GitHubul meu.

Edit: Am primit și subiectul de la scris. E la sfârșitul postului.

Subiect practic (cel mai meta subiect ever):

Un profesor oferă o aplicație stu­denților pentru a se pregăti pentru examene. Profesorul are un set de întrebări (Question), fiecare întrebare constând dintr-un text (ques­tion­Text - șir de caractere, de exemplu „Care dintre ur­mă­toarele funcții sunt funcții Python pre­def­i­nite? (a) println; (b) print; (c) write,”), și un singur răspuns corect (cor­rectAn­swer, de exemplu „b”). Aplicația permite stu­den­tu­lui să efectueze teste, un Test constând dintr-une număr fix de întrebări (setat prin variabila statică noOfQues­tions, de exemplu 5).

Oficiu - 1p; Inspectare cod sursă - 4.5p; Execuție - 4.5p

Timp de lucru 2 1/2h

Subiectul scris a fost similar cu cel de la grupa 211. Edit: Here it is. Nu am mai avut timp să îl transcriu:

De la cel care a trimis: „la probleme cu teste lipseste expresia: "folosind asserturi" si la problema 7 lipseste cuvantul "inserat" ”

Credits: Alexandru, Istvan

Tot pe GitHubul meu. Doar practicul. Daca aveti im­bunatatiri, fork it and push back changes :D

Rezolvarea la subiectul scris, partea de grilă:

1. a)

2. c)

3. d)

4. d)

5. d)

6. c) și d)

La scris: 7-12 identic cu ce s-a dat la grupa 213.  1-6 variatii pe aceasi temă.

La practic:

Pentru a înregistra produsele pe care doriți să le cumpărați, v-ați gândit să construiți un program după cum urmează.

  1. Arhi­tec­tura pro­gra­mu­lui este dată în figura de mai jos. Elementele ui, domain și repository vor fi im­ple­men­tate ca și module sau pachete. Pro­duct­Man­ag­er este co­or­do­na­torul acestei aplicații.
  2. Un produs (Product) are un nume (name - șir de caractere nevid) și o cantitate (quantity - întreg strict pozitiv). Produsele sunt memorate într-un fișier text. Aplicația va asocia fiecărui produs un număr unic de iden­ti­fi­care (id), generat automat.
  3. Interfața utilizator Pro­ductListafișează lista de produse (în ordine crescă­toare după numele produselor) și comenzile pe care le poate efectua uti­liza­torul (a se vedea co­men­tar­i­ul din partea dreapta a figurii de mai sus (mai jos în acest caz :D)).

    Product List (id, name, quantity)Ș
    1 Banane 3
    2 Lapte 4
    3 Paine 1
    
    Command: A - Add product; R - Remove Product
    
    A:
    Name: Lapte
    Quantity: 3
    
    R:
    Product id :1
  4. La aduăugarea unui produs se introduce numele și cantitatea dorită:

    • datele vor fi valide
    • dacă nu există deja în­reg­is­trat un produs cu acel nume, atunci se în­reg­istrează un produs nou, astfel se ac­tu­al­izează produsul existent, prin însumarea can­tităților;
    • după adăugare, se revine la afișarea listei de produse - punctul 3.
  5. La ștergerea unui produs, se întoarce id-ul acestuia:

    • produsul cu acest id este șters
    • după ștergere, se revine la afișarea listei de produse - punctul 3.
  6. După fiecare operație de adăugare sau ștergere (4/5), se va actualiza fișierul cu produse.

  7. Programul va forța uti­liza­torul să introducă numere întregi pentru quantity și id.

Oficiu - 1p

In­spectarea cod sursă - 4.5p

Execuție  - 4.5p

Și cu asta am scăpat :D/ Slavă Domnului, cu bine.

Sper că știți unde îi... la practic desigur.