March 13, 2005

CBDS2103 - struktur data - contoh jawapan kepada latihan dalam buku modul (UNIT 3)

CBDS2103 - struktur data - contoh jawapan kepada latihan dalam buku modul - unit 3 (bab 8-10)

perhatian:
1 jangan terus salin jawapan; cuba buat sendiri dahulu soalan latihan tersebut sebelum melihat kepada jawapan.
2 tidak semua latihan saya sempat cari jawapannya
3 jawapan ini hanyalah untuk pelajar di bawah tutoran saya sahaja
4 walaupun usaha sebaik mungkin telah diambil untuk memastikan jawapan adalah tepat, tidak ada jaminan semua
jawapan adalah semestinya tepat

latihan 8.1
Nota: ini adalah isihan pilihan mudah, sama dengan aturcara seperti di ms 100. Untuk langkah demi langkah, sila lihat contoh di rajah 8.4 (ms 99)

latihan 9.1
tidak, sebab ia akan mencari indeks yang terkecil. Ia memerlukan tatasusunan yang telah diisih terlebih dahulu.

latihan 9.2
1 tidak boleh
2 perlu isih senarai tersebut terlebih dahulu

latihan 9.3
1 rujuk ms 113
2 (a) isih terlebih dahulu
(b) gelintar seperti di ms 113

latihan 10.1
soalan 1
3
/ 1 4
\ 2 5
6

soalan 2
5
/ 1 6
3
/ 2 4

soalan 3
bentuk pokok yang terhasil adalah bergantung kepada turutan data diselitkan, bukannya set data. Set data yang sama tidak akan menjamin bahawa bentuk PGD yang dihasilkan akan sama.


latihan 10.2
fungsi ini boleh didapati dari laman web berikut: http://www.stanford.edu/~blp/avl/libavl.html/BST_item_deletion_function.c.txt
sila dapatkan penerangan lanjut dari laman web berikut: http://www.stanford.edu/~blp/avl/libavl.html/Deleting-from-a-BST.html
nota: laman web yg dinyatakan di ms 130 tidak berfungsi lagi kerana ia telah digantikan dengan yg tersebut di atas.

soalan tutorial 1 (ms 131)
jawapan adalah hampir sama dengan aturcara di ms 129, cuma bezanya adalah bil data:30 (bukan 10) dan buang fungsi postorder dan preorder.

soalan tutorial 2
rujuk ms 99

contoh aturcara
[dibuat kerana kadangkala ada kesilapan pada aturcara yang tertera pada nota modul, dan aturcara pada nota modul itu tidak lengkap - saya taipkan ini semula untuk membantu pelajar. Sila kompil dan larikan.]

contoh aplikasi isihan (ms 109)
#include
#define bil 5

void bacaData(int x[],int n);
void selectSort(int x[],int n);

void main() {
int i;
int data[bil];
int pilihan;

printf("baca data: \n");
bacaData(data,bil);

printf("isih pilihan\n");
selectSort(data,bil);
for (i=0;i0;i--) {
indx=0;
large=x[0];
printf("1 x[0] is currently %d\n",x[0]);
printf("1 indx is currently %d\n",indx);
printf("1 i is currently %d\n",i);
for (j=1;j<=i;j++) if (x[j]>large) {
large=x[j];
indx=j;
}
x[indx]=x[i];
x[i]=large;
printf("2 x[0] is currently %d\n",x[0]);
printf("2 indx is currently %d\n",indx);
printf("2 i,x[indx],x[i] is currently %d,%d,%d\n",i,x[indx],x[i]);
}
}

contoh aturcara gelintar (ms 116)
#include

int gelintarJujukan(int list[],int lastIndx,int target);

void main() {
int i,data[12];
int nom,jumpa;

for (i=0;i<12;i++) jumpa="gelintarJujukan(data,i,nom);" indx="0;indx<="lastIndx;indx++)" target="="list[indx])">
#include

typedef struct PokokDedua {
int data;
struct PokokDedua *anak_kiri;
struct PokokDedua *anak_kanan;
} POKOK_DEDUA;
typedef POKOK_DEDUA PGD;

void ciptaPGD(PGD **pokok);
void selitPGD(PGD **p2, int Item);
PGD *nodBaruPGD(int item);
void inOrder(PGD *j);
void postOrder(PGD *j);
void preOrder(PGD *j);

void main() {
int a, data;
PGD *pgd;
ciptaPGD(&pgd);

for (a=1;a<=10;a++) { printf("Masukkan satu nombor:"); scanf("%d",&data); selitPGD(&pgd,data); } printf("Penjelajahan dalam-tertib: "); inOrder(pgd); printf("\nPenjelajahan pasca-tertib: "); postOrder(pgd); printf("\nPenjelajahan pra-tertib: "); preOrder(pgd); } void ciptaPGD(PGD **pokok) { *pokok=NULL; } void selitPGD(PGD **p2, int item) { PGD *t,*b; t=*p2; b=NULL; while ((t) && (item!=t->data)) {
b=t;
if (itemdata)
t=t->anak_kiri;
else
t=t->anak_kanan;
}

if (t!=NULL)
printf("\nRalat: data telah wujud");
else {
t=nodBaruPGD(item);
if (b==NULL)
*p2=t;
else {
if (itemdata)
b->anak_kiri=t;
else
b->anak_kanan=t;
}
}
}

PGD *nodBaruPGD(int item) {
PGD *p=NULL;
p=(PGD*) malloc (sizeof(PGD));
if (p==NULL)
printf("ralat");
else {
p->data=item;
p->anak_kiri=NULL;
p->anak_kanan=NULL;
}
return p;
}

void inOrder(PGD *j) {
if (j) {
inOrder(j->anak_kiri);
printf("%d ",j->data);
inOrder(j->anak_kanan);
}
}

void postOrder(PGD *j) {
if (j) {
postOrder(j->anak_kiri);
postOrder(j->anak_kanan);
printf("%d ",j->data);
}
}

void preOrder(PGD *j) {
if (j) {
printf("%d ",j->data);
preOrder(j->anak_kiri);
preOrder(j->anak_kanan);
}
}

February 27, 2005

CBDS2103 - struktur data - contoh jawapan kepada latihan dalam buku modul (UNIT 2)

CBDS2103 - struktur data - contoh jawapan kepada latihan dalam buku modul - unit 2 (bab 5-7)

perhatian:
1 jangan terus salin jawapan; cuba buat sendiri dahulu soalan latihan tersebut sebelum melihat kepada jawapan.
2 tidak semua latihan saya sempat cari jawapannya
3 jawapan ini hanyalah untuk pelajar di bawah tutoran saya sahaja
4 walaupun usaha sebaik mungkin telah diambil untuk memastikan jawapan adalah tepat, tidak ada jaminan semua
jawapan adalah semestinya tepat


latihan 5.1
D dianjak ke lokasi A[2]
E dianjak ke lokasi A[3]
F dianjak ke lokasi A[4]
G dianjak ke lokasi A[5]
H dianjak ke lokasi A[6]
A[7] menjadi NULL

latihan 5.2
[maaf terdapat kesilapan kepada apa yang saya terangkan dalam tutorial 3 yg lalu]
penuding akan menunjuk kepada unsur kedua dalam senarai terpaut pList iaitu B.

latihan 5.3
1
kandungan senarai terpaut pList akan dicetak

2
[setelah membuat pembetulan pada soalan iaitu senarai terpaut pertama (yang mengandungi A,B,C,D) adalah pList1 [dan bukannya

pList2]]
(a) pList1 disambungkan dengan pList2, iaitu penuding untuk D menunjuk kepada E.
(b) unsur D disambungkan kepada unsur A, menjadi satu bulatan.

latihan 6.1
10

latihan 6.2
CiptaTimb(&timb);
MasukTimb(nom,&timb);
KeluarTimb(&nom,&timb);

latihan 6.3
1
ralat di baris yg mengandungi KeluarTimbunan(&c,timb1) kerana "timb1" sepatutnya "&timb1"
apabila ralat ini diperbetulkan seperti di atas, output adalah:

Kandungan timb1: 20 15
Kandungan timb2: 27745 28018 28526 25153 2573 29295 29298 25888 25956 26998 26948 2573 29806 25965 28263 26995 29537 8306

25972 28265 28528 8300 27765 19968 11884 29806 18720 25710 24940 29295 16928 14392 14641 8233 25384 8308 26727 26994 31088

28483 8237 8259 11631 25202 30036 0 0 251 0 17752 17710 12589 12344 23601 32336 19791 17247 17244 14915 0 -24 2026 -28 1 285

-26 -26 20 0 1608 -38 0
Nilai a: 15
Nilai b: 20
Nilai c: 20

2
[belum sempat dibuat]

latihan 7.1
prasyarat bagi operasi mengeluarkan item dari giliran adalah: giliran mesilah tidak kosong, kerana jika giliran kosong (tidak

ada satu pun unsur wujud di dalamnya), bagaimana pula hendak mengeluarkan apa-apa unsur dari dalamnya?

latihan 7.2
BENAR, iaitu giliran telah penuh

latihan 7.3
[belum sempat dibuat]

Soalan tutorial 1 dan 2
[belum sempat dibuat]

contoh aturcara
[dibuat kerana kadangkala ada kesilapan pada aturcara yang tertera pada nota modul, dan aturcara pada nota modul itu tidak

lengkap - saya taipkan ini semula untuk membantu pelajar. Sila kompil dan larikan.]

contoh aturcara 5.1 (ms 71)
#include

struct listNode {
char data;
struct listNode *nextPtr;
};

typedef struct listNode LIST;
typedef LIST *listPtr;
typedef enum bool {PALSU,BENAR} BOOL;

void ciptaSenarai(LIST **);
LIST *nodBaru(char);

void selitSenarai(LIST **, LIST *, LIST *);

/* void selitSenarai(LIST **, LIST *);*/

void jejakSenarai(LIST *);

void main() {
char item;
LIST *senarai, *tempNod;

ciptaSenarai(&senarai);
printf("Masukkan perkataan diakhiri simbol '$':");
while ((item=getchar()) != '$') {
tempNod = nodBaru(item);
selitSenarai(&senarai,tempNod,NULL);

/* selitSenarai(&senarai,tempNod);*/

}
jejakSenarai(senarai);
printf("\n");
}

void ciptaSenarai(LIST **sList) {
*sList=NULL;
}

void selitSenarai(LIST **sList, LIST *tempNod, LIST *nextPtr) {
nextPtr=tempNod;
tempNod->nextPtr=*sList;
*sList=tempNod;
}

/*
void selitSenarai(LIST **sList, LIST *data) {
LIST *pnod;
pnod->data=data;
pnod->nextPtr=*sList;
*sList=pnod;
}*/

void jejakSenarai(LIST *sList) {
LIST *pnod;
printf("kandungan senarai terpaut: ");
for (pnod=sList;pnod!=NULL;pnod=pnod->nextPtr) {
printf("%c -> ",pnod->data);
}
printf("NULL");
}

LIST *nodBaru(char item) {
LIST *Nnod;
Nnod=(LIST *) malloc (sizeof(LIST));
if (Nnod!=NULL) {
Nnod->data=item;
Nnod->nextPtr=NULL;
}
return Nnod;
}

-------------------------------------------------------------------------

contoh aturcara 6.1 (ms78)

#include
#define HADTIMB 10

typedef int UNSUR;
typedef enum bool{FALSE,TRUE} BOOL;
typedef struct nod {
int atas;
UNSUR data[HADTIMB];
}TIMB;

void ciptaTimb(TIMB *t);
BOOL TimbKosong(TIMB *t);
BOOL TimbPenuh(TIMB *t);
void MasukTimb(UNSUR item,TIMB *t);
void KeluarTimb(UNSUR *item,TIMB *t);

main() {
int pembilang,nombor,temp;
TIMB ganjil,genap;

ciptaTimb(&ganjil);
ciptaTimb(&genap);

for (pembilang=1;pembilang<=10;pembilang++) {
printf("\ninput nombor: ");
scanf("\n%d",&nombor);
if (nombor%2==0)
MasukTimb(nombor,&genap);
else
MasukTimb(nombor,&ganjil);
}

printf("\nCetak no ganjil: ");
while (!TimbKosong(&ganjil)) {
KeluarTimb(&temp,&ganjil);
printf("%d ",temp);
}

printf("\nCetak no genap: ");
while (!TimbKosong(&genap)) {
KeluarTimb(&temp,&genap);
printf("%d ",temp);
}
}

void ciptaTimb(TIMB *t) {
t->atas=0;
}

BOOL TimbKosong(TIMB *t) {
return(t->atas==0);
}

BOOL TimbPenuh(TIMB *t) {
return(t->atas>=HADTIMB);
}

void MasukTimb(UNSUR item,TIMB *t){
if (TimbPenuh(t))
printf("\ntimbunan penuh\n");
else {
t->atas++;
t->data[t->atas]=item;
}
}

void KeluarTimb(UNSUR *item,TIMB *t) {
if (TimbKosong(t))
printf("\ntimbunan kosong\n");
else {
*item=t->data[t->atas];
t->atas--;
}
}

--------------------------------------------------------------------------

contoh aturcara 7.2.7 (ms 89)

#include
#define HadGiliran 10

typedef enum bool{FALSE,TRUE} BOOL;
typedef int JENISUNSUR;
typedef struct giliran {
int hadapan;
int belakang;
JENISUNSUR unsur[HadGiliran];
} GILIRAN;

void CiptaGiliran(GILIRAN *g);
BOOL GiliranKosong(GILIRAN *g);
BOOL GiliranPenuh(GILIRAN *g);
void MasukGiliran(int item, GILIRAN *g);
void KeluarGiliran(int *item,GILIRAN *g);
void paparGiliran(GILIRAN *g);

void main() {
GILIRAN GiliranQ;
int i, unsurdata;

CiptaGiliran(&GiliranQ);

printf("\nMasukkan satu set nombor integer: ");
for (i=1;i<=HadGiliran;i++) {
scanf("%d",&unsurdata);
MasukGiliran(unsurdata,&GiliranQ);
}

paparGiliran(&GiliranQ);

printf("\nKeluarkan nombor negatif...");
for(i=1;i<=HadGiliran;i++) {
KeluarGiliran(&unsurdata,&GiliranQ);
if (unsurdata>=0)
MasukGiliran(unsurdata,&GiliranQ);
}
paparGiliran(&GiliranQ);
}

void CiptaGiliran(GILIRAN *g) {
g->hadapan=0;
g->belakang=0;
}

BOOL GiliranKosong(GILIRAN *g) {
return ((BOOL)(g->hadapan==g->belakang));
}

BOOL GiliranPenuh(GILIRAN *g) {
return ((BOOL)(((g->belakang+1)%HadGiliran)==g->hadapan));
}

void MasukGiliran(int item, GILIRAN *g) {
if (GiliranPenuh(g))
printf("RALAT: GILIRAN PENUH\n");
else {
g->unsur[g->belakang]=item;
g->belakang=(g->belakang+1)%HadGiliran;
}
}

void KeluarGiliran(int *item,GILIRAN *g) {
if (GiliranKosong(g))
printf("RALAT: GILIRAN KOSONG\n");
else {
*item=g->unsur[g->hadapan];
g->hadapan=(g->hadapan+1)%HadGiliran;
}
}

void paparGiliran(GILIRAN *g) {
int i;
printf("\nKandungan giliran adalah: ");
for(i=0;i printf("%d ",g->unsur[i]);
}
}

-----------------------------------------------------------------------

February 11, 2005

CBDS2103 - struktur data - contoh jawapan kepada latihan dalam buku modul (UNIT 1)

CBDS2103 - struktur data - contoh jawapan kepada latihan dalam buku modul

perhatian:
1 jangan terus salin jawapan; cuba buat sendiri dahulu soalan latihan tersebut sebelum melihat kepada jawapan.
2 tidak semua latihan saya sempat cari jawapannya
3 jawapan ini hanyalah untuk pelajar di bawah tutoran saya sahaja
4 walaupun usaha sebaik mungkin telah diambil untuk memastikan jawapan adalah tepat, tidak ada jaminan semua
jawapan adalah semestinya tepat

latihan 1.1
(a) float nombor[30];
(b) char aksara[126];

latihan 1.2
(a) int ganjil[12]={1,3,5,7,11,13,15,17,19,21,23};
(b) float pemalar[6]={0.02,-0.45,5.77,-2.55,7.50,-5.00};

latihan 1.3
1(a) abc[0]=0; abc[1]=2;abc[2]=4;...............
1(b) c[0]=2.0;c[1]=0.5;c[2]=1.2;........
1(c) xyz[0]=5;xyz[1]=10;zyz[2]=0;..........

2(a) M[4]=2*2*3=12
(b) R[3]=R[1]*5=(R[0]*8)*5=8*8*5=320

lat 1.4 [not done yet]

lat 1.5 [not done yet]

lat 1.6 [not done yet]

lat 1.7 [not done yet]

lat 2.1
(a) aksara - sah
(b) rentetan - sah
(c) tak sah - takda tanda kutip
(d) tak sah - tanda kutip rentetan mesti berganda
(e) tak sah - bukan aksara 'next line' yang sah
(f) tak sah - tak ada tanda kutip penutup

lat 2.2
1 (a) status[0]='B'; status[1]='E';........
(b) status[0]='B';status[1]='E';.........status[6]='\0';
(c) status[0]='P';status[1]='A';.....status[5]='\0';
2(a) char arah[]="UTARA";
(b) char ipt[6]={'O','U','M'};

lat 2.3
P0n2a4u6c8

lat 2.4
(a) 75
(b) 49

lat 2.5 [not done yet]

lat 2.6 [not done yet]

lat 2.7 [not done yet]

lat 3.1
1 - boleh gabungkan jenis data yg berbeza
2 - no matrik - integer, nama - rentetan 30 aksara, kursus - rentetan 30 aksara

lat 3.2
1
struct tarikh {
int hari;
int bulan;
int tahun;
} tarikhSaya;

2 (a) perlu tambah noktah bertindih pada hujung aturcara
(b) perlu tambah perkataan struct pada kiri baris aturcara: struct orang orang;

lat 3.3
1(a) pelanggan.nama;
(b) pelanggan.nomPelanggan;
(c) pelanggan.nomTelefon;

2(a) strcpy(pelanggan.nama,"Aisyah");
(b) pelanggan.nomPelanggan=1226;
(c) strcpy(pelanggan.nomTelefon,"011-333011");


lat 3.4
(a)
#include
#define BIL 50
struct BUKU {
char tajuk[50];
int tahun;
float harga;
} buku[50];

void bacaMaklumat(struct BUKU[]);

void main() {
bacaMaklumat(buku);
}

void bacaMaklumat(struct BUKU b[]) {
FILE *fail;
int i;
fail = fopen("data.dat","r");
for (i=0; i
#define BIL 50
struct BUKU {
char tajuk[50];
int tahun;
float harga;
} buku[50];

void bacaMaklumat(struct BUKU[]);
void cetakMaklumat(struct BUKU[]);

void main() {
bacaMaklumat(buku);
cetakMaklumat(buku);
}

void bacaMaklumat(struct BUKU buku[]) {
FILE *fail;
int i;
fail = fopen("data.dat","r");
for (i=0; i fgets(buku[i].tajuk,50,fail);
fscanf(fail,"%d",&(buku[i].tahun));
fscanf(fail,"%f\n",&(buku[i].harga));
}
fclose(fail);
}

void cetakMaklumat(struct BUKU buku[]) {
int i;
for (i=0; i printf("%s%d %.2f\n", buku[i].tajuk, buku[i].tahun, buku[i].harga);
}
}

2 - not yet done

lat 4.1
1(a) penunjuk p kepada pembolehubah berjenis int
(b) penunjuk q kepada pembolehubah berjenis float
(c) pembolehubah a diisytiharkan sebagai jenis int
penunjuk p diumpukkan nilai alamat a

2(a) 10 10
(b) 17.500000

lat 4.2
nota: sebelum aturcara ini dilaksanakan pembetulan perlu dilakukan kepada kedua-dua pernyataan printf, di mana
mereka mestilah dalam bentuk ini: printf("a=%d, b=%d\n",a,b);
dan bukannya printf("a=%.2f, b=%.2f\n",a,b);
(a) a=50, b=4
(b)
a=10 b=5
a=50 b=4

lat 4.3
1 yg tidak sah adalah pernyataan t=p oleh kerana nama tatasusunan (t) adalah suatu penuding kepada unsur pertama tatasusunan.
2
[saya menganggap p=n]
p+3 adalah alamat lokasi ingatan (-42) manakala *(p+3) adalah nilai dalam tatasusunan yang ke 1+3=4 iaitu 40

lat 4.4
segmen aturcara sepatutnya ditulis seperti berikut:
int *n; int bil;
n=(int *) malloc (bil *sizeof(int));

soalan tutorial - belum dibuat

September 29, 2004

Manual ringkas cara memuat turun dan menggunakan pengkompil C yang dibekalkan oleh OUM

Oleh: Ebenezer Godomon (ebenezer at oum dot edu dot my)
Versi 2. September 2004

Nota:
(a) bermakna tekan kekunci Enter.
(b) C compiler = pengkompil C

Langkah-langkah am:
1 muat turun winzip dari www.oum.edu.my - tak perlu jika anda menggunakan windows xp.
2 muat turun (download) pengkompil c dari lms.oum.edu.my
3 pasang/instal winzip jika perlu
4 dwiketik C_compiler.zip
5 nyahmampat (extract) ke folder di cakera komputer cth, c:\windows\desktop
6 pergi ke persekitaran DOS
7 maksimumkan paparan ke skrin penuh (fullscreen) jika perlu
8 gunakan arahan tc untuk memulakan persekitaran turbo c. tekan Esc dua kali.
9 Dalam turbo C, gunakan arahan-arahan berikut:
Alt-F-S : untuk menyimpan fail
Alt-C-M : untuk mengkompil aturcara dan mengubah bahasa paras tinggi C kepada
bahasa mesin (executable file)
Alt-F-Q : pergi ke persekitaran DOS agar dapat melarikan (run) atucara yang telah dikompil.
F6: tekan kekunci ini untuk kembali ke persekitaran turbo c sekiranya ada ralat (error) pada aturcara


---------------------------------------------------------------------------------------
Langkah-langkah terperinci:

Muat turun (download) winzip dari laman web OUM

nota:
(a) Langkah ini hanya perlu dilaksanakan sekali sahaja.
(b) C_Compiler.zip adalah sebuah fail yang dimampatkan (compressed/zipped) dan mengandungi lebih daripada 80 buah fail yang diperlukan untuk melarikan perisian pengkompil C. Anda perlukan Winzip untuk menyahmampatkannya (uncompress/unzip). Walaubagaimanapun, anda tidak perlukan winzip jika anda menggunakan sistem pengoperasian Windows XP, kerana ia mempunyai perisian penyahmampatan secara "built in".

muat-turun winzip90.exe
nota: Langkah ini hanya perlu jika anda menggunakan windows versi sebelum XP. Jika anda menggunakan windows XP, sila pergi ke langkah 2 di bawah.

masuk ke internet
mulakan pelayar web (Internet Explorer dsb)
pergi ke laman web www.oum.edu.my dan login menggunakan nama login dan kata laluan (password) anda di bahagian Username dan Password di penjuru kanan atas skrin. Klik butang Login.
Tunggu sehingga anda telah berjaya login, yang akan ditunjukkan apabila dipaparkan teks seperti berikut di penjuru kanan atas skrin:
Welcome, [nama login anda]
di bahagian Staff@OUM di sebelah kiri skrin, di bawah submenu "menu", klik "download".
Sebuah skrin baru akan dipaparkan.
klik "Winzip 8.1" yang terletak di kategori "Software"
Sebuah tetingkap baru, iaitu tetingkap untuk memuat turun perisian winzip akan muncul.
Sebuah kotak dialog berjodol File DOwnload akan dipaparkan. Ketik butang "Save".
Sebuah kota dialog berjodol Save As akan dipaparkan. Ketik butang "Save" sekali lagi.
Sebuah kota dialog yang memberitahu peratusan perisian ini selesai dimuat turun akan dipaparkan.
Tunggu sehingga statusnya adalah 100 peratus, di mana anda mungkin dikehendaki mengetik butang "Close".

Muat turun C_Compiler.zip dari laman web myLMS

Jika anda telah berada dalam laman web oum, klik ikon myLMS.
Dalam kategori myCourseList, klik Pengaturcaraan Komputer (CBCP2103)
Skrol (scroll) ke bawah sekali di laman web Announcement (CBCP2103) dan klik C_compiler.zip
Sebuah tetingkap baru, iaitu tetingkap untuk memuat turun fail C_compiler.zip akan muncul.
Sebuah kotak dialog berjodol File DOwnload akan dipaparkan. Ketik butang "Save".
Sebuah kota dialog berjodol Save As akan dipaparkan. Ketik butang "Save" sekali lagi.
Sebuah kota dialog yang memberitahu peratusan perisian ini selesai dimuat turun akan dipaparkan.
Tunggu sehingga statusnya adalah 100 peratus, di mana anda mungkin dikehendaki mengetik butang "Close".

Cara menginstal C-compiler

Jika anda menggunakan sistem pengoperasian Windows XP (Home atau Pro):
Jika anda dwiketik ikon c-compiler.zip yang anda muatturun(download) itu ia akan menunjukkan semua fail yg ada dlm compiler tersebut. Anda perlu ketik arahan "Extract" (atau setara dengannya) di sebelah kiri tetingkap, dan perlu pilih mana-mana tempat yg sesuai. Contoh: di c:\my documents\c_compiler.

Jika anda menggunakan sistem pengoperasian yang lebih awal daripada Windows XP (contoh: Win98, Win ME):
Jika anda dwiketik ikon c-compiler.zip yang anda muatturun (download) itu perisian Winzip akan menunjukkan semua fail yg ada dlm compiler tersebut. Anda perlu ketik ikon "Extract" (yang terletak di "toolbar"), dan perlu pilih mana-mana tempat yg sesuai. Contoh: di c:\my documents\c_compiler.

Cara menggunakan persekitaran Turbo C untuk membuat aturcara C

Nota: Apa yg anda telah buat tadi adalah menginstal aturcara "Turbo C" iaitu suatu persekitaran yg boleh digunakan utk membuat aturcara C.

Sebelum memulakan Turbo C, untuk memudahkan anda, saya sarankan anda pastikan anda berada dalam folder Turbo C dengan cara masuk ke dalam folder yang mengandungi Turbo C ini. Tujuannya adalah agar anda tidak perlu bersusah-payah untuk menaip untuk pergi ke folder ini dalam persekitaran DOS nanti. COntoh: dwiketik ikon My Documents di desktop, kemudian dwiketik ikon c_compiler.

Untuk melarikan aturcara Turbo C iaitu persekitaran yg diperlukan untuk membuat aturcara C, anda perlu pergi ke "DOS Prompt". Terdapat beberapa cara untuk berbuat begini, tetapi bagi saya cara yg termudah adalah dengan mengklik Start-Run, kemudian menaip "command" (tanpa tanda quotes) kemudian tekan kekunci Enter.

Untuk memulakan editor atau persekitaran pengaturcaraan turbo C, taip tc dan tekan Enter.
Selepas itu tekan kekunci Esc (escape) sebanyak dua kali.

Di sinilah anda boleh bermula untuk menaip aturcara dalam bahasa C.

Mungkin mouse tidak berfungsi dalam aturcara turbo c ini, jadi anda perlu menggunakan kekunci enter dan anak panah untuk "berjalan" dalam skrin.

Melarikan (run) aturcara C

Terdapat beberapa cara untuk membuat perkara ini, tetapi cara yang telah saya tunjukkan adalah seperti berikut:

Untuk menyimpan fail, anda perlu tekan Alt pada masa yang sama dengan kekunci F, kemudian tekan kekunci S (Alt-F-C). Selepas itu anda perlu taipkan nama aturcara ini (pastikan ia berakhir dengan .C) kemudian tekan Enter.

Setelah selesai menaip aturcara, gunakan arahan Alt-C-M untuk mengkompil aturcara dan mengubah bahasa paras tinggi C kepada bahasa mesin (executable file)
Jika ada ralat pada aturcara, perkataan "Errors" akan dipaparkan pada tetingkap "Linking".
Tekan mana-mana kekunci (cth: Enter), kemudian tekan kekunci F6 untuk kembali ke persekitaran pengaturcaraan.
Betulkan kesilapan, kemudian gunakan arahan Alt-C-M untuk mengulangi proses pengkompilan.
Apabila ralat sudah selesai diperbetulkan, gunakan arahan Alt-F-Q utk pergi ke persekitaran DOS agar dapat melarikan (run) atucara yang telah dikompil. Berikan nama fail jika perlu/dipinta.

Anda boleh cuba melarikan aturcara anda dengan menaip nama aturcara anda.
Contoh: ben
Output aturcara akan dipaparkan di skrin.

Makluman tambahan tentang menaip aturcara C dalam persekitaran Turbo C

Sila taip aturcara-aturcara dalam mukasurat 41 dan 87 dalam nota modul CBCP2103 sebagai latihan anda.

Latihan tambahan adalah seperti berikut. Cuba taip, kompil dan larikan. Selamat mencuba.

/* aturcara 1*/
#include
void main() {
int hasil;
hasil = 15/4;
printf("%d", hasil);
}
---------------------------------------------------------------------------------
/* aturcara 2*/
#include
void main() {
printf("%.1f", 15/4.0);
}
---------------------------------------------------------------------------------
/* aturcara 3*/
#include
void main() {
printf("%f\n", (float)15/4);
printf("%.1f\n", (float)15/4);
printf("%.2f\n", 15/(float)4);
}

May 07, 2003

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

COMP3015: CONTOH JAWAPAN KEPADA BAHAGIAN A

Perubahan terakhir: 29-Apr-03 12:59:01 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) Jika Alpha mewarisi dari kelas Beta, kelas Alpha dikenali sebagai subkelas dan kelas Beta pula dikenali sebagai superkelas.

b) Dua (2) perbezaan antara metod pembina dan metod ahli:

- metod pembina mesti sama namanya dengan nama kelas, metod ahli boleh diberikan apa-apa nama.

- metod pembina tidak boleh mengembalikan apa-apa nilai, metod ahli boleh.

[rujuk nota modul ms 127 & 136]



Soalan 2

(i) Suatu metod pembina harus mempunyai nama yang sama dengan Kelas. BENAR

(ii) Suatu Kelas hanya boleh mempuunyai satu metod pembina sahaja SALAH (sila lihat contoh di soalan 3 – mempunyai 2 metod pembina tetapi dibezakan dengan penyaratan metod)

(iii) Suatu metod pembina mesti diistiharkan untuk setiap kelas SALAH



Soalan 3

obj1

attrib1: 4

str: “tiga”



obj2

atrib1: 3

str: “satu”



Soalan 4

Output adalah seperti berikut:

count is 101

time is 0

Nota: mengapa output time bukan 100? Ini adalah disebabkan metod increment merujuk kepada pembolehubah times di dalam aplikasi utama (main) iaitu times=0. Paling tinggi nilai times dapat naik dalam jangkahayat aplikasi ini adalah 1 iaitu ketika ia melalui proses times++ dalam metod increment. Selepas itu aplikasi utama (main) akan merujuk semula kepada nilai times yang diisytiharkan iaitu times=0. Oleh kerana itulah nilai times yang dioutputkan adalah 0. Jika kita inginkan output times=100, apa yang perlu dilakukan adalah menambah baris times++ ke dalam gelung for agar kelihatan seperti berikut:

for (int i=0; i<100;i++) {

increment(myCount, times);

times++;

}

Nilai terakhir times akan menjadi 100 kerana times++ merujuk kepada nilai times awal iaitu 0, yang kemudiannya ditambah satu demi satu sehingga akhir gelung.



Soalan 5

switch (a) {

case 1 : x+=5; break;

case 2 : x+=10; break;

case 3 : x+=16; break;

case 4 : x+=34;

}



Soalan 6

(i) TIDAK SAH

(ii) SAH

(iii) SAH

(iv) TIDAK SAH



Soalan 7

Capaian ke atas metod yang private dihadkan kepada pengisytiharan kelas empunya. Pengisytiharan metod sebagai private dilaksanakan sekiranya penghantaran mesej untuk melaksanakan metod itu dijangka berlaku dalam kelasnya sahaja.

[rujuk nota modul ms149-151]



Soalan 8

(i) anga

(ii) _

(iii) 29

(iv) Saya_sangat_suka__bahasa_JavaHello



Soalan 9

Bahasa pengaturcaraan Java menyediakan dua (2) jenis aturcara Java iaitu Aplet dan Aplikasi. Berikan dua perbezaan antara Aplet dan Aplikasi Java.

(i) Aplet boleh dilaksanakan pada laman web melalui pelayar web yang Java-enabled atau appletviewer. Aplikasi tidak boleh dilaksanakan dengan cara ini.

(ii) Aplet bukan aturcara kendiri iaitu ia tidak mempunyai metod main() di dalam blok aturcaranya. Aplikasi mesti mempunyai metod main().

[rujuk nota modul ms 205-206]



Soalan 10

class Aplikasi {

public static void main(String [ ] args ) {

Kira myKira = new Kira(5, 7, 28);

}

}

ICTS 2015 - Sem Ogos 2002

Jawapan kepada soalan-soalan peperiksaan akhir semester/tahun lepas

Nota: jawapan ini bukanlah diberikan oleh OUM.

Perubahan terakhir: 27-Apr-03 11:38 PM

Semester Ogos 2002

Bahagian A

1-A 11-C 21-B 31-B
2-A 12-B 22-C 32-A
3-B 13-B 23-A 33-B
4-D 14-C 24-C 34-B
5-B 15-B 25-D 35-B
6-A 16-A 26-C 36-D
7-B 17-B 27-B 37-C
8-A 18-A 28-B 38-A
9-C 19-C 29-B 39-B
10-C 20-A 30-D 40-D

Bahagian B

Soalan 1

(a)

(i)

Kerajaan Elektronik (Electronic Government)
Kad serbaguna (multipurpose card)
Sekolah pintar (smart schools)
Telekesihatan (telehealth)
[untuk huraian, rujuk laman web http://www.mdc.com.my]

(ii)

R&D Clusters
E-dagang (e-business) (World Wide Manufacturing Web & Borderless Marketing)
Pembangunan “techopreneur” (technopreneur development)
[untuk huraian, rujuk laman web http://www.mdc.com.my]

(b)

- Sesiri

- Selari

- AGP

- USB

- Wayar api

[untuk penerangannya, rujuk ms 28 dalam nota modul]

©

RAM – memerlukan bekalan kuasa elektrik yang berterusan, untuk memastikan kandungan ingatannya tidak hilang

ROM – tidak bergantung kepada bekalan kuasa elektrik; data di dalamnya adalah kekal dan dimasukkan semasa proses pengilangan



Soalan 2

(a)

(i) FQDN = Fully Qualified Domain Name

(ii) SMTP = Simple Mail Transfer Protocol

(iii) RTFM = Read The Fine Manual [ms 116 dlm modul]

(b)

[rujuk kepada nota ms 76 dalam nota modul]

©

- Menggunakan enjin gelintar; contoh: www.google.com

- Menggunakan portal, contoh: www.yahoo.com

(d)

Perisian sumber terbuka merupakan perisian yang kod sumbernya boleh dicapai dengan percuma oleh sesiapa pun dan boleh diubahsuai mengikut keperluan masing masing. Walaubagaimanapun, pengguna diminta untuk berkongsi perubahan tersebut dengan pengguna-pengguna lain melalui Internet. Dengan cara ini, diharapkan perisian tersebut akan terus diperbaiki agar menjadi perisian yang bermutu tinggi.

3 faedah : [ms 108 dalam nota modul]

- Pengguna boleh membuat pengubahsuaian sendiri terhadap perisian dan tidak terikat dengan mana-mana syarikat komersil;

- Pengguna berpeluang membetulkan sebarang ralat yang mungkin terdapat dalam kod sumber perisian;

- Pengguna juga boleh mempelajari bagaimana satu-satu perisian tersebut dibina berasakan kod sumber itu



Soalan 3

(a)

5 generasi bahasa pengatucaraan

[rujuk nota m.s. 176 dalam nota modul]

(b)

Sistem pengendalian akan menggunakan sebahagian dari ruang dalam cakera keras sebagai ingatan utama, apabila ingatan utama tidak mencukupi untuk melarikan sesuatu aplikasi. Dalam kaedah ini, sistem pengendalian memasukkan sebahagian perisian aplikasi ke dalam ingatan dan sebahagian ke dalam ingatan maya.

[rujuk nota ms 160 dalam nota modul]

©

Perisian pelengkapan kelompok (groupware) – perisian yang digunakan dalam rangkaian oleh sekumpulan pengguna yang bekerja dalam satu projek.

Perisian set – gabungan perisian-perisian yang dijual secara kelompok dengan harga yang murah jika dibandingkan membeli setiap perisian secara berasingan.

[rujuk nota ms 232 dalam nota modul]

(d)

Kelemahan-kelemahan DOS

- tidak menggunakan GUI; perlu ingat arahan (CLI)

- tidak berupaya menggunakan ingatan maya

- mempunyai had ingatan 1MB sahaja

- tidak mempunyai kemudahan multitugasan dan multiprosesan

[rujuk nota ms 163 dalam nota modul]



Soalan 4

(a)

Teknologi radio bersel – anda telah buat dalam Tugasan 2

(b)

Peranan Lapisan pengangkutan – memastikan semua mesej atau data dapat dihantar dan diterima tanpa sebarang kehilangan, duplikasi atau ralat data.

[rujuk nota ms 282 dalam nota modul]



©

3 jenis topologi LAN

[rujuk nota ms 302 dalam nota modul]

(d)

(i) Modem [rujuk nota ms 289 dalam nota modul]

(ii) Titi [rujuk nota ms 294 dalam nota modul]

(iii) Get laluan [rujuk nota ms 297 dalam nota modul]

(iv) Pengulang [rujuk nota ms 293 dalam nota modul]



Soalan 5

(a)

Metodologi SDLC

[rujuk nota ms 363 dalam nota modul]

(b)

Dalam rancangan Peralihan Berperingkat, sistem baru dilaksanakan mengikut fasa atau berperingkat. Hanya subsistem tertentu dilaksanakan dahulu. Apabila subsistem ini tiada masalah, barulah keseluruhan sistem baru digunakan.

Dalam Rancangan Peralihan Selari, kedua-dua sistem beroperasi secara serentak sehingga jangkamasa tertentu. Data diinputkan ke dalam kedua-dua sistem dan hasil output dari sistem baru dibandingkan dengan sistem semasa. Apabila pihak pengurusan berpuas hati dengan sistem baru, sistem semasa dihentikan.

[rujuk nota ms 368 dalam nota modul]

©

4 contoh:

- kad ID

- kata laluan

- tandatangan

- cap jari

[rujuk nota ms 382 dalam nota modul]