gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
8bd58529210d0a76eade2f8485dcd8d95ea8a324
[spa1skripta-public.git] / todo.txt
1 --------------------------------------------------
2 Aleksandar Sarac
3 mail1:
4 Starija verzija procedure Anuliraj bi mogla da ostane, ako bi se napravile
5 promene u Puta i PolinomNaN.
6 Na primer, ovo je kod mene radilo:
8 PROCEDURE Puta(p1, p2: Polinom; VAR pr: Polinom);
9 VAR
10 pomocni: Polinom;
11 BEGIN
12 Anuliraj(pr);
13 pomocni := NIL;
14 IF (p1 <> NIL) AND (p2 <> NIL) THEN
16 Linija "pomocni := NIL;": bez nje je promenljiva "pomocni" imala neku
17 neobičnu vrednost s kojom se
18 procedura DisposePolinom bezveze prošetala memorijom, saplela se i oborila
19 program.
21 Ovakva procedura PolinomNaN mi je radila:
22 PROCEDURE PolinomNaN(p: Polinom; n: CARDINAL;
23 VAR rez: Polinom);
24 VAR
25 i: CARDINAL;
26 pom : Polinom;
27 BEGIN
28 IF n = 0 THEN
29 NEW(rez);
30 rez^.k := 1.0;
31 rez^.st := 0;
32 rez^.veza := NIL;
33 (* ELSIF n = 1 THEN
34 Kopiraj( p, rez );*)
35 ELSE
36 (*rez := p;*)
37 Kopiraj(p, rez); (* za n = 1 *)
38 FOR i := 2 TO n DO
39 Kopiraj(rez, pom);
40 (*Puta(rez, p, rez)*)
41 Puta(pom, p, rez);
42 Anuliraj(pom)
43 END
44 END
45 END PolinomNaN;
47 mail2:
48 U proceduri Puta je deklarisana promenljiva pomocni, koja, izgleda, dobije
49 vrednost koja god se našla u memoriji u tom trenutku. Zatim se
50 pozove MonomPuta(p1, p2, pomocni); i na samom početku te procedure se
51 poziva Anuliraj. Ako se u memoriji našlo nešto, pa pomocni nije NIL,
52 DisposePolinom pokuša da oslobodi memoriju s ko zna kakvim vrednostima
53 pokazivača i padne program. Mislim da je to problem jer procedura "proradi"
54 čim se na samom početku izvrši pomocni := NIL. Čini mi se da je glavni
55 problem to što kompajler dozvoljava upotrebu neinicijalizovanih promenljiva.
57 Isto, u proceduri Puta: poziva se MonomPuta(p1, p2, pomocni); u kojoj se
58 napravi novi polinom na koji pokazuje pomocni, pa se ubacuju monomi, ali se
59 ne oslobađa memorija.
61 REPEAT
62 UbaciMonom(pomocni, pr);
63 pomocni := pomocni^.veza
64 UNTIL pomocni = NIL;
66 Možda bi moglo, na primer, da se napiše procedura koja bi radila isto što
67 i pomocni := pomocni^.veza, ali bi i oslobađala memoriju:
69 PROCEDURE AnulirajPrvi(VAR p : Polinom);
70 VAR
71 pom : Polinom;
72 BEGIN
73 IF p # NIL THEN
74 pom := p;
75 p := p^.veza;
76 DISPOSE(pom)
77 END
78 END AnulirajPrvi;
80 pa bi kod ubacivanja monoma moglo da stoji:
82 REPEAT
83 UbaciMonom(pomocni, pr);
84 (*pomocni := pomocni^.veza*)
85 AnulirajPrvi(pomocni)
86 UNTIL pomocni = NIL;
88 doni:
89 zapravo bolje ovo poslednje sa SaberiNa i DisposePolinom
90 --------------------------------------------------
92 doni:srediti polinome jos malo
94 doni: liste - dodati nesto gde se brise vise elemenata u istom
95 prolazu.
97 doni:ubaciti negde primer kako radi Compare za stringove
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner