gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
polinomL - novija verzija
[spa1skripta-public.git] / skripta-spa1.tex
index 46328d0..a3a387f 100644 (file)
@@ -211,6 +211,7 @@ Module 2.
 \subsection{Zadatak: Pronaći sve pitagorine
 trojke do zadate granice}
 
+Pitagorina trojka su tri broja $a,b,c$ za koje važi $a^2 + b^2 = c^2\\$
 
 \begin{lstlisting}[style=codeblock]
 MODULE Trojke1;
@@ -269,6 +270,25 @@ BEGIN
 END Trojke2.
 \end{codeblock}
 
+Sledeći primer koristi Euklidovu teoremu i malo drugačiji pristup.
+Ako uzmemo neka dva prirodna broja $m$ i $n$, tada se iz njih može
+izvesti jedna Pitagorina trojka koja lako zadovoljava potrebne uslove:
+\[
+\begin{array}{l}
+a = 2mn\\
+b = m^2 - n^2\\
+c = m^2 + n^2
+\end{array}
+\]
+Odnosno kad probamo da proverimo da li je ovo
+Pitagorina trojka dobijamo:
+\[
+\begin{array}{r@=l}
+a^2 + b^2 & c^2\\
+(2mn)^2 + (m^2 - n^2)^2 & (m^2 + n^2)^2
+\end{array}
+\]
+
 \begin{codeblock}
 MODULE Trojke3;
 (* Pitagorine trojke koriscenjem teoreme *)
@@ -295,6 +315,8 @@ BEGIN
 END Trojke3.
 \end{codeblock}
 
+Sledeća dva metoda traže trojke sa nekim specifičnim osobinama.
+
 \begin{codeblock}
 MODULE Trojke4;
 (* Pitagorine trojke kod kojih je razlika
@@ -542,7 +564,8 @@ END MaxNiza4.
 \subsection{Modul FIO}
 
 U ovom modulu je definisan tip \kod{File}, koji predstavlja jedan fajl
-sa kojim radimo.
+sa kojim radimo. Da bi ga koristili moramo ga uvesti u program (isto
+kao što uvozimo i komande).
 
 \begin{quote}U primerima se pretpostavlja da je ``f'' tipa \kod{File}, ``str'' niz
 znakova, ``i'' tipa \kod{INTEGER}, ``c'' tipa \kod{CARDINAL} i ``ch''
@@ -1561,6 +1584,8 @@ END PolinomL.
 \paragraph{PolinomL.MOD} \ 
 
 \begin{codeblock}
+(* Modul za rad sa polinomima preko listi
+   verzija 2012, rev 1 *)
 IMPLEMENTATION MODULE PolinomL;
 FROM InOut IMPORT Write, WriteString, WriteLn,
            WriteCard, ReadCard, Done;
@@ -1569,13 +1594,10 @@ FROM Storage IMPORT ALLOCATE, DEALLOCATE;
 
 PROCEDURE Anuliraj(VAR p: Polinom);
 BEGIN
-  IF p # NIL THEN
-    DisposePolinom(p);
-  END;
+  p := NIL;
 END Anuliraj;
 
-PROCEDURE Kopiraj(p: Polinom;
-                  VAR kopija: Polinom);
+PROCEDURE Kopiraj(p: Polinom; VAR kopija: Polinom);
 VAR
   pomocni: Polinom;
 BEGIN
@@ -1636,8 +1658,7 @@ BEGIN
   END
 END Stampaj;
 
-PROCEDURE UbaciMonom(mon :Polinom; 
-                     VAR p: Polinom);
+PROCEDURE UbaciMonom(mon:Polinom; VAR p: Polinom);
 VAR
   stari, tekuci, kopija: Polinom;
 BEGIN
@@ -1656,8 +1677,7 @@ BEGIN
     ELSE
       stari^.veza := kopija
     END;
-    IF (tekuci#NIL) AND 
-           (kopija^.st = tekuci^.st) THEN
+    IF (tekuci#NIL) AND (kopija^.st = tekuci^.st) THEN
       kopija^.k := kopija^.k + tekuci^.k;
       kopija^.veza := tekuci^.veza;
       DISPOSE(tekuci);
@@ -1689,17 +1709,17 @@ BEGIN
     NEW(novi);
     WITH novi^ DO
       REPEAT
-        WriteString('koeficijent monoma br.');
+        WriteString('Unesite koeficijent monoma br.');
         WriteCard(i, 1);
-        WriteString(' (<> 0):');
+        WriteString(' (<> 0) ');
         ReadReal(k);
         WriteLn
       UNTIL k <> 0.0;
       REPEAT
         WriteLn;
-        WriteString('eksponent monoma br.');
+        WriteString('Unesite eksponent monoma br.');
         WriteCard(i, 1);
-        WriteString(' (>= 0): ');
+        WriteString(' (>=0) ');
         ReadCard(st);
       UNTIL Done;
       WriteLn;
@@ -1709,8 +1729,7 @@ BEGIN
   END
 END Unos;
 
-PROCEDURE Saberi(p1, p2: Polinom; 
-                 VAR zbir: Polinom);
+PROCEDURE Saberi(p1, p2: Polinom; VAR zbir: Polinom);
 BEGIN
   Kopiraj(p1, zbir);
   WHILE p2 <> NIL DO
@@ -1719,8 +1738,7 @@ BEGIN
   END
 END Saberi;
 
-PROCEDURE SaberiNa(p: Polinom; 
-                   VAR rez: Polinom);
+PROCEDURE SaberiNa(p: Polinom; VAR rez: Polinom);
 BEGIN
   WHILE p <> NIL DO
     UbaciMonom(p,rez);
@@ -1739,8 +1757,7 @@ BEGIN
   END
 END PromeniZnak;
 
-PROCEDURE Oduzmi(p1,p2: Polinom; 
-                 VAR razlika: Polinom);
+PROCEDURE Oduzmi(p1,p2: Polinom; VAR razlika: Polinom);
 BEGIN
   Kopiraj(p2, razlika);
   PromeniZnak(razlika);
@@ -1750,8 +1767,7 @@ BEGIN
   END
 END Oduzmi;
 
-PROCEDURE MonomPuta(p, mon: Polinom; 
-                    VAR mp: Polinom);
+PROCEDURE MonomPuta(p, mon: Polinom; VAR mp: Polinom);
 VAR
   tekuci: Polinom;
 BEGIN
@@ -1792,9 +1808,7 @@ BEGIN
   END
 END Puta;
 
-PROCEDURE Kolicnik(p1, p2: Polinom; 
-                   VAR kol, ost: Polinom; 
-                   VAR ok: BOOLEAN);
+PROCEDURE Kolicnik(p1, p2: Polinom; VAR kol, ost: Polinom; VAR ok: BOOLEAN);
 
   PROCEDURE Deli(VAR kol, ost: Polinom);
   VAR
@@ -1837,7 +1851,7 @@ BEGIN
     rez^.st := 0;
     rez^.veza := NIL;
   ELSIF n = 1 THEN
-    Kopiraj( rez, p );
+       Kopiraj( p, rez );
   ELSE
     rez := p;
     FOR i := 2 TO n DO
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner