menulis program. pengenalan bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program...

27
Menulis Program

Post on 20-Dec-2015

238 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Menulis Program

Page 2: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

PengenalanBab ini tidak mangajar anda bagaimana

untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian yang perlu anda ambil kira apabila menulis aturcara.

Page 3: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

PengenalanDi persekitaran pekerjaan yang sebenar

– anda mungkin terlibat dengan tugas-tugas berikut: Menilai kod aturcara yang sedia ada

kerana anda hendak mengubah atau mengantikannya dengan yang baru atau menggunakannya (reuse) di aplikasi lain.

‘Code review process’ Menulis kod aturcara dan pengaturcaraan

dilaksanakan secara berkumpulan.Maka dari itu piawaian dan prosedur

program adalah diperlukan.

Page 4: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Piawaian dan prosedur pengaturcaraanAnda mesti tahu piawaian dan prosedur

organisasi sebelum memulakan proses penulisan kod

Kebanyakan organisasi menekankan kepada piawaian dan prosedur pengaturcaraan spt. format, dokumentasi dan sebagainya supaya kod dan dokumen yang dihasilkan adalah jelas bagi sesiapa yang membacanya

Page 5: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Piawaian untuk ANDA Piawaian dan prosedur melibatkan kaedah

mendokumenkan kod supaya ianya jelas dan mudah untuk diikuti.

Dokumentasi seperti ini membolehkan kita kembali semula ke aturcara dengan mudah setelah ditinggalkan

Bantu dalam mengesan kesilapan dan membuat perubahan kerana ia menjelaskan seksyen mana di kod aturcara yang melaksanakan sesuatu fungsi.

Page 6: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Piawaian untuk orang lain Bila kod sudah lengkap, ia akan digunakan

oleh ahli-ahli lain dlm pelbagai cara Contohnya:

Kod mungkin diuji oleh kumpulan lain. Pengintegrasian dengan aturcara lain untuk

membina keseluruhan sistem mungkin dilaksanakan oleh kumpulan lain.

Pengubahsuaian and penyelenggaraan sistem juga mungkin dilaksanakan oleh kumpulan lain

Page 7: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Piawaian untuk orang lain Maka adalah perlu untuk kita organisasikan,

format dan dokumenkan kod supaya akan memudahkan orang lain untuk memahaminya.

Contohnya - Penggunaan blok komen di permulaan aturcara – lihat gambarajah. Maklumat yang diberikan dapat membantu seseorang yang sedang mencari komponen ‘reusable’ untuk menentukan samada kod aturcara tersebut adalah yang dicari; kepada seseorang yang sedang mengesan ralat untuk menentukan samada komponen tersebut adalah puncanya ataupun yang juga terlibat; kepada penyelenggara, etc…

Page 8: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Blok Komen*********************************************************************************PROGRAM SCAN: program to scan a line of text for a given characterPROGRAMMER: Beatrice Clarman (718) 345-6789/bc@power .comCALLING SEQUENCE: CALL SCAN(LENGTH, CHAR, NTEXT)

where LENGTH is the length of the line to be scanned; CHAR is the character sought. Line of text is passed as array NTEXT.

VERSION 1: written 3 November 2000 by B. ClarmanREVISION 1.1: 5 December 2001 by B. Clarman to improve searching

algorithmPURPOSE: general-purpose scanning module to be used for each new

line of text, no matter the length. One of several text….DATA STRUCTURES: Variable LENGTH – integer

Variable CHAR – characterArray NTEXT – character array of length LENGTH

ALGORITHM: Reads array NTEXT one character at a time; if CHARis found, position in NTEXT returned in variable LENGTH; else variable LENGTH set to 0

**********************************************************************************

Page 9: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Panduan pengaturcaraan

Pengaturcaraan banyak melibatkan kreativiti

Rekabentuk adalah panduan untuk fungsi atau tujuan sesuatu komponen

Pengaturcara ada fleksibiliti dalam mengimplementasikan rekabentuk kepada kod.

Page 10: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Tidak kira apa bahasa pengaturcaraan yang digunakan, setiap komponen program melibatkan TIGA aspek utama: Struktur kawalan/’control structure’ Algoritma Struktur data/’data structure’

Page 11: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Struktur Kawalan Kebanyakan struktur kawalan untuk

komponen dicadangkan dalam senibina dan rekabentuk, maka kita akan terjemahkan ia kepada kod.

Bagi sebarang jenis rekabentuk, adalah penting bagi struktur program anda menunjukkan(reflect) rekabentuk struktur kawalan

Banyak panduan dan piawaian yang mencadangkan kod ditulis dengan cara di mana kita mudah membaca komponen dari atas ke bawah

Page 12: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Contoh:Benefit = minimum;If (age<75) goto A;Benefit = maximum;Goto C;If (age<65) goto B;If (age<55) goto C;A: if (age<65) goto B;

benefit=benefit*1.5+bonus;goto C;

B: if (age<55) goto C;benefit=benefit*1.5;

C: next statement

Boleh dapat hasil yang sama dgn susun semula:

If (age<55)

benefit = minimum;

Elseif (age<65)

benefit = minimum+ bonus;

Elseif (age<75) benefit=minimum*1.5+bonus;

Else

benefit=maximum;

(A) (B)

(A) Sukar untuk diikuti.

(B) Dengan menstruktur semula kod aturcara boleh memperbaiki aliran struktur kawalan.

Page 13: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

AlgoritmaRekabentuk program biasanya

spesifikasikan algoritma-algoritma yang akan digunakan di dalam pengkodan e.g. menggunakan algoritma Quicksort Namun demikian, anda ada fleksibiliti

dalam proses menukarkan algoritma kepada kod. Cuma ada kekangan terhadap bahasa implementasi dan juga perkakasan

Page 14: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Isu: Anda mungkin cuba menghasilkan kod yang boleh

dilarikan dengan cepat berbuat demikian boleh melibatkan masalah kos tersembunyi

Seimbangkan masa pelaksanaan dengan kualiti rekabentuk, piawaian dan juga keperluan pengguna.

Jangan abaikan kejelasan bagi kelajuan/’speed’. Sekiranya kelajuan penting, maka kena cuba pelajari bagaimana pengkompil boleh optimakan kod

Page 15: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Struktur dataDalam menulis program, kita mesti

format dan simpan data supaya pengurusan data dan juga manipulasi data adalah mudah

Beberapa teknik yang menggunakan struktur data: Memastikan program sentiasa mudah e.g.

penggunaan array. Menggunakan struktur data untuk

menentukan struktur program

Page 16: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Panduan Am Beberapa strategi yang berguna dalam

mengekalkan kualiti rekabentuk kod: Memasukkan kod pseudo. Pseudo kod sebagai

kerangka kerja (framework) bagi membina kod. Perbaiki dan tulis semula, jangan pula seolah-olah

menampal Gunasemula

Pereka gunasemula – dimana kita membina komponen gunasemula

Pelanggan gunasemula – dimana kita menggunakan komponen gunasemula

Page 17: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

DokumentasiDokumentasi program: menerangkan

kepada pembaca apa yang program tersebut akan lakukan dan bagaimana ia dilakukan

Dokumentasi dalaman: deskriptif yang ditulis secara terus kepada kod ‘descriptive material written directly within the code’

Dokumentasi luaran: selain dari dokumentasi dalaman

Page 18: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Dokumentasi DalamanMengandungi maklumat yang ditujukan

secara terus kepada sesiapa yang akan membaca kod program.

Biasanya maklumat ini terdapat pada permulaan setiap komponen.

Diletakkan di dalam satu set komen yang dipanggil ‘HEADER COMMENT BLOCK’

Page 19: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Header comment block: Nama komponen Penulis Kedudukan komponen dalam sistem Bila komponen ditulis dan diperbaiki Kenapa komponen wujud Bagaimana komponen tersebut

menggunakan struktur data, algoritma dan kawalan

Page 20: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Contoh - Header comment block:PROGRAM SCAN: program to scan a line of text for a given

characterPROGRAMMER: Beatrice Clarman (718) 345-6789/bc@power .comCALLING SEQUENCE: CALL SCAN(LENGTH, CHAR, NTEXT)

where LENGTH is the length of the line to be scanned; CHAR is the character sought. Line of text is passed as array NTEXT.

VERSION 1: written 3 November 2000 by B. ClarmanREVISION 1.1: 5 December 2001 by B. Clarman to improve

searching algorithmPURPOSE: general-purpose scanning module to be used for each

new line of text, no matter the length. One of several text….DATA STRUCTURES: Variable LENGTH – integer

Variable CHAR – characterArray NTEXT – character array of length LENGTH

ALGORITHM: Reads array NTEXT one character at a time; if CHARis found, position in NTEXT returned in variable LENGTH; else variable LENGTH set to 0

Page 21: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Komen-komen lain dalam program Komen tambahan pada kod Menambahkan kefahaman terhadap

program Cth:

// menambah i3 i3 = i3 + 1

Page 22: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Nama pembolehubah dan kenyataan label yang bermakna Pilih nama untuk pembolehubah dan juga

pernyataan yang mempunyai maksud Cth:

Weekage = (hhrate*hours)+(1.5)*(hours-4.0);

berbanding dengan… Z-(a*b)+(1.5)*(a)*(b-4.0);

Page 23: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

‘Formating to enhance understanding’ Format komen membantu pembaca untuk

memahami matlamat kod dan bagaimana matlamat dicapai

void free_store_empty()

{

static int I = 0;

if (I++ == 0) //guard against cerr

//allocating memory

cerr << “out of memory\n”; //tell user

abort (); //give up

Indentation dan juga spacing boleh menunjukkan kesan terhadap struktur kawalan

Page 24: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

'If (xcoord < ycoord)result = -1;elseif (xcoord == ycoord)if (slope1 > slope2)result = 0;else result = 1;elseif (slope1 > slope2)result = 2;elseif (slope1 < slope2)result = 3;elseresult = 4;

‘unindented code’

if (xcoord < ycoord) result = -1;elseif (xcoord == ycoord)

if (slope1 > slope2) result = 0;else result = 1;

elseif (slope1 > slope2) result = 2;elseif (slope1 < slope2) result = 3;else result = 4;

‘indentation and arranging the space’

(A) (B)

Page 25: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Data yang didokumenkan Perkara yang paling sukar bagi pembaca

adalah untuk memahami bagaimana data distrukturkan dan diguna

Penggunaan peta data adalah berguna dalam mentafsirkan kod.

Peta data mestilah selari dengan kamus data di dalam dokumentasi luaran supaya pembaca boleh mengesan manipulasi data melalui keperluan dan juga rekabentuk kod.

Page 26: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Dokumentasi Luaran Bertujuan untuk dibaca oleh mereka yang

tidak melihat kod sumber Memberi peluang untuk menerangkan

dengan lebih lanjut kerana dokumentasi dalaman hanya memberikan ‘overview of the program’

Memasukkan pandangan keseluruhan komponen sistem Menerangkan komponen tersebut Menerangkan algoritma dari segi formula, kes-kes

yang terlibat Perlihalan mengenai data – objek-objek dan kelas

Page 27: Menulis Program. Pengenalan  Bab ini tidak mangajar anda bagaimana untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian

Contoh: Dokumentasi Luaran – penerangan algoritmaThe algorithm for calculating the roots of a

quadratic equation has two steps. The first step is to calculate the discriminant, which is defined by a formula involving the coefficients of the equation . The second step depends on the value of the discriminant calculated in the first step. If the disriminant is less than zero this indicates that the equation has no real roots, and a message to that effect is output. If the discriminant is equal to zero …