Lab 2012

Petru Mihancea - Schedule and current situation

R/Gr. 1.1 1.2 1.3 2.1 2.2 Students with no group
Week 1 A110, Fri, 8.00 A110, Fri, 8.00 A110, Fri, 8.00 A110, Fri, 10.00 A110, Fri, 10.00
Week 2 A110, Fri, 8.00 A110, Fri, 8.00 A110, Fri, 8.00 A110, Fri, 10.00 A110, Fri, 10.00
Week 3 - - - - -
Week 4 A110, Fri, 8.00 A110, Fri, 8.00 A110, Fri, 8.00 A110, Fri, 10.00 A110, Fri, 10.00
Week 5 A110, Fri, 8.00 A110, Fri, 8.00 A110, Fri, 8.00 A110, Fri, 10.00 A110, Fri, 10.00
Week 6 B528, Fri, 8.00 B528, Fri, 8.00 B528, Fri, 8.00 B528, Fri, 10.00 B528, Fri, 10.00 B528, Fri, 10.00
Week 7 B528, Fri, 8.00 B528, Fri, 8.00 - B528, Fri, 10.00 B528, Fri, 10.00 -
Week 8 - - B528, Fri, 8.00 - - B528, Fri, 8.00
Week 9 B528, Fri, 8.00 B528, Fri, 8.00 - B528, Fri, 10.00 B528, Fri, 10.00 -
Week 10 - - - - - -
Week 11 - - B528, Fri, 8.00 - - B528, Fri, 8.00
Week 12 Lucrari nepredate, B528, Fri, 8.00, 10.00

Announcements

28.01.2013 - Vineri (1.02.2013) ora 13 in B514 , va pot raspunde la neclaritati etc legate de materie.

03.01.2013 - Friday (11.01, 8.00-12.00, B528), I will answer your questions regarding the course

19.10.2012 - Friday (21.12, 8.00-12.00), I will answer your questions regarding the course

26.10.2012 - Starting with week 6, the seminar class schedule is changed (see the table). The room will be B528.

04.10.2012 - On 11.10.2012 (Week 3) the seminar classes will not be held. Your teacher accompanies the UPT teams at The SouthEastern European Regional Contest of the ACM International Collegiate Programming Contest in Bucharest.

27.09.2012 - Pentru incheierea seminarului trebuie sa aveti minim 4 prezente la seminar (dintr-un maxim de aprox. 7), sa predati lucrarile cerute dupa programul indicat (aprox. 2), si sa aveti la ele media de trecere.

24.09.2012 - New site online.

(:googleplusone url="https://plus.google.com/u/0/b/116817908744380909499/116817908744380909499":)


7. Programe cu arbori binari (Nota 2; lucrarile nepredate se mai pot preda in sapt. 12 cu penalizare de 2 pct)

  • Descarcati scheletul de program de aici
  • Implementati recursiv urmatoarele proceduri si functii:
    • inordine:BinTrees[Z], ce tipareste pe ecran in inordine nodurile arborelui dat ca argument
    • preordine:BinTrees[Z], ce tipareste pe ecran in preordine nodurile arborelui dat ca argument
    • postordine:BinTrees[Z], ce tipareste pe ecran in postordine nodurile arborelui dat ca argument
    • height:BinTrees[Z] -> N, ce intoarce inaltimea arborelui dat ca argument
    • Observatii: BinTrees[Z] in programul vostru va fi BinaryIntTree; arborele gol este emptyBinaryIntTree; aveti deja definite functiile root, left, si right; pt. cei care au facut programare in liceu: nu se umbla la structura arborelui ci se folosesc functiile root, left, right

6. Programe cu liste (Nota 1; lucrarile nepredate se mai pot preda in sapt. 12 cu penalizare de 1 pct)

  • Descarcati scheletul de program de aici
  • Implementati recursiv urmatoarele 3 functii:
    • length:List[Z] - > N, reprezentand lungimea listei data ca argument
    • elementePare:List[Z] -> N, intorcand numarul de elemente pare ce apar in lista data ca argument
    • listaElementelorPare:List[Z] -> List[Zp], intorcand o lista ce contine toate elementele pare ce apar in lista data ca argument
    • Observatii: List[Z] in programul vostru va fi IntList; lista goala e emptyIntList; in C operatorul % intoarce restul impartirii unui numar la un numar; pt. cei care au facut programare in liceu: nu se umbla la structura listei ci se folosesc functiile tail, head, cons.

5. Antrenament implementare functii in C

  • Descarcati exemplul de program de aici
  • Porniti editorul Kate (meniul KMenu->Utilities->Kate) si deschideti fisierul descarcat anterior
  • Cititi exemplele + atentie la eventualele explicatii
  • Compilati si rulati exemplul
    • In Kate in partea de jos exista un meniu/buton denumit Terminal. Apasati pe el pentru a deschide un terminal
    • Compilarea
      • In Terminal dati comanda gcc -Wall -o nume_fisier_executabil nume_fisier_program
      • Exemplu: gcc -Wall -o programulMeu numbers.c
    • Rularea
      • In Terminal dati comanda ./nume_fisier_executabil
      • Exemplu: ./programulMeu
  • Implementati si rulati in scheletul de program
    • Functia recursiva factorial:N->N, unde factorial(n) intoarce n!. In main, tipariti rezultatul factorial(5).
    • Functia recursiva fib:N->N, unde fib(n) este al n-lea numar fibonacii. In main, tipariti al 5-lea numar fibonacii.
    • Observatie 1: De cate ori modificati codul sursa, nu uitati sa salvati si sa recompilati programul
    • Observatie 2: Pentru cei care au mai facut programare in liceu - nu folositi variabile locale ori globale

4. Graph traversals

3. Some problems with lists and recursive functions over lists

2. Some problems with recursive functions over natural numbers + countable & uncountable

1. Some problems with sets