I made this widget at MyFlashFetish.com.

Selasa, 18 Januari 2011

Fungsi Input Dalam Bahasa C++ (bagi pemula ;-) )

http://mustarif.files.wordpress.com/2010/09/c.png Selamat siang! Sebelumnya gw mo terima kasih ama sumber tempat inspirasi postingan kali ini. Gw masih pemula sih (masih semester satu) tapi kita sama-sama belajar aja. Yang akan kita pelajari kali ini adalah fungsi input. Fungsi input adalah fungsi yang digunakan untuk meminta masukan dari user/pengguna. Fungsi input ini akan membuat program kita menjadi mudah disampaikan. Berikut akan coba kujelaskan fungsi-fungsi input dalam bahasa C yang sering digunakan. Untuk di bawah ini inputan berdasarkan kamus <conio.h> (control input-ouput).

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. Selain itu, getch() juga dapat digunakan untuk menghentikan/mem-"pause" layar eksekusi seperti dalam kamus <stdlib.h> (standard library) khususnya system("PAUSE")

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 argumen. 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.

sumber: http://hamzcraze.blogspot.com (makasih banyak, bro!)

1 komentar:

menurut sy lebih simple pake cout dan cin drpd pake printf dan scanf, tampilannya ribet

Posting Komentar