Tehnici de programare Metoda trierii
Descriere <ul><li>Fie  P o problemă, soluţia căreia se află printre elementele mulţimii  S  cu un număr finit de elemente....
Schema de aplicare x  satisface  condiţia problemei  x      s 1 în  S  există  elemente necercetate STOP START Includem  ...
Problemă prototip <ul><li>Se consider ă  numerele naturale din mul ţ imea  { 1, 2, 3, ..., n } . S ă  se determine toate e...
Particularităţi de implementare <ul><li>Generarea şi cercetarea consecutivă a elementelor mulţimii  S . </li></ul><ul><li>...
Problemă <ul><li>S ă  se scrie un program care determin ă  toate secven ţ ele binare de lungime   n ,  fiecare din ele con...
Analiza problemei Num ă rul secven ţ e lor binare de lungime  n  este   2 n ,  finit .   (vezi:  Informatica, manual pentr...
Modelul matematic Elementele mulţimii  S  pot fi interpretate ca numere { 0, 1, 2, ..., 2 n -1 }, reprezentate pe  n  pozi...
Separarea subproblemelor Generarea secvenţelor binare de lungime  n   Determinarea numărului de unităţi în secvenţa curent...
Structuri de date <ul><li>tablou unidimensional cu  n   eleme nte, ce pot primi valoarea  0  sau  1 .  Pentru problema pro...
Algoritm <ul><li>Iniţializăm  va riabilele   n  şi  k , fişierul de ieşire, tabloul   B . </li></ul><ul><li>P asul 1 .  Ce...
Declaraţii Program   Triere ; const   nmax=20; type   secventa 01 = array [1..nmax]  of  0..1; var  b:secventa 01 ; r,i,n,...
Funcţii function  numara 1 :integer; var s,j:integer; begin s:=0; for  j:=1  to  n  do  s:=s+b[j]; numara 1 :=s; end;
Proceduri procedure  scrie; var   j: integer; begin   for  j:=1  to  n  do  write (f,b[j]);  writeln(f); end; procedure  u...
Blocul de calcul begin readln (n,k); assign (f,'OUT.TXT');rewrite(f); for  i:=1  to  n  do  b[i]:=0; repeat r:= numara 1 ;...
Literatura recomandată: <ul><li>Gremalschi  A .  Informatica.  Tehnici de programare, m anual pentru clasa a 11-a . Chi ş ...
Upcoming SlideShare
Loading in …5
×

Tehnici de programare_triere

3,130
-1

Published on

Published in: Education, Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,130
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
75
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Mulţimea S nu va mai conţine elemente necercetate după generarea secvenţei formate doar din uintăţi
  • Tehnici de programare_triere

    1. 1. Tehnici de programare Metoda trierii
    2. 2. Descriere <ul><li>Fie P o problemă, soluţia căreia se află printre elementele mulţimii S cu un număr finit de elemente. S={s 1 , s 2 , s 3 , ... , s n } </li></ul><ul><li>Soluţia se determină prin analiza fiecărui element s i din mulţimea S . </li></ul>
    3. 3. Schema de aplicare x satisface condiţia problemei x  s 1 în S există elemente necercetate STOP START Includem x în soluţie da x  un element necercetat din S da nu nu
    4. 4. Problemă prototip <ul><li>Se consider ă numerele naturale din mul ţ imea { 1, 2, 3, ..., n } . S ă se determine toate elementele acestei mul ţ imi, pentru care suma cifrelor este egal ă cu un num ă r dat m . </li></ul><ul><li>Schema de rezolvare </li></ul><ul><li>Pentru i de la 1 p î n ă la n : </li></ul><ul><ul><ul><li>Se calculează suma cifrelor numărul ui i . </li></ul></ul></ul><ul><ul><ul><li>Dacă suma cifrelor este egală cu m includem i în solu ţ ie </li></ul></ul></ul>
    5. 5. Particularităţi de implementare <ul><li>Generarea şi cercetarea consecutivă a elementelor mulţimii S . </li></ul><ul><li>Utilizarea funcţiilor şi procedurilor pentru fiecare din subproblemele: </li></ul><ul><ul><li>Verificarea apartenenţei elementului cercetat s i la soluţie </li></ul></ul><ul><ul><li>Plasarea elementului curent în soluţie </li></ul></ul><ul><ul><li>Generarea următorului element al mulţimii (dacă e necesar) </li></ul></ul>
    6. 6. Problemă <ul><li>S ă se scrie un program care determin ă toate secven ţ ele binare de lungime n , fiecare din ele con ţ in î nd nu mai pu ţ in de k cifre de 1 . </li></ul><ul><li>Intrare: numere naturale n , 1<n<20 , ş i k , k<n , se citesc de la tastatur ă . Ie ş ire: fiecare linie a fi ş ierului text OUT.TXT va con ţ ine câte o secven ţă binar ă distinct ă , ce corespunde condi ţ iilor din enun ţ ul problemei. </li></ul>
    7. 7. Analiza problemei Num ă rul secven ţ e lor binare de lungime n este 2 n , finit . (vezi: Informatica, manual pentru clasa X ) Prin urmare, pentru problema dat ă poate fi aplicat ă metoda trierii .
    8. 8. Modelul matematic Elementele mulţimii S pot fi interpretate ca numere { 0, 1, 2, ..., 2 n -1 }, reprezentate pe n poziţii binare. Pentru generarea consecutivă a secvenţelor binare se va utiliza formula: s 0 = 0; s i = s i-1 + 1; i=1, ..., 2 n -1
    9. 9. Separarea subproblemelor Generarea secvenţelor binare de lungime n Determinarea numărului de unităţi în secvenţa curentă Prelucrarea soluţiei curente Generarea secven ţ elor binare de lungime n cu r, r>k unităţi
    10. 10. Structuri de date <ul><li>tablou unidimensional cu n eleme nte, ce pot primi valoarea 0 sau 1 . Pentru problema propus ă n nu depăşeşte valoarea 20 . </li></ul><ul><li>fişier text pentru stocarea soluţiei . </li></ul>
    11. 11. Algoritm <ul><li>Iniţializăm va riabilele n şi k , fişierul de ieşire, tabloul B . </li></ul><ul><li>P asul 1 . Cercetarea secvenţei curente </li></ul><ul><ul><li>Se calculează numărul de unităţi ( r ) în secvenţa curentă B </li></ul></ul><ul><li>P asul 2 . Prelucrarea soluţiei </li></ul><ul><ul><li>Dacă r  k , secvenţa curentă B este înscrisă în fişierul de ieşire. </li></ul></ul><ul><li>P asul 3 . verificarea prezenţei secvenţelor necercetate </li></ul><ul><ul><li>Dacă r = n se închide fişierul de ieşire , apoi STOP . </li></ul></ul><ul><li>P asul 4 . Generarea secvenţei următoare </li></ul><ul><ul><li>Dacă B [n]=0 atunci B [n]  1 </li></ul></ul><ul><ul><li>î n caz contrar : i  n atât timp cât B [ i ] = 1 repetăm B [ i ]  0 ; i  i –1 ; pentru indicele curent i B [ i ]  1 </li></ul></ul><ul><ul><li>R ev e n im la P asul 1 . </li></ul></ul>
    12. 12. Declaraţii Program Triere ; const nmax=20; type secventa 01 = array [1..nmax] of 0..1; var b:secventa 01 ; r,i,n,k:integer; f:text;
    13. 13. Funcţii function numara 1 :integer; var s,j:integer; begin s:=0; for j:=1 to n do s:=s+b[j]; numara 1 :=s; end;
    14. 14. Proceduri procedure scrie; var j: integer; begin for j:=1 to n do write (f,b[j]); writeln(f); end; procedure urmator ( var x:secventa 01 ); var j :integer; begin j :=n; while x[ j ]=1 do begin x[ j ]:=0; j := j -1; end; x[ j ]:=1; end;
    15. 15. Blocul de calcul begin readln (n,k); assign (f,'OUT.TXT');rewrite(f); for i:=1 to n do b[i]:=0; repeat r:= numara 1 ; if r >= k then scrie; if r < n then urmator(b); until r=n; close(f); end.
    16. 16. Literatura recomandată: <ul><li>Gremalschi A . Informatica. Tehnici de programare, m anual pentru clasa a 11-a . Chi ş in ă u , Ştiinţa, 2003. </li></ul><ul><li>Cerchez Emanuela. Programarea î n limbajul C / C++ pentru liceu. Vol. I – III. Polirom, Iaşi, 2007 </li></ul>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×