Sabtu, 15 Januari 2011

LOGIKA & ALGORITMA

PENGERTIAN DASAR LOGIKA DAN ALGORITMA

Sejarah Algoritma

Asal kata Algoritma berasal dari nama Abu Ja’far Mohammed Ibn Musa al-Khowarizmi, ilmuan Persia yang menulis kitab al jabr w’al-muqabala (rules of restoration and reduction) sekitar tahun 825 M.
Logika berasal dari bahasa Yunani kuno “logos”yang berarti hasil pertimbangan dari akal pikiran yang diutarakan lewat kata dan diterjemahkan lewat bahasa.Selain itu ada juga definisi menurut suatu kamud bahasa Webster Dictionary bahwa algoritma adalah suatu metode khusus yang doginakan untuk menyelesaikan suatu masalah yang nyata.

Definisi Algoritma
1. Langkah-langkah yang dilakukan agar solusi masalah dapat diperoleh
2. Suatu prosedur yang merupakan urutan langkah-langkah yang berintegrasi
3. Suatu metode khusus yang digunakan untuk menyelesaikan suatu masalah yang nyata.(Webster Dictionary)



@ Alur pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis.
Alur pikiran yang artinya algoritma seseorang dapat berbeda dari algoritma orang lain.
tertulis, yang artinya dapat berupa kalimat, gambar, atau tabel tertentu.

Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai
masalah pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang
baik maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien.

Note:
Algoritma Di butuhkan untuk memerintah computer mengambil langkah-langkah tertentu untuk menyelesaikan masalah
Algoritma  Pemrograman  Program
Agar algoritma dapat memerintah (diproses) komputer, maka dirubah menjadi bentuk program (melalui proses pemrograman).

@ Kriteria Pemilihan Algoritma

1. Ada output: mengacu pada definisi algoritma, suatu algoritma haruslah mempunyai output yang harus merupakan solusi dari masalah yang sedang diselesaikan.

2. Efektifitas dan Efisiensi ikatan efektif jika algoritma tersebut menghasilkan suatu solusi yang sesuai dengan masalah yang diselesaikan dalam arti algoritma harus tepat guna.Dikatakan efisiensi jika waktu proses suatu algoritma relatif lebih singkat dan penggunaan memori komputernya lebih sedikit.

3. Jumlah langkahnya berhingga : maksudnya adalah barisan instruksi yang dibuat harus dalam suatu urutan tertentu atau harus berhingga agar masalah yang dihadapi dapat diselesaikan dengan tidak memerlukan waktu relatif lama.

4. Berakhir à (Semi Algoritma) : proses didalam mencari penyelesaian suatu masalah harus berhenti dan berakhir dengan hasil akhir yang merupakan solusinya atau berupa informasi yang tidak diketemukan solusinya. Artinya baik dalam kondisi solusi ada atau tidak ada, proses akan tetap harus berakhir dan berhenti. Istilah lain dalam algoritma dikenal sebagai SEMI ALGORITMA, yaitu suatu prosedur yang hanya akan berhenti jika mempunyai atau menghasilkan solusi, sedangkan jika tidak menghasilkan solusi, maka prosedur tersebut akan berjalan tanpa henti.

5. Terstruktur : yaitu urutan barisan langkah-langkah yang digunakan harus disusun sedemikian rupa agar proses penyelesaian tidak berbelit-belit sedemikian sehingga bagian-bagian proses dapat dibedakan dengan jelas mana bagian input, proses dan output sehingga memudahkan user melakukan pemeriksaan ulang.

Kesimpulannya:
Suatu Algoritma yang terbaik(The Best) : “Suatu algoritma harus menghasilkan output yan tepat guna(efektif) dalam waktu yang relatif singkat & penggunaan memori yang relatif sedikit(efisien) dengan langkah yang berhingga & prosedurnya berakhir baik dalam keadan diperoleh suatu solusi ataupun tidak ada solusinya”

Contoh:

A. Algoritma untuk mengirimkan surat

1. Tulis surat pada secarik kertas surat
2. Ambil sampul surat atau amplop
3. Masukkan surat ke dalam amplop
4. Tutup amplop surat dengan lem perekat
5. Tulis alamat surat yang dituju, jika tidak diingat, lebih dahulu ambil buku alamat & cari alamat yang dituju, lalu tulis alamat tersebut pada amplop surat
6. Tempelkan perangko pada amplop surat
7. Bawa surat ke kantor pos untuk diserahkan pada pegawai pos atau menuju ke bis surat untuk memasukkan surat ke dalam kotak/bis surat.
B. Algoritma untuk menentukan bilangan akar kuadrat dari suatu bilangan bulat positif yang diinput.
1. Baca bilangan bulat positif yang diinput, sebut saja sebagai A.
2. Dinyatakan Nilai B adalah 0
3. Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu stop
4. Jika tidak, maka nilai B akan bertambah 1
5. Kembali ke langkah pada No.

Penulisan Algoritma :

1.Menggunakan bahasa natural (Bahasa manusia: Indonesia, Inggris)
Kelemahannya masih sering membingungkan (ambigu) / sulit dipahami.
2.Menggunakan Flowchart
Baik karena alur algoritma dapat dilihat secara visual, tetapi repot pembuatannya jika algoritma panjang
3.Menggunakan Pseudocode
Sudah dekat dengan bahasa pemrograman, tetapi sulit dimengerti oleh orang yang belum tahu pemrograman

A.Tahap Analisa Algoritma

1.Bagaimana merencanakan algoritma
Menentukan beberapa model atau desain sebagai penyelesaian dari suatu masalah untuk mendapat sebuah solusi yan mungkin. Dengan demikian, akan banyak terdapat variasi desain atau model yang dapat diambil yang terbaik.

Contoh : Permasalahan menghitung luas lingkaran,dengan data yang diketahui adalah diameter lingkaran.
Rumus : ∏ . r2 dengan Phi = 3.14 atau 22/7.

2.Bagaimana menyatakan suatu algoritma (menulis algoritma)
Menentukan model suatu algoritma yang digunakan sehingga dapat membuat barisan langkah secara berurutan guna mendapatkan solusi penyelesaian masalah. Menentukan model tersebut agar dapat digunakan dengan cara:

@ Dengan psudocode
suatu cara penulisan algoritma agar ide dan logika dari algoritma dapat disampaikan/diekspresikan menggunakan gaya bahasa pemrograman pemrograman tertentu.

@ Dengan flowchart / diagram alir
Program Flowchart
Yaitu bagan yang menggambarkan urutan logika dari suatu prosedur pemecahan masalah.




- Dengan Statement Program/Penggalan Program

Contoh:
Read Alas
Read Tinggi
Luas=(Alas*Tinggi)/2
Write(luas)

3. Bagaimana validitas suatu algoritma
Yakni jika penyelesaian memenuhi solusi yang sebenarnya, artinya solusi yang didapat merupakan penyelesaian suatu masalah dan bukannya membuat masalah baru.

4. Bagaimana menganalisa suatu algoritma
Caranya melihat running time atau waktu tempuh yang digunakan dalam menyelesaikan masalah serta jumlah memori yang digunakan dalam penyelesaian masalah tersebut.

5. Bagaimana menguji program dari suatu algoritma
Yaitu dengan cara menyajikannya dalam salah satu bahasa pemrogramana, misalnya BASIC, PASCAL, FORTRAN, dBase, atau yang lainnya.

Studi Kasus :
Buatlah Algoritma untuk memilih bilangan terbesar dari 3 buah bilangan ?

Dengan Bahasa Natural
1.Ambil bilangan pertama dan set maks sama dengan bilangan pertama
2.Ambil bilangan kedua dan bandingkan dengan maks
3.Apa bila bilangan kedua lebih besar dari maks, set maks sama dengan bilangan kedua
4.Ambil blangan ketiga dan bandingan dengan maks
5.Apabila bilangan ketiga lebih besar dari maks, set maks sama dengan bilangan ketiga
6.Variabel maks berisi bilangan terbesar. Tampilkan hasilnya

Dengan Flowchart

Dengan Pseudo-code

Maks ←bilangan pertama
if (maks < bilangan kedua) maks←bilangan kedua if (maks < bilangan ketiga) maks ← bilangan ketiga B.Tahap Proses Uji Algoritma Fase Debugging, yaitu fase dari suatu proses program eksekusi yang akan melakukan koreksi terhadap kesalahan program. Yang dimaksud disni adalah error atau salah dalam penulisan program baik logika maupun sintaksnya. Fase Profilling, yaitu fase yang akan bekerja jika program tersebut sudah benar atau telah melalui proses pada fase debugging. Fase ini bekerja untuk melihat dan mengukur waktu tempuh atau running time yang diperlukan serta jumlah memori/storage yang digunakan dalam menyelesaikan suatu algoritma. C.Analisis Algoritma (Untuk melihat faktor efisiensi & efektifitas dari algoritma tersebut), dapat dilakukan terhadap suatu algoritma dengan melihat pada: Waktu tempuh(Running Time) dari suatu algoritma: adalah satuan waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu masalah. Hal-hal yang dapat mempengaruhi daripada waktu tempuh adalah: Banyaknya langkah: Makin banyak langkah atau instruksi yang digunakan dalam menyelesaikan masalah, maka makin lama waktu tempuh yang dibutuhkan dalam proses tersebut Besar dan jenis input data: Besar dan jenis input data pada suatu algoritma akan sangat berpengaruh pada proses perhitugan yang terjadi. Jika jenis data adalah tingkat ketelitian tunggal(Single precision), maka waktu tempuh akan menjadi relatif lebih cepat dibandingkan dengan tingkat ketelitian ganda(double precesion),atau triple, quadruple precision. Jenis operasi: Waktu tempuh juga dipengaruhi oleh jenis operasi yang digunakan. Jenis operasi tersebut meliputi operasi matematika, nalar atau logika, atau yang lainnya. Sebagai contoh, operasi perkalian atau pembagian akan memakan waktu lebih lama dibandingkan operasi penjumlahan atau pengurangan. Komputer dan kompilator: hal terakhir yang mempengaruhi waktu tempuh suatu proses algoritma adalah komputer dan kompilatornya, walaupun sebenarnya faktor ini diluar tahap rancangan atau tahap pembuatan algoritma yang efisien. Algoritma dibuat untuk mencapai waktu tempuh yang seefektif dan seefisien mungkin, tetapi kesemuanya itu akan sangat bergantung pada kemampuan komputer yang tentunya harus sesuai dengan jumlah program atau langkah yang diperlukan oleh algoritma, begitu juga dengan kompilator tersebut, misalnya PC XT 8086 akan kalah cepat dibandingkan 8088 atau dengan AT 80286 atau 80386 atau 80486 dan seterusnya. Jumlah Memori Yang digunakan: banyaknya langkah yang digunakan dan jenis variabel data yang dipakai dalam suatu algoritma akan sangat mempengaruhi penggunaan memori. Dalm hal ini, diharapkan dapat memperkirakan seberapa banyak kebutuhan memori yang diperlukan selama proses berlangsung hingga proses selesai dikerjakan. Dengan demikian, dapat disiapkan storage yang memadai agar proses suatu algoritma berjalan tanpa ada hambatan atau kekurangan memori. D.Sifat-sifat Algoritma Aspek Penting Algoritma : Banyaknya langkah instruksi harus berhingga: pelaksanaan sebuah algoritma yang terprogram haruslah dapat diakhiri atau diselesaikan melalui sejumlah langkah operasional yang berhingga. Jika tidak demikian, kita tidak akan dapat mengharapkan bahwa pelaksaan algoritma tersebut dapat menghasilkan suatu solusi yang baik. Langkah atau instruksi harus jelas: artinya bahwa penulisa setiap langkah yang terdapat didalam sebuah algoritma harus memiliki arti yang khusus atau spesifik sehingga dapat dibedakan antara penulisan langkah untuk komputer(program/pemrograman) dengan penulisan langkah bagi manusia(pesudocode). Manusia akan lebih mudah memahami algoritma yang terdiri atas simbol-simbol(Contoh: pembuatan algoritma dengan diagram alur/flowchart) sedangkan komputer hanya membutuhkan sebuah penulisan algoritma dengan kode-kode yang dituangkan dalam bahasa yang dimengerti oleh komputer itu sendiri(bahasa pemrograman). Proses harus jelas dan mempunyai batasan: rangkaian suatu proses yang berisi langkah-langkah instruksi dari suatu algoritma yang akan dilaksanakn harus ditetapkan dengna jelas, baik dan pasti sebab sebuah algoritma harus memiliki instruksi dasar tertentu dimana setiap instruksi harus memiliki unsur pelaksana yang berfungsi sebagai pemroses data yang akan dimasukkan dalam sebuah komputer. Dengan demikian, sebuah algoritma harus ditulis dengan jelas tentang batasa-batasan proses yang akan dilaksanakan oleh komputer. Input dan Output harus mempunyai batasan: input merupakan data yang dimasukkan ke dalam algoritma yang untuk kemudian akan dilaksanakan oleh komputer. Dengan begitu, input yang diberikan harus sesuai dengan jenis dari bahasa pemrograman yang digunakan, sedangkan ouput merupakan hasil yang diperoleh dari pekerjaan yang dilaksanakan komputer untuk kepentingan user yang merupakan pihak diluar komputer. Algoritma harus menghasilkan output karena merupaka solusi yang diharapkan dari suatu masalah yang timbul. Efektifitas: instruksi yang diberikan pada komputer agar hanya menjalankan atau melaksanakan proses yang mampu dilaksanakannya. Yang dimaksud mampu adalah bahwa suatu algoritma atau instruksi-instruksi dalam sebuah program hanya akan dapat dilaksanakan jika informasi yang diberikan oleh instruksi-instruksi tersebut lengkap, benar dan jelas. Adanya batasan ruang lingkup, sebuah algoritma yang baik adalah hanya ditujukan bagi suatu masalah tertentu saja. Susunana input harus ditentukan lebih dulu sebab susunan tersebut enentukan sifat umum dari algoritma yang bersangkutan. Langkah-langkah yang membentuk suatu algoritma dapat dibagi menjadi 3 kelompok proses: 1.Sequence Process--> instruksi dikerjakan secara berurutan satu persatu dimulai dari langkah pertama sampai terakhir.
2.Selection Process-->instruksi pemilihan proses (percabangan), sehingga apabila memenuhi persyaratan tertentu maka instruksi akan dikerjakan.
Contoh :
jika pembayaran tunai diberi diskon 10%
Jika dilakukan secara redit maka diskon 0 %.
(dalam pernyataan diatas, hanya boleh melakukan 1 instruksi dari 2 alternatif instruksi.
3.Iteration Process-->suatu instruksi yang dikerjakan berulang-ulang selama beberapa kali selama masih memenuhi suatu kondisi.

KONSEP ALGORITMA

@ Algoritma Variabel Pe-ubah
Adalah variabel yang nilainya BUKAN konstanta (selalu berubah – sesuai dengan kondisi Variabel terKINI)

Sintaks : P = Q
Algoritma : P <- Q Arti : Bahwa Nilai P diberi harga Nilai Q Nilai P akan SAMA DENGAN nilai Q dan Nilai Q TETAP Contoh Soal 1: Diketahui P=0, Q=5 dan R=10. Diberikan algoritma P=Q, Q=R, maka nilai P, Q, R sekarang ? Jawab Diketahui P = 0, Q = 5, R = 10 P = Q –> Pada saat ini nilai dari Variabel P akan diberi nilai dari Variabel Q (P = 5)
Q = R –> Pada saat ini nilai dari Variabel Q akan diberi nilai dari Variabel R (Q = 10)
Maka nilai P, Q dan R sekarang adalah P = 5, Q = 10 dan R = 10

Contoh Soal 2:
Diketahui Algoritma P=10, P=P+1 dan Q = P. Berapakah nilai P dan Q ?

Jawab
Algoritma:
P = 10 –> Pada saat ini nilai dari Variabel P akan diberi nilai 10
P = P + 1 –> Pada saat ini nilai dari Variabel P yang baru adalah nilai dari variabel P yang lama ditambah 1 (10 + 1 = 11)
Q = P –> Pada saat ini nilai dari variabel Q diberi nilai dari variabel P yang baru (Q =11)

Contoh Soal 3:
Diketahui 3 varibael peubah P, Q dan R. Agar isi Q ditaruh di P, isi R ditaruh di Q dan isi P ditaruh di R,maka Algoritma yang dapat ditulis adalah ..?

Jawab
Agar isi Q ditaruh di P, algoritma yang dapat ditulis adalah (P <- Q atau P=Q) Agar isi R ditaruh di Q, algoritma yang dapat ditulis adalah (Q <- R atau Q=R) Agar isi P ditaruh di R, algoritma yang dapat ditulis adalah (R <- P atau R=P) @ Algoritma Variabel Pertukaran Berfungsi mempertukarkan masing-masing isi Variabel sedemikian sehingga Nilai dari tiap Variabel akan berubah/bertukar. Contoh Soal: Diketahui 2 peubah K = 10 dan L = 20. Buat Algoritma untuk mempertukarkan isi K dan L .. ? Jawab Untuk menyelesaikan algoritma pertukaran, dibutuhkan satu buah peubah (variabel) tambahan untuk menyimpan nilai dari salah satu peubah. Algoritma pertukaran untuk masalah diatas adalah (dimisalkan variabel tambahan adalah T). T = K –> Pada algoritma ini nilai dari variabel T (variabel tambahan) akan diisi dengan nilai dari variabel K (T = 10)
K = L –> Pada algoritma ini nilai dari Variabel K akan diisi dengan variabel L (K = 20)
L = T –> Pada algoritma ini nilai dari Variabel L akan diisi dengan variabel T (L = 10)
Setelah algoritma ini dijalankan dapat dilihat bahwa algorita diatas telah mempertukarkan nilai dari variabel-variabel tersebut. Sebelumnya variabel K = 10 dan L = 20, menjadi variabel K = 20 dan L = 10

KONSEP ALGORITMA

Contoh Soal :
3.Diketahui 3 variabel peubah P,Q dan R. Agar isi Q ditaruh di P, isi R ditaruh di Q dan isi P ditaruh di R, maka Algoritma yang dapat ditulis adalah : ……….

Buatlah Algortimanya?
Setelah selesai cek lah algoritma nya, misalkan dengan P=10, Q=20, R=30.
Sehingga hasil akhir menjadi : P=20, Q=30 dan R=10.

4.Diketahui 2 peubah K = 10 dan L = 20. Buat Algoritma untuk mempertukarkan isi K dan L. :

@ Studi Kasus:
Algoritma TUKAR ISI BEJANA
Diberikan dua buah bejana A dan B,
bejana A berisi larutan berwarna merah,
bejana B berisi larutan berwarna biru.
Pertukarkan isi kedua bejana itu sedemikian sehingga bejana A berisi larutan
berwarna biru dan bejana B berisi larutan berwarna merah.

algoritma :
Tuangkan larutan dari bejana A ke dalam bejana B
Tuangkan larutan dari bejana B ke dalam bejana A.

-->Apakah cara di atas BENAR ?
Apakah hasil yang didapat sesuai dengan penyelesaian masalah?
Apa hasil yang didapat ?
Algoritma TUKAR ISI BEJANA di atas tidak menghasilkan pertukaran yang benar.
Langkah di atas tidak logis, hasil pertukaran yang terjadi adalah percampuran kedua larutan tersebut.

Penyelesaian :
Untuk mempertukarkan isi duah bejana, diperlukan sebuah bejana tambahan sebagai tempat penampungan sementara, misalnya bejana C.

Algoritma yang menghasikan pertukaran yang benar sebagai berikut:
Tuangkan larutan dari bejana A ke dalam bejana C.
Tuangkan larutan dari bejana B ke dalam bejana A.
Tuangkan larutan dari bejana C ke dalam bejana B.

DIAGRAM ALUR / FLOWCHART

Flowchart
-->Flowchart adalah representasi grafik dari langkah-langkah yang harus diikuti dalam menyelesaikan suatu permasalahan yang terdiri atas sekumpulan simbol, dimana masing-masing simbol merepresentasikan suatu kegiatan tertentu.
-->Flowchart diawali dengan penerimaan input, pemrosesan input, dan diakhiri dengan penampilan output.
-->bagan yang menggambarkan urutan logika dari suatu prosedur pemecahan masalah.
-->suatu diagram yang menggambarkan susunan logika suatu program




Simbol yang digunakan :
@menunjukkan awal dan akhir dari program
@memberikan niai awal pada suatu variabel atau counter
@menunjukkan pengolahan aritmatika dan pemindahan data
@menunjukkan proses input atau output
@untuk mewakili operasi perbandingan logika
@proses yang ditulis sebagai sub program, yaitu prosedur/ fungsi
@penghubung pada halaman yang sama
@penghubung pada halaman yang berbeda

Simbol Flowchart dan fungsinya :


Flowchart terdiri dari 3 struktur :
1.Struktur Squence /sederhana
Diagram yang alurnya mengalir secara berurutan dari ataske bawah atau dengan kata lain tidak adanya percabangan atau pengulangan
Flowchart dengan struktur yang beurutan  alirannya dari atas kebawah secara berurutan.



Contoh : flowchart dari algoritma mencari luas persegi panjang, Luas Lingkaran.

2. Struktur Branching / Percabangan

Diagram yg alurnya terjadi/terdapat alih kontrol berupa percabangan.

Flowchart dengan stuktur percabangan digunakan untuk meyeleksi kondisi dan menentukan pilihan proses selanjutnya.

Bentuk flowchart tersebut seperti :



contoh : flowchart dari algoritma menentukan apakah bilangan yang dimasukan ganjil atau genap

3. Struktur Looping / Perulangan

Flowchart dengan Struktur perulangan digunakan untuk mengulangi langkah-langkah sebelumnya sampai suatu kondisi terpenuhi.

Bentuk flowchart tersebut seperti:


Flowchart Looping
Contoh dari flowchart ini misalnya algoritma untuk menentukan bilangan ganjil dibawah nilai 20. Sehingga proses mencetak bilangan tersebut akan dilakukan sampai kondisi terpenuhi yaitu 20.

{Catatan}:
Ketiga struktur diatas dapat digunakan secara bersamaan pada satu diagram alur.

@ VARIABEL

Digunakan sebagai tempat untuk menyimpan nilai yang sejenis. Terdiri dari nama dari variabel itu sendiri dan nilai yang disimpan.
Contoh pemberian nilai ke variabel :
A = 5 –> artinya Variabel A akan diberi nilai 5
A = B –> artinya Variabel A akan diberi nilai sama dengan nilai variabel B.
A = A + 1 –> Variabel A dirubah isinya dengan variabel A yang dijumlahkan dengan 1.

Jenis variabel terbagi atas:
1. Variabel numerik –> berisi angka numerik / bilangan.
2. Variabel string –> berisi karakter / untaian karakter
Catatan: Flowchart yang dibuat bisa juga merupakan gabungan dari ketiga struktur diatas.
VARIABEL
Variabel, sebagai tempat untuk menyimpan suatu nilai yang sejenis. Terdiri dari nama dari variable itu sendiri dan nilai yang disimpan.

variabel / Peubah-->suatu nilai yg dapat berubah harganya.
Contoh pemberian nilai ke variabel :
A = 5--> variabel A diberi nilai 5.
A = B-->variabel A diberi nilai sama dengan nilai variabel B.variabel B sudah memiliki nilai sebelumnya
A = A +1--> variabel A dirubah isinya dengan variabel A yang dijumlahkan dengan 1. (proses increament)
Jenis variabel terbagi atas :
1.Variabel numerik--> berisi angka numerik /bilangan
2.Variabel String-->berisi karakter.

STRUKTUR BRANCHING /Percabangan
1.Bersyarat
Diagram yg alurnya ada/banyak terjadi alih kontrol berupa percabangan & terjadi apabila kita dihadapkan pada suatu Kondisi dengan dua pilihan BENAR/ SALAH
Struktur :
A. If then
Bentuk umum penulisannya:
IF K THEN
S
ELSE---boleh ditulos atau tidak
K adalah kondisi….S adalah statement…..

B.If then else
IF K THEN S1 ELSE S2
Dengan K adalah suatu kondisi, S1 dan S2 adalah statement….
C.If then else if
D. Case of.
2.Tidak BersyaraT
Struktur : GO TO
Bentuk umum penulisannya adalah
GO TO Label;
CONTOH:
Hitung statement;
Statenment;
Statement;
Statement;
Goto hitung;

Soal Latihan :
1.Algoritma konversi jam ke menit. Dengan masukannya jam dan menit.
2.Algoritma untuk menghitung jumlah yang harus dibayar oleh pembeli dari sejumlah barang yang dibeli, setelah mendapatkan diskon 10% dengan syarat jumlah total pembelian > Rp.1.500.000,-

Jawaban Tugas 1 dan 2 (Pertemuan 1)
1.Algoritma untuk menampilkan bilangan Ganjil dari 1 sampai dengan 10
model 1:

1.Mulai
2.Tetapkan nilai Bilangan = 1 dan Batas_Bilangan = 10
3.Jika sisa pembagian (Bilangan/2) tidak sama dengan 0 (bilangan mod 2 <> 0) maka Cetak “Bilangan”, dan kelangkah 5.
4.Jika (Bilangan = Batas_Bilangan) maka ke-langkah 6
5.Nilai Bilangan ditambah 1 (Bilangan=Bilangan+1) dan kembali kelangkah 3
6.Selesai

2.Menghitung jumlah deret dari 1+2+3+ ….+ N.

1.Mulai
2.Masukan Nilai N
3.Tetapkan Bilangan = 1, Deret = 0
4.Hitung Deret = Deret + Bilangan
5.Jika Bilangan = N maka cetak Deret dan stop
6.Jika tidak, Bilangan ditambah 1 (Bilangan = Bilangan + 1) dan kembali kelangkah 4.

STRUKTUR REKURSIF

Rekursif adalah suatu proses dari suatu subprogram yang dapat berupa fungsi atau prosedur yang memanggil dirinya sendiri.
Perulangan Rekursif dan Perulangan Iteratif.
Perulangan rekursif merupakan salah satu metode didalam pemrograman yang mana dalam sebuah fungsi terdapat intruksi yang memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri.

Perulangan iteratif merupakan perulangan yang melakukan proses perulangan terhadap sekelompok intruksi. Perulangan dilakukan dalam batasan syarat tertentu. Ketika syarat tersebut tidak terpenuhi lagi maka perulangan aka terhenti.

Persamaan :
1.Iteratif dan rekursif merupakan metode atau teknik didalam perulangan(looping)
2.Sama-sama memiliki bagian yang berfungsi sebagai batas dalam sebuah perulangan

Perbedaan :
Iteratif dalam melakukan perulangan membutuhkan suatu instruksi program seperti for, repeat until dan while do, sedangkan rekursi tidak memakai instruksi program seperti itu. Cukup dengan fungsi tersebut.

Procedure Rekursif;<--nama fungsi: rekursif. Begin Write(‘AMIK BSI ’); Rekursif;<--fungsi bernama rekursif ini dikatakan Sebagai fungsi rekursi karena dia memanggil Dirinya sendiri End; Begin Rekursif; End. Pada contoh diatas: sebuah fungsi/prosedur adalah sebuah proses. Contoh fungsi rekursif diatas adalah sebuah proses, dan didalam fungsi rekursif tersebut terdapat perintah/proses yang mengerjakan/memanggil proses rekursif (memanggil dirinya sendiri),sehingga fungsi/prosedur rekursif ini dinamakan fungsi rekursi. Pada contoh diatas proses rekursi ini tidak memiliki batas berhenti. Untuk mengetahui contoh fungsi rekursif ini silahkan melihat pada slide perkuliahan. Catatan: Fungsi/prosedur dalam sebuah bahasa pemrograman disebut juga subrutin/sub program. Subprogram ini berisi perintah –perintah khusus yang sering digunakan untuk proses pemrograman. Sehingga untuk menghindari penulisan kode program yang sering digunakan maka dibuatlah fungsi (subprogram). Cara untuk menggunakan subprogram yaitu dengan memanggil nama_fungsi tersebut melalui blok program utama. Contoh pemanggilan terdapat pada program faktorial. FUNGSI FAKTORIAL 0! = 1 N! = N x (N-1)! Untuk N > 0

function faktorial(N:integer):integer;
var i:integer;
begin
if N = 0 then
begin
faktorial :=1;
exit;
end
else
faktorial := n * faktorial(n-1);

end;

begin
write('Masukan Bilangan = '); readln(Bil);
write('jumlah faktorial = ',faktorial(Bil));
readln;
end.
HASIL:
Masukan Bilangan = 5
jumlah faktorial = 120

-->MENARA HANOI
Ini merupakan salah satu permasalahan rekursif yang terkenak dan pertama kali ditemukan oleh seorang pendeta Budha di Hanoi, Vietnam yang kemudian konsep tersebut dikenal dengan konsep menara Hanoi (The Tower of Hanoi). Menurut legenda pendeta tersebut akan memindahkan 64 buah piringan yang tidak sama besarnya dari satu menara ke menara lainnya.Mungkin karena terlalu sulit, pendet Budha tersebut mengatakan bahwa menara-menara tersebut berhasil dipindahkan.
Seperti permasalahan tersebut, bahwa permasalahan pada konsep ini adalah bagaimana cara memindahkan sejumlah piringan dari satu menara ke menara lainnya dengan satu menara bantu, dengan besar piringan tidak sama dan hanya boleh dilakukan hanya 1 kali.

Tujuan permainan ini adalah memindahkan n buah piringan dari tonggak asal A melalui tonggak bantu B menuju tonggak tujuan C. dengan aturan piring yang lebuh kecil tidak boleh berada dipiringan yang lebih besar.



Bayangkan keadaan berikut:
Ada 3 tiang (a, b, c) tempat piringan dengan ukuran yang bervariasi dapat ditumpuk. Pada mulanya semua piringan ada di “a”. Tugasnya adalah Memindah semua piringan ke “c” dengan aturan sbb:

• pada satu saat hanya boleh memindah 1 piringan
• setiap perpindahan berupa pengambilan piringan teratas dari satu tiang dan memasukannya ketiang lain, diatas piringan lain yang mungkin sudah ada pada tiang tersebut.
• Tidak boleh meletakan piringan diatas piringan lain yang lebih kecil. (piringan yang lebih besar tidak boleh berada di atas piringan yang lebih kecil).
• pada setiap akhir pemindahan semua piringan harus berada di tiang

Untuk Penyelesaian masalah kita daftarkan terlebih dahulu langkah-langkah penyelesaiannya:
a.ketika kondisi piringan  N= 1
Piringan 1 dipindahkan dari A ke C.
b.N =2
-->Pindahkan piringan 1 dari A ke B
-->Pindahkan piringan 2 dari A ke C
-->Pindahkan piringan 1 dari B ke C

Dari langkah – langkah penyelesaian diatas, maka dapat disimpulkan :
Untuk memindahkan piringan dari tonggak asal (A) ke tonggak tujuan (C) maka piringan ke N harus berada di tonggak tujuan (C).
Sedangkan piringan ke 1 sampai dengan (N-1) harus berada ditonggak bantu(B).
Setelah piringan ke 1 s/d N-1 berada di B, Kemudian pindahkan piringan ke 1 sampai dengan N-1 dari tonggak bantu (B) ke tonggak tujuan (C).


Untuk menyelesaikan masalah tersebut dapat digunakan algoritma Rekursif :

uses crt;
procedure Hanoi(n:integer;asal,bantu,tujuan:char);
begin
if n=0 then exit;
hanoi(n-1,asal,tujuan,bantu);
writeln('. Pindahkan piringan ke ',n,' dari ',asal,' ke ',tujuan);
hanoi(n-1,bantu,asal,tujuan);
end;

var N : integer;

begin
clrscr;
write('Jumlah Piringan = ');
readln(N);
hanoi(N,'A','B','C');
readln;
end.
Hasil :
Jumlah Piringan = 4
. Pindahkan piringan ke 1 dari A ke B
. Pindahkan piringan ke 2 dari A ke C
. Pindahkan piringan ke 1 dari B ke C
. Pindahkan piringan ke 3 dari A ke B
. Pindahkan piringan ke 1 dari C ke A
. Pindahkan piringan ke 2 dari C ke B
. Pindahkan piringan ke 1 dari A ke B
. Pindahkan piringan ke 4 dari A ke C
. Pindahkan piringan ke 1 dari B ke C
. Pindahkan piringan ke 2 dari B ke A
. Pindahkan piringan ke 1 dari C ke A
. Pindahkan piringan ke 3 dari B ke C
. Pindahkan piringan ke 1 dari A ke B
. Pindahkan piringan ke 2 dari A ke C
. Pindahkan piringan ke 1 dari B ke C

Hasil 2 :
Jumlah Piringan = 3
. Pindahkan piringan ke 1 dari A ke C
. Pindahkan piringan ke 2 dari A ke B
. Pindahkan piringan ke 1 dari C ke B
. Pindahkan piringan ke 3 dari A ke C
. Pindahkan piringan ke 1 dari B ke A
. Pindahkan piringan ke 2 dari B ke C
. Pindahkan piringan ke 1 dari A ke C

Referensi :
http://jkw1.wordpress.com/
http://yusriel.wordpress.com/
Yulikuspartono.2004.Pengantar Logika dan Algoritma,Yogyakarta.
Diposkan ole

DO-WHILE

Perulangan selain for adalah Do-While. Bentuk umum pernyataan Do-while sebagai berikut :
initial_counter;
do
{
statement 1;
statement 2;update_counter;
}
while(
condition_counter);


Do-While Multi Condition

Untuk Do-While multi kondisi sama dengan perulangan for yakni initial_counter, condition_counter, dan update_counter lebih dari 1.


Nested Do-While
Istilah nested-loop adalah situasi dimana sebuah proses berulang lainnya. Bentuk umum dariNested-loop adalah sebagai berikut;
initial_counter;
do
{initial_loop;
statement 1;update_counter;
do
{

statement 1;update_loop;
}
while(
condition_loop);}
while(
condition_counter);


For

Perulangan yang pertama adalah for. Bentuk umum pernyataan for sebagai berikut :
for(initial_counter;condition_counter;update_counter)
{
statement 1;
statement 2;
}
Dimana statement 1 dan statement 2 berbeda, namun kedua statement tersebut dilakukan perulangan.

Kita misalkan sebuah for ditulis seperti ini;
for(a;b;c)
{
d;
e;
}
eksekusi program dengan instruksi for seperti di atas adalah sebagai berikut;
  1. eksekusi a = inisialisasi counter.
  2. eksekusi b = cek syarat perulangan.
  3. eksekusi d = jika syarat perulangan terpenuhi.
  4. eksekusi e = jika eksekusi d terpenuhi.
  5. eksekusi c = update nilai counter.
  6. eksekusi b = cek syarat perulangan.
  7. eksekusi d = jika syarat perulangan terpenuhi.
  8. eksekusi e = jika eksekusi d terpenuhi.
  9. eksekusi c = update nilai counter.
  10. dan seterusnya b,d,e,c sampai condition counter tidak terpenuhi.

Untuk contoh listing programnya bisa dilihat di sini!



Modifikasi Parameter For

Parameter dalam intruksi for tidak harus diisi lengkap, bahwa tidak diisi pun tidak apa-apa, asalkan tanda (;) tetap ditulis. Namun, data yang seharusnya ditulis sebagai parameter harus diletakaan di dalam maupun di luar pernyataan for.
Bentuk modifikasinya sebagai berikut;
initial_counter
for( ;condition_counter; )
{
statement 1;
statement 2;
update_counter
}

Untuk contoh listing programnya bisa dilihat di sini!


For Multi Condition

Untuk for multi kondisi, yakni terdapat intruksi parameter for lebih dari 1. (initial_counter, condition_counter, dan update_counter lebih dari 1).

Untuk contoh listing programnya bisa dilihat di sini!



Nested For
Istilah nested-loop adalah situasi dimana sebuah proses berulang lainnya. Bentuk umum dariNested-loop adalah sebagai berikut;
for(initial_counter;condition_counter;update_counter)
{
for(initial_loop;condition_loop;update_loop)
{
statement 1;
}
}

ARRAY

Array adalah variabel Larik atau lebih dikenal dengan ARRAY adalah adalah Tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama. Suatu Array mempunyai jumlah komponen yang banyaknya tetap. Banyaknya komponen dalam suatu larik ditunjukan oleh suatu indek untuk membedakan variabel yang satu dengan variabel yang lainnya.
Dalam bahasa C, index dari array dimulai dengan 0 (zero).

Variabel array dalam Borland C++, dapat digolongkan menjadi tiga buah dimensi :
•Array Berdimensi Satu.
•Array Berdimensi Dua
•Array Berdimensi Tiga.

Pembahasan ini, hanya dibatasi pada Array Berdimensi Dua saja :

1. Array Berdimensi Satu
Sebelum digunakan, variabel array perlu dideklarasikan terlebih dahulu. Cara mendeklarasikan variabel array sama seperti deklarasi variabel yang lainnya, hanya saja diikuti oleh suatu indek yang menunjukan jumlah maksimum data yang disediakan.

Bentuk Umum pendeklarasian array :
Tipe-Data Nama_Variabel[Ukuran];
Keterangan :
•Type Data : Untuk menyatakan type data yang digunakan.
•Ukuran : Untuk menyatakan jumlah maksimum elemen array.

contoh pendeklarasian array
float Nil_Akhir[6];


1. Array Berdimensi Dua
Array dimensi dua tersusun dalam bentuk baris dan kolom, dimana indeks pertama menunjukan baris dan indeks kedua menunjukan kolom. Array dimensi dua dapat digunakan seperti pendatan penjualan, pendataan nilai dan lain sebagainya.

Bentuk Umum pendeklarasian array :
Tipe-Data Nama_Variabel[index-1][index-2];
Keterangan :
•Type Data : Untuk menyatakan type data yang digunakan.
•Index-1 : Untuk menyatakan jumlah baris
•Index-2 : Untuk menyatakan jumlah kolom

contoh pendeklarasian array
int data_jual[3][3]

* Inisialisasi Array
Inisialisasi adalah memberikan nilai awal terhadap suatu variabel.
Bentuk pendefinisian suatu array dapat dilihat dari contoh berikut :
Tipe_data nama_array[jml_elemen] = { nilai array };

contoh:
float data[2][5] = { {2, 3, 4, 5, 2},{4, 2, 6, 2, 7},};

SWITCH CASE

Bentuk dari Switch-case merupakan pernyataan yang dirancangan khusus untuk menangani pengambilan keputusan yang melibatkan sejumlah atau banyak alternatif penyelesaian. Pernyataan switch - case ini memiliki kegunaan sama seperti if – else bertingkat.

Kontruksi If-Else yang bertingkat-tingkat seringkali membingungkan pembacaan alur program. Bahasa C++ menyediakan intruksi Switch
untuk memudahkan pembacaan alur program bercabang yang sangat banyak. meskipun Switch didesain untuk mengganti If-Else, akan tetapi Switch memiliki batasan:

  1. Data yang diperiksa haruslah bertipe Integer (int) atau Karakter (char).
  2. Range data yang diperiksa bernilai 0 s/d 255.
Bentuk penulisan perintah ini sebagai berikut :
switch (value)
{
case constanta 1 : statement 1;
break;

case constanta 2 : statement 2;
break;
.....
.....etc
default : statement x;
}

Ket:

  • Constanta 1, constanta 2, dst adalah yang akan dicocokkan dengan isi value.
  • Statement adalah pernyataan yang akan di kerjakan jika value (bertipe Integer atau Karakter) cocok dengan salah satu data dari constanta 1 , constanta 2 atau yang lainnya.
  • break adalah perintah untuk mengakhiri statement. Apabila tidak ada break, komputer akan mengeksekusi intruksi yang berada di bawahnya walaupun berada di case yang berbeda.
  • default, bersifat optional. dieksekusi jika value tidak cocok dengan salah satu constantayang tersedia.
Kesimpulan:
Setiap cabang akan dijalankan jika syarat nilai konstanta tersebut dipenuhi dan default akan dijalankan jika semua cabang diatasnya tidak terpenuhi.
Pernyataan break menunjukan bahwa perintah siap keluar dari switch. Jika pernyataan ini tidak ada, maka program akan diteruskan kecabang – cabang yang lainnya.