COMP3015: CONTOH JAWAPAN BAHAGIAN B
Perubahan terakhir: 04-May-03,1:19 AM
NOTA: Jawapan ini BUKAN diberi oleh pihak OUM. Saya telah usahakan untuk memastikan agar semua jawapan yang diberikan adalah betul. Mohon maaf sekiranya terdapat kesilapan. Disediakan khas oleh Ebenezer Godomon untuk para pelajar kelas COMP3015 sem Januari 2003, OUM sahaja. AMARAN: Tidak dibenarkan digunakan oleh kelas lain dalam apa bentuk/cara sekalipun. Dengan membaca notis ini maka anda dianggap telah bersetuju dengan syarat ini.
Soalan 1
(a)
Sebelum panggilan objek, nilai times ialah 3
n=3
%%%%%%
n=2
%%%%%%
n=1
%%%%%%
Selepas panggilan objek, nilai times ialah 3
(b) (i)
class CariPerdana {
public boolean isPrime(int n) {
for (int factor = 2; factor <= n/2; factor++) {
if ((n % factor) == 0)
return false;
}
return true;
}
}
(ii)
class Aplikasi2 {
public static void main(String[] args) {
CariPerdana perdana = new CariPerdana();
for (int i=2; i<=100; i++)
if (perdana.isPrime(i)) {
System.out.print(i + "\t");
}
}
}
©
import javax.swing.*;
import java.awt.*;
public class B1c extends JApplet {
private JLabel l1,l2,l3;
private JTextField t1,t2,t3;
private JButton btnOK, btnReset;
public void init() {
Container conpane = getContentPane();
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
p.add(l1 = new JLabel("Nama:"));
p.add(conpane.add(l1));
p.add(t1 = new JTextField(10));
p.add(conpane.add(t1));
p.add(l2 = new JLabel("Umur:"));
p.add(conpane.add(l2));
p.add(t2 = new JTextField(10));
p.add(conpane.add(t2));
p.add(l3 = new JLabel("Bangsa:"));
p.add(conpane.add(l3));
p.add(t3 = new JTextField(10));
p.add(conpane.add(t3));
conpane.add(p,"North");
JPanel q = new JPanel();
q.setLayout(new FlowLayout());
q.add(btnOK = new JButton("OK"));
q.add(conpane.add(btnOK));
q.add(btnReset = new JButton("Reset"));
q.add(conpane.add(btnReset));
conpane.add(q,"South");
}
}
[nota: untuk melarikan aplet ini anda perlu mencipta B1c.html terlebih dahulu – ini anda ingat bagaimana menciptanya kan?]
Soalan 2
a)
(i)
class TukarCelcius {
public double kira (double cels) {
double fahr;
fahr = (9.0/5)*cels+32;
return fahr;
}
}
(ii) Dengan menggunakan objek kelas di atas, tuliskan aplikasi Java menggunakan arahan for untuk menghasilkan output seperti diminta adalah seperti berikut:
class ap_TukarCelcius {
public static void main(String[] args) {
double f;
TukarCelcius celcius = new TukarCelcius();
System.out.println("Suhu Celcius Suhu Fahrenheit");
System.out.println("-------------------------------");
for (double i=40.0; i>=35.00; i=i-1.0) {
f = celcius.kira(i);
System.out.println(i + "\t"+ f);
}
}
}
[Nota: saya berjaya mendapatkan output yang pada asasnya betul, teetapi tidak dapat mendapatkan output yang benar-benar serupa seperti yang diminta, oleh kerana saya tidak sempat mencari bagaimana hendak setkan “decimal point” kepada 2. Sila rujuk http://w3.one.net/~monkey/java/rounding/ untuk mendapat tahu bagaimana membuat “rounding” nombor berjenis “double”, dan http://mindprod.com/jglosscurrency.html untuk mendapat tahu bagaimana hendak set “decorative decimal point”.]
(b) Aplet untuk menghasilkan antara muka seperti dipinta:
import java.awt.*;
import javax.swing.*;
public class MesinKira extends JApplet {
private JButton b0, b1, b2, b3, b4, b5, b6, b7, b8, b9;
private JButton b10, b11, b12, b13, b14, b15;
private JTextField t1;
public void init () {
Container conpane = getContentPane();
JPanel t = new JPanel();
t.setLayout(new FlowLayout());
t.add(t1 = new JTextField(15));
t.add(conpane.add(t1));
conpane.add(t,"North");
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4,4));
b7 = new JButton("7"); panel.add(b7);
b8 = new JButton("8"); panel.add(b8);
b9 = new JButton("9"); panel.add(b9);
b10 = new JButton("/"); panel.add(b10);
b4 = new JButton("4"); panel.add(b4);
b5 = new JButton("5"); panel.add(b5);
b6 = new JButton("6"); panel.add(b6);
b11 = new JButton("*"); panel.add(b11);
b1 = new JButton("1"); panel.add(b1);
b2 = new JButton("2"); panel.add(b2);
b3 = new JButton("3"); panel.add(b3);
b12 = new JButton("-"); panel.add(b12);
b0 = new JButton("0"); panel.add(b0);
b13 = new JButton(" "); panel.add(b13);
b14 = new JButton("="); panel.add(b14);
b15 = new JButton("+"); panel.add(b15);
conpane.add("Center",panel);
}
}
[nota: untuk melarikan aplet ini anda perlu mencipta MesinKira.html terlebih dahulu – ini anda ingat bagaimana menciptanya kan?]
Soalan 3
(a) (i) :
class Akaun {
private int id;
private double baki=0;
public Akaun(int id, double balance) {
setId(id);
setBalance(balance);
}
public int getId() {
return id;
}
public double getBalance() {
return baki;
}
public void setId(int id_baru) {
id = id_baru;
}
public void setBalance(double balance) {
baki = balance;
}
public void withdraw(double amount) {
baki = baki - amount;
}
public void deposit(double amount) {
baki = baki + amount;
}
}
(a) (ii) :
class ap_akaun {
public static void main(String[] args) {
Akaun ak = new Akaun(1122,20000);
ak.withdraw(2500);
ak.deposit(3000);
System.out.println("No akaun adalah: " + ak.getId());
System.out.println("Baki semasa adalah: $" + ak.getBalance());
}
}
(b) :
import javax.swing.*;
import java.awt.*;
public class q3b extends JApplet {
private JRadioButton rb1, rb2, rb3;
private ButtonGroup bg;
public void init() {
Container conpane = getContentPane();
bg = new ButtonGroup();
conpane.setLayout(new FlowLayout());
rb1 = new JRadioButton("The Adventures of Javaman", true);
bg.add(rb1);
conpane.add(rb1);
rb2 = new JRadioButton("Java by Example", false);
bg.add(rb2);
conpane.add(rb2);
rb3 = new JRadioButton("Java and the Single Guy", false);
bg.add(rb3);
conpane.add(rb3);
}
}
[nota: untuk melarikan aplet ini anda perlu mencipta q3b.html terlebih dahulu, dengan HEIGHT=100 dan WIDTH=200 agar ketiga-tiga baris pilihan berada di tengah-tengah – ini anda ingat bagaimana menciptanya kan? Walaubagaimanapun, jika saiz tetingkap aplet dibesarkan, “layout” juga akan berubah – mungkin ada penyelesaian yang lebih baik daripada yang dicadangkan di atas, mungkin menggunakan pengurus bentangan “grid layout” dan Jpanel]
Soalan 4
(a) :
class ap_kereta {
public static void main(String[] args) {
// (i)
TempatLetakKereta A = new TempatLetakKereta(100);
TempatLetakKereta B = new TempatLetakKereta(200);
// (ii)
Kereta car = new Kereta("JAG 3245");
A.masuk(car."JAG 3245");
Kereta car = new Kereta("BCF 1123");
A.masuk(car."BCF 1123");
Kereta car = new Kereta("WJP 332");
A.masuk(car."WJP 332");
// (iii)
Kereta car = new Kereta("JAG 3245");
B.masuk(car."JEY 345");
Kereta car = new Kereta("WJJ 2543");
B.masuk(car."WJJ 2543");
// (iv)
B.keluar(car."WJJ 2543");
// (v)
A.keluar(car."JAG 3245");
A.keluar(car."BCF 1123");
A.keluar(car."WJP 332");
}
}
[Nota: untuk jawapan untuk bahagian (v) di atas, saya kurang pasti samada ia adalah jawapan yang terbaik. Lagipun, metod lot() dan penuh() dari kelas TempatLetakKereta tak digunakan]
(b):
[Nota: soalan ini sama dengan soalan latihan 20.3 dalam nota modul]
import java.awt.*;
import javax.swing.*;
public class Convert extends JApplet {
public void init(){
Container contain=getContentPane();
contain.setLayout(new FlowLayout(FlowLayout.CENTER));
JPanel panel1=new JPanel();
panel1.setLayout(new GridLayout(4,1,0,6));
JPanel panel2=new JPanel();
panel2.setLayout(new GridLayout(6,1));
JPanel panel3=new JPanel();
panel3.setLayout(new GridLayout(4,1,0,6));
JLabel lbl1 = new JLabel("Convert from:");
panel1.add(lbl1);
ButtonGroup btn=new ButtonGroup();
JRadioButton rb1=new JRadioButton("Fahrenheit", true);
btn.add(rb1);
panel1.add(rb1);
JRadioButton rb2=new JRadioButton("Celcius", false);
btn.add(rb2);
panel1.add(rb2);
JRadioButton rb3=new JRadioButton("Kelvin", false);
btn.add(rb3);
panel1.add(rb3);
JLabel lbl2=new JLabel("Fahrenheit");
panel2.add(lbl2);
JTextField txt1=new JTextField(15);
panel2.add(txt1);
JLabel lbl3=new JLabel("Celcius");
panel2.add(lbl3);
JTextField txt2=new JTextField(15);
panel2.add(txt2);
txt2.setBackground(Color.gray);
JLabel lbl4=new JLabel("Fahrenheit");
panel2.add(lbl4);
JTextField txt3=new JTextField(15);
txt3.setBackground(Color.gray);
panel2.add(txt3);
JLabel lbl5 = new JLabel("Convert to:");
panel3.add(lbl5);
ButtonGroup btn1=new ButtonGroup();
JRadioButton rb4=new JRadioButton("Fahrenheit", false);
btn1.add(rb4);
panel3.add(rb4);
JRadioButton rb5=new JRadioButton("Celcius", true);
btn1.add(rb5);
panel3.add(rb5);
JRadioButton rb6=new JRadioButton("Kelvin", false);
btn1.add(rb6);
panel3.add(rb6);
contain.add(panel1);
contain.add(panel2);
contain.add(panel3);
}
}
[nota: untuk melarikan aplet ini anda perlu mencipta Convert.html terlebih dahulu, dengan WIDTH=420 dan HEIGHT=180 agar output kemas – ini anda ingat bagaimana menciptanya kan?]
Soalan 5
(a):
import java.io.*;
class Markah {
public static void main(String[] args) throws IOException {
Pembaca baca = new Pembaca();
int[] markahPelajar = new int[100];
int jumlahMarkahPelajar = 0;
int bilPelajar = 0;
// awalkan nilai markah bagi semua pelajar kepada 0
for (int h=0; h<=99; h++) {
markahPelajar[h] = 0;
}
while (bilPelajar <= 99) {
System.out.println("Sila masukkan markah bagi pelajar no : " + bilPelajar);
markahPelajar[bilPelajar]=baca.bacaInt();
bilPelajar++;
}
// set nilai awal markah tertinggi dan markah terendah kepada nilai tatasusunan pertama
int markahTertinggi = markahPelajar[0];
int markahTerendah = markahPelajar[0];
// Cari markah purata
for (int h=0; h<=99; h++) {
jumlahMarkahPelajar=jumlahMarkahPelajar+markahPelajar[h];
}
System.out.println("Purata markah : " + jumlahMarkahPelajar/100);
// Cari markah tertinggi
for (int h=1; h<=99; h++) {
if (markahTertinggi < markahPelajar[h]) {
markahTertinggi = markahPelajar[h];
}
}
System.out.println("Markah tertinggi : " + markahTertinggi);
// Cari markah terendah
for (int h=1; h<=99; h++) {
if (markahTerendah > markahPelajar[h]) {
markahTerendah = markahPelajar[h];
}
}
System.out.println("Markah terendah : " + markahTerendah);
}
}
(b):
[nota: Hampir sama dengan contoh aturcara 21.5 di ms 264 dalam nota modul]
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Huruf extends JApplet implements ItemListener {
private JTextField txtInput;
private JCheckBox chkTebal, chkCondong;
public void init() {
Container conpane = getContentPane();
conpane.setLayout(new FlowLayout());
conpane.setBackground(Color.white);
txtInput = new JTextField("Lihat perubahan teks",20);
chkTebal = new JCheckBox("Bold",true);
chkCondong = new JCheckBox("Italic",true);
chkTebal.setBackground(Color.white);
chkCondong.setBackground(Color.white);
chkTebal.addItemListener(this);
chkCondong.addItemListener(this);
conpane.add(txtInput);
conpane.add(chkTebal);
conpane.add(chkCondong);
}
public void itemStateChanged(ItemEvent e) {
int t=0, c=0;
Font font;
if (chkTebal.isSelected())
t=Font.BOLD;
if (chkCondong.isSelected())
c=Font.ITALIC;
font= new Font("serif",t+c,14);
txtInput.setFont(font);
}
}
[nota: untuk melarikan aplet ini anda perlu mencipta Huruf.html terlebih dahulu, dengan WIDTH=400 dan HEIGHT=50 agar output kemas – ini anda ingat bagaimana menciptanya kan?]
TAMAT