laporan04

Upload: david-senjaya

Post on 14-Jan-2016

15 views

Category:

Documents


0 download

DESCRIPTION

Daspro

TRANSCRIPT

  • Bagian 1 :

    Tugas 1

    Fungsi swap adalah fungsi yang digunakan untuk menukarkan dua buah nilai. Fungsi ini sangat

    dibutuhkan ketika kita hendak membuat aplikasi pengurutan data (sorting). Pada pemrograman C++,

    fungsi ini sudah tersedia dengan fleksibilitas yang tinggi. Artinya bisa digunakan untuk menukar dua

    buah nilai dengan tipe data yang bermacam-macam. Fungsi ini terdapat dalam pustaka dan

    termasuk dalam namespace standard.

    Bagian 2

    Tugas 2

    Hasil tampilan ini didapatkan dari proses pengurutan (sorting) menggunakan fungsi swap, juga pencacah

    yang akan menghitung berapa banyak subproses (proses menukar) yang dilakukan.

    Bagian 3

    Tugas 3

    Untuk menghitung lama suatu proses, bisa ditambahkan #include , di awal proses yang akan

    dihitung waktunya, tambahkan time_t t1 = clock() dan diakhir tambahkan time_t2 = clock().

    Kegunaannya untuk mengambil waktu yang sekarang dari komputer kita. Hasil pemanggilan fungsi ini

    berupa angka-angka yang belum diterjemahkan, kemudian akan disimpan dalam sebuah variabel yang

    telah didefinisikan sebelumnya, di program ini hasilnya akan disimpan di variabel "waktu". Lalu selisih

    dari t2 dan t1 harus dibagi dengan satuan clock, yaitu CLOCKS_PER_SEC sehingga didapat waktu dalam

    satuan detik. Bisa jadi hasil perhitungan menunjukkan nilai nol, hal ini berarti waktu proses terlalu

    singkat sehingga dibulatkan menjadi nol. Contohnya pada program ini :

  • Bagian 4

    Tugas 4

    Untuk menghitung dengan lebih teliti, dapat digunakan . Pertama tama deklarasikan t1 dan t2 dengan timeb t1,t2, di awal tuliskan ftime (&t1) dan di akhir tuliskan ftime (&t2), fungsi ftime

    berguna untuk menyediakan jenis second maupun millisecond. Sehingga saat perhitungan waktu diakhir,

    dapat disediakan variable baru misal a yang berisikan t1.millitm (t1 dalam milidetik) begitu juga dengan

    t2. Bisa jadi hasil perhitungan menunjukkan nilai nol, hal ini berarti waktu proses terlalu singkat sehingga

    dibulatkan menjadi nol. Berarti kecepatan prosessor < milidetik tiap siklus pengurutan. Berikut contoh

    programnya :

    Bagian 5

    Tugas 5

    Bagian program yang menunjukkan bahwa kode ditulis untuk C++ versi C++11 dalah using namespace

    std::chrono, high_resolution_clock::time_point t1, high_resolution_clock::now(). Berikut adalah contoh

    programnya :

    Kecepatan proses CPU adalah = 0,12 s per subprosesnya.

    Bagian 6

    Tugas 6

    Berikut adalah kode program hasil modifikasi untuk membaca file berisi data acak kemudian disusun

    secara berurutan dan disalin dalam file baru : #include #include #include #include #include #include using namespace std; int main (int argc, char *argv[]){ int U[1000]; char *ifn = argv[1];

  • ifstream fin; fin.open(ifn); if(fin.is_open()){ string line; int i=0; while (!fin.eof()){ getline (fin, line); if(line[0] != '#'){ stringstream ss; ss U[i]; i++;}} fin.close();} time_t t1 = clock(); int N = 1000; int k = 0; for (int j=0; j
  • ifstream fin; fin.open(ifn); if(fin.is_open()){ string line; int i=0; while (!fin.eof()){ getline (fin, line); if(line[0] != '#'){ stringstream ss; ss U[i]; i++;}} fin.close();} timeb t1, t2; ftime(&t1); int N = 1000; int k = 0; for (int j=0; j
  • using namespace std; int main (int argc, char *argv[]){ char *ifn = argv[1]; ifstream fin; fin.open(ifn); int i=0; if(fin.is_open()){ string line; while (!fin.eof()){ getline (fin, line); if(line[0] != '#'){ stringstream ss; ss
  • Bagian 9

    Tugas 9

    Berikut adalah kode program hasil modifikasi untuk membaca file berisi data acak kemudian disusun

    secara berurutan dan disalin dalam file baru dengan metode yang dijelaskan di bagian 9, ketelitian

    perhitungan waktu dalam orde mikrodetik : #include #include #include #include #include #include #include #include #include using namespace std; int main (int argc, char *argv[]){ //Baca file + periksa jumlah array char *ifn = argv[1]; ifstream fin; fin.open(ifn); int i=0; if(fin.is_open()){ string line; while (!fin.eof()){ getline (fin, line); if(line[0] != '#'){ stringstream ss; ss

  • for (int i=0; i
  • Cara ini lebih efisien dari sebelumnya.

    Bagian 10 dan tugas tambahan :

    Menggunakan pustaka algoritma, maka dapat digunakan fungsi sort (+barisawal , +barisakhir) untuk mengurutkan array secara cepat, berikut adalah kode programnya :

    #include #include #include #include #include #include #include #include #include #include using namespace std; int main (int argc, char *argv[]){ //Baca file + periksa jumlah array char *ifn = argv[1]; ifstream fin; fin.open(ifn); int i=0; if(fin.is_open()){ string line; while (!fin.eof()){ getline (fin, line); if(line[0] != '#'){ stringstream ss; ss

  • //sorting using namespace std::chrono; high_resolution_clock::time_point t1 = high_resolution_clock::now(); sort (U, U+N); high_resolution_clock::time_point t2 = high_resolution_clock::now(); //Pengeluaran ke file char *ofn = argv[2]; ofstream fout; fout.open(ofn); if (fout.is_open()){ for (int i=0; i
  • Berikut adalah grafik waktu jumlah data :

    Berikut adalah grafik jumlah subproses jumlah data :

    -5000000

    0

    5000000

    10000000

    15000000

    20000000

    25000000

    -20000 0 20000 40000 60000 80000 100000 120000

    Metoda 1

    Metoda 2

    Metoda 3

    -1000000

    0

    1000000

    2000000

    3000000

    4000000

    5000000

    6000000

    -20000 0 20000 40000 60000 80000 100000 120000

    Metoda 1

    Metoda 2

    Metoda 3