Senin, 24 April 2017

Program Penukaran Uang Rupiah (C++)

Yap, good morning all. Pada artikel kali ini saya berkesempatan untuk berbagi program sederhana yang saya tulis dalam bahasa pemrograman C++. Program ini cukup sederhana, karena tujuannya hanya untuk mengetahui pecahan apa saja yang bisa diperoleh dari uang yang kita inputkan. Tentunya dalam bentuk mata uang Rupiah. Nominal pecahan yang saya pakai dalam program ini mulai dari 100 perak, 200 perak, 500 perak, seribu, 2 ribu, 5 ribu, 10 ribu, 20 ribu, 50 ribu, dan 100 ribu. Berikut hasil running Program Penukaran Uang Rupiah:

Ketika inputan negatif

Ketika inputan 0

Ketika inputan < 100

Rp 21.900,00

Rp 289.999,00

Source code:
#include <iostream>
//develop251.blogspot.com
using namespace std;

void pecahanDari(int x){
    if(x<=0){
        cout << "Anda tidak bermaksud menukar uang" << endl;
    }else if(x<100){
        cout << "Pecahan terkecil adalah 100 perak" << endl;
    }else{
        int _100rb = 0;
        int _50rb = 0;
        int _20rb = 0;
        int _10rb = 0;
        int _5rb = 0;
        int _2rb = 0;
        int _1rb = 0;
        int _500 = 0;
        int _200 = 0;
        int _100 = 0;
        
        while(x>=100000){
            _100rb++;
            x-=100000;
        }
        
        while(x>=50000){
            _50rb++;
            x-=50000;
        }

        while(x>=20000){
            _20rb++;
            x-=20000;
        }

        while(x>=10000){
            _10rb++;
            x-=10000;
        }

        while(x>=5000){
            _5rb++;
            x-=5000;
        }

        while(x>=2000){
            _2rb++;
            x-=2000;
        }

        while(x>=1000){
            _1rb++;
            x-=1000;
        }

        while(x>=500){
            _500++;
            x-=500;
        }

        while(x>=200){
            _200++;
            x-=200;
        }

        while(x>=100){
            _100++;
            x-=100;
        }
        
        if(_100rb) cout << _100rb << " lembar Rp 100.000,00" << endl;
        if(_50rb) cout << _50rb << " lembar Rp 50.000,00" << endl;
        if(_20rb) cout << _20rb << " lembar Rp 20.000,00" << endl;
        if(_10rb) cout << _10rb << " lembar Rp 10.000,00" << endl;
        if(_5rb) cout << _5rb << " lembar Rp 5.000,00" << endl;
        if(_2rb) cout << _2rb << " lembar Rp 2.000,00" << endl;
        if(_1rb) cout << _1rb << " lembar Rp 1.000,00" << endl;
        if(_500) cout << _500 << " koin Rp 500,00" << endl;
        if(_200) cout << _200 << " koin Rp 200,00" << endl;
        if(_100) cout << _100 << " koin Rp 100,00" << endl;
        if(x) cout << "sisa Rp " << x << ",00" << endl;    
    }
}

int main(){
    int uang;
    
    cout << "PROGRAM PENUKARAN UANG" << endl << endl;
    cout << "Uang Anda : "; cin >> uang; cout << endl;
    pecahanDari(uang);

    return 0;
}

Minggu, 09 April 2017

Apa itu Algoritma?

Animasi Pengurutan (Metode Quick Sort)

Algoritma? Apa itu Algoritma? Algoritma adalah prosedur langkah demi langkah untuk menyelesaikan suatu perhitungan. "Algoritma" berasal dari kata "Algoritmi", bentuk latin dari al-Khwarizmi (Muḥammad ibn Mūsā al-Khwārizmī), seorang ahli dalam bidang matematika, astronomi, astrologi, dan geografi yang berasal dari Persia.

Algoritma sangatlah penting dalam pembuatan suatu program komputer. Biasanya sebuah algoritma dihubungkan dengan pengolahan informasi, data dibaca dari sumber masukan, ditulis ke perangkat keluaran, dan/atau disimpan untuk pengolahan selanjutnya.

Untuk beberapa proses komputasi, algoritma harus ditentukan secara teliti, yaitu dijabarkan dengan cara ia bakal berlaku untuk semua kemungkinan yang dapat timbul. Setiap langkah tambahan harus secara sistematis dihadapi, kasus per kasus. Karena algoritma adalah kumpulan dari langkah-langkah yang tepat, urutan dari komputasi selalu penting bagi berfungsinya algoritma. Instruksi dijelaskan dimulai "dari atas" dan terus "ke bawah".

Algoritma dapat digambarkan dengan banyak notasi, termasuk bahasa alamiah, pseudocode, diagram alur, atau bahasa pemrograman. Ekspresi bahasa alamiah terhadap algoritma cenderung lebih banyak dan rancu, sehingga jarang digunakan untuk algoritma yang kompleks. Pseudocode dan diagram alur adalah cara yang terstruktur untuk menggambarkan algoritma yang mencegah banyaknya kerancuan pada pernyataan-pernyataan bahasa alamiah. Sedangkan bahasa pemrograman ditujukan untuk mengekspresikan algoritma dalam sebuah bentuk yang dapat dieksekusi oleh komputer.

Knuth menganjurkan kita bahwa "cara terbaik untuk belajar algoritma adalah mencobanya ... langsung ambil pulpen dan kertas dan bekerja lewat contoh". lalu bagaimana dengan eksekusi yang sebenarnya? Programmer harus menerjemahkan algoritma ke dalam bahasa yang mana komputer dapat mengeksekusi secara efektif.

Salah satu contoh algoritma sederhana adalah menemukan bilangan terbesar dalam sebuah deretan angka (tak berurut). Solusinya membutuhkan pemeriksaan setiap angka dalam deret, tetapi hanya sekali. Dari hal ini muncullah algoritma sederhana, yang bisa dinyatakan dalam kalimat bahasa deskripsi tingkat tinggi:
  1. Jika tidak ada angka dalam deret maka tidak ada bilangan terbesar
  2. Asumsikan item pertama dalam deret adalah yang terbesar
  3. Untuk setiap sisa angka dalam deret, anggap angka tersebut menjadi yang terbesar dalam deret
  4. Bila tidak ada lagi angka yang tersisa pada deret untuk diperiksa, anggap angka terbesar sekarang menjadi angka yang terbesar dalam deret


Referensi:
  • https://id.wikipedia.org/wiki/Algoritma
  • https://id.wikipedia.org/wiki/Al-Khawarizmi

Sabtu, 12 Desember 2015

Konversi Sistem Bilangan di Android

Assalamu'alaikum, kali ini yang saya bagikan adalah aplikasi Konversi yang berbasis android. Untuk tampilan awalnya adalah sebagai berikut:


Aplikasi ini dapat melakukan konversi dari Teks/kalimat, Angka/desimal, Biner, Oktal, dan Hexa.

Fiturnya adalah sebagai berikut:
  • Konversi dari Teks ke Biner, Oktal, dan Hexa
  • Konversi dari Angka (desimal) ke Biner, Oktal, dan Hexa
  • Konversi dari Biner ke Teks, Angka, Oktal, dan Hexa
  • Konversi dari Oktal ke Teks, Angka, Biner, dan Hexa
  • Konversi dari Hexa ke Teks, Angka, Biner, dan Oktal
  • Menyalin hasil konvers
Untuk yang dari Teks/kalimat, kalimat tersebut dapat dikonversi ke Biner, Oktal, dan Hexa. Saya mengonversi teks dengan mengonversi tiap hurufnya (berdasarkan kode ascii), jadi nanti 1 huruf menjadi 8 karakter (biner), 3 karakter (oktal), dan 2 karakter (hexa).

Penasaran seperti apa aplikasinya? Silahkan dicoba sendiri..


Setelah disalin, saya coba paste-kan di memo, dan hasilnya:


Itulah penjelasan mengenai aplikasi Konversi yang saya buat. Saya membuat aplikasi tersebut di hp dengan aplikasi AIDE,  dikarenakan waktu itu saya belum menginstal Android Studio di PC. Bagi yang mau coba-coba silakan download di PlayStore.

Dari segi tampilan memang masih (sangat) butuh perbaikan, dan yang mau mengembangkan aplikasi ini bisa komen-komen di bawah, nanti bisa saya kirim lewat e-mail.

Ada ide lain? Punya saran? Ada bug/error di aplikasi ini? Saya tunggu komentarnya..

Senin, 26 Oktober 2015

UTS 2014 Nomor 1

Assalamu'alaikum, pada kesempatan kali ini saya akan membahas soal UTS Struktur Data Tahun 2014. Pada postingan ini yang akan saya bahas adalah yang nomor 1. Soalnya adalah sebagai berikut:

Buatlah program menghitung jumlah bilangan ganjil sampai ke-n (1+3+...+n) dengan pendekatan algoritma :
a. Iteratif (Nilai 10)
b. Rekursif (Nilai 15)

Nah, sebelum masuk ke source code, lebih baiknya kita cari tahu dulu apa sih iteratif dan rekursif itu? Menurut saya pribadi, iteratif itu perulangan yang pasti menggunakan for, do..while, ataupun while. Perulangan iteratif itu bisa dibuat fungsi dan juga bisa langsung dituliskan di dalam main-nya. Kemudian perulangan rekursif itu adalah perulangan yang memanggil dirinya sendiri, jadi perulangan rekursif itu sudah pasti berbentuk fungsi. Perulangan rekursif tidak menggunakan for, do..while, ataupun while, dan ciri dari perulangan rekursif itu sendiri adalah adanya if yang berfungsi untuk memberhentikan pemanggilan dirinya sendiri.

Oke kita langsung jawab soal di atas saja, disini saya membuat yang perulangan iteratif itu dalam bentuk fungsi.


Outputnya:
Gambar
Jika n = 10, maka hasilnya adalah 1+3+5+7+9 = 25

Gambar
Jika n = 5, maka hasilnya adalah 1+3+5 = 9

Jumat, 25 September 2015

Tabel Distribusi Frekuensi dengan C++

Assalamu’alaikum, kali ini saya berbagi aplikasi kecil yang saya buat beberapa hari lalu. Aplikasi ini saya buat dengan bahasa C++, dan masih berjalan di console (belum GUI).

Tujuan dari pembuatan aplikasi ini adalah untuk mempermudah mengerjakan tugas dari mata kuliah Statistika Informatika. Pada pertemuan pertama atau kedua (kurang ingat), mata kuliah tersebut membahas tentang data-data. Disediakan banyak data yang berupa angka dan apabila jumlah data tersebut lebihdari 30, maka kita harus membuat Tabel Distribusi Frekuensinya. Tabel ini berisi tentang Interval Kelas, Frekuensi, Frekuensi Relatif, dan Frekuensi Kumulatif. Untuk mengisi tabel tersebut, kita harus mengetahui jumlah kelas, range, dan lebar kelas.
Rumusnya adalah: C = R/K, dimana:
  • C : lebar kelas, atau bisa dibilang selisih dari batas bawah dan batas atas disetiap kelas
  • R : range/jangkauan, yaitu selisih dari data tertinggi dengan data terendah
  • K : jumlah kelas, jika dalam soal tidak diketahui, kita bisa menggunakan rumus. K = 1 + 3.22 * log(n), dimana n adalah banyaknya data
Sebenarnya, dalam materi ini ada Tabel Distribusi Frekuensi dan Diagram Batang. Tetapi karena saya belum dapat ide gimana cara membuat diagram batang di console, akhirnya saya hanya membuat Tabel Distribusi Frekuensi, dan pastinya dengan manipulasi agar bisa berbentuk seperti tabel.

OK, kita langsung ke programnya saja.
Untuk tampilan awal saya buat seperti ini :

Gambar

Jika memasukkan pilihan 1, maka console akan dibersihkan dan menampilkan ini :

Gambar

Jika kita menekan sembarang tombol, maka akan kembali ke menu awal lagi. Dan jika kita berada di menu awal dan memasukkan pilihan selain 1, 2, dan 3, maka kita tetap akan berada di menu awal. Jika kita memasukkan pilihan 3, maka program akan ditutup. Jika kita memasukkan 2, maka console akan dibersihkan dan memulai bekerja.

Gambar

Nah, banyak data disini minimal adalah 30 dan maksimal adalah 100. Mengapa 30? Karena untuk bekerja dengan Tabel Distribusi Frekuensi, banyak data minimalnya adalah 30. Lalu mengapa 100? Karena dalam program ini saya masih menggunakan array statis, takutnya nanti kalau saya memakai batas yang besar, memory terbuang sia-sia. Apabila pengguna memasukkan banyaknya data kurangdari 30 atau lebihdari 100, maka program akan meminta lagi.

Gambar

Kemudian apabila banyaknya data sudah dalam jangkauan (30 sampai 100), program akan bertanya apakah K (jumlah kelas) sudah diketahui? Jika sudah diketahui maka kita memasukkan K nya. Dan K tidak boleh 0 dan tidak boleh lebihdari banyaknya data.

Gambar

Tetapi apabila K tidak diketahui, maka program akan mencari K nya dengan rumus yang di atas tadi.

Gambar

Setelah itu kita memasukkan data-data yang ada, disini saya buat data minimalnya adalah 1 dan maksimalnya 999. Jika di luar itu, maka program akan meminta lagi. Setelah data-datanya diisi, selanjutnya program akan menampilkan rumus (untuk memberitahu pengguna) dan tentunya Tabel Distribusi Frekuensinya (karena itu tujuan program ini).

Gambar

Nah, seperti itulah penjelasan program Tabel Distribusi Frekuensi yang saya buat. Jika Anda ingin mengembangkan atau sekedar ingin tahu seperti apa source code nya. Silakan download di link berikut:

Download [Source Code] [Program]
Password rar : develop251


Senin, 21 September 2015

Cara Install Java/JDK di Windows

Assalamu'alaikum, kali ini saya share gimana caranya ngoding dengan bahasa Java tanpa menggunakan IDE, alias disini hanya bermodalkan Text Editor dan Command Prompt. Caranya sebagai berikut:

Kita cek dulu apakah PC/laptop kita sudah terinstal JDK dan apakah sudah dikonfigurasi. Untuk mengecek hal tersebut, kita buka Command Prompt nya, lalu ketikkan "javac".

Gambar

Jika tampilannya seperti gambar di atas, berarti ada 2 kemungkinan. Yang pertama kita belum menginstal JDK dan mengkonfigurasikannya, dan yang kedua sudah instal JDK tetapi belum dikonfigurasi. Sekarang kita cek apakah JDK sudah diinstal atau belum. Kita masuk ke folder "C:\Program Files\Java", nah kita cek apakah sudah ada folder yang namanya "jdk...". Jika sudah berarti JDK nya sudah terinstal, tetapi jika belum silahkan download DI SINI.

Gambar

Klik "Accept License Agreement" dan tinggal download jdk sesuai sistem operasi yang digunakan. Untuk x86 menandakan 32bit dan x64 berarti 64bit.

Setelah terinstal, saatnya mengkonfigurasi. Masuk ke folder instalannya (biasanya di C:\Program Files\Java). Karena JDK yang saya instal versi 1.8.0 update 60, maka ada folder yang namanya jdk1.8.0_60. Kemudian buka foldernya dan masuk ke folder bin dan copy lokasinya. (C:\Program Files\Java\jdk1.8.0_45\bin)

Gambar

Kemudian klik kanan My Computer -> Properties -> Advanced system settings. Lalu ikuti gambar di bawah.

Gambar

Gambar

Gambar

Gambar

Pada Variabel name diisi dengan "Path" (tanpa tanda petik), dan Variabel value diisi dengan lokasi bin yang telah di copy tadi.

Setelah itu buka Command Prompt nya lagi dan coba ketikkan "javac", jika tampilannya sudah seperti gambar di bawah, berarti konfigurasinya sudah benar.

Gambar

Dan sekarang waktunya ngoding. Langsung kita buka Notepad/Notepad++ nya, disini saya hanya mengetikkan syntax dasarnya saja, silahkan nanti dikembangkan sendiri. Untuk mempermudah kedepannya, setelah membuka file baru di Notepad, langsung save saja dan tentunya harus berekstensi .java, diusahakan gunakan satu kata saja, jika lebih ya digabung saja, misal ProgramTugas.java. Dan yang harus diingat adalah nama file harus sama dengan nama class yang kita buat di file javanya.

Gambar


Dari program di atas saya memberi nama class-nya ProgramTugas, maka nama dari file-nya juga harus ProgramTugas.java.

Sekarang kita compile file java nya, buka Command Prompt nya, lalu masuk ke folder yang ada file java nya tadi (yang barusan diketik).

Gambar

Nah, gimana cara masuknya? Ikuti gambar di bawah:

Gambar

d: untuk pindah ke drive D.
cd Testing untuk masuk ke folder Testing (tekan tab setelah cd untuk mempercepat memilih folder).
dir untuk melihat isi dari folder tersebut.
cls untuk membersihkan screen.
Pastikan ada file java yang telah kita simpan tadi.

Setelah itu kita compile terlebih dahulu. Caranya ketik "javac" spasi namafile.java, misal "javac ProgramTugas.java". Jika tampilannya seperti di bawah berarti berhasil. Jika ada kesalahan nanti akan muncul pada saat di compile seperti ini.

Gambar

Setelah berhasil dicompile, nanti akan ada file baru yang namanya sama dengan nama file java tadi, tapi bedanya berekstensi .class.

Gambar

Sekarang kita jalankan program yang sudah kita compile dengan perintah "java" spasi namafile, misal "java ProgramTugas" (tanpa ekstensi).

Gambar

Sekian, terima kasih.

Selasa, 04 Agustus 2015

UAS Algoritma dan Pemrograman

SOAL :

Nomor 1
Program RangkaianResistor
{ Dibaca besaran tiga resistor R1, R2, dan R3, kemudian dibaca juga pilihan jenis rangakaiannya (0 atau 1) jika 0 = seri, 1 = paralel. Program akan menampilkan rangkaian total RT sesuai jenis rangkaian yang dipilih. Perhatikan pula agar program ‘kuat’ bila mendapat inputan yang nilai resistornya 0 } 

Nomor 2
Program JumlahBil
{ Dibaca sembarang bilangan integer non negatif secara berulang sampai diakhiri dengan membaca bilangan -1. Tampilkan banyaknya dan hasil jumlah bilangan non negatif tersebut } 

Nomor 3
Implementasikan fungsi dan prosedur berikut, kemudian buat program utama yang memanggil fungsi dan prosedur yang sudah dibuat.
a. Function DeretHitung (N : integer) -> integer
{ mengirim nilai fungsi deret hitung dari 1 + 2 + 3 + ... + N }
b. Procedure Putar3Bil (input output a : integer, input output b : integer, input output c : integer)
{ menukar/memutar nilai bilangan integer
Kondisi awal : a, b, dan c nilai sudah terdefinisi
Kondisi akhir : a berisi b, b berisi c, c berisi a } 

Nomor 4
Diberikan suatu fungsi rekursif, dengan definisi sebagai berikut :

Gambar
Tuliskan algoritma dari fungsi rekursif tersebut.
Function F (..........) -> .......... 

Nomor 5
Program HitungGaji
{ Pada suatu perusahaan terdapat tiga (3) golongan karyawan. Gaji karyawan ditentukan berdasarkan gaji pokok dan juga lamanya bekerja. Gaji pokok dan lembur  per jam tersebut tergantung kepada golongan karyawan sesuai dengan tabel berikut :
Gambar
Tuliskan :
a. Deklarasinya (petunjuk gunakan struktur record dan array)
b. Procedure BacaPegawai (..........)
{ prosedur membaca nama pegawai, golongannya, dan jam lembur sebulannya }
c. Procedure HitungGajiPegawai (..........)
{ prosedur menghitung total gaji setiap pegawai dalam sebulan }
d. Procedure CariPegawai (..........)
{ prosedur mencari apakah nama pegawai = ‘X’ ada dalam tabel pegawai, jika ada hasil pencarian bernilai true, jika tidak bernilai false }


JAWABAN :

Nomor 1

Keterangan :
[baris 9] Pertama membaca semua yang dibutuhkan, yaitu resistor R1, R2, R3, dan juga membaca pilihan mau dihitung secara seri atau paralel.
[11 - 13] Nah, disini kita filter agar pilihan yang dibaca itu hanya bisa 0 dan 1 (seri atau paralel), dengan menggunakan perulangan while. Jika yang diinputkan user selain 0 dan 1, maka user akan terus diminta memasukkan pilihan tersebut hingga user memilih 0 atau 1 (dipaksa).
[15 - 17] Disini kita filter lagi, jika pilihannya itu menghitung secara paralel (pilih 1) dan R1 atau R2 atau R3 ada yang bernilai 0, maka user diminta memasukkan nilai resistor lagi. Hal ini dilakukan karena rumus paralel ada yang mengandung satu per (1/R), jika R=0 maka hasilnya tidak terdefinisi.
[19 - 20] Jika pilihannya tadi 0 (seri), maka RT diisi dengan rumus seri.
[21 - 22] Kemudian selain 0 (otomatis 1, karena diatas sudah difilter), rumus RT diisi oleh rumus paralel.
[25] Yang terakhir kita tinggal menampilkan hasil perhitungan (RT).

Nomor 2

Keterangan :
[8 - 9] Pertama kita isi banyak (banyaknya bilangan positif yang diinputkan oleh user) dan jumlah (jumlah total dari semua bilangan positif yang diinputkan user) dengan 0.
[11] Baca bilangannya dulu.
[13 - 20] Jika bilangan yang diinputkan user tidak -1, maka masuk perulangan dan [14 - 17] bilangan tersebut akan dicek lagi apakah lebihdari 0? Jika lebihdari 0 (berarti positif), maka banyaknya bilangan positif bertambah 1 dan jumlah ditambah dengan bilangan yang diinputkan tadi.
[19] Kemudian membaca bilangan lagi.
[22] Yang terakhir tinggal menampilkan hasil (banyak dan jumlah).

Nomor 3

Maaf, keterangan nomor 3 dan jawaban nomor 4 beserta keterangannya terhapus saat saya update.

Nomor 5