Ласло Краус |
ПЈМП Други парцијални испит 9. 7. 2004. |
---|
Пројектовати на језику Java пакет класа са следћим описом:
Sring
је облика a*x^
k, где су a и k вредности параметара монома.
Sring
је облика a*exp(
b*x)
, где су a и b вредности параметара експоненцијалне функције.
String
је облика (
fun)+…+(
fun)
, где су fun резултати конверзије појединих садржаних функција у тип String
.
Саставити на језику Java класу са главним програмом који направи један збир функција капацитета који се задаје као параметар главног програма, додаје неколико функција читајући потребне податке преко главног улаза, испише добијени збир функција и његов извод и после врши табелирање вредности збира функција и његовог извода за свако xmin≤x≤xCitaj
у безименом пакету која садржи заједничке методе за читање свих стандардних типова података.
Концизно одговорити на следећа питања:
а) Шта у Јави означава модификатор final
за (а) поље, (б) методу, (в) класу?
б) Објаснити модел делегиране (децентрализоване) обраде догађаја у Јави.
в) Којим редоследом у меморији процесора i8086 се ређају бајтови једног показивача? Ако је показивач А024:012B смештен на адресу N, навести одговарајући садржај бајтова меморије.
Саставити потпрограм на симболичком машинском језику за IBM-PC за замену редоследа елемената низа 16-битних целих бројева, тј. за замену првог елемента са последњим, другог са претпоследњим итд.
Саставити главни програм на симболичком машинском језику за IBM-PC који позива претходни потпрограм за један комплет података. Читање података и приказивање резултата довољно је назначити само у облику коментара.
Саставити потпрограм на симболичком машинском језику за IBM-PC, који може да се позива из програма писаног на језику C, за пребацивање елемената низа 16-битних целих бројева са непарним вредностима у други низ (пребачене елементе треба изоставити из почетног низа). Користити средњи меморијски модел (далеки позиви и блиски показивачи).
// 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)); } }
; 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
; 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(⇒ почетак)
Copyright © 2004, Laslo Kraus
Последња ревизија: 8.7.2004.