Lab
2017/2018
Notele de la seminar si laborator sunt disponibile aici
1. Some problems with sets
2. Some problems with recursive functions over natural numbers + countable & uncountable
3. Test + Some problems with lists and recursive functions over lists
4. Some problems with lists and recursive functions over lists + Graph traversals
5. Graph traversals + Tree traversals + some problems with trees and recursive functions over trees
6. Test + Recap
7. 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
- Atentie: unde e spatiu se pune spatiu !
- Rularea
- In Terminal dati comanda ./nume_fisier_executabil
- Exemplu: ./programulMeu
- Definiti pe foaie (ca la curs/seminar) functiile recursive de mai jos, apoi implementati si rulati in scheletul de program (definitia e initial in forma pattern matching si apoi o aduceti la forma conditionala cu reguli if-then-else)
- 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: Pentru verificare, functiile sunt definite in curs (dar faceti-le voi de mana prima data)
- Observatie 2: De cate ori modificati codul sursa, nu uitati sa salvati si sa recompilati programul
- Observatie 3: Pentru cei care au mai facut programare in liceu - nu folositi variabile locale ori globale
8. Programe cu liste
- Descarcati scheletul de program de aici
- Definiti pe foaie (ca la curs/seminar) functiile recursive de mai jos, apoi implementati si rulati in scheletul de program (definitia e initial in forma pattern matching si apoi o aduceti la forma conditionala cu reguli if-then-else):
- 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; pt. cei care au facut programare in liceu: nu se umbla la structura listei ci se folosesc functiile tail, head, cons.
9. Programe cu arbori binari
- Descarcati scheletul de program de aici
- Definiti pe foaie (ca la curs/seminar) functiile/procedurile recursive de mai jos, apoi implementati si rulati in scheletul de program (definitia e initial in forma pattern matching si apoi o aduceti la forma conditionala cu reguli if-then-else):
- postordine:BinTrees[Z], ce tipareste pe ecran in postordine nodurile arborelui binar 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