Jumat, Oktober 30

sequence proses

Notasi algoritmik untuk sequence
Urutan penulisan instruksi/aksi pada sequence adalah sesuai dengan
penulisannya per baris. Sequence dapat juga dituliskan menjadi satu baris program
dengan cara memisahkan penulisan setiap instruksi/aksi dengan tanda “titik koma”.
Penulisan sequence dengan dipisahkan titik koma sebaiknya hanya dilakukan untuk
sequence yang jika urutan penulisannya diubah tidak berpengaruh kepada program



Ada sequence yang jika diubah urutan instruksi/aksinya akan mempengaruhi
eksekusi program. Ada sequence yang jika diubah urutan instruksi/aksinya akan
menghasilkan efek neto yang sama (tidak berpengaruh).
Contoh sequence yang berpengaruh jika diubah urutannya




Pada bagian ini akan diberikan beberapa contoh program yang hanya mengandung
sequence, dan hanya mempergunakan instruksi yang pernah dipelajari sebelumnya
yaitu manipulasi nama dan harga.
Jika bagian prosedur, analisa kasus dan pengulangan serta yang lain telah dipelajari,
maka sequence boleh mengandung analisa kasus dan pengulangan serta aksi yang
yang dinyatakan dengan nama prosedur.

Contoh-1 : HELLO
Pernyataan
Tuliskanlah algoritma untuk menulis "HELLO" ke piranti keluaran yang
disediakan. Berikut ini diberikan 2 solusi. Pikirkanlah, mana yang lebih "baik".
Spesifikasi
Input :
Output : 'HELLO'
Proses : menulis 'HELLO'




Contoh-2 : HELLOX
Pernyataan:
Tuliskanlah algoritma untuk membaca sebuah nama, dan menulis "HELLO"
yang diikuti dengan nama yang diketikkan. Contoh :
jika dibaca 'ALI', maka keluaran adalah : 'HELLO ALI'
jika dibaca 'SINTA', maka keluaran adalah : 'HELLO SINTA'
Spesifikasi
Input : nama
Output : 'HELLO nama'
Proses : menulis 'HELLO' diikuti nama yang dibaca

Pemrograman Berorientasi Fungsi

Pemrograman Berorientasi Fungsi
Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung pada tujuan pembuatan bahasa pemrograman ini.
Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.

Pemrograman Deklaratif

Pemrograman Deklaratif
Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada memecahkan masalah dengan implementasi algoritma.
Contoh: PROLOG

Pemrograman Berorientasi Objek

Java adalah sebuah platform teknologi pemrograman yang dikembangkan oleh Sun
Microsystem. Pertama kali di-release tahun 1991 dengan nama kode Oak. Kemudian tahun
1995 nama kode Oak diganti menjadi Java. Yang memotivasi Java dibuat adalah untuk
membuat sebuah bahasa pemrograman yang portable dan independent terhadap platform
(platform independent). Java dapat membuat perangkat lunak yang dapat ditanamkan
(embedded) pada berbagai mesin dan peralatan konsumer, seperti handphone, microwave,
remote control, dan lain-lain. Hal ini kemudian Java memiliki konsep yang disebut write
once run anywhere.
Konsep Object Oriented sebenarnya bukanlah barang baru dalam dunia bahasa
pemrograman. Konsep ini sudah lama ada dimulai dari bahasa pemrograman Small Talk,
LISP, C ++, dan beberapa bahasa pemrograman lainnya.
Mengapa menggunakan Java dalam mempelajari PBO?
Sintaks Java merupakan pengembangan dari bahasa C/C++. Pemrograman Java memiliki
beberapa keunggulan diantaranya:
1. Bersifat protable dan platform independent. Program Java yang telah ditulis akan dapat
dieksekusi di mesin apapun dan sistem operasi apapun tanpa harus mengubah
sedikitpun dari program tersebut.
2. memiliki garbage collection yang dapat mendealokasikan memori secara otomatis.
3. menghilangkan sifat pewarisan berganda yang terdapat pafa C++.
4. Mengurangi pointer aritmetika. Pengaksesan lokasi memori secara langsung dengan
menggunakan pointer memungkinakn program untuk melakukan suatu tindakan yang
tidak seharusnya atau tidak boleh dilakukan. Untuk mengurangi kemungkinan
kesalahan seperti ini penggunaan pointer pada Java telah dibatasi dengan menggunakan
reference.
5. memiliki array sejati.
6. mengurangi kerancuan antara pemberian nilai pada statement conditional.
Selain itu Java memiliki karakteristik:
1. Berorientasi Objek
2. Robust
3. Portable
4. Multithreading
5. Dinamis
6. Sederhana
7. Tredistribusi
8. Aman
9. Netral secar arsitektur
10. Interpreter
11. Berkinerja tinggi
12. free / bebas licence



Dalam konsep object oriented akan kita temukan kata object dan class, class
merupakan pola / template yang menggambarkan kumpulan object yang mempunyai sifat
yang sama, perilaku, atau disebut dengan himpunan object sejenis. Sementara object adalah
implementasi dari class. Sebagai contoh : dalam pembangunan suatu gedung tentunya
seorang arsitek akan menggunakan gambar desain gedung, dan kemudian akan dibuat
gedung nyatanya. Dalam contoh ini gambar desain gedung dapat kita kategorikan sebagai
class dan gedung nyatanya sebagai implementasi dari gambar gedung yang dapat kita
kategorikan sebagai object. Dari suatu class dapat dibuat beberapa object yang sama.
Karakteristik Utama Pemrograman Berorientasi Objek (PBO)
Object itu secara mudahnya dapat dikatakan terdiri dari property dan method. Konsep object
oriented memiliki karakteristik utama yaitu :
1. Enkapsulasi
Enkapsulasi adalah suatu mekanisme untuk menyembunyikan atau memproteksi suatu proses
dari kemungkinan interferensi atau penyalahgunaan dari luar sistem sekaligus
menyederhanakan penggunaan system itu sendiri. Akses ke internal sistem diatur sedemikian
rupa melalui seperangkat interface. Contoh kasus sepeda motor, pada sistem pemindahan
gigi transmisi, maka pengendara tidak perlu tahu detail dari bagaimana proses pemindahan
gigi itu dilakukan oleh mesin, cukup tahu bagaimana menekan gigi transmisi itu. Pedal gigi
transmisi yang diinjak pengendara itu merupakan interface (antar muka) pengendara dengan
sistem transmisi sepeda motor.
2. Pewarisan (Inheritance)
Sebagai manusia kita sebenarnya terbiasa untuk melihat objek yang berada disekitar kita
tersusun secara hierarki berdasarkan class-nya masing-masing. Dari sini kemudian timbul
suatu konsep tentang pewarisan yang merupakan suatu proses dimana suatu class diturunkan
dari class lainnya sehingga ia mendapatkkan cirri atau sifat dari class tersebut. Perhatikan
contoh hirarki berikut ini:



Dari hirarki diatas dapat dilihat bahwa, semakin kebawah, class akan semakin bersifat
spesifik. Class mamalia memiliki seluruh sifat yang dimiliki oleh binatang, demikian halnya
juga Anjing, kucing dan Monyet memiliki seluruh sifat yang diturunkan dari class mamalia.
Dengan konsep ini, karakteristik yang dimiliki oleh class binatang cukup didefinisikan
didefinisikan dalam class binatang saja. Class mamalia tidak perlu mendefinisikan ulang apa
yang telah dimiliki oleh class binatang, karena sebagai class turunannya, ia akan
mendapatkan karakteristik dari class binatang secara otomatis. Demikian juga dengan class
anjing, kucing dan monyet, hanya perlu mendefinisikan karakteristik yang spesifik dimiliki
oleh class-nya masing-masing. Dengan memanfaatkan konsep pewarisan ini dalam
pemrograman, maka hanya perlu mendefinisikan karakteristik yang lebih umum akan
didapatkan dari class darimana ia diturunkan.
3. Polymorphism
Polymorphism berasal dari bahasa Yunani yang berarti banyak bentuk. Dalam PBO, konsep
ini memungkinkan digunakannya suatu interface yang sama untuk memerintah objek agar
melakukan aksi atau tindakan yang mungkin secara prinsip sama namun secara proses
berbeda. Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah
satu interface banyak aksi.



Pada contoh diatas clas dasar adalah class bentuk yang memiliki atribut berupa Luas dan
operasi hitung luas, class tersebut dapat diturunkan kedalam berbagai macam class bentuk
seperti Segitiga, Lingkaran, Persegi panjang. Class Segitiga, Lingkaran, Persegi panjang
memiliki atribut “Luas” dari hasil penurunan class bentuk, akan tetapi operasi hitung luas
pada masing masing class akan berbeda-beda, inilah yang disebut sebagai polymorphism

pemrograman modular

Dalam suatu pengembangan perangkat lunak, pemrograman adalah salah satu tahap untuk mengimplementasikan penyelesaian masalah tertentu dengan suatu bahasa pemrograman. Penyusunan program yang terstruktur merupakan salah satu syarat program yang baik. Terstruktur berarti memiliki rancangan yang sistematis, mudah dibaca dan , mudah dibetulkan jika ada kesalahan serta mempunyai alur yang jelas (tidak loncat-loncat). Oleh karena itu, penggunaan perintah GOTO harus dihindari.

Salah satu metode penyusunan program terstruktur adalah pemrograman modular. Dengan metode ini, suatu permasalahan yang besar dan kompleks dan dipecah-pecah menjadi beberapa modul sehingga menjadi lebih sederhana. Modul-modul mandiri tersebut biasa dikenal dengan sebutan subroutine. Suatu subroutine pada bahasa BASIC dapat berupa subprogram, procedure maupun function.
Subroutine
Subroutine dibuat dengan beberapa tujuan, yaitu sebagai berikut ini :

1. Proses yang sering terjadi berulang-ulang dikelompokkan sebagai satu subroutine, sehingga bagian tersebut tidak harus ditulis secara berulang-ulang. Dengan demikian pembuatan program akan lebih mudah dan program tidak terlalu panjang.

2. Subroutine perlu dibuat agar program menjadi terstruktur. Salah satu cara agar suatu program menjadi terstruktur adalah dengan cara memecahnya menjadi bagian-bagian yang lebih sederhana dan dapat dijadikan dalam bentuk subroutine.

Untuk membuat program dengan teknik pemrograman modular dalam bahasa BASIC dapat digunakan perintah GOSUB..RETURN, DEF FN, SUB..END SUB
1. Membuat subprogram dengan GOSUB..RETURN
Perintah GOSUB..RETURN merupakan salah satu cara pemrograman moduler yang paling sederhana. Perintah ini sebenarnya agak mirip dengan perintah GOTO.
Perbedaannya adalah pada perintah GOTO seteleh loncat ke suatu baris tidak ada kewajiban untuk kembali ke baris/perintah sebelumnya, sedangkan pada perintah GOSUB..RETURN pasti kembali ke tempat semula.
Bentuk umum dari instruksi ini adalah :

GOSUB [nomor baris / label]
...
...
nomor baris / label :
...
...
RETURN

CONTOH 1:


Hasil :



CONTOH 2:

Pemrograman Terstruktur

Konsep pemrograman Terstruktur/prosedural

Prinsip utama dari pemrograman terstruktur (structured programming) adalah jika suatu proses telah sampai pada suatu titik tertentu, maka proses selanjutnya tidak boleh melompat lagi ke baris sebelumnya, kecuali untuk proses berulang. Dengan alasan ini pemrograman terstruktur juga sering disebut sebagai pemrograman tanpa GOTO (“GOTOless programming”). Dalam kebanyakan bahasa tingkat tinggi seperti Basic, dan Fortran masih sering kita jumpai statemen GOTO yang berfungsi melompatkan proses ke sembarang baris, diatas atau dibawahnya, sedangkan untuk bahasa tingkat tinggi lainnya seperti Pascal dan C, statemen GOTO ini dapat kita hindari pemakaiannya, karena bahasa ini mendukung pemrograman terstruktur yang relative lebih sempurna.
Ada beberapa kelebihan yang dimiliki oleh bahasa-bahasa yang mendukung pemrograman terstruktur ini, diantaranya yaitu:
• Relative Mudah menulis program terstruktur, karena masalah pemrograman yang rumit dapat dipecahkan menjadi sejumlah tugas –tugas kecil dan sederhana, yang dikerjakan oleh fungsi atau procedure.
• Relative mudah untuk men-debug program terstruktur. Jika program yang dibuat mempunyai bug, perancangan terstruktur menyebabkan kemudahan untuk mengisolasi sesuatu (fungsi) yang menyebabkan bug tersebut.
• Fungsi-fungsi yang dibuat dapat digunakan oleh program-program yang berbeda
Salah satu bahasa program terstruktur yang banyak digunakan oleh para professional dalam menulis program-program paket adalah bahasa C, hal ini dikarenakan bahasa C mempunyai kemampuan lebih dari bahasa pemrograman lain, diantaranya adalah :
• kecepatan prosesnya (misal, program yang ditulis dengan C bila dijalankan kira-kira 50 kali lebih cepat dibandingkan dengan BASIC).
• Bahasa C memiliki sedikit kata-kata cadangan (reserved word) dibandingkan bahasa program lain
• Bahasa C bersifat modular. Artinya kode-kode program umumnya ditulis dalam bentuk fungsi-fungsi yang dapat digunakan untuk aplikasi atau program lain (reuse code), selain itu program yang ditulis akan teratur dengan baik sehingga baik untuk dokumentasi. Program terstruktur apabila akan dilakukan modifikasi akan mudah dilakukan.

CONTOH :
Berikut ini adalah contoh potongan program sederhana yang ditulis dalam bahasa C untuk menampilkan kalimat hallo world pada layar monitor

main()
{
printf(“hallo world”);
}

Dalam hal ini main() adalah sebuah fungsi yang harus selalu ada pada setiap program C. sedangkan program utama diletakan didalam tanda brace {}. Pada dasarnya program utama ini berupa pemanggilan fungsi-fungsi standar yang tersedia pada library (misal dalam hal ini printf adalah fungsi library yang digunakan untuk menampilkan hasil pada layar) atau fungsi-fungsi yang dibuat oleh programmer.
Komponen-Komponen Program bahasa C
Setiap program C terdiri dari beberapa komponen yang dikombinasikan dengan susunan tertentu. Untuk mendapatkan pemahaman yang menyeluruh berkaitan dengan struktur program C dan komponen-komponen programnya, dibawah ini akan diberikan program yang relative lengkap walaupun ukurannya kecil
1: /* Program untuk menghitung perkalian dua bilangan. */
2: #include
3:
4: int a,b,c;
5:
6: int kali(int x, int y);
7:
8: main()
9: {
10: /* masukan bilangan pertama */
11: printf("Masukan bilangan antara 1 sampai 100: ");
12: scanf("%d", &a);
13:
14: /* masukan bilangan kedua */
15: printf("Masukan bilangan lain antara 1 sampai 100: ");
16: scanf("%d", &b);
17:
18: /* hitung dan tampilkan hasil */
19: c = kali(a, b);
20: printf ("%d kali %d = %d\n", a, b, c);
21:
22: return 0;
23: }
24:
25: /* fungsi untuk menghitung perkalian dua argumen*/
26: int kali(int x, int y)
27: {
28: return (x * y);
29: }
Masukan bilangan antara1 sampai 100: 35
Masukan bilangan lain antara 1 sampai 100: 23
35 kali 23 = 805
(keterangan: pada program sebenaranya nomer bilangan tidak ditulis, penulisan disini semata-matas digunakan hanya untuk memudahkan penjelasan) .
Fungsi main() (baris 8 sampai 28)
Seperti yang telah disinggung diatas secara sekilas, komponen yang harus pada setiap program C adalah fungsi main(). Eksekusi program dimulai pada statement pertama pada main() dan berakhir di statemen terakhir dalam main().
Pengarah (directive) #include (baris 2)
Pengarah #include mengintruksikan pada compiler C untuk menambahkan isi file include (file header) pada program yang dibuat saat compilasi. Pengarah #include pada contoh program diatas berarti “tambahkan isi file stdio.
Statemen printf() (baris 11, 15, dan 20) adalah fungsi library untuk menampilkan informasi pada layar monitor. Statemen ini dapat menampilkan text sederhana (seperti pada baris 11 dan 15), atau pesan dan nilai satu atau lebih variable program (seperti pada baris 20)
scanf()
statemen scanf() (baris 12 dan 16) adalah fungsi library juga yang berguna untuk membaca data dari keybord dan memberikan data tersebut pada satu atau lebih variable program.
Statemen program pada baris 19 adalah pemanggilan fungsi kali(). Dengan kata lain statemen ini mengeksekusi fungsi kali, dan mengirimkan argument a dan b pada fungsi, setelah fungsi selesai dipanggil, kali() mengembalikan return sebuah nila pada program yang selanjutnya disimpan pada variable c.
return
Pada baris 22 dan 28 terdapat statemen return, statemen return pada baris 28 merupakan bagian dari fungsi kali(). Yaitu untuk menghitung perkalian x dan y dan mengembalikan hasil pada statemen program yang memanggil kali(). Statemen return pada baris 22 mengembalikan nilai 0 pada system operasi setelah program selesai dilaksanakan.
Definisi Fungsi

Fungsi adalah bagian program yang bersifat independent yang ditulis atau dibuat untuk melakukan tugas-tugas tertentu. Setiap fungsi harus memiliki nama yang unik yang mencerminkan tugas yang akan dilaksanakan oleh fungsi tersebut.
Fungsi dengan nama kali(), pada baris 26 sampai 29, adalah fungsi yang didefinisikan programmer (user-defined function).
Bahasa C juga telah menyediakan fungsi-fungsi library yang sering digunakan oleh programmer, misal untuk operasi-operasi input/output, operasi matematika, dll. Yang perlu dilakukan oleh programmer untuk menggunakan fungsi-fungsi library ini adalah cukup meng include-kan file header yang berisi informasi fungsi-fungsi yang tersedia beserta argumennya, misal untuk memanggil fungsi trigonometri seperti sin, cos, dan lain-lain pada awal program harus kita tulis : #include
Komentar Program
Komentar program bertujuan untuk dokumentasi listing sumber. Komentar pada C harus dimulai dengan /* dan diakhiri dengan */. Setiap bagian program yang berada diantara tanda tersebut tidak akan dicompile oleh compiler (tidak mempengaruhi ukuran file exe).
Braces (Baris 9, 23, 27, dan 29)
Setiap fungsi yang dibuat pada C harus berada didalam tanda kurung kurawal (brace), hal ini juga termasuk fungsi main(). Satu atau lebih statemen yang berada dalam tanda kurung kurawal dinamakan block.
Paradigma pemrograman Fungsional

Paradigma ini didasari oleh konsep pemetaaan dan fungsi pada matematika. Fungsi dapat berbentuk sebagai fungsi "primitif", atau komposisi dari fungsi-fungsi lain yang telah terdefinisi. Pemrogram mengasumsikan bahwa ada fungsi-fungsi dasar yang dapat dilakukan. Penyelesaian masalah didasari atas aplikasi dari fungsi-fungsi tersebut. Jadi dasar pemecahan persoalan adalah transformasional. Semua kelakuan program adalah suatu rantai transformasi dari sebuah keadaan awal menuju ke suatu rantai keadaan akhir, yang mungkin melalui keadaan antara, melalui aplikasi fungsi.

Paradigma fungsional tidak lagi mempernasalahkan memorisasi dan struktur data, tidak ada pemilahan antara data dan program, tidak ada lagi pengertian tentang "variabel". Pemrogram tidak perlu lagi mengetahui bagaimana mesin mengeksekusi atau bagaimana informasi disimpan dalam memori, setiap fungsi adalah "kotak hitam", yang menjadi perhatiannya hanya keadaan awal dan akhir. Dengan merakit kotak hitam ini, pemrogram akan menghasilkan program besar.
Berlainan sekali dengan paradigma prosedural, program fungsional harus diolah lebih dari program prosedural (oleh pemroses bahasanya), karena itu salah satu keberatan adalah kinerja dan efisiensinya.

Contoh-1 Ekspresi numerik : PANGKAT DUA
Pernyataan :
Buatlah definisi, spesifikasi dan realisasi dari sebuah fungsi yang menerima sebuah
bilangan bulat dan menghasilkan pangkat dua dari bilangan tersebut dengan menuliskan
ekspresi yang hanya mengandung operator ekspresi aritmatika yang telah didefinisikan
PANGKAT2 FX2(x)
DEFINISI DAN SPESIFIKASI
FX2 : integer → integer
{FX2 (x) menghitung pangkat dua dari x, sebuah bilangan integer }
REALISASI
FX2 (x) : x * x
APLIKASI
⇒ FX2(1)
⇒ FX2(0)
⇒ FX2(-1)


Contoh-2 Ekspresi numerik: PANGKAT TIGA
Pernyataan :
Buatlah definisi, spesifikasi dan realisasi dari sebuah fungsi yang menerima sebuah
bilangan bulat dan menghasilkan pangkat tiga dari bilangan tersebut dengan menuliskan
ekspresi yang hanya mengandung operator ekspresi aritmatika yang telah didefinisikan
PANGKAT3 (versi-1) FX3.v1(x)
DEFINISI DAN SPESIFIKASI
FX3 : integer → integer
{FX3 (x) menghitung pangkat tiga dari x, sebuah bilangan integer }
REALISASI
FX3 (x) : x * x * x
APLIKASI
⇒ FX3(1)
⇒ FX3(8)
⇒ FX3(-1)

Algoritma

Sejarah Algoritma

Algoritma

Dalam matematika dan komputasi, algoritma merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai.

Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah, terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak, terlepas dari sistem komputer atau bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang sama.

Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.

Sejarah istilah "algoritma"

Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup sekitar abad ke-9), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12 "Algorithmi de numero Indorum". Pada awalnya kata algorisma adalah istilah yang merujuk kepada aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan.

Jenis-jenis Algoritma

Terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda.

  • Divide and Conquer, paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.
  • Metode serakah. Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan "serakah" apa yang dilihat terbaik pada saat itu.

Pemprograman Prosedural

Pemrograman dalam paradigma prosedural dilakukan dengan memberikan serangkaian perintah yang berurutan. Dalam bab ini akan dibahas hal-hal yang menjadi dasaralam pemrograman prosedural, meliputi definisi algoritma dan konstruktor pemrograman prosedural, serta konsepInput, Proses, dan Output yang sangat lazim dalam dunia pemrograman prosedural.

Algoritma

Algoritma adalah serangkaian langkah-langkah yang tepat, terperinci, dan terbatas untuk menyelesaikan suatu masalah. Langkah yang tepat artinya serangkaian langkah tersebut selalu benar untuk menyelesaikan masalah yang diberikan. Langkah yang tidak memberikan hasil yang benar untuk domain masalah yang diberikan bukanlah sebuah algoritma.

Langkah yang terperinci artinya setiap langkah diberikan secara detail dan dapat dieksekusi oleh Komputer, instruksi seperti “angkat sedikit ke kiri” merupakan contoh instruksi yang tidak tepat, karena “sedikit” tidak menyatakan sesuatu yang tepat.Langkah yang diberikan harus terbatas, artinya suatu saat langkah harus berhenti, jika langkah tidak pernah berhenti (misalnya: “ambil air, masukkan ke bak mandi, ulangi ambil air, dan seterusnya”) maka serangkaian langkah itu tidak disebut sebagai algoritma (jika: “ambil air, masukkan ke bak mandi, ulangi ambil air sampai bak mandi penuh”, maka bisa disebut algoritma, namun langkah ambil air, masukkan ke bak mandi, harus diperinci).

Konstruktor (elemen) Pemrograman Prosedural Elemen bahasa pemrograman prosedural yang penting adalah:

1. Program utama
2. Tipe
3. Konstanta
4. Variabel
5. Ekspresi, operator, dan operand
6. Struktur Data
7. Instruksi dasar
8. Program Moduler
9. File eksternal
10. Rekurens

Konstruktor ini tidak untuk dipelajari secara berurutan, namun semua perlu dipelajari dan
dimengerti untuk dapat membuat program dengan baik.
Input, Proses, dan Output

Sekumpulan aksi dalam pemrograman prosedural bisa dibagi menjadi tiga bagian penting yaitu:
input, proses, dan output. Bagian input, proses, dan output dikerjakan secara sekuensial, dan dalam setiap bagian mungkin akan ada input, proses, dan output.