Minggu, 01 Januari 2012

Sejenak Refreshing

Menyela seabrek kesibukan, saya sempatkan menilik sedikit studi kasus sederhana untuk menampilkan sebuah deret angka berikut dengan menggunakan bahasa pemrograman yang sudah lama tak saya pegang, C++ (baca: Si Plus Plus) :D

3  9  4  12  7  21  16  48  43  129

Jika dilihat sekilas, deret angka tersebut bisa dibilang tidak beraturan. Namun, selayaknya sebuah deret angka yang biasa dijumpai pada tes-tes psikologi, ternyata deret angka tersebut memiliki pola tertentu. Berikut analisis saya:

  • Deret tersebut memiliki pola "dijumlah" dan "dikurang" serta berulang secara terus-menerus.
  • Angka kedua (genap) diperoleh dari angka sebelumnya ditambah dengan dua kali angka sebelumnya, jadi:
    Angka ke-2 => 3 + 3 * 2 = 9
  • Sedangkan angka ketiga (ganjil) diperoleh dengan mengurangkan angka sebelumnya dengan angka 5, sehingga untuk angka ke-3 diperoleh:
    <=> 9 - 5 = 4
  • Pola tersebut berulang terus-menerus, dijumlahkan kemudian dikurangi kembali.

Setelah model didapatkan, maka, dengan ini akan cukup mudah untuk diimplementasikan ke dalam bentuk program, dalam hal ini menggunakan bahasa C++.

--------------------------------------------------------------------------------------------------------------------------------

#include <iostream>

using namespace std;

int main(int argc, char** argv) {

    int banyakAngka, angka;
    char statusOperasi = '+';
    
    cout << "Masukkan banyak angka yang ingin ditampilkan: ";
    cin >> banyakAngka;
    cout << "Masukkan angka awal: ";
    cin >> angka;
    
    cout << angka << " ";
    
    for (int i = 0; i < banyakAngka - 1; i++) {
        if (statusOperasi == '+') {
            angka = angka + 2 * angka;
            statusOperasi = '-';
        }
        else {
            angka = angka - 5;
            statusOperasi = '+';
        }

        cout << angka << " ";
    }
}

--------------------------------------------------------------------------------------------------------------------------------

Program saya desain agar bisa menerima masukan dari user, sehingga deret yang ditampilkan bisa tak terbatas, bergantung masukan user dengan memanfaatkan fungsi standar C++ (dari library iostream), kodenya: cin >> variabelPenampung. Adapun masukan yang dibutuhkan adalah banyaknya angka pada deret yang akan ditampilkan (variabel banyakAngka). Selain itu, dibutuhkan satu angka untuk dijadikan sebagai inisiasi angka pertama (variabel angka).

Program saya buat sedemikian rupa, sehingga memiliki semacam status operasi untuk mendapatkan angka berikutnya (variabel statusOperasi), yang bermula dengan operasi penjumlahan, sehingga saya isi dengan karakter '+' untuk inisiasi awalnya.

Baris  cout << angka << " "; menampilkan angka pertama. Angka-angka berikutnya ditampilkan melalui proses loop menggunakan for loop. Untuk statusOperasi '+' (representasi posisi genap), maka angka selanjutnya merupakan hasil penjumlahan variabel angka dan 2 * angka. Untuk statusOperasi '-' (representasi posisi ganjil), maka angka berikutnya adalah pengurangan variabel angka dengan 5.

Program tersebut merupakan sedikit contoh implementasinya, yang tentu saja setiap programmer bisa memiliki cara yang berbeda untuk mengimplementasikan algoritma yang ada. Mungkin direpresentasikan dalam kode yang lebih terstruktur dengan mengelompokkan beberapa kode menjadi satu atau dua fungsi tersendiri, atau bahkan mengimplementasikan program dengan pendekatan obyek (PBO [Pemrograman Berorientasi Obyek] / OOP [Object Oriented Programming]).

Sekian, refreshing-nya, sekedar mengingat-ingat kembali memori masa kuliah beberapa tahun silam.. :)


*Program tersebut dapat dites dengan memasukkan 10 untuk jumlah yang ditampilkan dan 3 untuk angka yang menempati posisi awal.