Minggu, 24 Februari 2013

3 Proses Algoritma (sekuensial, branching, looping) dan modul Procedure and Function.




PEMBAHASAN. Struktur Algoritma. Struktur dasar algoritma terbentuk dari tiga struktur dasar, yakni struktur berurutan,struktur percabangan/pemilihan/keputusan dan struktur pengulangan. Dalam bahasa pemrograman ketiga dasar pembentuk sebuah algoritma tersebut dikenal dengan sequencing, ranching danlooping. Pada dasarnya hampir semua algoritma merupakan gabungan daristruktur tersebut. Algoritma Berurutan (Sequencing) Struktur berurutan ini dapat dianalogikan dengan kita berjalan lurus atau kendaraan yangmeluncur dijalan yang lurus. Langkah demi langkah atau kilometer demi kilometer kita harusmelaluinya sehingga tahapan demi tahapan harus dilalui sesuai dengan urutannya. Dapat jugakita analogikan dengan mencatat mata pelajaran, kata demi kata dan kalimat demi kalimat kitamenyalinnya secara berurutan sampai selesai.Struktur berurutan bisa terdiri dari satu dan atau beberapa instruksi. Intruksi intruksitersebut akan dieksekusi oleh komputer sesuai dengan urutannya. Oleh sebab itu maka pentingnya sistematika yang tepat dan benar agar algoritma tersebut menghasilkan “output”yangkita harapkan. Menurut Goldshlager dan A. Lister, struktur berurutan mengikuti ketentuansebagai berikut; •Tiap instruksi dikerjakan satu demi satu. •Tiap instruksi hanya dilakukan/dilaksanakan tepat satu kali, tidak ada pengulangan •Urutan pelaksanaan yang dilakukan oleh komputer(pemroses) sama dengan urutan yangditulis dalam algoritmanya. •Akhir dari instruksi terakhir, merupakan akhir algoritma Synchronous berurutan/sequetial logika Hampir semua hari logika sekuensial clock atau logika sinkron. Dalam rangkaian sinkron, osilator elektronik yang disebut jam menghasilkan urutan pulsa berulang yang disebut sinyal clock yang didistribusikan kepada semua elemen memori di sirkuit. Unsur memori dasar dalam logika sekuensial adalah flip-flop. Output dari masing-masing flip-flop perubahan hanya bila dipicu oleh pulsa clock, sehingga perubahan sinyal logika seluruh rangkaian semua mulai pada saat yang sama, secara berkala, disinkronisasi oleh jam. Output dari semua elemen penyimpanan (sandal jepit) di sirkuit pada waktu tertentu, data biner yang dikandungnya, disebut keadaan sirkuit. Keadaan sirkuit sinkron hanya perubahan pada jam pulsa. Pada setiap siklus, negara berikutnya ditentukan oleh keadaan saat ini dan nilai dari sinyal input ketika pulsa clock terjadi. Keuntungan utama dari logika sinkron adalah kesederhanaannya. Gerbang logika yang melakukan operasi pada data memerlukan jumlah waktu yang terbatas untuk merespon perubahan masukan mereka. Ini disebut delay propagasi. Interval antara jam pulsa harus cukup lama sehingga semua gerbang logika memiliki waktu untuk menanggapi perubahan dan output mereka "puas" dengan nilai-nilai logika yang stabil, sebelum pulsa clock berikutnya terjadi. Selama kondisi ini terpenuhi (mengabaikan rincian tertentu lainnya) sirkuit dijamin akan stabil dan dapat diandalkan. Hal ini menentukan kecepatan operasi maksimum dari rangkaian sinkron. Logika sinkron memiliki dua kelemahan utama: Clock rate maksimum yang mungkin ditentukan oleh jalur logika paling lambat di sirkuit, atau dikenal sebagai jalur kritis. Setiap perhitungan logis, dari yang paling sederhana sampai yang paling kompleks, harus menyelesaikan dalam satu siklus clock. Jadi logika jalan yang menyelesaikan perhitungan mereka cepat yang menganggur banyak waktu, menunggu pulsa clock berikutnya. Oleh karena itu logika sinkron dapat lebih lambat daripada logika asynchronous. Salah satu cara untuk mempercepat sirkuit sinkron adalah untuk membagi operasi kompleks menjadi operasi sederhana beberapa yang dapat dilakukan dalam siklus jam berturut-turut. teknik yang dikenal sebagai pipelining. Teknik ini banyak digunakan dalam desain mikroprosesor, dan membantu untuk meningkatkan kinerja prosesor modern. Sinyal clock harus didistribusikan ke setiap flip-flop dalam rangkaian. Seperti jam biasanya sinyal frekuensi tinggi, distribusi ini mengkonsumsi jumlah yang relatif besar kekuasaan dan membuang panas banyak. Bahkan sandal jepit yang melakukan apa-apa mengkonsumsi sejumlah kecil daya, sehingga menghasilkan limbah panas dalam chip. Dalam perangkat portable yang memiliki daya baterai yang terbatas, sinyal clock berjalan bahkan bila perangkat tidak digunakan, memakan daya. Asynchronous logika sekuensial Logika sekuensial asynchronous tidak disinkronkan oleh sinyal clock, output dari rangkaian perubahan secara langsung dalam menanggapi perubahan masukan. Keuntungan logika asynchronous adalah bahwa hal itu dapat lebih cepat daripada logika sinkron, karena sirkuit tidak harus menunggu sinyal clock untuk input proses. Kecepatan perangkat berpotensi hanya dibatasi oleh penundaan propagasi dari gerbang logika yang digunakan. Namun, logika asynchronous lebih sulit untuk merancang dan tunduk pada masalah tidak ditemui dalam desain sinkron. Masalah utama adalah bahwa unsur-unsur memori digital sensitif terhadap sinyal masukan agar mereka tiba, jika dua sinyal tiba di gerbang logika pada waktu yang hampir bersamaan, yang menyatakan sirkuit masuk ke dapat bergantung pada sinyal yang sampai ke gerbang pertama. Oleh karena sirkuit bisa masuk ke negara yang salah, tergantung pada perbedaan-perbedaan kecil dalam penundaan propagasi dari gerbang logika. Ini disebut kondisi lomba. Masalah ini tidak separah di sirkuit sinkron karena output dari elemen memori hanya mengubah pada setiap pulsa clock. Interval antara sinyal clock ini dirancang untuk menjadi cukup lama untuk memungkinkan output dari elemen memori untuk "menyelesaikan" sehingga mereka tidak berubah ketika jam berikutnya datang. Oleh karena itu masalah waktu hanya karena "input asynchronous", input ke sirkuit dari sistem lain yang tidak disinkronkan dengan sinyal clock. Sirkuit sekuensial Asynchronous biasanya digunakan hanya dalam bagian kritis beberapa sistem lain di mana kecepatan sinkron adalah pada premium, seperti bagian dari mikroprosesor dan sirkuit pemrosesan sinyal digital, desain logika asynchronous menggunakan model matematika yang berbeda dan teknik dari logika sinkron, dan merupakan area aktif penelitian. Algoritma Binary & Sequential Search Binary Search adalah algoritma pencarian yang lebih efisien daripada algorima Sequential Search. Hal ini dikarenakan algoritma ini tidak perlu menjelajahi setiap elemen dari tabel. Kerugiannya adalah algoritma ini hanya bisa digunakan pada tabel yang elemennya sudah terurut baik menaik maupun menurun.Pada intinya, algoritma ini menggunakan prinsip divide and conquer, dimana sebuah masalah atau tujuan diselesaikan dengan cara mempartisi masalah menjadi bagian yang lebih kecil. Algoritma ini membagi sebuah tabel menjadi dua dan memproses satu bagian dari tabel itu saja. Algoritma ini bekerja dengan cara memilih record dengan indeks tengah dari tabel dan membandingkannya dengan record yang hendak dicari. Jika record tersebut lebih rendah atau lebih tinggi, maka tabel tersebut dibagi dua dan bagian tabel yang bersesuaian akan diproses kembali secara rekursif. contoh program searching (binary) pada c++ : #include #include int data[10] = {1,3,4,7,12,25,40,65,78,90}; //variabel global int binary_search(int cari) { int l,r,m; int n = 10; l = 0; r = n-1; int ketemu = 0; while(l<=r && ketemu==0) { m = (l+r)/2; if( data[m] == cari ) ketemu = 1; else if (cari < data[m]) r = m-1; else l = m+1; } if(ketemu == 1) return 1; else return 0; } void main() { clrscr(); int cari,hasil; cout<<”masukkan data yang ingin dicari = “; cin>>cari; hasil = binary_search(cari); if(hasil == 1) { cout<<”Data ada!”< #include void main() { clrscr(); int data[8] = {8,10,6,-2,10,7,1,100}; int cari,index; int ketemu=0; cout<<”masukkan data yang ingin dicari = “; cin>>cari; for(int i=0;i<8 data-blogger-escaped-0="" data-blogger-escaped-100="" data-blogger-escaped-10="" data-blogger-escaped-12="" data-blogger-escaped-1="" data-blogger-escaped-2="" data-blogger-escaped-3="" data-blogger-escaped-4="" data-blogger-escaped-50="" data-blogger-escaped-5="" data-blogger-escaped-6="6" data-blogger-escaped-7="" data-blogger-escaped-8="" data-blogger-escaped-:="" data-blogger-escaped-a="" data-blogger-escaped-ada="" data-blogger-escaped-adalah="" data-blogger-escaped-akan="" data-blogger-escaped-algoritma="" data-blogger-escaped-array="" data-blogger-escaped-ata="" data-blogger-escaped-atau="" data-blogger-escaped-berarti="" data-blogger-escaped-berikut:="" data-blogger-escaped-beruntun="" data-blogger-escaped-berurut="" data-blogger-escaped-boolean.="" data-blogger-escaped-boolean="" data-blogger-escaped-break="" data-blogger-escaped-cara="" data-blogger-escaped-cari="" data-blogger-escaped-cocok="" data-blogger-escaped-cout="" data-blogger-escaped-cukup="" data-blogger-escaped-dalam="" data-blogger-escaped-dan="" data-blogger-escaped-dari="" data-blogger-escaped-data-data="" data-blogger-escaped-data.="" data-blogger-escaped-data="" data-blogger-escaped-demi="" data-blogger-escaped-dengan="" data-blogger-escaped-di="" data-blogger-escaped-dicari="" data-blogger-escaped-digunakan="" data-blogger-escaped-dilakukan="" data-blogger-escaped-dimensi="" data-blogger-escaped-dimulai="" data-blogger-escaped-dipahami.="" data-blogger-escaped-diperiksa.="" data-blogger-escaped-diperoleh="" data-blogger-escaped-ditemukan.="" data-blogger-escaped-ditemukan="" data-blogger-escaped-dua="" data-blogger-escaped-elemen="" data-blogger-escaped-else="" data-blogger-escaped-endl="" data-blogger-escaped-getch="" data-blogger-escaped-harga="" data-blogger-escaped-hasil="" data-blogger-escaped-hingga="" data-blogger-escaped-i="" data-blogger-escaped-if="" data-blogger-escaped-ilustrasi="" data-blogger-escaped-index="" data-blogger-escaped-ini="" data-blogger-escaped-iterasi="" data-blogger-escaped-jenis="" data-blogger-escaped-jika="" data-blogger-escaped-kali="" data-blogger-escaped-kasus="" data-blogger-escaped-ke-1="" data-blogger-escaped-ke="" data-blogger-escaped-kelompok="" data-blogger-escaped-kemudian="" data-blogger-escaped-ketemu="=" data-blogger-escaped-kita="" data-blogger-escaped-kompleksitas="" data-blogger-escaped-larik="" data-blogger-escaped-linear="" data-blogger-escaped-linier="" data-blogger-escaped-macam="" data-blogger-escaped-melakukan="" data-blogger-escaped-membandingkan="" data-blogger-escaped-meminta="" data-blogger-escaped-mempunyai="" data-blogger-escaped-menampilkan="" data-blogger-escaped-mencari="" data-blogger-escaped-mencocokan="" data-blogger-escaped-metode="" data-blogger-escaped-misalnya="" data-blogger-escaped-mudah="" data-blogger-escaped-mulai="" data-blogger-escaped-n="" data-blogger-escaped-nilai="" data-blogger-escaped-nmax="" data-blogger-escaped-o="" data-blogger-escaped-pada="" data-blogger-escaped-pembahasan="" data-blogger-escaped-pencairan="" data-blogger-escaped-pencarian="" data-blogger-escaped-pencocokan="" data-blogger-escaped-pengulangan="" data-blogger-escaped-per="" data-blogger-escaped-pertama="" data-blogger-escaped-program="" data-blogger-escaped-proses="" data-blogger-escaped-sama="" data-blogger-escaped-sampai="" data-blogger-escaped-satu="" data-blogger-escaped-search="" data-blogger-escaped-sebagai="" data-blogger-escaped-sebanyak="" data-blogger-escaped-sebuah="" data-blogger-escaped-secara="" data-blogger-escaped-sederhana="" data-blogger-escaped-sehingga="" data-blogger-escaped-sekelompok="" data-blogger-escaped-selanjutnya="" data-blogger-escaped-seluruh="" data-blogger-escaped-sembarang.="" data-blogger-escaped-semua="" data-blogger-escaped-sequential="" data-blogger-escaped-setiap="" data-blogger-escaped-sudah="" data-blogger-escaped-tabel.="" data-blogger-escaped-tabel="" data-blogger-escaped-tanpa="" data-blogger-escaped-telah="" data-blogger-escaped-terakhir.="" data-blogger-escaped-terbaik="" data-blogger-escaped-terburuk.="" data-blogger-escaped-terdapat="" data-blogger-escaped-terletak="" data-blogger-escaped-tersebut.="" data-blogger-escaped-tersebut="" data-blogger-escaped-tetapi="" data-blogger-escaped-tidak="" data-blogger-escaped-tinggal="" data-blogger-escaped-untuk="" data-blogger-escaped-ururtan="" data-blogger-escaped-value="" data-blogger-escaped-x="6)." data-blogger-escaped-yaitu="" data-blogger-escaped-yang=""> output : “Ada” pada index ke-2 Jika sampai data terakhir tidak ditemukan data yang sama maka output : “ data yang dicari tidak ada”. Best case : jika data yang dicari terletak di depan sehingga waktu yang dibutuhkan minimal. Worst case : jika data yang dicari terletak di akhir sehingga waktu yang dibutuhkan maksimal. Contoh : DATA = 5 6 9 2 8 1 7 4 bestcase ketika x = 5 worstcase ketika x = 4 *x = key/data yang dicari Contoh Program dalam Bahasa Pemograman Pascal program search_aditya; uses crt; const nmin = 1; nmax = 100; type arrint = array [nmin..nmax] of integer; var x : integer; tabint : arrint; n,i : integer; indeks : integer; function seqsearch1(xx : integer): integer; var i : integer; begin i := 1; while ((i xx)) do i:=i+1; if tabint[i] = xx then seqsearch1:=i else seqsearch1:=0; end; begin clrscr; write('input banyaknya index array = '); readln(n); for i:=1 to n do begin write('Tabint[',i,'] = '); readln(tabint[i]); end; write('Nilai yang dicari = '); readln(x); indeks:=seqsearch1(x); if indeks <> 0 then write(x,' ditemukan pada indeks ke-',indeks) else write(x,' tidak ditemukan'); writeln; readln; end. Algoritma Pencabangan (Branching) Pada dasarnya pemrograman komputer adalah untuk keperluan manusia dalammemenuhi kebutuhan dan keinginan hidupnya. Oleh sebab itu pemrograman komputer identik dengan penyelesaian pekerjaan manuasia keseharian. Kehidupan kita tidak selamanya berjalanlurus, terkadang harus melakukan pilihan dari beberapa keadaan, atau melakukan pengujiankepada suatu kondisi agar kita dapat mengambil keputusan tentang jalan/arah mana yang akandiambil. Dalam pemrograman kondisi seperti ini lajimnya disebut pencabangan/branching.Dalam kondisi tertentu mungkin kita melakukan lompatan atau melewatkan beberapa instruksi,dan program akan berjalan sesuai dengan kehendak kita jika kondisi memenuhi syarat yang kitatetapkan Dalam menterjemahkan sebuah algoritma pencabangan, kita bisa melakukan pendekatan penyelesaian yang berbeda untuk kasus yang sama dan berbeda untuk kasus yang berlainan. Halini tergantung sejauh mana kita mampu melakukan pendekatan yang paling efektif dan efisien.Hal lain yang penting juga diperhatikan adalah bagaimana “orang lain” dapat dengan mudahmemahami jalan pemikiran kita (algoritmanya) dan mudah menggunakan aplikasi yang sudahkita buat. Setiap bahasa pemrograman mempunyai beberapa ketentuan yang sedikit berbeda,namun pada umumnya Statement untuk pencabangan sebagiannya Algoritma Branch and Bound adalah metode algoritma umum untuk mencari solusi optimal dari optimum dari berbagai permasalahan optimasi, terutama untuk dapat diperoleh keuntungan yang sebesar-besarnya. Salah satu model untuk merepresentasikan suatu permasalahan adalah optimasi diskrit dan kombinatorial. Sebagaimana program linear ( Linear Programming ) di bagi menjadi 2 jenis, yaitu: 1.Integer Programming Program linear dengan ruang solusi secara sistematis. Ruang solusi variabel bertipe integer yang diorganisasikan ke dalam pohon ruang status. 2.Non-Integer Programming Program linear dengan membedakan keduanya adalah bila pada algoritma variabel bertipe Non-Integer, misal: bilangan real, runut-balik, ruang solusi dibangun secara dinamis berdasarkan skema DFS ( Depth First Search ), maka model integer programming biasanya dipilih untuk algoritma Branch and Bound ruang solusi permasalahan yang variabelnya idak dibangun dengan skema BFS ( Breadth First Search ), namun bertipe bilangan tidak bulat, misalnya variabel jumlah orang. Pada algoritma ini, permasalahan dibagi Integer Programming dapat diselesaikan dengan banyak cara, antara lain dengan menggunakan grafik, dengan metode eliminasi dan substitusi, dan sebagainya. Salah satu cara yang cukup efektif untuk menyelesaikan integer programming adalah dengan membentuk sebuah struktur pohon yang disebut dengan mengarah ke solusi, inilah yang disebut dengan mengaplikasikan algoritma Branch and Bound. Bagi subregion yang mungkin branching , mengingat prosedur ini akan dilakukan berulang ulang secara rekursif untuk setiap subregion dan setiap subregion yang dihasilkan akan sebagai pohon pencarian atau pohon branch-and-bound di mana simpul-simpulnya membangun subregion-subregion. Selain branching, algoritma ini juga melakukan apa yang disebut dengan bounding yang merupakan cara cepat untuk mencari batas atas untuk solusi optimal. 1. 6×1 + 3×2 + 5×3 + 2×4 <= 10 2. x3 + x4 <= 1 3. x1 + x3 <= 0 4. x2 + x4 <= 0 5. xi = 0, xi : integer Algoritma Branch and Bound banyak digunakan untuk memecahkan berbagai macam permasalahan antara lain persoalan Knapsack 0/1, Travelling Salesman Problem (TSP), The N-Queens Problem (Persoalan N-Ratu), Graph Colouring (Pewarnaan Graf), Integer Programming, Nonlinear Programming, dan lain sebagainya. Asumsikan permasalahan maksimisasi. Berikan z sebagai batas bawah solusi optimum ILP. 1. Fathoming/Bounding. Pilih LPi sebagai subproblem untuk dibulatkan. Selesaikan untuk LPi dan usahakan fathom. Fathom dipenuhi jika salah satu kondisi ini dipenuhi: subproblem menghasilkan solusi integer layak permasalahan ILP, subproblem tidak dapat menghasilkan solusi yang lebih baik dari solusi batas bawah terbaik yang ada (z) permasalahan ILP yang ada. Jika LPi fathomed, perbaharui batas bawah z jika solusi ILP lebih baik. Jika tidak, pilih subproblem yang baru dan ulangi ulangi langkah 1. jika semua subproblem sudah diselidiki, stop. Solusi optimum ILP adalah z batas bawah terakhir, jika ada. 2. Branching (pencabangan). Pilih satu variabel xj yang nilai optimumnya tidak memenuhi batasan integer. Hilangkan daerah Xj*,(dimana [A] menunjukkan integer terbesar sedemikian shg <= A) dengan membuat dua subproblem LP yang sesuai dengan 2 pembatas mutually exclusive: Xj = Xj* + 1 Algoritma Pengulangan (Looping) •Sebuah kendaraan sedang mengisi bahan bakar di sebuah Statsiun PengisianBahan Bakar Umum (SPBU). Sang Sopir meminta agar agar kendaraannya diisi bahan bakar sebanyak 100 liter. Petugas mengisikan bahan bakar kedalam tangkikendaraan tidak sekaligus 100 liter, melainkan bertahap sesuai kapasitas aliranselang pengisian bahan bakar. Dia akan melakukan pengisian secara terusmenerus sampai indikator menunjukkan angka 100. Dan akan berhenti jika telahterpenuhi kondisi sesuai permintaan sang sopir. •Seorang anak sedang menimba air dari sebuah sumur untuk mengisi ember /jerigen air yang dibawanya dari rumah. Dia akan terus menimba sampai volumeair yang ada di ember tersebut penuh atau sesuai dengan kemampuan angkatnya. Dari dua ilustrasi tersebut dapat kita simak, bahwa pengulangan akan terus terjadi sampaidengan sebuah kondisi yang kita inginkan tercapai, dan pengulangan akan berakhir manakalakondisi yang kita harapkan sudah tercapai.Dalam pembuatan program komputer, kita kadang-kadang harus mengulang satu atau beberapa perintah agar memperoleh hasil sesuai dengan yang kita inginkan. Salah satu kelebihankomputer adalah mampu melakukan pengulangan sebanyak yang kita inginkan tanpa merasalelah dan bosan . Dalam contoh kedua, bisa saja anak tersebut berhenti menimba air bukan karena embernya sudah penuh, melainkan kecapaian.Tidak demikian halnya dengan computer, dia akan terus melakukan/mengeksekusi perintahsampai dengan selesai.Struktur pengulangan terdiri dari 2 bagian; 1.Kondisi Pengulangan yaitu syarat yang harus dipenuhi untuk melaksanakan pengulangan. Syarat ini biasanyanya dinyatakan dalam ekspresi Boolean yangharus diuji apakah mempunyai nilai true (benar) atau false (salah). 2.Badan pengulangn (loop body), yakni satu atau sekumpulan perintah yang harus diulang. Dalam pengulangan biasanya ada yang dikenal dengan inisialisasi dan terminasi.Inisialisasi adalah memberikan nilai awal pada sebuah variabel, sedangkan terminasi adalah nilai akhir sebagai tanda berakhirnya pengulangan. Ada beberapa pernyataan yang dapat dilakukan untuk menyelesaikan pengulangan ini. Pada pelaksanaannya pemakaian struktur pengulangan tergantung dari masalah yang harusdiselesaikan, dukungan bahasa pemrograman dan tehnik pendekatan dari programmer computer itu sendiri. Seperti halnya juga dalam pencabangan, bentuk satu pengulangan dapat sajamenyelesaikan beberapa kasus yang berbeda. Namun ada juga bentuk pengulangan yang hanyacocok untuk kasus tertentu saja. Pemilihan bentuk pengulangan yang tepat, dapat meningkatkankinerja dan efisiensi sebuah program computer. ALGORITMA Looping pada Borland Looping adalah sebuah perulangan dalam c++ yang digunakan untuk megulang sebuah kode program tertentu. Dengan looping, seorang programer tidak lagi menulis kode program secara berulang untuk kode yang fungsi dan penggunaanya sama , tetapi hanya mendevenisikannya di dalam looping sehingga dapat menghemat space dalam menulis kode sebuah program. Ada 3 (tiga) cara untuk melakukan perulangan / looping di C++ yaitu : 1. for statement 2. while statement 3. do while statement Loop adalah : perulangan statement dengan jumlah tertentu jika kondisi terpenuhi. 1. FOR STATEMENT Perulangan For Perulangan yang pertama adalah for. Bentuk umum pernyataan for sebagai berikut : for ( inisialisasi; syarat pengulangan; pengubah nilai pencacah ) Bila pernyataan didalam for lebih dari satu maka pernyataan-pernyataan tersebut harus diletakan didalam tanda kurung. for ( inisialisasi; syarat pengulangan; pengubah nilai pencacah ) { pernyataan / perintah; pernyataan / perintah; pernyataan / perintah; } Keterangan: * inisialisasi : nilai awal pada variabel * syarat pengulangan : hal yang menentukan apakah suatu perulangan diteruskan atau dihentikan. * pengubah nilai pencacah : pengatur nilai kenaikan atau penurunan nilai pencacah. Contoh1: /* --------------------------- */ /* Program for - bilangan naik */ /* --------------------------- */ #include #include #include main() { int a; clrscr(); for(a = 1; a <= 10; ++a) cout<< a; getch(); } Contoh2: /* ------------------------------*/ /* Program Menampilkan Warna - 1 */ /* ------------------------------*/ #include #include main() { int e; clrscr(); for(e=1; 17>e; e++) { gotoxy(e, e); textcolor(e); cprintf("\nwarna ke-%d",e); } getche(); } Keterangan: cprintf() = Menampilkan data dengan format pewarnaan teks dan pewarnaan latar belakang. Perulangan Nested For Pernyataaan Nested for adalah suatu perulangan for didalam perulangan for yang lainnya. Bentuk umum pernyataan Nested for sebagai berikut : for ( inisialisasi; syarat pengulangan; pengubah nilai pencacah ) { for ( inisialisasi; syarat pengulangan; pengubah nilai pencacah) { pernyataan / perintah; } } Contoh3: /* ------------------------- */ /* Program for - Nested for */ /* ------------------------- */ #include #include #include main() { int a, b; clrscr(); for(a = 1; a <= 5; a++) { printf("\n"); for(b = a; b <= 5; b++) cout<< a<< " "; } getch(); } 2. WHILE STATEMENT Pernyataan perulangan while merupakan instruksi perulangan yang mirip dengan perulangan for. Bentuk perulangan while dikendalikan oleh syarat tertentu, yaitu perulangan akan terus dilaksanakan selama syarat tersebut terpenuhi. Bentuk umum perulangan while, sebagai berikut : while ( syarat ) Pernyataan / perintah ; Contoh program : /* Program while01.cpp */ /* ------------------- */ #include #include #include main() { int bil=1; clrscr(); while(bil<=10) { cout<< bil<< " "; ++bil; } getch(); } 3. DO WHILE STATEMENT Bentuk umum : Do statement while ( cond-exp ) ; Perbedaan dengan while statement adalah : pada do while kondisi akan dievaluasi setelah dilakukan statement/proses. Selain itu pada do while minimal akan dilaksanakan 1 (satu) kali statement/instruksinya. Pernyataan perulangan do - while merupakan bentuk perulangan yang melaksanakan perulangan terlebih dahulu dan pengujian perulangan dilakukan dibelakang. Bentuk umum perulangan do - while, sebagai berikut : do pernyataan / perintah ; while ( syarat ); Contoh program : /* Program do - while */ /* ------------------ */ #include #include #include main() { int bil=2; clrscr(); do { cout<< bil<< " "; bil+=2; } while(bil<=10); getch(); } (Procedure and Function) Dalam konsep pemrograman, pemrograman terutama terstruktur, dikenal adanya konsep subrutin. Awalnya dikembangkan untuk menyingkat subroutine menulis kode program rumit jika beberapa langkah harus dilakukan beberapa kali di tempat yang berbeda. Selain itu, fasilitas subroutine, program mnejadi lebih efisien, jelas, dan waktu penulisan juga menjadi lebih pendek. Istilah itu sendiri menunjukkan adanya sekelompok pernyataan subrutin Commons yang merupakan bagian dari program atau subrutin lain. Dalam Visual Basic terdapat dua jenis subroutine, yaitu prosedur dan fungsi. Pada dasarnya prosedur dan fungsi memiliki tujuan yang sama, hanya ada perbedaan pada apakah subroutine kembali nilai atau tidak. Jika kembali nilai, kemudian disebut fungsi, sedangkan jika tidak, maka disebut prosedur. Setelah prosedur atau fungsi dibuat, maka prosedur atau fungsi dapat dipanggil sesuai dengan tugas yang telah ditentukan pada prosedur atau fungsi. Prosedur atau fungsi dapat ditulis pada form atau pada modul khusus untuk meletakkan subroutine .. Perbedaannya adalah berbagai penggunaan tersebut subrutin. Subroutine dalam bentuk, hanya dapat digunakan pada bentuk yang subroutine dibuat, sedangkan subroutine yang terdapat dalam modul ini dapat digunakan pada semua bagian dari program tersebut. Jelas menunjukkan bahwa ada manajemen membuat program Visual Basic. Tugas menentukan apakah suatu subrutin terletak pada bentuk atau modul adalah tugas programmer. Programmer diharuskan untuk membuat sebuah program yang mudah dikelola. Procedures and Functions, dari beberapa para ahli Desain modular merupakan salah satu pilar dari pemrograman terstruktur. Sebuah program modular berisi blok kode dengan single entry dan exit point. Anda dapat menggunakan kembali ditulis dengan baik bagian dari kode dalam program lain atau di bagian lain dari program yang sudah ada. Jika Anda menggunakan kembali segmen yang ada kode, Anda tidak perlu desain, kode, atau men-debug bahwa bagian kode karena (mungkin) Anda sudah melakukannya. Mengingat meningkatnya biaya pengembangan perangkat lunak, desain modular akan menjadi lebih penting seiring berjalannya waktu. Unit dasar dari program modular adalah modul. Modul memiliki arti yang berbeda kepada orang-orang yang berbeda, di sini Anda dapat berasumsi bahwa modul istilah, subprogram, subroutine, unit program, prosedur, dan fungsi semua identik. Prosedur adalah dasar untuk gaya pemrograman. Para bahasa prosedural meliputi Pascal, BASIC, C + +, FORTRAN, PL / I, dan ALGOL. Contoh non-prosedural bahasa termasuk APL, LISP, SNOBOL4 ICON, TERCANTUM, SETI, PROLOG, dan lain-lain yang berdasarkan konstruksi pemrograman lain seperti abstraksi fungsional atau pencocokan pola. Bahasa assembly mampu bertindak sebagai bahasa prosedural atau non-prosedural. Karena Anda mungkin lebih akrab dengan paradigma pemrograman procedural teks ini akan menempel simulasi konstruksi prosedural dalam bahasa assembly 80x86. Ikhtisar Bab ini menyajikan pengenalan prosedur dan fungsi dalam bahasa assembly. Ini membahas prinsip-prinsip dasar, melewati parameter, hasil fungsi, variabel lokal, dan rekursi. Anda akan menggunakan sebagian besar teknik bab ini membahas dalam perakitan khas bahasa program. Pembahasan prosedur dan fungsi berlanjut di akhirat bab, bab yang membahas teknik-teknik canggih yang Anda tidak akan biasa digunakan dalam program bahasa assembly. Bagian bawah yang memiliki "•" awalan sangat penting. Mereka bagian dengan "o "mendiskusikan topik-topik lanjutan yang Anda mungkin ingin menunda untuk sementara o Recursion. • Procedures. o Near and far procedures. • Functions • Saving the state of the machine • Parameters • Pass by value parameters. • Pass by reference parameters. o Pass by value-returned parameters. o Pass by result parameters. o Pass by name parameters. • Passing parameters in registers. • Passing parameters in global variables. • Passing parameters on the stack. • Passing parameters in the code stream. o Passing parameters via a parameter block. • Function results. • Returning function results in a register. • Returning function results on the stack. • Returning function results in memory locations. • Side effects. o Local variable storage. Kesimpulan. Struktur dasar algoritma terbentuk dari tiga struktur dasar, yakni struktur berurutan,struktur percabangan/pemilihan/keputusan dan struktur pengulangan. Dalam bahasa pemrograman ketiga dasar pembentuk sebuah algoritma tersebut dikenal dengan sequencing, ranching danlooping. Pada dasarnya hampir semua algoritma merupakan gabungan daristruktur tersebut. http://www.scribd.com/doc/19012031/ALGORITMA-DASAR http://wartawarga.gunadarma.ac.id/2009/11/aplikasi-algoritma-branch-and-bound-untuk-menyelesaikan-integer-programming/ http://algo-id.blogspot.com/2010/06/subroutine-procedure-and-function.html http://flint.cs.yale.edu/cs422/doc/art-of-asm/pdf/CH11.PDF

x

x

Tidak ada komentar:

Posting Komentar