gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Cas01 preimenovan, dodate XDS verzije koda
authorDoni Pracner <quinnuendo@gmail.com>
Mon, 21 Oct 2013 12:44:36 +0000 (14:44 +0200)
committerDoni Pracner <quinnuendo@gmail.com>
Mon, 21 Oct 2013 12:44:36 +0000 (14:44 +0200)
01. Dvosmerni Recnik/Prezentacija.ppt [new file with mode: 0644]
01. Dvosmerni Recnik/TopSpeed/RECNIKAT.DEF [new file with mode: 0644]
01. Dvosmerni Recnik/TopSpeed/RECNIKAT.MOD [new file with mode: 0644]
01. Dvosmerni Recnik/TopSpeed/RECNIKTE.MOD [new file with mode: 0644]
01. Dvosmerni Recnik/XDS/RECNIKATP.DEF [new file with mode: 0644]
01. Dvosmerni Recnik/XDS/RECNIKATP.MOD [new file with mode: 0644]
01. Dvosmerni Recnik/XDS/RECNIKTEST.MOD [new file with mode: 0644]
Cas01/Prezentacija.ppt [deleted file]
Cas01/RECNIKAT.DEF [deleted file]
Cas01/RECNIKAT.MOD [deleted file]
Cas01/RECNIKTE.MOD [deleted file]

diff --git a/01. Dvosmerni Recnik/Prezentacija.ppt b/01. Dvosmerni Recnik/Prezentacija.ppt
new file mode 100644 (file)
index 0000000..6ff7ded
Binary files /dev/null and b/01. Dvosmerni Recnik/Prezentacija.ppt differ
diff --git a/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.DEF b/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.DEF
new file mode 100644 (file)
index 0000000..92a237a
--- /dev/null
@@ -0,0 +1,42 @@
+DEFINITION MODULE RecnikATP;\r
+\r
+  CONST\r
+    Broj = 11; (* Neki prost broj *)\r
+    MaxDuzRec = 50;\r
+    MaxTabela = Broj - 1;\r
+\r
+  TYPE\r
+    String = ARRAY [1 .. MaxDuzRec] OF CHAR;\r
+    Lista = POINTER TO Element;\r
+    Element = RECORD\r
+                Veza, Prevod: Lista;\r
+                Rec: String;\r
+            END;\r
+    Indeksi = [0 .. MaxTabela];\r
+    Tabela = ARRAY Indeksi OF Lista;\r
+    Recnik = RECORD\r
+               BrojReci: CARDINAL;\r
+               Domace, Strane: Tabela;\r
+             END;\r
+\r
+  PROCEDURE Inicijalizuj(VAR R: Recnik);\r
+  PROCEDURE Unisti(VAR R: Recnik);\r
+\r
+  PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
+                  VAR R: Recnik;\r
+                  VAR Duplikat: BOOLEAN);\r
+\r
+  PROCEDURE Izbaci(Rec: String;\r
+                   VAR R: Recnik;\r
+                   Domaca: BOOLEAN;\r
+                   VAR Ok: BOOLEAN);\r
+\r
+  PROCEDURE Prevedi(StranaNaDomacu: BOOLEAN;\r
+                    Rec: String;\r
+                    VAR Prevod: String;\r
+                    VAR R: Recnik;\r
+                    VAR Ok: BOOLEAN);\r
+\r
+  PROCEDURE Sadrzaj(VAR R: Recnik);\r
+\r
+END RecnikATP.\r
diff --git a/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.MOD b/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.MOD
new file mode 100644 (file)
index 0000000..1977893
--- /dev/null
@@ -0,0 +1,186 @@
+IMPLEMENTATION MODULE RecnikATP;\r
+\r
+  FROM IO IMPORT\r
+    RdKey, WrStr, WrLn, WrCard;\r
+  FROM SYSTEM IMPORT\r
+    TSIZE;\r
+  FROM Str IMPORT\r
+    Compare;\r
+  FROM Storage IMPORT\r
+    ALLOCATE, DEALLOCATE;\r
+\r
+  PROCEDURE Hash(Rec: String): Indeksi;\r
+    VAR\r
+      i, Zbir, Temp: CARDINAL;\r
+  BEGIN\r
+    Zbir:= 0;\r
+    i:= 1;\r
+    WHILE (i <= MaxDuzRec) AND (Rec[i] # CHR(0)) DO\r
+      Temp:= (ORD(Rec[i]) * ORD(Rec[i])) MOD Broj;\r
+      Zbir:= (Zbir + Temp) MOD Broj;\r
+      INC(i);\r
+    END;\r
+    RETURN Zbir;\r
+  END Hash;\r
+\r
+  PROCEDURE Inicijalizuj(VAR R: Recnik);\r
+    VAR\r
+      i: Indeksi;\r
+  BEGIN\r
+    WITH R DO\r
+      BrojReci:= 0;\r
+      FOR i := 0 TO MaxTabela DO\r
+        NEW(Domace[i]);\r
+        Domace[i]^.Veza := Domace[i];\r
+        NEW(Strane[i]);\r
+        Strane[i]^.Veza := Strane[i]\r
+      END;\r
+    END;\r
+  END Inicijalizuj;\r
+\r
+  PROCEDURE Unisti(VAR R: Recnik);\r
+    VAR\r
+      i: Indeksi;\r
+      Tekuci: Lista;\r
+  BEGIN\r
+    FOR i:= 0 TO MaxTabela DO\r
+      WHILE R.Domace[i] # R.Domace[i]^.Veza DO\r
+        Tekuci:= R.Domace[i]^.Veza;\r
+        R.Domace[i]^.Veza:= Tekuci^.Veza;\r
+        DISPOSE(Tekuci);\r
+      END;\r
+      DISPOSE(R.Domace[i]);\r
+      WHILE R.Strane[i] # R.Strane[i]^.Veza DO\r
+        Tekuci:= R.Strane[i]^.Veza;\r
+        R.Strane[i]^.Veza:= Tekuci^.Veza;\r
+        DISPOSE(Tekuci);\r
+      END;\r
+      DISPOSE(R.Strane[i]);\r
+    END;\r
+  END Unisti;\r
+\r
+  PROCEDURE Nadji(VAR Rec: String;\r
+                  VAR Tab: Tabela;\r
+                  VAR Prethodni: Lista;\r
+                  VAR Nadjen: BOOLEAN);\r
+    VAR\r
+      Pozicija: Indeksi;\r
+  BEGIN\r
+    Pozicija:= Hash(Rec);\r
+    Prethodni:= Tab[Pozicija];\r
+    Prethodni^.Rec:= Rec;\r
+    IF Prethodni^.Veza = Prethodni THEN\r
+      Nadjen:= FALSE;\r
+    ELSE\r
+      WHILE Compare(Prethodni^.Veza^.Rec, Rec) # 0 DO\r
+        Prethodni:= Prethodni^.Veza;\r
+      END;\r
+      Nadjen:= Prethodni^.Veza # Tab[Pozicija]\r
+    END;\r
+  END Nadji;\r
+\r
+  PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
+                  VAR R: Recnik;\r
+                  VAR Duplikat: BOOLEAN);\r
+    VAR\r
+      NadjenDom, NadjenStr: BOOLEAN;\r
+      PrethodniDom, PrethodniStr, PomDom, PomStr: Lista;\r
+  BEGIN\r
+\r
+    Nadji(DomacaRec, R.Domace, PrethodniDom, NadjenDom);\r
+    Nadji(StranaRec, R.Strane, PrethodniStr, NadjenStr);\r
+\r
+    IF NadjenDom OR NadjenStr THEN\r
+      Duplikat:= TRUE;\r
+    ELSE\r
+\r
+      Duplikat := FALSE;\r
+\r
+      NEW(PomDom);\r
+      PomDom^.Rec:= DomacaRec;\r
+      PomDom^.Veza:= PrethodniDom^.Veza;\r
+      PrethodniDom^.Veza:= PomDom;\r
+\r
+      NEW(PomStr);\r
+      PomStr^.Rec:= StranaRec;\r
+      PomStr^.Veza:= PrethodniStr^.Veza;\r
+      PrethodniStr^.Veza:= PomStr;\r
+\r
+      PomDom^.Prevod:= PomStr;\r
+      PomStr^.Prevod:= PomDom;\r
+\r
+      INC(R.BrojReci);\r
+\r
+    END;\r
+  END Ubaci;\r
+\r
+  PROCEDURE Izbaci(Rec: String;\r
+                   VAR R: Recnik;\r
+                   Domaca: BOOLEAN;\r
+                   VAR Ok: BOOLEAN);\r
+    VAR\r
+      Prethodni, Prethodni2, Temp, Temp2: Lista;\r
+  BEGIN\r
+\r
+    IF Domaca THEN\r
+      Nadji(Rec, R.Domace, Prethodni, Ok);\r
+    ELSE\r
+      Nadji(Rec, R.Strane, Prethodni, Ok);\r
+    END;\r
+\r
+    IF Ok THEN\r
+\r
+      Temp:= Prethodni^.Veza;\r
+      Prethodni^.Veza:= Temp^.Veza;\r
+\r
+      Temp2:= Temp^.Prevod;\r
+      Prethodni2:= Temp2^.Veza;\r
+      WHILE Prethodni2^.Veza # Temp2 DO\r
+        Prethodni2:= Prethodni2^.Veza;\r
+      END;\r
+      Prethodni2^.Veza:= Temp2^.Veza;\r
+\r
+      DISPOSE(Temp);\r
+      DISPOSE(Temp2);\r
+\r
+      DEC(R.BrojReci);\r
+    END;\r
+  END Izbaci;\r
+\r
+  PROCEDURE Prevedi(StranuNaDomacu: BOOLEAN;\r
+                    Rec: String;\r
+                    VAR Prevod: String;\r
+                    VAR R: Recnik;\r
+                    VAR Ok: BOOLEAN);\r
+    VAR\r
+      Prethodni: Lista;\r
+  BEGIN\r
+    IF StranuNaDomacu THEN\r
+      Nadji(Rec, R.Strane, Prethodni, Ok);\r
+    ELSE\r
+      Nadji(Rec, R.Domace, Prethodni, Ok);\r
+    END;\r
+    IF Ok THEN\r
+      Prevod:= Prethodni^.Veza^.Prevod^.Rec;\r
+    END\r
+  END Prevedi;\r
+\r
+  PROCEDURE Sadrzaj(VAR R: Recnik);\r
+    VAR\r
+      i: Indeksi;\r
+      Tekuci: Lista;\r
+  BEGIN\r
+    WrStr('Sadrzaj recnika:');\r
+    FOR i:= 0 TO MaxTabela DO\r
+      Tekuci:= R.Domace[i]^.Veza;\r
+      WHILE Tekuci# R.Domace[i] DO\r
+        WrLn;\r
+        WrStr(Tekuci^.Rec);\r
+        WrStr(' --------- ');\r
+        WrStr(Tekuci^.Prevod^.Rec);\r
+        Tekuci:= Tekuci^.Veza;\r
+      END;\r
+    END;\r
+  END Sadrzaj;\r
+\r
+END RecnikATP.\r
diff --git a/01. Dvosmerni Recnik/TopSpeed/RECNIKTE.MOD b/01. Dvosmerni Recnik/TopSpeed/RECNIKTE.MOD
new file mode 100644 (file)
index 0000000..5358707
--- /dev/null
@@ -0,0 +1,116 @@
+MODULE RecnikTest;\r
+\r
+  FROM RecnikATP IMPORT\r
+    String, Recnik, Inicijalizuj, Ubaci, Izbaci, Sadrzaj, Prevedi, Unisti;\r
+  FROM IO IMPORT\r
+    WrLn, WrStr, RdStr, WrCard, RdKey, WrChar;\r
+  FROM Window IMPORT\r
+    Clear;\r
+\r
+  VAR\r
+    R: Recnik;\r
+    Rec, Prevod: String;\r
+    Izbor, Izb: CHAR;\r
+    Ok, Duplikat, Domaca, StrNaDom: BOOLEAN;\r
+\r
+  PROCEDURE Meni(VAR Izbor: CHAR);\r
+    TYPE\r
+      Slova = SET OF CHAR;\r
+    VAR\r
+      i: CARDINAL;\r
+  BEGIN\r
+    Clear;\r
+    FOR i:= 1 TO 8 DO\r
+      WrLn;\r
+    END;\r
+    WrStr('                   P --- prevod reci'); WrLn;\r
+    WrStr('                   B --- broj reci u recniku'); WrLn;\r
+    WrStr('                   U --- ubacivanje nove reci i njenog prevoda u recnik'); WrLn;\r
+    WrStr('                   I --- izbacivanje reci i njenog prevoda iz recnika'); WrLn;\r
+    WrStr('                   S --- sekvencijalni prikaz recnika'); WrLn;\r
+    WrStr('                   Q --- kraj rada');\r
+    REPEAT\r
+      Izbor:= CAP(RdKey());\r
+    UNTIL Izbor IN Slova {'P', 'B', 'U', 'I', 'S', 'Q'};\r
+    Clear;\r
+  END Meni;\r
+\r
+  PROCEDURE Pauza;\r
+    VAR\r
+      Ch: CHAR;\r
+  BEGIN\r
+    Ch:= RdKey();\r
+  END Pauza;\r
+\r
+BEGIN\r
+  Inicijalizuj(R);\r
+  REPEAT\r
+    Meni(Izbor);\r
+    CASE Izbor OF\r
+      'P': REPEAT\r
+             WrStr('1) prevod strane reci'); WrLn;\r
+             WrStr('2) prevod domace reci'); WrLn;\r
+             WrLn;\r
+             WrStr("Unesite '1' ili '2' --- ");\r
+             Izb:= RdKey();\r
+             WrChar(Izb); WrLn;\r
+           UNTIL (Izb = '1') OR (Izb = '2');\r
+           StrNaDom:= Izb = '1';\r
+           IF StrNaDom THEN\r
+             WrStr('Unesite stranu rec ---- ');\r
+             RdStr(Rec);\r
+             Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
+             IF Ok THEN\r
+               WrStr('Prevod ---------------- ');\r
+               WrStr(Prevod);\r
+             ELSE\r
+               WrStr('Zadata rec se ne nalazi u recniku.');\r
+             END;\r
+           ELSE\r
+             WrStr('Unesite domacu rec ---- ');\r
+             RdStr(Rec);\r
+             Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
+             IF Ok THEN\r
+               WrStr('Prevod ---------------- ');\r
+               WrStr(Prevod);\r
+             ELSE\r
+               WrStr('Zadata rec se ne nalazi u recniku.');\r
+             END;\r
+           END;\r
+           Pauza; |\r
+      'B': WrStr('Recnik raspolaze fondom od ');\r
+           WrCard(R.BrojReci, 1);\r
+           WrStr(' reci.');\r
+           Pauza; |\r
+      'U': WrStr('Unesite novu domacu rec ----- ');\r
+           RdStr(Rec);\r
+           WrStr('Unesite njen prevod  -------- ');\r
+           RdStr(Prevod);\r
+           Ubaci(Rec, Prevod, R, Duplikat);\r
+           IF Duplikat THEN\r
+             WrStr('U recniku se vec nalazi data rec.');\r
+           ELSE\r
+             WrStr('Upisano.');\r
+           END;\r
+           Pauza; |\r
+      'I': WrStr('Unesite rec --- ');\r
+           RdStr(Rec);\r
+           REPEAT\r
+             WrStr('Da li je uneta rec domaca ili strana? (d/s)  ');\r
+             Izb:= RdKey();\r
+             WrLn;\r
+           UNTIL (CAP(Izb) = 'D') OR (CAP(Izb) = 'S');\r
+           Domaca:= CAP(Izb) = 'D';\r
+           Izbaci(Rec, R, Domaca, Ok);\r
+           IF Ok THEN\r
+             WrStr('Izbrisano.')\r
+           ELSE\r
+             WrStr('Rec se nije ni nalazila u recniku.')\r
+           END;\r
+           Pauza; |\r
+      'S': Sadrzaj(R);\r
+           Pauza;\r
+    END;\r
+  UNTIL Izbor = 'Q';\r
+  Unisti(R);\r
+END RecnikTest.\r
diff --git a/01. Dvosmerni Recnik/XDS/RECNIKATP.DEF b/01. Dvosmerni Recnik/XDS/RECNIKATP.DEF
new file mode 100644 (file)
index 0000000..92a237a
--- /dev/null
@@ -0,0 +1,42 @@
+DEFINITION MODULE RecnikATP;\r
+\r
+  CONST\r
+    Broj = 11; (* Neki prost broj *)\r
+    MaxDuzRec = 50;\r
+    MaxTabela = Broj - 1;\r
+\r
+  TYPE\r
+    String = ARRAY [1 .. MaxDuzRec] OF CHAR;\r
+    Lista = POINTER TO Element;\r
+    Element = RECORD\r
+                Veza, Prevod: Lista;\r
+                Rec: String;\r
+            END;\r
+    Indeksi = [0 .. MaxTabela];\r
+    Tabela = ARRAY Indeksi OF Lista;\r
+    Recnik = RECORD\r
+               BrojReci: CARDINAL;\r
+               Domace, Strane: Tabela;\r
+             END;\r
+\r
+  PROCEDURE Inicijalizuj(VAR R: Recnik);\r
+  PROCEDURE Unisti(VAR R: Recnik);\r
+\r
+  PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
+                  VAR R: Recnik;\r
+                  VAR Duplikat: BOOLEAN);\r
+\r
+  PROCEDURE Izbaci(Rec: String;\r
+                   VAR R: Recnik;\r
+                   Domaca: BOOLEAN;\r
+                   VAR Ok: BOOLEAN);\r
+\r
+  PROCEDURE Prevedi(StranaNaDomacu: BOOLEAN;\r
+                    Rec: String;\r
+                    VAR Prevod: String;\r
+                    VAR R: Recnik;\r
+                    VAR Ok: BOOLEAN);\r
+\r
+  PROCEDURE Sadrzaj(VAR R: Recnik);\r
+\r
+END RecnikATP.\r
diff --git a/01. Dvosmerni Recnik/XDS/RECNIKATP.MOD b/01. Dvosmerni Recnik/XDS/RECNIKATP.MOD
new file mode 100644 (file)
index 0000000..1977893
--- /dev/null
@@ -0,0 +1,186 @@
+IMPLEMENTATION MODULE RecnikATP;\r
+\r
+  FROM IO IMPORT\r
+    RdKey, WrStr, WrLn, WrCard;\r
+  FROM SYSTEM IMPORT\r
+    TSIZE;\r
+  FROM Str IMPORT\r
+    Compare;\r
+  FROM Storage IMPORT\r
+    ALLOCATE, DEALLOCATE;\r
+\r
+  PROCEDURE Hash(Rec: String): Indeksi;\r
+    VAR\r
+      i, Zbir, Temp: CARDINAL;\r
+  BEGIN\r
+    Zbir:= 0;\r
+    i:= 1;\r
+    WHILE (i <= MaxDuzRec) AND (Rec[i] # CHR(0)) DO\r
+      Temp:= (ORD(Rec[i]) * ORD(Rec[i])) MOD Broj;\r
+      Zbir:= (Zbir + Temp) MOD Broj;\r
+      INC(i);\r
+    END;\r
+    RETURN Zbir;\r
+  END Hash;\r
+\r
+  PROCEDURE Inicijalizuj(VAR R: Recnik);\r
+    VAR\r
+      i: Indeksi;\r
+  BEGIN\r
+    WITH R DO\r
+      BrojReci:= 0;\r
+      FOR i := 0 TO MaxTabela DO\r
+        NEW(Domace[i]);\r
+        Domace[i]^.Veza := Domace[i];\r
+        NEW(Strane[i]);\r
+        Strane[i]^.Veza := Strane[i]\r
+      END;\r
+    END;\r
+  END Inicijalizuj;\r
+\r
+  PROCEDURE Unisti(VAR R: Recnik);\r
+    VAR\r
+      i: Indeksi;\r
+      Tekuci: Lista;\r
+  BEGIN\r
+    FOR i:= 0 TO MaxTabela DO\r
+      WHILE R.Domace[i] # R.Domace[i]^.Veza DO\r
+        Tekuci:= R.Domace[i]^.Veza;\r
+        R.Domace[i]^.Veza:= Tekuci^.Veza;\r
+        DISPOSE(Tekuci);\r
+      END;\r
+      DISPOSE(R.Domace[i]);\r
+      WHILE R.Strane[i] # R.Strane[i]^.Veza DO\r
+        Tekuci:= R.Strane[i]^.Veza;\r
+        R.Strane[i]^.Veza:= Tekuci^.Veza;\r
+        DISPOSE(Tekuci);\r
+      END;\r
+      DISPOSE(R.Strane[i]);\r
+    END;\r
+  END Unisti;\r
+\r
+  PROCEDURE Nadji(VAR Rec: String;\r
+                  VAR Tab: Tabela;\r
+                  VAR Prethodni: Lista;\r
+                  VAR Nadjen: BOOLEAN);\r
+    VAR\r
+      Pozicija: Indeksi;\r
+  BEGIN\r
+    Pozicija:= Hash(Rec);\r
+    Prethodni:= Tab[Pozicija];\r
+    Prethodni^.Rec:= Rec;\r
+    IF Prethodni^.Veza = Prethodni THEN\r
+      Nadjen:= FALSE;\r
+    ELSE\r
+      WHILE Compare(Prethodni^.Veza^.Rec, Rec) # 0 DO\r
+        Prethodni:= Prethodni^.Veza;\r
+      END;\r
+      Nadjen:= Prethodni^.Veza # Tab[Pozicija]\r
+    END;\r
+  END Nadji;\r
+\r
+  PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
+                  VAR R: Recnik;\r
+                  VAR Duplikat: BOOLEAN);\r
+    VAR\r
+      NadjenDom, NadjenStr: BOOLEAN;\r
+      PrethodniDom, PrethodniStr, PomDom, PomStr: Lista;\r
+  BEGIN\r
+\r
+    Nadji(DomacaRec, R.Domace, PrethodniDom, NadjenDom);\r
+    Nadji(StranaRec, R.Strane, PrethodniStr, NadjenStr);\r
+\r
+    IF NadjenDom OR NadjenStr THEN\r
+      Duplikat:= TRUE;\r
+    ELSE\r
+\r
+      Duplikat := FALSE;\r
+\r
+      NEW(PomDom);\r
+      PomDom^.Rec:= DomacaRec;\r
+      PomDom^.Veza:= PrethodniDom^.Veza;\r
+      PrethodniDom^.Veza:= PomDom;\r
+\r
+      NEW(PomStr);\r
+      PomStr^.Rec:= StranaRec;\r
+      PomStr^.Veza:= PrethodniStr^.Veza;\r
+      PrethodniStr^.Veza:= PomStr;\r
+\r
+      PomDom^.Prevod:= PomStr;\r
+      PomStr^.Prevod:= PomDom;\r
+\r
+      INC(R.BrojReci);\r
+\r
+    END;\r
+  END Ubaci;\r
+\r
+  PROCEDURE Izbaci(Rec: String;\r
+                   VAR R: Recnik;\r
+                   Domaca: BOOLEAN;\r
+                   VAR Ok: BOOLEAN);\r
+    VAR\r
+      Prethodni, Prethodni2, Temp, Temp2: Lista;\r
+  BEGIN\r
+\r
+    IF Domaca THEN\r
+      Nadji(Rec, R.Domace, Prethodni, Ok);\r
+    ELSE\r
+      Nadji(Rec, R.Strane, Prethodni, Ok);\r
+    END;\r
+\r
+    IF Ok THEN\r
+\r
+      Temp:= Prethodni^.Veza;\r
+      Prethodni^.Veza:= Temp^.Veza;\r
+\r
+      Temp2:= Temp^.Prevod;\r
+      Prethodni2:= Temp2^.Veza;\r
+      WHILE Prethodni2^.Veza # Temp2 DO\r
+        Prethodni2:= Prethodni2^.Veza;\r
+      END;\r
+      Prethodni2^.Veza:= Temp2^.Veza;\r
+\r
+      DISPOSE(Temp);\r
+      DISPOSE(Temp2);\r
+\r
+      DEC(R.BrojReci);\r
+    END;\r
+  END Izbaci;\r
+\r
+  PROCEDURE Prevedi(StranuNaDomacu: BOOLEAN;\r
+                    Rec: String;\r
+                    VAR Prevod: String;\r
+                    VAR R: Recnik;\r
+                    VAR Ok: BOOLEAN);\r
+    VAR\r
+      Prethodni: Lista;\r
+  BEGIN\r
+    IF StranuNaDomacu THEN\r
+      Nadji(Rec, R.Strane, Prethodni, Ok);\r
+    ELSE\r
+      Nadji(Rec, R.Domace, Prethodni, Ok);\r
+    END;\r
+    IF Ok THEN\r
+      Prevod:= Prethodni^.Veza^.Prevod^.Rec;\r
+    END\r
+  END Prevedi;\r
+\r
+  PROCEDURE Sadrzaj(VAR R: Recnik);\r
+    VAR\r
+      i: Indeksi;\r
+      Tekuci: Lista;\r
+  BEGIN\r
+    WrStr('Sadrzaj recnika:');\r
+    FOR i:= 0 TO MaxTabela DO\r
+      Tekuci:= R.Domace[i]^.Veza;\r
+      WHILE Tekuci# R.Domace[i] DO\r
+        WrLn;\r
+        WrStr(Tekuci^.Rec);\r
+        WrStr(' --------- ');\r
+        WrStr(Tekuci^.Prevod^.Rec);\r
+        Tekuci:= Tekuci^.Veza;\r
+      END;\r
+    END;\r
+  END Sadrzaj;\r
+\r
+END RecnikATP.\r
diff --git a/01. Dvosmerni Recnik/XDS/RECNIKTEST.MOD b/01. Dvosmerni Recnik/XDS/RECNIKTEST.MOD
new file mode 100644 (file)
index 0000000..e1b97a2
--- /dev/null
@@ -0,0 +1,141 @@
+MODULE RecnikTest;\r
+\r
+  FROM RecnikATP IMPORT\r
+    String, Recnik, Inicijalizuj, Ubaci, Izbaci, Sadrzaj, Prevedi, Unisti;\r
+  FROM IO IMPORT\r
+    WrLn, WrStr, RdStr, WrCard, RdChar, WrChar, RdInt;\r
+\r
+\r
+  VAR\r
+    R: Recnik;\r
+    Rec, Prevod: String;\r
+    Izbor: CHAR;\r
+    Izb : INTEGER;\r
+    Ok, Duplikat, Domaca, StrNaDom: BOOLEAN;\r
+\r
+PROCEDURE Clr(r : CARDINAL);\r
+VAR\r
+       i : CARDINAL;\r
+BEGIN\r
+       FOR i:=1 TO r DO\r
+               WrLn;\r
+       END;\r
+END Clr;\r
+\r
+PROCEDURE Clear();\r
+BEGIN\r
+       Clr(40);\r
+END Clear;\r
+\r
+  PROCEDURE Meni(VAR Izbor: CHAR);\r
+    TYPE\r
+      Slova = SET OF CHAR;\r
+    VAR\r
+      i: CARDINAL;\r
+  BEGIN\r
+    Clear;\r
+    FOR i:= 1 TO 8 DO\r
+      WrLn;\r
+    END;\r
+    WrStr('                   P --- prevod reci'); WrLn;\r
+    WrStr('                   B --- broj reci u recniku'); WrLn;\r
+    WrStr('                   U --- ubacivanje nove reci i njenog prevoda u recnik'); WrLn;\r
+    WrStr('                   I --- izbacivanje reci i njenog prevoda iz recnika'); WrLn;\r
+    WrStr('                   S --- sekvencijalni prikaz recnika'); WrLn;\r
+    WrStr('                   Q --- kraj rada');\r
+    Clr(7);\r
+    REPEAT\r
+      Izbor:= CAP(RdChar());\r
+    UNTIL Izbor IN Slova {'P', 'B', 'U', 'I', 'S', 'Q'};\r
+    Clear;\r
+  END Meni;\r
+\r
+  PROCEDURE Pauza;\r
+    VAR\r
+      c: CHAR;\r
+  BEGIN\r
+  WrLn;\r
+  WrStr('Enter za nastavak');WrLn;\r
+  (* visak RdChar-ova zbog Entera i sl *)\r
+  c := RdChar();\r
+  c := RdChar();\r
+  c := RdChar();\r
+  END Pauza;\r
+\r
+BEGIN\r
+  Inicijalizuj(R);\r
+  REPEAT\r
+    Meni(Izbor);\r
+    CASE Izbor OF\r
+      'P': REPEAT\r
+             WrStr('1) prevod strane reci'); WrLn;\r
+             WrStr('2) prevod domace reci'); WrLn;\r
+             WrLn;\r
+             WrStr("Unesite '1' ili '2' --- ");\r
+             Izb:= RdInt();\r
+             WrLn;\r
+           UNTIL (Izb = 1) OR (Izb = 2);\r
+           StrNaDom:= Izb = 1;\r
+           IF StrNaDom THEN\r
+             WrStr('Unesite stranu rec ---- ');\r
+             RdStr(Rec);\r
+             Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
+             IF Ok THEN\r
+               WrStr('Prevod ---------------- ');\r
+               WrStr(Prevod);\r
+             ELSE\r
+               WrStr('Zadata rec se ne nalazi u recniku.');\r
+             END;\r
+           ELSE\r
+             WrStr('Unesite domacu rec ---- ');\r
+             RdStr(Rec);\r
+             Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
+             IF Ok THEN\r
+               WrStr('Prevod ---------------- ');\r
+               WrStr(Prevod);\r
+             ELSE\r
+               WrStr('Zadata rec se ne nalazi u recniku.');\r
+             END;\r
+           END;\r
+           Pauza; |\r
+      'B': WrStr('Recnik raspolaze fondom od ');\r
+           WrCard(R.BrojReci, 1);\r
+           WrStr(' reci.');\r
+           Pauza; |\r
+      'U': WrStr('Unesite novu domacu rec ----- ');\r
+           RdStr(Rec);\r
+           WrStr('Unesite njen prevod  -------- ');\r
+           RdStr(Prevod);\r
+           Ubaci(Rec, Prevod, R, Duplikat);\r
+           IF Duplikat THEN\r
+             WrStr('U recniku se vec nalazi data rec.');\r
+           ELSE\r
+             WrStr('Upisano.');\r
+           END;\r
+           Pauza; |\r
+      'I': WrStr('Unesite rec --- ');\r
+           RdStr(Rec);\r
+           REPEAT\r
+             WrStr('uneta rec je'); WrLn;\r
+             WrStr('1) strana'); WrLn;\r
+             WrStr('2) domaca'); WrLn;\r
+             WrLn;\r
+             WrStr("Unesite '1' ili '2' --- ");\r
+             Izb:= RdInt();\r
+             WrLn;\r
+           UNTIL (Izb = 1) OR (Izb = 2);\r
+           Domaca:= Izb = 1;\r
+           Izbaci(Rec, R, Domaca, Ok);\r
+           IF Ok THEN\r
+             WrStr('Izbrisano.')\r
+           ELSE\r
+             WrStr('Rec se nije ni nalazila u recniku.')\r
+           END;\r
+           Pauza; |\r
+      'S': Sadrzaj(R);\r
+           Pauza|\r
+       ELSE ;\r
+    END;\r
+  UNTIL Izbor = 'Q';\r
+  Unisti(R);\r
+END RecnikTest.\r
diff --git a/Cas01/Prezentacija.ppt b/Cas01/Prezentacija.ppt
deleted file mode 100644 (file)
index 6ff7ded..0000000
Binary files a/Cas01/Prezentacija.ppt and /dev/null differ
diff --git a/Cas01/RECNIKAT.DEF b/Cas01/RECNIKAT.DEF
deleted file mode 100644 (file)
index 92a237a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-DEFINITION MODULE RecnikATP;\r
-\r
-  CONST\r
-    Broj = 11; (* Neki prost broj *)\r
-    MaxDuzRec = 50;\r
-    MaxTabela = Broj - 1;\r
-\r
-  TYPE\r
-    String = ARRAY [1 .. MaxDuzRec] OF CHAR;\r
-    Lista = POINTER TO Element;\r
-    Element = RECORD\r
-                Veza, Prevod: Lista;\r
-                Rec: String;\r
-            END;\r
-    Indeksi = [0 .. MaxTabela];\r
-    Tabela = ARRAY Indeksi OF Lista;\r
-    Recnik = RECORD\r
-               BrojReci: CARDINAL;\r
-               Domace, Strane: Tabela;\r
-             END;\r
-\r
-  PROCEDURE Inicijalizuj(VAR R: Recnik);\r
-  PROCEDURE Unisti(VAR R: Recnik);\r
-\r
-  PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
-                  VAR R: Recnik;\r
-                  VAR Duplikat: BOOLEAN);\r
-\r
-  PROCEDURE Izbaci(Rec: String;\r
-                   VAR R: Recnik;\r
-                   Domaca: BOOLEAN;\r
-                   VAR Ok: BOOLEAN);\r
-\r
-  PROCEDURE Prevedi(StranaNaDomacu: BOOLEAN;\r
-                    Rec: String;\r
-                    VAR Prevod: String;\r
-                    VAR R: Recnik;\r
-                    VAR Ok: BOOLEAN);\r
-\r
-  PROCEDURE Sadrzaj(VAR R: Recnik);\r
-\r
-END RecnikATP.\r
diff --git a/Cas01/RECNIKAT.MOD b/Cas01/RECNIKAT.MOD
deleted file mode 100644 (file)
index 1977893..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-IMPLEMENTATION MODULE RecnikATP;\r
-\r
-  FROM IO IMPORT\r
-    RdKey, WrStr, WrLn, WrCard;\r
-  FROM SYSTEM IMPORT\r
-    TSIZE;\r
-  FROM Str IMPORT\r
-    Compare;\r
-  FROM Storage IMPORT\r
-    ALLOCATE, DEALLOCATE;\r
-\r
-  PROCEDURE Hash(Rec: String): Indeksi;\r
-    VAR\r
-      i, Zbir, Temp: CARDINAL;\r
-  BEGIN\r
-    Zbir:= 0;\r
-    i:= 1;\r
-    WHILE (i <= MaxDuzRec) AND (Rec[i] # CHR(0)) DO\r
-      Temp:= (ORD(Rec[i]) * ORD(Rec[i])) MOD Broj;\r
-      Zbir:= (Zbir + Temp) MOD Broj;\r
-      INC(i);\r
-    END;\r
-    RETURN Zbir;\r
-  END Hash;\r
-\r
-  PROCEDURE Inicijalizuj(VAR R: Recnik);\r
-    VAR\r
-      i: Indeksi;\r
-  BEGIN\r
-    WITH R DO\r
-      BrojReci:= 0;\r
-      FOR i := 0 TO MaxTabela DO\r
-        NEW(Domace[i]);\r
-        Domace[i]^.Veza := Domace[i];\r
-        NEW(Strane[i]);\r
-        Strane[i]^.Veza := Strane[i]\r
-      END;\r
-    END;\r
-  END Inicijalizuj;\r
-\r
-  PROCEDURE Unisti(VAR R: Recnik);\r
-    VAR\r
-      i: Indeksi;\r
-      Tekuci: Lista;\r
-  BEGIN\r
-    FOR i:= 0 TO MaxTabela DO\r
-      WHILE R.Domace[i] # R.Domace[i]^.Veza DO\r
-        Tekuci:= R.Domace[i]^.Veza;\r
-        R.Domace[i]^.Veza:= Tekuci^.Veza;\r
-        DISPOSE(Tekuci);\r
-      END;\r
-      DISPOSE(R.Domace[i]);\r
-      WHILE R.Strane[i] # R.Strane[i]^.Veza DO\r
-        Tekuci:= R.Strane[i]^.Veza;\r
-        R.Strane[i]^.Veza:= Tekuci^.Veza;\r
-        DISPOSE(Tekuci);\r
-      END;\r
-      DISPOSE(R.Strane[i]);\r
-    END;\r
-  END Unisti;\r
-\r
-  PROCEDURE Nadji(VAR Rec: String;\r
-                  VAR Tab: Tabela;\r
-                  VAR Prethodni: Lista;\r
-                  VAR Nadjen: BOOLEAN);\r
-    VAR\r
-      Pozicija: Indeksi;\r
-  BEGIN\r
-    Pozicija:= Hash(Rec);\r
-    Prethodni:= Tab[Pozicija];\r
-    Prethodni^.Rec:= Rec;\r
-    IF Prethodni^.Veza = Prethodni THEN\r
-      Nadjen:= FALSE;\r
-    ELSE\r
-      WHILE Compare(Prethodni^.Veza^.Rec, Rec) # 0 DO\r
-        Prethodni:= Prethodni^.Veza;\r
-      END;\r
-      Nadjen:= Prethodni^.Veza # Tab[Pozicija]\r
-    END;\r
-  END Nadji;\r
-\r
-  PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
-                  VAR R: Recnik;\r
-                  VAR Duplikat: BOOLEAN);\r
-    VAR\r
-      NadjenDom, NadjenStr: BOOLEAN;\r
-      PrethodniDom, PrethodniStr, PomDom, PomStr: Lista;\r
-  BEGIN\r
-\r
-    Nadji(DomacaRec, R.Domace, PrethodniDom, NadjenDom);\r
-    Nadji(StranaRec, R.Strane, PrethodniStr, NadjenStr);\r
-\r
-    IF NadjenDom OR NadjenStr THEN\r
-      Duplikat:= TRUE;\r
-    ELSE\r
-\r
-      Duplikat := FALSE;\r
-\r
-      NEW(PomDom);\r
-      PomDom^.Rec:= DomacaRec;\r
-      PomDom^.Veza:= PrethodniDom^.Veza;\r
-      PrethodniDom^.Veza:= PomDom;\r
-\r
-      NEW(PomStr);\r
-      PomStr^.Rec:= StranaRec;\r
-      PomStr^.Veza:= PrethodniStr^.Veza;\r
-      PrethodniStr^.Veza:= PomStr;\r
-\r
-      PomDom^.Prevod:= PomStr;\r
-      PomStr^.Prevod:= PomDom;\r
-\r
-      INC(R.BrojReci);\r
-\r
-    END;\r
-  END Ubaci;\r
-\r
-  PROCEDURE Izbaci(Rec: String;\r
-                   VAR R: Recnik;\r
-                   Domaca: BOOLEAN;\r
-                   VAR Ok: BOOLEAN);\r
-    VAR\r
-      Prethodni, Prethodni2, Temp, Temp2: Lista;\r
-  BEGIN\r
-\r
-    IF Domaca THEN\r
-      Nadji(Rec, R.Domace, Prethodni, Ok);\r
-    ELSE\r
-      Nadji(Rec, R.Strane, Prethodni, Ok);\r
-    END;\r
-\r
-    IF Ok THEN\r
-\r
-      Temp:= Prethodni^.Veza;\r
-      Prethodni^.Veza:= Temp^.Veza;\r
-\r
-      Temp2:= Temp^.Prevod;\r
-      Prethodni2:= Temp2^.Veza;\r
-      WHILE Prethodni2^.Veza # Temp2 DO\r
-        Prethodni2:= Prethodni2^.Veza;\r
-      END;\r
-      Prethodni2^.Veza:= Temp2^.Veza;\r
-\r
-      DISPOSE(Temp);\r
-      DISPOSE(Temp2);\r
-\r
-      DEC(R.BrojReci);\r
-    END;\r
-  END Izbaci;\r
-\r
-  PROCEDURE Prevedi(StranuNaDomacu: BOOLEAN;\r
-                    Rec: String;\r
-                    VAR Prevod: String;\r
-                    VAR R: Recnik;\r
-                    VAR Ok: BOOLEAN);\r
-    VAR\r
-      Prethodni: Lista;\r
-  BEGIN\r
-    IF StranuNaDomacu THEN\r
-      Nadji(Rec, R.Strane, Prethodni, Ok);\r
-    ELSE\r
-      Nadji(Rec, R.Domace, Prethodni, Ok);\r
-    END;\r
-    IF Ok THEN\r
-      Prevod:= Prethodni^.Veza^.Prevod^.Rec;\r
-    END\r
-  END Prevedi;\r
-\r
-  PROCEDURE Sadrzaj(VAR R: Recnik);\r
-    VAR\r
-      i: Indeksi;\r
-      Tekuci: Lista;\r
-  BEGIN\r
-    WrStr('Sadrzaj recnika:');\r
-    FOR i:= 0 TO MaxTabela DO\r
-      Tekuci:= R.Domace[i]^.Veza;\r
-      WHILE Tekuci# R.Domace[i] DO\r
-        WrLn;\r
-        WrStr(Tekuci^.Rec);\r
-        WrStr(' --------- ');\r
-        WrStr(Tekuci^.Prevod^.Rec);\r
-        Tekuci:= Tekuci^.Veza;\r
-      END;\r
-    END;\r
-  END Sadrzaj;\r
-\r
-END RecnikATP.\r
diff --git a/Cas01/RECNIKTE.MOD b/Cas01/RECNIKTE.MOD
deleted file mode 100644 (file)
index 5358707..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-MODULE RecnikTest;\r
-\r
-  FROM RecnikATP IMPORT\r
-    String, Recnik, Inicijalizuj, Ubaci, Izbaci, Sadrzaj, Prevedi, Unisti;\r
-  FROM IO IMPORT\r
-    WrLn, WrStr, RdStr, WrCard, RdKey, WrChar;\r
-  FROM Window IMPORT\r
-    Clear;\r
-\r
-  VAR\r
-    R: Recnik;\r
-    Rec, Prevod: String;\r
-    Izbor, Izb: CHAR;\r
-    Ok, Duplikat, Domaca, StrNaDom: BOOLEAN;\r
-\r
-  PROCEDURE Meni(VAR Izbor: CHAR);\r
-    TYPE\r
-      Slova = SET OF CHAR;\r
-    VAR\r
-      i: CARDINAL;\r
-  BEGIN\r
-    Clear;\r
-    FOR i:= 1 TO 8 DO\r
-      WrLn;\r
-    END;\r
-    WrStr('                   P --- prevod reci'); WrLn;\r
-    WrStr('                   B --- broj reci u recniku'); WrLn;\r
-    WrStr('                   U --- ubacivanje nove reci i njenog prevoda u recnik'); WrLn;\r
-    WrStr('                   I --- izbacivanje reci i njenog prevoda iz recnika'); WrLn;\r
-    WrStr('                   S --- sekvencijalni prikaz recnika'); WrLn;\r
-    WrStr('                   Q --- kraj rada');\r
-    REPEAT\r
-      Izbor:= CAP(RdKey());\r
-    UNTIL Izbor IN Slova {'P', 'B', 'U', 'I', 'S', 'Q'};\r
-    Clear;\r
-  END Meni;\r
-\r
-  PROCEDURE Pauza;\r
-    VAR\r
-      Ch: CHAR;\r
-  BEGIN\r
-    Ch:= RdKey();\r
-  END Pauza;\r
-\r
-BEGIN\r
-  Inicijalizuj(R);\r
-  REPEAT\r
-    Meni(Izbor);\r
-    CASE Izbor OF\r
-      'P': REPEAT\r
-             WrStr('1) prevod strane reci'); WrLn;\r
-             WrStr('2) prevod domace reci'); WrLn;\r
-             WrLn;\r
-             WrStr("Unesite '1' ili '2' --- ");\r
-             Izb:= RdKey();\r
-             WrChar(Izb); WrLn;\r
-           UNTIL (Izb = '1') OR (Izb = '2');\r
-           StrNaDom:= Izb = '1';\r
-           IF StrNaDom THEN\r
-             WrStr('Unesite stranu rec ---- ');\r
-             RdStr(Rec);\r
-             Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
-             IF Ok THEN\r
-               WrStr('Prevod ---------------- ');\r
-               WrStr(Prevod);\r
-             ELSE\r
-               WrStr('Zadata rec se ne nalazi u recniku.');\r
-             END;\r
-           ELSE\r
-             WrStr('Unesite domacu rec ---- ');\r
-             RdStr(Rec);\r
-             Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
-             IF Ok THEN\r
-               WrStr('Prevod ---------------- ');\r
-               WrStr(Prevod);\r
-             ELSE\r
-               WrStr('Zadata rec se ne nalazi u recniku.');\r
-             END;\r
-           END;\r
-           Pauza; |\r
-      'B': WrStr('Recnik raspolaze fondom od ');\r
-           WrCard(R.BrojReci, 1);\r
-           WrStr(' reci.');\r
-           Pauza; |\r
-      'U': WrStr('Unesite novu domacu rec ----- ');\r
-           RdStr(Rec);\r
-           WrStr('Unesite njen prevod  -------- ');\r
-           RdStr(Prevod);\r
-           Ubaci(Rec, Prevod, R, Duplikat);\r
-           IF Duplikat THEN\r
-             WrStr('U recniku se vec nalazi data rec.');\r
-           ELSE\r
-             WrStr('Upisano.');\r
-           END;\r
-           Pauza; |\r
-      'I': WrStr('Unesite rec --- ');\r
-           RdStr(Rec);\r
-           REPEAT\r
-             WrStr('Da li je uneta rec domaca ili strana? (d/s)  ');\r
-             Izb:= RdKey();\r
-             WrLn;\r
-           UNTIL (CAP(Izb) = 'D') OR (CAP(Izb) = 'S');\r
-           Domaca:= CAP(Izb) = 'D';\r
-           Izbaci(Rec, R, Domaca, Ok);\r
-           IF Ok THEN\r
-             WrStr('Izbrisano.')\r
-           ELSE\r
-             WrStr('Rec se nije ni nalazila u recniku.')\r
-           END;\r
-           Pauza; |\r
-      'S': Sadrzaj(R);\r
-           Pauza;\r
-    END;\r
-  UNTIL Izbor = 'Q';\r
-  Unisti(R);\r
-END RecnikTest.\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner