View
236
Download
3
Embed Size (px)
Citation preview
Menulis Program
PengenalanBab ini tidak mangajar anda bagaimana
untuk menulis aturcara/program tetapi menerangkan beberapa prinsip kejuruteraan perisian yang perlu anda ambil kira apabila menulis aturcara.
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.
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
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.
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
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…
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
**********************************************************************************
Panduan pengaturcaraan
Pengaturcaraan banyak melibatkan kreativiti
Rekabentuk adalah panduan untuk fungsi atau tujuan sesuatu komponen
Pengaturcara ada fleksibiliti dalam mengimplementasikan rekabentuk kepada kod.
Tidak kira apa bahasa pengaturcaraan yang digunakan, setiap komponen program melibatkan TIGA aspek utama: Struktur kawalan/’control structure’ Algoritma Struktur data/’data structure’
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
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.
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
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
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
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
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
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’
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
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
Komen-komen lain dalam program Komen tambahan pada kod Menambahkan kefahaman terhadap
program Cth:
// menambah i3 i3 = i3 + 1
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);
‘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
'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)
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.
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
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 …