GNUPLOT
TEORI
Pendahuluan
Anda telah mempelajari pengenalan pemrograman bahasa C/C++ dan selanjutnya diharapkan
dapat mempelajarinya lebih lanjut dan mengembangkan kemampuan diri sendiri penguasaan
bahasa C/C++. Pada modul 5 ini Anda diajak untuk mempelajari teknik-teknik visualisasi grafik
yang akan sangat Anda butuhkan. Jika Anda biasanya menggunakan excel maka dengan
GNUPLOT seperti yang akan Anda pelajari, kualitas gambar Anda akan lebih baik dan perlu
diketahui banyak grafik-grafik dalam jurnal bergengsi yang dibuat dengan Gnuplot. Apalagi
Gnuplot dapat dipanggil melalui program C/C++ yang anda buat.
Gnuplot adalah suatu progam grafik interaktif yang berbasis CLI (command-line interface).
Program ini sangat mudah digunakan dan sebenarnya hanya memiliki 2 perintah untuk membuat
suatu gambar plot, yaitu perintah : plot dan splot. Program ini dapat menghasilkan banyak
macam grafik dengan banyak pilihan untuk mengubahnya dan dapat disimpan ke dalam
bermacam-macam divais grafik (terminal grafik, printer atau ploter).
Barangkali timbul suatu pertanyaan, “mengapa memilih program gnuplot, sedangkan di sisi lain
banyak tersedia program grafik berbasis GUI secara bebas?” Salah satu alasan mengapa memilih
program berbasis CLI, misalnya program ini dapat dijalankan lebih cepat dibandingkan program
berbasis GUI karena program ini tidak membutuhkan terminal grafik yang bagus. Hanya dengan
memakai komputer “butut” pun masih bisa membuat grafik dengan kualitas cetak yang sangat
baik. Di samping itu kadang data mentah yang diperoleh dari suatu pengukuran memerlukan
suatu proses awal (pr eprocessing) sebelum diplot ke dalam grafik, misalnya memberikan
koreksi tertentu. Minimal kita akan bekerja beberapa kali untuk menghasilkan grafik dari data
mentah seperti ini. Sebagai contoh, pertama melakukan perhitungan koreksi dan kedua
melakukan pemplotan. Memang tidak terlalu sulit melakukan hal seperti ini pada program
berbasis GUI karena sudah disediakan spreadsheet untuk melakukan proses awalnya.
Dalam program gnuplot yang berbasis CLI kita tidak perlu melakukan perhitungan seperti itu,
karena pro-gram ini dapat melakukan perhitungan bersama-sama dengan pemplotan. Dalam
perhitungan yang kompleks, bila spreadsheet tidak dapat melakukannya (atau cukup rumit),
gnuplot dapat digabung dengan skrip program teren-tu, misalnya perl, python, dan lain-lain. Hal
ini yang membuat program ini jauh lebih cepat dalam membuat grafik dibandingkan dengan
program berbasis GUI. Alasan ini lah yang membuat gnuplot dapat digunakan juga untuk
membuat grafik suatu web, misalnya untuk menampilkan grafik analisis web secara on-line.
Salah satu alasan menggunakan program gnuplot adalah karena program ini dapat diperoleh
secara gratis dan mempunyai kemampuan untuk menampilkan gambar sesuai yang kita inginkan.
Walaupun dalam dunia grafis dikenal juga berbagai macam program grafik populer yang lain,
akan tetapi sebagian besar pemakai harus mengeluarkan sejumlah uang yang cukup besar untuk
membeli program tersebut. Sebagai contoh saja, program Xact untuk versi ’up date’, paling
sedikit seseorang harus mengeluarkan Rp. 500.000,-(bila 1 DM setara dengan Rp.4.100,-).
Program Xact sendiri dibuat oleh SciLab GmbH di Hamburg, Jerman.
2. Contoh-contoh grafi hasil Gnuplot
Pada bagian ini akan diterangkan kemampuan kurva fiting dari program gnuplot. Gnuplot dapat
melakukan 2 macam tipe fiting dengan menggunakan suatu implementasi yang dikenal dengan
nama algoritma non-linear kuadrat terkecil (NLLS=Non-Linear Least Square) Marquardt-
Lavenberg. Tipe pertama adalah regresi atau fiting linear dimana optimasi dilakukan pada suatu
persamaan linear atau suatu persamaan yang dapat dinyatakan dalam suatu bentuk linear . Ini
termasuk fiting polinomial dan bentuk-bentuk persamaan tertentu. Tipe yang lain adalah non-
linear dan memberikan kebebasan kepada pengguna untuk menentukan sendiri persamaannya.
Pada fiting non-linear, gnuplot memberikan kebebasan kepada pengguna untuk menentukan
persamaan yang akan digunakan secara bebas.
3.1 Melakukan fitting data
Dalam program gnuplot ada dua hal yang harus dilakukan untuk melakukan fiting suatu data,
yaitu membuat suatu definisi fungsi kecenderungan data dalam sebuah file, misalnya f(x) = y0 +
m*x (fungsi linear). Fungsi ini dapat disimpan dalam file misalnya line.fnc. Dalam Modul 5 ini
telah diberikan dua file terkompresi yaitu: fit1.rar dan fit2_demo.rar.
Lakukan prosedur yang hampir sama dengan menggunakan ekstrak file fit2_demo.rar. Dan
laporkan hasilnya secara detil dan jelas dengan memberikan screen capturenya. Juga jelaskan
script program gnuplotnya untuk masing-masing gambar grafik yang muncul.
Modul VI
1. Pendahuluan
Apa yang telah disampaikan diatas adalah sebuah proses, dan proses tersebut
biasanya dikenal dengan istilah "Build". Di dalam proses build terdapat
kegiatan compile dan linking. Alat-alat untuk melakukan proses build disebut
dengan Build Tools. Banyak sekali ada produk-produk build tools. Salah satunya
adalah GNU Make.
2. Tujuan
Sesuai dengan judul dari tulisan ini, mengenalkan dan mengajarkan dasar-dasar
penggunaan GNU Make dengan pendekatan praktis sehingga pembaca memiliki
kemampuan minimal untuk melakukan proses build menggunakan GNU Make dengan
fitur-fitur yang minimal juga. Sehingga sangat memudahkan kita dalam kegiatan
compiling dan linking sebuah program.
Untuk melakukan proses build tentunya harus ada sekumpulan source code yang
akan dibuild. Jika tidak ada source code, tentunya GNU Make tidak akan berguna
karena tidak ada yang di-build. Oleh karena itu kita akan menulis program
kecil-kecilan sebangsa "Hello World". Bahasa pemrograman yang dipakai adalah
bahasa pemrograman C ANSI menggunakan compiler GCC.
3. Dasar-dasar GNU Make
Program build tool GNU Make adalah berupa perintah bernama make. Lalu,
bagaimana GNU Make bekerja? atau bertingkah? Untuk mengetahuinya, mari kita
membuat program yang super kecil dan sederhana yang bertujuan hanya untuk
mengetahui bagaimana flow kerjanya si GNU Make.
Kita namakan file source code kita dengan nama latihan1.c dan berikut source
codenya. Atau jika anda ingin berkreasi source code sendiri silahkan, yang
penting ikuti langkah-langkah untuk menggunakan program make nya.
/*
* latihan1.c
* source code ini copy-paste dari sebuah
* thread di stackoverflow
*/
#include <stdio.h>
#include <time.h>
void what_time_is_it()
{
time_t timer;
char buffer[26];
struct tm *tm_info;
time(&timer);
tm_info = localtime(&timer);
strftime(buffer, 26, "%H:%M:%S", tm_info);
puts(buffer);
}
int main (int argc, char *argv[])
{
printf("Haayy saya sedang belajar GNU Make!\n");
printf("by the way, jam berapa ya sekarang? \n");
printf("Ok.. sekarang jam ");
what_time_is_it();
return 0;
}
=======================================
Karena kita belajar GNU Make maka kita akan pakai perintah make untuk compile
source code program di atas. Di terminal pastikan anda berada di direktori
langsung yg menampung file latihan1.c lalu jalankan perintah berikut di
terminal dengan ketikkan make dan enter sbb:
$ make
Ahhh error ..... mengapa error? Karena program make tidak menemukan soulmate
nya yaitu sebuah file bernama Makefile. Ok, coba lagi dengan menjalankan
perintah berikut:
$ make latihan1
Masih error juga...! Karena kita belum membuat file makefile “latihan1”
Makefile
Adalah sebuah file yang berfungsi sebagai database referensi / informasi untuk
agar si program make mengetahui apa-apa saja yang harus dia lakukan dalam
proses build.
Seperti apa isi dari file Makefile? Mari kita lihat contoh susunan file
Makefile berikut supaya anda punya bayangan.
Atau anda bisa ber-eksplorasi dengan iseng membuka file Makefile nya project
software-sofware open-source di github atau bitbucket. Beberapa contoh project
software-sofware open-source yang bisa dipelajari Makefile nya adalah:
1 https://github.com/antirez/redis/blob/unstable/src/Makefile
2 https://github.com/haproxy/haproxy/blob/master/Makefile
3 https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/firm
wares/atmegaxxu2/arduino-usbserial/makefile
Silahkan belajar dari link-link tersebut bila anda ingin bisa membuat
software-sofware seperti di atas. Tentunya dengan semangat kolaborasi dan
bersinergi dengan sebuah tim!
Di dalam file Makefile terdapat susunan informasi yang salah satunya disebut
dengan RULES dan merupakan susunan informasi yang mendasar sekaligus utama.
RULES memiliki pola standar dan di dalam pola itu ada item-item berikut ini:
1 TARGET
2 PREREQUISITES
3 RECEIPES
Setelah RULES, satu lagi susunan informasi yang mendasar yang akan dicover
selanjutnya adalah:
VARIABLES
dan masih ada banyak lagi susunan informasi yang lain, tapi tidak dijelaskan
di sini. Susunan informasi yang lain akan langsung saja dipakai (tiba-tiba
muncul) tanpa ada penjelasan khusus.
Target
Ibaratkan sebuah proses memasak, kita harus mengetahui terlebih dahulu bila
kita ingin membuat / memasak menu apa? Tempe orek? sayur asem? nasi goreng?
tahu isi goreng? atau hanya sekedar telor ceplok. Terserah anda mau
menghasilkan menu apa.
Dalam konteks GNU Make pada kegiatan pemrograman C, secara umum, target atau
apa yang ingin kita hasilkan adalah biasanya file-file object yang ber-ektensi
.o dan file executable dari program kita.
Prerequisites
Ibaratkan sebuah proses memasak, setelah kita mengetahui ingin memasak menu
apa, selanjutnya kita butuh daftar bahan-bahan baku dari menu yang ingin kita
masak. Umpamanya kita ingin memasak menu gado-gado. Apa saja bahan-bahan baku
untuk membuat menu gado-gado? Tentunya ada kacang tanah, bawang putih, gula
aren, cabe, ketupat, dan lain-lain.
Dalam konteks GNU Make pada kegiatan pemrograman C, maka bahan-bahan baku dari
sebuah file object itu apa saja? kita perlu ketahui itu. Sebagai contoh, file
object hitung.o bahan-bahannya atau dependency nya adalah file-file berikut:
hitung.c, ukur.h, timbang.h, debug.h.
Receipes
Ibaratkan sebuah proses memasak, setelah kita mengetahui bahan-bahan baku dari
menu yang ingin kita masak, maka selanjutnya adalah bagaimana cara memasaknya?
bagaimana urutannya? bahan mana yang harus pertamakali diolah? Umpamanya kita
memasak menu gado-gado, pertama-tama kacang tanah digoreng hingga matang, lalu
kacang tanah yang sudah matang diulek untuk dihaluskan, masukkan bawang putih,
ulek lagi, dan seterusnya hingga menjadi sebuah menu gado-gado yang siap untuk
dimakan.
Variables
Informasi Variables adalah sama dengan variable-variable yang ada pada sebuah
bahasa pemrograman. Ada nama variable, dan ada nilai dari variable. Setelah
variable di-deklarasikan maka selanjutnya bisa diakses.
Contoh deklarasi:
CC = gcc
SRC_DIR = src
VAR_SUKA_SUKA_GUE = value suka suka gue
$(CC)
$(SRC_DIR)
$(VAR_SUKA_SUKA_GUE)
Baik, supaya anda tidak bingung dan mulai takut dengan GNU Make, mari kita
mulai untuk menulis Makefile yang sederhana. Dan mari kita lihat dulu pola
dasarnya seperti berikut ini:
VARIABLE1 = value variable1
VARIABLE2 = value variable2
VARIABLE_X = value variable_X
target : prerequiesites
receipe1
receipe2
receipeX
Indentasi dari baris receipes adalah HARUS menggunakan character TAB. Jika
anda menggunakan spasi 4x maka dijamin ERROR!.
Makefile Latihan1
Baik, Berikut ini adalah the real Makefile yang sudah bisa di-test dijalankan
melakukan proses build sebuah program. Silahkan disalin dengan diketik ulang.
Berikut Makefile !
Lalu, berikut adalah file-file source code dari program sederhana yang nanti
akan di-build oleh program make berdasarkan informasi file Makefile latihan1
diatas. Buatlah sebuah direktori baru bebas namanya, contoh bernama latihan-
gnu-make di mana saja sesuka anda. Contoh di: /home/nama_user_anda/latihan-
gnu-make. Dan di dalam direktori latihan-gnu-make terdapat file-file berikut
ini:
bebas.h
db.h
dbg.h https://gist.github.com/okaprinarjaya/422b85131cbe0d3538f3
myread.h
https://gist.github.com/okaprinarjaya/72ada6da34eae4e4fd5e#file-myread-h
bebas.c
db.c
myread.c
https://gist.github.com/okaprinarjaya/72ada6da34eae4e4fd5e#file-myread-c
great-software.c
Makefile
bebas.h
db.h
Bebas.c
db.c
great-software.c
Jika anda telah menyusun Makefile dan semua source code dari program sederhana
yang dibuat, maka anda sudah bisa menjalankan perintah berikut ini untuk
melakukan proses build. Melalui terminal PASTIKAN anda berada di direktori
utama dari file-file source code. Contoh anda berada di:
/home/nama_user_anda/latihan-gnu-make. Berikut perintah yang harus dijalankan:
$ make
Ya! cuma satu perintah itu dan sudah pernah dibahas diatas. Hanya saja
sebelumnya perintah make tanpa parameter apapun menghasilkan error karena
tidak ada file Makefile. Sekarang situasinya adalah sudah ada Makefile dan
program GNU Make bekerja sesuai informasi yg ada di dalam file Makefile.
Jalankan program executable hasil dari proses build dengan perintah berikut:
./great-software
Proses build menghasilkan file-file object .o dan file executable dari main
program. Berikut file-file yang dihasilkan
bebas.o
db.o
great-software.o
myread.o
great-software(executable)
Untuk menghapus semua file hasil proses build cukup jalankan perintah:
$ make clean
Jika sudah selesai memodifikasi file Makefile nya, maka lanjutkan dengan
menjalankan perintah make yg sama seperti di latihan 1. Bila perlu, jalankan
perintah make clean terlebih dahulu agar file-file hasil proses build yg lama
terhapus.
Buatlah sub direktori bernama src dan jangan lupa untuk memindahkan semua
file-file source code .c dan .h ke sub direktori src
Bagian ini menjelaskan bagaimana perilaku program make saat melakukan proses
build dengan mengkonsumsi informasi-informasi yang ada di file Makefile
sebagai referensi untuk menjalankan tugasnya. Bagian tulisan ini sebenarnya
adalah saduran berbahasa Indonesia dari manual GNU Make dari official
documentation nya di http://www.gnu.org/software/make/manual/html_node /How-
Make-Works.html#How-Make-Works .
Bagaimana make Memproses sebuah Makefile?
Default Goal
Dari sekian banyak rule yang tersusun / terdaftar di file Makefile kita, rule
yang manakah yang pertamakali dieksekusi oleh make ? Jawabannya adalah rule
yang posisinya berada paling atas / pertama dan dengan SYARAT nama target dari
rule tersebut tidak diawali dengan karakter titik .contoh: .PHONY . Rule
pertama yang dieksekusi oleh make saat make mulai dijalankan adalah disebut
sebagai default goal .
Ingat, default goal adalah rule pertama yang dieksekusi oleh make. Bagaimana
jika kita ada kebutuhan untuk menentukan sendiri / secara custom rule yang
akan pertamakali dieksekusi oleh si make ? Sebenarnya file Makefile yang sudah
kita susun sebelumnya sudah bisa mengeksekusi sebuah rule sesuai pilihan kita.
Contohnya adalah saat menjalankan perintah: make clean . clean adalah nama
target dari sebuah rule.
great-software
1. Rule paling pertama dieksekusi oleh make. Nama target dari rule adalah
great-software.
2. Bahan-bahan / prerequiesites dari target great-software dicheck secara
berurutan dari kiri ke kanan.
3. Dari sini make menyusun daftar urutan eksekusi
4. Check apakah great-software.o ADA ? jika TIDAK ADA, Check apakah great-
software.o adalah sebagai target juga di sebuah rule? Jika YA sebagai
target, maka eksekusi rule dengan nama target great-software.o
5. Jika great-software.o ADA, maka hal yg sama check juga apakah dia adalah
sebagai target juga? Jika ya, maka eksekusi rule dengan nama target great-
software.o
6. great-software.o
7. Jika datang dari kondisi tidak ada, maka receipes langsung dijalankan
8. Jika datang dari kondisi ada, maka sebelum menjalankan receipes, make
melakukan checking apakah ada perubahan dari file great-software.c , db.h,
myread.h, dan bebas.h ? Jika ya, maka jalankan receipes.
9. Hasil dari berjalannya receipes adalah file great-software.o