Konsep Pengembangan Seni Islam

3 Jun

Ajaran Islam secara tidak langsung telah memberi inspirasi yang kuat bagi tumbuhnya berbagai bentuk karya seni dalam kehidupan manusia dan masyarakat. Sejak masa Rasulullah SAW, karya seni tidaklah bisa dipisahkan dari sejarah perkembangan Islam. Oleh karena itu, dalam pandangan Prof. Dr. H. Ali Abdurrahman, hubungan seni dan Islam adalah hubungan yang tidak dapat dipisahkan.

Seni sebagai salah satu bentuk kebesaran Allah SWT, menciptakan keadaan yang bernama keindahan. Setiap bangsa dan negara mempunyai bentuk atau aliran seni yang bermacam-macam bergantung kepada kebudayaan atau kebiasaan penduduk setempat yang mungkin pula dipengaruhi oleh kebudayaan yang masuk dari luar daerah ataupun bangsa tersebut.

Seni adalah sebagai salah satu bentuk hiburan masyarakat atau penduduk pada suatu tempat, juga sebagai pelembut rasa seseorang kepada orang lain. Islam dalam hal ini memperbolehkan kita mencintai seni asalkan tidak mengalahkan rasa cinta kita kepada Allah SWT. Seni yang didasarkan pada nilai-nilai Islam, yakni agama dan ketuhanan inilah yang menjadi pembeda antara seni Islam dengan ragam seni yang lain. Seni yang Islami adalah seni yang menggambarkan wujud dengan bahasa yang indah serta sesuai dengan fitrah manusia. Kesenian Islam membawa manusia kepada pertemuan yang sempurna antara keindahan dan kebenaran.

Dari berbagai uraian di atas, dapat disimpulkan bahwa konsep pengembangan seni Islam adalah satu, yakni Islam memberikan kebebasan sepenuhnya asalkan sesuai dengan prinsip seni Islam, yakni harus mendidik, menghibur, memberikan ilmu dan kesadaran pada diri umat Islam sehingga akan lebih mendekatkan diri kepada Allah SWT, serta yang paling penting harus didasari oleh keikhlasan dengan tujuan untuk beribadah kepada Allah SWT.

 

Daftar Pustaka :

NN. 2001. Seni Menurut Pandangan Islam. http://kbi.gemari.or.id/beritadetail.php?id=1592.

Imran, Ahda. 2010. Seni Itu Bagian dari Islam. http://bataviase.co.id/node/155472.

Alif. 2008. Seni dalam Islam. http://alifmagz.com/wp/2008/09/12/seni-dalam-islam.

Kebudayaan dalam Perspektif Islam

3 Jun

Judul               : 1. Relasi Islam dan Kebudayaan

2. Pandangan Islam tentang Kebudayaan

Penulis : 1. Ahmad Zain An Najah, MA

2. Al Manhaj

Data Publikasi  : 1. http://ahmadzain.wordpress.com/relasi-antara-islam-dan-kebudayaan/

(4 Mei 2010, 20 : 10)

2.  http://www.almanhaj.or.id/content/2643/slash/0 (29 April 2010, 12 : 30)

Islam adalah agama yang diturunkan Allah SWT sebagai rahmat bagi alam semesta karena setiap ajarannya mencakup segala aspek dalam kehidupan dan akan selalu membawa kemaslahatan. Tidak ada satupun bentuk kegiatan yang dilakukan manusia, kecuali Allah telah meletakkan aturan-aturannya dalam Islam. Kebudayaan adalah salah satu sisi penting kehidupan manusia, dan Islam pun telah mengatur dan memberikan batasan-batasan di dalamnya.

Kebudayaan berasal dari kata buddhaya yang dalam bahasa Sansekerta diartikan sebagai hal-hal yang berkaitan dengan budi dan akal manusia. Kebudayaan sendiri dapat diartikan sebagai suatu cara hidup yang berkembang dan dimiliki bersama oleh sebuah kelompok manusia dan diwariskan dari generasi ke generasi.

Manusia menurut Islam merupakan makhluk terbaik yang diciptakan Allah SWT karena memiliki banyak kelebihan dibandingkan makhluk lain dan memiliki tanggung jawab yang lebih besar atas tugas yang diberikan kepadanya. Allah telah memberikan manusia sebuah kemampuan dan kebebasan untuk berkarya, berpikir, dan menciptakan suatu kebudayaan. Islam mengajarkan umatnya untuk selalu beramal dan berkarya, untuk selalu menggunakan pikiran yang diberikan Allah untuk mengolah alam dunia ini menjadi sesuatu yang bermanfaat bagi kepentingan manusia

Islam adalah agama yang datang untuk mengatur dan membimbing masyarakatnya menuju kehidupan yang baik dan seimbang. Dengan demikian Islam tidaklah datang untuk menghancurkan budaya yang telah dianut suatu masyarakat, akan tetapi dalam waktu yang bersamaan Islam menginginkan agar umat manusia jauh terhindar dari hal-hal yang yang tidak bermanfaat dan mendatangkan kerugian dalam kehidupannya, sehingga Islam perlu meluruskan dan membimbing kebudayaan yang berkembang di masyarakat menuju kebudayaan yang beradab dan berkemajuan sehingga akan mempertinggi derajat kemanusiaan manusia.

Islam telah menggariskan adab-adab Islami yang mengatur etika, budaya, dan norma-norma bagi setiap pemeluknya. Adab ini meliputi seluruh aspek yang tuntunannya berasal dari Allah SWT melalui penyampaian kepada Nabi Muhammad SAW.

Dari berbagai aspek adab yang diajarkan, kebersihan merupakan  bagian yang sangat penting dalam mendukung berbagai hal dalam kehidupan sehingga Islam sendiri menjadikan kebersihan sebagai bagian dari iman. Hidup bersih akan membuat jiwa dan pikiran kita lebih tenang dan nyaman sehingga akan memudahkan penyelesaian berbagai masalah yang kita hadapi dalam hidup.

Dari uraian di atas, dapat disimpulkan bahwa Islam adalah agama yang datang untuk mengatur dan membimbing masyarakatnya menuju kehidupan yang baik dan seimbang, yakni dengan menerapkan adab-adab yang telah digariskan dalam setiap aspek kehidupan. Dari berbagai aspek tersebut, kebersihan merupakan bagian terpenting yang perlu dikembangkan dalam setiap kegiatan melihat begitu banyak manfaat yang dapat kita peroleh darinya, seperti terhindarnya kita dari berbagai masalah yang ditimbulkan oleh sampah dan membuat kita lebih terjaga kesehatannya. Oleh karena itu, kita sebagai mahasiswa setidaknya dapat membantu menciptakan kebersihan dengan terus berupaya menyadarkan masyarakat akan pentingnya kebersihan atau paling tidak dengan melakukan pembuangan sampah pada tempatnya.

Contoh soal dan solusi matematika kombinatorik

3 Jun

1. Pak Tino memiliki 4 anak perempuan dan 3 anak laki-laki yang semuanya berusia dibawah 17 tahun. Pak Tino ingin mengajak anak-anaknya ke restoran. Karena mobil Pak Tino hanya muat 5 penumpang termasuk dirinya, maka hanya 4 anaknya yang bisa naik mobilnya. Pak Tino perlu minimal satu anak laki-laki di mobilnya untuk menemaninya sebagai petunjuk jalan. Berapa banyaknya cara Pak Tino  memilih anak-anaknya untuk naik mobilnya jika

a.      Tempat duduk anak-anak tersebut diperhatikan

Cara 1: (difference rule)

Banyaknya cara = total seluruh kemungkinan – kemungkinan semua anak perempuan

= P(7,4) – P(4,4) = 816 cara

Cara 2: (addition rule)

Banyaknya cara =    (1 anak lelaki dan 3 anak perempuan ) +(2 anak lelaki dan 2 anak perempuan )+ (3 anak lelaki dan 1 anak perempuan )

=    (P(4) * C(3,1)*C(4,3)) +  ((P(4) * C(3,2)*C(4,2)) + (P(4) *C(3,3)*C(4,1))

=  (24*3*4) + (24*3*6) + (24*1*4)

=  288 +  432 + 96  =  816

Common Mistake:

C(3,1) x P (6,3) = 3 x 120 = 360

Jika jawabannya seperti ini, berarti sudah dipastikan bahwa yang diajak adalah (1 laki-laki dan 3 perempuan), padahal bisa saja yang diajak adalah (2 laki-laki + 2 perempuan kan)?

b.      Tempat duduk tidak diperhatikan

Cara 1: (difference rule)

Banyaknya cara = C(7,4) – C(4,4) = 34 cara

 Cara 2: (addition rule)

Banyaknya cara =    (1 anak lelaki dan 3 anak perempuan ) + (2 anak lelaki dan 2 anak perempuan ) + (3 anak lelaki dan 1 anak perempuan )

=    (C(3,1)*C(4,3)) +  (C(3,2)*C(4,2)) + (C(3,3)*C(4,1))

=  (3*4) + (3*6) + (1*4)

=  12 + 18 + 4 = 34

Common Mistake:

C(3,1) x C (6,3) = 3 x  20 = 60

Jika jawabannya seperti ini, berarti sudah dipastikan bahwa yang diajak adalah (1 laki-laki dan 3 perempuan), padahal bisa saja yang diajak adalah 2 laki-laki + 2 perempuan kan?

2. Terdapat 5 buah bola dan 3 buah kotak.

 a.      Jika setiap bola dapat dibedakan menjadi b1,b2,b3,b4,b5 dan setiap kotak dapat dibedakan menjadi k1, k2, k3, ada berapa cara untuk menempatkan 3 bola ke 3 kotak terebut? (masing-masing kotak berisi 1 bola)

Banyaknya cara menempatkan 3 bola ke 3 kotak = P(5,3) = 60 cara

b.      Jika semua bola tidak dapat dibedakan dan setiap kotak dapat dibedakan menjadi k1, k2, k3, ada berapa cara untuk menempatkan kelima bola ke 3 kotak tersebut?

Banyaknya cara menempatkan kelima bola ke 3 kotak tersebut = C (5+3-1,5) = 21 cara

c.       Jika semua bola tidak dapat dibedakan dan setiap kotak dapat dibedakan menjadi k1, k2, k3, ada berapa cara untuk menempatkan kelima bola ke dalam ketiga kotak tersebut agar setiap kotak terisi paling sedikit satu bola?

Banyaknya cara menempatkan kelima bola kedalam tiga kotak agar setiap kotak terisi paling sedikit 1 bola = C(2+3-1,2) = 6 cara

What is “this” ? Java OOP

3 Jun

Dalam setiap methods non static yang dipanggil lewat suatu objek, terdapat secara implicit suatu variable reference yang bernama “this”.

“this” menunjuk ke objek yang memanggil methods itu.
Contoh constructor yang memakai this:


public class Lingkaran {
public double x, y, r ; // pusat dan jari-jari
public Lingkaran (double x, double y, double r){
this.x = x; this.y = y; this.r = r;
public double luas() { return 3.14 * r * r; }
}

Contoh class Lingkaran dengan banyak constructor :


public class Lingkaran {
public double x, y, r;
public Lingkaran(double x, double y, double r){
this.x = x; this.y = y; this.r = r;
}
public Lingkaran (double r){
x = 0.0; y = 0.0; this.r = r;
}
public Lingkaran(Lingkaran lk){
x = lk.x; y=lk.y; r = lk.r;
}
public Lingkaran(){
x=0.0; y = 0.0; r = 1.0;
}
public double luas() { return 3.14*r*r; }
}

Pendefinisian class Lingkaran itu dapat disingkat dengan memakai this sebagai berikut:


public class Lingkaran {
public double x, y, r;
public Lingkaran(double x, double y, double r){
this.x = x; this.y = y; this.r = r;
}
public Lingkaran (double r){ this(0.0, 0.0, r); }
public Lingkaran(Lingkaran lk){ this(lk.x, lk.y, lk.r); }
public Lingkaran(){ this(0.0, 0.0, 1.0); }
public double luas() { return 3.14 * r * r; }
}

Pengunaan this untuk memanggil contructor lain seperti tadi harus muncul sebagai statement pertama dalam body constructor.

Solusi: Struktur Data dan Algoritma – Sortie si Pengurut Email

3 Jun

Deskripsi

Sortie adalah sebuah program yang akan dikembangkan untuk mengurutkan email seseorang. Sortie digunakan terutama untuk membantu orang-orang yang sibuk supaya terbantu dalam membaca email mereka. Diharapkan dengan menggunakan Sortie, orang-orang dapat lebih mudah dalam membaca email yang mereka anggap lebih penting untuk diproses. Setiap email yang diproses oleh Sortie memiliki nama pengirim, waktu, dan subjek email. Sortie memiliki cara kerja yang cukup fleksibel, karena memiliki fitur untuk mengurutkan email sesuai dengan permintaan dari pengguna Sortie. Cara kerja dari Sortie adalah sebagai berikut.

 Pada suatu saat, seorang pengguna Sortie hanya ingin melihat email yang diterimanya pada hari itu, jadi email yang akan diurutkan adalah email-email pada hari yang sama.
 Pengaturan urutan email dilakukan sesuai dengan permintaan pengguna. Ada tiga (3) mekanisme pengurutan email yang dapat dilakukan:

o Nama pengirim. Email dapat diurutkan berdasarkan nama pengirim yang dapat berupa sebuah String nama ataupun String email. Pengurutan berdasarkan nama pengirim email dilakukan berdasarkan abjad.
o Waktu. Email juga dapat diurutkan berdasarkan waktu ketika email diterima oleh pengguna Sortie.
o Subjek Email. Ketika melakukan pengurutan berdasarkan subjek email, maka pengurutan dilakukan berdasarkan abjad.

 Setiap kali melakukan pengurutan, pengguna dapat memberikan prioritas pengurutan yang diinginkan. Misalnya, apabila pengguna memutuskan untuk mengurutkan berdasarkan [nama pengirim, subjek, waktu], maka apabila ada email dari seorang pengirim yang sama, email akan diurutkan berdasarkan subjek, lalu jam.

Format Masukan

Masukan dibaca dari masukan standar. Masukan terdiri dari 2 bagian. Bagian pertama berisi mengenai keterangan prioritas pengurutan email. Bagian kedua berisi data-data email yang masuk di dalam kotak surat pengguna Sortie.

Bagian pertama terdiri dari satu baris string yang terdiri dari tiga buah kata yaitu “[prioritas] [prioritas] [prioritas]”, dimana prioritas menandakan jenis pengurutan yang ingin dilakukan, dan nilai dari ketiganya berbeda, terdiri atas [pengirim], [waktu], dan [subjek]. String menandakan prioritas urutan email yang diinginkan oleh pengguna Sortie.

Bagian kedua berisi data-data email yang masuk ke dalam inbox pengguna Sortie. Bagian ini terdiri dari beberapa baris informasi data-data email yang masuk. Setiap baris terdiri dari tiga bagian yaitu “[pengirim] [waktu] [subyek]”. Data inilah yang nantinya kemudian akan diolah kembali dan akan diurutkan sesuai keinginan pengguna Sortie.

Keterangan:
Dalam mengerjakan tugas ini, Anda sebagai tim pengembang aplikasi Sortie diminta menggunakan metode pengurutan merge sort untuk mengurutkan masukan email untuk Sortie (Anda diharuskan untuk melakukan implementasi merge sort pada masalah ini!). Merge sort diajukan karena memiliki running time yang tidak eksponensial sehingga resource yang digunakan oleh Sortie tidak akan terlalu besar.

Contoh masukan / input:

pengirim waktu subjek
ido@yahuu.com 11:22 laporan penjualan telor ayam
agung@yahuu.com 20:00 astaga!!!
ido@gahoel.com 11:22 saya mau kasih hadiah
mandala@ngemail.com 09:00 minta uang
adi@chanek.com 10:11 penting
agung@yahuu.com 20:03 tolong bantu saya

Contoh keluaran / output:

adi@chanek.com 10:11 penting
agung@yahuu.com 20:00 astaga!!!
agung@yahuu.com 20:03 tolong bantu saya
ido@gahoel.com 11:22 saya mau kasih hadiah
ido@yahuu.com 11:22 laporan penjualan telor ayam
mandala@ngemail.com 09:00 minta uang
Nah, berikut adalah solusi yang bisa kita buat:
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.Comparator;
import java.util.Collections;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;

/**
Class SDA11111 merupakan class utama dalam program ini
*/
public class SDA11111 {
 /**
 * Method main bertipe static void merupakan method utama yang dipanggil untuk menjalankan program
 * Method ini akan menghandle exception yang mungkin terjadi melalui throws IOException
 * @param args yang bertipe array of String
 */
 public static void main(String args[]) throws IOException {
 //tuliskan program anda disini
 InputOutput io = new InputOutput(); // Membuat objek baru bertipe InputOutput bernama io
 io.bacaFile(); // Memanggil method baca File() pada objek io
 io.sort(); // Memanggil method sort() pada objek io
 io.cetakFile(); // Memanggil method cetakFile() pada objek io
 }
 //buatlah method tambahan yang diperlukan disini
}

/**
Class InputOutput merupakan class untuk menerima input, mengolah data, dan menghasilkan output
Class ini mengimplementasi Comparator yang akan digunakan untuk membandingkan email-email yang ada
*/
class InputOutput implements Comparator<Email> {
 ArrayList<Email> arr = new ArrayList<Email>();
 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 String priority1, priority2, priority3;

 /**
 Method bacaFile() bertipe void digunakan untuk melakukan pembacaan file
 */
 public void bacaFile () {
 StringTokenizer input; // Variabel input bertipe StringTokenizer
 try {
 input = new StringTokenizer(br.readLine(), " ");
 priority1 = input.nextToken();
 priority2 = input.nextToken();
 priority3 = input.nextToken();
 while (br.ready()) {
 input = new StringTokenizer(br.readLine(), " ");
 String sender = input.nextToken();
 String clock = input.nextToken();
 String subject = input.nextToken();
 // Jika token lebih dari 3 bagian, akan ditambahkan di Subjek (sesuai soal)
 while (input.hasMoreTokens()) {
 subject += " ";
 subject += input.nextToken();
 }
 arr.add(new Email(sender, new Clock (clock), subject)); //Menambahkan Email baru ke ArrayList arr
 }
 }
 catch (IOException ioe) {}

 }

 /**
 Method sort() bertipe void dan bersifat public untuk melakukan pemanggilan method mergeSort bertipe private
 */
 public void sort () {
 mergeSort(0, arr.size() - 1); // Memanggil method mergeSort
 }

 /**
 * Method mergeSort
 * @param low
 * @param high
 */
 private void mergeSort (int low, int high) {
 if (low < high) {
 // Get the index of the element which is in the middle
 int middle = (low + high) / 2;
 // Sort the left side of the array
 mergeSort(low, middle);
 // Sort the right side of the array
 mergeSort(middle + 1, high);
 // Combine them both
 merge(low, middle, high);
 }
 }

 /**
 * Method merge
 * @param low
 * @param middle
 * @param high
 */
 private void merge (int low, int middle, int high) {
 ArrayList<Email> help = new ArrayList<Email>(arr.size());
 for(Email item: arr) help.add(item);

int i = low;
 int j = middle + 1;
 int k = low;
 // Copy the smallest values from either the left or the right side back
 // to the original array
 while (i <= middle && j <= high) {
 if (compare((help.get(i)), (help.get(j))) <= 0) {
 arr.set(k, help.get(i));
 i++;
 } else {
 arr.set(k, help.get(j));
 j++;
 }
 k++;
 }

 // Copy the rest of the left side of the array into the target array
 while (i <= middle) {
 arr.set(k, help.get(i));
 k++;
 i++;
 }
 help = null;
 }

 /**
 * Method compare merupakan method yang harus dioverride dari Interface Comparator
 * @param email1 bertipe Email
 * @param email2 bertipe Email
 * @return result bertipe int
 */
 public int compare (Email email1, Email email2){
 int result = 0;
 // Jika prioritas yang diinginkan pengguna berupa pengirim waktu subjek
 if ((priority1.startsWith("p")) && (priority2.startsWith("w")) && (priority3.startsWith ("s"))) {
 result = email1.getSender().compareTo(email2.getSender());
 if (result == 0) {
 result = email1.olahClock(email1.getClock()) - email2.olahClock(email2.getClock());
 if (result == 0) {
 result = email1.getSubject().compareTo(email2.getSubject());
 }
 }
 }
 // Jika prioritas yang diinginkan pengguna berupa pengirim subjek waktu
 else if ((priority1.startsWith("p")) && (priority2.startsWith("s")) && (priority3.startsWith ("w"))) {
 result = email1.getSender().compareTo(email2.getSender());
 if (result == 0) {
 result = email1.getSubject().compareTo(email2.getSubject());
 if (result == 0) {
 result = email1.olahClock(email1.getClock()) - email2.olahClock(email2.getClock());
 }
 }
 }
 // Jika prioritas yang diinginkan pengguna berupa subjek pengirim waktu
 else if ((priority1.startsWith("s")) && (priority2.startsWith("p")) && (priority3.startsWith ("w"))) {
 result = email1.getSubject().compareTo(email2.getSubject());
 if (result == 0) {
 result = email1.getSender().compareTo(email2.getSender());
 if (result == 0) {
 result = email1.olahClock(email1.getClock()) - email2.olahClock(email1.getClock());
 }
 }
 }
 // Jika prioritas yang diinginkan pengguna berupa subjek waktu pengirim
 else if ((priority1.startsWith("s")) && (priority2.startsWith("w")) && (priority3.startsWith ("p"))) {
 result = email1.getSubject().compareTo(email2.getSubject());
 if (result == 0) {
 result = email1.olahClock(email1.getClock()) - email2.olahClock(email2.getClock());
 if (result == 0) {
 result = email1.getSender().compareTo(email2.getSender());
 }
 }
 }
 // Jika prioritas yang diinginkan pengguna berupa waktu pengirim subjek
 else if ((priority1.startsWith("w")) && (priority2.startsWith("p")) && (priority3.startsWith ("s"))) {
 result = email1.olahClock(email1.getClock()) - email2.olahClock(email2.getClock());
 if (result == 0) {
 result = email1.getSender().compareTo(email2.getSender());
 if (result == 0) {
 result = email1.getSubject().compareTo(email2.getSubject());
 }
 }
 }
 // Jika prioritas yang diinginkan pengguna berupa waktu subjek pengirim
 else if ((priority1.startsWith("w")) && (priority2.startsWith("s")) && (priority3.startsWith ("p"))) {
 result = email1.olahClock(email1.getClock()) - email2.olahClock(email2.getClock());
 if (result == 0) {
 result = email1.getSubject().compareTo(email2.getSubject());
 if (result == 0) {
 result = email1.getSender().compareTo(email2.getSender());
 }
 }
 }

 return result;
 }
 /** Method cetakFile() untuk mencetak output */
 public void cetakFile () throws IOException{
 for(Email item: arr) {
 bw.write(""+item);
 bw.newLine();
 }
 bw.flush();
 bw.close();
 }

}

/**
Class Email merupakan class representasi dari objek Email
Class ini memiliki field berupa sender, subject, dan clock.
berturut-turut masing-masing field tersebut menandakan informasi mengenai
pengirim dari email, subject dari email, dan waktu dari email
*/
//notes : lakukan perubahan terhadap class ini jika perlu!!
class Email{
 private String sender;
 private String subject;
 private Clock clock;

 Email(String sender, Clock clock, String subject){
 this.sender = sender;
 this.clock = clock;
 this.subject = subject;
 }

 String getSender(){
 return sender;
 }

 void setSender(String sender){
 this.sender = sender;
 }

 String getSubject(){
 return subject;
 }

 void setSubject(String subject){
 this.subject = subject;
 }

 Clock getClock(){
 return clock;
 }

 void setClock(Clock clock){
 this.clock = clock;
 }

 /** Method olahClock digunakan untuk mengolah waktu dalam bentuk menit agar dapat dibandingkan pada untuk melakukan pengurutan
 * @param clock bertipe Clock
 * @return hasil bertipe int
 */
 int olahClock (Clock clock) {
 int hasil = clock.getHour()*60 + clock.getMinute();
 return hasil;
 }

 public String toString(){
 return sender + " " + clock + " " + subject;
 }
}
/**
Class Clock merupakan class representasi dari objek waktu (Clock)
Class ini memiliki field hour dan minute yang menandakan jam dan menit
*/
//notes : lakukan perubahan terhadap class ini jika perlu!!
class Clock{
 private Integer hour;
 private Integer minute;

 Clock(String time){
 StringTokenizer tok = new StringTokenizer(time, ":");
 hour = Integer.parseInt(tok.nextToken());
 minute = Integer.parseInt(tok.nextToken());
 }

 Integer getHour(){
 return hour;
 }

 void setHour(Integer hour){
 this.hour = hour;
 }

 Integer getMinute(){
 return minute;
 }

 void setMinute(Integer minute){
 this.minute = minute;
 }

 public String toString(){
 String out = "";
 if (hour < 10){
 out += "0" + hour;
 } else {
 out += hour;
 }
 out += ":";
 if (minute < 10) {
 out += "0" + minute;
 } else {
 out += minute;
 }
 return out;
 }
}

Ulasan singkat website terkait Web 2.0

3 Jun

http://www.housingmaps.com adalah website periklanan khusus perumahan yang dapat dibeli atau disewakan di kota-kota yang terletak di Amerika Serikat. Website ini merupakan perpaduan dari http://www.craiglist.org yang merupakan media iklan baris terbesar di dunia dengan penambahan fungsi dari Google Maps untuk mempermudah user memberitahukan lokasi mana yang ingin dicari iklan perumahannya.

http://www.secretprices.com adalah website yang bertujuan membantu penggunanya untuk menemukan promosi-promosi, kupon-kupon, diskon-diskon, dan penawaran menarik lainnya tentang barang-barang yang akan atau ingin dibeli. Website ini mendapatkan penawaran-penawaran menarik tersebut dari http://www.amazon.com, http://www.epinions.com, dan http://www.shopping.com.

http://www.chicagocrimecommission.org adalah website yang bertujuan untuk memberikan informasi kepada penggunanya tentang kejahatan-kejahatan yang terjadi di daerah Chicago, Amerika Serikat. Website ini memiliki misi untuk meningkatkan kualitas keamanan dan keadilan publik dengan visi melanjutkan operasinya melalui riset, kolaborasi, publikasi, program, kepemimpinan, dan advokasi dalam komunitasnya.

Double Click adalah bagian tambahan dari Google yang mengembangkan dan menyediakan jasa periklanan di dunia internet sebagai solusi untuk perusahaan yang melakukan jual beli secara online. Website ini membagi penggunanya dalam dua kategori, yakni advertiser atau pengiklan, dan publisher atau penampil iklan. Tujuan dari website ini adalah meningkatkan efektivitas periklanan bagi para pengiklan melalui berbagai macam strategi, seperti melalui video dan mobile.

Vibrant Media adalah website atau perusahaan yang bergerak di dunia periklanan kontekstual dengan menyediakan berbagai fasilitas atau cara beriklan melalui internet, seperti melalui informasi, video, dan berbagai hal yang relevan dengan iklan dari sang pengiklan. Sama seperti Double Click dari Google, Vibrant Media juga membagi penggunanya dalam dua kategori, yakni advertiser atau pengiklan, dan publisher atau penampil iklan.

Tribal Fusion adalah website atau perusahaan yang bergerak di bidang periklanan melalui internet untuk memasarkan berbagai macam produk. Sama seperti Double Click dari Google, Vibrant Media juga membagi penggunanya dalam dua kategori, yakni advertiser atau pengiklan, dan publisher atau penampil iklan.Tribal Fusion juga mengaku sebagai website yang lebih handal dalam bidang periklanan ini.

Organisasi Sistem Komputer

3 Jun

Menurut Wikipedia, sebuah sistem komputer adalah suatu jaringan elektronik yang terdiri dari perangkat lunak dan perangkat keras yang melakukan tugas tertentu, yakni menerima input, memproses input, menyimpan perintah-perintah, dan menyediakan output dalam bentuk informasi. Selain itu dapat pula diartikan sebagai elemen-elemen yang terkait untuk menjalankan suatu aktivitas dengan menggunakan komputer.

Perkembangan teknologi komputer yang begitu pesat membuat segala hal yang berhubungan dengan perangkat keras dan perangkat lunak yang tadinya diserahkan kepada pengguna komputer beralih diserahkan kepada sebuah sistem komputer yang disebut dengan nama sistem operasi. Sistem ini melakukan pengaturan dan organisasi antara perangkat keras dan perangkat lunak sehingga dapat memudahkan pengguna komputer dalam hal manajemen sumber daya dan proteksi dari segala ancaman dari perangkat keras dan perangkat lunak itu sendiri sehingga dihasilkan sebuah sistem komputer yang stabil dan aman. Sebuah sistem operasi harus dapat mengatur penggunaan segala macam sumber daya perangkat keras yang dibutuhkan oleh sistem agar tidak terjadi hal-hal yang tidak diinginkan. Selain itu, seiring dengan semakin banyaknya program dan aplikasi komputer serta berbagai macam perangkat keras yang ada membuat sebuah sistem operasi harus bekerja dengan pintar mengatur mana yang harus didahulukan agar tercipta efisensi dalam memanajemen sumber dayanya. Hal ini dikarenakan, apabila pengaturan yang dilakukan tidak dapat berjalan lancar maka dapat dipastikan akan terjadi kegagalan proteksi pada perangkat keras sehingga menghancurkan organisasi sistem komputer yang telah dibangun.

Sebuah sistem operasi yang baik harus menyediakan proteksi terhadap sistem dengan maksimal sehingga bila ada suatu program yang tidak bekerja atau terjadi kegagalan dalam bekerja, sering disebut ‘crash’, tidak mengganggu kinerja sistem operasi ataupun program-program lain yang sedang bekerja pada sistem operasi tersebut. Selain itu, sebuah sistem operasi juga harus memastikan operasi-operasi yang benar dari sebuah organisasi sistem komputer, mengatur penggunaan perangkat lunak secara aman dan efisien, serta membuat sebuah sistem komputer dapat digunakan dengan baik.

Dalam pengorganisasian sebuah sistem komputer, tidak ada suatu standar khusus atau ketentuan khusus dalam merancang struktur sistem komputer tersebut. Akan tetapi, untuk mempermudah pemahaman tentang organisasi sistem komputer maka para ahli telah memberikan pengetahuan-pengetahuan umum apa saja yang harus kita ketahui tentangnya, yakni paling tidak sebuah organisasi sistem komputer haruslah memiliki processor, media penyimpanan data atau memori, serta perangkat masukan dan keluaran atau input/output (I/O).

Secara umum sebuah sistem komputer terdiri dari central processing unit atau sering kita dengar sebagai CPU dan sejumlah perangkat pengendali, baik masukan maupun keluaran (perangkat I/O) yang terhubung melalui sebuah bus yang menyediakan akses ke memori untuk keberlangsungan berjalannya sistem tersebut. Secara umum, perangkat pengendali atau sering disebut device controller bertanggung jawab atas sebuah perangkat keras atau hardware secara spesifik. Setiap device tersebut dan CPU dapat berjalan secara bersamaan untuk mendapatkan akses ke memori. Dan untuk menanggulangi kemungkinan masalah yang dapat terjadi, yakni masalah sinkronisasi, maka dibutuhkan sebuah pengontrol memori atau disebut juga memory controller sehingga akses memori dalam organisasi sistem komputer tersebut menjadi sinkron.

Media penyimpanan data atau sering kita dengar dengan memori memiliki dasar penyusunan berdasarkan tingkat kecepatan, besar kapasitas, dan sifat volatilitasnya. Media penyimpanan tersebut juga harus dilindungi oleh sistem operasi dari modifikasi oleh pengguna. Media penyimpanan tersebut terdiri dari register, cache, random access memory atau RAM, extension memory, magnetic disk, optical disk, dan magnetic tapes. Mulai dari register sampai manetic tapes tingkat kecepatan proses datanya semakin lambat, tetapi memiliki besar kapasitas yang semakin besar. Tingkat kecepatan memori yang tinggi sangat berpengaruh terhadap harga beli memori tersebut. Sifat volatilitas memori maksudnya adalah apakah data-data yang tersimpan dalam memori tersebut bertahan ketika ada atau tidaknya aliran listrik. Seperti pada RAM, memori yang ada adalah bersifat volatile, yakni sangat terpengaruh akan adanya aliran listrik, jadi ketika aliran listrik berhenti maka data yang tersimpan di dalamnya pun terhapus, sementara itu pada magnetic disk seperti hard disk, memorinya bersifat non-volatile, jadi tidak bergantung dari ada atau tidaknya listrik yang mengalir, data yang tersimpan di dalamnya akan tetap ada selama belum dihapus oleh pemiliknya.

Register adalah tempat penyimpanan beberapa buah data yang kapasitasnya kecil dan bersifat volatile yang akan diolah langsung di processor dan memiliki kecepatan akses yang sangat tinggi. Register sendiri berada di dalam processor dengan jumlah yang sangat terbatas karena fungsinya sebagai tempat perhitungan dan komputasi data. Selain register, ada pula yang disebut dengan cache memory, yakni adalah tempat untuk menyimpan data yang juga bersifat volatile atau sementara dan berkecepatan tinggi yang kapasitasnya kecil dan digunakan untuk meningkatkan kecepatan pengambilan atau penyimpanan data di memori oleh processor. Pada awalnya cache memory berada di luar processor dan dapat ditambahkan, tetapi seiring berjalannya waktu dan juga penurunan tingkat biaya produksi maka cache memory pada perkembangannya sudah ditanam di processor untuk meningkatkan kinerjanya dan didesain berdasarkan desain memori statik.

Random access memory atau sering disebut dengan RAM juga merupakan media penyimpanan data yang bersifat volatile dan dapat diakses langsung oleh processor sehingga processor dapat secara langsung mengetahui alamat data yang ada di memori. Dari perkembangannya, RAM sekarang mengalami penurunan harga dan memiliki tingkat kecepatan dan kapasitas yang tinggi, bahkan melebihi cache memory. Register, cache memory, dan RAM adalah memori primer atau memori utama pada sebuah organisasi sistem komputer.

Media penyimpanan utama atau memori utama adalah satu-satunya tempat penyimpanan yang dapat diakses secara langsung oleh processor, merupakan suatu array dari word atau byte, yang mempunyai ukuran ratusan sampai jutaan ribu. Setiap word memiliki alamatnya sendiri. Memori utama adalah tempat penyimpanan yang volatile, dimana isinya hilang bila sumber energinya, yakni energi listrik dimatikan. Kebanyakan sistem komputer menyediakan secondary penyimpanan sebagai perluasan dari memori utama. Syarat utama dari penyimpanan sekunder ialah dapat menyimpan data dalam jumlah besar secara permanen.

Media penyimpanan sekunder yang paling umum adalah magnetic disk, yang menyediakan penyimpanan untuk program maupun data. Magnetic disk adalah alat penyimpanan data yang non-volatile yang juga menyediakan akses secara random. Tape magnetik digunakan terutama untuk backup, penyimpanan informasi yang jarang digunakan, dan sebagai media pemindahan informasi dari satu sistem ke sistem yang lain.

Perangkat masukan atau input device adalah alat-alat yang digunakan untuk menerima perintah dari pengguna komputer ke suatu sistem komputer, sementara perangkat keluaran atau output device adalah alat-alat yang digunakan untuk menampilkan atau menyampaikan informasi kepada pengguna komputer. Perangkat masukan contohnya adalah keyboard, mouse, dan scanner, sementara perangkat keluaran contohnya adalah monitor, printer, speaker.

Dengan demikian dapat kita simpulkan bahwa sebuah organisasi sistem komputer paling tidak memiliki tiga bagian, yakni adanya tempat memproses data atau CPU, adanya media penyimpanan data atau memory, dan adanya perangkat masukan dan keluaran, atau perangkat I/O. Selain itu, manajemen yang ada pada sebuah sistem komputer diatur oleh sebuah sistem operasi yang bertindak memanajemen sumber daya dan proteksi dari segala ancaman sehingga dihasilkan sebuah sistem komputer yang stabil dan aman.

Algoritma Fibonaci Menggunakan Bahasa C

2 Jun

Kali ini saya akan membahas Algoritma Fibonaci dan tentunya saya ada source code yang dapat kalian coba menggunakan bahasa C. Udah tidak sabar kan?

Okey, langsung ke materi..

Algoritma Fibonaci merupakan deret hitung dengan penulisan seperti berikut:

1 1 2 3 5 8 13 21 34 55 89 dst…

Ada yang bisa melihat polanya? Kalau bagi saya, deret Fibonaci adalah deret hitung yang dimulai dari 1. Tetapi, sebenarnya sebelum angka 1, ada angka bayangan (itu menurut saya :D), yaitu 0 (nol). Mengapa? Ilustrasi di bawah mungkin bisa menjelaskan.

algoritma fibonaci

Selanjutnya, algoritma fibonaci 4

Mau lebih jelas lagi?
algoritma fibonaci 2

Dan sekarang kita masuk ke dalam koding C untuk membuat deret fibonaci, penasaran bagaimana saya membuatnya? Berikut ini adalah kodingnya..

#include
 using namespace std;
 void fibonaci (int n) {
 int num1 = 0, num2 = 1, temp;
 cout << num2 << " ";
 for (int i = 1; i < n; ++i) {
 //temp untuk menyimpan sementara nilai dari num2
 temp = num2;
 //num2 kemudian ditambahkan
 num2 += num1;
 cout << num2 << " ";
 //nilai dari num2 yang sebelumnya di pindahkan ke num1
 num1 = temp;
 }
 cout << "\n";
 }
 void main () {
 int jumlah;
 cout <> jumlah;
 fibonaci (jumlah);
 }

Berdasarkan kode di atas, nilai yang akan dihasilkan adalah deret Fibonaci sesuai dengan jumlah deret yang diminta oleh user. Misalkan, jika deret yang diminta oleh user adalah 2, maka yang tercetak adalah

1   1

Jika user memasukkan 10, maka outputnya akan seperti berikut ini :

algoritma fibonaci 3

Solusi: Implementasi Thread Pada Perhitungan Matriks (Sistem Operasi)

28 May

Tujuan
• Mahasiswa memahami konsep pembuatan thread pada lingkungan UNIX
• Mahasiswa mampu memanfaatkan API Posix Thread untuk membuat dan mengatur thread
• Meningkatkan kemampuan pemrograman bahasa C

Deskripsi
Thread adalah unit terkecil dari proses yang dapat dieksekusi oleh CPU. Satu proses dapat terdiri dari beberapa
thread. Pada lingkungan UNIX, thread dapat dibuat dan diatur dengan menggunakan API Posix Thread. Pada
tugas kedua ini Anda diminta untuk membuat program perkalian matriks yang ada pada buku Operating Systems
Concepts 8th Edition, halaman 178 atau buku Operating Systems Concepts Essential, halaman 170. Program yang
dibuat adalah dengan menggunakan bahasa C dan API Posix Thread.

Solusi dalam C


#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define M 3
#define K 2
#define N 3

void *runner (void *param);

int A [M][K] = { {1,4}, {2,5}, {3,6} }; // Array ukuran M*K (3 baris 2 kolom)
int B [K][N] = { {8,7,6}, {5,4,3} }; // Array ukuran K*N (2 baris 3 kolom)
int C [M][N]; // Array ukuran M*N (3 baris 3 kolom)

/* Structure untuk mem-passing data ke thread */
struct v
{
 int i; // Menunjukkan baris
 int j; // Menunjukkan kolom
};

int main()
{
 pthread_t tid [M*N]; // Array of thread bernama tid dengan size M*N = 3*3 = 9
 int i; // Menunjukkan baris
 int j; // Menunjukkan kolom
 int indeks; // Menunjukkan indeks pada array of thread

 for (i = 0; i < M; i++)
 {
 for (j = 0; j < N; j++)
 {
 struct v *data = (struct v*) malloc (sizeof (struct v)); // Membuat objek structure v bernama data
 // dengan mengalokasikan memori sebesar size dari structure v
 data -> i = i; // Mengeset nilai i pada objek structure v bernama data dengan nilai i
 data -> j = j; // Mengeset nilai j pada objek structure v bernama data dengan nilai j
 pthread_create (&tid[indeks++], NULL, runner, (void *) data); // Membuat thread pada array of thread tid pada indeks ke-indeks
 // dengan memanggil fungsi runner dengan parameter data
 }
 }

 for (indeks = 0; indeks < M*N; indeks++)
 {
 pthread_join (tid[indeks], NULL); // Menggabungkan thread-thread yang ada
 }

 /* Mencetak hasil perkalian 2 Matriks */
 printf ("Hasil:\n");
 for (i = 0; i < M; i++)
 {
 for (j = 0; j < N; j++)
 {
 printf ("%d", C[i][j]); // Output matriks C baris i kolom j
 }
 printf ("\n");
 }
}

/* Fungsi untuk melakukan perkalian 2 matriks */
void *runner (void *param)
{
 struct v *par = (struct v*) param; // Mengeset objek structure v bernama par dengan param
 int h; // Variabel looping
 int i = par -> i; // Mengeset nilai i dengan nilai i pada par
 int j = par -> j; // Mengeset nilai j dengan nilai j pada par
 int hasil = 0; // Menunjukkan hasil perhitungan matriks

 for (h = 0; h < K; h++)
 {
 hasil += A[i][h] * B[h][j]; // Hasil didefiniskan dengan menambahkan semua hasil perkalian baris i kolom h dengan baris h kolom j
 C[i][j] = hasil; // Mengeset nilai matriks C pada baris i dan kolom j dengan hasil
 }
}

Contoh Critique Paper: Analisis dan Perancangan Teknologi pada Robot Sepakbola

28 May

Critique a research article related to Computer Science

Course: Scientific Writing

Judul Analisis dan Perancangan Teknologi pada Robot Sepakbola
Authors Tony(1) dan Wisnu Jatmiko(2)
Institusi (1)Fakultas Teknologi Informasi, Universitas Tarumanegara, Indonesia

(2)Fakultas Ilmu Komputer, Universitas Indonesia

Sumber Jurnal Ilmu Komputer dan Informasi, Fakultas Ilmu Komputer Universitas Indonesia. Volume 3-No.1-Februari 2010. ISSN 1979 – 0732.

Jurnal ini merupakan jurnal tentang analisis dan perancangan sebuah teknologi robotik khususnya teknologi robotik dan kecerdasan buatan dalam robot sepak bola. Hal ini diangkat oleh author karena ketertarikan dalam dunia robotik dan kecerdasan buatan dan pertandingan sepak bola dianggap sebuah tantangan baru dalam mengembangkan dunia robotik. Selanjutnya author membagi membagi menjadi dua masalah utama dalam penilitan ini, yaitu pertama berkenaan dengan perancangan stategi robot soccer yang dapat mencakup semua kemungkinan posisi robot dilapangan. Permasalahan kedua terkait dengan pengaturan robot-robot sehingga robot dapat bekerjasama dengan robot lain dalam satu tim.

Dalam jurnal ini author menggunakan pendekatan eksperimen untuk meyelesaikan kedua masalah utamanya. Author juga menggunakan algoritma pergerkan pemain yang menerapkan kecerdasan buatan dalam pertandingan sepak bola antar robot ini sehingga robot-robot dapat bertanding secara otomatis tanpa perintah langsung dari manusia. Dalam jurnal ini author memfokuskan penilitian dalam simulasi 2D. Selain itu dalam eksperimen ini author melibatkan tujuh tim untuk setiap tim akan mensimulasikan pertandingan selama sepuluh kali untuk setiap pertandingan dan setiap pertandingan berjalan selama lima menit.

Dari hasil eksperimen author menyimpulkan bahwa eksperimen telah berhasil dilakukan dengan dengan mengembangkan simulasi pertandingan antar robot dengan strategi permainan menggunakan pemetaan dengan berbasiskan system koordinat Cartesius. Hasil eksperimen juga menunjukkan nilai persentase yang rendah tidak selalu berarti bahwa kinerja robot buruk.

Dalam jurnal ini secara kesuluran telah berhasil menyampaikan kepada pembaca apa yang dilakukan dalam penilitan dan juga judul dari jurnal ini sudah memenuhi kriteria judul yang baik dengan judul cukup mewakili tentang apa jurnal ini dan tidak menggunakan akronim dan kata kerja sebagai awal dari judul. Selain itu dari segi penulisan juga sudah cukup baik, misalnya pada abstrak tidak terdapat table ataupun acuan ke referensi, tetapi masih terdapat kesalahan yaitu pada abstrak ini hanya menjelaskan tentang apa penilitan dilakukan tetapi tidak menjelaskan kesimpula dan hasil dari penilitan. Selanjutnya dari segi penggunaan kata secara keseluruhan cukup baik walaupun ada sedikit kata yang digunakan masih belum baku, seperti kata sepak bola, pada jurnal ini kata yang digunakan adalah kata “sepakbola” yang seharusnya menurut Kamus Besar Bahasa Indonesia adalah “sepak bola”.

Pada bagian eksperimen author banyak “bermain” dengan angka-angka hasil statisktik dari simulasi pertandingan sepak bola robot ini. Dari angka-angka statisktik hasil simulasi ini author sudah cukup baik untuk selanjutnya menjelaskan apa arti angka-angka itu pada bagian kesimpulan. Misalnya pada persentase penguasaan bola, nilai yang rendah justru menunjukkan bahwa strategi passing ternyata efektif karena hanya memerlukan sedikit passing untuk menghasilkan gol. Hal ini terlihat dari jumlah gol yang dihasilkan lebih banyak dari robot musuh yang lebih banyak passing tetapi jumlah gol lebih sedikit.