gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
pocetak nove verzije;poboljsani fontovi; komande za lako prebacivanje iz jedne u...
[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 vlada:dodati teoremu o pitagorinim trojkama i mozda jos
98 neka objasnjenja
100 doni:ubaciti negde primer kako radi Compare za stringove
102 ----------------------------
103 mils:mozda bi to dodatu funkciju SaberiNa
104 trebalo inkorporirati u zadatak 4.2 (jedan polinom manje sto se potrosnje
105 memorije tice i jedan Dispose manje sto se procesora tice).
107 ----------------------------
108 da li dodati i druge slicne procedure osim SaberiNa?
110 doni:diskuijom zakljuceno da je ovo valjda i dosta, tj da je dovoljno
111 za demonstraciju.
112 ---------------------------
113 StekTip i RedOpslTip umesto Stack i Queue
115 doni:uradjeno
116 ----------------------------
117 Polinomi - redosled parametara jos malo unormaliti? kopija je nekako kontra?
118 optimizacije u vezi oslobadjanja memorije - Anuliraj bi mogao zvati Dispose
119 za svaki slucaj. Saberi i slicno bi isto mogli biti izmenjeni.
120 Mozda cak da bude SaberiNa(sab:Polinom; VAR rez:Polinom) pa da
121 sve bude u tom jednom, da se ne bi bacala memorija kad je sab(rez,sab,rez).
123 doni:uradjeno
125 ----------------------
126 Radacha:
127 - na vise mesta imamo niz naredbi:
128 Read(ch);
129 Write(ch);
130 Sve Write-ove treba pobrisati da bi kod imao smisla na XDS Moduli.
132 - ponegde se javlja tip LONGCARD, pa se jos mixuje sa CARDINAL tako
133 sto se radi cast oblika LONGCARD(x), sto na XDS Moduli ne moze.
134 Valjalo bi sve LONGCARD-e izbaciti, posto su na XDS-u ionako isti
135 kao CARDINAL.
137 doni:ovo je sredjeno
138 ------------------------
139 Igor Sarcevic - bug submit: (patched)
140 --------------
141 Pozivom *PolinomNaN( p, 1 , rez )* procedura vraca *rez* koji je pokazivac
142 na strukturu na koju pokazuje *p*
145 greshka se nalazi u 12. redu poshto u sluchaju da je n = 1 for petlja ne
146 izvrshi ni jednom pa se stim ni ne kopira p u rez
148 PROCEDURE PolinomNaN(p: Polinom; n: CARDINAL;
149 VAR rez: Polinom);
150 VAR
151 i: CARDINAL;
152 BEGIN
153 IF n = 0 THEN
154 NEW(rez);
155 rez^.k := 1.0;
156 rez^.st := 0;
157 rez^.veza := NIL;
158 ELSE
159 *rez := p;*
160 FOR i := 2 TO n DO
161 Puta(rez, p, rez)
162 END
163 END;
164 END PolinomNaN;
167 jednostavan patch :
169 PROCEDURE PolinomNaN(p: Polinom; n: CARDINAL;
170 VAR rez: Polinom);
171 VAR
172 i: CARDINAL;
173 BEGIN
174 IF n = 0 THEN
175 NEW(rez);
176 rez^.k := 1.0;
177 rez^.st := 0;
178 rez^.veza := NIL;
179 * ELSIF n = 1 THEN*
180 * Kopiraj( rez, p );*
181 ELSE
182 rez := p;
183 FOR i := 2 TO n DO
184 Puta(rez, p, rez)
185 END
186 END;
187 END PolinomNaN;
190 mozda u sushtini nema smisla stepenovati na stepen 1 , ali recimo u
191 izvodjenju procedure kompozicija ima ( inache pochne program da brljavi kao
192 meni na vezbama )
194 doni:patchovano
196 -----------------------
197 Radacha2:
199 evo necega za PolinomL: u procedurama Unos i Deli posle poziva
200 procedure UbaciMonom treba ubaciti DISPOSE(novi), da ne curi memorija.
202 doni:patchovano
203 -----------------------
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner