SAMBIL NGE-RUN PROGRAM MINUM KOPI

Dr. Leonard Lisapaly
Program Geofisika - Universitas Indonesia
Depok 16424

Go back to main page |  Go back to articles list |

PENDAHULUAN

Sambil menyelam minum air adalah peribahasa yang sering kita dengar. Peribahasa ini digunakan untuk melukiskan keadaan dimana kita dapat melakukan dua pekerjaan dalam waktu yang bersamaan. Plesetan dari peribahasa ini berbunyi sambil menyelam minum kopi, dan digunakan untuk menggambarkan keadaan dunia modern dimana orang dapat minum kopi di dalam kapal selam. Seiring dengan berkembangnya dunia komputer, orang kini dapat membuat istilah baru misalnya dengan sambil nge-run program minum kopi.

Dalam tulisan ini kita akan melihat bagaimana dengan Linux kita dapat melakukan pekerjaan kita secara efisien, sehingga membuat kita dapat bersantai sejenak dengan meneguk segelas (atau bergelas-gelas) kopi, atau melakukan pekerjaan yang lain. Dengan demikian waktu kita akan dapat dimanfaatkan se-optimum mungkin.

CONTOH KASUS

Sebagai dosen, mahasiswa, atau profesional barangkali kita pernah atau akan berhadapan dengan keadaan dimana kita harus menjalankan program komputer dengan masukan yang berbeda-beda sebagai bagian dari penelitian atau pekerjaan kita. Pekerjaan seperti ini tidak saja akan membuat kita menjadi bosan, tetapi juga secara tidak sengaja dapat memaksa kita duduk di depan komputer dalam jangka waktu yang cukup panjang untuk menyelesaikannya.

Salah satu contoh sederhana disajikan dalam tulisan ini. Andaikan kita memiliki sebuah program FORTRAN yang membaca variabel a, b, c, d, e secara interaktif seperti di bawah ini :

      :::
      ::: baris sebelumnya
      :::
      print*,'masukkan variabel a : '
      read(*,*) a
      print*,'masukkan variabel b : '
      read(*,*) b
      print*,'masukkan variabel c : '
      read(*,*) c
      print*,'masukkan variabel d : '
      read(*,*) d
      print*,'masukkan variabel e : '
      read(*,*) e
      :::
      ::: dan seterusnya
      :::
Program ini dapat kita sederhanakan dengan cara menyimpan seluruh variabel a sampai e secara berurutan ke dalam sebuah file bernama, misalnya, input01. Kemudian pembacaan data dapat dilakukan dengan memodifikasi program FORTRAN di atas seperti di bawah ini :
      :::
      ::: baris sebelumnya
      :::
      print*,'masukkan nama file masukan : '
      read(*,'(a)') infil
      open(1,file=infil)
      read(1,*) a
      read(1,*) b
      read(1,*) c
      read(1,*) d
      read(1,*) e
      :::
      ::: dan seterusnya
      :::
Teknik menyimpan data ke file ini selain memudahkan kita untuk mengganti variabel tertentu juga dapat mereduksi kesalahan dalam mengetikkan data masukan. Program di atas dapat kita buat lebih fleksibel dengan cara menghilangkan bagian interaktif (print*,.....) sehingga program menjadi :
      :::
      ::: baris sebelumnya
      :::
      read(*,'(a)') infil
      open(1,file=infil)
      read(1,*) a
      read(1,*) b
      read(1,*) c
      read(1,*) d
      read(1,*) e
      :::
      ::: dan seterusnya
      :::
Bagaimana cara membaca data masukan? Caranya adalah dengan menggunakan pipe. Untuk menjalankan program dan membaca data dari file input01, jalankan saja perintah berikut :
echo input01 | namaprogram
Sekilas, cara menjalankan program dengan pipe ini tidak menunjukkan perbedaan yang berarti dengan cara sebelumnya. Tetapi, kasus berikut ini dapat menjelaskan bahwa ada perbedaan yang sangat berarti di antara keduanya.

Andaikan kita memiliki banyak variabel, dan kita ingin menguji bagaimana kombinasi variabel yang berbeda mempengaruhi keluaran program kita. Setiap kombinasi variabel yang mungkin kita simpan dalam file yang berbeda dan semua file masukan tersebut kita letakkan dalam sebuah direktori tersendiri, misalnya /home/leonard/inputs. Andaikan juga penulisan output dari program FORTRAN di atas dituliskan ke standard output dengan menggunakan print* atau write(*.

Untuk memproses semua file yang ada di direktori tersebut, pindahlah ke direktori data, dan jalankanlah script berikut ini :

#!/bin/sh
for infil in `ls`
do
   echo $infil | namaprogram > $infil.out
done
Semua file masukan akan dibaca oleh program namaprogram dan hasilnya disimpan dalam file yang bernama sama dengan ekstension out. Data keluaran ini kemudian dapat kita display atau plot untuk keperluan analisis. Modifikasi juga dapat kita lakukan pada script di atas dengan menambahkan opsi untuk mencetak, menggambar, dll. Script di bawah ini digunakan untuk melakukan beberapa hal yaitu :
#!/bin/sh
for infil in `ls`
do
   echo $infil | namaprogram > $infil.out
   lpr $infil.out
   > temp
   echo "set term post" >> temp
   echo "set output '$infil.ps'" >> temp
   echo "plot '$infil.out' with lines" >> temp
   gnuplot temp
   lpr $infil.ps
done

PENUTUP

Jika file data masukan Anda cukup banyak dan waktu perhitungan dengan komputer membutuhkan waktu yang lama, maka script di atas akan menyelesaikan semua pekerjaan untuk Anda. Yang perlu Anda lakukan kini adalah bersantai dan membuat secangkir kopi untuk Anda nikmati. Atau lakukanlah pekerjaan yang lain.