Elektrotehnicki fakultet, Beograd  ����� ����� ϣ��
����� ��������� �����
9. 7. 2004.

������: ���� ������� (������) � ����� ����� (������ � �����)

������: 1 2 3 4 | �������e | �����: 1 3 4

�������� ������� 1 (55 �����) ( ����� | �������)

����������� �� ������ Java ����� ����� �� ������ ������:

��������� �� ������ Java ����� �� ������� ��������� ��� ������� ����� ���� ������� ���������� ��� �� ����� ��� ��������� ������� ��������, ����� �������� ������� ������ �������� ������� ����� ������� �����, ������ ������� ���� ������� � ����� ����� � ����� ���� ���������� ��������� ����� ������� � ������� ������ �� ����� xminxxmax �� ������� Δx. �� ����������� ���� ����� Citaj � ��������� ������ ��� ������ ��������� ������ �� ������ ���� ����������� ������ ��������.

�������� ������� 2 (10 �����) ( �������)

�������� ���������� �� ������ ������:

�) ��� � ���� �������� ����������� final �� (�) ���, (�) ������, (�) �����?

�) �������� ����� ���������� (����������������) ������ ������� � ����.

�) ���� ���������� � ������� ��������� i8086 �� ���� ������ ������ ����������? ��� �� ��������� �024:012B ������� �� ������ N, ������� ���������� ������ ������ �������.

�������� ������� 3 (20 �����) ( ����� | �������)

��������� ���������� �� ����������� ��������� ������ �� IBM-PC �� ������ ��������� ��������� ���� 16-������ ����� ������, �. �� ������ ����� �������� �� ��������, ������ �� ������������ ���.

��������� ������ ������� �� ����������� ��������� ������ �� IBM-PC ��� ������ ��������� ���������� �� ����� ������� ��������. ������ �������� � ����������� ��������� ������ �� ��������� ���� � ������ ���������.

�������� ������� 4 (15 �����) ( ����� | �������)

��������� ���������� �� ����������� ��������� ������ �� IBM-PC, ��� ���� �� �� ������ �� �������� ������� �� ������ C, �� ����������� ��������� ���� 16-������ ����� ������ �� �������� ����������� � ����� ��� (��������� �������� ����� ���������� �� �������� ����). ��������� ����� ��������� ����� (������ ������ � ������ ����������).


�������e ( �������)


����� ������� 1 ( �������� | �������)

// Fun.java
package funkcije;
public interface Fun {
  double vr(double x);
  Fun izv();
}

// Monom.java
package funkcije;
public class Monom implements Fun {
  private double a; private int k;
  public Monom () { a = k = 1; }
  public Monom (double aa, int kk ) { a = aa ; k = kk; }
  public double vr (double x) { return a * Math.pow (x, k); }
  public Fun izv () { return k!=0 ? new Monom (a*k,k-1) : new Monom (0,0); }
  public String toString() { return a + "*x^" + k; }
}

// Ekspon.java
package funkcije;
public class Ekspon implements Fun {
  private double a, b;
  public Ekspon () { a = b = 1; }
  public Ekspon (double aa, double bb) {a=aa; b=bb;}
  public double vr (double x) { return a * Math.exp (b * x); }
  public Fun izv () { return new Ekspon (a*b, b); }
  public String toString () { return a + "*exp(" + b + "*x)"; }
}

// ZbirFun.java
package funkcije;
public class ZbirFun implements Fun {
  private Fun[] niz;
  private int n;
  public ZbirFun (int k) { niz = new Fun [k]; }
  public ZbirFun () { this (2); }
  public ZbirFun dodaj (Fun f) throws GZbirFunPun {
    if (n == niz.length) throw new GZbirFunPun ();
    niz[n++] = f;
    return this;
  }
  public double vr (double x) {
    double s = 0;
    for (int i=0; i<n; s+=niz[i++].vr(x));
    return s;
  }
  public Fun izv () {
    ZbirFun rez = new ZbirFun (niz.length);
    for (int i=0; i<n; i++) rez.niz[i]=niz[i].izv();
    rez.n = n;
    return rez;
  }
  public String toString () {
    String s = "";
    for (int i=0; i<n; i++) {
      if (i > 0) s += "+";
      s += "(" + niz[i] + ")";
    }
    return s;
  }
}

// GZbirFunPun.java
package funkcije;
public class GZbirFunPun extends Exception {
  GZbirFunPun () { super ("Zbir funkcija je pun"); }
}

// Test.java
import funkcije.*;
public class Test {
  public static void main (String[] varg) {
    ZbirFun zbir = new ZbirFun (Integer.parseInt (varg[0]));
    try {
      for (boolean dalje=true; dalje; ) {
        Fun f = null;
        System.out.print ("Vrsta (M,E,*)? ");
        switch (Citaj.Char ()) {
          case 'M': case 'm':
            System.out.print ("a,k? ");
            zbir.dodaj (new Monom (Citaj.Double(), Citaj.Int()));
            break;
          case 'E': case 'e':
            System.out.print ("a,b? ");
            zbir.dodaj (new Ekspon (Citaj.Double(), Citaj.Double()));
            break;
          case '*': dalje = false; break;
          default: throw new Exception ("Nedozvoljeni izbor!");
        }
      }
    } catch (Exception g) { System.out.println(g); }
    Fun izv = zbir.izv ();
    System.out.println ("Fun: " + zbir);
    System.out.println ("Izv: " + izv);
    System.out.print ("xmin,xmax,dx? ");
    double xmin = Citaj.Double (), xmax = Citaj.Double (), dx = Citaj.Double ();
    for (double x=xmin; x<=xmax; x+=dx)
      System.out.println (x + "\t" + zbir.vr(x) + "\t" + izv.vr(x));
  }
}

����� ������� 3 ( �������� | �������)

; obrni.asm
; si==&niz      cx==n
prog  segment para public 'code'
      assume cs:prog
      public obrni
obrni proc near
      push si
      push di
      push ax
      push dx
      mov  di,si
      add  di,cx
      add  di,cx
opet: sub  di,2
      cmp  si,di
      jge  kraj
      mov  ax,[si]
      mov  dx,[di]
      mov  [di],ax
      mov  [si],dx
      add  si,2
      jmp  opet
kraj: pop  dx
      pop  ax
      pop  di
      pop  si
      retn
obrni endp
prog  ends
      end

; ubacit.asm
      extrn ubaci:near, exit_f:far
podat segment para public 'data'
niz   dw   30 dup (?)
n     dw   ?
podat ends
prog  segment para public 'code'
      assume cs:prog, ds:podat
pocet:mov  ax, podat
      mov  ds, ax
;;;;  Citanje podataka.
      mov  si,offset niz
      mov  cx, n
      call obrni
;;;;  Prikaz rezultata.
      call exit_f
prog  ends
stek  segment para stack 'stack'
      dw   64 dup (?)
stek  ends
      end  pocet

����� ������� 4 ( �������� | �������)

; void razvrst (short *a, short *m, short *b, short *n) ;
razvrst_text segment para public 'code'
      assume cs:razvrst_text
      public _razvrst
a     equ  6
m     equ  8
b     equ  10
n     equ  12
_razvrst proc far
      push bp
      mov  bp, sp
      push si
      push di
      mov  bx,[bp].m
      mov  cx,[bx]
      mov  si,[bp].a
      mov  di,si
      mov  bx,[bp].b
      jcxz kraj
      cld
opet: lods
      test ax,1
      je   par
      mov  [bx],ax
      add  bx,2
      jmp  dalje
par:  stos
dalje:loop opet
      sub  di,[bp].a
      shr  di,1
      mov  si,[bp].m
      mov  [si],di
kraj: sub  bx,[bp].b
      shr  bx,1
      mov  si,[bp].n
      mov  [si],bx
      pop  di
      pop  si
      pop  bp
      ret
_razvrst endp
pomeri_text ends
      end
( �������)
         
�����: ����� �����
�-�����: kraus@etf.rs

Copyright © 2004, Laslo Kraus
������� �������: 8.7.2004.