Ласло Краус |
ПЈМП Други парцијални испит 11. 7. 2003. |
---|
Пројектовати на језику Java пакет класа са следћим описом:
String
садржи идентификациони број предмета.
String
састоји се од резултата конверзије елемената низа у тип String
међусобно раздвојених зарезима, унутар пара средњих заграда.
String
је облика K
id(
a,
b,
c),
где су id - идентификациони број квадра, а a, b и c - дужине страница квадра.
Саставити на језику Java класу са главним програмом који прочита низ квадара, испише тај низ, затим учита посебан квадар и испише позицију тог квадра у низу. На располагању стоји класа Citaj
у безименом пакету која садржи заједничке методе за читање свих стандардних типова података.
Концизно одговорити на следећа питања:
а) Да ли је за интерфејс INesto
исправан израз INesto
i=new
Object();
. Образложити.
б) Која је разлика у односима статичке угнеждене класе и нестатичке унутрашње (inner) класе према спољашњој класи?
в) У чему је разлика између појма ослушкивача (listener) и адаптера у пакету AWT?
Саставити потпрограм на симболичком машинском језику за IBM-PC за убацивање новог елемента у уређени низ 16-битних целих бројева тако да низ и даље буде уређен.
Саставити главни програм на симболичком машинском језику за IBM-PC који позива претходни потпрограм за један комплет података. Читање података и приказивање резултата довољно је назначити само у облику коментара.
Саставити потпрограм на симболичком машинском језику за IBM-PC, који може да се позива из програма писаног на језику C, за цикличко померање елемената низа 16-битних целих бројева за једно место улево. Користити велики меморијски модел (далеки позиви и далеки показивачи).
// Predmet.java package predmeti; public abstract class Predmet { private static int ukId; private int id = ++ukId; public abstract boolean manji (Predmet p); public boolean jednak (Predmet p) { return !manji(p) && !p.manji(this); } public String toString () { return Integer.toString (id); } } // GNizPun.java package predmeti; public class GNizPun extends Exception {} // Niz.java package predmeti; public class Niz { private Predmet[] niz; private int n; public Niz (int k) { niz = new Predmet [k];} public Niz () { this (10); } public Niz dodaj(Predmet p) throws GNizPun { if (n == niz.length) throw new GNizPun (); int i=n-1; while (i>=0 && p.manji(niz[i])) { niz[i+1] = niz[i]; i--; } niz[i+1] = p; n++; return this; } public int poz (Predmet p) { int i=0; while (i<n && niz[i].manji(p)) i++; return (i<n && p.jednak(niz[i])) ? i : -1; } public String toString () { StringBuffer s = new StringBuffer ('['); for (int i=0; i<n; i++) s.append (niz[i]) .append ((i<n-1)?',':']'); return s.toString (); } } // Kvadar.java package predmeti; public class Kvadar extends Predmet { private double a, b, c; public Kvadar (double aa, double bb, double cc) { a = aa; b = bb; c = cc; } public double V () { return a * b * c; } public boolean manji (Predmet k) { return V() < ((Kvadar)k).V(); } public String toString () { return "K" + super.toString() + '(' + a + ',' + b + ',' + c + ')'; } } // Test.java import predmeti.*; public class Test { public static void main (String[] varg) { System.out.print ("n? "); int n = Citaj.Int (); Niz niz = new Niz (n); try { for (int i=0; i<n; i++) { System.out.print ("niz[" +i +"]? "); niz.dodaj (new Kvadar(Citaj.Double(), Citaj.Double(), Citaj.Double())); } System.out.println ("Uredjeni niz: " + niz); System.out.print ("Trazi se? "); Kvadar k = new Kvadar (Citaj.Double(), Citaj.Double(), Citaj.Double()); int p = niz.poz (k); if (p >=0) System.out.println("poz= " + p); else System.out.println("Nema tog kvadra"); } catch (Exception g) { System.out.println (g); } } }
; ubaci.asm ; bx==@niz cx==n ; dx==k prog segment para public 'code' assume cs:prog public ubaci ubaci proc near push ax push bx push cx jcxz dalje add bx, cx add bx, cx opet: mov ax, [bx]-2 cmp ax, dx ble dalje mov [bx], ax sub bx, 2 loop opet dalje:mov [bx], dx pop cx pop bx pop ax inc cx ret ubaci endp prog ends end ; ubacit.asm extrn ubaci:near extrn exit_f:farpodat segment para public 'data' niz dw 30 dup (?) n dw ? k dw ? podat ends prog segment para public 'code' assume cs:prog, ds:podat pocet:mov ax, podat mov ds, ax ;;;; Citanje podataka. mov bx,offset niz mov cx, n mov dx, k call ubaci mov k, cx ;;;; Prikaz rezultata. call exit_f prog ends stek segment para stack 'stack' dw 64 dup (?) stek ends end pocet
; void pomeri ; (short *a, short n) ; pomeri_text segment para public 'code' assume cs:pomeri_text public _pomeri a equ 6 n equ 10 _pomeri proc far push bp mov bp, sp push ds lds bx, [bp].a mov cx, [bp].n jcxz kraj dec cx jcxz kraj mov dx, [bx] opet: mov ax, [bx]+2 mov [bx], ax add bx, 2 loop opet mov [bx], dx kraj: pop ds pop bp ret _pomeri endp pomeri_text ends end(⇒ почетак)
Copyright © 2004, Laslo Kraus
Последња ревизија: 23.2.2004.