P04 Mengurutkan Data dan Waktu Proses

dokumen-dokumen yang mirip
P06 Pointer dan Fungsi

P01 Pengenalan Pemrograman C++ di Linux

P00 Perintah Dasar dalam Linux

P03 Sekilas Array dan Penggunan Berkas Teks

P02 Menulis dan Membaca Berkas Teks

P07 Konstanta, Makro, Struktur, dan Kelas

P05 Visualisasi Data dengan gnuplot

Konsep Dasar Pemrograman Dan Pengenalan C++

Abstrak. Pendahuluan. cerita. Pemrograman. mewakili semua. Struktur Bahasa. dan deklarasi. Mari. ilmuti.org Seluruh disertakan dalam

//Kelas ini berisi data yang hendak disimpan ke dalam database

Pengantar Pemrograman Dengan C++

Komentar, Identifier, Konstanta dan Variabel

Kurikulum Qt. Chapter 4 Function. Fungsi

Gambar 13.1 Ilustrasi proses algoritma sorting

Pemrograman I Bab VI Pengulangan. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia

PENGANTAR KOMPUTER & SOFTWARE II. Array (Part II) Tim Pengajar KU Institut Teknologi Sumatera

LATIHAN SOAL (FUNGSI & PROSEDUR)

REVIEW ARRAY. Institut Teknologi Sumatera

DISUSUN OLEH BAB II C DAN C++ berikut ini: pilih radio HAL 1

Vigènere Chiper dengan Modifikasi Fibonacci

LAPORAN PRAKTIKUM SEMENTARA PENGANTAR PEMROGAMAN BAHASA C++

SUB PROGRAM P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

Chapter 9 Operator Types dan Operator Overloading

Instalasi Code::Blocks, Tipe Data, Variabel, Konstanta, Operator, Input-Output dan Flowchart

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2016

INF-103 Pemrograman II VECTOR & STRING. Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc. Program Studi Informatika FMIPA UNIVERSITAS KUALA

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

Fungsi 1. Ekohariadi FT Unesa

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

VARIABEL & TIPE DATA PEMROGRAMAN C++

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

MODUL 1 PENGENALAN PROGRAM C++ DAN PERNYATAAN MASUKAN-KELUARAN

PERTEMUAN 2 KONSEP DASAR PEMROGRAMAN

Kurikulum Qt. Chapter 8 - Polymorphism. Polimorfisme. Problema Pewarisan Tunggal (Single Inheritance)


PENGENALAN FUNGSI C++

Sekilas C DAN C++ DISUSUN OLEH. Sebuah bahasa, yaitu: 1. Bahasaa tingkat tinggi. High. dapat. lunak

PENGENALAN DAN PENERAPAN OOP PADA C++

BAB V SORT. Proses penukaran tidak dapat langsung dilakukan dengan cara : nilai[1] = nilai[2]; nilai[2] = nilai[1];

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

MODUL 1 DASAR-DASAR PEMROGRAMAN C++

Pencarian (Searching)

ilmu bahasa pemrograman ilmu c++ Copyright izie ilmu c++

KU-1072 PENGENALAN TEKNOLOGI INFORMASI B (PTI B)

Pemrograman I Bab V Percabangan. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia

Dasar-dasar C/C++ Ekohariadi FT Unesa

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK AMIKOM YOGYAKARTA

P3 Dasar Struktur Data TIF42/SIF42

Dasar Pemrograman. Visual Studio Program C++ Sederhana. Yoannita, S.Kom.

PENGENALAN C++ Bab 1

LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++

BAGIAN INI ADALAH BAGIAN JUDUL TULIS JUDUL DENGAN POLA PIRAMIDA TERBALIK (BARIS ATAS LEBIH PANJANG DARI BARIS BAWAH)

Pengenalan C++ Oleh : Dewi Sartika

MODUL 2 TIPE DATA, KONSTANTA DAN VARIABEL

Part 2 - Algoritma & Pemrograman Konsep dasar Pemrograman

Baca Tulis File. Untuk dapat membaca atau menulis data dari/ke sebuah file maka langkah yang perlu dilakukan adalah:

MATERI/BAHAN PRAKTIKUM PENDAHULUAN DAN PENGENALAN (IDENTIFIER)

TUTORIAL DASAR C++ BELAJAR C++ DARI NOL. Nor Kandir. Lab B201 - Teknik Elektro ITS Surabaya

1 - Bahasa Pemrograman

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN

Notasi Algoritma Separator Special Character. Dasar Pemrograman. Yoannita, S.Kom.

STRUKTUR DASAR PEMROGRAMAN

Tipe Data, Identifier, Operator dan Control Statement

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

INF-103 Pemrograman II FUNGSI C++ Dr. Taufik Fuadi Abidin, M.Tech Irvanizam, M.Sc. Program Studi Informatika FMIPA UNIVERSITAS KUALA

A. TUJUAN PEMBELAJARAN

Chapter 2 Tipe Data, Identifier, Operator dan Control Statement

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

Praktikum Dasar Pemrograman

ARRAY / LARIK. Oleh : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

PEMROGRAMAN BERORIENTASI OBJEK

Praktikum 8. Pengurutan (Sorting) Bubble Sort, Shell Sort

Tipe Data, Variabel, Input/Output

Notasi Algoritma Separator Special Character Kesalahan pada program Yoannita

Selection / Pemilihan PEMILIHAN

LAPORAN PRAKTIKUM SEMENTARA ALGORITMA & STRUKTUR DATA 1

PEMROGRAMAN BERORIENTASI OBJEK. Operator. Budhi Irawan, S.Si, M.T

Pemrograman I Bab III Tipe Data, Variabel, dan Operasi Perhitungan. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia

Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp Terbit pertama: Februari 2005 Sinopsis singkat:

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

UJIAN TENGAH SEMESTER KU1072/PENGENALAN TEKNOLOGI INFORMASI B SEM /2014

Subprogram (dalam Bahasa C++ + Flowchart)

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

PENGANTAR KOMPUTER & SOFTWARE II. Pengulangan (For) Tim Pengajar KU Institut Teknologi Sumatera

Algoritma Pemrograman 2B (Pemrograman C++)

PENGANTAR KOMPUTER & SOFTWARE II PERCABANGAN

Game Technology Design Course College of Multi Media Yogyakarta Spring Tri Anggraeni, S.Kom., M.Sc.

C V.S. C++ Oleh : Rasim

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA April 1, 2010 BAB 8 REKURSIF

BAGIAN INI ADALAH BAGIAN JUDUL TULIS JUDUL DENGAN POLA PIRAMIDA TERBALIK (BARIS ATAS LEBIH PANJANG DARI BARIS BAWAH)

Perulangan, Percabangan, dan Studi Kasus


A. Putting a Program Together

8.1 FUNGSI, DEKLARASI DAN DEFINISI NYA

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

SL 1201 Materi tentang Fungsi

PERCABANGAN P E N G E N A L A N P R O G R A M S T U D I T E K N I K I N F O R M AT I K A. Institut Teknologi Sumatera

Transkripsi:

P04 Mengurutkan Data dan Waktu Proses Modul Praktikum FI2283 Pemrograman dan Simulasi Fisika Versi 2013.09.28 Catatan. Simpan dan gunakan modul-modul praktikum sebelumnya karena beberapa program akan merujuk pada program dalam modul sebelumnya. Dalam setiap praktikum umumnya terdapat berkas laporan.txt yang berisikan hasil pembahasan atau keluaran dari program yang dibuat. 1 Fungsi untuk menukar nilai 39 2 Mengurutkan data dalam array 40 3 Menghitung waktu suatu proses 42 4 Menghitung waktu suatu proses (lebih teliti) 43 5 Menghitung waktu suatu proses (lebih teliti lagi) 44 6 Mengurutkan data dari file dan waktunya (s) 45 7 Mengurutkan data dari file dan waktunya (ms) 45 8 Mengurutkan data dari file dan waktunya (µs) 45 9 Mengurutkan data dari file modifikasi 46 10 Efesiensi algoritma mengurutkan 46 1 Fungsi untuk menukar nilai Ketiklah program berikut ini 39

/* */ swap.cpp 20130928.01301 Sparisoma Viridi <dudung@gmail.com> How to use swap function template Compile: g++ swap.cpp -o swap Execute:./swap #include <string.h> #include <iostream> #include <fstream> using namespace std; int main(int argc, char *argv[]) { double x = 1.23; double y = -9.83; cout << "Original content:" << endl; cout << "x = " << x << endl; cout << "y = " << y << endl; swap(x, y); cout << "Swapped content:" << endl; cout << "x = " << x << endl; cout << "y = " << y << endl; return 0; Tugas 1. Kompilasi program swap.cpp di atas sehingga menghasilkan perintah swap dan jalankan seperti pada keterangan dalam program tersebut. Laporkan hasilnya dalam berkas laporan.txt dan berikan penjelasan fungsi dari template fungsi C++ swap, serta termasuk ke dalam namespace apakah swap ini dan pustaka C++ apa? Apakah template fungsi swap ini dapat digunakan untuk jenis variabel lain seperti int, char, dan bool? Jelaskan pula dalam berkas laporan.txt. 2 Mengurutkan data dalam array Ketiklah program berikut ini 40

/* */ sort-selection.cpp 20130928.1527 Sparisoma Viridi <dudung@gmail.com> Example of selection sort for array Compile: g++ sort-selection.cpp -o sort-selection Execute:./sort-selection References: Wikipedia contributors, Selection sort, Wikipedia, The Free Encyclopedia, 26 September 2013, 16:46 UTC, oldid=574625978 [accessed 28 September 2013]. #include <string.h> #include <iostream> #include <fstream> using namespace std; int main(int argc, char *argv[]) { // Define arrays of int and get its size int data[] = {38, 29, 10, 54, 15, 31, 55, 17, 22, 11; int N = sizeof(data) / sizeof(int); // Display original sequence cout << "Original sequence: "; for(int i = 0; i < N; i++) { cout << data[i]; if(i < N - 1) { cout << " "; else { cout << endl; // Perform selection sort int k = 0; for(int j = 0; j < N - 1; j++) { for(int i = j + 1; i < N; i++) { if(data[i] < data[j]) { swap(data[i], data[j]); k++; 41

// Display sorted sequence cout << "Sorted sequence: "; for(int i = 0; i < N; i++) { cout << data[i]; if(i < N - 1) { cout << " "; else { cout << endl; // Display number of sub-processes and time difference cout << "Sub-process: " << k <<endl; return 0; Tugas 2. Kompilasi program sort-selection.cpp di atas sehingga menghasilkan perintah sort-selection dan jalankan seperti pada keterangan dalam program tersebut. Laporkan hasilnya dalam berkas laporan.txt. 3 Menghitung waktu suatu proses Ada kalanya diperlukan perhitungan waktu suatu proses yang dilakukan oleh program, sehingga dapat dikaji apakah algoritma yang digunakan telah efesien ataupun belum. Dalam potongan kode berikut ini digunakan fungsi C++ clock() untuk mengambil waktu sebelum dan sesudah suatu proses. Proses yang dimaksud di sini adalah bagian pengurutan data dalam array, yang ditandai dengan komentar // Perform selection sort dalam kode pada tugas sebelumnya. Tambahkan bagian berikut ini sebelum proses tersebut time_t t1 = clock(); dan bagian ini sesudah proses tersebut, time_t t2 = clock(); 42

Lalu tampilkan hasilnya dengan potongan kode berikut ini // Calculate time difference and display it double dt = (double)((t2 - t1) / CLOCKS_PER_SEC); cout << "Time difference (s): " << dt << endl; pada bagian akhir program. Jangan lupa tambahan pustaka berikut ini pada awal program #include <ctime> Tugas 3. Kompilasi program difftime s.cpp di atas sehingga menghasilkan perintah difftime s dan jalankan. Laporkan hasilnya dalam berkas laporan.txt. Jelaskan berapa waktu yang diperlukan oleh proses tersebut dan kaitkan dengan kelajuan CPU komputer yang Anda gunakan. Bahas bila selang waktunya tidak teramati. Jelaskan pula tengan struktur time t. 4 Menghitung waktu suatu proses (lebih teliti) Lakukan langkah-langkah seperti dalam tugas sebelumnya dengan modifikasi yang lain.tambahkan bagian berikut ini sebelum proses mengurutkan timeb t1, t2; ftime(&t1); dan bagian ini sesudah proses tersebut, ftime(&t2); Lalu tampilkan hasilnya dengan potongan kode berikut ini // Calculate time difference and display it int c1 = t1.millitm + (t1.time & 0xfffff) * 1000; int c2 = t2.millitm + (t2.time & 0xfffff) * 1000; double dt = (c2 - c1); dt = (dt < 0)? dt += 0x100000 * 1000 : dt; dt = dt / 1000; cout << "Time difference (s): " << dt << endl; pada bagian akhir program. Jangan lupa tambahan pustaka berikut ini pada awal program 43

#include <sys/timeb.h> Tugas 4. Kompilasi program difftime ms.cpp di atas sehingga menghasilkan perintah difftime ms dan jalankan. Laporkan hasilnya dalam berkas laporan.txt. Jelaskan berapa waktu yang diperlukan oleh proses tersebut dan kaitkan dengan kelajuan CPU komputer yang Anda gunakan. Bahas bila selang waktunya tidak teramati. Jelaskan pula mengenai struktur timeb. 5 Menghitung waktu suatu proses (lebih teliti lagi) Lakukan langkah-langkah seperti dalam tugas sebelumnya dengan modifikasi yang lain.tambahkan bagian berikut ini sebelum proses mengurutkan using namespace std::chrono; high_resolution_clock::time_point t1 = high_resolution_clock::now(); dan bagian ini sesudah proses tersebut, high_resolution_clock::time_point t2 = high_resolution_clock::now(); Lalu tampilkan hasilnya dengan potongan kode berikut ini // Calculate time difference and display it duration<double> dt = duration_cast<duration<double>>(t2 - t1); cout << "Time difference (s): " << dt.count() << endl; pada bagian akhir program. Jangan lupa tambahan pustaka berikut ini pada awal program #include <ctime> #include <ratio> #include <chrono> Khusus untuk penggunaan pustaka chrono terdapat pada C++11, untuk itu cara melakukan kompilasi menjadi g++ difftime_us.cpp -std=c++11 -o difftime_us 44

Tugas 5. Kompilasi program difftime us.cpp di atas sehingga menghasilkan perintah difftime us dan jalankan. Laporkan hasilnya dalam berkas laporan.txt. Jelaskan berapa waktu yang diperlukan oleh proses tersebut dan kaitkan dengan kelajuan CPU komputer yang Anda gunakan. Jelaskan pula bagian mana dalam cara kompilasi yang menunjukkan bahwa kode ditulis untuk versi C++11. Dengan melihat hasil tugas ini dan dua tugas sebelumnya, jelaskan berbedaan dan hasil yang diperoleh. 6 Mengurutkan data dari file dan waktunya (s) Tugas 6. Modifikasi program difftime s.cpp agar dapat membaca berkas data.txt yang berisikan 1000 baris data bilangan riil, satu kolom saja, dengan header #x. Tanyakan pada asisten praktikum untuk berkas data ini. Urutkan data tersebut dan simpan dalam berkas keluaran data-out.txt. Simpan berkas program dengan nama difftime s file.cpp. Catat waktu yang diperlukan dan laporkan pengamatan Anda dalam berkas laporan.txt. Jelaskan berapa waktu yang diperlukan oleh proses tersebut dan kaitkan dengan kelajuan CPU komputer yang Anda gunakan. 7 Mengurutkan data dari file dan waktunya (ms) Tugas 7. Modifikasi program difftime ms.cpp agar dapat membaca berkas data.txt yang berisikan 1000 baris data bilangan riil, satu kolom saja, dengan header #x. Tanyakan pada asisten praktikum untuk berkas data ini. Urutkan data tersebut dan simpan dalam berkas keluaran data-out.txt. Simpan berkas program dengan nama difftime ms file.cpp. Catat waktu yang diperlukan dan laporkan pengamatan Anda dalam berkas laporan.txt. Jelaskan berapa waktu yang diperlukan oleh proses tersebut dan kaitkan dengan kelajuan CPU komputer yang Anda gunakan. 8 Mengurutkan data dari file dan waktunya (µs) Tugas 8. Modifikasi program difftime us.cpp agar dapat membaca berkas data.txt yang berisikan 1000 baris data bilangan riil, satu kolom saja, dengan header #x. Tanyakan pada asisten praktikum untuk berkas data ini. Urutkan data tersebut dan simpan dalam berkas keluaran data-out.txt. Simpan berkas program dengan nama difftime us file.cpp. Catat waktu yang diperlukan dan laporkan pengamatan Anda dalam berkas laporan.txt. Jelaskan berapa waktu yang diperlukan oleh proses tersebut dan kaitkan dengan kelajuan CPU komputer yang Anda gunakan. 45

9 Mengurutkan data dari file modifikasi Tugas 9. Modifikasi program untuk mengurutkan data dari berkas data.txt dan menuliskan hasilnya dalam data-out.txt yang telah ada sehingga proses mengurutkannya tidak lagi menggunakan algoritma selection sort. Gunakan langkah-langkah berikut ini: periksa jumlah baris data (satu kolom) dari berkas data.txt, pesan array sesuai jumlah data, tentukan nilai rata-rata dari data, pecah data menjadi dua kelompok, yaitu yang lebih kecil dan lebih besar dari nilai rata-rata, lakukan selection sort untuk kedua kelompok data tersebut, gabungkan kedua data tersebut, tuliskan hasilnya ke dalam data-out.txt. 10 Efesiensi algoritma mengurutkan Tugas 10. Bandingkan jumlah sub-proses dan waktu yang dibutuhkan untuk mengurutkan 10, 100, 1000, 10000, dan 100000 data antara algoritma selection sort dan modifikasinya. Buat grafik antara waktu dan jumlah data serta jumlah sub-proses dan jumlah data untuk kedua algoritma tersebut. Tanyakan kepada asisten tengan data-data masukan data-1e1.txt, data-1e2.txt, data-1e3.txt, data-1e4.txt, dan data-1e5.txt. 46

Keluaran praktikum 1. swap.cpp, sort-selection.cpp, difftime s.cpp, difftime ms.cpp, difftime us.cpp, difftime s file.cpp, difftime ms file.cpp, difftime us file.cpp,, dan. 2. laporan.txt yang berisikan jawaban dari Tugas 1, 2, 3, 4, 5, 6, 7, 8, dan. This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. 1 1 Sparisoma Viridi <dudung@gmail.com>,.., 2013 47

. 48