Informatica
Recursivitate - de tehnologie didacticaData: - Scoala: Colegiul National "Vasile Lucaciu", Baia Mare Disciplina: Informatica Clasa: a X- a Profesor: Unitatea de invatare: Recursivitate Subiectul: Aplicatii recursivitate tipul lectiei: consolidare si evaluare de cunostinte locul de desfasurare: sala 16, parter + laboratorul de informatica I, et. I Durata: 50 de minute + 50 de minute Obiectiv cadruAplicarea algoritmilor fundamentali in prelucrarea datelorObiective specifice Elevii vor trebui sa: O1. defineasca subprogramele recursive si sa descrie structura acestora O2. cunoasca modul de executie al algoritmilor recursivi prin parcurgerea acestora pas cu pas O3. cunoasca modul de alocare a memoriei si de transmitere a controlului la executia algoritmilor recursivi O4. elaboreze programul Pascal in care se utilizeaza iteratia/ recursivitatea Metode de invatamant: Explicatia, conversatia euristica, problematizarea, discutia, analiza, sinteza, exercitiul, modelarea, dialogul, programarea, demonstratia, lucrul la calculator Resurse materiale Fisa de lucru. Caiete. Tabla. Instrumente de scris. Computere. Videoproiector. Bibliografie Manualul Desfasurarea activitatii
Fisa de lucru nr. 1: Se considera programul urmator: program L; var a: integer; procedure p(b: integer; var c:integer); var d: integer; begin if b>0 then begin p(b-1, d); c:=b*d; end else c:=1; end; begin p( writeln(a); end. Precizati cu justificarea raspunsului ce va tipari programul de mai sus. Se da urmatorul program Pascal: program XXL; var a: integer; procedure mare( b: integer; var c: integer); var d: integer; begin d:=b+3; if b>0 then mare(b div 2, d); writeln(b, ' ', c, ' ', d);
c:=c+1; end; begin a:=4; mare( writeln(a); end. Precizati, cu justificarea raspunsului, ce tipareste programul de mai sus. Se considera urmatoarea functie definita recursiv: function mic(i: word): integer; begin if i=0 then mic:=0 else mic:=mic(i-1) + 2*i; end; a) Ce valoare va returna mic(7)? b) Dar mic(100)? Se considera programul urmator: var x, y: word; function f(a, b: word): word; begin if a<>b then if a>b then f:=f(a-b, b) else f:=f(a, b-a) else f:=x*y div a; end; begin writeln(f(x, y)); end. Ce valoare va fi afisata pentru setul de date de intrare x=32, y=14? Se considera urmatorul subprogram recursiv: function f(x: integer): integer; begin if x=0 then f:=0 else f:=f(x-1)+2*x-1; end; Pentru ce valoare a parametrului x functia f va intoarce valoarea 25? a) 10 b) 3 c) 15 d) 5 Care este valoarea returnata de functia urmatoare la apelul f(5)? function f(x: integer): integer; begin if x=0 then f:=0 else f:=f(x-1)+x*x; end; TESTUL SCURT PENTRU EVALUARE Tema pentru acasa: Se considera functia definita recursiv: function f(n: integer): boolean; begin if n=0 then f:=true else f:=((n mod 10) mod 2 = 0) and f(n div 10); end; Ce valoare va returna f(9248)? Ce valoare va returna functia definita la punctul 7, pentru n=8284? Alcatuiti textul problemei in conditiile itemilor 7 si 8. Scrieti o functie corespondenta iterativa. Explicatii Se va urmari comportamentul segmentului de date si cel al stivei:
adr - prescurtarea pentru adresa de revenire adr a - adresa din segmentul de date rezervata variabilei a Pe ecran va aparea: 24 Se va urmari comportamentul segmentului de date si cel al stivei:
adr - prescurtarea pentru adresa de revenire adr a - adresa din segmentul de date Pe ecran va aparea: mic(7) = mic(6) + 2*7 = mic(5) + 2*6 + 2*7 = = 2 * (7 + 6 + + 1) = 2 * = 2 * = 7 * 8 = 56 Urmarind modelul: mic(100) = 2 * = 2 * = 100 * 101 = 10100 Cmmmc(32, 14) = 224 d) f(5) = = = Rezolvarea testului de evaluare FALSE TRUE Creati o functie care sa verifice daca un numar contine cifre impare. function f(n:integer):boolean; var a:boolean; begin a:=true; while (n<>0) and (a) do if ((n mod 10) mod 2 = 0) then n:=n div 10 else a:=false; f:=a; end;
Barem de notare: 0,5p din oficiu 2,5p pentru fiecare problema 1 - 3, rezolvata corect 0,5p pentru fiecare eroare descoperita la intrebarea 4
|