Pattern Regex Untuk Deteksi Komentar dan Method / Function

Selamat sore semuanya, lama sudah tak jumpa disini :mrgreen:
Ya, kali ini aku mau share sekelumit pengetahuan baru yang aku dapat yaitu mengenai bagaimana kita bisa mengambil atau mendeteksi komentar (comments) dan function / method yang ada di dalam source code. Untuk regex yang digunakan deteksi komentar, bisa diaplikasikan untuk jenis komentar sebagai berikut ini :

/**
 *Komentar lebih dari satu baris
 */

// Komentar perbaris

/** Komentar perbaris lainnya */

/* Komentar */

Sedangkan regex untuk deteksi function / method, ini saya buat hany untuk deteksi source code Java, seperti berikut ini :

public void ContohFungsi(String a){ ... }
private String ContohLain(){ ... }
... dan sejenisnya

Oke berikut ini adalah pattern regex dari kedua kebutuhan tersebut diatas :

// Deteksi Komentar
(/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+/)|(//.*)// Deteksi Function / Method
\\w+ +\\w+ *\\([^\\)]*\\) *\\{

Semoga bisa bermanfaat bagi kalian, sampai ketemu lagi 🙂

Segitiga Bintang Bentuk Jam Pasir C++, Java

Hmmm,,, aku posting lagi nih mengenai contoh program segitiga bintang c++, java membentuk seperti jam pasir. Sengaja aku posting ini mungkin suatu saat ada yang bisa memanfaatkan, karena sudah beberapa periode Praktikum Algoritma Pemrograman ternyata soal-soal yang muncul tidak jauh berbeda (ini dikampusku, entah di kampus lain). Tampilan hasilnya seperti ini :

segitiga-bintang jam pasir

Untuk source codenya dalam bentuk C++ adalah sebagai berikut :

#include "conio.h"
#include "iostream.h"

int main(){
int input = 0;
cout << "masukkan jumlah deret : ";
cin >> input;
int floor = (int)(input/2);
bool stop = false;
bool d = false;
int f = (int)(input/2)+1;
int c = 0, e, b, a = input;
while(!stop){
for(e=floor;e>=(a-floor);e--){ cout << " "; }
for(b=0;b<a;b++){
if(b==floor || b==e){
cout << "0 ";
}else{
cout << "* ";
}
}
c++;
cout << endl;
if(c<input){
if(a>f && d==false){ a--; }else{ d = true; a++; }
}else{
stop = true;
}
}
system("pause");
//getch();
}

Kalau kalian ingin merubahnya jadi versi Java, tinggal ganti cout, cin nya aja kok, di Java untuk output/input apa, nah replace dengan itu. Semoga berhasil 🙂

Contoh yang sejenis dan mungkin cocok untuk kalian ada disini juga http://rendramm2.wordpress.com/2009/11/20/program-menampilkan-belah-ketupat-segitiga-bintang/

Segitiga Bintang Versi Baru PHP, C++, Java Praktikum Algoritma Pemrograman

Selamat pagi semuanya, kali ini aku coba share mengenai bagaiman membuat susanan karakter bintang, yang biasa disebut segitiga bintang dengan inputan deret tertentu. Ini aku buat karena adanya teman-teman yang butuh untuk Praktikum Algoritma Pemrograman, lumayan juga biar mereka datang dimari kan 😀

Bentuk segitiga bintangnya terlihat seperti gambar dibawah ini :

segitiga-bintang

Nah tampilannya adalah seperti gambar diatas, untuk scriptnya silahkan lihat dibawah ini, tapi untuk yang ini adalah dengan versi PHP, untuk konversi ke Java, C++ dan sebagainya, silahka konversi sendiri ya, toh tinggal nambahin tipe data di tiap variablenya… :mrgreen:

<?php
# jumlah deret
$h = 9;
$a = 0;
for($i=0;$i<$h;$i++){
	for($j=$h;$j>$a;$j--){
		print "&nbsp;";
	}
	for($k=0;$k<=$a;$k++){
		if($i==(int)($h/2)){
			print "+&nbsp;";
		}else{
			if($k==0 || $k==$a || $k==(int)($a/2)){
				print "+&nbsp;";
			}else{
				print "&nbsp;&nbsp;";
			}
		}
	}
	if($i<4){
		$a+=2;
	}else{
		$a-=2;
	}
	print "<br/>";
}
?>

Contoh Program / Aplikasi C++ Dengan File CSV Sebagai Database – Struktur Data ( Single Linked List )

Satu lagi hasil dari ngerjakan tugas mata kuliah Struktur Data menggunakan bahasa pemrograman C++. Program ini adalah sebuah aplikasi yang dapat digunakan dalam membantu pengadaan Test Antropometri Bagi Calon TNI. Namun ini masih awalan, jadi maklum masih belum begitu akurat dan jujur masih belum bisa digunakan sebagai acuan dalam membantu Test tersebut. Tapi cukup lah kalo hanya sebagai tugas suatu mata kuliah, hehehe :mrgreen:
Di dalam aplikasi ini terdapat fitur untuk Backup data ke dalam Database dan juga Restore Database. Jadi bisa load data di database sehingga membantu kita untuk tidak terlalu banyak input data baru.
Aplikasi ini memakai Full Single Linked List tanpa Array, karena kebetulan tugas ini pas pembahasan Linked List. Oke, berikut untuk potongan source codenya : Continue reading

Contoh Program Managemen TXT File Dengan Borland C++ 5.02

Yaph inilah tugas terkahir buat mata kuliah praktikumku Algoritma Pemrograman dengan Bahasa Pemrograman C++ menggunakan IDE Borland 5.02 yang menyebalkan. Program ini bisa Read, Edit, Delete, Add Data di File TXT. Oke langsung saja yah …

#include <iostream>
#include <fstream>
#include <string>
#include <stdio>
#include <windows>
#include <vector>

using namespace std;

void menuAwal();

int inpmenu;
char tanya;
string baris;
string bacaFile;
string inputBaru;

vector <string> explode(const char& chSparate, const string& strText){
    string next = "";
    vector <string> result;
    for(string::const_iterator it = strText.begin(); it != strText.end(); it++){
        if(*it == chSparate){
            if(next.length() > 0){
                result.push_back(next);
                next = "";
            }
        }else{
            next += *it;
        }
    }
    return result;
}

string& str_replace(const string &search, const string &replace, string &subject){
    string buffer;

    int sealeng = search.length();
    int strleng = subject.length();

    if (sealeng==0)
        return subject;

    for(int i=0, j=0; i<strleng; j=0 ){
        while (i+j<strleng && j<sealeng && subject[i+j]==search[j])
            j++;
        if (j==sealeng){
            buffer.append(replace);
            i+=sealeng;
        }else{
            buffer.append( &subject[i++], 1);
        }
    }
    subject = buffer;
    return subject;
}

void cariBuku(string cariKodeBuku){
    string tampungHasilExplodes;
	vector <string> detailDataBarang;
	vector <string> detailKodeBarang;
	bacaFile = "";
	system("cls");

	cariKodeBuku = "["+cariKodeBuku+"]";

	ifstream db;
    db.open("dataBarang.txt");
	while(!db.eof()){
    	getline(db,baris,'\n');
		bacaFile += baris+"\n";
    }
	db.close();

    detailDataBarang = explode('\n',bacaFile);

	for(size_t i = 0; i < detailDataBarang.size(); i++){
	    if(detailDataBarang[i].find(cariKodeBuku)!=string::npos){
			tampungHasilExplodes += detailDataBarang[i]+"\n ";
		}
	}

    tampungHasilExplodes = str_replace("|","\t",tampungHasilExplodes);
    tampungHasilExplodes = str_replace("=","\t",tampungHasilExplodes);

    cout << "\n -------------------------------------------------" <<endl;
    cout << " "  << tampungHasilExplodes;
    cout << "-------------------------------------------------" <<endl;

    fflush(stdin);
    cout << " Kembali ke Menu Awal ? [y/t] : ";
    cin  >> tanya;
    if(tanya=='y') menuAwal();
    else exit(0);
}

void editBuku(string cariKodeBuku){
    int penanda;
    string tampungExp, tampungBaru, tambahanKarakter;
    string namaBukuBaru, stokBukuBaru, hargaBukuBaru;
	vector <string> detailDataBarang;

	ifstream db;
    db.open("dataBarang.txt");
	while(!db.eof()){
		getline(db,baris,'\n');
		bacaFile += baris+"\n";
    }
	db.close();

    cariKodeBuku = "["+cariKodeBuku+"]";

    if(bacaFile.find(cariKodeBuku)==string::npos){
        cout << "Maaf, buku dengan kode tersebut tidak ada";
        Sleep(1000);
        menuAwal();
    }

    detailDataBarang = explode('\n',bacaFile);

	for(size_t i = 0; i < detailDataBarang.size(); i++){
	    if(detailDataBarang[i].find(cariKodeBuku)!=string::npos){
		    tampungExp += detailDataBarang[i]+"\n";
			penanda = i;
		}
	}

	if(penanda==0 || penanda==detailDataBarang.size()){
        tambahanKarakter = "\n";
    }

    cout << "Nama Buku yang baru : ";
    cin  >> namaBukuBaru;

    cout << "Stok barang yang baru : ";
    cin  >> stokBukuBaru;

    cout << "Harga barang yang baru : Rp ";
    cin  >> hargaBukuBaru;

    tampungBaru = cariKodeBuku+"="+namaBukuBaru+"|"+stokBukuBaru+"|"+
    					hargaBukuBaru+"|"+tambahanKarakter;

    tampungExp = "";
    for(size_t i = 0; i < detailDataBarang.size(); i++){
	    if(penanda==i){
		    tampungExp += tampungBaru;
			continue;
		}else{
			tampungExp += detailDataBarang[i]+"\n";
		}
	}
    tampungExp = tampungExp.substr(0,(tampungExp.length() - 2));

	ofstream fl;
    fl.open("dataBarang.txt",ios::trunc);
	fl << tampungExp;
	fl.close();

    cout << "Buku berhasil dirubah. Terima Kasih";
    Sleep(1000);
    menuAwal();
}

void inputDataBarang(){
	system("cls");
    string kodeBarang, namaBarang, stokBarang, hargaBarang;
    cout << "Masukkan Kode Barang : ";
    cin  >> kodeBarang;
    bacaFile = "";
    ifstream db;
    db.open("dataBarang.txt");
    while(!db.eof()){
    	 getline(db,baris,'\n');
       bacaFile += baris+"\n";
    }
    db.close();

    if(bacaFile.find(kodeBarang)!=string::npos){
        cout << "Maaf, barang dengan kode tersebut sudah ada sebelumnya";
        Sleep(1000);
        menuAwal();
    }

    cout << "\nMasukkan Nama Barang : ";
    cin  >> namaBarang;
    cout << "Masukkan Jumlah Stok Barang : ";
    cin  >> stokBarang;
    cout << "Masukkan Harga Barang : ";
    cin  >> hargaBarang;
    inputBaru = "["+kodeBarang+"]="+namaBarang+"|"+stokBarang+"|"+hargaBarang+"|";

    ofstream fl;
    fl.open("dataBarang.txt");
    fl << bacaFile;
    fl << inputBaru;
    fl.close();
    cout << "Barang baru berhasil ditambahkan." << endl;
    Sleep(1000);
    menuAwal();
}

void hapusDataBarang(string cariKodeBuku){
    string tampungExp;
    vector <string> detailDataBarang;

    bacaFile = "";
    system("cls");
    ifstream db;
    db.open("dataBarang.txt");
    while(!db.eof()){
    	getline(db,baris,'\n');
		bacaFile += baris+"\n";
    }
    db.close();

    detailDataBarang = explode('\n',bacaFile);
    cariKodeBuku = "["+cariKodeBuku+"]";

    for(size_t i = 0; i < detailDataBarang.size(); i++) {
        if(detailDataBarang[i].substr(0,4)!=cariKodeBuku){
            tampungExp += detailDataBarang[i]+"\n";
        }
    }
    tampungExp = tampungExp.substr(0,(tampungExp.length() - 2));

    ofstream fl;
    fl.open("dataBarang.txt",ios::trunc);
    fl << tampungExp;
    fl.close();
    cout << "Barang telah berhasil dihapus." << endl;
    Sleep(1000);
    menuAwal();
}

void laporan(){
    bacaFile = "";
    system("cls");
    ifstream db;
    db.open("dataBarang.txt");
    while(!db.eof()){
    	getline(db,baris,'\n');
		bacaFile += baris+"\n";
	}
    db.close();
    cout << "Kode\tNama Barang\tStok\tHarga Barang" <<endl;
    cout << "--------------------------------------------" <<endl;
    bacaFile = str_replace("|","\t",bacaFile);
    bacaFile = str_replace("=","\t",bacaFile);
    cout << bacaFile;
    cout << "--------------------------------------------\n" <<endl;
    fflush(stdin);
    cout << "Kembali ke Menu Awal ? [y/t] : ";
    cin  >> tanya;
    if(tanya=='y') menuAwal();
    else system("exit");
    system("pause");
}

void menuAwal(){
    system("cls");
    cout << "+-----------------------------------+"<< endl;
    cout << "| Silakan Pilih Menu                |"<< endl;
    cout << "+-----------------------------------+"<< endl;
    cout << "| 1. Lihat Data Barang              |"<< endl;
    cout << "| 2. Cari Data Barang               |"<< endl;
    cout << "| 3. Input Data Barang              |"<< endl;
    cout << "| 4. Edit Data Barang               |"<< endl;
    cout << "| 5. Hapus Data Barang              |"<< endl;
    cout << "+-----------------------------------+"<< endl;
    cout << "\nPilihan Anda : ";
    fflush(stdin);
    cin >> inpmenu;
    cout << endl;

    if(inpmenu==1){
        laporan();
	}else if(inpmenu==2){
        string cariKodeBarang;
        cout << "Masukkan kode barang : ";
        cin  >> cariKodeBarang;
        cariBuku(cariKodeBarang);
	}else if(inpmenu==3){
        inputDataBarang();
    }else if(inpmenu==4){
		string cariKodeBarang;
        cout << "Masukkan kode barang : ";
        cin  >> cariKodeBarang;
        editBuku(cariKodeBarang);
    }else if(inpmenu==5){
        string cariKodeBarang;
        cout << "Masukkan kode barang : ";
        cin  >> cariKodeBarang;
        hapusDataBarang(cariKodeBarang);
    }else{
        cout << "Terima Kasih";
        Sleep(1000);
        system("exit");
    }
    system("cls");
}

int main(){
    menuAwal();
    return EXIT_SUCCESS;
}

Untuk contoh isi file dataBarang.txt, silahkan lihat dibawah ini :

[01]=Keyboard|100|5000|
[02]=Sikat Gigi|100|5000|
[03]=Sabun Mandi|100|15000|
[04]=Obat Nyamuk|100|25000|
[05]=Minyal Goreng|100|35000|
[06]=Gula Pasir|100|45000|
[07]=Garam Dapur|100|55000|
[08]=Susu Kental|100|65000|
[09]=Kopi Bubuk|100|75000|
[10]=Teh Celup|100|85000|

Resume Praktikum Algoritma Pemrograman (C++)

Setelah bersusah payah mengikuti Praktikum Algoritma Pemrograman, dengan berburu Tanda Tangan, dan menghadapi bermacam – macam jenis manusia (Asisten Lab). Sengaja dipost, jaga – jaga kalau suatu saat ada yang butuh, kan bisa buat referensi 🙂 …
Untuk lebih jelasnya, silahkan download saja file hasil Praktikum selama 4 Pertemuan, berisikan FLowchart dan Contoh Programnya, tidak lupa beserta laporannya :mrgreen: di link berikut : http://www.ziddu.com/download/12671208/Praktikum-AlPro.zip.html
Tambahan ni,,, kemungkinan file yang aku upload ini ada passwordnya, jika ya coba masukkan rendramm2.wordpress.com sebagai passwordnya 😀

Single Linked List Head & Tail – C++ ( Struktur Data )

//index.cpp

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <singleLHT.cpp>

using namespace std;

int main(){
    int databaru,pil;
    char j,w;
    do{
		cout<< "berapa nilai yang ingin anda masukkan\n";
		cin>>databaru;
		cout<<"\ndepan(1) atau belakang(2)?\n";
		cin>>pil;
		if(pil==1){
			insertDepan(databaru);
		}else{
			insertBelakang(databaru);
		}
		tampil();
		cout<<"apakah anda ingin memasukkan data (y/t)? ";
		cin>>j;
    }
    while(j=='y');

    do{
		cout<<"hapus depan(1) dan hapus belakang(2)? ";
		cin>>pil;
		if(pil==1){
			hapusDepan();
		}else{
			hapusBelakang();;
		}
		tampil();
		cout<<"apakah anda ingin hapus data (y/t)? ";
		cin>>w;
    }
    while(w=='y');
    getch();
    return 0;
}

Continue reading

Program Random Character C++

Program ini digunakan untuk mendpatkan hasil dari randomisasi character yang diacak dan dikumpulkan menjadi satu ke dalam suatu string / array character. Program ini dibuat menggunakan C++ dan IDE DevCPP, oke berikut source code nya :

#include <iostream>
#include <ctime>

using namespace std;

int main() {
    char hasil[10];
    srand((unsigned) time(NULL));
    const int passLen = 10;
    for (int i = 0; i < passLen; i++) {
        hasil[i] = (char) (rand() % ('z' - '0' + 1) + '0');
    }
    cout << hasil <<endl;
    system("pause");
}

Contoh Program Algoritma Pemrograman C++

Akhirnya bisa posting thread lagi di blog ini :), ya meskipun mungkin bahan postingannya kurang menarik. Cuma ini sebagai catatan digitalku saja dari tugas praktikum yang pernah aku jalani dan sempat membuat puyeng :mrgreen:, di dalam postingan ini terdapat beberapa contoh program algoritma pemrograman yang terbuat dari C++ dengan IDE DevCPP, diantaranya adalah sebagai berikut :

  1. Contoh program menampilkan persegi biner dengan tanda silang / tanda X yang tergambar di tengah persegi bintang C++ tersebut
  2. Contoh program yang menampilkan sebuah segitiga bintang biner C++
  3. Contoh program yang dapat mengkonversi sebuah inputan user menjadi kode ASCII
  4. Program yang menghitung perkalian matriks A dan B dengan ordo yang dinamis
  5. Program konversi waktu, dengan inputan user sebagai nilai awal

Diatas adalah list / daftar program yang akan dibahas di dalam postingan ini, untuk hasil eksekusi tiap program tersebut diatas bisa kalian lihat dibawah ini :

Berikut potongan source code dari semua program yang telah aku sebutkan diatas :

void persegi(){
    int baris, temp;
    cout << "Input batas : ";
    cin >> baris;
    temp = baris;
    for(int i=1; i<=baris; i++){
        for(int j=1; j<=baris; j++){
            if(j==i||j==temp)
                cout << "0 ";
            else
                cout << "1 ";
        }
        temp--;
        cout << endl;
    }
}

void segitiga(){
    int l, k, m = 1;
    cout << "Input batas : ";
    cin  >> l;
    for(int i=1;i<=(l+4);i++){
        if(i%2==0) k = 0; else k = 1;
        m = k;
        for(int j=1;j<=i;j++){
            m++;
            if(i+j<=(l+5)){
                if(m%2==1){
                    cout << "0 ";
                }else{
                    cout << "1 ";
                }
            }
        }
        cout<<endl;
    }
}

Diatas kan cuma potongan sekilas, jika ingin download sourcenya full silahkan download di link Download Contoh Program Algoritma Pemrograman ini

Contoh Program Exchange Sort C++ dengan fitur Estimasi waktu proses Sorting

Berikut adalah contoh program sorting dengan C++ yang menggunakan metode Exchange Sort. Agak berbeda dengan yang ada pada umumnya, di source code ini aku tambahkan script yang dapat mengukur lamanya waktu saat proses Sorting, tentunya dengan data yang tidak sedikit baru estimasi / alokasi waktunya terlihat berapa detik proses sorting tersebut berlangsung.

#include<iostream>
#include<time.h>

/* =====================================
Program Sorting Data - Exchange Sort
- Rendra Kurniawan ( 06.2009.1.04900 )
========================================*/

using namespace std;

int main(int argc, char *argv[]){
    int nInput, i=0, j;
    cout << "Berapa banyak inputan angka yang Anda ingin input ? ";
    cin >> nInput;
    // cek apakah yang diinput benar angka
    if(!cin.fail()){
        int kumpulanAngka[nInput];
        int tempKumpulanAngka[nInput];
        int swapExchange;
        time_t awal, akhir;

        // proses input data dan simpan data
        for(i;i<nInput;i++){
            cout << "\nMasukkan angka ke - " << (i+1) << " : ";
            cin >> kumpulanAngka[i];
            if(cin.fail()){
                kumpulanAngka[i] = 0;
            }
            tempKumpulanAngka[i] = kumpulanAngka[i];
        }

        // proses sorting dengan metode exchange sort
        awal = time(NULL);
        for(i=0;i<nInput;i++){
            for(j=(i+1);j<nInput;j++){
                if(kumpulanAngka[i]>kumpulanAngka[j]){
                    swapExchange = kumpulanAngka[j];
                    kumpulanAngka[j] = kumpulanAngka[i];
                    kumpulanAngka[i] = swapExchange;
                }
            }
        }
        akhir = time(NULL);

        double lamaWaktu = akhir - awal;

        cout <<endl<<endl << "Kumpulan data sebelum diurutkan : "<<endl;
        for(i=0;i<nInput;i++){
            cout << tempKumpulanAngka[i] << " ";
        }
        cout <<endl<<endl << "Kumpulan data setelah diurutkan : "<<endl;
        for(i=0;i<nInput;i++){
            cout << kumpulanAngka[i] << " ";
        }
        cout <<endl<<endl << "Lama waktu yang dibutuhkan sorting sekitar " << lamaWaktu << " detik";
        cout <<endl<<endl;
    }else{
        cout << "Maaf, inputan harus berupa angka";
    }
    system("pause");
    return EXIT_SUCCESS;
}