div id='fb-root'/>

Jumat, 13 April 2012

masukkan(inputan) bahasa C++

Fungsi Input dalam Bahasa C

Jika kamu sangat pemula, ada baiknya kamu membaca artikel yang kutulis sebelumnya tentang Fungsi Output dalam Bahasa C. Fungsi input adalah fungsi yang digunakan untuk meminta masukan dari user. Fungsi input ini akan membuat program kita menjadi interaktif. Berikut akan coba kujelaskan fungsi-fungsi input dalam bahasa C yang sering digunakan.

1. getche()
Singkatan dari get character and echo. FUngsi ini meminta inputan satu buah karakter dari keyboard tanpa diakhiri dengan tombol enter dan karakter yang telah diketik oleh user akan ditampilkan di layar.

2. getch()
Fungsi ini sama halnya dengan getche. Hanya saja karakter yang diinputkan user tidak akan ditampilkan di layar.

3. getchar()
Singkatan dari get character. Fungsinya sama dengan fungsi getche(), namun jika kita menggunakan fungsi ini user harus mengakhiri inputan dengan tombol enter.

4. scanf()
Fungsi ini dapat menginput berbagai macam jenis data. Penggunaanya mirip dengan printf(), yaitu harus menggunakan conversion specifier. Seperti halnya printf, conversion specifier harus disesuaikan dengan jenis data yang ada pada arguments. Dalam penggunaannya, scanf() hampir sama dengan printf(). Lalu bedanya apa? Bedanya, scanf() digunakan menginput data sedangkan printf() digunakan untuk mengoutput data. Haha, jelaslah. Masih ada perbedaan lainnya kok, yaitu dalam penulisan arguments. Dalam scanf() kita harus menambahkan simbol '&' sebelum variabel. Biar jelas liat contoh aja...

Penggunaan printf():

printf("%d", var);

Itu maksudnya kita akan menampilkan informasi nilai dari variabel yang bernama var. Informasi tersebut berupa bilangan bulat (bisa dilihat dari conversion specifier-nya).

Penggunaan scanf():

scanf("%d", &var);

Itu maksudnya kita akan menginput bilangan bulat yang nilainya akan dimasukkan ke dalam alamat memori dari variabel var. Simbol '&' dalam bahasa C adalah operator yang digunakan sebagai penunjuk alamat memori (coba baca artikelku sebelumnya tentang operator dalam bahasa C). Ada sedikit perbedaan penulisan syntax scanf() ini ketika kita akan menginput data bertipe string (kumpulan karakter). Untuk menginput data bertipe string kita tidak perlu mencantumkan simbol '&' lagi. COntoh:

scanf("%s", str);

Lihat! Di atas aku tidak menggunakan simbol '&' sebelum menuliskan variabel str. Program tentu akan tetap berjalan dengan normal :D. Kelemahan dalam penginputan string menggunakan scanf() adalah ketika user memasukkan string yang mengandung spasi. Maka string akan terpotong di bagian spasi tersebut. Misalkan user menginput string "aku makan". Yang tersimpan dalam variabel str adalah "aku" saja. Lalu bagaimana jika kita ingin mengikutkan "makan" juga dalam variabel str? Hmm, don't be hasty, see the next function below! :P

5. gets()
Fungsi ini adalah fungsi yang sempurna dalam penginputan string. Fungsi ini seperti menambal kekurangan dari scanf() ketika menginput string. Tentu saja, fungsi ini hanya bisa menginput string. Dengan fungsi ini kita bisa menambahkan spasi dalam string inputan juga. Nice!

gets(str);

Jadi, jika user menginputkan "aku makan", maka yang tersimpan dalam variabel str adalah "aku makan" juga. Tanpa terpotong gara-gara spasi. Hmm, setiap ada kelebihan pasti ada kelemahan :O. Kelemahan fungsi ini adalah ketika kita menggunakannya lebih dari sekali. Maka biasanya fungsi gets() yang kedua atau yang ketiga tidak akan dieksekusi oleh program. Artinya fungsi gets() yang kedua atau yang ketiga menjadi tidak berguna :(. Memang kesalahan ini tidak selalu terjadi. Tapi aku cukup sering menemukan kesalahan ini ketika aku menggunakan fungsi gets. Mengapa kesalahan seperti ini dapat terjadi? Ini terjadi karena ketika user menginput pada fungsi gets() yang pertama, buffer input akan terisi penuh. Karena buffer input ini penuh, maka fungsi gets() yang kedua seakan-akan sudah diisi oleh user. Lalu bagaimana caranya mengosongkan buffer input? Cara mengosongkannya adalah menggunakan fungsi fflush(stdin).

gets(str1);
fflush(stdin);
gets(str2);
fflush(stdin);

Dengan begini buffer input akan selalu kosong setelah user melakukan inputan. Aku sering menggunakan fungsi fflush(stdin) ini tidak hanya setelah fungsi gets(), tapi juga kugunakan setelah fungsi inputan yang lain seperti scanf(), getch(), dll. Ini hanya tindakan preventif agar buffer input tidak penuh.

Tidak ada komentar: