Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica


Informatica


Qdidactic » stiinta & tehnica » informatica
Recursivitate - de tehnologie didactica



Recursivitate - de tehnologie didactica







Data: -

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 cadru

Aplicarea algoritmilor fundamentali in prelucrarea datelor

Obiective 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

Etapa

Activitatea desfasurata

Strategie didactica

Pregatirea clasei pentru lectie (2')

Prezenta; organizarea lectiei

Dialogul

Recapitularea/ Fixarea cunostintelor (20')

In ultimele lectii au fost asimilate noi tipuri de functii: recursive. Vom fac o scurta rezumare a lor.

"Recursivitate". Cum o definim? O functie care contine in corpul ei apel/ apeluri la ea insasi, adica se autoapeleaza, se numeste functie recursiva (recurenta, in termeni matematici).

Totusi, o functie recursiva, se apeleaza prima data din afara ei, dupa care se autoapeleaza de un anumit numar de ori. La fiecare autoapelare a functiei se executa din nou secventa de instructiuni din corpul functiei, eventual cu alte date, creandu-se un lant de autoapeluri.

Structura unui subprogram recursiv arata astfel:


subprogram nume (parametri - lista parametri formali)          

lista variabile locale;

begin

secventa_de_instr;

nume(parametri);

secventa_de_instr;

end;


Putem spune ca un algoritm recursiv are acelasi efect cu cel al unui ciclu. Astfel ca, la fel ca si ciclurile, este necesar ca repetarea sa nu aiba loc la infinit. Pentru a nu se executa functia la infinit trebuie sa existe cel putin o conditie de oprire.

Varianta de rezolvare cu ajutorul functiilor recursive este recomandata pentru problemele definite prin relatii de recurenta, deoarece permit o formulare mai clara si mai concisa.

Dezavantaje ale utilizarii functiilor recursive:

sunt mai greu de urmarit

necesita un timp de executie mai lung

necesita un spatiu de memorare mai mare

Orice functie recursiva trebuie sa indeplineasca doua cerinte:

sa se poata executa cel putin o data fara a se autoapela

toate autoapelurile sa se execute astfel incat sa se tinda spre indeplinirea conditiei de executie fara autoapelare.

Conversatia euristica, dialogul, discutia, explicatia

Aplicatii


Pentru intarirea/ consolidarea efectului rezumarii, se propune fisa de lucru din anexa.

Se explica pe larg/ detaliat conform fisei.

Testul propus la finalul lectiilor se va incadra in 15 minute.

Explicatia, conversatia euristica, problematizarea, discutia, analiza, sinteza, exercitiul, modelarea, dialogul, programarea, demonstratia

Tema pentru acasa (3')

Se stabileste tema conform aceleiasi fise.

Profesorul  da indicatii cu privire la tema pentru acasa


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(4, a);

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(10, a);

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:

Segmentul de date

Stiva

a

adr


b


c

adr a

d



adr


b


c

adr a

d



adr


b


c

adr a

d



adr


b


c

adr a

d



adr


b


c

adr a

d


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:

Segmentul de date

Stiva

a

adr


b


c

adr a

d




adr


b


c

adr a

d




adr


b


c

adr a

d




adr


b


c

adr a

d




adr


b


c

adr a

d



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;





Test de evaluare

subiecte)

Numele si prenumele: _________________

(rezolvari)

1. Ce va afisa urmatorul program?


procedure f(n:integer);

var i:integer;

begin

if n>0 then begin

writeln;

for i:=1 to n do write('*');

f(n-1);

end;

end;

begin

f(5);

end.






2. Scrieti intr-o fraza ce se calculeaza prin urmatoarea functie.


function f(n:integer):integer;

begin

if n=0 then f:=0

else f:=(n mod 10)+f(n div 10);

end;


3. Scrieti o functie recursiva pentru urmatorul exemplu:

f(x) = f(x+1) + (-1)x+1 * x

f(1) = 1










4. "Calculati suma numerelor naturale pana la 40." este textul problemei pentru urmatorul program, propus ca exemplu la capitolul recursivitate. In rezolvare s-au strecurat 4 erori. Care sunt acestea?


function f(n:integer):integer

begin

if n=0 then f:=0

else a:=n-f(n-1);

end;

begin

writeln(f(44));

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



Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright