Selasa, 11 Oktober 2011

Konsep Array

ARRAY

Suatu array adalah kumpulan variabel yang mempunyai tipe data sama dan
tersusun secara linear. Masing-masing elemen variabel mempunyai sebuah
nilai indeks. Setiap elemen array mampu untuk menyimpan satu jenis data
(yaitu: variabel).

  • Sifat Array
Array merupakan struktur data yang statis, yaitu jumlah elemen yang
ada harus ditentukan terlebih dahulu dan tak bisa di ubah saat program
berjalan. Untuk menyatakan array dalam PASCAL harus terlebih dahulu
mendefinisikan jumlah elemen array, mendefinisikan tipe data dari elemen
array.

Contoh:
Mhs=array[1..10] of string; { hanya berisi 10 variabel}

  • Array satu dimensi
Pernyataan di atas merupakan penjelasan tentang array dengan satu
dimensi. Pendefinisian array secara umum adalah sebagai berikut: jika kita
ingin membuat beberapa array dengan tipe/jenis yang sama, kita lebih baik
jika mendeklarasikan dengan type selanjutnya dengan deklarasi variabel. Array
1 demensi artinya ada satu baris array dengan terdiri atas banyak kolom.
Sintak.

Type
nama_array = ARRAY[bawah..atas] of tipe_data;
var
variabel_array : nama_array

atau dengan menggunakan statemen var :

var
variabel_array : ARRAY[bawah..atas] of tipe_data;

Penjelasan: Bawah dan Atas menyatakan batas untuk array. tipe_data adalah
merupakan tipe variabel yang dipunyai array (mis. Integer, char, real, dan
sebagainya.
Cara mengakses variable nilai adalah nama variable [ no indeks ].

Contoh:
Type mhs=array[1..10]of string;
Var M:mhs;
Begin
M[1]:=’armadyah’;
M[2]:=’aditya’;
M[3]:=’hendra gauthama’;
M[4]:=’armatyas’;
M[5]:=’guntur mahendra’;
End.

Program diatas adalah contoh memasukkan suatu nilai dalam suatu variable
array yang bersifat statis. Armadyah dimasukkan dalam suatu variable array
untuk indeks ke satu.

Contoh 1:
Program c_array;
uses wincrt;
type mhs=array[1..5]of string;
var m:mhs;
begin
m[1]:='armadyah';
m[2]:='aditya';
m[3]:='hendra gauthama';
m[4]:='arma tyas';
m[5]:='guntur mahendra';
 writeln('data dalam array range 1-3=',' ',m[1],'
',m[2],' ',m[3]);
writeln('data dalam array range 4-5=',' ',m[4],'
',m[5]);
readln;
end.


Output: 



Jika jumlah variable dalam suatu array banyak, maka tidak bisa dilakukan
pengisian secara statis. Karena itu pengisian harus bersifat dinamis dan
penggunakan suatu perulangan.



Contoh 2:
Program c_array1;
uses wincrt;
type mhs=array[1..7]of string;
var m:mhs; i:integer;
begin
for i:=1 to 7 do
begin
writeln('masukkan nama mahasiswa ke',' ',i,'=');
readln(m[i]);
end;
writeln('===============================');

 for i:=1 to 7 do
writeln('mahasiswa ke',' ',i,' ',m[i]);
readln;
end.


Output. 



Contoh 3:
Cari jumlah data dalam array, rata-rata dan nilai terbesar.
program jml_rata_terbesar;
uses wincrt;
const maks=10;
type matrik=array[1..maks] of byte;
var m:matrik;
i,jml,besar:integer;
rata:real;
begin
jml:=0;
for i:=1 to maks do
begin
write('masukkan nilai=');readln(m[i]);
jml:=jml+m[i];
rata:=jml/maks;
end;
writeln('jumlah data dalam array=',jml);
writeln('rata-rata dalam array=',rata:5:2);
besar:=m[1];
for i:=1 to maks do
begin
if m[i] > m[i+1] then besar:=m[i];
end;
writeln('nilai terbesar=',besar);
end.

Output:
 
  • Array dua dimensi
Dalam array dua dimensi terdiri atas baris (row) dan kolom (column).
Indeks pertama adalah baris, dan indeks kedua adalah kolom.

 Sintak:
Type
nama_array=array[baris,kolom]of typedata;
Var
Variable_array:nama_array;

Atau dengan statement var
Sintak:
Var
Variable_array:array[baris,kolom]of tipedata;

Cara mengakses nilai variable adalah nama variable [ no indeks baris, no
indeks kolom ].

 Contoh:
Type nilai=array[1..3,1..2]of integer;
Var n:nilai;
Begin
n[1,1]:=’70’;
n[1,2]:=’80’;
n[2,1]:=’80’;
n[2,2]:=’65’;
n[3,1]:=’75’;
n[3,2]:=’82’;
End.

Insap Santosa P., Dasar-dasar Pemrograman Pascal: Teori dan Program,
     Andi Offset, 1991.

Jogiyanto, H.M., Teori dan Aplikasi Program Komputer Bahasa Pascal
    Jilid I, Andi Offset, 1995.

Mamdyh M. Hanafi, Pemrograman Terstruktur dengan Bahasa Pascal,
    BPFE, 1995.

http://ft.uns.ac.id/ts/kul_ol/pascal/pascal3.html

http://sipil.uns.ac.id/kulol/Bahasa_Komputer/pascal1.html


http://id.wikipedia.org/wiki/Pascal_(bahasa_pemrograman

Senin, 10 Oktober 2011

Pengantar Teknologi Informasi KOMPUTASI

Referensi :
Santika WP
Departemen Teknik Informatika
Institut Teknologi Bandung

 KOMPUTASI

Pengertian Dasar
  •  Komputerisasi
–  masukan data, proses, dan simpan informasi dalam komputer atau keluarkan
– masuk ke dalam lingkungan masyarakat yang dikelilingi sistem-sistem berbasis komputer (ubiquitous)
–  to carry out, control, or conduct by means of a computer.
– Contoh ubiquitous systems: hand phone, personal digital assistance (PDA) / personal entertainment

    organizer (PEO).
  • Komputerisasi, connections:
– broad band & connectivity - sistem berbasis komputer dapat disambung ke internet
– miniaturization - sistem berbasis komputer akan makin kecil
– personalization - perusahaan pembuat akan menciptakan berbagai jenis pilihan,

    warna, dll. Sesuai selera komsumen
– mobility - sistem bersambung ke layanan mobile
– portability - sistem bisa dibawa kemanapun
– multimedia - palm pilots dirancang untuk dapat akses

   pada media beragam: graphics, text, voice
  • Apa arti
– Calculation ?
– Compute ?
– Computing [general-purpose] ?
– Computation ?
– Automation / Otomation ? 

  • Beda antara:
– Universal [computation] ?
– Non Universal [computation] = komputasi dengan metoda yang jelas. 
 
  • Contoh
– Misalkan harga pizza 20000 rp., dipotong jadi 8
   • makan sepotong, bayar 2500
   • makan 2 potong, bayar 5000
   • makan 4 potong, bayar 10000
– Harga(/p) = 20000 / 8
– Pizza berbentuk lingkaran, radius r
– Luas pizza [lingkaran] = p x r2
– Luas sepotong pizza = 1/8(p x r2)
– Bila r=20 cm, berapa harga per cm2 ?
– Komputasi universal / non universal ?
 


• Entry: computation
• Function: noun
• Definition: calculation
• Synonyms: ciphering, computing, counting, data
processing, estimating, estimation, figuring, guess,
reckoning, summing, totaling
• Antonyms: conjecture, guessing, guesswork
• Concept: mathematical reasoning
• Source: Roget's Interactive Thesaurus, First Edition (v 1.0.0),Copyright
© 2003 by Lexico Publishing Group, LLC. All rights reserve



Pemrograman

  • Program ~ å instruksi untuk komputer 
  • Pemrograman ~ aktifitas runut pembuatan
    program:
    – Pendefinisian masalah
    – [Deskripsi metoda formal]
    – Penyusunan algoritma [/flowchart]
    – Penulisan instruksi (coding) menggunakan sebuah
    bahasa formal
    – Uji coba & perbaikan kesalahan (debugging)
    – Run program
    – Dokumentasi
  • Algoritma (algorithm) ~ pseudocode
    – (rules) untuk menyelesaikan suatu masalah
    – Langkah-langkah logis dideskripsi tekstual dengan
    pola baku untuk menyelesaikan suatu masalah.
  • Program
    – Hasil koversi algoritma ke kode [bahasa program].
    – Spesifikasi rinci sebuah komputasi.
  • Bahasa Program
    – Sebuah notasi untuk mendeskripsi sebuah
    program.
  • Diagram alir (flowchart)
    – program flowchart: hasil
    konversi sebuah algoritma
    dengan menggunakan simbol
    baku [ANSI/IBM]
    – system flowchart
  • Struktur baku flowchart
    – Runtut (sequential / linear)
    – Alternatif/pilihan/seleksi
    (alternative/selection)
    – Berulang (loop/repetition)
  • Generasi Bahasa Program
    – [www.cs.qub.ac.uk/~J.Campbell/myweb]
    – G-0 [ …. 1954]: mesin, asembli
    – G-1 [54 - 58]: FORTRAN, ALGOL
    – G-2 [59 - 61]: COBOL, APL, LISP
    – G-3 [62 - 70]: BASIC, PL/I, Pascal, SIMULA
    – G-4 [70 - 80]: Smalltalk, C, Prolog
    – G-5 [80 - 2000 ?]: Modula, Ada, C++, Miranda,
    Dephi, Perl, Agent-Tcl, Java, Web-oriented.
    – G-6 [2001 …… ] ??
  • Imperative / algorithmic Paradigm
    – program dipandang sebagai rentetan instruksi (imperative
    [Latin] = imperare to command); komputer diperintah untuk
    mengerjakan sederet step, tiap step ada perubahan dalam isi
    dan status tiap elemen memori.
    – Secara implisit atau eksplisit program yang dibuat berbasis
    pada konsep arsitektur komputer von Neumann.
    – Struktur program merupakan kombinasi dari pola-pola:
    · Sequence.
    · Selection.
    · Repetition.
    · Procedural Abstraction
    · Procedural Abstraction with parameter(s).
  • Declarative Paradigm
    – Program merupakan kumpulan declarations of
    functions, and/or facts
    • PROLOG. Predicate logic.
    • Functional. Functions and application of these functions.
    – Declarative ~ mean that we achieve a program
    simply by declaring the specification of length.
    – Functional ~ mean a pure mathematical
    function, [one which takes an argument and
    returns a result - no side-effects such as change
    of state (memory contents)].
  • Object-oriented Paradigm
    – Dalam bahas yang murni OO, objects adalah
    separate entities yang merepresentasikan state
    and the means to compute.
    – Filosofi
    • OOA + OOD = OOAD
    • OOL : C++, Java, Modula-2, Newton Script, ADA
    • OOP
    • OODB --> OODBMS
    – C++ dapat dipandang sebagai sebuah bahasa
    hibrid, imperative/object-oriented language
  • Metode Terstruktur
    – ~ metodologi berdasar pada structure & discipline
    bagaimana membuat sebuah program: bentuk /
    pola, proses desain, pengkodean, dan uji coba.
    – Objektif
    • readability
    • efficiency
    • reliability
    • discipline (systematic & integrity)
    • reduce cost
    – GOTO-less programming
Metode & Teknik
  • Metode Modular
    – ~ organizing a program into small, independent
    units [modules].
    – Goals
    • Cacah program menjadi bagian-bagian kecil.
    • Cacah masalah menjadi lebih kecil & sederhana.
    • Verifikasi kebenaran penggunaan tiap modul program
    independently sebagai bagian dari sistem lebih besar.
    – Properties
    • tiap modul: simple, closed, discrete & visible, separately
    testable
    • tiap modul hanya memiliki single entry & exit point.
  • Metode Stepwise Refinement
    – Proses dikerjakan dengan runtutan langkah pasti
    – Tiap langkah jelas kaitan tasks & struktur data
    – Rincian tiap langkah
  • Metoda Top-down / Bottom-up
    – Designing, coding, and testing sebuah program
    dengan tahapan progresif.
    – Dihasilkan runtut tahapan yang structured &
    modular
    – Makin bawah modul = subfunctions yang
    mendefinisikan tasks makin detil
  • Teknik Diagram
    – Kategori
    • overview system analysis
    • program architecture
    • program detail
    • data structures
    – Tipe
    • DFD, functional decomposition, structure charts
    • HIPO, Warnier-Orr, Michael Jackson
    • flowchart, pseudocode, Nassi-Schneidermann
    • action diagram, decision tree, decision table
    • data structure, ERD, HOS charts, IDEF
  • Diagramming tools
    – AutoSketch;                    CorelDraw
    – Designer;                        EasyFlow
    – FlowModel;                     Illustrator
    – PHOTO-PAINT;             Photoshop
    – PowerPoint;                     netViz
    – QA-Flow;                         Schematic;
    – SiteMapper;                    SmartDraw
    – TeamFlow;                       Visio Technical
    – Visual Thought;               WBFlow
Struktur Data
  • Data structure
    – Cara penyimpanan data dalam komputer sehingga
    dapat digunakan secara efisien.
    – Pemilihan struktur data sangat pendting dalam
    desain program [pemrograman].
  • Abstract data type (ADT)
    – Struktur data dan operasi-operasi yang dapat
    dilakukan pada data tersebut.
    – Sebuah class dalam OOD = ADT, classes memiliki
    sifat-sifat tambahan (inheritance and
    polymorphism) not normally associated with ADTs.
  • Data Model
    – Hasil proses desain basisdata yang dapat dipakai untuk
    mengidentifkasi dan mengorganisasi data yang dibutuhkan
    logically & physically.
    – Data model akan menunjukkan semuainformasi yang harus
    terkandung dalam basisdata, bagaimana cara
    penggunaannya, dan bagaimana setiap item database akan
    terkait satu sama lainnya.
  • Data warehouse
    – Kumpulan terpadu data perusahaan, dapat diakses oleh
    business managers, administrators, service providers &
    researchers yang berhak untuk: dianalisis, menghasilkan ad
    hoc queries & reports, dan cara pemeliharaan data subsets.
  • Jenis [http://en.wikipedia.org/wiki/Data_structure]
    – Linear data structures:
    • list - array [bitmaps: images, heightfields/Digital Elevation Model]
    • linked list - skip list
    • Hash table
    • Stack [LIFO]
    • Queue [FIFO]
    • Deque
    – Graph data structures
    • Scene graph
    • Tree: AVL, binary search, B, Parse, Red-black, Splay, Heap, String
    trie, Suffix trie  

Minggu, 09 Oktober 2011

Pemrograman Komputer

Pemrograman Komputer

Dalam kehidupan sehari-hari, untuk berkomunikasi dengan orang lain, kita harus
menggunakan bahasa yang sama dengan orang tersebut. Apabila kita menggunakan
bahasa Indonesia, lawan bicara kita harus mengerti bahasa Indonesia. Apa yang terjadi
jika ternyata lawan bicara kita tidak mengerti bahasa Indonesia? Ada dua jalan yang bisa
ditempuh yaitu pertama, dengan menggunakan jasa penterjemah atau yang kedua,
dengan meguasai bahasa yang dimengerti oleh lawan bicara kita.

 
Ilustrasi di atas memberikan gambaran yang sama dengan yang terjadi pada
pemrograman komputer. Untuk bisa berkomunikasi dengan komputer, maka langkah
yang harus diambil adalah menguasai bahasa yang dimengerti oleh komputer.

 
Komputer, pada dasarnya, merupakan mesin digital yang hanya mengenal kondisi ada
arus dan tidak ada arus listrik (biasa disimbolkan angka 1) dan tidak ada arus listrik
(biasa disimbolkan angka 0). Dari kondisi tersebutlah maka dikenal bahasa mesin, yaitu
bahasa yang dikenal oleh komputer dengan menggunakan sandi 1 (satu) dan 0 (nol).
Pemrograman dengan bahasa mesin biasa digolongkan dalam bahasa tingkat rendah
(low level languages).

 
Karena bahasa mesin sangat susah, maka muncul ide untuk melambangkan untaian
sandi 1 dan 0 dengan singkatan kata yang lebih mudah dipahami manusia. Singkatan
kata ini kemudian disebut mnemonic code. Bahasa pemrograman yang menggunakan
singkatan kata (mnemonic code) tersebut adalah bahasa assembly. Bahasa assembly
menggunakan perangkat lunak untuk menerjemahkan/ mengkonversi perintah-perintah
assembly ke dalam bahasa mesin yang disebut assembler. Bahasa assembly merupakan
bahasa pemrograman tingkat menengah (intermediate level languages).

 
Contoh :

 
                             Bahasa mesin, dalam prosesor Intel 0011 1010 0000 1011. 
                             Bahasa assembly CMP AL, 0D (CoMPare AL with 0D)
Dapat dilihat bahwa singkatan CMP AL, 0D jauh lebh mudah dipahami dibandingkan
dengan 0011 1010 0000 1011.

 
Bahasa pemrograman assembly dirasakan masih terlalu sulit maka dikembangkan
bahasa pemrograman yang lebih user friendly. Bahasa pemrograman yang
menggunakan kata-kata yang mudah dimengerti oleh manusia. Bahasa pemgraman
seperti ini dikenal sebagai bahasa generasi ketiga atau disingkat 3GL (third-generation
language). Selain itu dikenal dengan nama 3GL, juga dikenal dengan nama bahasa

tingkat tinggi atau HLL (high level languages).

Bahasa pemrograman menggunakan perangkat lunak untuk mengkonversikan program
dalam bahasa manusiawi ke dalam bahasa assembly atau bahasa mesin, yang terdiri dari
dua jenis yaitu interpreter dan compiler


Source---------->Program penterjemah----------> Machine Languages
                Gambar 2.1 Proses penterjemahan

Interpreter menerjemahkan program baris per baris, artinya apabila suatu baris akan
dieksekusi, maka baris tersebut diterjemahkan dulu dalam bahasa mesin, baru
selanjutnya baris berikutnya yang akan dieksekusi. Contoh bahasa pemrograman yang
menggunakan interpreter adalah Basic.

 
Compiler menerjemahkan semua perintah dalam bahasa mesin baru kemudian
menjalankan hasil penerjemahan. Hasil penerjemahan tersebut disimpan dalam file atau
memori. Contoh bahasa yang menggunakan compiler adalah Pascal, C, dan C++.

 
Perkembangan bahasa pemrograman tidak berhenti sampai pada gen ketiga saja. Ada
generasi lanjutan, yaitu bahasa generasi keempat atau disingkat 4GL (fourth generation
languages). Bahasa generasi keempat ini biasanya digunakan dalam aplikasi database.
Selain itu juga digunkan dalam program berorientasi objek antara lain Visual C, Visual

Basic, Delphi, dan Visual Fox Pro serta masih banyak lagi.

Pemrograman Terstruktur
Ide pemrograman terstruktur pertama kali diungkapkan oleh Prof Edsger Djikstra dari
Universitas Eindhoven sekitar tahun 1965. Dalam papernya, Djikstra mengusulkan
peniadaan perintah GOTO pada pemrograman terstruktur. Berbeda dengan pendapat
HD Millis yang mengungkapkan bahwa pemrograman terstruktur tidak tergantung pada
ada tidaknya GOTO tetapi lebih pada struktur program itu sendiri.

Dari pernyataan keduanya, memberikan gambaran tidak adanya definisi yang jelas
untuk pemrograman terstruktur. Tetapi dapat digarisbawahi bahwa pemrograman
terstruktur merupakan suatu proses untuk mengimplementasikan urutan langkah untuk
menyelesaikan suatu masalah dalam bentuk program.

Tujuan dari pemrograman terstruktur adalah:
 
(1) meningkatkan kehandalan suatu progam,
(2) program mudah dibaca dan ditelusuri,
(3) menyederhanakan kerumitan program,
(4) pemeliharaan program, dan
(5) meningkatkan produktivitas pemrograman.


Pemrograman terstruktur bercirikan:

(1) mengandung teknik pemecahan yang tepat dan benar,
(2) memiliki algoritma pemecahan masalah yang sederhana, standar dan
      efektif,
(3) memiliki struktur logika yang benar dan mudah dipahami,
(4) terdiri dari 3 struktur dasar yaitu urutan, seleksi dan perulangan,
(5) menghindari penggunaan GOTO,
(6) biaya pengujian rendah,
(7) memiliki dokumentasi yang baik,
(8) biaya perawatan dan dokumentasi yang dibutuhkan rendah.


Langkah-langkah untuk membuat program yang baik dan terstruktur adalah:

1. Mendefinisikan Masalah

Merupakan langkah penting dan vital yang paling sering dilompati oleh banyak
pemrogram. Karena sangat pentingnya pendefinisian masalah ini maka sangat
dianjurkan untuk terlebih dahulu mendefinisikan masalah yang akan dipecahkan, apa
saja masukkan yang harus diberikan dan bagaimana keluarannya.

2. Menentukan Solusi

Setelah masalah didefinisikan dengan jelas, masukan yang akan diberikan dan keluaran
yang diinginkan juga sudah diketahui selanjutnya adalah mencari jalan bagaimana
memecahkan masalah tersebut dengan masukan yang sudah diketahui. Apabila
permasalahan terlalu kompleks, bisa dibagi dalam bebrapa modul kecil.

Sebagai contoh, progam untuk menghitung invers matriks. Modul pertama adalah
meminta masukan matrik bujur sangkar. Modul kedua adalah mencari invers dari matrik
yang sudah dimasukkan, dan modul terakhir adalah menampilkan hasilnya kepada
pengguna.

3. Memilih Algoritma

Algoritma merupakan urutan langkah berhingga untuk memecahkan masalah logika
atau matematika. Pemilihan algoritma merupakan langkah vital, karena kesalahan
memilih algoritma akan menyebabkan program akan memberikan unjuk kerja yang
kurang baik.

4. Menulis Program

Untuk menuliskan program perlu dipertimbangkan bahasa yang digunakan dan
keperluan atau masalah masalah yang akan dipecahkan. Bahasa apapun bisa digunakan,
dengan mempertimbangkan efektifitas dan efisiensi serta biaya.

5. Menguji Program

Jika program telah selesai ditulis, maka harus dilakukan pengujian. Pengujian awal
berupa kompilasi yang menguji tata bahasa dan kebenaran program. Selanjutnya perlu
diuji apakah program sudah menampilkan keluaran seperti yang diinginkan atau belum.

Lebih jauh lagi, harus diuji program dengan banyak kasus lain. Sering terjadi suatu
program berjalan untuk kasus A, B dan C tetapi tidak berjalan untuk kasus X, Y, dan Z.
Pengujian ini harus sering dilakukan sampai benar-benar yakin program telah berjalan
dengan baik.

6. Menulis Dokumentasi

Menulis dokumentasi dilakukan seiring dengan pembuatan program. Dokumentasi
sangat penting untuk pengembangan dan perbaikan terhadap program sehingga
program selalu bisa diperbaharui.

7. Merawat Program

Perawatan program bertujuan untuk mendeteksi bug yang sebelumnya tidak terdeteksi.
Atau bisa juga digunkan untuk menambahkan fasilitas baru pada program, sehingga
perlu adanya revisi pada program.


Bahasa Pemrograman Pascal
Pascal adalah bahasa tingkat tinggi yang berorientasi pada segala tujuan. Pascal
dirancang oleh Prof Niklaus Wirth dari Techival University di Zurich, Switzerland,
sedangkan nama Pascal diambil dari Blaise Pascal seorang ahli matematika dan
philosophi yang terkenal pada abad 17 berasal dari Perancis.

Pascal dipublikasikan pertama kali pada tahun 1971 dengan tujuan untuk mengajar
komputer secara sistematis. Karena sifatnya yang merupakan pemrograman terstruktur,
maka dalam waktu singkat Pascal telah menjadi bahasa pemrograman yang popular.

Pascal mempunyai beragam compiler yang digunakan, antara lain Turbo Pascal, GNU
Pascal, Free Pascal, USCD Pascal dan Apple Pascal. Pada pembahasan buku ini penulis
menggunakan Free Pascal Compiler (FPC) versi 2.0.2.

 Referensi:
Antony Pranata, 2002. Algoritma dan Pemrograman. J & J Learning. Yogyakarta.
Cooper D & Clancy M, 1985. Oh! Pascal! Second Edition. W W Norton & Company, Inc. Ontario, Canada.
Indra Yatini B, 2001. Pemrograman Terstruktur. J & J Learning. Yogyakarta






Mendesain Program

Bagaimana Sebuah Program didesain?

Semisal keputusanya adalah membuat program (custom-write), maka tugas Anda selanjutnya adalah mendesain solusi yang ditentukan oleh analis sistem. Untul melakukanya, hal pertama yang dilakukan adalah membuat algoritma. Algoritma adalah rumusan atau serangkaina langkah untuk memecahan masalah tertentu. Untuk menjadi sebuag algoritma, sekumpulan aturan harus tidak ambigu dan memiliki saat berhenti yang jelas. Kita setiap hari menggunakan algoritma. Contoh, resep untuk roti bakar adalah sebuah algoritma. Sebagian besar program, kecuali beberapa aplikasi kecerdasan tiruan, terdiri atas algoritma. Dalam pemrograman komputer sering terdapat algoritma yang berbeda untuk menyelesaikan masalah yang diberikan, dalam situasi yang berbeda masing-masing algoritma memilki keuntungan dan kerugian sendiri-sendiri. Menemukan algoritma yang elegan – algoritma ynag sederhana dan dengan sedikit mungkin langkah-adalah suatu tantangan utama dalam pemrograman.

Algoritma dapat diterapkan dalam berbagai cara. Dalam langkah desain program, perangkat lunak didesaian dalam dua langkah kecil. Pertama, menentukan logika program melalui pendekatan atas-bawah dan modularisasi, dengan menggunakan bagan hierarki. Selanjutnya, mendesain logika program secara detail, baik dari segi naratif, mengggunakan pseudecode, atau secara grafis, dengan menggunakan diagram alur.

Sanget bermanfaat bila programer menggunakan pendekatan berdasarkan pengalaman pribadi untuk memprogram. Pemrograman dianggap sebagai suatu seni, bukan ilmu pengetahuan. Namun, saat ini sebagian besar programer menggunakan pendekatan desain yang disebut pemrograman terstrukur. Pemrograman terstruktur menggunakan pendekatan atas-bawah yang memecah program kedalam bentuk modul, dan menggunakan piranti logika standar yang disebut struktur kontrol (sekuensi, seleksi, kasus dan iterasi – sequence, selection, case dan iteration).

Tujuan utama pemrograman terstruktur adalah membuat program lebih efisien (dengan baris kode lebih sedikit) dan lebih terorganisasi (lebih mudah dibaca) serta memilki notasi yang lebih bagus sehingga memili deskripsi yang jelas dan benar.


1. Menentukan logika program menggunakan pendekatan atas-bawah.
Menentukan logika program sama seperti membuat kerangka skripsi sebelum memulai menulisnya. Desain program atas-bawah dilakukan dengan mengidentifikasi elemen atas, atau modul, dari suatu program lalu memecahkanya secara urut sampai tingkat detail terendah. Desain ini digunakan untuk mengidentifikasi langkah pemrosesan program, atau modul. Setelah program didesain, coding sesengguhnya pun dilakukan dari bawah ke atas dengan menggunakan pendekatan modular

Modularisasi: konsep modularisasi sangat penting. Modularisasi sangat menyederhanakan pengembangan program karena setiap bagian bisa dikembangkan dan diuji secara terpisah. Modul merupakan langkah pemrosesan dari suatu program. Masing-masing modul tersusun atas pernyataan pernyataan program yang mempunyai hubungan logis. (Modul kadang-kadang dinamakan subprogram atau subrutin). Contoh dari modul bisa berupa instruksi pemrograman yang hanya mengatakan ” Bukan sebuah file, sebuah record, dan tampilkan layar pada tampilan”. Akan lebih baik jika masing-masing modul hanya memiliki satu fungsi, sama seperti paragraf dalam kalimat sebaiknya memiliki satu pikiran yang utuh. Aturan ini membatasi ukuran dan kompleksitas modul.

Desain Program atas-bawah:
Desain program atas bawah (top-down) bisa digambarkan dalam satu bagan hirarki. Satu bagan hierarki, atau bagan struktur, menggambarkan tujuan program secara keseluruhan, dengan mengidentifikasi semua modul yang diperlukan untuk mencapai tujuan besar tersebut dan hubungan antar modul. Bgan ini bekerja mulai dari yang umum hingga yang khusus, memulai dari level atas (level tinggi) yang melihat pa yang harus dikerjakan program. Selanjutnya, masing-masing layer memperbaiki dan memperluas layer sebelumnya hingga level bawah bisa dibuat menjadi modul pemrograman yang khusus. Program harus berjalan sesuai urutan dari satu modoul ke modul berikutnya sampai semuanya diproses. Ada tiga modul utama yang sejalan dengan tiga operasi utama dari suatu komputasi – input, pemrosesan dan output.

2. Mendesain detail menggunakan pseudecode dan atau diagram alur.
Setelah menetukan logika program, selanjutnya Anda dapat menggarap detailnya dengan menggunakan pemrograman atas-bawah dan bagian hierarki. Ada dua cara untk membuat detail – menulis dan menggambarkanya menggunakan pseudecode atau diagram alur. Sebagian besar proyek menggunakan kedaunya.


Pseudecode:  
Pseudecode adalah metode mendesain suaru program dengan menggunakan pernyataan bahasa manusia untuk mendeskripsikan logika dan aliran proses. Pseudecode seperti sebuah kerangka atau bentuk rangkuman dari program yang Anda tulis.

Terkadang pseudecode hanya digunakan untuk menjelaskan tujuan modul pemrograman tertentu dan istilah yang umum. Dengan menggunakan istilah seperti JIKA, MAKA, atau JIKA TIDAK, pseudecode mengikuti aturan dari struktur kontrol, suatu aspek penting dalam pemrograman terstruktur.

Diagram alur program: Diagram alur program adalah bagan yang secara grafis menampilkan rangkaian langkah detail (algoritma, atau aliran logika) yang diperlukan untuk memecahkan masalah pemrograman. Diagram alur ini menggunakan simbol standar – yang disebut simbol ANSI, kependekan dari American National Standard Institute, lembaga yang mengembangkanya.

Simbol pada bagian kiri dari gambar akan tampak jelas. Akan tetapi, bagaimana Anda melihat logika dari suatu program? Bagaimana Anda menelaah program sehingga ia benar-bendar bekerja? Jawabanya adalah dengan menggunakan struktur kontrol, seperti yang kan dijelaskan berikut ini.

Struktur Kontrol: Ketika Anda menetukan logika di balik suatu hal, anda menggunakan kata-kata seperti jika dan maka, kemudian jika tidak. (Misalnya tanpa menggunakan kata-kata diatas, Anda akan menelaah baris berikut : ” Jika ia datang, maka kami kan nonton film, jika tidak saya kan tingal saja dirumah dan nonton TV”). Struktur kotrol juga menggunkan kata-kata yang sama. Kontrol struktur atau struktur logika adalah struktur yang mengontrolol sekuensi logis dimana instruksi program di eksekusi. Dalam mendesain program terstruktur, ada tiga struktur kontrol yang digunakan untuk membangun logika sebuah program, yaitu sekuensi, seleksi dan iterasi (atau loop).Inilah perangkat yang Anda gunakan untuk menulis program terstruktur dan melakukan pekerjaan diluar pemrograman. (Variasi tambahan dari ketiga struktur dasar ini juga digunakan).

Membandingkan Tiga Struktur Kontrol Ketiga struktur kontrol secara umum mempunyai satu masukan dan satu keluaran. Struktur kontrol dimasukan pada suatu titik dan dikeluarakan pada titik lain. Hal ini membantu menyederhanakan logika sehingga orang lain dapat dengan mudah mengikuti jejak programenr untuk membuat program dapat berjalan. (Sebelum ketentuan ini disahkan, programeer bisa mempunyai banyak variasi, yang mengarah pada program yang tidak bisa dipahami yang disebut spaghetti code.)

mari kita perhatikan ketiga kontrol tersebut.

Struktur kontrol sekuensi : 
Dalam strukur kontrol sekuensi, satu pernyataan program mengikuti yang lain dengan urutan yang logis. Misalnay seperti contoh yang ditunjukan pada gambar, ada dua kotak ( “Statement” dan “Statement”). Satu kotak bisa berbunyi “Buka File”, dan yang lain “Baca Sebuah Record”. Tidak ada keputusan yang dilakukan , tidak ada pilihan antara “ya” atau “tidak”. Kotak tersebut secara logis saling mengikuti dalam urutan sekuensial.


Struktur kontrol seleksi : 
Struktur kontrol seleksi – juga disebut striktur JIKA-MAKA-JIKA TIDAK- mempresentasikan pilihan. Struktur ini menerapkan dua jalur yang diikuti ketika program harus membuat suat keputusan. Contih struktur seleksi adalah :


JIKA jam kerja seorang pegawai dalam satu minggu adalah lebih dari 40
MAKA jam lembur sama dengan jumlah jam yang menjadi selisihnya
JIKA TIDAK pegawai tidak mempunyai jam lembur


Variasi sruktur kontrol seleksi yang biasa adalah struktur kontrol kasus.Struktur ini menawarkan labih dari satu keputusan ya atau tidak. Struktur kasus ini memberikan alternatif, atau kasus yang bisa ditampilkan. (JIKA kasus 1 terjadi, MAKA lakukan ….. JIKA kasus 2 terjadi, MAKA ikuti alternatif …… .” Dan seterusnya.) Struktur kontrol jika membuat programer tidak harus mengiindikasikan begitu banyak kondisi JIKA-MAKA-JIKA TIDAK secar terpisah.

Struktur kontrol iterasi : 
Dalam struktur kontrol seleksi, atau struktur kontrol loop, suatu proses bisa diulang selama kondisinya tetap benar. Ada dua tipe strutur iterasi – DO UNTIL dan DO WHILE. Dalam hal ini, DO UNTIL  lebih sering dugunakan.

Contoh struktur DO UNTIL adalah sebagi berikut :
DO read employee records UNTIL there are no more employee records.


Contoh struktru DO WHILE adalah sebagai berikut :
Do employee records while [that is, as long as] there continue to be employee records.

Apa perbedaan dari kedua struktur iterasi itu? Berikut adalah alasanya: jika beberapa pernyataan perlu , Anda harus memutuskan kapa berhenti mengulangnya. Anda dapat menghentikanya pada awal loop, dengan menggunakan struktru DO WHILE. Atau dapat mengakhirinya pada akhir loop, dengan menggunakan struktur DO UNTIL. Iterasi DO UNTIL berati pernyataan loop akan dieksekusi sedikitnya satu kali, karena dalam kasus ini pernyataan iterasi dieksekusi sebelum program mengecek untuk berhenti.