Saturday, October 29, 2016

Algoritma dan Program Mengurutkan Data dengan Metode Bubble Sort dalam Bahasa C

Ada banyak sekali algoritma pengurutan data. Bubble sort adalah algoritma pengurutan data paling mudah. Meski demikian bukan berarti Bubble Sort ini adalah metode pengurutan paling efektif. Sebab cenderung membutuhkan banyak sekali perulangan.

Dalam Algoritma Pengurutan Data menggunakan Bubble Sort, dua buah data dibandingkan. Jika data awal lebih besar, maka kedua data tersebut dibalik.

Untuk lebih jelasnya lihat gambar berikut,



Implementasi dalam Bahasa C

#include <stdio.h>
#include <stdlib.h>

#define MAX_DATA 10

int main() {
    int i;
    int item[MAX_DATA];
    int temp;
    int buff;

    int nochange;
    int counter = 0;

    for (i=0; i<MAX_DATA; i++) {
        printf("Masukkan item ke-%d: ", i+1);
        scanf("%d", &temp);
        getchar();
        item[i] = temp;
    }

    do {
        nochange = 0;
        for (i=0; i<MAX_DATA-1; i++) {
            buff = item[i];

            if (buff > item[i+1]) {
                item[i] = item[i+1];
                item[i+1] = buff;

                nochange = 1;
            }

            counter++;
        }
    } while (nochange == 1);

    printf("Data setelah diurutkan:\n");
    for (i=0; i<MAX_DATA; i++) {
        printf("%d\n", item[i]);   
    }

    printf("Membutuhkan %d iterasi\n", counter);
    return 0;
}

Friday, October 28, 2016

Algoritma dan Program Mengitung Volume Balok

Langsung saja

Implementasi algoritma
1) Masukkan panjang
2) Masukkan lebar
3) Masukkan tinggi
4) volume = panjang * lebar * tinggi
5) Selesai

Implementasi dalam bahasa Java

// nama file: VolumeBalok.java

import java.util.Scanner;

public class VolumeBalok {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        double panjang, lebar, tinggi, volume;

        System.out.print("Masukkan panjang: ");
        panjang = scanner.nextDouble();

        System.out.print("Masukkan lebar: ");
        lebar = scanner.nextDouble();

        System.out.print("Maskkan tinggi: ");
        tinggi = scanner.nextDouble();

        volume = panjang * lebar * tinggi;

        System.out.format("Volume = %.2f\n", volume);
    }
}


Implementasi dalam Bahasa C

#include <stdio.h>
#include <stdlib.h>

int main() {
    float panjang, lebar, tinggi, volume;

    printf("Masukkan panjang: ");
    scanf("%f", &panjang);

    printf("Masukkan lebar: ");
    scanf("%f", &lebar);

    printf("Masukkan tinggi: ");
    scanf("%f", &tinggi);

    volume = panjang * lebar * tinggi;

    printf("Volume = %.2f\n", volume);

    return 0;
}

Algoritma dan Program Menghitung Volume Kerucut

Langsung saja

Implementasi algoritma
1) Masukkan jari-jari alas
2) Masukkan tinggi kerucut
3) volume = (1/3) * (PI * r * r) * t
4) Selesai

Implementasi dalam bahasa Java

// nama file: VolumeKerucut.java

import java.util.Scanner;

public class VolumeKerucut {
    public static void main(String args[]) {
        final double PI = 3.14;
        Scanner scanner = new Scanner(System.in);
        double r, tinggi, volume;

        System.out.print("Masukkan jari-jari alas: ");
        r = scanner.nextDouble();

        System.out.print("Maskkan tinggi: ");
        tinggi = scanner.nextDouble();

        volume = (1.0 / 3.0) * (PI * r * r) * tinggi;

        System.out.format("Volume = %.2f\n", volume);
    }
}


Implementasi dalam bahasa C

#include <stdio.h>
#include <stdlib.h>

#define PI 3.14

int main() {
    float r, tinggi, volume;

    printf("Masukkan jari-jari alas: ");
    scanf("%f", &r);

    printf("Masukkan tinggi: ");
    scanf("%f", &tinggi);

    volume = (1.0 / 3.0) * (PI * r * r) * tinggi;

    printf("Volume = %.2f\n", volume);

    return 0;
}




Algoritma dan Program Menghitung Volume Tabung

Langsung saja

Implementasi algoritma
1) Definisikan PI = 3.14
2) Masukkan jari-jari alas
3) Masukkan tinggi tabung
4) volume = (PI * r * r) * tinggi
5) Selesai

Implementasi dalam bahasa Java

// nama file: VolumeTabung.java

import java.util.Scanner;

public class VolumeTabung {
    public static void main(String args[]) {
        final double PI = 3.14;
        Scanner scanner = new Scanner(System.in);
        double r, tinggi, volume;

        System.out.print("Masukkan jari-jari alas: ");
        r = scanner.nextDouble();

        System.out.print("Maskkan tinggi: ");
        tinggi = scanner.nextDouble();

        volume = (PI * r * r) * tinggi;

        System.out.format("Volume = %.2f\n", volume);
    }
}


Implementasi dalam bahasa C

#include <stdio.h>
#include <stdlib.h>

#define PI 3.14

int main() {
    float r, tinggi, volume;

    printf("Masukkan jari-jari alas: ");
    scanf("%f", &r);

    printf("Masukkan tinggi: ");
    scanf("%f", &tinggi);

    volume = (PI * r * r) * tinggi;

    printf("Volume = %.2f\n", volume);

    return 0;
}

Algoritma dan Program Menghitung Luas dan Keliling Persegi Panjang

Langsung ya

Implementasi algoritma
1) Masukkan panjang
2) Masukkan lebar
3) luas = panjang * lebar
4) keliling = (2 * panjang) + (2 * lebar)
5) Selesai

Implementasi dalam Bahasa Java

// name file LuasKelilingPersegiPanjang.java

import java.util.Scanner;

public class LuasKelilingPersegiPanjang {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        double panjang, lebar, luas, keliling;

        System.out.print("Masukkan panjang = ");
        panjang = scanner.nextDouble();

        System.out.print("Masukkan lebar = ");
        lebar = scanner.nextDouble();

        luas = panjang * lebar;
        keliling = (2 * panjang)  + (2 * lebar);

        System.out.format("Luas = %.2f\n", luas);
        System.out.format("Keliling = %.2f\n", keliling);
    }
}



Implementasi dalam Bahasa C

#include <stdio.h>
#include <stdlib.h>

int main() {
    float panjang, lebar, luas, keliling;

    printf("Masukkan panjang: ");
    scanf("%f", &panjang);

    printf("Maskkan lebar: ");
    scanf("%f", &lebar);

    luas = panjang * lebar;
    keliling = (2 * panjang) + (2 * lebar);

    printf("Luas = %.2f\n", luas);
    printf("Keliling = %.2f\n", keliling);

    return 0;
}


Algoritma dan Program Menghitung Luas Segitiga

Langsung saja

Implementasi algoritma
1) Masukkan alas
2) Masukkan tinggi
3) luas = 0.5 * alas * tinggi
4) Selesai

Implementasi dalam Bahasa Java
// nama file: LuasSegitiga.java

import java.util.Scanner;

public class LuasSegitiga {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);

        double alas, tinggi, luas;

        System.out.print("Masukkan alas: ");
        alas = scanner.nextDouble();

        System.out.print("Maskkan tinggi: ");
        tinggi = scanner.nextDouble();

        luas = 0.5 * alas * tinggi;

        System.out.format("Luas = %.2f\n", luas);
    }
}


Implementasi dalam Bahasa C

#include <stdio.h>
#include <stdlib.h>

int main() {
    float alas, tinggi, luas;

    printf("Masukkan alas: ");
    scanf("%f", &alas);

    printf("Masukkan tinggi: ");
    scanf("%f", &tinggi);

    luas = 0.5 * alas * tinggi;

    printf("Luas = %.2f\n", luas);

    return 0;
}

Algoritma dan Program Pemisah Ribuan

Hai pemuda dan pemudi. Lama tak jumlah di halo algoritma. Kali ini saya akan membagikan algoritma dan program pemisah ribuan.

Penjelasan
Berawal dari teman-teman yang kesusahan bagaimana membuat sebuah deretan angka menjadi terpisah tiap tiga digit.

Misalnya, mengubah "75000" menjadi "75.000". Secara sederhana langkahnya sangat mudah. Cukup dengan memberikan pemisah ribuan setelah tiga karakter dari belakang dan seterusnya.

Tapi bagaimana mengimplementasikannya dalam algoritma dan pemrograman? Horoh kono... Nggak usah dipikir susah-susah guys! Kalau kita sudah tahu cara sederhananya, ya sudah pake cara itu saja.


Implementasi Algoritma:
1) Masukkan deretan angka (simpan dalam variabel string angka)
2) Hitung panjang deretan, simpan sebagai panjang_karakter
3) Inisiasi sebuah variabel untuk menelusuri angka, i = panjang_karakter - 1
4) Inisiasi sebuah karakter untuk menghitung setiap tiga iterasi, counter = 0
5) Inisiasi hasilnya dengan string kosong hasil = ""
6) Ambil karakter ke-i dari angka dan masukkan ke bagian belakang hasil hasil = angka[i] + hasil
7) Tambahkan nilai counter menjadi counter++
8) Jika counter = 3 maka beri "." pada hasil dengan hasil = "." + hasil dan isi counter = 0

9) Kurangi nilai i. Jika i>=0 maka ulangi langkah 6
10) Selesai

Implementasi dalam Bahasa Java
Gimana? Bingung nggak dengan implementasi algoritmanya? Gampang kok sebenarnya. Lebih jelasnya akan dicontohkan implementasi algoritma di atas ke dalam bahasa Java. Cekidot!

// nama file: PemisahRibuan.java

import java.util.Scanner;

public class PemisahRibuan {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String angka;
        int panjang_karakter;
        int counter = 0;
        String hasil = "";

        System.out.print("Masukkan deretan angka: ");
        angka = scanner.nextLine();
        panjang_karakter = angka.length();

        for (int i=panjang_karakter-1; i>=0; i--) {
            hasil = angka.charAt(i) + hasil;
            counter++;

            if (counter == 3) {
                hasil = "." + hasil;
                counter = 0;
            }
        }

        System.out.println("Hasilnya = " + hasil);

    }
}


Nah, gampang kan!

Saturday, October 15, 2016

Program Tebak Angka dalam bahasa Java

Halo algoritma!

Kalau pada postingan sebelumnya membagikan kode program tebak angka dalam bahasa C, kali ini adalah program tebak angka dalam bahasa Java. Kenapa postingannya dipisah? Biar nggak terlalu panjang bos! Hahaha....

Algoritma yang dipakai sama. Hanya bedanya ini menggunakan bahasa Java. Untuk penjelasannya silakan baca pada postingan sebelumnya ya.

Cekidot!


// nama file: TebakAngka.java

import java.util.Scanner;
import java.util.Random;

public class TebakAngka {
    public static void main(String args[]) {
        int MAX_ANGKA = 100;
        Scanner scanner = new Scanner(System.in);

        String mulai;
        int tebakan, angka_user, langkah;
        Random rand = new Random();

        do {
            angka_user = 0;
            langkah = 0;

            tebakan = rand.nextInt(MAX_ANGKA) + 1;

            while (angka_user != tebakan) {
                langkah++;
                System.out.print("Masukkan angka tebakan Anda: ");
                angka_user = scanner.nextInt();

                if (angka_user > tebakan) {
                    System.out.println("Uh! Kebesaran!");
                } else if (angka_user < tebakan) { 
                    System.out.println("Uh! Kekecilan!");
                } else {
                    System.out.println("Mantap! Anda menebak dalam " + langkah + " kali");
                }
            }

            System.out.print("Masih mau main lagi? (y jika ya) ");
            mulai = scanner.next();
            System.out.println();
            System.out.println();
            System.out.println();
        } while (mulai.equals("y"));
    }
}



Program Tebak Angka dalam Bahasa C

Hai mas bro dan mbak sis. Sudah lama juga ternyata nggak nulis tentang algoritma dan pemrograman.

Kali ini saya mas ganteng akan memberikan contoh kode program tebak angka dalam bahasa C. Tapi kali ini beda. Saya tidak membahas bagaimana algoritma sebuah program tebak angka tersebut. Sebagai gantinya saya berikan beberapa komentar di sana sini dengan harapan dapat memperjelas kode.

Inti dari program ini adalah bagaimana menghasilkan angka acak untuk ditebak oleh user. Dan program akan mengatakan apakah tebakan dari user itu kekecilan atau kebesaran sampai user menginput angka yang benar.

Cekidot!

#include <stdio.h>
#include <stdlib.h>
#define MAX_ANGKA (100 + 1)

int main() {
    char mulai;
    int tebakan, angka_user, langkah;

    time_t t;
    srand((unsigned) time(&t));

    // jalan terus sampai user menekan karakter selain y
    do {
        // inisialisasi angka_user dan langkah
        angka_user = 0;
        langkah = 0;

        // set angka tebakan
        tebakan = rand() % MAX_ANGKA;
        if (tebakan == 0) tebakan = 1;

        // ulangi terus sampai angka tebakan dan angka inputan user sama
        while (angka_user != tebakan) {
            // tambahkan jumlah langkah
            langkah++;
            printf("Masukkan angka tebakan Anda: ");
            scanf("%d", &angka_user);
            getchar(); // quick fix. setelah scanf harus ditambahkan getchar agar bisa jalan

            if (angka_user > tebakan) { // jika angka user terlalu besar
                printf("Uh! Kebesaran!\n");
            } else if (angka_user < tebakan) { // jika angka user terlalu kecil
                printf("Uh! Kekecilan!\n");
            } else { // jika sudah berhasil menebak. karena jika bukan "lebih dari" dan "kurang dari", berarti "sama dengan"
                printf("Mantap! Anda menebak dalam %d kali\n\n\n", langkah);
            }
        }

        // pertanyaan apakah mau main lagi?
        printf("Masih mau main lagi? (y jika ya) ");
        scanf("%c", &mulai);
        getchar();
    } while (mulai == 'y');

    return 0;
}

Friday, October 7, 2016

Algoritma dan Program Menghitung Luas dan Keliling Lingkaran

Algoritma dan program menghitung luas dan keliling lingkaran sangat mudah. Asalkan tahu rumusnya sudah bisa.

Implementasi Algoritma
1) Tentukan pi = 3.14
2) Masukkan jari-jari
3) luas = pi * r * r
4) keliling = 2 * pi * r
5) Slesai

Implementasi dalam bahasa Java

// nama file: LuasKelilingLingkaran.java

import java.util.Scanner;

public class LuasKelilingLingkaran {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        final double PI = 3.14;
        double r;
        double luas;
        double keliling;

        System.out.print("Masukkan jari-jari lingkaran: ");
        r = scanner.nextDouble();
        luas = PI * r * r;
        keliling = 2 * PI * r;

        System.out.format("Jari-jari = %.2f\n", r);
        System.out.format("Luas = %.2f\n", luas);
        System.out.format("Keliling = %.2f\n", keliling);
    }
}



Implementasi dalam Bahasa C


#include <stdio.h>
#include <stdlib.h>

#define PI 3.14

int main() {
    float r;
    float luas;
    float keliling;

    printf("Masukkan jari-jari = ");
    scanf("%f", &r);

    luas = PI * r * r;
    keliling = 2 * PI * r;

    printf("Jari-jari = %.2f\n", r);
    printf("Luas = %.2f\n", luas);
    printf("Keliling = %.2f\n", keliling);

    return 0;
}

Algoritma dan Program Deret Bilangan Fibonacci

Kaidah:
Deret bilangan Fibonacci adalah deret bilangan yang anggota sukunya merupakan penjumlahan dari dua suku sebelumnya.

Misalnya, suku ke-1 adalah 1 dan suku ke-2 adalah 1. Maka suku ke-3 adalah 2 (1 + 1 = 2). Dengan demikian deret fibonacci tersebut adalah:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ....


Penjelasan:
Untuk mendapatkan deret bilangan Fibonacci sampai suku ke-n, kita harus melakukan perulangan sampai n-kali.

Dalam perulangan tersebut, kita buat tiga buah variabel, misalnya a, b, dan c. Untuk variabel a kita beri nilai 1 sedangkan b kita beri nilai 0. Nilai dari variabel c adalah anggota bilangan fibonacci suku ke-n.

Untuk setiap perulangan, nilai c = a + b kemudian kita persiapkan nilai a dan b yang baru. Nilai a yang baru adalah nilai b, sedangkan nilai b yang baru adalah nilai c.

Bingung? Langsung aja yuk ke implementasinya.

Implementasi Algoritma:
1) Masukkan jumlah suku
2) Inisialisasi variabel a = 1, b = 0, dan c = 0. Juga nilai i = 1 untuk loop
3) c = a + b
4) Cetak nilai c
5) Persiapkan untuk nilai a dan b yang baru. a = b dan b = c
6) Tambahkan nilai i = i + 1
7) Jika i kurang dari atau sama dengan jumlah suku, maka lanjut ke langkah 3.
8) Selesai

Implementasi dalam Bahasa Java:

// nama file: Fibo.java

import java.util.Scanner;

public class Fibo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int suku;
        int a = 1;
        int b = 0;
        int c;

        System.out.print("Masukkan jumlah suku: ");
        suku = scanner.nextInt();

        for (int i=1; i<=suku; i++) {
            c = a + b;
            System.out.print(c + " ");

            a = b;
            b = c;
        }

        System.out.println("");
    }
}


Implementasi dalam Bahasa C:

#include <stdio.h>

int main() {
    int suku;
    int a = 1, b = 0, c;
    int i;

    printf("Masukkan jumlah suku: ");
    scanf("%d", &suku);

    for (i=1; i<=suku; i++) {
        c = a + b;
        printf("%d ", c);

        a = b;
        b = c;
    }

    printf("\n");

    return 0;
}

Wednesday, October 5, 2016

Algoritma dan Program Menentukan Bilangan Prima

Kaidah:
Bilangan prima adalah bilangan yang hanya memiliki dua faktor, yakni angka 1 dan bilangan itu sendiri.
Misalnya, angka 7 adalah bilangan prima karena hanya memiliki faktor 1 dan 7 (1x7 dan 7x1).
Sedangkan angka 9 bukan merupakan bilangan prima karena memiliki faktor 1, 3, 9 (1x9, 3x3, 9x1).
Angka 0 dan 1 bukan bilangan prima.
Angka 2 adalah satu-satunya bilangan genap bukan nol yang merupakan bilangan prima.


Penjelasan:
Untuk menentukan berapa banyak faktor yang dimiliki suatu bilangan, biasanya digunakan perulangan (repetition) mulai angka 1 sampai bilangan tersebut dan menguji tiap-tiap item apakah habis dibagi item tersebut. Jika habis, maka jumlah faktor bertambah.
Terakhir, diuji apakah jumlah faktor = 2. Jika ya, maka termasuk bilangan prima. Jika tidak, maka bukan termasuk bilangan prima.

Langkah ini bisa sangat panjang. Oleh karena itu perlu dilakukan pengujian pada tiap-tiap item apakah faktor > 2. Jika ya, maka looping berhenti.

Kita masih bisa mempersingkat langkah ini dengan cara membatasi perulangan. Jadi, perulangannya bukan sampai bilangan tersebut tetapi hanya sampai akar bilangannya saja. Misalnya, untuk menentukan apakah 101 termasuk bilangan prima atau tidak, kita tidak perlu melakukan perulangan sampai 101 kali tapi cukup 10 kali saja (akar 101 adalah 10.0498 dibulatkan ke bawah menjadi 10).


Implementasi Algoritma:
Dari penjelasan di atas dapat dibuat algoritma sebagai berikut,
1) Masukkan sebuah bilangan, simpan dengan nama "bilangan"
2) Tentukan limit yakni akar dari bilangan kemudian ambil bilangan bulatnya
3) Beri nilai awal 1 pada is_prime
4) Masukkan nilai a = 2
5) Jika bilangan habis dibagi a maka ubah is_prime menjadi 0
6) Jika is_prime bernilai 0 maka akhiri perulangan (menuju langkah 7). Jika tidak, maka ulangi ke langkah 5
7) Jika is_prime bernilai 1 dan bilangan bernilai lebih dari atau sama denga 2, maka katakan "termasuk bilangan prima". Jika tidak, katakan "bukan bilangan prima"
8) Selesai


Implementasi dalam Bahasa Java:

// nama file: Prima.java

import java.util.Scanner;

public class Prima {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number;
        System.out.print("Masukkan sebuah bilangan: ");
        number = scanner.nextInt();
        boolean is_prime = true;
        double limit = Math.ceil(Math.sqrt(number));

        for (int i = 2; i <= limit; i++) {
            if (number % i == 0) {
                is_prime = false;
                break;
            }
        }

        if (is_prime) {
            System.out.println(number + " adalah bilangan prima");
        } else {
            System.out.println(number + " bukan bilangan prima");
        }
    }
}


Implementasi dalam Bahasa C:

#include <stdio.h>
#include <math.h>

int main() {
    int bilangan;
    printf("Masukkan sebuah bilangan: ");
    scanf("%d", &bilangan);

    int limit = floor(sqrt(bilangan));
    int is_prime = 1;

    int a;
    for (a=2; a<=limit; a++) {
        if (bilangan % a == 0) {
            is_prime = 0;

            break;
         }
    }

    if (is_prime && bilangan >=2) {
        printf("%d termasuk bilangan prima\n", bilangan);
    } else {
        printf("%d bukan bilangan prima\n", bilangan);
    }

    return 0;
}